@aiquants/daily-report 0.6.2 → 0.8.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.
Files changed (67) hide show
  1. package/README.md +13 -6
  2. package/dist/client.d.mts +443 -23
  3. package/dist/client.d.ts +443 -23
  4. package/dist/client.js +5 -4
  5. package/dist/client.js.map +1 -1
  6. package/dist/client.mjs +5 -4
  7. package/dist/client.mjs.map +1 -1
  8. package/dist/index.d.mts +77 -3
  9. package/dist/index.d.ts +77 -3
  10. package/dist/index.js +1 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/index.mjs +1 -1
  13. package/dist/index.mjs.map +1 -1
  14. package/dist/server.d.mts +436 -6
  15. package/dist/server.d.ts +436 -6
  16. package/dist/server.js +8 -6
  17. package/dist/server.js.map +1 -1
  18. package/dist/server.mjs +8 -6
  19. package/dist/server.mjs.map +1 -1
  20. package/dist/{sse-schema-rbG114od.d.mts → sse-schema-Df49KA7B.d.mts} +643 -249
  21. package/dist/{sse-schema-eXcMG-Ej.d.ts → sse-schema-RHckD7TS.d.ts} +643 -249
  22. package/dist/styles/daily-report.standalone.css +1 -1
  23. package/dist/{types-D1PKubyo.d.mts → types-Ct1ggzy-.d.mts} +30 -1
  24. package/dist/{types-D1PKubyo.d.ts → types-Ct1ggzy-.d.ts} +30 -1
  25. package/package.json +3 -3
  26. package/src/client/components/daily-report-attachment-indicator.spec.tsx +51 -0
  27. package/src/client/components/daily-report-attachment-indicator.tsx +45 -0
  28. package/src/client/components/daily-report-attachment-list.spec.tsx +94 -0
  29. package/src/client/components/daily-report-attachment-list.tsx +112 -0
  30. package/src/client/components/daily-report-detail-list.tsx +14 -7
  31. package/src/client/components/daily-report-ids-stream-status.spec.tsx +93 -0
  32. package/src/client/components/daily-report-ids-stream-status.tsx +67 -0
  33. package/src/client/components/daily-report-list.tsx +19 -11
  34. package/src/client/components/daily-report-page.spec.tsx +119 -0
  35. package/src/client/components/daily-report-page.tsx +56 -68
  36. package/src/client/components/daily-report-resolved-content.tsx +31 -7
  37. package/src/client/components/report-views.spec.tsx +340 -0
  38. package/src/client/config-context.tsx +8 -0
  39. package/src/client/contexts/daily-report-action-context.spec.tsx +262 -0
  40. package/src/client/contexts/daily-report-action-context.tsx +151 -52
  41. package/src/client/hooks/use-animated-number.spec.ts +103 -0
  42. package/src/client/hooks/use-animated-number.ts +69 -0
  43. package/src/client/hooks/use-responsive-layout.spec.ts +74 -0
  44. package/src/client/hooks/use-responsive-layout.ts +56 -0
  45. package/src/client/route-helpers.spec.ts +100 -0
  46. package/src/client/route-helpers.ts +20 -41
  47. package/src/client/streaming/daily-report-ids-stream-client.spec.ts +641 -0
  48. package/src/client/streaming/daily-report-ids-stream-client.ts +599 -0
  49. package/src/client/streaming/daily-report-ids-stream-session.spec.ts +360 -0
  50. package/src/client/streaming/daily-report-ids-stream-session.ts +280 -0
  51. package/src/client/utils/constants.spec.ts +96 -0
  52. package/src/client/utils/constants.ts +47 -2
  53. package/src/client.ts +6 -0
  54. package/src/index.ts +1 -0
  55. package/src/server/handlers.attachment.spec.ts +470 -0
  56. package/src/server/handlers.ids-stream.spec.ts +362 -0
  57. package/src/server/handlers.ts +671 -6
  58. package/src/server/ports.ts +74 -0
  59. package/src/server/schema.ts +80 -5
  60. package/src/server/service.spec.ts +280 -14
  61. package/src/server/service.ts +348 -25
  62. package/src/server/test-helpers/handlers-config.ts +181 -0
  63. package/src/server.ts +16 -1
  64. package/src/shared/ids-stream.ts +92 -0
  65. package/src/shared/sse-schema.spec.ts +50 -0
  66. package/src/shared/sse-schema.ts +27 -0
  67. package/src/shared/types.ts +31 -0
package/dist/client.mjs CHANGED
@@ -1,7 +1,8 @@
1
- import{jsx as yt}from"react/jsx-runtime";var Ke=({orientation:e,thumbCenter:t,label:r,isDragging:n,isTapScrollActive:s,isWheelScrollActive:a})=>r.trim()&&(n||s||a)?yt("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:yt("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:yt("span",{className:"whitespace-nowrap font-semibold text-slate-800 dark:text-slate-100",children:r.trim()})})}):null;import{TrashIcon as Sr}from"@heroicons/react/24/outline";import{useState as Tr}from"react";var St=(e,t,r)=>{let n=e.map((a,o)=>({id:`legacy-${o}`,authorName:a.name||"Unknown",content:a.text||"",isMine:!1,color:a.color||void 0,isLegacy:!0})),s=t.map(a=>({id:a.id,authorName:a.userName??"",content:a.content??"",createdAt:a.createdAt??"",isMine:r?a.userId===r:a.isMine,isLegacy:!1}));return[...n,...s]},Tt=e=>{if(!e)return"text-gray-700";let t=e.toLowerCase();return t.includes("red")||t.includes("\u8D64")?"text-red-600":t.includes("green")||t.includes("\u7DD1")?"text-green-600":t.includes("blue")||t.includes("\u9752")?"text-blue-600":t.includes("yellow")||t.includes("\u9EC4")?"text-yellow-600":t.includes("orange")||t.includes("\u6A59")?"text-orange-500":"text-gray-700"};var se=e=>{if(!e)return"-";let t=e.trim();return t===""?"-":t},ae=e=>{if(!e)return"-";if(typeof e!="string")return e instanceof Date?ae(e.toISOString()):String(e);let t=e.trim();if(t==="")return"-";let r=new Date(t);if(Number.isNaN(r.getTime()))return t;let n=r.getFullYear(),s=String(r.getMonth()+1).padStart(2,"0"),a=String(r.getDate()).padStart(2,"0");if(t.includes(":")||t.includes("T")){let d=String(r.getHours()).padStart(2,"0"),l=String(r.getMinutes()).padStart(2,"0"),i=String(r.getSeconds()).padStart(2,"0");return`${n}-${s}-${a}T${d}:${l}:${i}`}return`${n}-${s}-${a}`};import{clsx as Cr}from"clsx";import{twMerge as Nr}from"tailwind-merge";function G(...e){return Nr(Cr(e))}import{jsx as Ee,jsxs as Qe}from"react/jsx-runtime";var kr=(e,t,r)=>t===e||typeof e=="number"&&e<0&&r?.get(e)===t||typeof t=="number"&&t<0&&r?.get(t)===e,kt=({comment:e,reportHubId:t,businessDate:r,onOptimisticDelete:n,pendingDeleteId:s,onPendingDeleteIdChange:a,onTrashClick:o,resolvedIdMap:d})=>{let[l,i]=Tr(!1),p=kr(e.id,s,d),w=y=>{y.stopPropagation(),y.preventDefault(),a(null),i(!0),typeof e.id=="number"&&n(e.id)};return Qe("li",{"data-comment-id":e.id,"data-deleted":l?"true":void 0,className:G("group relative rounded-xl border border-slate-200 bg-white p-3",e.isMine&&"border-blue-200 bg-blue-50",l&&"hidden",p?"z-50":"z-0 hover:z-10"),children:[Qe("div",{className:"mb-1 flex items-center justify-between",children:[Ee("div",{className:G("font-semibold text-xs",Tt(e.color)),children:se(e.authorName)}),Qe("div",{className:"flex items-center gap-2",children:[e.createdAt&&Ee("div",{className:"text-[10px] text-slate-400",children:ae(e.createdAt)}),e.isMine&&!e.isLegacy&&Qe("div",{className:"relative",children:[Ee("button",{type:"button",className:G("transition-colors",p?"text-red-500":"text-slate-400 hover:text-red-500"),title:"\u524A\u9664","aria-label":"\u524A\u9664",onClick:y=>o(y,e.id),children:Ee(Sr,{className:"h-4 w-4"})}),p&&Ee("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:w,children:"\u524A\u9664\u3059\u308B"})]})]})]}),Ee("div",{className:"whitespace-pre-wrap text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:e.content})]})};import{useCallback as Er,useEffect as Et,useRef as Ht,useState as Hr}from"react";import{jsx as Se,jsxs as Lr}from"react/jsx-runtime";var Pr=(e,t)=>{let r=Ht(null);return Et(()=>{if(e===null)return;let s=a=>{a.target.closest("[data-delete-confirmation]")||t(null)};return document.addEventListener("mousedown",s),document.addEventListener("touchstart",s),()=>{document.removeEventListener("mousedown",s),document.removeEventListener("touchstart",s)}},[e,t]),Et(()=>()=>{r.current&&clearTimeout(r.current)},[]),{handleTrashClick:Er((s,a)=>{s.stopPropagation(),s.preventDefault(),e!==a&&(t(a),r.current&&clearTimeout(r.current),r.current=window.setTimeout(()=>{t(null),r.current=null},5e3))},[e,t])}},Xe=({comments:e,reportHubId:t,businessDate:r,onDeleteComment:n,pendingDeleteId:s,onPendingDeleteIdChange:a,resolvedIdMap:o})=>{let{handleTrashClick:d}=Pr(s,a);return e.length===0?null:Se("ul",{className:"mb-3 space-y-2",children:e.map(l=>Se(kt,{comment:l,reportHubId:t,businessDate:r,onOptimisticDelete:n||(()=>{}),pendingDeleteId:s,onPendingDeleteIdChange:a,onTrashClick:d,resolvedIdMap:o},l.id))})},Je=({reportHubId:e,businessDate:t,onAddComment:r})=>{let[n,s]=Hr(!1),a=Ht(null);return Lr("form",{className:"flex gap-2",ref:a,onSubmit:async d=>{d.preventDefault();let i=new FormData(d.currentTarget).get("content")?.trim();if(i&&r){s(!0),a.current?.reset();try{await r(i)}catch{if(a.current){let p=a.current.elements.namedItem("content");p&&(p.value=i)}}finally{s(!1)}}},children:[Se("input",{type:"hidden",name:"intent",value:"addComment"}),Se("input",{type:"hidden",name:"reportHubId",value:e}),Se("input",{type:"hidden",name:"businessDate",value:t}),Se("input",{type:"text",name:"content",placeholder:"\u30B3\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0...",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"}),Se("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:"\u9001\u4FE1"})]})};import{tapScrollCircleSampleVisual as Cn,VirtualScroll as Nn}from"@aiquants/virtualscroll";import{Check as Sn,Star as cr,Trash2 as Tn}from"lucide-react";import{useCallback as Re,useEffect as Ie,useMemo as pt,useRef as ge,useState as je}from"react";import{createContext as Mr,useContext as Ar,useMemo as Or}from"react";import{jsx as ht,jsxs as _r}from"react/jsx-runtime";var Pt={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",tabArticle:"Overview",tabRelations:"Related",relationsEmpty:"No related view configured yet."},Ze={title:"Daily Reports",apiBasePath:"/daily_report/api",ssePath:"/sse/daily_report/updates",draftLabelName:"draft",fieldLabels:Pt,sourceTypeConfigs:{Internal:{label:"\u30AA\u30EA\u30B8\u30CA\u30EB",badgeClassName:"bg-emerald-100 text-emerald-800 dark:bg-emerald-900/30 dark:text-emerald-400"}},renderHeader:({title:e,annotation:t})=>_r("header",{className:"flex flex-wrap items-baseline justify-between gap-2 px-2 py-1",children:[ht("span",{className:"text-nowrap text-slate-700 text-sm dark:text-slate-200",children:e}),t?ht("span",{className:"text-slate-600 text-xs dark:text-slate-300",children:t}):null]}),showDevControls:!1},Lt=Mr(Ze),Mt=({config:e,children:t})=>{let r=Or(()=>({...Ze,...e,fieldLabels:{...Pt,...e?.fieldLabels??{}}}),[e]);return ht(Lt.Provider,{value:r,children:t})},X=()=>Ar(Lt),He=(e,t)=>{if(!(e&&t))return;if(t[e])return t[e];let r=e.toLowerCase(),n=Object.keys(t).find(s=>s.toLowerCase()===r);return n?t[n]:void 0};import{createContext as nn,useCallback as Ne,useContext as sn,useEffect as Xt,useRef as pe,useState as vt}from"react";import{useRevalidator as an}from"react-router";var Pe=(e,t,r=console)=>{let n=s=>typeof s=="string"?[`${t} ${s}`]:[t,s];return{debug:(s,...a)=>{e<=0&&r.debug(...n(s),...a)},info:(s,...a)=>{e<=1&&r.info(...n(s),...a)},warn:(s,...a)=>{e<=2&&r.warn(...n(s),...a)},error:(s,...a)=>{e<=3&&r.error(...n(s),...a)}}};import{useCallback as Ur,useEffect as _t,useRef as $r,useState as et}from"react";var Fr=/^\d{4}-\d{2}-\d{2}$/,Br=/^\d{4}\/\d{2}\/\d{2}$/,At=e=>e<10?`0${e}`:`${e}`,Ot=e=>{if(Number.isNaN(e.getTime()))return null;let t=e.getFullYear(),r=At(e.getMonth()+1),n=At(e.getDate());return`${t}-${r}-${n}`},Oe=e=>{if(e==null)return null;if(e instanceof Date)return Ot(e);let t=e.trim();if(t==="")return null;if(Fr.test(t))return t;if(Br.test(t))return t.replaceAll("/","-");let r=new Date(t);return Ot(r)};var Bt=Pe(1,"use-daily-report"),Ut=(e,t)=>{if(typeof window>"u")return t;let r=window[e];return typeof r=="number"&&!Number.isNaN(r)?r:t},$t=Ut("__DAILY_REPORT_CACHE_TTL__",3e5),Vr=Ut("__DAILY_REPORT_CACHE_REVIVE_MS__",6e4),jr=120,P={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=>{P.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=Oe(e.date),s=n?this.lists.get(n):null;if(s&&n){let o=s.data.some(d=>d.reportHubId===e.reportHubId)?s.data.map(d=>d.reportHubId===e.reportHubId?e:d):[e,...s.data];this.lists.set(n,{...s,data:o})}}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()){Bt.warn(`[DailyReportCache] Stale update skipped id=${e}`);return}this.set({...n.data,...t},Math.max(n.expiresAt,Date.now()+Vr))}},delete(e,t){this.reports.delete(e);let r=Oe(t),n=r&&this.lists.get(r);n&&r&&this.lists.set(r,{...n,data:n.data.filter(s=>s.reportHubId!==e)}),this.notify(e)},merge(e,t){let r=e;if(r.commentItems.some(n=>this.recentDeletes.has(n.id))&&(r={...r,commentItems:r.commentItems.filter(n=>!this.recentDeletes.has(n.id))}),t){let n=new Set(r.commentItems.map(a=>a.id)),s=t.commentItems.filter(a=>!n.has(a.id)&&a.isMine&&Date.now()-new Date(a.createdAt||0).getTime()<1e4);s.length>0&&(r={...r,commentItems:[...r.commentItems,...s].sort((a,o)=>new Date(a.createdAt||0).getTime()-new Date(o.createdAt||0).getTime())})}return r},cacheMany(e,t,r=0){if(!e.length)return[];this.prune();let n=Date.now(),s=n+$t;for(let[o,d]of this.recentDeletes)n-d>1e4&&this.recentDeletes.delete(o);let a=e.map(o=>{if(this.locks.has(o.reportHubId))return o;let d=this.lastMutations.get(o.reportHubId);if(d&&r>0&&d>r)return this.reports.get(o.reportHubId)?.data??o;let l=this.reports.get(o.reportHubId)?.data,i=this.merge(o,l);return this.set(i,s,!1),i});return t&&this.lists.set(t,{data:a,expiresAt:s}),a}},Vt=(e,t,r=!0)=>P.set(e,t,r),ue=(e,t)=>P.getReport(e,t?.ignoreExpiry),me=(e,t)=>P.update(e,t),tt=(e,t)=>P.delete(e,t),jt=()=>P.clear(),_e=e=>{P.locks.add(e),P.lastMutations.set(e,Date.now())},Fe=e=>{P.locks.delete(e),P.lastMutations.set(e,Date.now())},zt=e=>P.recentDeletes.set(e,Date.now()),Wt=(e,t)=>{let r=n=>{n===e&&t()};return P.listeners.add(r),()=>{P.listeners.delete(r)}},Ce=(e,t)=>{P.prune(),P.set(t,Date.now()+$t)},zr=async(e,t)=>{let r=P.getReport(t);if(r)return r;let n=P.pendingReports.get(t);if(n)return n;let s=Date.now(),a=fetch(`${e}/report?reportHubId=${t}`,{cache:"no-cache"}).then(o=>o.ok?o.json():Promise.reject(`HTTP ${o.status}`)).then(o=>{if(o.error)throw new Error(o.error.message);let d=o.report;return P.cacheMany([d],null,s)[0]}).finally(()=>P.pendingReports.delete(t));return P.pendingReports.set(t,a),a},Gt=async(e,t)=>{let r=P.getList(t);if(r)return r;let n=P.pendingLists.get(t);if(n)return n;let s=Date.now(),a=fetch(`${e}/business-date?businessDate=${encodeURIComponent(t)}`,{cache:"no-cache"}).then(o=>o.ok?o.json():Promise.reject(`HTTP ${o.status}`)).then(o=>{if(o.error)throw new Error(o.error.message);return P.cacheMany(o.reports??[],t,s)}).finally(()=>P.pendingLists.delete(t));return P.pendingLists.set(t,a),a},Le=(e,t)=>{let{apiBasePath:r}=X(),[n,s]=et(()=>P.getReport(e)),[a,o]=et(null),[d,l]=et(!1),[i,p]=et(!1),w=$r({id:e,token:0});return _t(()=>{let y=b=>{if(b===e){let N=P.getReport(e,!0);s(N)}};return P.listeners.add(y),()=>{P.listeners.delete(y)}},[e]),_t(()=>{let y=Oe(t),b=(w.current.token||0)+1;if(w.current={id:e,token:b},e<=0){s(null),o(e===0?new Error("Invalid ID"):null),l(!1),p(!1);return}let N=P.getReport(e,!0),T=!1;if(N)T=!P.isValid(P.reports.get(e)?.expiresAt??0);else if(y){let I=P.getList(y,!0)?.find(S=>S.reportHubId===e);I&&(N=I,T=!P.isValid(P.lists.get(y)?.expiresAt??0))}if(s(N),N&&!T){o(null),l(!1),p(!1);return}l(!N),p(!0);let L=setTimeout(async()=>{if(w.current.token===b)try{let k=null;y?k=(await Gt(r,y)).find(S=>S.reportHubId===e)??null:k=await zr(r,e),w.current.token===b&&(s(k),o(null))}catch(k){w.current.token===b&&o(k instanceof Error?k:new Error("Load failed"))}finally{w.current.token===b&&(l(!1),p(!1))}},jr);return()=>clearTimeout(L)},[e,t,r]),{report:n,error:a,isLoading:d,isRefetching:i}},qt=()=>{let{apiBasePath:e}=X();return Ur(t=>{let r=Oe(t);r&&!P.getList(r)&&Gt(e,r).catch(n=>Bt.warn("Prefetch error",r,n))},[e])};import{useEffect as rn}from"react";import{z as g}from"zod";var Wr=g.object({name:g.string().nullish(),affiliation:g.string().nullish()}),Gr=g.object({name:g.string().nullish(),text:g.string().nullish(),color:g.string().nullish()}),qr=g.object({id:g.number(),name:g.string().nullish(),color:g.string().nullish()}),Yt=g.object({id:g.number(),userId:g.string().nullish(),userName:g.string().nullish(),content:g.string().nullish(),createdAt:g.string().nullish(),isMine:g.boolean()}),xt=g.object({reportHubId:g.number(),date:g.string().nullish(),createdAt:g.string().nullish(),author:g.string().nullish(),userId:g.string().nullish(),sourceType:g.string().nullish(),employeeName:g.string().nullish(),updatedBy:g.string().nullish(),updatedAt:g.string().nullish(),category:g.string().nullish(),creationCategory:g.string().nullish(),visitTimeFrom:g.string().nullish(),visitTimeTo:g.string().nullish(),customerName:g.string().nullish(),interviewers:g.array(Wr),subject:g.string().nullish(),content:g.string().nullish(),comments:g.array(Gr),isRead:g.boolean(),isStarred:g.boolean(),labels:g.array(qr),commentItems:g.array(Yt)}),Yr=g.object({type:g.literal("connected")}),Kr=g.object({type:g.literal("status-update"),reportHubId:g.number(),statusType:g.enum(["star","read"]),value:g.boolean(),clientTempId:g.string(),recipientRawUserId:g.number().optional()}),Qr=g.object({type:g.literal("comment-add"),reportHubId:g.number(),comment:Yt,clientTempId:g.string()}),Xr=g.object({type:g.literal("comment-delete"),reportHubId:g.number(),commentId:g.number(),clientTempId:g.string()}),Jr=g.object({type:g.literal("report-create"),reportHubId:g.number(),report:xt,clientTempId:g.string(),recipientRawUserId:g.number().optional()}),Zr=g.object({type:g.literal("report-update"),reportHubId:g.number(),report:xt,clientTempId:g.string(),recipientRawUserId:g.number().optional()}),en=g.object({type:g.literal("report-publish"),reportHubId:g.number(),report:xt,clientTempId:g.string(),recipientRawUserId:g.number().optional()}),tn=g.object({type:g.literal("report-delete"),reportHubId:g.number(),clientTempId:g.string()}),Kt=g.discriminatedUnion("type",[Yr,Kr,Qr,Xr,Jr,Zr,en,tn]);var Be=Pe(1,"daily-report-sse-connection"),Qt=({isSseEnabled:e,onMessage:t})=>{let{ssePath:r}=X();rn(()=>{if(!e)return;let n=null,s=null,a=0,o,d=()=>{n?.close(),n=new EventSource(`${r}${o?`?lastEventId=${o}`:""}`),n.onopen=()=>{a=0,Be.info("SSE Connected")},n.onmessage=l=>{l.lastEventId&&(o=l.lastEventId);try{let i=JSON.parse(l.data),p=Kt.safeParse(i);if(!p.success){Be.error("SSE Validation Error:",p.error.flatten(),"raw message:",i);return}if(p.data.type==="connected"){Be.info("SSE Subscribe Ready");return}t(p.data)}catch(i){Be.error("SSE Parse Error",i)}},n.onerror=l=>{n?.close(),n=null,a++;let i=Math.min(2e3*2**(a-1),3e4);Be.error(`SSE Error. Retrying in ${i}ms (attempt ${a})...`,l),s=setTimeout(d,i)}};return d(),()=>{n&&n.close(),s&&clearTimeout(s)}},[e,t,r])};import{jsx as on}from"react/jsx-runtime";var we=Pe(1,"daily-report-action-context"),Rt=globalThis.__DailyReportActionContext??nn(null);globalThis.__DailyReportActionContext=Rt;var fe=()=>{let e=sn(Rt);if(!e)throw new Error("useDailyReportActionContext must be used within a DailyReportActionProvider");return e},Ue=e=>{if(!e)return"Unknown";if(e.displayName?.trim())return e.displayName;if(e.name){let t=`${e.name.familyName??""} ${e.name.givenName??""}`.trim();if(t)return t}return e.emails?.[0]?.value??"Unknown"},Jt=({children:e,user:t,initialItems:r=[],userId:n})=>{let{apiBasePath:s,draftLabelName:a}=X(),o=pe(new Map),d=pe(new Map),l=pe(new Map),i=pe(new Map),p=pe(new Map),[w,y]=vt(0),[b,N]=vt(r),[T,L]=vt(!!n),k=pe(new Map),I=pe(new Set),S=pe(new Set),M=pe(new Set),O=an(),A=Ne(async()=>{we.info("[DailyReportActionProvider] Refetching data without page reload..."),O.state==="idle"&&O.revalidate(),y(f=>f+1),P.listeners.forEach(f=>{f(-1)})},[O]),$=Ne(async()=>{we.info("[DailyReportActionProvider] Clearing client & server/DB cache and refetching data without page reload..."),jt(),S.current.clear();try{sessionStorage.clear()}catch{}try{let f=new FormData;f.append("intent","clearCache");let c=await fetch(`${s}/action`,{method:"POST",body:f});if(!c.ok){let x=await c.json().catch(()=>null);we.warn("[DailyReportActionProvider] Failed to clear server-side cache:",c.status,x)}}catch(f){we.warn("[DailyReportActionProvider] Failed to clear server-side cache:",f)}O.state==="idle"&&O.revalidate(),y(f=>f+1),P.listeners.forEach(f=>{f(-1)})},[s,O]),V=pe(new Map),H=pe(()=>{}),F=Ne((f,c)=>{let x=V.current,u=x.get(f);if(u){u.messages.push(c);return}let h={messages:[c],unsubscribe:()=>{},timer:setTimeout(()=>{let R=x.get(f);R&&(R.unsubscribe(),x.delete(f),we.warn(`[SSE Queue] Expired: reportHubId=${f}, dropped=${R.messages.length} messages`))},3e4)};h.unsubscribe=Wt(f,()=>{let R=x.get(f);if(R&&ue(f,{ignoreExpiry:!0})){R.unsubscribe(),clearTimeout(R.timer),x.delete(f),we.info(`[SSE Queue] Replaying ${R.messages.length} messages for reportHubId=${f}`);for(let C of R.messages)H.current(C)}}),x.set(f,h)},[]),le=f=>{M.current.add(f),setTimeout(()=>{M.current.delete(f)},3e4)},re=Ne(f=>!!f&&M.current.has(f),[]),de=Ne((f,c)=>{N(x=>{let u=c??x.find(C=>C.reportHubId===f)?.businessDate??null;return(x.some(C=>C.reportHubId===f)?x.map(C=>C.reportHubId===f?{...C,businessDate:u}:C):[{reportHubId:f,businessDate:u},...x]).sort((C,U)=>{let W=C.businessDate??"";return(U.businessDate??"").localeCompare(W)})})},[]),ve=()=>{n&&L(f=>!f)},ce=Ne(f=>{S.current.add(f),N(c=>c.filter(x=>x.reportHubId!==f))},[]);Xt(()=>{let f=new Set(r.map(c=>c.reportHubId));for(let c of S.current)f.has(c)||S.current.delete(c);N(c=>{let x=new Map;for(let u of r)S.current.has(u.reportHubId)||x.set(u.reportHubId,u);for(let u of c)x.has(u.reportHubId)||S.current.has(u.reportHubId)||x.set(u.reportHubId,u);return Array.from(x.values()).sort((u,h)=>{let R=u.businessDate?new Date(u.businessDate).getTime():0;return(h.businessDate?new Date(h.businessDate).getTime():0)-R})})},[r]);let ne=Ne(f=>{if(!re(f.clientTempId))switch(f.type){case"comment-add":{let{comment:c,reportHubId:x}=f,u=ue(x,{ignoreExpiry:!0});if(u){if(u.commentItems.some(W=>W.id===c.id))return;let h=!1,R=o.current.get(x);if(R){for(let[W,ie]of R.entries())if(ie===c.content){R.delete(W),p.current.set(W,c.id),h=!0;break}}let C={...c,userName:c.userName||(h?Ue(t):"Unknown"),createdAt:c.createdAt||new Date().toISOString(),isMine:h},U={...u,commentItems:[...u.commentItems,C].sort((W,ie)=>new Date(W.createdAt||0).getTime()-new Date(ie.createdAt||0).getTime())};Ce(x,U),_e(x),Fe(x),y(W=>W+1)}else F(x,f);break}case"comment-delete":{let{commentId:c,reportHubId:x}=f,u=ue(x,{ignoreExpiry:!0});if(u){let h={...u,commentItems:u.commentItems.filter(R=>R.id!==c)};Ce(x,h),_e(x),Fe(x),y(R=>R+1)}else F(x,f);break}case"status-update":{let{statusType:c,value:x,reportHubId:u}=f,h=ue(u,{ignoreExpiry:!0});if(c==="star")if(l.current.get(u)===x&&l.current.delete(u),h){let R={...h,isStarred:x};Ce(u,R),y(C=>C+1)}else F(u,f);else if(c==="read")if(i.current.get(u)===x&&i.current.delete(u),h){let R={...h,isRead:x};Ce(u,R),y(C=>C+1)}else F(u,f);break}case"report-delete":{let{reportHubId:c}=f;I.current.delete(c),S.current.add(c);let x=V.current.get(c);x&&(x.unsubscribe(),clearTimeout(x.timer),V.current.delete(c));let u=ue(c,{ignoreExpiry:!0});u?.date&&(tt(c,u.date),y(h=>h+1)),N(h=>h.filter(R=>R.reportHubId!==c));break}case"report-create":case"report-update":case"report-publish":{let{report:c}=f;Ce(c.reportHubId,c),(f.type==="report-create"||f.type==="report-publish")&&(I.current.add(c.reportHubId),de(c.reportHubId,c.date)),y(x=>x+1);break}}},[re,de,t,F]);H.current=ne,Xt(()=>()=>{for(let f of V.current.values())f.unsubscribe(),clearTimeout(f.timer);V.current.clear()},[]),Qt({isSseEnabled:T,onMessage:ne});let Y=async(f,c,x,u,h,R)=>{R?.skipLock||_e(f),h.onOptimistic?.();let C=u.clientTempId||crypto.randomUUID();le(C);let U=new FormData;U.append("intent",c),U.append("reportHubId",String(f)),U.append("businessDate",x),U.append("operationTimestamp",String(Date.now())),U.append("clientTempId",C);for(let[W,ie]of Object.entries(u))W!=="clientTempId"&&U.append(W,ie);try{let W=await fetch(`${s}/action`,{method:"POST",body:U,headers:{Accept:"application/json"}});if(!W.ok){let Nt=new Error(`Failed to ${c}`);throw Object.assign(Nt,{status:W.status}),Nt}let ie=await W.json();if(ie.status!=="OK"||c!=="create"&&String(ie.reportHubId)!==String(f))throw new Error(`Invalid response for ${c}`);if(typeof ie.clientTempId!="string"||ie.clientTempId!==C)throw new Error(`Invalid clientTempId for ${c}`);return await h.onSuccess?.(ie)}catch(W){throw we.error(`${c} failed:`,W),h.onFailure?.(),W}finally{R?.keepLock||R?.skipLock||Fe(f)}},D=async(f,c,x)=>{let u=Number(f),h=-1*Date.now(),R=Y(u,"addComment",x,{content:c,clientTempId:String(h)},{onOptimistic:()=>{o.current.has(u)||o.current.set(u,new Map),o.current.get(u)?.set(h,c),y(C=>C+1)},onSuccess:C=>{if(!C.newComment)throw new Error("No new comment returned");let U=C.newComment.id;p.current.set(h,U),o.current.get(u)?.delete(h);let W=ue(u,{ignoreExpiry:!0});return W&&!W.commentItems.some(ie=>ie.id===U)&&me(u,{commentItems:[...W.commentItems,{...C.newComment,id:U,isMine:!0,userName:Ue(t)}],updatedAt:C.updatedAt}),U},onFailure:()=>{o.current.get(u)?.delete(h)}},{skipLock:!0}).finally(()=>k.current.delete(h));k.current.set(h,R),await R},B=async(f,c,x)=>{let u=Number(f);d.current.has(u)||d.current.set(u,new Set),d.current.get(u)?.add(c),y(R=>R+1);let h=c;if(c<0){let R=p.current.get(c);if(R!==void 0)h=R;else{let C=k.current.get(c);if(!C)return;try{h=await C}catch{return}}}await Y(u,"deleteComment",x,{commentId:String(h)},{onSuccess:R=>{let C=typeof R.deletedCommentId=="string"?Number(R.deletedCommentId):h,U=ue(u,{ignoreExpiry:!0});U&&(me(u,{commentItems:U.commentItems.filter(W=>W.id!==C),updatedAt:R.updatedAt}),zt(C)),d.current.get(u)?.delete(c)},onFailure:()=>{d.current.get(u)?.delete(c)}},{skipLock:!0})},K=async(f,c,x)=>{let u=Number(f);await Y(u,"toggleStar",x,{isStarred:String(c)},{onOptimistic:()=>{me(u,{isStarred:c}),l.current.set(u,c),y(h=>h+1)},onSuccess:h=>{h.updatedStatus&&typeof h.updatedStatus.isStarred=="boolean"&&ue(u,{ignoreExpiry:!0})&&(me(u,{isStarred:h.updatedStatus.isStarred,updatedAt:h.updatedAt}),y(C=>C+1)),l.current.delete(u)},onFailure:()=>{me(u,{isStarred:!c}),l.current.delete(u)}},{skipLock:!0})},j=async(f,c,x)=>{let u=Number(f);await Y(u,"toggleRead",x,{isRead:String(c)},{onOptimistic:()=>{me(u,{isRead:c}),i.current.set(u,c),y(h=>h+1)},onSuccess:h=>{h.updatedStatus&&typeof h.updatedStatus.isRead=="boolean"&&ue(u,{ignoreExpiry:!0})&&(me(u,{isRead:h.updatedStatus.isRead,updatedAt:h.updatedAt}),y(C=>C+1)),i.current.delete(u)},onFailure:()=>{me(u,{isRead:!c}),i.current.delete(u)}},{skipLock:!0})},Q=pe(j);Q.current=j;let E=Ne((f,c,x)=>Q.current(f,c,x),[]),z=async f=>{let c=-1*Date.now(),x=new Date().toISOString(),u={reportHubId:c,date:f,createdAt:x,author:Ue(t),userId:t?.id??"unknown",sourceType:"Internal",employeeName:Ue(t),updatedBy:Ue(t),updatedAt:x,category:null,creationCategory:null,visitTimeFrom:null,visitTimeTo:null,customerName:null,interviewers:[],subject:"",content:"",comments:[],isRead:!0,isStarred:!1,labels:[{id:0,name:a,color:"#9ca3af"}],commentItems:[]};Vt(u,Date.now()+3e5,!1),N(h=>[{reportHubId:c,businessDate:f},...h]);try{let h=await Y(0,"create",f,{clientTempId:String(c)},{onSuccess:C=>C});if(h.clientTempId&&h.clientTempId!==String(c))throw we.warn(`[createReport] ID mismatch. req=${c}, res=${h.clientTempId}`),new Error("Optimistic ID mismatch");let R=Number(h.reportHubId);return _e(R),h.report&&(Ce(R,h.report),y(C=>C+1)),N(C=>C.some(U=>U.reportHubId===R)?C.filter(U=>U.reportHubId!==c):C.map(U=>U.reportHubId===c?{...U,reportHubId:R}:U)),setTimeout(()=>Fe(R),1e3),R}catch(h){throw we.error("[createReport] Failed or mismatched",h),N(R=>R.filter(C=>C.reportHubId!==c)),h}},ee=async(f,c,x)=>{let u=Number(f);await Y(u,"update",x,{...c.title&&{title:c.title},...c.content&&{content:c.content}},{onSuccess:()=>{let h=ue(u,{ignoreExpiry:!0});h&&(me(u,{subject:c.title??h.subject,content:c.content??h.content}),y(R=>R+1))}})},be=async(f,c)=>{let x=Number(f),u=ue(x,{ignoreExpiry:!0}),h=u?.labels||[];await Y(x,"publish",c,{},{onOptimistic:()=>{if(u){let R=u.labels.filter(C=>C.name!==a);me(x,{labels:R}),y(C=>C+1)}},onSuccess:R=>{R.report&&(Ce(x,R.report),y(C=>C+1))},onFailure:()=>{me(x,{labels:h}),y(R=>R+1)}},{skipLock:!0})},Ye=async(f,c)=>{let x=Number(f),u=b.find(h=>h.reportHubId===x);S.current.add(x),N(h=>h.filter(R=>R.reportHubId!==x));try{await Y(x,"delete",c,{},{onSuccess:h=>{tt(x,c)}})}catch(h){if(h.status===404){tt(x,c);return}S.current.delete(x),u&&N(C=>C.some(U=>U.reportHubId===x)?C:[u,...C].sort((U,W)=>(W.businessDate??"").localeCompare(U.businessDate??"")))}};return on(Rt.Provider,{value:{user:t,pendingAddCommentIds:o,pendingDeleteCommentIds:d,pendingStarUpdates:l,pendingReadUpdates:i,resolvedIdMap:p,version:w,items:b,isSseEnabled:T,toggleSse:ve,addComment:D,deleteComment:B,toggleStar:K,toggleRead:E,createReport:z,updateReport:ee,publishReport:be,deleteReport:Ye,removeStaleItem:ce,refetchData:A,clearCacheAndRefetch:$},children:e})};import{useCallback as Zt,useMemo as ln,useRef as dn,useState as cn}from"react";var rt=(e,t,r)=>{let{pendingAddCommentIds:n,pendingDeleteCommentIds:s,resolvedIdMap:a,version:o,addComment:d,deleteComment:l}=fe(),[i,p]=cn(null),w=Zt(T=>e&&l(e.reportHubId,T,e.date??""),[e,l]),y=Zt(T=>e&&t?d(e.reportHubId,T,e.date??""):Promise.resolve(),[e,t,d]),b=dn([]);return{uiComments:ln(()=>{if(!e)return[];let T=St(e.comments,e.commentItems,r),L=s.current.get(e.reportHubId);L?.size&&(T=T.filter(I=>!L.has(I.id)));let k=n.current.get(e.reportHubId);if(k?.size&&t){let I=new Set(T.map(M=>M.id)),S=t.displayName?.trim()||(t.name?`${t.name.familyName??""} ${t.name.givenName??""}`.trim():"")||t.emails?.[0]?.value||"Unknown";for(let[M,O]of k){if(L?.has(M)||I.has(M))continue;let A=a.current.get(M);A&&I.has(A)||T.some($=>$.isMine&&$.content===O&&typeof $.id=="number"&&$.id>0)||T.push({id:M,authorName:S,content:O,createdAt:new Date().toISOString(),isMine:!0,isLegacy:!1})}}return JSON.stringify(T)===JSON.stringify(b.current)?b.current:(b.current=T,T)},[e,t,r,s,n,a,o]),handleAddComment:y,handleDeleteComment:w,pendingDeleteId:i,setPendingDeleteId:p,resolvedIdMap:a.current}};import{useCallback as un,useEffect as mn,useState as pn}from"react";var nt=(e,t)=>{let{enableMutationObserver:r=!1,bottomGap:n=4,minFallbackHeight:s=240}=t??{},[a,o]=pn(600),d=un(()=>{if(typeof window>"u")return;let l=e.current;if(!l||l.offsetParent===null&&window.getComputedStyle(l).position!=="fixed")return;let i=F=>Number.parseFloat(F)||0,{top:p}=l.getBoundingClientRect(),w=l.parentElement?.getBoundingClientRect(),y=window.getComputedStyle(document.documentElement),b=i(y.getPropertyValue("--footer-height")),N=i(y.getPropertyValue("--header-height")),T=i(y.getPropertyValue("--scrollbar-height")),L=window.getComputedStyle(l),k=i(L.marginBottom),I=i(L.paddingBottom),S=window.innerHeight-b-T-n,M=w?Math.min(w.bottom,S):S,O=w?Math.max(w.top,N):N,A=Math.max(p,O),$=M-A-k-I,V=Number.isFinite($)?Math.floor($):0,H=V>0?V:s;H>0&&Number.isFinite(H)&&o(F=>Math.abs(F-H)>1?H:F)},[n,e,s]);return mn(()=>{if(typeof window>"u")return;let l=null,i=null,p=null,w=null,y=()=>{l!==null&&window.cancelAnimationFrame(l),l=window.requestAnimationFrame(()=>{d()})};y(),i=window.setTimeout(()=>{y()},150);let b=e.current;return typeof ResizeObserver<"u"&&b&&(p=new ResizeObserver(()=>{y()}),p.observe(b),b.parentElement&&p.observe(b.parentElement)),r&&typeof MutationObserver<"u"&&(w=new MutationObserver(()=>{y()}),w.observe(document.documentElement,{attributes:!0,attributeFilter:["style"]})),window.addEventListener("resize",y),()=>{l!==null&&window.cancelAnimationFrame(l),i!==null&&window.clearTimeout(i),window.removeEventListener("resize",y),p?.disconnect(),w?.disconnect()}},[r,d,e]),{viewportHeight:a,updateViewportHeight:d}};import{tapScrollCircleSampleVisual as fn}from"@aiquants/virtualscroll";var st=180,wt=160,at=6,$e=wt-at,ot=.8,it={maxVelocity:18,deceleration:.0018,startVelocityThreshold:.03},lt=20,er=6,dt={reportHubId:-1,businessDate:null},tr={report:null,error:null,isLoading:!1,isRefetching:!1},rr=240,ct=15,nr=8,sr=3,ar={enabled:!0,renderVisual:fn,maxSpeedCurve:{exponentialSteepness:7.5,exponentialScale:14,easedOffset:.18},maxSpeedMultiplier:18};import{useEffect as wn,useRef as Dn,useState as Dt}from"react";import{Slot as bn}from"@radix-ui/react-slot";import{cva as gn}from"class-variance-authority";import*as or from"react";import{jsx as hn}from"react/jsx-runtime";var yn=gn("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"}}),De=or.forwardRef(({className:e,variant:t,size:r,asChild:n=!1,...s},a)=>hn(n?bn:"button",{className:G(yn({variant:t,size:r,className:e})),ref:a,...s}));De.displayName="Button";import{jsx as xn}from"react/jsx-runtime";function ir({className:e,type:t,...r}){return xn("input",{type:t,"data-slot":"input",className:G("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 lr from"@radix-ui/react-label";import{jsx as vn}from"react/jsx-runtime";function Me({className:e,...t}){return vn(lr.Root,{"data-slot":"label",className:G("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 Rn}from"react/jsx-runtime";function dr({className:e,...t}){return Rn("textarea",{"data-slot":"textarea",className:G("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 Te,jsxs as ut}from"react/jsx-runtime";var mt=({report:e,onCancel:t,onPublishSuccess:r})=>{let{updateReport:n,publishReport:s}=fe(),[a,o]=Dt(e.subject??""),[d,l]=Dt(e.content??""),[i,p]=Dt(!1),w=Dn(e.reportHubId);wn(()=>{e.reportHubId!==w.current&&(o(e.subject??""),l(e.content??""),w.current=e.reportHubId)},[e.reportHubId,e.subject,e.content]);let y=async()=>{p(!0);try{await n(e.reportHubId,{title:a,content:d},e.date??"")}finally{p(!1)}},b=async()=>{p(!0);try{await n(e.reportHubId,{title:a,content:d},e.date??""),await s(e.reportHubId,e.date??""),r?.()}finally{p(!1)}};return ut("div",{className:"space-y-6 p-1",children:[ut("div",{className:"space-y-2",children:[Te(Me,{htmlFor:`report-title-${e.reportHubId}`,children:"\u30BF\u30A4\u30C8\u30EB"}),Te(ir,{id:`report-title-${e.reportHubId}`,value:a,onChange:N=>o(N.target.value),placeholder:"\u65E5\u5831\u306E\u30BF\u30A4\u30C8\u30EB\u3092\u5165\u529B",disabled:i})]}),ut("div",{className:"space-y-2",children:[Te(Me,{htmlFor:`report-content-${e.reportHubId}`,children:"\u5185\u5BB9"}),Te(dr,{id:`report-content-${e.reportHubId}`,value:d,onChange:N=>l(N.target.value),placeholder:"\u65E5\u5831\u306E\u5185\u5BB9\u3092\u5165\u529B",className:"min-h-50",disabled:i})]}),ut("div",{className:"flex justify-end gap-2",children:[t&&Te(De,{variant:"outline",onClick:t,disabled:i,children:"\u30AD\u30E3\u30F3\u30BB\u30EB"}),Te(De,{variant:"secondary",onClick:y,disabled:i,children:"\u4FDD\u5B58"}),Te(De,{onClick:b,disabled:i,children:"\u516C\u958B"})]})]})};import{jsx as In}from"react/jsx-runtime";var Ve=({className:e})=>In("span",{className:G("text-blue-500",e),children:"\u25CF"});import{Fragment as Fn,jsx as v,jsxs as _}from"react/jsx-runtime";var kn=(e,t,r)=>{Ie(()=>{let n=e.current;if(!n)return;let s=new ResizeObserver(()=>{r(t,n.offsetHeight)});return s.observe(n),()=>s.disconnect()},[t,r,e])},En=({itemId:e,onHeightMeasured:t,children:r})=>{let n=ge(null);return kn(n,e,t),v("div",{ref:n,className:"px-2 pb-3","data-daily-report-button":e,children:r})},Hn=e=>e.affiliation?.trim()?`${e.name}\uFF08${e.affiliation}\uFF09`:e.name??"",ur=({dailyReportItems:e,userId:t,selectedItemId:r,onSelectItem:n,initialScrollOffset:s,onScrollOffsetChange:a})=>{let[o,d]=je(new Map),l=ge(null),i=ge(null),{viewportHeight:p,updateViewportHeight:w}=nt(l,{enableMutationObserver:!0}),y=qt(),[b,N]=je(""),[T,L]=je(!1),k=ge(null),I=ge(null),S=ge(e);S.current=e;let M=ge(null);Ie(()=>{if(r!=null&&i.current){let D=e.findIndex(B=>B.reportHubId===r);if(D!==-1){if(M.current?.id===r&&M.current?.index===D)return;i.current.scrollToIndex(D,{align:"top"}),M.current={id:r,index:D}}}else M.current=null},[r,e]);let O=ge(n);O.current=n,Ie(()=>{if(i.current){let D=document.querySelector('[data-testid="daily-report-detail-list"]');if(D){let B=i.current,K=Object.assign({},B,{findReportIndex:j=>S.current.findIndex(Q=>Q.reportHubId===j),getReportItem:j=>S.current[j],selectItem:j=>O.current?.(j)});D.__virtualScroll=K}}});let A=e.length,$=Re(D=>D>=A?dt:e[D],[e,A]),V=Re((D,B)=>{if(A===0)return;let K=Math.max(0,D),j=Math.min(A-1,B);if(K>j)return;let Q=new Set;for(let E=K;E<=j;E++){let z=$(E);if(z.businessDate&&Q.add(z.businessDate),Q.size>=er)break}Q.forEach(E=>{y(E)})},[$,A,y]),H=Re(({renderingStartIndex:D,renderingEndIndex:B,visibleStartIndex:K})=>{if(A===0)return;let j=$(K);j?.businessDate&&N(ae(j.businessDate)),V(D,B),V(B+1,B+lt),V(D-lt,D-1)},[$,A,V]),F=Re(()=>{i.current&&a&&a(i.current.getScrollPosition());let D=l.current;D&&(D.dataset.scrolling!=="true"&&(D.dataset.scrolling="true"),I.current&&clearTimeout(I.current),I.current=setTimeout(()=>{D&&delete D.dataset.scrolling,I.current=null},150))},[a]);Ie(()=>()=>{i.current&&a&&a(i.current.getScrollPosition())},[a]);let le=Re(D=>v(Ke,{...D,label:b,isWheelScrollActive:T}),[b,T]);Ie(()=>{let D=l.current;if(!D)return;let B=()=>{L(!0),k.current&&clearTimeout(k.current),k.current=window.setTimeout(()=>{L(!1),k.current=null},240)};return D.addEventListener("wheel",B,{passive:!0}),()=>{D.removeEventListener("wheel",B),k.current&&clearTimeout(k.current)}},[]);let re=Re((D,B)=>{if(d(K=>{if(K.get(D)===B)return K;let j=new Map(K);return j.set(D,B),j}),i.current){let K=S.current.findIndex(j=>j.reportHubId===D);K!==-1&&i.current.updateItemSize(K,B)}},[]),de=Re(D=>{let B=$(D);return o.get(B.reportHubId)||350},[$,o]),ve=Re(D=>$(D).reportHubId,[$]),ce=pt(()=>({enabled:!0,renderVisual:Cn}),[]);Ie(()=>{A>=0&&w()},[A,w]),Ie(()=>{A!==0&&V(0,Math.min(A-1,lt))},[A,V]);let ne=Re(D=>{let B=S.current.findIndex(K=>K.reportHubId===D);B>=0&&setTimeout(()=>i.current?.scrollToIndex(B,{align:"bottom"}),300)},[]),Y=Re(D=>v(Ln,{item:D,onHeightMeasured:re,onCommentAdded:ne,userId:t},D.reportHubId),[re,ne,t]);return _(Fn,{children:[v("div",{ref:l,className:"flex min-h-0 flex-1 flex-col",children:v(Nn,{ref:i,itemCount:A,getItem:$,getItemKey:ve,getItemHeight:de,viewportSize:p,initialScrollOffset:s,overscanCount:ct,scrollBarOptions:{width:8,tapScrollCircleOptions:ce,renderThumbOverlay:le},behaviorOptions:{wheelSpeedMultiplier:ot,inertiaOptions:it},onRangeChange:H,onScroll:F,testId:"daily-report-detail-list",className:"relative w-full",children:Y})}),A===0&&v("div",{className:"py-8 text-center",children:v("p",{className:"text-slate-500",children:"\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093"})})]})},Pn=()=>_("div",{className:"rounded-2xl border border-slate-200 bg-white p-4 shadow-sm",children:[_("div",{className:"mb-4 flex flex-wrap gap-2",children:[v("div",{className:"h-6 w-20 rounded-full bg-slate-200"}),v("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),v("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),v("div",{className:"h-6 w-28 rounded-full bg-slate-200"})]}),_("div",{className:"mb-3 grid gap-3 md:grid-cols-[minmax(0,1fr)_220px]",children:[_("div",{className:"space-y-3",children:[v("div",{className:"h-5 w-40 rounded bg-slate-200"}),v("div",{className:"h-5 w-56 rounded bg-slate-200"}),v("div",{className:"h-24 rounded-lg bg-slate-200"})]}),_("div",{className:"rounded-xl bg-slate-100 p-3",children:[v("div",{className:"mb-2 h-4 w-24 rounded bg-slate-200"}),v("div",{className:"mb-2 h-4 w-28 rounded bg-slate-200"}),v("div",{className:"h-4 w-32 rounded bg-slate-200"})]})]}),_("div",{className:"space-y-3",children:[v("div",{className:"h-4 w-24 rounded bg-slate-200"}),_("div",{className:"flex flex-wrap gap-2",children:[v("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),v("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),v("div",{className:"h-6 w-16 rounded-full bg-slate-200"})]}),_("div",{className:"space-y-2",children:[v("div",{className:"h-16 rounded-lg bg-slate-200"}),v("div",{className:"h-16 rounded-lg bg-slate-200"})]})]})]}),Ln=({item:e,onHeightMeasured:t,onCommentAdded:r,userId:n})=>{let{report:s,error:a,isLoading:o,isRefetching:d}=Le(e.reportHubId,e.businessDate),{removeStaleItem:l}=fe(),{draftLabelName:i}=X(),[p,w]=je(!1),[y,b]=je(!1),N=ge(!1),T=ge(!1);d&&(T.current=!0),Ie(()=>{!(s||o||d||a)&&T.current&&e.reportHubId>0&&l(e.reportHubId)},[s,o,d,a,e.reportHubId,l]);let L=s?.labels.some(I=>I.name===i),k=n&&s?.userId===n;return Ie(()=>{s&&k&&L&&!p&&!y?(w(!0),N.current=!0):s&&!L&&p&&N.current&&(w(!1),N.current=!1)},[s,k,L,p,y]),v(En,{itemId:e.reportHubId,onHeightMeasured:t,children:a?v(_n,{itemId:e.reportHubId}):s?p?v(mt,{report:s,onCancel:()=>{w(!1),b(!0)},onPublishSuccess:()=>{w(!1)}}):v(On,{item:e,report:s,onCommentAdded:r,userId:n,onDoubleClick:k?()=>w(!0):void 0}):v(Pn,{})})},Mn=({report:e,isRead:t,isStarred:r,isMine:n,onToggleRead:s,onToggleStar:a,onDelete:o,itemSourceType:d,visitTimeDisplay:l,categoryLabel:i,fieldLabels:p})=>{let{sourceTypeConfigs:w}=X();return _("div",{className:"flex flex-wrap items-center gap-2 font-medium text-slate-600 text-xs",children:[(()=>{let y=d??e?.sourceType,b=He(y,w);return b?v("span",{className:G("inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",b.badgeClassName),children:b.label}):null})(),v("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:r?"\u30B9\u30BF\u30FC\u3092\u5916\u3059":"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B","data-detail-star-button":e.reportHubId,children:r?v(cr,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):v(cr,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),v("button",{type:"button",onClick:s,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?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","data-detail-read-button":e.reportHubId,children:t?v(Sn,{className:"h-3.5 w-3.5 text-blue-500"}):v(Ve,{className:"text-xs"})}),n&&v("button",{type:"button",onClick:o,"data-detail-delete-button":e.reportHubId,className:"text-lg leading-none transition-transform focus:outline-none active:scale-125",title:"\u524A\u9664\u3059\u308B",children:v(Tn,{className:"h-4 w-4 text-slate-300 hover:text-red-500"})}),_("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:[v("span",{className:"text-[10px] text-blue-500 uppercase tracking-wide",children:p.id}),e.reportHubId]}),_("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[v("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:p.businessDate}),ae(e.date)]}),_("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[v("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:p.author}),se(e.employeeName)]}),_("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[v("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:p.visitTime}),l||"-"]}),_("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[v("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:p.updatedAt}),ae(e.updatedAt)]}),i&&_("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-amber-100 px-3 py-1 text-amber-700",children:[v("span",{className:"text-[10px] text-amber-500 uppercase tracking-wide",children:p.category}),i]})]})},An=({report:e,visitTimeDisplay:t,categoryLabel:r,fieldLabels:n})=>_("div",{className:"flex flex-col gap-3 rounded-xl bg-slate-100 p-4 text-slate-600 text-xs",children:[_("div",{className:"flex flex-col gap-1",children:[v("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.author}),v("span",{className:"text-slate-700 text-sm",children:se(e.author)})]}),_("div",{className:"flex flex-col gap-1",children:[v("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.createdAt}),v("span",{className:"text-slate-700 text-sm",children:ae(e.createdAt)})]}),_("div",{className:"flex flex-col gap-1",children:[v("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.updatedBy}),v("span",{className:"text-slate-700 text-sm",children:se(e.updatedBy)})]}),_("div",{className:"flex flex-col gap-1",children:[v("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.updatedAt}),v("span",{className:"text-slate-700 text-sm",children:ae(e.updatedAt)})]}),_("div",{className:"flex flex-col gap-1",children:[v("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.businessDate}),v("span",{className:"text-slate-700 text-sm",children:ae(e.date)})]}),t&&_("div",{className:"flex flex-col gap-1",children:[v("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.visitTime}),v("span",{className:"text-slate-700 text-sm",children:t})]}),r&&_("div",{className:"flex flex-col gap-1",children:[v("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.categoryInfo}),v("span",{className:"text-slate-700 text-sm",children:r})]})]}),On=({item:e,report:t,onCommentAdded:r,userId:n,onDoubleClick:s})=>{let a=ge(null),{toggleStar:o,toggleRead:d,pendingStarUpdates:l,pendingReadUpdates:i,deleteReport:p,user:w}=fe(),{uiComments:y,handleAddComment:b,handleDeleteComment:N,pendingDeleteId:T,setPendingDeleteId:L,resolvedIdMap:k}=rt(t,w,n),{fieldLabels:I,sourceTypeConfigs:S}=X(),M=e.sourceType??t?.sourceType,O=He(M,S),A=M?M.toLowerCase()!=="internal":!1,$=O?.allowComment??!A,V=async D=>{await b(D),r?.(e.reportHubId)},H=l.current.has(t.reportHubId)?l.current.get(t.reportHubId)??!1:t.isStarred,F=i.current.has(t.reportHubId)?i.current.get(t.reportHubId)??!1:t.isRead,le=!!(n&&t.userId===n),re=async()=>{try{await d(t.reportHubId,!F,t.date??"")}catch{}},de=async()=>{try{await o(t.reportHubId,!H,t.date??"")}catch{}},ve=async()=>{confirm("\u672C\u5F53\u306B\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F")&&await p(t.reportHubId,t.date??"")},ce=pt(()=>t.content?t.content.replace(/<br\s*\/??\s*>/gi,`
2
- `).trim():"",[t.content]),ne=pt(()=>{let D=t.visitTimeFrom?.trim(),B=t.visitTimeTo?.trim();return D&&B?`${D} - ${B}`:D||B||""},[t.visitTimeFrom,t.visitTimeTo]),Y=pt(()=>{let D=[];return t.category?.trim()&&D.push(`${I.category}: ${t.category}`),t.creationCategory?.trim()&&D.push(`${I.creationCategory}: ${t.creationCategory}`),D.join(" / ")},[t.category,t.creationCategory,I.category,I.creationCategory]);return v("div",{onDoubleClick:s,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 ${F?"":"border-l-4 border-l-blue-500"}`,children:_("div",{className:"flex flex-col gap-4",children:[v(Mn,{report:t,itemSourceType:e.sourceType,isRead:F,isStarred:H,isMine:le,onToggleRead:re,onToggleStar:de,onDelete:ve,visitTimeDisplay:ne,categoryLabel:Y,fieldLabels:I}),_("div",{className:"grid gap-4 md:grid-cols-[minmax(0,1fr)_240px]",children:[_("div",{className:"flex flex-col gap-4",children:[_("div",{className:"grid gap-3 sm:grid-cols-2",children:[_("div",{className:"flex flex-col gap-1",children:[v("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.customer}),v("span",{className:"font-semibold text-base text-slate-900",children:se(t.customerName)})]}),_("div",{className:"flex flex-col gap-1",children:[v("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.subject}),v("span",{className:"text-slate-700 text-sm",children:se(t.subject)})]})]}),ce&&_("div",{className:"flex flex-col gap-2",children:[v("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.content}),v("div",{className:"whitespace-pre-wrap rounded-xl bg-slate-50 p-3 text-slate-700 text-sm leading-relaxed",children:ce})]}),t.interviewers.length>0&&_("div",{className:"flex flex-col gap-2",children:[v("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.interviewers}),v("ul",{className:"flex flex-wrap gap-2",children:t.interviewers.map(D=>v("li",{className:"rounded-full bg-slate-100 px-3 py-1 text-slate-600 text-xs",children:Hn(D)},`${D.name}-${D.affiliation||""}`))})]}),y.length>0&&_("div",{className:"flex flex-col gap-2",children:[v("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.comments}),v(Xe,{comments:y,reportHubId:t.reportHubId,businessDate:t.date??"",onDeleteComment:N,pendingDeleteId:T,onPendingDeleteIdChange:L,resolvedIdMap:k})]}),$&&v("div",{className:"mt-auto",ref:a,children:v(Je,{reportHubId:t.reportHubId,businessDate:t.date??"",onAddComment:V})})]}),v(An,{report:t,visitTimeDisplay:ne,categoryLabel:Y,fieldLabels:I})]})]})})},_n=({itemId:e})=>v("div",{className:"rounded-2xl border border-red-200 bg-red-50 p-4 text-red-700 text-sm",children:_("p",{children:["\u65E5\u5831 ",e.toLocaleString()," \u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"]})});import{SwipeCloseGuardContext as Bn,useSwipeGuardState as Un,useSwipeToDismissOverlay as $n,useTapClick as pr,useTransitionDisplay as Vn}from"@aiquants/swipe-overlay";import{VirtualScroll as jn}from"@aiquants/virtualscroll";import{Check as zn,Star as mr,Trash2 as Wn}from"lucide-react";import{useCallback as he,useEffect as oe,useMemo as Ct,useRef as J,useState as ke}from"react";import*as ye from"@radix-ui/react-tabs";import*as ft from"react";import{jsx as It}from"react/jsx-runtime";var bt=ye.Root,ze=ft.forwardRef(({className:e,...t},r)=>It(ye.List,{ref:r,className:G("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",e),...t}));ze.displayName=ye.List.displayName;var We=ft.forwardRef(({className:e,...t},r)=>It(ye.Trigger,{ref:r,className:G("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}));We.displayName=ye.Trigger.displayName;var Ae=ft.forwardRef(({className:e,...t},r)=>It(ye.Content,{ref:r,className:G("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}));Ae.displayName=ye.Content.displayName;import{Fragment as gr,jsx as m,jsxs as q}from"react/jsx-runtime";var Gn=(e,t,r,n)=>{let[s,a]=ke(!1),[o,d]=ke(!1),l=J(null),i=J(null),p=J(null),w=Ct(()=>t===null?null:r.find(N=>N.reportHubId===t)??null,[r,t]),y=e&&s&&w!==null;oe(()=>{if(y)d(!0);else{let N=setTimeout(()=>d(!1),300);return()=>clearTimeout(N)}},[y]),oe(()=>{if(!(typeof window>"u")){if(e&&s&&t!==null&&!l.current){let N=`overlay-${Date.now()}`;window.history.pushState({...window.history.state,dailyReportOverlay:N},"",window.location.href),l.current=N}else!(e&&s)&&l.current&&(l.current=null);return s?(p.current=document.body.style.overflow,document.body.style.overflow="hidden"):p.current!==null&&(document.body.style.overflow=p.current,p.current=null),()=>{p.current!==null&&(document.body.style.overflow=p.current)}}},[e,s,t]),oe(()=>{if(typeof window>"u")return;let N=()=>{l.current&&(i.current=t,l.current=null,a(!1),n(null))};return window.addEventListener("popstate",N),()=>window.removeEventListener("popstate",N)},[t,n]);let b=he(()=>{e&&(i.current=t,a(!1),n(null),l.current&&typeof window<"u"&&(l.current=null,window.history.back()))},[e,t,n]);return{isMobileDetailOpen:s,setIsMobileDetailOpen:a,isOverlayMounted:o,shouldShowOverlay:y,handleOverlayClose:b,lastClosedItemIdRef:i,selectedItem:w}},qn=(e,t,r,n,s)=>{let a=J(null),o=J(void 0);o.current!==e?.reportHubId&&(o.current=e?.reportHubId,a.current=null),oe(()=>{n||(a.current=null)},[n]);let d=he(async(l=!1)=>{if(!e)return;l||(a.current=e.reportHubId);let i=!e.isRead;try{await s(e.reportHubId,i,e.date??"")}catch{}},[e,s]);return oe(()=>{if(r&&e&&!e.isRead&&!t){if(a.current===e.reportHubId)return;let l=setTimeout(()=>d(!0),500);return()=>clearTimeout(l)}},[e,t,r,d]),{handleToggleRead:d}},fr=({dailyReportItems:e,initialSelectedBusinessDate:t=null,initialSelectedReportHubId:r=null,autoMarkRead:n=!1,selectedReportHubId:s,onSelectItem:a,userId:o,initialScrollOffset:d,onScrollOffsetChange:l})=>{let i=J(null),p=J(null),{viewportHeight:w,updateViewportHeight:y}=nt(i),[b,N]=ke(""),[T,L]=ke(!1),[k,I]=ke(!1),S=J(null),M=J(null),O=e.length,A=J(null),{isMobileDetailOpen:$,setIsMobileDetailOpen:V,isOverlayMounted:H,shouldShowOverlay:F,handleOverlayClose:le,lastClosedItemIdRef:re,selectedItem:de}=Gn(k,s,e,a),ve=Ct(()=>Number.isFinite(w)&&w>0?{height:w}:void 0,[w]);oe(()=>{if(typeof window>"u")return;let E=window.matchMedia("(max-width: 639px)"),z=f=>I(f.matches);I(E.matches),E.addEventListener("change",z);let ee=()=>requestAnimationFrame(y);window.addEventListener("resize",ee),y();let be=i.current,Ye=()=>{L(!0),S.current&&clearTimeout(S.current),S.current=window.setTimeout(()=>{L(!1),S.current=null},rr)};return be?.addEventListener("wheel",Ye,{passive:!0}),()=>{E.removeEventListener("change",z),window.removeEventListener("resize",ee),be?.removeEventListener("wheel",Ye),S.current&&clearTimeout(S.current)}},[y]),oe(()=>{if(!O){M.current=null,s!==null&&a(null);return}let E=`${r??""}|${t??""}`,z=(r??null)!==null||(t??null)!==null;if(z||(M.current=null),z&&M.current!==E){let ee=r&&e.find(be=>be.reportHubId===r)||t&&e.find(be=>be.businessDate===t);if(ee){M.current=E,s!==ee.reportHubId&&a(ee.reportHubId);return}}},[e,t,r,s,O,a]),oe(()=>{if(k||$||re.current===null)return;let E=re.current;re.current=null;let z=e.findIndex(ee=>ee.reportHubId===E);z>=0&&requestAnimationFrame(()=>p.current?.focusItemAtIndex(z))},[$,k,e,re]),oe(()=>{O>0&&N(E=>{let z=ae(e[0]?.businessDate);return E===z?E:z})},[e,O]);let ce=J(e);ce.current=e,oe(()=>{if(p.current){let E=document.querySelector('[data-testid="daily-report-list"]');E&&(E.__virtualScroll={...p.current,findReportIndex:z=>ce.current.findIndex(ee=>ee.reportHubId===z),getReportIds:(z=20)=>ce.current.slice(0,z).map(ee=>ee.reportHubId)})}});let ne=he(E=>{E<=0||(a(E),k&&V(!0))},[k,a,V]),Y=he(E=>E<O?e[E]:dt,[e,O]),D=he(()=>wt,[]),B=he(E=>{let z=Y(E.visibleStartIndex);z?.reportHubId>0&&N(ee=>{let be=ae(z.businessDate);return ee===be?ee:be})},[Y]),K=he(E=>{let z=Y(E);if(z&&z.reportHubId>0){if(z.reportHubId===s)return;a(z.reportHubId)}},[Y,a,s]),j=he(()=>{p.current&&l&&l(p.current.getScrollPosition());let E=i.current;E&&(E.dataset.scrolling!=="true"&&(E.dataset.scrolling="true"),A.current&&clearTimeout(A.current),A.current=setTimeout(()=>{E&&delete E.dataset.scrolling,A.current=null},150))},[l]);oe(()=>()=>{p.current&&l&&l(p.current.getScrollPosition())},[l]);let Q=he(E=>m(Ke,{...E,label:b,isWheelScrollActive:T}),[b,T]);return q(gr,{children:[q("div",{className:"flex h-full min-h-0 gap-4",children:[m("div",{ref:i,className:"flex min-h-0 w-full sm:w-90",style:ve,children:m(jn,{ref:p,itemCount:O,getItem:Y,getItemHeight:D,viewportSize:w,initialScrollOffset:d,overscanCount:ct,scrollBarOptions:{width:nr,tapScrollCircleOptions:ar,renderThumbOverlay:Q},behaviorOptions:{inertiaOptions:it,wheelSpeedMultiplier:ot},onRangeChange:B,onScroll:j,onItemFocus:K,contentInsets:{top:at,bottom:at},testId:"daily-report-list",className:"relative w-full",children:E=>m(Jn,{item:E,isActive:E.reportHubId===s,onSelect:ne},E.reportHubId)})}),m(br,{dailyReportItems:e,selectedItem:de,heightStyle:ve,autoMarkRead:!k&&n,isActive:s!==null,userId:o})]}),O===0&&m("div",{className:"py-8 text-center",children:m("p",{className:"text-slate-500",children:"\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093"})}),H&&m(Qn,{isOpen:F,selectedItem:de,onClose:le,autoMarkRead:k&&n,userId:o})]})},Yn=()=>m("div",{className:"px-2 pb-3",style:{height:$e},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:[m("div",{className:"h-4 w-24 rounded bg-slate-200"}),m("div",{className:"h-4 w-24 rounded bg-slate-200"}),m("div",{className:"h-4 w-24 rounded bg-slate-200"})]}),q("div",{className:"space-y-2",children:[m("div",{className:"h-4 w-full rounded bg-slate-200"}),m("div",{className:"h-4 w-11/12 rounded bg-slate-200"}),m("div",{className:"h-4 w-5/6 rounded bg-slate-200"})]})]})}),br=({dailyReportItems:e,selectedItem:t,heightStyle:r,autoMarkRead:n=!1,isActive:s=!0,userId:a})=>{let[o,d]=ke("article"),[l,i]=ke(!1),{draftLabelName:p,fieldLabels:w,sourceTypeConfigs:y}=X(),{report:b,error:N,isLoading:T}=Le(t?.reportHubId??-1,t?.businessDate??null),L=J(null),k=J(null),I=J(!1);oe(()=>{if(!b)return;let H=b.labels.some(F=>F.name===p);b.reportHubId!==k.current?(k.current=b.reportHubId,H?(i(!0),I.current=!0):(i(!1),I.current=!1)):!H&&l&&I.current&&(i(!1),I.current=!1)},[b,l,p]);let S=!!(a&&b?.userId===a),M=he(()=>{setTimeout(()=>{L.current&&L.current.scrollTo({top:L.current.scrollHeight,behavior:"smooth"})},100)},[]);if(e&&(e.length===0||!t))return m("aside",{className:"hidden min-h-0 min-w-0 flex-1 gap-3 rounded-2xl border border-slate-200 bg-white p-4 shadow-sm sm:block dark:border-slate-700 dark:bg-slate-900/70",style:r,children:m("div",{className:"flex 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:m("p",{children:"\u5DE6\u5074\u306E\u4E00\u89A7\u304B\u3089\u65E5\u5831\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002"})})});let O=ae(b?.date??t?.businessDate),A=b?.employeeName||b?.author?se(b.employeeName??b.author):"",$=T||!b,V=q(gr,{children:[q("div",{className:"space-y-1",children:[m("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:w.businessDate}),m("div",{className:"text-slate-900 text-sm dark:text-slate-100",children:O}),q("div",{className:"flex min-h-4 items-center gap-1 text-slate-500 text-xs dark:text-slate-300",children:[q("span",{children:[w.author,":"]}),$?m("div",{"data-skeleton":!0,className:"h-3 w-24 animate-pulse rounded bg-slate-200 dark:bg-slate-700"}):m("span",{children:A}),(()=>{let H=b?.sourceType,F=H?y?.[H]:void 0;return F?m("span",{className:G("ml-2 inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",F.badgeClassName),children:F.label}):null})()]})]}),q(bt,{value:o,onValueChange:H=>d(H),className:"flex min-h-0 flex-1 flex-col",children:[m(ze,{className:"grid grid-cols-2 gap-1 rounded-md bg-slate-100 p-1 text-xs dark:bg-slate-800",children:["article","relations"].map(H=>m(We,{value:H,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:H==="article"?w.tabArticle:w.tabRelations},H))}),m(Ae,{ref:L,value:"article",className:"scrollbar-thin flex-1 touch-pan-y overflow-y-auto overflow-x-hidden pt-3 text-sm",children:l?b?m(mt,{report:b,onCancel:()=>i(!1),onPublishSuccess:()=>i(!1)}):m("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:"\u8AAD\u307F\u8FBC\u307F\u4E2D..."}):t&&m(Kn,{report:b,isLoading:T,error:N,selectedItem:t,autoMarkRead:n,isActive:s,onCommentAdded:M,userId:a,onDoubleClick:S?()=>i(!0):void 0})}),m(Ae,{value:"relations",className:"scrollbar-thin flex-1 touch-pan-y overflow-y-auto pt-3 text-sm",children:m("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:w.relationsEmpty})})]})]});return e?m("aside",{"data-testid":"daily-report-side-pane","data-report-id":t?.reportHubId,className:"hidden min-h-0 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:V}):m("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:V})},Kn=({report:e,isLoading:t,error:r,selectedItem:n,autoMarkRead:s=!1,isActive:a=!0,onCommentAdded:o,userId:d,onDoubleClick:l})=>{let{toggleStar:i,toggleRead:p,deleteReport:w,user:y}=fe(),{fieldLabels:b,sourceTypeConfigs:N}=X(),{uiComments:T,handleAddComment:L,handleDeleteComment:k,pendingDeleteId:I,setPendingDeleteId:S,resolvedIdMap:M}=rt(e,y,d),{handleToggleRead:O}=qn(e,t,s,a,p),A=n.sourceType??e?.sourceType,$=He(A,N),V=A?A.toLowerCase()!=="internal":!1,H=$?.allowComment??!V,F=J(null),le=J(T.length);oe(()=>{let Q=e?.reportHubId??null;if(Q!==F.current){F.current=Q,le.current=T.length;return}T.length>le.current&&o?.(),le.current=T.length},[T.length,e?.reportHubId,o]);let re=async Q=>{await L(Q)},de=Ct(()=>e?.content?e.content.replace(/<br\s*\/?\s*>/gi,`
1
+ import{jsx as _t}from"react/jsx-runtime";var Ze=({orientation:e,thumbCenter:t,label:r,isDragging:n,isTapScrollActive:s,isWheelScrollActive:a})=>r.trim()&&(n||s||a)?_t("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:_t("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:_t("span",{className:"whitespace-nowrap font-semibold text-slate-800 dark:text-slate-100",children:r.trim()})})}):null;import{Paperclip as un}from"lucide-react";import{jsx as Zt,jsxs as mn}from"react/jsx-runtime";var cn=2,et=({count:e,label:t})=>e<=0?null:mn("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:[Zt(un,{className:"h-3.5 w-3.5","aria-hidden":"true"}),e>=cn&&Zt("span",{className:"font-semibold text-[10px] leading-none",children:e})]});import{createContext as pn,useContext as fn,useMemo as bn}from"react";import{jsx as Ot,jsxs as gn}from"react/jsx-runtime";var er={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."},tt={title:"Daily Reports",apiBasePath:"/daily_report/api",ssePath:"/sse/daily_report/updates",draftLabelName:"draft",fieldLabels:er,sourceTypeConfigs:{Internal:{label:"\u30AA\u30EA\u30B8\u30CA\u30EB",badgeClassName:"bg-emerald-100 text-emerald-800 dark:bg-emerald-900/30 dark:text-emerald-400"}},renderHeader:({title:e,annotation:t})=>gn("header",{className:"flex flex-wrap items-baseline justify-between gap-2 px-2 py-1",children:[Ot("span",{className:"text-nowrap text-slate-700 text-sm dark:text-slate-200",children:e}),t?Ot("span",{className:"text-slate-600 text-xs dark:text-slate-300",children:t}):null]}),showDevControls:!1},tr=pn(tt),rr=({config:e,children:t})=>{let r=bn(()=>({...tt,...e,fieldLabels:{...er,...e?.fieldLabels??{}}}),[e]);return Ot(tr.Provider,{value:r,children:t})},Y=()=>fn(tr),ke=(e,t)=>{if(!(e&&t))return;if(t[e])return t[e];let r=e.toLowerCase(),n=Object.keys(t).find(s=>s.toLowerCase()===r);return n?t[n]:void 0};import{jsx as Oe,jsxs as rt}from"react/jsx-runtime";var nr=1024,Ft=["B","KB","MB","GB"],hn=e=>{if(e===null||!Number.isFinite(e)||e<0)return null;let t=e,r=0;for(;t>=nr&&r<Ft.length-1;)t/=nr,r+=1;return r===0?`${t} ${Ft[r]}`:`${t.toFixed(1)} ${Ft[r]}`},nt=({attachments:e})=>{let{apiBasePath:t,fieldLabels:r}=Y();return e.length===0?null:rt("div",{className:"flex flex-col gap-2","data-testid":"daily-report-attachment-section",children:[Oe("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:r.attachments}),Oe("ul",{className:"flex flex-col gap-1.5",children:e.map(n=>{let s=`${t}/attachment/${n.id}`,a=hn(n.fileSize),l=n.state==="absent";return rt("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:[rt("div",{className:"flex min-w-0 flex-col",children:[l?Oe("span",{className:"truncate text-slate-400 text-sm line-through dark:text-slate-500","data-testid":"daily-report-attachment-name",children:n.fileName}):Oe("a",{href:s,className:"truncate text-blue-600 text-sm hover:underline dark:text-blue-400","data-testid":"daily-report-attachment-link",children:n.fileName}),rt("span",{className:"text-[10px] text-slate-400 dark:text-slate-500",children:[a??"\u2014",l&&` \xB7 ${r.attachmentMissing}`]})]}),!l&&Oe("a",{href:`${s}?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{TrashIcon as xn}from"@heroicons/react/24/outline";import{useState as Rn}from"react";var sr=(e,t,r)=>{let n=e.map((a,l)=>({id:`legacy-${l}`,authorName:a.name||"Unknown",content:a.text||"",isMine:!1,color:a.color||void 0,isLegacy:!0})),s=t.map(a=>({id:a.id,authorName:a.userName??"",content:a.content??"",createdAt:a.createdAt??"",isMine:r?a.userId===r:a.isMine,isLegacy:!1}));return[...n,...s]},ar=e=>{if(!e)return"text-gray-700";let t=e.toLowerCase();return t.includes("red")||t.includes("\u8D64")?"text-red-600":t.includes("green")||t.includes("\u7DD1")?"text-green-600":t.includes("blue")||t.includes("\u9752")?"text-blue-600":t.includes("yellow")||t.includes("\u9EC4")?"text-yellow-600":t.includes("orange")||t.includes("\u6A59")?"text-orange-500":"text-gray-700"};var ae=e=>{if(!e)return"-";let t=e.trim();return t===""?"-":t},oe=e=>{if(!e)return"-";if(typeof e!="string")return e instanceof Date?oe(e.toISOString()):String(e);let t=e.trim();if(t==="")return"-";let r=new Date(t);if(Number.isNaN(r.getTime()))return t;let n=r.getFullYear(),s=String(r.getMonth()+1).padStart(2,"0"),a=String(r.getDate()).padStart(2,"0");if(t.includes(":")||t.includes("T")){let f=String(r.getHours()).padStart(2,"0"),o=String(r.getMinutes()).padStart(2,"0"),i=String(r.getSeconds()).padStart(2,"0");return`${n}-${s}-${a}T${f}:${o}:${i}`}return`${n}-${s}-${a}`};import{clsx as yn}from"clsx";import{twMerge as vn}from"tailwind-merge";function z(...e){return vn(yn(e))}import{jsx as Ee,jsxs as st}from"react/jsx-runtime";var Dn=(e,t,r)=>t===e||typeof e=="number"&&e<0&&r?.get(e)===t||typeof t=="number"&&t<0&&r?.get(t)===e,or=({comment:e,reportHubId:t,businessDate:r,onOptimisticDelete:n,pendingDeleteId:s,onPendingDeleteIdChange:a,onTrashClick:l,resolvedIdMap:f})=>{let[o,i]=Rn(!1),p=Dn(e.id,s,f),D=g=>{g.stopPropagation(),g.preventDefault(),a(null),i(!0),typeof e.id=="number"&&n(e.id)};return st("li",{"data-comment-id":e.id,"data-deleted":o?"true":void 0,className:z("group relative rounded-xl border border-slate-200 bg-white p-3",e.isMine&&"border-blue-200 bg-blue-50",o&&"hidden",p?"z-50":"z-0 hover:z-10"),children:[st("div",{className:"mb-1 flex items-center justify-between",children:[Ee("div",{className:z("font-semibold text-xs",ar(e.color)),children:ae(e.authorName)}),st("div",{className:"flex items-center gap-2",children:[e.createdAt&&Ee("div",{className:"text-[10px] text-slate-400",children:oe(e.createdAt)}),e.isMine&&!e.isLegacy&&st("div",{className:"relative",children:[Ee("button",{type:"button",className:z("transition-colors",p?"text-red-500":"text-slate-400 hover:text-red-500"),title:"\u524A\u9664","aria-label":"\u524A\u9664",onClick:g=>l(g,e.id),children:Ee(xn,{className:"h-4 w-4"})}),p&&Ee("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:D,children:"\u524A\u9664\u3059\u308B"})]})]})]}),Ee("div",{className:"whitespace-pre-wrap text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:e.content})]})};import{useCallback as wn,useEffect as ir,useRef as lr,useState as In}from"react";import{jsx as Te,jsxs as Cn}from"react/jsx-runtime";var Sn=(e,t)=>{let r=lr(null);return ir(()=>{if(e===null)return;let s=a=>{a.target.closest("[data-delete-confirmation]")||t(null)};return document.addEventListener("mousedown",s),document.addEventListener("touchstart",s),()=>{document.removeEventListener("mousedown",s),document.removeEventListener("touchstart",s)}},[e,t]),ir(()=>()=>{r.current&&clearTimeout(r.current)},[]),{handleTrashClick:wn((s,a)=>{s.stopPropagation(),s.preventDefault(),e!==a&&(t(a),r.current&&clearTimeout(r.current),r.current=window.setTimeout(()=>{t(null),r.current=null},5e3))},[e,t])}},at=({comments:e,reportHubId:t,businessDate:r,onDeleteComment:n,pendingDeleteId:s,onPendingDeleteIdChange:a,resolvedIdMap:l})=>{let{handleTrashClick:f}=Sn(s,a);return e.length===0?null:Te("ul",{className:"mb-3 space-y-2",children:e.map(o=>Te(or,{comment:o,reportHubId:t,businessDate:r,onOptimisticDelete:n||(()=>{}),pendingDeleteId:s,onPendingDeleteIdChange:a,onTrashClick:f,resolvedIdMap:l},o.id))})},ot=({reportHubId:e,businessDate:t,onAddComment:r})=>{let[n,s]=In(!1),a=lr(null);return Cn("form",{className:"flex gap-2",ref:a,onSubmit:async f=>{f.preventDefault();let i=new FormData(f.currentTarget).get("content")?.trim();if(i&&r){s(!0),a.current?.reset();try{await r(i)}catch{if(a.current){let p=a.current.elements.namedItem("content");p&&(p.value=i)}}finally{s(!1)}}},children:[Te("input",{type:"hidden",name:"intent",value:"addComment"}),Te("input",{type:"hidden",name:"reportHubId",value:e}),Te("input",{type:"hidden",name:"businessDate",value:t}),Te("input",{type:"text",name:"content",placeholder:"\u30B3\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0...",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"}),Te("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:"\u9001\u4FE1"})]})};import{VirtualScroll as Is}from"@aiquants/virtualscroll";import{Check as Ss,Star as Ur,Trash2 as Cs}from"lucide-react";import{useCallback as Re,useEffect as Se,useMemo as qt,useRef as ge,useState as qe}from"react";import{createContext as ss,useCallback as we,useContext as as,useEffect as Er,useRef as ue,useState as ft}from"react";var Le=(e,t,r=console)=>{let n=s=>typeof s=="string"?[`${t} ${s}`]:[t,s];return{debug:(s,...a)=>{e<=0&&r.debug(...n(s),...a)},info:(s,...a)=>{e<=1&&r.info(...n(s),...a)},warn:(s,...a)=>{e<=2&&r.warn(...n(s),...a)},error:(s,...a)=>{e<=3&&r.error(...n(s),...a)}}};import{useCallback as kn,useEffect as cr,useRef as En,useState as it}from"react";var Tn=/^\d{4}-\d{2}-\d{2}$/,Nn=/^\d{4}\/\d{2}\/\d{2}$/,dr=e=>e<10?`0${e}`:`${e}`,ur=e=>{if(Number.isNaN(e.getTime()))return null;let t=e.getFullYear(),r=dr(e.getMonth()+1),n=dr(e.getDate());return`${t}-${r}-${n}`},Fe=e=>{if(e==null)return null;if(e instanceof Date)return ur(e);let t=e.trim();if(t==="")return null;if(Tn.test(t))return t;if(Nn.test(t))return t.replaceAll("/","-");let r=new Date(t);return ur(r)};var pr=Le(1,"use-daily-report"),fr=(e,t)=>{if(typeof window>"u")return t;let r=window[e];return typeof r=="number"&&!Number.isNaN(r)?r:t},br=fr("__DAILY_REPORT_CACHE_TTL__",3e5),Ln=fr("__DAILY_REPORT_CACHE_REVIVE_MS__",6e4),An=120,H={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=>{H.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=Fe(e.date),s=n?this.lists.get(n):null;if(s&&n){let l=s.data.some(f=>f.reportHubId===e.reportHubId)?s.data.map(f=>f.reportHubId===e.reportHubId?e:f):[e,...s.data];this.lists.set(n,{...s,data:l})}}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()){pr.warn(`[DailyReportCache] Stale update skipped id=${e}`);return}this.set({...n.data,...t},Math.max(n.expiresAt,Date.now()+Ln))}},delete(e,t){this.reports.delete(e);let r=Fe(t),n=r&&this.lists.get(r);n&&r&&this.lists.set(r,{...n,data:n.data.filter(s=>s.reportHubId!==e)}),this.notify(e)},merge(e,t){let r=e;if(r.commentItems.some(n=>this.recentDeletes.has(n.id))&&(r={...r,commentItems:r.commentItems.filter(n=>!this.recentDeletes.has(n.id))}),t){let n=new Set(r.commentItems.map(a=>a.id)),s=t.commentItems.filter(a=>!n.has(a.id)&&a.isMine&&Date.now()-new Date(a.createdAt||0).getTime()<1e4);s.length>0&&(r={...r,commentItems:[...r.commentItems,...s].sort((a,l)=>new Date(a.createdAt||0).getTime()-new Date(l.createdAt||0).getTime())})}return r},cacheMany(e,t,r=0){if(!e.length)return[];this.prune();let n=Date.now(),s=n+br;for(let[l,f]of this.recentDeletes)n-f>1e4&&this.recentDeletes.delete(l);let a=e.map(l=>{if(this.locks.has(l.reportHubId))return l;let f=this.lastMutations.get(l.reportHubId);if(f&&r>0&&f>r)return this.reports.get(l.reportHubId)?.data??l;let o=this.reports.get(l.reportHubId)?.data,i=this.merge(l,o);return this.set(i,s,!1),i});return t&&this.lists.set(t,{data:a,expiresAt:s}),a}},gr=(e,t,r=!0)=>H.set(e,t,r),pe=(e,t)=>H.getReport(e,t?.ignoreExpiry),fe=(e,t)=>H.update(e,t),lt=(e,t)=>H.delete(e,t),Be=()=>H.clear(),Ue=e=>{H.locks.add(e),H.lastMutations.set(e,Date.now())},$e=e=>{H.locks.delete(e),H.lastMutations.set(e,Date.now())},hr=e=>H.recentDeletes.set(e,Date.now()),yr=(e,t)=>{let r=n=>{n===e&&t()};return H.listeners.add(r),()=>{H.listeners.delete(r)}},Ce=(e,t)=>{H.prune(),H.set(t,Date.now()+br)},Pn=async(e,t)=>{let r=H.getReport(t);if(r)return r;let n=H.pendingReports.get(t);if(n)return n;let s=Date.now(),a=fetch(`${e}/report?reportHubId=${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);let f=l.report;return H.cacheMany([f],null,s)[0]}).finally(()=>H.pendingReports.delete(t));return H.pendingReports.set(t,a),a},vr=async(e,t)=>{let r=H.getList(t);if(r)return r;let n=H.pendingLists.get(t);if(n)return n;let s=Date.now(),a=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 H.cacheMany(l.reports??[],t,s)}).finally(()=>H.pendingLists.delete(t));return H.pendingLists.set(t,a),a},Ae=(e,t)=>{let{apiBasePath:r}=Y(),[n,s]=it(()=>H.getReport(e)),[a,l]=it(null),[f,o]=it(!1),[i,p]=it(!1),D=En({id:e,token:0});return cr(()=>{let g=h=>{if(h===e){let R=H.getReport(e,!0);s(R)}};return H.listeners.add(g),()=>{H.listeners.delete(g)}},[e]),cr(()=>{let g=Fe(t),h=(D.current.token||0)+1;if(D.current={id:e,token:h},e<=0){s(null),l(e===0?new Error("Invalid ID"):null),o(!1),p(!1);return}let R=H.getReport(e,!0),E=!1;if(R)E=!H.isValid(H.reports.get(e)?.expiresAt??0);else if(g){let S=H.getList(g,!0)?.find(T=>T.reportHubId===e);S&&(R=S,E=!H.isValid(H.lists.get(g)?.expiresAt??0))}if(s(R),R&&!E){l(null),o(!1),p(!1);return}o(!R),p(!0);let _=setTimeout(async()=>{if(D.current.token===h)try{let L=null;g?L=(await vr(r,g)).find(T=>T.reportHubId===e)??null:L=await Pn(r,e),D.current.token===h&&(s(L),l(null))}catch(L){D.current.token===h&&l(L instanceof Error?L:new Error("Load failed"))}finally{D.current.token===h&&(o(!1),p(!1))}},An);return()=>clearTimeout(_)},[e,t,r]),{report:n,error:a,isLoading:f,isRefetching:i}},xr=()=>{let{apiBasePath:e}=Y();return kn(t=>{let r=Fe(t);r&&!H.getList(r)&&vr(e,r).catch(n=>pr.warn("Prefetch error",r,n))},[e])};import{useEffect as Gn}from"react";import{z as b}from"zod";var Hn=b.object({name:b.string().nullish(),affiliation:b.string().nullish()}),Mn=b.object({name:b.string().nullish(),text:b.string().nullish(),color:b.string().nullish()}),_n=b.object({id:b.number(),name:b.string().nullish(),color:b.string().nullish()}),Rr=b.object({id:b.number(),userId:b.string().nullish(),userName:b.string().nullish(),content:b.string().nullish(),createdAt:b.string().nullish(),isMine:b.boolean()}),On=b.object({id:b.string(),fileName:b.string(),fileType:b.string().nullable(),fileSize:b.number().nullable(),createdAt:b.string().nullable(),state:b.enum(["present","absent","unknown"])}),Bt=b.object({reportHubId:b.number(),date:b.string().nullish(),createdAt:b.string().nullish(),author:b.string().nullish(),userId:b.string().nullish(),sourceType:b.string().nullish(),employeeName:b.string().nullish(),updatedBy:b.string().nullish(),updatedAt:b.string().nullish(),category:b.string().nullish(),creationCategory:b.string().nullish(),visitTimeFrom:b.string().nullish(),visitTimeTo:b.string().nullish(),customerName:b.string().nullish(),interviewers:b.array(Hn),subject:b.string().nullish(),content:b.string().nullish(),comments:b.array(Mn),isRead:b.boolean(),isStarred:b.boolean(),labels:b.array(_n),commentItems:b.array(Rr),attachments:b.array(On).default([])}),Fn=b.object({type:b.literal("connected")}),Bn=b.object({type:b.literal("status-update"),reportHubId:b.number(),statusType:b.enum(["star","read"]),value:b.boolean(),clientTempId:b.string(),recipientRawUserId:b.number().optional()}),Un=b.object({type:b.literal("comment-add"),reportHubId:b.number(),comment:Rr,clientTempId:b.string()}),$n=b.object({type:b.literal("comment-delete"),reportHubId:b.number(),commentId:b.number(),clientTempId:b.string()}),Vn=b.object({type:b.literal("report-create"),reportHubId:b.number(),report:Bt,clientTempId:b.string(),recipientRawUserId:b.number().optional()}),jn=b.object({type:b.literal("report-update"),reportHubId:b.number(),report:Bt,clientTempId:b.string(),recipientRawUserId:b.number().optional()}),zn=b.object({type:b.literal("report-publish"),reportHubId:b.number(),report:Bt,clientTempId:b.string(),recipientRawUserId:b.number().optional()}),Wn=b.object({type:b.literal("report-delete"),reportHubId:b.number(),clientTempId:b.string()}),Dr=b.discriminatedUnion("type",[Fn,Bn,Un,$n,Vn,jn,zn,Wn]);var Ve=Le(1,"daily-report-sse-connection"),wr=({isSseEnabled:e,onMessage:t})=>{let{ssePath:r}=Y();Gn(()=>{if(!e)return;let n=null,s=null,a=0,l,f=()=>{n?.close(),n=new EventSource(`${r}${l?`?lastEventId=${l}`:""}`),n.onopen=()=>{a=0,Ve.info("SSE Connected")},n.onmessage=o=>{o.lastEventId&&(l=o.lastEventId);try{let i=JSON.parse(o.data),p=Dr.safeParse(i);if(!p.success){Ve.error("SSE Validation Error:",p.error.flatten(),"raw message:",i);return}if(p.data.type==="connected"){Ve.info("SSE Subscribe Ready");return}t(p.data)}catch(i){Ve.error("SSE Parse Error",i)}},n.onerror=o=>{n?.close(),n=null,a++;let i=Math.min(2e3*2**(a-1),3e4);Ve.error(`SSE Error. Retrying in ${i}ms (attempt ${a})...`,o),s=setTimeout(f,i)}};return f(),()=>{n&&n.close(),s&&clearTimeout(s)}},[e,t,r])};import{useSyncExternalStore as Zn}from"react";var Ir=e=>typeof e=="object"&&e!==null&&Array.isArray(e.items);var qn=50,Kn=1e3,Yn=3e4,Xn=6,Jn="/daily_report/api",Qn=/^\d{4}-\d{2}-\d{2}$/,dt=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.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??Jn,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.publishCoalesceMs=t.publishCoalesceMs??qn,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()),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>=Xn){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(Kn*2**(this.consecutiveFailures-1),Yn))}}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=await this.fetchFn(this.buildStreamUrl(t),{signal:r.signal,headers:{Accept:"application/x-ndjson"},cache:"no-store"});if(n.status===401||n.status===403)return{kind:"auth-required"};if(!(n.ok&&n.body))return{kind:"retryable",error:new Error(`ids stream HTTP ${n.status}`)};let s=n.body.getReader(),a=new TextDecoder,l="",f=!1,o=!1;for(;;){let{done:i,value:p}=await s.read();if(i)break;let D=(l+a.decode(p,{stream:!0})).split(`
2
+ `);l=D.pop()??"";let g=!1;for(let h of D){if(h.trim()==="")continue;let R;try{R=JSON.parse(h)}catch{this.warn("[DailyReportIdsStream] skipped malformed line");continue}if(!Ir(R)){f=!0;continue}g=this.absorbChunkItems(R.items)||g,typeof R.total=="number"&&Number.isFinite(R.total)&&R.total!==this.state.totalCount&&this.publish({totalCount:R.total}),R.nextCursor&&(R.nextCursor.businessDate===null||Qn.test(R.nextCursor.businessDate))&&(this.lastCursor=R.nextCursor),R.isLast&&(o=!0)}g&&(this.consecutiveFailures=0,this.schedulePublishItems())}return f?{kind:"retryable",error:new Error("Stream interrupted by server error")}:o?{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)}}absorbChunkItems(t){let r=!1;for(let n of t){if(!n||typeof n.reportHubId!="number"||this.externalRemovalTombstones.has(n.reportHubId))continue;this.activeSeenIds?.add(n.reportHubId);let s=this.itemMap.get(n.reportHubId);(!s||s.businessDate!==n.businessDate||s.sourceType!==n.sourceType)&&(this.itemMap.set(n.reportHubId,n),r=!0)}return r}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)),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,s=()=>{n!==null&&(this.clearTimeoutFn(n),n=null),this.wakeRetryWait===s&&(this.wakeRetryWait=null),r()};this.wakeRetryWait=s,n=this.setTimeoutFn(s,t)})}};var es=6e4,J=null,Ut=new Set,Sr={items:[],loadedCount:0,totalCount:null,phase:"idle",isRevalidating:!1,hasCompletedOnce:!1,completedAt:null,error:null},Cr=()=>{typeof window<"u"&&window.location.reload()},$t=()=>{for(let e of Ut)e()},ct=()=>{J&&(J.unsubscribe(),J.client.dispose(),J=null,$t())},ut=e=>{if(typeof window>"u")return;let t=e.apiBasePath??tt.apiBasePath;if(J&&(J.userKey!==e.userKey||J.apiBasePath!==t)&&(J.userKey!==e.userKey&&Be(),ct()),!J){let r=new dt({apiBasePath:t});J={client:r,userKey:e.userKey,apiBasePath:t,unsubscribe:r.subscribe($t)},r.start(),$t();return}Vt(J)},Vt=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>es&&e.client.refresh()},Tr=e=>{if(!(typeof window>"u")){if(!J){ut(e);return}if(J.userKey!==e.userKey){Be(),ct(),ut(e);return}Vt(J)}},Nr=()=>{typeof window>"u"||!J||Vt(J)},je=e=>{J?.client.applyExternalUpsert(e)},mt=e=>{J?.client.applyExternalRemoval(e)},pt=()=>{J?.client.retry()},jt=(e={})=>{J?.client.refresh(e)},kr=()=>J?.userKey,ts=e=>(Ut.add(e),()=>Ut.delete(e)),rs=()=>J?.client.getState()??Sr,ns=()=>Sr,Pe=()=>Zn(ts,rs,ns),oo=()=>{ct()};typeof import.meta<"u"&&import.meta.hot&&import.meta.hot.dispose(()=>{ct()});import{jsx as os}from"react/jsx-runtime";var xe=Le(1,"daily-report-action-context"),zt=globalThis.__DailyReportActionContext??ss(null);globalThis.__DailyReportActionContext=zt;var be=()=>{let e=as(zt);if(!e)throw new Error("useDailyReportActionContext must be used within a DailyReportActionProvider");return e},ze=e=>{if(!e)return"Unknown";if(e.displayName?.trim())return e.displayName;if(e.name){let t=`${e.name.familyName??""} ${e.name.givenName??""}`.trim();if(t)return t}return e.emails?.[0]?.value??"Unknown"},Lr=({children:e,user:t,initialItems:r=[],userId:n})=>{let{apiBasePath:s,draftLabelName:a}=Y(),l=ue(new Map),f=ue(new Map),o=ue(new Map),i=ue(new Map),p=ue(new Map),[D,g]=ft(0),[h,R]=ft(r),[E,_]=ft(!!n),L=ue(new Map),S=ue(new Set),T=ue(new Set),N=ue(new Set),V=Pe(),O=ue(!1);O.current=V.phase==="complete"&&!V.isRevalidating;let M=we(()=>kr()===(n??null),[n]),X=we(async()=>{xe.info("[DailyReportActionProvider] Refetching data without page reload..."),jt(),g(m=>m+1),H.listeners.forEach(m=>{m(-1)})},[]),U=we(async()=>{xe.info("[DailyReportActionProvider] Clearing client & server/DB cache and refetching data without page reload..."),Be(),T.current.clear();try{sessionStorage.clear()}catch{}try{let m=new FormData;m.append("intent","clearCache");let d=await fetch(`${s}/action`,{method:"POST",body:m});if(!d.ok){let y=await d.json().catch(()=>null);xe.warn("[DailyReportActionProvider] Failed to clear server-side cache:",d.status,y)}}catch(m){xe.warn("[DailyReportActionProvider] Failed to clear server-side cache:",m)}M()&&(jt({forceRefresh:!0}),g(m=>m+1),H.listeners.forEach(m=>{m(-1)}))},[s,M]),A=ue(new Map),Q=ue(()=>{}),ne=we((m,d)=>{let y=A.current,u=y.get(m);if(u){u.messages.push(d);return}let v={messages:[d],unsubscribe:()=>{},timer:setTimeout(()=>{let w=y.get(m);w&&(w.unsubscribe(),y.delete(m),xe.warn(`[SSE Queue] Expired: reportHubId=${m}, dropped=${w.messages.length} messages`))},3e4)};v.unsubscribe=yr(m,()=>{let w=y.get(m);if(w&&pe(m,{ignoreExpiry:!0})){w.unsubscribe(),clearTimeout(w.timer),y.delete(m),xe.info(`[SSE Queue] Replaying ${w.messages.length} messages for reportHubId=${m}`);for(let I of w.messages)Q.current(I)}}),y.set(m,v)},[]),de=m=>{N.current.add(m),setTimeout(()=>{N.current.delete(m)},3e4)},ce=we(m=>!!m&&N.current.has(m),[]),me=we((m,d)=>{d!==void 0&&je({reportHubId:m,businessDate:d??null}),R(y=>{let u=d??y.find(I=>I.reportHubId===m)?.businessDate??null;return(y.some(I=>I.reportHubId===m)?y.map(I=>I.reportHubId===m?{...I,businessDate:u}:I):[{reportHubId:m,businessDate:u},...y]).sort((I,B)=>{let j=I.businessDate??"";return(B.businessDate??"").localeCompare(j)})})},[]),ee=()=>{n&&_(m=>!m)},k=we(m=>{M()&&(T.current.add(m),mt(m),R(d=>d.filter(y=>y.reportHubId!==m)))},[M]),[P,W]=ft(r);if(r!==P){W(r);let m=new Map;for(let u of r)T.current.has(u.reportHubId)||m.set(u.reportHubId,u);for(let u of h)m.has(u.reportHubId)||T.current.has(u.reportHubId)||m.set(u.reportHubId,u);let d=Array.from(m.values()),y=!0;for(let u=1;u<d.length;u++)if((d[u-1].businessDate??"")<(d[u].businessDate??"")){y=!1;break}y||d.sort((u,v)=>{let w=u.businessDate??"",I=v.businessDate??"";return w===I?0:w<I?1:-1}),R(d)}Er(()=>{if(O.current){let m=new Set(r.map(d=>d.reportHubId));for(let d of T.current)m.has(d)||T.current.delete(d)}},[r]);let q=we(m=>{if(M()&&!ce(m.clientTempId))switch(m.type){case"comment-add":{let{comment:d,reportHubId:y}=m,u=pe(y,{ignoreExpiry:!0});if(u){if(u.commentItems.some(j=>j.id===d.id))return;let v=!1,w=l.current.get(y);if(w){for(let[j,le]of w.entries())if(le===d.content){w.delete(j),p.current.set(j,d.id),v=!0;break}}let I={...d,userName:d.userName||(v?ze(t):"Unknown"),createdAt:d.createdAt||new Date().toISOString(),isMine:v},B={...u,commentItems:[...u.commentItems,I].sort((j,le)=>new Date(j.createdAt||0).getTime()-new Date(le.createdAt||0).getTime())};Ce(y,B),Ue(y),$e(y),g(j=>j+1)}else ne(y,m);break}case"comment-delete":{let{commentId:d,reportHubId:y}=m,u=pe(y,{ignoreExpiry:!0});if(u){let v={...u,commentItems:u.commentItems.filter(w=>w.id!==d)};Ce(y,v),Ue(y),$e(y),g(w=>w+1)}else ne(y,m);break}case"status-update":{let{statusType:d,value:y,reportHubId:u}=m,v=pe(u,{ignoreExpiry:!0});if(d==="star")if(o.current.get(u)===y&&o.current.delete(u),v){let w={...v,isStarred:y};Ce(u,w),g(I=>I+1)}else ne(u,m);else if(d==="read")if(i.current.get(u)===y&&i.current.delete(u),v){let w={...v,isRead:y};Ce(u,w),g(I=>I+1)}else ne(u,m);break}case"report-delete":{let{reportHubId:d}=m;S.current.delete(d),T.current.add(d),mt(d);let y=A.current.get(d);y&&(y.unsubscribe(),clearTimeout(y.timer),A.current.delete(d));let u=pe(d,{ignoreExpiry:!0});u?.date&&(lt(d,u.date),g(v=>v+1)),R(v=>v.filter(w=>w.reportHubId!==d));break}case"report-create":case"report-update":case"report-publish":{let{report:d}=m;Ce(d.reportHubId,d),(m.type==="report-create"||m.type==="report-publish")&&(S.current.add(d.reportHubId),me(d.reportHubId,d.date)),g(y=>y+1);break}}},[ce,M,me,t,ne]);Q.current=q,Er(()=>()=>{for(let m of A.current.values())m.unsubscribe(),clearTimeout(m.timer);A.current.clear()},[]),wr({isSseEnabled:E,onMessage:q});let K=async(m,d,y,u,v,w)=>{w?.skipLock||Ue(m),v.onOptimistic?.();let I=u.clientTempId||crypto.randomUUID();de(I);let B=new FormData;B.append("intent",d),B.append("reportHubId",String(m)),B.append("businessDate",y),B.append("operationTimestamp",String(Date.now())),B.append("clientTempId",I);for(let[j,le]of Object.entries(u))j!=="clientTempId"&&B.append(j,le);try{let j=await fetch(`${s}/action`,{method:"POST",body:B,headers:{Accept:"application/json"}});if(!j.ok){let Qt=new Error(`Failed to ${d}`);throw Object.assign(Qt,{status:j.status}),Qt}let le=await j.json();if(le.status!=="OK"||d!=="create"&&String(le.reportHubId)!==String(m))throw new Error(`Invalid response for ${d}`);if(typeof le.clientTempId!="string"||le.clientTempId!==I)throw new Error(`Invalid clientTempId for ${d}`);if(!M())throw xe.warn(`[executeAction] ${d} resolved after a user switch; discarding continuation`),new Error(`Stale continuation for ${d}`);return await v.onSuccess?.(le)}catch(j){throw xe.error(`${d} failed:`,j),M()&&v.onFailure?.(),j}finally{w?.keepLock||w?.skipLock||$e(m)}},C=async(m,d,y)=>{let u=Number(m),v=-1*Date.now(),w=K(u,"addComment",y,{content:d,clientTempId:String(v)},{onOptimistic:()=>{l.current.has(u)||l.current.set(u,new Map),l.current.get(u)?.set(v,d),g(I=>I+1)},onSuccess:I=>{if(!I.newComment)throw new Error("No new comment returned");let B=I.newComment.id;p.current.set(v,B),l.current.get(u)?.delete(v);let j=pe(u,{ignoreExpiry:!0});return j&&!j.commentItems.some(le=>le.id===B)&&fe(u,{commentItems:[...j.commentItems,{...I.newComment,id:B,isMine:!0,userName:ze(t)}],updatedAt:I.updatedAt}),B},onFailure:()=>{l.current.get(u)?.delete(v)}},{skipLock:!0}).finally(()=>L.current.delete(v));L.current.set(v,w),await w},$=async(m,d,y)=>{let u=Number(m);f.current.has(u)||f.current.set(u,new Set),f.current.get(u)?.add(d),g(w=>w+1);let v=d;if(d<0){let w=p.current.get(d);if(w!==void 0)v=w;else{let I=L.current.get(d);if(!I)return;try{v=await I}catch{return}}}await K(u,"deleteComment",y,{commentId:String(v)},{onSuccess:w=>{let I=typeof w.deletedCommentId=="string"?Number(w.deletedCommentId):v,B=pe(u,{ignoreExpiry:!0});B&&(fe(u,{commentItems:B.commentItems.filter(j=>j.id!==I),updatedAt:w.updatedAt}),hr(I)),f.current.get(u)?.delete(d)},onFailure:()=>{f.current.get(u)?.delete(d)}},{skipLock:!0})},re=async(m,d,y)=>{let u=Number(m);await K(u,"toggleStar",y,{isStarred:String(d)},{onOptimistic:()=>{fe(u,{isStarred:d}),o.current.set(u,d),g(v=>v+1)},onSuccess:v=>{v.updatedStatus&&typeof v.updatedStatus.isStarred=="boolean"&&pe(u,{ignoreExpiry:!0})&&(fe(u,{isStarred:v.updatedStatus.isStarred,updatedAt:v.updatedAt}),g(I=>I+1)),o.current.delete(u)},onFailure:()=>{fe(u,{isStarred:!d}),o.current.delete(u)}},{skipLock:!0})},De=async(m,d,y)=>{let u=Number(m);await K(u,"toggleRead",y,{isRead:String(d)},{onOptimistic:()=>{fe(u,{isRead:d}),i.current.set(u,d),g(v=>v+1)},onSuccess:v=>{v.updatedStatus&&typeof v.updatedStatus.isRead=="boolean"&&pe(u,{ignoreExpiry:!0})&&(fe(u,{isRead:v.updatedStatus.isRead,updatedAt:v.updatedAt}),g(I=>I+1)),i.current.delete(u)},onFailure:()=>{fe(u,{isRead:!d}),i.current.delete(u)}},{skipLock:!0})},Jt=ue(De);Jt.current=De;let sn=we((m,d,y)=>Jt.current(m,d,y),[]),an=async m=>{let d=-1*Date.now(),y=new Date().toISOString(),u={reportHubId:d,date:m,createdAt:y,author:ze(t),userId:t?.id??"unknown",sourceType:"Internal",employeeName:ze(t),updatedBy:ze(t),updatedAt:y,category:null,creationCategory:null,visitTimeFrom:null,visitTimeTo:null,customerName:null,interviewers:[],subject:"",content:"",comments:[],isRead:!0,isStarred:!1,labels:[{id:0,name:a,color:"#9ca3af"}],commentItems:[],attachments:[]};gr(u,Date.now()+3e5,!1),R(v=>[{reportHubId:d,businessDate:m},...v]);try{let v=await K(0,"create",m,{clientTempId:String(d)},{onSuccess:I=>I});if(v.clientTempId&&v.clientTempId!==String(d))throw xe.warn(`[createReport] ID mismatch. req=${d}, res=${v.clientTempId}`),new Error("Optimistic ID mismatch");let w=Number(v.reportHubId);return je({reportHubId:w,businessDate:m}),Ue(w),v.report&&(Ce(w,v.report),g(I=>I+1)),R(I=>I.some(B=>B.reportHubId===w)?I.filter(B=>B.reportHubId!==d):I.map(B=>B.reportHubId===d?{...B,reportHubId:w}:B)),setTimeout(()=>$e(w),1e3),w}catch(v){throw xe.error("[createReport] Failed or mismatched",v),R(w=>w.filter(I=>I.reportHubId!==d)),v}},on=async(m,d,y)=>{let u=Number(m);await K(u,"update",y,{...d.title&&{title:d.title},...d.content&&{content:d.content}},{onSuccess:()=>{let v=pe(u,{ignoreExpiry:!0});v&&(fe(u,{subject:d.title??v.subject,content:d.content??v.content}),g(w=>w+1))}})},ln=async(m,d)=>{let y=Number(m),u=pe(y,{ignoreExpiry:!0}),v=u?.labels||[];await K(y,"publish",d,{},{onOptimistic:()=>{if(u){let w=u.labels.filter(I=>I.name!==a);fe(y,{labels:w}),g(I=>I+1)}},onSuccess:w=>{w.report&&(Ce(y,w.report),g(I=>I+1)),je({reportHubId:y,businessDate:d})},onFailure:()=>{fe(y,{labels:v}),g(w=>w+1)}},{skipLock:!0})},dn=async(m,d)=>{let y=Number(m),u=h.find(v=>v.reportHubId===y);T.current.add(y),mt(y),R(v=>v.filter(w=>w.reportHubId!==y));try{await K(y,"delete",d,{},{onSuccess:v=>{lt(y,d)}})}catch(v){if(v.status===404){lt(y,d);return}if(!M())return;T.current.delete(y),je({reportHubId:y,businessDate:u?.businessDate??d}),u&&R(I=>I.some(B=>B.reportHubId===y)?I:[u,...I].sort((B,j)=>(j.businessDate??"").localeCompare(B.businessDate??"")))}};return os(zt.Provider,{value:{user:t,pendingAddCommentIds:l,pendingDeleteCommentIds:f,pendingStarUpdates:o,pendingReadUpdates:i,resolvedIdMap:p,version:D,items:h,isSseEnabled:E,toggleSse:ee,addComment:C,deleteComment:$,toggleStar:re,toggleRead:sn,createReport:an,updateReport:on,publishReport:ln,deleteReport:dn,removeStaleItem:k,refetchData:X,clearCacheAndRefetch:U},children:e})};import{useCallback as Ar,useMemo as is,useRef as ls,useState as ds}from"react";var bt=(e,t,r)=>{let{pendingAddCommentIds:n,pendingDeleteCommentIds:s,resolvedIdMap:a,version:l,addComment:f,deleteComment:o}=be(),[i,p]=ds(null),D=Ar(E=>e&&o(e.reportHubId,E,e.date??""),[e,o]),g=Ar(E=>e&&t?f(e.reportHubId,E,e.date??""):Promise.resolve(),[e,t,f]),h=ls([]);return{uiComments:is(()=>{if(!e)return[];let E=sr(e.comments,e.commentItems,r),_=s.current.get(e.reportHubId);_?.size&&(E=E.filter(S=>!_.has(S.id)));let L=n.current.get(e.reportHubId);if(L?.size&&t){let S=new Set(E.map(N=>N.id)),T=t.displayName?.trim()||(t.name?`${t.name.familyName??""} ${t.name.givenName??""}`.trim():"")||t.emails?.[0]?.value||"Unknown";for(let[N,V]of L){if(_?.has(N)||S.has(N))continue;let O=a.current.get(N);O&&S.has(O)||E.some(M=>M.isMine&&M.content===V&&typeof M.id=="number"&&M.id>0)||E.push({id:N,authorName:T,content:V,createdAt:new Date().toISOString(),isMine:!0,isLegacy:!1})}}return JSON.stringify(E)===JSON.stringify(h.current)?h.current:(h.current=E,E)},[e,t,r,s,n,a,l]),handleAddComment:g,handleDeleteComment:D,pendingDeleteId:i,setPendingDeleteId:p,resolvedIdMap:a.current}};import{useCallback as us,useEffect as cs,useState as ms}from"react";var gt=(e,t)=>{let{enableMutationObserver:r=!1,bottomGap:n=4,minFallbackHeight:s=240}=t??{},[a,l]=ms(600),f=us(()=>{if(typeof window>"u")return;let o=e.current;if(!o||o.offsetParent===null&&window.getComputedStyle(o).position!=="fixed")return;let i=A=>Number.parseFloat(A)||0,{top:p}=o.getBoundingClientRect(),D=o.parentElement?.getBoundingClientRect(),g=window.getComputedStyle(document.documentElement),h=i(g.getPropertyValue("--footer-height")),R=i(g.getPropertyValue("--header-height")),E=i(g.getPropertyValue("--scrollbar-height")),_=window.getComputedStyle(o),L=i(_.marginBottom),S=i(_.paddingBottom),T=window.innerHeight-h-E-n,N=D?Math.min(D.bottom,T):T,V=D?Math.max(D.top,R):R,O=Math.max(p,V),M=N-O-L-S,X=Number.isFinite(M)?Math.floor(M):0,U=X>0?X:s;U>0&&Number.isFinite(U)&&l(A=>Math.abs(A-U)>1?U:A)},[n,e,s]);return cs(()=>{if(typeof window>"u")return;let o=null,i=null,p=null,D=null,g=()=>{o!==null&&window.cancelAnimationFrame(o),o=window.requestAnimationFrame(()=>{f()})};g(),i=window.setTimeout(()=>{g()},150);let h=e.current;return typeof ResizeObserver<"u"&&h&&(p=new ResizeObserver(()=>{g()}),p.observe(h),h.parentElement&&p.observe(h.parentElement)),r&&typeof MutationObserver<"u"&&(D=new MutationObserver(()=>{g()}),D.observe(document.documentElement,{attributes:!0,attributeFilter:["style"]})),window.addEventListener("resize",g),()=>{o!==null&&window.cancelAnimationFrame(o),i!==null&&window.clearTimeout(i),window.removeEventListener("resize",g),p?.disconnect(),D?.disconnect()}},[r,f,e]),{viewportHeight:a,updateViewportHeight:f}};import{tapScrollCircleSampleVisual as ps}from"@aiquants/virtualscroll";var ht=180,Wt=160,yt=6,We=Wt-yt,vt=.8,xt={maxVelocity:18,deceleration:.0018,startVelocityThreshold:.03},Rt=20,Pr=6,Dt={reportHubId:-1,businessDate:null},Hr={report:null,error:null,isLoading:!1,isRefetching:!1},wt=240,It=15,St=8,Mr=3,Ct={enabled:!0,renderVisual:ps,maxSpeedCurve:{exponentialSteepness:3,exponentialScale:8},maxSpeedMultiplier:8},Tt=["pen","touch"];import{useEffect as Rs,useRef as Ds,useState as Gt}from"react";import{Slot as fs}from"@radix-ui/react-slot";import{cva as bs}from"class-variance-authority";import*as _r from"react";import{jsx as hs}from"react/jsx-runtime";var gs=bs("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"}}),Ie=_r.forwardRef(({className:e,variant:t,size:r,asChild:n=!1,...s},a)=>hs(n?fs:"button",{className:z(gs({variant:t,size:r,className:e})),ref:a,...s}));Ie.displayName="Button";import{jsx as ys}from"react/jsx-runtime";function Or({className:e,type:t,...r}){return ys("input",{type:t,"data-slot":"input",className:z("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 Fr from"@radix-ui/react-label";import{jsx as vs}from"react/jsx-runtime";function He({className:e,...t}){return vs(Fr.Root,{"data-slot":"label",className:z("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 xs}from"react/jsx-runtime";function Br({className:e,...t}){return xs("textarea",{"data-slot":"textarea",className:z("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 Ne,jsxs as Nt}from"react/jsx-runtime";var kt=({report:e,onCancel:t,onPublishSuccess:r})=>{let{updateReport:n,publishReport:s}=be(),[a,l]=Gt(e.subject??""),[f,o]=Gt(e.content??""),[i,p]=Gt(!1),D=Ds(e.reportHubId);Rs(()=>{e.reportHubId!==D.current&&(l(e.subject??""),o(e.content??""),D.current=e.reportHubId)},[e.reportHubId,e.subject,e.content]);let g=async()=>{p(!0);try{await n(e.reportHubId,{title:a,content:f},e.date??"")}finally{p(!1)}},h=async()=>{p(!0);try{await n(e.reportHubId,{title:a,content:f},e.date??""),await s(e.reportHubId,e.date??""),r?.()}finally{p(!1)}};return Nt("div",{className:"space-y-6 p-1",children:[Nt("div",{className:"space-y-2",children:[Ne(He,{htmlFor:`report-title-${e.reportHubId}`,children:"\u30BF\u30A4\u30C8\u30EB"}),Ne(Or,{id:`report-title-${e.reportHubId}`,value:a,onChange:R=>l(R.target.value),placeholder:"\u65E5\u5831\u306E\u30BF\u30A4\u30C8\u30EB\u3092\u5165\u529B",disabled:i})]}),Nt("div",{className:"space-y-2",children:[Ne(He,{htmlFor:`report-content-${e.reportHubId}`,children:"\u5185\u5BB9"}),Ne(Br,{id:`report-content-${e.reportHubId}`,value:f,onChange:R=>o(R.target.value),placeholder:"\u65E5\u5831\u306E\u5185\u5BB9\u3092\u5165\u529B",className:"min-h-50",disabled:i})]}),Nt("div",{className:"flex justify-end gap-2",children:[t&&Ne(Ie,{variant:"outline",onClick:t,disabled:i,children:"\u30AD\u30E3\u30F3\u30BB\u30EB"}),Ne(Ie,{variant:"secondary",onClick:g,disabled:i,children:"\u4FDD\u5B58"}),Ne(Ie,{onClick:h,disabled:i,children:"\u516C\u958B"})]})]})};import{jsx as ws}from"react/jsx-runtime";var Ge=({className:e})=>ws("span",{className:z("text-blue-500",e),children:"\u25CF"});import{Fragment as _s,jsx as x,jsxs as F}from"react/jsx-runtime";var Ts=(e,t,r)=>{Se(()=>{let n=e.current;if(!n)return;let s=new ResizeObserver(()=>{r(t,n.offsetHeight)});return s.observe(n),()=>s.disconnect()},[t,r,e])},Ns=({itemId:e,onHeightMeasured:t,children:r})=>{let n=ge(null);return Ts(n,e,t),x("div",{ref:n,className:"px-2 pb-3","data-daily-report-button":e,children:r})},ks=e=>e.affiliation?.trim()?`${e.name}\uFF08${e.affiliation}\uFF09`:e.name??"",$r=({dailyReportItems:e,userId:t,selectedItemId:r,onSelectItem:n,initialScrollOffset:s,onScrollOffsetChange:a})=>{let[l,f]=qe(new Map),o=ge(null),i=ge(null),{viewportHeight:p,updateViewportHeight:D}=gt(o,{enableMutationObserver:!0}),g=xr(),[h,R]=qe(""),[E,_]=qe(!1),L=ge(null),S=ge(null),T=ge(e);T.current=e;let N=ge(null);Se(()=>{if(r!=null&&i.current){let k=e.findIndex(P=>P.reportHubId===r);if(k!==-1){if(N.current?.id===r&&N.current?.index===k)return;i.current.scrollToIndex(k,{align:"top"}),N.current={id:r,index:k}}}else N.current=null},[r,e]);let V=ge(n);V.current=n,Se(()=>{if(i.current){let k=document.querySelector('[data-testid="daily-report-detail-list"]');if(k){let P=i.current,W=Object.assign({},P,{findReportIndex:q=>T.current.findIndex(K=>K.reportHubId===q),getReportItem:q=>T.current[q],selectItem:q=>V.current?.(q)});k.__virtualScroll=W}}});let O=e.length,M=Re(k=>k>=O?Dt:e[k],[e,O]),X=Re((k,P)=>{if(O===0)return;let W=Math.max(0,k),q=Math.min(O-1,P);if(W>q)return;let K=new Set;for(let C=W;C<=q;C++){let $=M(C);if($.businessDate&&K.add($.businessDate),K.size>=Pr)break}K.forEach(C=>{g(C)})},[M,O,g]),U=Re(({renderingStartIndex:k,renderingEndIndex:P,visibleStartIndex:W})=>{if(O===0)return;let q=M(W);q?.businessDate&&R(oe(q.businessDate)),X(k,P),X(P+1,P+Rt),X(k-Rt,k-1)},[M,O,X]),A=Re(()=>{i.current&&a&&a(i.current.getScrollPosition());let k=o.current;k&&(k.dataset.scrolling!=="true"&&(k.dataset.scrolling="true"),S.current&&clearTimeout(S.current),S.current=setTimeout(()=>{k&&delete k.dataset.scrolling,S.current=null},150))},[a]);Se(()=>()=>{i.current&&a&&a(i.current.getScrollPosition())},[a]);let Q=Re(k=>x(Ze,{...k,label:h,isWheelScrollActive:E}),[h,E]);Se(()=>{let k=o.current;if(!k)return;let P=()=>{_(!0),L.current&&clearTimeout(L.current),L.current=window.setTimeout(()=>{_(!1),L.current=null},wt)};return k.addEventListener("wheel",P,{passive:!0}),()=>{k.removeEventListener("wheel",P),L.current&&clearTimeout(L.current)}},[]);let ne=Re((k,P)=>{if(f(W=>{if(W.get(k)===P)return W;let q=new Map(W);return q.set(k,P),q}),i.current){let W=T.current.findIndex(q=>q.reportHubId===k);W!==-1&&i.current.updateItemSize(W,P)}},[]),de=Re(k=>{let P=M(k);return l.get(P.reportHubId)||350},[M,l]),ce=Re(k=>M(k).reportHubId,[M]);Se(()=>{O>=0&&D()},[O,D]),Se(()=>{O!==0&&X(0,Math.min(O-1,Rt))},[O,X]);let me=Re(k=>{let P=T.current.findIndex(W=>W.reportHubId===k);P>=0&&setTimeout(()=>i.current?.scrollToIndex(P,{align:"bottom"}),300)},[]),ee=Re(k=>x(Ls,{item:k,onHeightMeasured:ne,onCommentAdded:me,userId:t},k.reportHubId),[ne,me,t]);return F(_s,{children:[x("div",{ref:o,className:"flex min-h-0 flex-1 flex-col",children:x(Is,{ref:i,itemCount:O,getItem:M,getItemKey:ce,getItemHeight:de,viewportSize:p,initialScrollOffset:s,overscanCount:It,scrollBarOptions:{width:St,tapScrollCircleOptions:Ct,renderThumbOverlay:Q},behaviorOptions:{pointerDragInputs:Tt,wheelSpeedMultiplier:vt,inertiaOptions:xt},onRangeChange:U,onScroll:A,testId:"daily-report-detail-list",className:"relative w-full",children:ee})}),O===0&&x("div",{className:"py-8 text-center",children:x("p",{className:"text-slate-500",children:"\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093"})})]})},Es=()=>F("div",{className:"rounded-2xl border border-slate-200 bg-white p-4 shadow-sm",children:[F("div",{className:"mb-4 flex flex-wrap gap-2",children:[x("div",{className:"h-6 w-20 rounded-full bg-slate-200"}),x("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),x("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),x("div",{className:"h-6 w-28 rounded-full bg-slate-200"})]}),F("div",{className:"mb-3 grid gap-3 md:grid-cols-[minmax(0,1fr)_220px]",children:[F("div",{className:"space-y-3",children:[x("div",{className:"h-5 w-40 rounded bg-slate-200"}),x("div",{className:"h-5 w-56 rounded bg-slate-200"}),x("div",{className:"h-24 rounded-lg bg-slate-200"})]}),F("div",{className:"rounded-xl bg-slate-100 p-3",children:[x("div",{className:"mb-2 h-4 w-24 rounded bg-slate-200"}),x("div",{className:"mb-2 h-4 w-28 rounded bg-slate-200"}),x("div",{className:"h-4 w-32 rounded bg-slate-200"})]})]}),F("div",{className:"space-y-3",children:[x("div",{className:"h-4 w-24 rounded bg-slate-200"}),F("div",{className:"flex flex-wrap gap-2",children:[x("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),x("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),x("div",{className:"h-6 w-16 rounded-full bg-slate-200"})]}),F("div",{className:"space-y-2",children:[x("div",{className:"h-16 rounded-lg bg-slate-200"}),x("div",{className:"h-16 rounded-lg bg-slate-200"})]})]})]}),Ls=({item:e,onHeightMeasured:t,onCommentAdded:r,userId:n})=>{let{report:s,error:a,isLoading:l,isRefetching:f}=Ae(e.reportHubId,e.businessDate),{removeStaleItem:o}=be(),{draftLabelName:i}=Y(),[p,D]=qe(!1),[g,h]=qe(!1),R=ge(!1),E=ge(!1);f&&(E.current=!0),Se(()=>{!(s||l||f||a)&&E.current&&e.reportHubId>0&&o(e.reportHubId)},[s,l,f,a,e.reportHubId,o]);let _=s?.labels.some(S=>S.name===i),L=n&&s?.userId===n;return Se(()=>{s&&L&&_&&!p&&!g?(D(!0),R.current=!0):s&&!_&&p&&R.current&&(D(!1),R.current=!1)},[s,L,_,p,g]),x(Ns,{itemId:e.reportHubId,onHeightMeasured:t,children:a?x(Ms,{itemId:e.reportHubId}):s?p?x(kt,{report:s,onCancel:()=>{D(!1),h(!0)},onPublishSuccess:()=>{D(!1)}}):x(Hs,{item:e,report:s,onCommentAdded:r,userId:n,onDoubleClick:L?()=>D(!0):void 0}):x(Es,{})})},As=({report:e,isRead:t,isStarred:r,isMine:n,onToggleRead:s,onToggleStar:a,onDelete:l,itemSourceType:f,visitTimeDisplay:o,categoryLabel:i,fieldLabels:p})=>{let{sourceTypeConfigs:D}=Y();return F("div",{className:"flex flex-wrap items-center gap-2 font-medium text-slate-600 text-xs",children:[x(et,{count:e.attachments.length,label:p.attachments}),(()=>{let g=f??e?.sourceType,h=ke(g,D);return h?x("span",{className:z("inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",h.badgeClassName),children:h.label}):null})(),x("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:r?"\u30B9\u30BF\u30FC\u3092\u5916\u3059":"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B","data-detail-star-button":e.reportHubId,children:r?x(Ur,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):x(Ur,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),x("button",{type:"button",onClick:s,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?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","data-detail-read-button":e.reportHubId,children:t?x(Ss,{className:"h-3.5 w-3.5 text-blue-500"}):x(Ge,{className:"text-xs"})}),n&&x("button",{type:"button",onClick:l,"data-detail-delete-button":e.reportHubId,className:"text-lg leading-none transition-transform focus:outline-none active:scale-125",title:"\u524A\u9664\u3059\u308B",children:x(Cs,{className:"h-4 w-4 text-slate-300 hover:text-red-500"})}),F("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:[x("span",{className:"text-[10px] text-blue-500 uppercase tracking-wide",children:p.id}),e.reportHubId]}),F("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[x("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:p.businessDate}),oe(e.date)]}),F("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[x("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:p.author}),ae(e.employeeName)]}),F("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[x("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:p.visitTime}),o||"-"]}),F("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[x("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:p.updatedAt}),oe(e.updatedAt)]}),i&&F("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-amber-100 px-3 py-1 text-amber-700",children:[x("span",{className:"text-[10px] text-amber-500 uppercase tracking-wide",children:p.category}),i]})]})},Ps=({report:e,visitTimeDisplay:t,categoryLabel:r,fieldLabels:n})=>F("div",{className:"flex flex-col gap-3 rounded-xl bg-slate-100 p-4 text-slate-600 text-xs",children:[F("div",{className:"flex flex-col gap-1",children:[x("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.author}),x("span",{className:"text-slate-700 text-sm",children:ae(e.author)})]}),F("div",{className:"flex flex-col gap-1",children:[x("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.createdAt}),x("span",{className:"text-slate-700 text-sm",children:oe(e.createdAt)})]}),F("div",{className:"flex flex-col gap-1",children:[x("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.updatedBy}),x("span",{className:"text-slate-700 text-sm",children:ae(e.updatedBy)})]}),F("div",{className:"flex flex-col gap-1",children:[x("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.updatedAt}),x("span",{className:"text-slate-700 text-sm",children:oe(e.updatedAt)})]}),F("div",{className:"flex flex-col gap-1",children:[x("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.businessDate}),x("span",{className:"text-slate-700 text-sm",children:oe(e.date)})]}),t&&F("div",{className:"flex flex-col gap-1",children:[x("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.visitTime}),x("span",{className:"text-slate-700 text-sm",children:t})]}),r&&F("div",{className:"flex flex-col gap-1",children:[x("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.categoryInfo}),x("span",{className:"text-slate-700 text-sm",children:r})]})]}),Hs=({item:e,report:t,onCommentAdded:r,userId:n,onDoubleClick:s})=>{let a=ge(null),{toggleStar:l,toggleRead:f,pendingStarUpdates:o,pendingReadUpdates:i,deleteReport:p,user:D}=be(),{uiComments:g,handleAddComment:h,handleDeleteComment:R,pendingDeleteId:E,setPendingDeleteId:_,resolvedIdMap:L}=bt(t,D,n),{fieldLabels:S,sourceTypeConfigs:T}=Y(),N=e.sourceType??t?.sourceType,V=ke(N,T),O=N?N.toLowerCase()!=="internal":!1,M=V?.allowComment??!O,X=async P=>{await h(P),r?.(e.reportHubId)},U=o.current.has(t.reportHubId)?o.current.get(t.reportHubId)??!1:t.isStarred,A=i.current.has(t.reportHubId)?i.current.get(t.reportHubId)??!1:t.isRead,Q=!!(n&&t.userId===n),ne=async()=>{try{await f(t.reportHubId,!A,t.date??"")}catch{}},de=async()=>{try{await l(t.reportHubId,!U,t.date??"")}catch{}},ce=async()=>{confirm("\u672C\u5F53\u306B\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F")&&await p(t.reportHubId,t.date??"")},me=qt(()=>t.content?t.content.replace(/<br\s*\/??\s*>/gi,`
3
+ `).trim():"",[t.content]),ee=qt(()=>{let P=t.visitTimeFrom?.trim(),W=t.visitTimeTo?.trim();return P&&W?`${P} - ${W}`:P||W||""},[t.visitTimeFrom,t.visitTimeTo]),k=qt(()=>{let P=[];return t.category?.trim()&&P.push(`${S.category}: ${t.category}`),t.creationCategory?.trim()&&P.push(`${S.creationCategory}: ${t.creationCategory}`),P.join(" / ")},[t.category,t.creationCategory,S.category,S.creationCategory]);return x("div",{onDoubleClick:s,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 ${A?"":"border-l-4 border-l-blue-500"}`,children:F("div",{className:"flex flex-col gap-4",children:[x(As,{report:t,itemSourceType:e.sourceType,isRead:A,isStarred:U,isMine:Q,onToggleRead:ne,onToggleStar:de,onDelete:ce,visitTimeDisplay:ee,categoryLabel:k,fieldLabels:S}),F("div",{className:"grid gap-4 md:grid-cols-[minmax(0,1fr)_240px]",children:[F("div",{className:"flex flex-col gap-4",children:[F("div",{className:"grid gap-3 sm:grid-cols-2",children:[F("div",{className:"flex flex-col gap-1",children:[x("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:S.customer}),x("span",{className:"font-semibold text-base text-slate-900",children:ae(t.customerName)})]}),F("div",{className:"flex flex-col gap-1",children:[x("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:S.subject}),x("span",{className:"text-slate-700 text-sm",children:ae(t.subject)})]})]}),me&&F("div",{className:"flex flex-col gap-2",children:[x("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:S.content}),x("div",{className:"whitespace-pre-wrap rounded-xl bg-slate-50 p-3 text-slate-700 text-sm leading-relaxed",children:me})]}),t.interviewers.length>0&&F("div",{className:"flex flex-col gap-2",children:[x("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:S.interviewers}),x("ul",{className:"flex flex-wrap gap-2",children:t.interviewers.map(P=>x("li",{className:"rounded-full bg-slate-100 px-3 py-1 text-slate-600 text-xs",children:ks(P)},`${P.name}-${P.affiliation||""}`))})]}),x(nt,{attachments:t.attachments}),g.length>0&&F("div",{className:"flex flex-col gap-2",children:[x("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:S.comments}),x(at,{comments:g,reportHubId:t.reportHubId,businessDate:t.date??"",onDeleteComment:R,pendingDeleteId:E,onPendingDeleteIdChange:_,resolvedIdMap:L})]}),M&&x("div",{className:"mt-auto",ref:a,children:x(ot,{reportHubId:t.reportHubId,businessDate:t.date??"",onAddComment:X})})]}),x(Ps,{report:t,visitTimeDisplay:ee,categoryLabel:k,fieldLabels:S})]})]})})},Ms=({itemId:e})=>x("div",{className:"rounded-2xl border border-red-200 bg-red-50 p-4 text-red-700 text-sm",children:F("p",{children:["\u65E5\u5831 ",e.toLocaleString()," \u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"]})});import{RefreshCw as jr}from"lucide-react";import{useEffect as Os,useRef as Vr,useState as Fs}from"react";var Ke=(e,t=250)=>{let[r,n]=Fs(e),s=Vr(e),a=Vr(!0);return Os(()=>{if(a.current){a.current=!1,s.current=e,n(e);return}let l=s.current;if(l===e)return;let f=null,o=null,i=p=>{o===null&&(o=p);let D=Math.min(1,Math.max(0,(p-o)/t)),g=1-(1-D)**3,h=Math.round(l+(e-l)*g);s.current=h,n(h),D<1&&(f=requestAnimationFrame(i))};return f=requestAnimationFrame(i),()=>{f!==null&&cancelAnimationFrame(f)}},[e,t]),r};import{jsx as Et,jsxs as Lt}from"react/jsx-runtime";var At=()=>{let e=Pe(),t=Ke(e.loadedCount),r=Ke(e.totalCount??0);if(e.phase==="streaming"){let n=e.totalCount&&e.totalCount>0?Math.min(100,Math.round(e.loadedCount/e.totalCount*100)):null;return Lt("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:[Et("span",{"aria-hidden":"true",className:"h-1.5 w-1.5 animate-pulse rounded-full bg-blue-500 dark:bg-blue-400"}),"\u8AAD\u307F\u8FBC\u307F\u4E2D ",t.toLocaleString(),n!==null?` / ${r.toLocaleString()} (${n}%)`:" \u4EF6"]})}return e.phase==="retrying"?Lt("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:[Et(jr,{"aria-hidden":"true",className:"h-3 w-3 animate-spin"}),"\u518D\u63A5\u7D9A\u4E2D... (",e.loadedCount.toLocaleString()," \u4EF6\u53D7\u4FE1\u6E08)"]}):e.phase==="failed"?Lt("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:["\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F",Et("button",{type:"button","data-testid":"daily-report-ids-stream-retry",onClick:()=>pt(),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:"\u518D\u8A66\u884C"})]}):e.isRevalidating?Lt("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:[Et(jr,{"aria-hidden":"true",className:"h-3 w-3 animate-spin"}),"\u6700\u65B0\u5316\u4E2D"]}):null};import{SwipeCloseGuardContext as Vs,useSwipeGuardState as js,useSwipeToDismissOverlay as zs,useTapClick as Gr,useTransitionDisplay as Ws}from"@aiquants/swipe-overlay";import{VirtualScroll as Gs}from"@aiquants/virtualscroll";import{Check as qs,Star as Wr,Trash2 as Ks}from"lucide-react";import{useCallback as ye,useEffect as ie,useMemo as Yt,useRef as Z,useState as _e}from"react";import{useEffect as Bs,useState as Us}from"react";var $s="(max-width: 639px)",zr=()=>{let[e,t]=Us(!1);return Bs(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;let r=window.matchMedia($s),n=()=>t(r.matches);return n(),r.addEventListener("change",n),()=>r.removeEventListener("change",n)},[]),e};import*as he from"@radix-ui/react-tabs";import*as Pt from"react";import{jsx as Kt}from"react/jsx-runtime";var Ht=he.Root,Ye=Pt.forwardRef(({className:e,...t},r)=>Kt(he.List,{ref:r,className:z("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",e),...t}));Ye.displayName=he.List.displayName;var Xe=Pt.forwardRef(({className:e,...t},r)=>Kt(he.Trigger,{ref:r,className:z("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}));Xe.displayName=he.Trigger.displayName;var Me=Pt.forwardRef(({className:e,...t},r)=>Kt(he.Content,{ref:r,className:z("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}));Me.displayName=he.Content.displayName;import{Fragment as Yr,jsx as c,jsxs as G}from"react/jsx-runtime";var Ys=(e,t,r,n)=>{let[s,a]=_e(!1),[l,f]=_e(!1),o=Z(null),i=Z(null),p=Z(null),D=Yt(()=>t===null?null:r.find(R=>R.reportHubId===t)??null,[r,t]),g=e&&s&&D!==null;ie(()=>{if(g)f(!0);else{let R=setTimeout(()=>f(!1),300);return()=>clearTimeout(R)}},[g]),ie(()=>{if(!(typeof window>"u")){if(e&&s&&t!==null&&!o.current){let R=`overlay-${Date.now()}`;window.history.pushState({...window.history.state,dailyReportOverlay:R},"",window.location.href),o.current=R}else!(e&&s)&&o.current&&(o.current=null);return s?(p.current=document.body.style.overflow,document.body.style.overflow="hidden"):p.current!==null&&(document.body.style.overflow=p.current,p.current=null),()=>{p.current!==null&&(document.body.style.overflow=p.current)}}},[e,s,t]),ie(()=>{if(typeof window>"u")return;let R=()=>{o.current&&(i.current=t,o.current=null,a(!1),n(null))};return window.addEventListener("popstate",R),()=>window.removeEventListener("popstate",R)},[t,n]);let h=ye(()=>{e&&(i.current=t,a(!1),n(null),o.current&&typeof window<"u"&&(o.current=null,window.history.back()))},[e,t,n]);return{isMobileDetailOpen:s,setIsMobileDetailOpen:a,isOverlayMounted:l,shouldShowOverlay:g,handleOverlayClose:h,lastClosedItemIdRef:i,selectedItem:D}},Xs=(e,t,r,n,s)=>{let a=Z(null),l=Z(void 0);l.current!==e?.reportHubId&&(l.current=e?.reportHubId,a.current=null),ie(()=>{n||(a.current=null)},[n]);let f=ye(async(o=!1)=>{if(!e)return;o||(a.current=e.reportHubId);let i=!e.isRead;try{await s(e.reportHubId,i,e.date??"")}catch{}},[e,s]);return ie(()=>{if(r&&e&&!e.isRead&&!t){if(a.current===e.reportHubId)return;let o=setTimeout(()=>f(!0),500);return()=>clearTimeout(o)}},[e,t,r,f]),{handleToggleRead:f}},qr=({dailyReportItems:e,initialSelectedBusinessDate:t=null,initialSelectedReportHubId:r=null,autoMarkRead:n=!1,selectedReportHubId:s,onSelectItem:a,userId:l,initialScrollOffset:f,onScrollOffsetChange:o})=>{let i=Z(null),p=Z(null),{viewportHeight:D,updateViewportHeight:g}=gt(i),[h,R]=_e(""),[E,_]=_e(!1),L=zr(),S=Z(null),T=Z(null),N=e.length,V=Z(null),{isMobileDetailOpen:O,setIsMobileDetailOpen:M,isOverlayMounted:X,shouldShowOverlay:U,handleOverlayClose:A,lastClosedItemIdRef:Q,selectedItem:ne}=Ys(L,s,e,a),de=Yt(()=>Number.isFinite(D)&&D>0?{height:D}:void 0,[D]);ie(()=>{if(typeof window>"u")return;let C=()=>requestAnimationFrame(g);window.addEventListener("resize",C),g();let $=i.current,re=()=>{_(!0),S.current&&clearTimeout(S.current),S.current=window.setTimeout(()=>{_(!1),S.current=null},wt)};return $?.addEventListener("wheel",re,{passive:!0}),()=>{window.removeEventListener("resize",C),$?.removeEventListener("wheel",re),S.current&&clearTimeout(S.current)}},[g]),ie(()=>{if(!N){T.current=null,s!==null&&a(null);return}let C=`${r??""}|${t??""}`,$=(r??null)!==null||(t??null)!==null;if($||(T.current=null),$&&T.current!==C){let re=r&&e.find(De=>De.reportHubId===r)||t&&e.find(De=>De.businessDate===t);if(re){T.current=C,s!==re.reportHubId&&a(re.reportHubId);return}}},[e,t,r,s,N,a]),ie(()=>{if(L||O||Q.current===null)return;let C=Q.current;Q.current=null;let $=e.findIndex(re=>re.reportHubId===C);$>=0&&requestAnimationFrame(()=>p.current?.focusItemAtIndex($))},[O,L,e,Q]),ie(()=>{N>0&&R(C=>{let $=oe(e[0]?.businessDate);return C===$?C:$})},[e,N]);let ce=Z(e);ce.current=e,ie(()=>{if(p.current){let C=document.querySelector('[data-testid="daily-report-list"]');C&&(C.__virtualScroll={...p.current,findReportIndex:$=>ce.current.findIndex(re=>re.reportHubId===$),getReportIds:($=20)=>ce.current.slice(0,$).map(re=>re.reportHubId)})}});let me=ye(C=>{C<=0||(a(C),L&&M(!0))},[L,a,M]),ee=ye(C=>C<N?e[C]:Dt,[e,N]),k=ye(()=>Wt,[]),P=ye(C=>{let $=ee(C.visibleStartIndex);$?.reportHubId>0&&R(re=>{let De=oe($.businessDate);return re===De?re:De})},[ee]),W=ye(C=>{let $=ee(C);if($&&$.reportHubId>0){if($.reportHubId===s)return;a($.reportHubId)}},[ee,a,s]),q=ye(()=>{p.current&&o&&o(p.current.getScrollPosition());let C=i.current;C&&(C.dataset.scrolling!=="true"&&(C.dataset.scrolling="true"),V.current&&clearTimeout(V.current),V.current=setTimeout(()=>{C&&delete C.dataset.scrolling,V.current=null},150))},[o]);ie(()=>()=>{p.current&&o&&o(p.current.getScrollPosition())},[o]);let K=ye(C=>c(Ze,{...C,label:h,isWheelScrollActive:E}),[h,E]);return G(Yr,{children:[G("div",{className:"flex h-full min-h-0 gap-4",children:[c("div",{ref:i,className:"flex min-h-0 w-full sm:w-90",style:de,children:c(Gs,{ref:p,itemCount:N,getItem:ee,getItemHeight:k,viewportSize:D,initialScrollOffset:f,overscanCount:It,scrollBarOptions:{width:St,tapScrollCircleOptions:Ct,renderThumbOverlay:K},behaviorOptions:{pointerDragInputs:Tt,inertiaOptions:xt,wheelSpeedMultiplier:vt},onRangeChange:P,onScroll:q,onItemFocus:W,contentInsets:{top:yt,bottom:yt},testId:"daily-report-list",className:"relative w-full",children:C=>c(ta,{item:C,isActive:C.reportHubId===s,onSelect:me},C.reportHubId)})}),c(Kr,{dailyReportItems:e,selectedItem:ne,heightStyle:de,autoMarkRead:!L&&n,isActive:s!==null,userId:l})]}),N===0&&c("div",{className:"py-8 text-center",children:c("p",{className:"text-slate-500",children:"\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093"})}),X&&c(Zs,{isOpen:U,selectedItem:ne,onClose:A,autoMarkRead:L&&n,userId:l})]})},Js=()=>c("div",{className:"px-2 pb-3",style:{height:We},children:G("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:[G("div",{className:"mb-3 flex flex-wrap items-center gap-3",children:[c("div",{className:"h-4 w-24 rounded bg-slate-200"}),c("div",{className:"h-4 w-24 rounded bg-slate-200"}),c("div",{className:"h-4 w-24 rounded bg-slate-200"})]}),G("div",{className:"space-y-2",children:[c("div",{className:"h-4 w-full rounded bg-slate-200"}),c("div",{className:"h-4 w-11/12 rounded bg-slate-200"}),c("div",{className:"h-4 w-5/6 rounded bg-slate-200"})]})]})}),Kr=({dailyReportItems:e,selectedItem:t,heightStyle:r,autoMarkRead:n=!1,isActive:s=!0,userId:a})=>{let[l,f]=_e("article"),[o,i]=_e(!1),{draftLabelName:p,fieldLabels:D,sourceTypeConfigs:g}=Y(),{report:h,error:R,isLoading:E}=Ae(t?.reportHubId??-1,t?.businessDate??null),_=Z(null),L=Z(null),S=Z(!1);ie(()=>{if(!h)return;let U=h.labels.some(A=>A.name===p);h.reportHubId!==L.current?(L.current=h.reportHubId,U?(i(!0),S.current=!0):(i(!1),S.current=!1)):!U&&o&&S.current&&(i(!1),S.current=!1)},[h,o,p]);let T=!!(a&&h?.userId===a),N=ye(()=>{setTimeout(()=>{_.current&&_.current.scrollTo({top:_.current.scrollHeight,behavior:"smooth"})},100)},[]);if(e&&(e.length===0||!t))return c("aside",{className:"hidden min-h-0 min-w-0 flex-1 gap-3 rounded-2xl border border-slate-200 bg-white p-4 shadow-sm sm:block dark:border-slate-700 dark:bg-slate-900/70",style:r,children:c("div",{className:"flex 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:c("p",{children:"\u5DE6\u5074\u306E\u4E00\u89A7\u304B\u3089\u65E5\u5831\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002"})})});let V=oe(h?.date??t?.businessDate),O=h?.employeeName||h?.author?ae(h.employeeName??h.author):"",M=E||!h,X=G(Yr,{children:[G("div",{className:"space-y-1",children:[c("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:D.businessDate}),c("div",{className:"text-slate-900 text-sm dark:text-slate-100",children:V}),G("div",{className:"flex min-h-4 items-center gap-1 text-slate-500 text-xs dark:text-slate-300",children:[G("span",{children:[D.author,":"]}),M?c("div",{"data-skeleton":!0,className:"h-3 w-24 animate-pulse rounded bg-slate-200 dark:bg-slate-700"}):c("span",{children:O}),(()=>{let U=h?.sourceType,A=U?g?.[U]:void 0;return A?c("span",{className:z("ml-2 inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",A.badgeClassName),children:A.label}):null})()]})]}),G(Ht,{value:l,onValueChange:U=>f(U),className:"flex min-h-0 flex-1 flex-col",children:[c(Ye,{className:"grid grid-cols-2 gap-1 rounded-md bg-slate-100 p-1 text-xs dark:bg-slate-800",children:["article","relations"].map(U=>c(Xe,{value:U,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:U==="article"?D.tabArticle:D.tabRelations},U))}),c(Me,{ref:_,value:"article",className:"scrollbar-thin flex-1 touch-pan-y overflow-y-auto overflow-x-hidden pt-3 text-sm",children:o?h?c(kt,{report:h,onCancel:()=>i(!1),onPublishSuccess:()=>i(!1)}):c("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:"\u8AAD\u307F\u8FBC\u307F\u4E2D..."}):t&&c(Qs,{report:h,isLoading:E,error:R,selectedItem:t,autoMarkRead:n,isActive:s,onCommentAdded:N,userId:a,onDoubleClick:T?()=>i(!0):void 0})}),c(Me,{value:"relations",className:"scrollbar-thin flex-1 touch-pan-y overflow-y-auto pt-3 text-sm",children:c("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:D.relationsEmpty})})]})]});return e?c("aside",{"data-testid":"daily-report-side-pane","data-report-id":t?.reportHubId,className:"hidden min-h-0 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:X}):c("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:X})},Qs=({report:e,isLoading:t,error:r,selectedItem:n,autoMarkRead:s=!1,isActive:a=!0,onCommentAdded:l,userId:f,onDoubleClick:o})=>{let{toggleStar:i,toggleRead:p,deleteReport:D,user:g}=be(),{fieldLabels:h,sourceTypeConfigs:R}=Y(),{uiComments:E,handleAddComment:_,handleDeleteComment:L,pendingDeleteId:S,setPendingDeleteId:T,resolvedIdMap:N}=bt(e,g,f),{handleToggleRead:V}=Xs(e,t,s,a,p),O=n.sourceType??e?.sourceType,M=ke(O,R),X=O?O.toLowerCase()!=="internal":!1,U=M?.allowComment??!X,A=Z(null),Q=Z(E.length);ie(()=>{let C=e?.reportHubId??null;if(C!==A.current){A.current=C,Q.current=E.length;return}E.length>Q.current&&l?.(),Q.current=E.length},[E.length,e?.reportHubId,l]);let ne=async C=>{await _(C)},de=Yt(()=>e?.content?e.content.replace(/<br\s*\/?\s*>/gi,`
3
4
  `).replace(/<\/p>/gi,`
4
- `).replace(/<[^>]+>/g,""):null,[e]),ve=async()=>{if(!e)return;let Q=!e.isStarred;try{await i(e.reportHubId,Q,e.date??"")}catch{}},ce=async()=>{if(e&&confirm("\u672C\u5F53\u306B\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F"))try{await w(e.reportHubId,e.date??"")}catch{alert("\u524A\u9664\u306B\u5931\u6557\u3057\u307E\u3057\u305F")}};if(r)return m("p",{className:"text-red-500",children:r.message});let ne=!e,Y=e?.isStarred??!1,D=e?.isRead??!1,B=!!(d&&e?.userId===d),K=T.length>0,j=({className:Q="w-32"})=>m("div",{"data-skeleton":!0,className:`h-4 animate-pulse rounded bg-slate-200 dark:bg-slate-700 ${Q}`});return q("div",{className:"relative space-y-4 text-slate-700 dark:text-slate-200",onDoubleClick:l,children:[!ne&&e&&q("div",{className:"absolute top-0 right-2 z-10 flex items-center justify-end gap-3",children:[m("button",{type:"button",onClick:()=>O(!1),className:"text-lg leading-none transition-transform focus:outline-none active:scale-110",title:D?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","data-detail-read-button":e.reportHubId,children:D?m("span",{className:"text-slate-300 hover:text-blue-500",children:"\u2713"}):m(Ve,{className:"hover:text-blue-600"})}),m("button",{type:"button",onClick:ve,className:"text-lg leading-none transition-transform focus:outline-none active:scale-110",title:Y?"\u30B9\u30BF\u30FC\u3092\u5916\u3059":"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B","data-detail-star-button":e.reportHubId,children:Y?m("span",{className:"text-yellow-400",children:"\u2605"}):m("span",{className:"text-slate-300 hover:text-yellow-400",children:"\u2606"})}),B&&m("button",{type:"button",onClick:ce,"data-detail-delete-button":e.reportHubId,className:"text-lg leading-none transition-transform focus:outline-none active:scale-110",title:"\u524A\u9664\u3059\u308B",children:m(Wn,{className:"h-4 w-4 text-slate-300 hover:text-red-500"})})]}),q("div",{className:"flex items-baseline",children:[m("span",{className:"w-24 shrink-0 font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:b.subject}),m("div",{className:"flex-1 pr-20",children:ne?m(j,{className:"w-3/4"}):m("span",{className:"fade-in animate-in text-sm duration-500",children:se(e?.subject)})})]}),q("div",{className:"flex items-baseline",children:[m("span",{className:"w-24 shrink-0 font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:b.customer}),m("div",{className:"flex-1",children:ne?m(j,{className:"w-1/2"}):m("span",{className:"fade-in animate-in text-sm duration-500",children:se(e?.customerName)})})]}),q("div",{className:"space-y-2",children:[m("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:b.content}),m("div",{className:"min-h-22 rounded-lg bg-slate-50 p-3 text-sm leading-relaxed dark:bg-slate-800/40",children:ne?q("div",{className:"space-y-2",children:[m(j,{className:"w-full"}),m(j,{className:"w-11/12"}),m(j,{className:"w-4/5"})]}):de?m("div",{className:"fade-in animate-in whitespace-pre-wrap duration-500",children:de}):m("p",{className:"fade-in animate-in text-slate-500 duration-500 dark:text-slate-400",children:"\u5185\u5BB9\u306F\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"})})]}),q("div",{className:"flex items-baseline",children:[m("span",{className:"w-24 shrink-0 font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:b.visitTime}),m("div",{className:"flex-1",children:ne?m(j,{className:"w-1/3"}):q("span",{className:"fade-in animate-in text-sm duration-500",children:[se(e?.visitTimeFrom)," ",e?.visitTimeFrom&&e?.visitTimeTo?"-":""," ",se(e?.visitTimeTo)]})})]}),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:[m("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:b.comments}),K&&m(Xe,{comments:T,reportHubId:e.reportHubId,businessDate:e.date??"",onDeleteComment:k,pendingDeleteId:I,onPendingDeleteIdChange:S,resolvedIdMap:M}),H&&m(Je,{reportHubId:e.reportHubId,businessDate:e.date??"",onAddComment:re})]})]})},Qn=({isOpen:e,selectedItem:t,onClose:r,autoMarkRead:n=!1,userId:s})=>{let a=J(null),o=J(null),{isBlocked:d,requestBlock:l,reset:i}=Un(),{report:p,error:w,isLoading:y}=Le(t?.reportHubId??-1,t?.businessDate??null),b=Vn(e,t?{item:t,detail:{report:p,error:w,isLoading:y}}:null),N=b?.item??null;b?.detail??tr;let{overlayRef:L,overlayStyle:k,attemptClose:I,isSwiping:S}=$n({isOpen:e,onClose:r,isCloseBlocked:he(()=>d,[d]),skipWhenTextSelected:!0}),M=pr(()=>I());return oe(()=>{e?requestAnimationFrame(()=>o.current?.focus()):(a.current?.contains(document.activeElement)&&document.activeElement.blur(),i())},[e,i]),N?q("div",{ref:a,className:`fixed inset-0 z-50 flex touch-manipulation transition-[visibility] duration-200 sm:hidden ${e?"visible":"invisible"} ${e&&!S?"pointer-events-auto":"pointer-events-none"}`,"aria-hidden":!e,children:[m("button",{type:"button","aria-label":"\u80CC\u666F\u3092\u30BF\u30C3\u30D7\u3057\u3066\u9589\u3058\u308B",className:`absolute inset-0 touch-manipulation bg-slate-900/50 transition-opacity duration-200 focus:outline-none ${e?"opacity-100":"opacity-0"}`,...M}),m("aside",{role:"dialog","aria-modal":"true","aria-label":"\u65E5\u5831\u8A73\u7D30",className:`relative ml-auto flex h-full w-full max-w-full transform touch-none select-none bg-white shadow-xl transition-transform duration-200 ease-out dark:bg-slate-900/95 ${e?"pointer-events-auto":"pointer-events-none"}`,ref:L,onKeyDown:O=>{O.key==="Escape"&&(O.preventDefault(),I())},style:k,children:q("div",{className:"flex h-full w-full flex-col gap-3 p-4",children:[m(Bn.Provider,{value:{isBlocked:d,requestBlock:l},children:m(br,{selectedItem:N,autoMarkRead:n,isActive:e,userId:s})}),m("div",{className:"mt-2 flex justify-start",children:m("button",{type:"button",ref:o,"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:()=>I(),children:"\u9589\u3058\u308B"})})]})})]}):null},Xn=e=>e?e.replace(/<br\s*\/?\s*>/gi,`
5
+ `).replace(/<[^>]+>/g,""):null,[e]),ce=async()=>{if(!e)return;let C=!e.isStarred;try{await i(e.reportHubId,C,e.date??"")}catch{}},me=async()=>{if(e&&confirm("\u672C\u5F53\u306B\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F"))try{await D(e.reportHubId,e.date??"")}catch{alert("\u524A\u9664\u306B\u5931\u6557\u3057\u307E\u3057\u305F")}};if(r)return c("p",{className:"text-red-500",children:r.message});let ee=!e,k=e?.isStarred??!1,P=e?.isRead??!1,W=!!(f&&e?.userId===f),q=E.length>0,K=({className:C="w-32"})=>c("div",{"data-skeleton":!0,className:`h-4 animate-pulse rounded bg-slate-200 dark:bg-slate-700 ${C}`});return G("div",{className:"relative space-y-4 text-slate-700 dark:text-slate-200",onDoubleClick:o,children:[!ee&&e&&G("div",{className:"absolute top-0 right-2 z-10 flex items-center justify-end gap-3",children:[c("button",{type:"button",onClick:()=>V(!1),className:"text-lg leading-none transition-transform focus:outline-none active:scale-110",title:P?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","data-detail-read-button":e.reportHubId,children:P?c("span",{className:"text-slate-300 hover:text-blue-500",children:"\u2713"}):c(Ge,{className:"hover:text-blue-600"})}),c("button",{type:"button",onClick:ce,className:"text-lg leading-none transition-transform focus:outline-none active:scale-110",title:k?"\u30B9\u30BF\u30FC\u3092\u5916\u3059":"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B","data-detail-star-button":e.reportHubId,children:k?c("span",{className:"text-yellow-400",children:"\u2605"}):c("span",{className:"text-slate-300 hover:text-yellow-400",children:"\u2606"})}),W&&c("button",{type:"button",onClick:me,"data-detail-delete-button":e.reportHubId,className:"text-lg leading-none transition-transform focus:outline-none active:scale-110",title:"\u524A\u9664\u3059\u308B",children:c(Ks,{className:"h-4 w-4 text-slate-300 hover:text-red-500"})})]}),G("div",{className:"flex items-baseline",children:[c("span",{className:"w-24 shrink-0 font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:h.subject}),c("div",{className:"flex-1 pr-20",children:ee?c(K,{className:"w-3/4"}):c("span",{className:"fade-in animate-in text-sm duration-500",children:ae(e?.subject)})})]}),G("div",{className:"flex items-baseline",children:[c("span",{className:"w-24 shrink-0 font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:h.customer}),c("div",{className:"flex-1",children:ee?c(K,{className:"w-1/2"}):c("span",{className:"fade-in animate-in text-sm duration-500",children:ae(e?.customerName)})})]}),G("div",{className:"space-y-2",children:[c("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:h.content}),c("div",{className:"min-h-22 rounded-lg bg-slate-50 p-3 text-sm leading-relaxed dark:bg-slate-800/40",children:ee?G("div",{className:"space-y-2",children:[c(K,{className:"w-full"}),c(K,{className:"w-11/12"}),c(K,{className:"w-4/5"})]}):de?c("div",{className:"fade-in animate-in whitespace-pre-wrap duration-500",children:de}):c("p",{className:"fade-in animate-in text-slate-500 duration-500 dark:text-slate-400",children:"\u5185\u5BB9\u306F\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002"})})]}),G("div",{className:"flex items-baseline",children:[c("span",{className:"w-24 shrink-0 font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:h.visitTime}),c("div",{className:"flex-1",children:ee?c(K,{className:"w-1/3"}):G("span",{className:"fade-in animate-in text-sm duration-500",children:[ae(e?.visitTimeFrom)," ",e?.visitTimeFrom&&e?.visitTimeTo?"-":""," ",ae(e?.visitTimeTo)]})})]}),e&&c(nt,{attachments:e.attachments}),e&&G("div",{className:"fade-in animate-in space-y-2 border-slate-100 border-t pt-4 duration-500 dark:border-slate-800",children:[c("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:h.comments}),q&&c(at,{comments:E,reportHubId:e.reportHubId,businessDate:e.date??"",onDeleteComment:L,pendingDeleteId:S,onPendingDeleteIdChange:T,resolvedIdMap:N}),U&&c(ot,{reportHubId:e.reportHubId,businessDate:e.date??"",onAddComment:ne})]})]})},Zs=({isOpen:e,selectedItem:t,onClose:r,autoMarkRead:n=!1,userId:s})=>{let a=Z(null),l=Z(null),{isBlocked:f,requestBlock:o,reset:i}=js(),{report:p,error:D,isLoading:g}=Ae(t?.reportHubId??-1,t?.businessDate??null),h=Ws(e,t?{item:t,detail:{report:p,error:D,isLoading:g}}:null),R=h?.item??null;h?.detail??Hr;let{overlayRef:_,overlayStyle:L,attemptClose:S,isSwiping:T}=zs({isOpen:e,onClose:r,isCloseBlocked:ye(()=>f,[f]),skipWhenTextSelected:!0}),N=Gr(()=>S());return ie(()=>{e?requestAnimationFrame(()=>l.current?.focus()):(a.current?.contains(document.activeElement)&&document.activeElement.blur(),i())},[e,i]),R?G("div",{ref:a,className:`fixed inset-0 z-50 flex touch-manipulation transition-[visibility] duration-200 sm:hidden ${e?"visible":"invisible"} ${e&&!T?"pointer-events-auto":"pointer-events-none"}`,"aria-hidden":!e,children:[c("button",{type:"button","aria-label":"\u80CC\u666F\u3092\u30BF\u30C3\u30D7\u3057\u3066\u9589\u3058\u308B",className:`absolute inset-0 touch-manipulation bg-slate-900/50 transition-opacity duration-200 focus:outline-none ${e?"opacity-100":"opacity-0"}`,...N}),c("aside",{role:"dialog","aria-modal":"true","aria-label":"\u65E5\u5831\u8A73\u7D30",className:`relative ml-auto flex h-full w-full max-w-full transform touch-none select-none bg-white shadow-xl transition-transform duration-200 ease-out dark:bg-slate-900/95 ${e?"pointer-events-auto":"pointer-events-none"}`,ref:_,onKeyDown:V=>{V.key==="Escape"&&(V.preventDefault(),S())},style:L,children:G("div",{className:"flex h-full w-full flex-col gap-3 p-4",children:[c(Vs.Provider,{value:{isBlocked:f,requestBlock:o},children:c(Kr,{selectedItem:R,autoMarkRead:n,isActive:e,userId:s})}),c("div",{className:"mt-2 flex justify-start",children:c("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:"\u9589\u3058\u308B"})})]})})]}):null},ea=e=>e?e.replace(/<br\s*\/?\s*>/gi,`
5
6
  `).replace(/<\/p>/gi,`
6
- `).replace(/<[^>]+>/g,"").split(/\r?\n/).map(t=>t.replace(/\u3000/g," ").trim()).filter(t=>t.length>0).slice(0,sr):[],Jn=({item:e,isActive:t,onSelect:r})=>{let{sourceTypeConfigs:n}=X(),{toggleStar:s,toggleRead:a,removeStaleItem:o}=fe(),{report:d,error:l,isLoading:i,isRefetching:p}=Le(e.reportHubId,e.businessDate),w=J(!1);p&&(w.current=!0),oe(()=>{!(d||i||p||l)&&w.current&&e.reportHubId>0&&o(e.reportHubId)},[d,i,p,l,e.reportHubId,o]);let y=pr(()=>r(e.reportHubId));if(l)return m("div",{className:"px-2 pb-3",style:{height:$e},children:m("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",children:q("p",{children:["\u65E5\u5831 ",e.reportHubId.toLocaleString()," \u306E\u6982\u8981\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"]})})});if(i)return m(Yn,{});if(!d)return m("div",{className:"px-2 pb-3",style:{height:$e},children:m("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:m("p",{children:"\u65E5\u5831\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093"})})});let b=Xn(d.content??null).map((I,S)=>({line:I,key:`${e.reportHubId}-line-${S}`})),N=se(d.employeeName??d.author),T=ae(d.date),L=async I=>{I.stopPropagation();let S=!d.isStarred;try{await s(d.reportHubId,S,d.date??"")}catch{}},k=async I=>{I.stopPropagation();let S=!d.isRead;try{await a(d.reportHubId,S,d.date??"")}catch{}};return m("div",{className:"px-2 pb-3",style:{height:$e},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-all duration-200 hover:-translate-y-0.5 hover:border-blue-300 hover:shadow-lg dark:bg-slate-900/70 ${t?"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-pressed":t,...y,children:[q("div",{className:"mb-3 flex items-center gap-3 text-slate-600 text-sm",children:[m("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:m("span",{className:"whitespace-nowrap font-medium text-slate-900 dark:text-slate-100",children:T})}),m("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:m("span",{className:"truncate font-medium text-slate-900 dark:text-slate-100",children:N})}),q("div",{className:"ml-auto flex items-center gap-1.5",children:[(()=>{let I=e.sourceType??d?.sourceType,S=He(I,n);return S?m("span",{className:G("inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",S.badgeClassName),children:S.label}):null})(),m("button",{type:"button",title:d.isStarred?"\u30B9\u30BF\u30FC\u3092\u5916\u3059":"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B","data-list-star-button":e.reportHubId,onClick:L,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 dark:hover:bg-slate-700",children:d.isStarred?m(mr,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):m(mr,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),m("button",{type:"button",title:d.isRead?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","data-list-read-button":e.reportHubId,onClick:k,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 dark:hover:bg-slate-700",children:d.isRead?m(zn,{className:"h-3.5 w-3.5 text-blue-500"}):m(Ve,{className:"text-xs"})})]})]}),m("div",{className:"space-y-1 text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:b.length>0?b.map(({line:I,key:S})=>m("p",{className:"wrap-break-word line-clamp-1",children:I},S)):m("p",{children:"\u5185\u5BB9\u306F\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093"})})]})})};import{Suspense as is,useCallback as ls,useEffect as ds,useState as cs}from"react";import{Await as us,useRevalidator as ms}from"react-router";import{Plus as Zn,RefreshCw as es,RotateCw as ts}from"lucide-react";import{useCallback as xr,useEffect as rs,useMemo as ns,useRef as vr,useState as Rr}from"react";import{useSearchParams as ss}from"react-router";import*as Ge from"@radix-ui/react-switch";import*as hr from"react";import{jsx as yr}from"react/jsx-runtime";var gt=hr.forwardRef(({className:e,...t},r)=>yr(Ge.Root,{className:G("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:yr(Ge.Thumb,{className:G("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")})}));gt.displayName=Ge.Root.displayName;import{Fragment as os,jsx as te,jsxs as xe}from"react/jsx-runtime";var as="min-w-24 p-2 font-medium text-slate-600 text-xs transition-colors data-[state=active]:bg-white data-[state=active]:text-slate-900 sm:min-w-36 sm:text-sm dark:text-slate-300 dark:data-[state=active]:bg-slate-800 dark:data-[state=active]:text-slate-100",wr=({dailyReportItems:e,userId:t})=>{let[r,n]=Rr(!1),{title:s,renderHeader:a,showDevControls:o}=X(),{isSseEnabled:d,toggleSse:l,createReport:i,items:p,refetchData:w,clearCacheAndRefetch:y}=fe(),[b]=ss(),N=vr(0),T=vr(0),L=xr(H=>{N.current=H},[]),k=xr(H=>{T.current=H},[]),[I,S]=Rr(()=>p.length===0?null:p[0].reportHubId),M=async()=>{await w()},O=async()=>{await y()},A=async()=>{let H=b.get("businessDate"),F=new Date().toISOString().split("T")[0],re=await i(H||F);S(re)};rs(()=>{localStorage.getItem("daily-report-auto-read")==="true"&&n(!0)},[]);let $=H=>{n(H),localStorage.setItem("daily-report-auto-read",String(H))},V=ns(()=>[{value:"list",label:"\u{1F4C4} List",content:te(fr,{dailyReportItems:p,autoMarkRead:r,selectedReportHubId:I,onSelectItem:S,userId:t,initialScrollOffset:N.current,onScrollOffsetChange:L})},{value:"tree",label:"\u{1F333} Tree",content:te("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:"Tree \u30D3\u30E5\u30FC\u306F\u73FE\u5728\u6E96\u5099\u4E2D\u3067\u3059"})},{value:"detailList",label:"\u{1F4CB} DetailList",content:te(ur,{dailyReportItems:p,userId:t,selectedItemId:I,onSelectItem:S,initialScrollOffset:T.current,onScrollOffsetChange:k})}],[p,r,I,t,L,k]);return xe(os,{children:[a({title:s,annotation:xe("div",{className:"flex flex-wrap gap-2 leading-1",children:[xe("span",{children:["\u7DCF\u4EF6\u6570: ",p.length.toLocaleString()," \u4EF6"]}),xe("span",{children:["\u30C7\u30D0\u30A6\u30F3\u30B9: ",st," ms"]})]})}),te("div",{className:"h-full bg-slate-50 dark:bg-slate-500",children:te("div",{className:"flex h-full w-full max-w-6xl flex-1 flex-col p-1",children:xe(bt,{defaultValue:"list",className:"flex h-full flex-1 flex-col",children:[xe("div",{className:"flex items-center justify-between gap-2 rounded-md bg-slate-50 p-1 transition-colors dark:bg-slate-900/70 dark:text-slate-200",children:[te(ze,{className:"scrollbar-none flex w-full touch-pan-x flex-nowrap overflow-x-auto overflow-y-hidden bg-transparent p-0",children:V.map(({value:H,label:F})=>te(We,{value:H,className:as,children:F},H))}),xe("div",{className:"flex shrink-0 items-center space-x-1 px-2",children:[te(De,{variant:"ghost",size:"icon",onClick:A,title:"\u65E5\u5831\u3092\u4F5C\u6210",children:te(Zn,{className:"h-4 w-4"})}),o&&xe("div",{className:"hidden items-center space-x-1.5 rounded-md border border-amber-300 bg-amber-50 px-2 py-0.5 text-xs sm:flex dark:border-amber-700/50 dark:bg-amber-950/40",children:[te("span",{className:"rounded bg-amber-200 px-1 py-0.2 font-bold font-mono text-[10px] text-amber-900 dark:bg-amber-800 dark:text-amber-100",title:"\u958B\u767A\u74B0\u5883\u9650\u5B9A\u306E\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3067\u3059",children:"DEV"}),xe("div",{className:"flex items-center space-x-1",children:[te(gt,{id:"sse-mode",checked:d,onCheckedChange:l,className:"scale-75"}),te(Me,{htmlFor:"sse-mode",className:"cursor-pointer text-slate-600 text-xs dark:text-slate-300",title:"\u958B\u767A\u74B0\u5883\u306E\u307F: Real-time SSE \u8CFC\u8AAD\u5207\u308A\u66FF\u3048",children:"\u8CFC\u8AAD"})]}),xe(De,{variant:"ghost",size:"sm",onClick:M,className:"h-6 px-1.5 text-slate-700 text-xs hover:bg-amber-200 dark:text-slate-200 dark:hover:bg-amber-800",title:"\u958B\u767A\u74B0\u5883\u306E\u307F: \u30DA\u30FC\u30B8\u30EA\u30ED\u30FC\u30C9\u306A\u3057\u3067\u30C7\u30FC\u30BF\u306E\u307F\u518D\u53D6\u5F97",children:[te(ts,{className:"mr-1 h-3 w-3"}),"\u30EA\u30ED\u30FC\u30C9"]}),xe(De,{variant:"ghost",size:"sm",onClick:O,className:"h-6 px-1.5 text-amber-800 text-xs hover:bg-amber-200 dark:text-amber-300 dark:hover:bg-amber-800",title:"\u958B\u767A\u74B0\u5883\u306E\u307F: \u30B5\u30FC\u30D0\u30FC/DB & \u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u306E\u30AD\u30E3\u30C3\u30B7\u30E5\u3092\u7834\u68C4\u3057\u3066\u30C7\u30FC\u30BF\u518D\u53D6\u5F97",children:[te(es,{className:"mr-1 h-3 w-3"}),"\u30AD\u30E3\u30C3\u30B7\u30E5\u30AF\u30EA\u30A2"]})]}),te(gt,{id:"auto-read-mode",checked:r,onCheckedChange:$,className:"scale-75"}),te(Me,{htmlFor:"auto-read-mode",className:"cursor-pointer text-slate-500 text-xs",children:"\u81EA\u52D5\u65E2\u8AAD"})]})]}),V.map(({value:H,content:F})=>te(Ae,{value:H,className:"mt-0 flex h-full min-h-0 flex-1 flex-col",children:F},H))]})})})]})};import{Fragment as Ir,jsx as Z,jsxs as qe}from"react/jsx-runtime";var ps=({dailyReportItems:e,userId:t,onResolved:r})=>(ds(()=>{r(e)},[e,r]),Z(wr,{dailyReportItems:e,userId:t})),fs=()=>{let{title:e,renderHeader:t}=X(),{revalidate:r}=ms();return qe(Ir,{children:[t({title:e,annotation:Z("span",{className:"font-bold text-red-500",children:"Error"})}),Z("div",{className:"h-full bg-slate-50 p-2",children:Z("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:qe("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:[Z("p",{className:"font-medium text-red-600",children:"\u65E5\u5831\u30C7\u30FC\u30BF\u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"}),Z("button",{type:"button",onClick:()=>r(),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:"\u518D\u8AAD\u307F\u8FBC\u307F"})]})})})]})},Dr=()=>{let{title:e,renderHeader:t}=X();return qe(Ir,{children:[t({title:e,annotation:qe("div",{className:"flex flex-wrap gap-2 leading-none",children:[Z("span",{children:"\u7DCF\u4EF6\u6570: \u8AAD\u307F\u8FBC\u307F\u4E2D..."}),qe("span",{children:["\u30C7\u30D0\u30A6\u30F3\u30B9: ",st," ms"]})]})}),Z("div",{className:"h-full bg-slate-50 p-2",children:Z("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:Z("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:"\u65E5\u5831 ID \u3092\u8AAD\u307F\u8FBC\u307F\u4E2D\u3067\u3059..."})})})]})},bs=({user:e,userId:t,dailyReportIds:r})=>{let[n,s]=cs([]),a=ls(o=>{s(o)},[]);return Z(Jt,{user:e,initialItems:n,userId:t,children:Z(is,{fallback:Z(Dr,{}),children:r?Z(us,{resolve:r,errorElement:Z(fs,{}),children:o=>{if(!o)throw new Error("Daily report ids resolve must not be null");return Z(ps,{dailyReportItems:o,userId:t,onResolved:a})}}):Z(Dr,{})})})},Yo=({config:e,...t})=>Z(Mt,{config:e,children:Z(bs,{...t})});var Jo=({actionResult:e,actionStatus:t,currentUrl:r,defaultShouldRevalidate:n,formAction:s,formData:a,formEncType:o,formMethod:d,json:l,nextUrl:i,text:p})=>{if(!n)return!1;if(!(r.pathname===i.pathname&&r.search===i.search&&r.hash===i.hash))return n;if(a){let b=a.get("intent");if(b==="toggleRead"||b==="toggleStar"||b==="addComment"||b==="deleteComment"||b==="create"||b==="update"||b==="publish"||b==="delete")return!1}return e!==void 0||t!==void 0||s!==void 0||a!==void 0||o!==void 0||d!==void 0||l!==void 0||p!==void 0?n:!1},gs=(e=Ze.apiBasePath,t=!1)=>{let r=new URL(`${e}/ids`,typeof window<"u"?window.location.origin:"http://localhost");return t&&(r.searchParams.set("forceRefresh","true"),r.searchParams.set("_t",Date.now().toString())),fetch(r.toString(),{method:"GET",headers:{"Content-Type":"application/json"},cache:"no-cache"}).then(async n=>{if(!n.ok)throw new Error(`Failed to fetch daily report ids: ${n.status} ${n.statusText}`);return n}).then(async n=>n.json()).then(n=>{if(!(n.ids&&Array.isArray(n.ids)))throw new Error("Invalid daily report ids response");return n.ids})},Zo=e=>{let t=async r=>{let n=gs(e?.apiBasePath);return{...await r.serverLoader(),dailyReportIds:n}};return t.hydrate=!0,t};export{Ke as BusinessDayThumbOverlay,st as DAILY_REPORT_FETCH_DEBOUNCE_MS,wt as DEFAULT_ITEM_HEIGHT,Jt as DailyReportActionProvider,P as DailyReportCache,Je as DailyReportCommentForm,kt as DailyReportCommentItem,Xe as DailyReportCommentList,Mt as DailyReportConfigProvider,ur as DailyReportDetailList,mt as DailyReportEditForm,fr as DailyReportList,fs as DailyReportLoadError,Dr as DailyReportLoading,Yo as DailyReportPage,wr as DailyReportResolvedContent,tr as EMPTY_DETAIL,dt as EMPTY_ITEM,it as FAST_SCROLL_INERTIA_OPTIONS,ot as FAST_SCROLL_WHEEL_MULTIPLIER,$e as ITEM_CONTAINER_HEIGHT,at as ITEM_VERTICAL_PADDING,sr as MAX_PREVIEW_LINES,lt as PREFETCH_LOOKAHEAD,er as PREFETCH_MAX_DATES,nr as SCROLL_BAR_WIDTH,ar as TAP_SCROLL_CIRCLE_OPTIONS,Ve as UnreadIndicator,ct as VIRTUAL_SCROLL_OVERSCAN_COUNT,rr as WHEEL_RESET_TIMEOUT_MS,_e as acquireMutationLock,Ce as applyDailyReportServerUpdates,jt as clearDailyReportCache,Zo as createDailyReportClientLoader,Jo as dailyReportShouldRevalidate,Ze as defaultDailyReportClientConfig,Pt as defaultDailyReportFieldLabels,tt as deleteDailyReportCache,gs as fetchDailyReportIds,ue as getCachedReport,zt as registerRecentDeletion,Fe as releaseMutationLock,He as resolveSourceTypeConfig,Wt as subscribeCacheReady,me as updateDailyReportCache,fe as useDailyReportActionContext,rt as useDailyReportComments,X as useDailyReportConfig,Le as useDailyReportDetail,qt as useDailyReportPrefetch,Qt as useDailyReportSseConnection,nt as useDynamicViewportHeight,Vt as writeCache};
7
+ `).replace(/<[^>]+>/g,"").split(/\r?\n/).map(t=>t.replace(/\u3000/g," ").trim()).filter(t=>t.length>0).slice(0,Mr):[],ta=({item:e,isActive:t,onSelect:r})=>{let{fieldLabels:n,sourceTypeConfigs:s}=Y(),{toggleStar:a,toggleRead:l,removeStaleItem:f}=be(),{report:o,error:i,isLoading:p,isRefetching:D}=Ae(e.reportHubId,e.businessDate),g=Z(!1);D&&(g.current=!0),ie(()=>{!(o||p||D||i)&&g.current&&e.reportHubId>0&&f(e.reportHubId)},[o,p,D,i,e.reportHubId,f]);let h=Gr(()=>r(e.reportHubId));if(i)return c("div",{className:"px-2 pb-3",style:{height:We},children:c("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",children:G("p",{children:["\u65E5\u5831 ",e.reportHubId.toLocaleString()," \u306E\u6982\u8981\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"]})})});if(p)return c(Js,{});if(!o)return c("div",{className:"px-2 pb-3",style:{height:We},children:c("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:c("p",{children:"\u65E5\u5831\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093"})})});let R=ea(o.content??null).map((T,N)=>({line:T,key:`${e.reportHubId}-line-${N}`})),E=ae(o.employeeName??o.author),_=oe(o.date),L=async T=>{T.stopPropagation();let N=!o.isStarred;try{await a(o.reportHubId,N,o.date??"")}catch{}},S=async T=>{T.stopPropagation();let N=!o.isRead;try{await l(o.reportHubId,N,o.date??"")}catch{}};return c("div",{className:"px-2 pb-3",style:{height:We},children:G("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-all duration-200 hover:-translate-y-0.5 hover:border-blue-300 hover:shadow-lg dark:bg-slate-900/70 ${t?"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-pressed":t,...h,children:[G("div",{className:"mb-3 flex items-center gap-3 text-slate-600 text-sm",children:[c("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:c("span",{className:"whitespace-nowrap font-medium text-slate-900 dark:text-slate-100",children:_})}),c("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:c("span",{className:"truncate font-medium text-slate-900 dark:text-slate-100",children:E})}),G("div",{className:"ml-auto flex items-center gap-1.5",children:[c(et,{count:o.attachments.length,label:n.attachments}),(()=>{let T=e.sourceType??o?.sourceType,N=ke(T,s);return N?c("span",{className:z("inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",N.badgeClassName),children:N.label}):null})(),c("button",{type:"button",title:o.isStarred?"\u30B9\u30BF\u30FC\u3092\u5916\u3059":"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B","data-list-star-button":e.reportHubId,onClick:L,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 dark:hover:bg-slate-700",children:o.isStarred?c(Wr,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):c(Wr,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),c("button",{type:"button",title:o.isRead?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","data-list-read-button":e.reportHubId,onClick:S,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 dark:hover:bg-slate-700",children:o.isRead?c(qs,{className:"h-3.5 w-3.5 text-blue-500"}):c(Ge,{className:"text-xs"})})]})]}),c("div",{className:"space-y-1 text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:R.length>0?R.map(({line:T,key:N})=>c("p",{className:"wrap-break-word line-clamp-1",children:T},N)):c("p",{children:"\u5185\u5BB9\u306F\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093"})})]})})};import{useEffect as rn}from"react";import{Plus as ra,RefreshCw as na,RotateCw as sa}from"lucide-react";import{useCallback as Qr,useEffect as Zr,useMemo as aa,useRef as Xt,useState as en}from"react";import{useSearchParams as oa}from"react-router";import*as Je from"@radix-ui/react-switch";import*as Jr from"react";import{jsx as Xr}from"react/jsx-runtime";var Mt=Jr.forwardRef(({className:e,...t},r)=>Xr(Je.Root,{className:z("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:Xr(Je.Thumb,{className:z("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")})}));Mt.displayName=Je.Root.displayName;import{Fragment as la,jsx as te,jsxs as ve}from"react/jsx-runtime";var ia="min-w-24 p-2 font-medium text-slate-600 text-xs transition-colors data-[state=active]:bg-white data-[state=active]:text-slate-900 sm:min-w-36 sm:text-sm dark:text-slate-300 dark:data-[state=active]:bg-slate-800 dark:data-[state=active]:text-slate-100",tn=({userId:e})=>{let[t,r]=en(!1),{title:n,renderHeader:s,showDevControls:a}=Y(),{isSseEnabled:l,toggleSse:f,createReport:o,items:i,refetchData:p,clearCacheAndRefetch:D}=be(),[g]=oa(),h=Ke(i.length),R=Xt(0),E=Xt(0),_=Qr(A=>{R.current=A},[]),L=Qr(A=>{E.current=A},[]),[S,T]=en(()=>i.length===0?null:i[0].reportHubId),N=Xt(!1);Zr(()=>{!N.current&&i.length>0&&(N.current=!0,T(A=>A??i[0].reportHubId))},[i]);let V=async()=>{await p()},O=async()=>{await D()},M=async()=>{let A=g.get("businessDate"),Q=new Date().toISOString().split("T")[0],de=await o(A||Q);T(de)};Zr(()=>{localStorage.getItem("daily-report-auto-read")==="true"&&r(!0)},[]);let X=A=>{r(A),localStorage.setItem("daily-report-auto-read",String(A))},U=aa(()=>[{value:"list",label:"\u{1F4C4} List",content:te(qr,{dailyReportItems:i,autoMarkRead:t,selectedReportHubId:S,onSelectItem:T,userId:e,initialScrollOffset:R.current,onScrollOffsetChange:_})},{value:"tree",label:"\u{1F333} Tree",content:te("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:"Tree \u30D3\u30E5\u30FC\u306F\u73FE\u5728\u6E96\u5099\u4E2D\u3067\u3059"})},{value:"detailList",label:"\u{1F4CB} DetailList",content:te($r,{dailyReportItems:i,userId:e,selectedItemId:S,onSelectItem:T,initialScrollOffset:E.current,onScrollOffsetChange:L})}],[i,t,S,e,_,L]);return ve(la,{children:[s({title:n,annotation:ve("div",{className:"flex flex-wrap items-center gap-2 leading-1",children:[te(At,{}),ve("span",{className:"tabular-nums",children:["\u7DCF\u4EF6\u6570: ",h.toLocaleString()," \u4EF6"]}),ve("span",{children:["\u30C7\u30D0\u30A6\u30F3\u30B9: ",ht," ms"]})]})}),te("div",{className:"h-full bg-slate-50 dark:bg-slate-500",children:te("div",{className:"flex h-full w-full max-w-6xl flex-1 flex-col p-1",children:ve(Ht,{defaultValue:"list",className:"flex h-full flex-1 flex-col",children:[ve("div",{className:"flex items-center justify-between gap-2 rounded-md bg-slate-50 p-1 transition-colors dark:bg-slate-900/70 dark:text-slate-200",children:[te(Ye,{className:"scrollbar-none flex w-full touch-pan-x flex-nowrap overflow-x-auto overflow-y-hidden bg-transparent p-0",children:U.map(({value:A,label:Q})=>te(Xe,{value:A,className:ia,children:Q},A))}),ve("div",{className:"flex shrink-0 items-center space-x-1 px-2",children:[te(Ie,{variant:"ghost",size:"icon",onClick:M,title:"\u65E5\u5831\u3092\u4F5C\u6210",children:te(ra,{className:"h-4 w-4"})}),a&&ve("div",{className:"hidden items-center space-x-1.5 rounded-md border border-amber-300 bg-amber-50 px-2 py-0.5 text-xs sm:flex dark:border-amber-700/50 dark:bg-amber-950/40",children:[te("span",{className:"rounded bg-amber-200 px-1 py-0.2 font-bold font-mono text-[10px] text-amber-900 dark:bg-amber-800 dark:text-amber-100",title:"\u958B\u767A\u74B0\u5883\u9650\u5B9A\u306E\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB\u3067\u3059",children:"DEV"}),ve("div",{className:"flex items-center space-x-1",children:[te(Mt,{id:"sse-mode",checked:l,onCheckedChange:f,className:"scale-75"}),te(He,{htmlFor:"sse-mode",className:"cursor-pointer text-slate-600 text-xs dark:text-slate-300",title:"\u958B\u767A\u74B0\u5883\u306E\u307F: Real-time SSE \u8CFC\u8AAD\u5207\u308A\u66FF\u3048",children:"\u8CFC\u8AAD"})]}),ve(Ie,{variant:"ghost",size:"sm",onClick:V,className:"h-6 px-1.5 text-slate-700 text-xs hover:bg-amber-200 dark:text-slate-200 dark:hover:bg-amber-800",title:"\u958B\u767A\u74B0\u5883\u306E\u307F: \u30DA\u30FC\u30B8\u30EA\u30ED\u30FC\u30C9\u306A\u3057\u3067\u30C7\u30FC\u30BF\u306E\u307F\u518D\u53D6\u5F97",children:[te(sa,{className:"mr-1 h-3 w-3"}),"\u30EA\u30ED\u30FC\u30C9"]}),ve(Ie,{variant:"ghost",size:"sm",onClick:O,className:"h-6 px-1.5 text-amber-800 text-xs hover:bg-amber-200 dark:text-amber-300 dark:hover:bg-amber-800",title:"\u958B\u767A\u74B0\u5883\u306E\u307F: \u30B5\u30FC\u30D0\u30FC/DB & \u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u306E\u30AD\u30E3\u30C3\u30B7\u30E5\u3092\u7834\u68C4\u3057\u3066\u30C7\u30FC\u30BF\u518D\u53D6\u5F97",children:[te(na,{className:"mr-1 h-3 w-3"}),"\u30AD\u30E3\u30C3\u30B7\u30E5\u30AF\u30EA\u30A2"]})]}),te(Mt,{id:"auto-read-mode",checked:t,onCheckedChange:X,className:"scale-75"}),te(He,{htmlFor:"auto-read-mode",className:"cursor-pointer text-slate-500 text-xs",children:"\u81EA\u52D5\u65E2\u8AAD"})]})]}),U.map(({value:A,content:Q})=>te(Me,{value:A,className:"mt-0 flex h-full min-h-0 flex-1 flex-col",children:Q},A))]})})})]})};import{Fragment as nn,jsx as se,jsxs as Qe}from"react/jsx-runtime";var da=()=>{let{title:e,renderHeader:t}=Y();return Qe(nn,{children:[t({title:e,annotation:se("span",{className:"font-bold text-red-500",children:"Error"})}),se("div",{className:"h-full bg-slate-50 p-2",children:se("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:Qe("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:[se("p",{className:"font-medium text-red-600",children:"\u65E5\u5831\u30C7\u30FC\u30BF\u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"}),se("button",{type:"button","data-testid":"daily-report-load-error-retry",onClick:()=>pt(),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:"\u518D\u8AAD\u307F\u8FBC\u307F"})]})})})]})},ua=()=>{let{title:e,renderHeader:t}=Y();return Qe(nn,{children:[t({title:e,annotation:Qe("div",{className:"flex flex-wrap items-center gap-2 leading-none",children:[se(At,{}),se("span",{children:"\u7DCF\u4EF6\u6570: \u8AAD\u307F\u8FBC\u307F\u4E2D..."}),Qe("span",{children:["\u30C7\u30D0\u30A6\u30F3\u30B9: ",ht," ms"]})]})}),se("div",{className:"h-full bg-slate-50 p-2",children:se("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:se("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:"\u65E5\u5831 ID \u3092\u8AAD\u307F\u8FBC\u307F\u4E2D\u3067\u3059..."})})})]})},ca=({user:e,userId:t})=>{let{apiBasePath:r}=Y(),n=Pe();rn(()=>{ut({apiBasePath:r,userKey:t??null})},[r,t]),rn(()=>{n.phase==="auth-required"&&Cr()},[n.phase]);let s=n.items.length>0||n.phase==="complete";return se(Lr,{user:e,initialItems:n.items,userId:t,children:s?se(tn,{userId:t}):n.phase==="failed"?se(da,{}):se(ua,{})},t??"anonymous")},Rl=({config:e,...t})=>se(rr,{config:e,children:se(ca,{...t})});var Sl=({actionResult:e,actionStatus:t,currentUrl:r,defaultShouldRevalidate:n,formAction:s,formData:a,formEncType:l,formMethod:f,json:o,nextUrl:i,text:p})=>{if(!n)return!1;if(!(r.pathname===i.pathname&&r.search===i.search&&r.hash===i.hash))return n;if(a){let h=a.get("intent");if(h==="toggleRead"||h==="toggleStar"||h==="addComment"||h==="deleteComment"||h==="create"||h==="update"||h==="publish"||h==="delete")return!1}return e!==void 0||t!==void 0||s!==void 0||a!==void 0||l!==void 0||f!==void 0||o!==void 0||p!==void 0?n:!1},Cl=e=>{let t=async r=>{Nr();let n=await r.serverLoader(),s=n.userId;return Tr({apiBasePath:e?.apiBasePath,userKey:typeof s=="string"?s:null}),n};return t.hydrate=!0,t};export{Ze as BusinessDayThumbOverlay,Tt as CONTENT_DRAG_POINTER_INPUTS,ht as DAILY_REPORT_FETCH_DEBOUNCE_MS,Wt as DEFAULT_ITEM_HEIGHT,Lr as DailyReportActionProvider,et as DailyReportAttachmentIndicator,nt as DailyReportAttachmentList,H as DailyReportCache,ot as DailyReportCommentForm,or as DailyReportCommentItem,at as DailyReportCommentList,rr as DailyReportConfigProvider,$r as DailyReportDetailList,kt as DailyReportEditForm,dt as DailyReportIdsStreamClient,At as DailyReportIdsStreamStatus,qr as DailyReportList,da as DailyReportLoadError,ua as DailyReportLoading,Rl as DailyReportPage,tn as DailyReportResolvedContent,Hr as EMPTY_DETAIL,Dt as EMPTY_ITEM,xt as FAST_SCROLL_INERTIA_OPTIONS,vt as FAST_SCROLL_WHEEL_MULTIPLIER,We as ITEM_CONTAINER_HEIGHT,yt as ITEM_VERTICAL_PADDING,Mr as MAX_PREVIEW_LINES,Rt as PREFETCH_LOOKAHEAD,Pr as PREFETCH_MAX_DATES,St as SCROLL_BAR_WIDTH,Ct as TAP_SCROLL_CIRCLE_OPTIONS,Ge as UnreadIndicator,It as VIRTUAL_SCROLL_OVERSCAN_COUNT,wt as WHEEL_RESET_TIMEOUT_MS,Ue as acquireMutationLock,Ce as applyDailyReportServerUpdates,Tr as bootstrapDailyReportIdsStreamSession,Be as clearDailyReportCache,Cl as createDailyReportClientLoader,Sl as dailyReportShouldRevalidate,tt as defaultDailyReportClientConfig,er as defaultDailyReportFieldLabels,lt as deleteDailyReportCache,ut as ensureDailyReportIdsStreamSession,pe as getCachedReport,kr as getDailyReportIdsStreamSessionUserKey,Nr as primeDailyReportIdsStreamSession,jt as refreshDailyReportIdsStream,hr as registerRecentDeletion,$e as releaseMutationLock,Cr as reloadDocument,mt as removeDailyReportIdsStreamItem,oo as resetDailyReportIdsStreamSessionForTesting,ke as resolveSourceTypeConfig,pt as retryDailyReportIdsStream,yr as subscribeCacheReady,fe as updateDailyReportCache,je as upsertDailyReportIdsStreamItem,Ke as useAnimatedNumber,be as useDailyReportActionContext,bt as useDailyReportComments,Y as useDailyReportConfig,Ae as useDailyReportDetail,Pe as useDailyReportIdsStream,xr as useDailyReportPrefetch,wr as useDailyReportSseConnection,gt as useDynamicViewportHeight,gr as writeCache};
7
8
  //# sourceMappingURL=client.mjs.map