@aiquants/daily-report 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.mjs CHANGED
@@ -1,8 +1,8 @@
1
- import{jsx as Ft}from"react/jsx-runtime";var Je=({orientation:e,thumbCenter:t,label:r,isDragging:n,isTapScrollActive:s,isWheelScrollActive:a})=>r.trim()&&(n||s||a)?Ft("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:Ft("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:Ft("span",{className:"whitespace-nowrap font-semibold text-slate-800 dark:text-slate-100",children:r.trim()})})}):null;import{Paperclip as Tn}from"lucide-react";import{jsx as ar,jsxs as kn}from"react/jsx-runtime";var Nn=2,Qe=({count:e,label:t})=>e<=0?null:kn("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:[ar(Tn,{className:"h-3.5 w-3.5","aria-hidden":"true"}),e>=Nn&&ar("span",{className:"font-semibold text-[10px] leading-none",children:e})]});import{createContext as En,useContext as Ln,useMemo as Pn}from"react";import{jsx as Bt,jsxs as An}from"react/jsx-runtime";var or={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."},Ze={title:"Daily Reports",apiBasePath:"/daily_report/api",ssePath:"/sse/daily_report/updates",draftLabelName:"draft",fieldLabels:or,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})=>An("header",{className:"flex flex-wrap items-baseline justify-between gap-2 px-2 py-1",children:[Bt("span",{className:"text-nowrap text-slate-700 text-sm dark:text-slate-200",children:e}),t?Bt("span",{className:"text-slate-600 text-xs dark:text-slate-300",children:t}):null]}),showDevControls:!1},ir=En(Ze),lr=({config:e,children:t})=>{let r=Pn(()=>({...Ze,...e,fieldLabels:{...or,...e?.fieldLabels??{}}}),[e]);return Bt(ir.Provider,{value:r,children:t})},j=()=>Ln(ir),Te=(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 _e,jsxs as et}from"react/jsx-runtime";var dr=1024,Ut=["B","KB","MB","GB"],Mn=e=>{if(e===null||!Number.isFinite(e)||e<0)return null;let t=e,r=0;for(;t>=dr&&r<Ut.length-1;)t/=dr,r+=1;return r===0?`${t} ${Ut[r]}`:`${t.toFixed(1)} ${Ut[r]}`},tt=({attachments:e})=>{let{apiBasePath:t,fieldLabels:r}=j();return e.length===0?null:et("div",{className:"flex flex-col gap-2","data-testid":"daily-report-attachment-section",children:[_e("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:r.attachments}),_e("ul",{className:"flex flex-col gap-1.5",children:e.map(n=>{let s=`${t}/attachment/${n.id}`,a=Mn(n.fileSize),o=n.state==="absent";return et("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:[et("div",{className:"flex min-w-0 flex-col",children:[o?_e("span",{className:"truncate text-slate-400 text-sm line-through dark:text-slate-500","data-testid":"daily-report-attachment-name",children:n.fileName}):_e("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}),et("span",{className:"text-[10px] text-slate-400 dark:text-slate-500",children:[a??"\u2014",o&&` \xB7 ${r.attachmentMissing}`]})]}),!o&&_e("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 On}from"@heroicons/react/24/outline";import{useState as Fn}from"react";var ur=(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]},cr=e=>{if(!e)return"text-gray-700 dark:text-gray-300";let t=e.toLowerCase();return t.includes("red")||t.includes("\u8D64")?"text-red-600 dark:text-red-400":t.includes("green")||t.includes("\u7DD1")?"text-green-600 dark:text-green-400":t.includes("blue")||t.includes("\u9752")?"text-blue-600 dark:text-blue-400":t.includes("yellow")||t.includes("\u9EC4")?"text-yellow-600 dark:text-yellow-400":t.includes("orange")||t.includes("\u6A59")?"text-orange-500 dark:text-orange-400":"text-gray-700 dark:text-gray-300"};var 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=t.match(/^(\d{4})[-/](\d{2})[-/](\d{2})$/);if(r)return`${r[1]}-${r[2]}-${r[3]}`;let n=new Date(t);if(Number.isNaN(n.getTime()))return t;let s=n.getFullYear(),a=String(n.getMonth()+1).padStart(2,"0"),o=String(n.getDate()).padStart(2,"0");if(t.includes(":")||t.includes("T")){let i=String(n.getHours()).padStart(2,"0"),u=String(n.getMinutes()).padStart(2,"0"),l=String(n.getSeconds()).padStart(2,"0");return`${s}-${a}-${o}T${i}:${u}:${l}`}return`${s}-${a}-${o}`};import{clsx as Hn}from"clsx";import{twMerge as _n}from"tailwind-merge";function W(...e){return _n(Hn(e))}import{jsx as Ne,jsxs as rt}from"react/jsx-runtime";var Bn=(e,t,r)=>t===e||typeof e=="number"&&e<0&&r?.get(e)===t||typeof t=="number"&&t<0&&r?.get(t)===e,mr=({comment:e,reportHubId:t,businessDate:r,onOptimisticDelete:n,pendingDeleteId:s,onPendingDeleteIdChange:a,onTrashClick:o,resolvedIdMap:f})=>{let[i,u]=Fn(!1),l=Bn(e.id,s,f),R=D=>{D.stopPropagation(),D.preventDefault(),a(null),u(!0),typeof e.id=="number"&&n(e.id)};return rt("li",{"data-comment-id":e.id,"data-deleted":i?"true":void 0,className:W("group relative rounded-xl border border-slate-200 bg-white p-3 dark:border-slate-700 dark:bg-slate-900/70",e.isMine&&"border-blue-200 bg-blue-50 dark:border-blue-800/70 dark:bg-blue-950/40",i&&"hidden",l?"z-50":"z-0 hover:z-10"),children:[rt("div",{className:"mb-1 flex items-center justify-between",children:[Ne("div",{className:W("font-semibold text-xs",cr(e.color)),children:se(e.authorName)}),rt("div",{className:"flex items-center gap-2",children:[e.createdAt&&Ne("div",{className:"text-[10px] text-slate-400",children:ae(e.createdAt)}),e.isMine&&!e.isLegacy&&rt("div",{className:"relative",children:[Ne("button",{type:"button",className:W("transition-colors",l?"text-red-500":"text-slate-400 hover:text-red-500"),title:"\u524A\u9664","aria-label":"\u524A\u9664",onClick:D=>o(D,e.id),children:Ne(On,{className:"h-4 w-4"})}),l&&Ne("button",{type:"button","data-delete-confirmation":!0,className:"fade-in zoom-in-95 absolute top-full right-0 z-20 mt-1 animate-in whitespace-nowrap rounded-md bg-red-600 px-3 py-1.5 font-bold text-white text-xs shadow-lg duration-200 hover:bg-red-700 active:scale-95",onClick:R,children:"\u524A\u9664\u3059\u308B"})]})]})]}),Ne("div",{className:"whitespace-pre-wrap text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:e.content})]})};import{useCallback as Un,useEffect as pr,useRef as fr,useState as $n}from"react";import{jsx as we,jsxs as zn}from"react/jsx-runtime";var Vn=(e,t)=>{let r=fr(null);return pr(()=>{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]),pr(()=>()=>{r.current&&clearTimeout(r.current)},[]),{handleTrashClick:Un((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])}},nt=({comments:e,reportHubId:t,businessDate:r,onDeleteComment:n,pendingDeleteId:s,onPendingDeleteIdChange:a,resolvedIdMap:o})=>{let{handleTrashClick:f}=Vn(s,a);return e.length===0?null:we("ul",{className:"mb-3 space-y-2",children:e.map(i=>we(mr,{comment:i,reportHubId:t,businessDate:r,onOptimisticDelete:n||(()=>{}),pendingDeleteId:s,onPendingDeleteIdChange:a,onTrashClick:f,resolvedIdMap:o},i.id))})},st=({reportHubId:e,businessDate:t,onAddComment:r})=>{let[n,s]=$n(!1),a=fr(null);return zn("form",{className:"flex gap-2",ref:a,onSubmit:async f=>{f.preventDefault();let u=new FormData(f.currentTarget).get("content")?.trim();if(u&&r){s(!0),a.current?.reset();try{await r(u)}catch{if(a.current){let l=a.current.elements.namedItem("content");l&&(l.value=u)}}finally{s(!1)}}},children:[we("input",{type:"hidden",name:"intent",value:"addComment"}),we("input",{type:"hidden",name:"reportHubId",value:e}),we("input",{type:"hidden",name:"businessDate",value:t}),we("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"}),we("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 Js}from"@aiquants/virtualscroll";import{Check as Qs,Star as Zr,Trash2 as Zs}from"lucide-react";import{useCallback as ve,useEffect as Ie,useMemo as Qt,useRef as fe,useState as Lt}from"react";import{createContext as Ns,useCallback as Re,useContext as ks,useEffect as zr,useRef as le,useState as bt}from"react";var br=e=>typeof e=="object"&&e!==null&&Array.isArray(e.items),at=(e,t)=>e.businessDate!==t.businessDate?e.businessDate===null?1:t.businessDate===null||e.businessDate>t.businessDate?-1:1:t.reportHubId-e.reportHubId,gr=e=>{for(let t=1;t<e.length;t++)if(at(e[t-1],e[t])>0)return!1;return!0},$t=(e,t)=>{let r=e.filter(a=>a.reportHubId!==t.reportHubId),n=0,s=r.length;for(;n<s;){let a=n+s>>1;at(r[a],t)<=0?n=a+1:s=a}return r.splice(n,0,t),r};var ke=(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 Gn,useEffect as yr,useRef as Kn,useState as it}from"react";var jn=/^\d{4}-\d{2}-\d{2}$/,Wn=/^\d{4}\/\d{2}\/\d{2}$/,ot=e=>e<10?`0${e}`:`${e}`,hr=e=>{if(Number.isNaN(e.getTime()))return null;let t=e.getFullYear(),r=ot(e.getMonth()+1),n=ot(e.getDate());return`${t}-${r}-${n}`},Vt=(e=new Date)=>Number.isNaN(e.getTime())?Vt(new Date):`${e.getFullYear()}-${ot(e.getMonth()+1)}-${ot(e.getDate())}`,Oe=e=>{if(e==null)return null;if(e instanceof Date)return hr(e);let t=e.trim();if(t==="")return null;if(jn.test(t))return t;if(Wn.test(t))return t.replaceAll("/","-");let r=new Date(t);return hr(r)};var vr=ke(1,"use-daily-report"),Rr=(e,t)=>{if(typeof window>"u")return t;let r=window[e];return typeof r=="number"&&!Number.isNaN(r)?r:t},zt=Rr("__DAILY_REPORT_CACHE_TTL__",3e5),qn=Rr("__DAILY_REPORT_CACHE_REVIVE_MS__",6e4),Yn=120,_={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=>{_.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(f=>f.reportHubId===e.reportHubId)?s.data.map(f=>f.reportHubId===e.reportHubId?e:f):[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()){vr.warn(`[DailyReportCache] Stale update skipped id=${e}`);return}this.set({...n.data,...t},Math.max(n.expiresAt,Date.now()+qn))}},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+zt;for(let[o,f]of this.recentDeletes)n-f>1e4&&this.recentDeletes.delete(o);let a=e.map(o=>{if(this.locks.has(o.reportHubId))return o;let f=this.lastMutations.get(o.reportHubId);if(f&&r>0&&f>r)return this.reports.get(o.reportHubId)?.data??o;let i=this.reports.get(o.reportHubId)?.data,u=this.merge(o,i);return this.set(u,s,!1),u});return t&&this.lists.set(t,{data:a,expiresAt:s}),a}},Dr=(e,t,r=!0)=>_.set(e,t,r),ce=(e,t)=>_.getReport(e,t?.ignoreExpiry),me=(e,t)=>_.update(e,t),lt=(e,t)=>_.delete(e,t),Fe=()=>_.clear(),Be=e=>{_.locks.add(e),_.lastMutations.set(e,Date.now())},Ue=e=>{_.locks.delete(e),_.lastMutations.set(e,Date.now())},Ir=e=>_.recentDeletes.set(e,Date.now()),wr=(e,t)=>{let r=n=>{n===e&&t()};return _.listeners.add(r),()=>{_.listeners.delete(r)}},Se=(e,t)=>{_.prune(),_.set(t,Date.now()+zt)},Sr=e=>{_.prune();let t=_.getReport(e.reportHubId,!0),r=new Map;for(let s of t?.commentItems??[])r.set(s.id,s.isMine??!1);let n=(e.commentItems??[]).map(s=>({...s,isMine:r.get(s.id)??!1}));_.set({...e,isRead:t?.isRead??!1,isStarred:t?.isStarred??!1,commentItems:n},Date.now()+zt)},Xn=async(e,t)=>{let r=_.getReport(t);if(r)return r;let n=_.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 f=o.report;return _.cacheMany([f],null,s)[0]}).finally(()=>_.pendingReports.delete(t));return _.pendingReports.set(t,a),a},Cr=async(e,t)=>{let r=_.getList(t);if(r)return r;let n=_.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 _.cacheMany(o.reports??[],t,s)}).finally(()=>_.pendingLists.delete(t));return _.pendingLists.set(t,a),a},Ee=(e,t)=>{let{apiBasePath:r}=j(),[n,s]=it(()=>_.getReport(e)),[a,o]=it(null),[f,i]=it(!1),[u,l]=it(!1),R=Kn({id:e,token:0});return yr(()=>{let D=b=>{if(b===e){let v=_.getReport(e,!0);s(v)}};return _.listeners.add(D),()=>{_.listeners.delete(D)}},[e]),yr(()=>{let D=Oe(t),b=(R.current.token||0)+1;if(R.current={id:e,token:b},e<=0){s(null),o(e===0?new Error("Invalid ID"):null),i(!1),l(!1);return}let v=_.getReport(e,!0),C=!1;if(v)C=!_.isValid(_.reports.get(e)?.expiresAt??0);else if(D){let w=_.getList(D,!0)?.find(P=>P.reportHubId===e);w&&(v=w,C=!_.isValid(_.lists.get(D)?.expiresAt??0))}if(s(v),v&&!C){o(null),i(!1),l(!1);return}i(!v),l(!0);let T=setTimeout(async()=>{if(R.current.token===b)try{let S=null;D?S=(await Cr(r,D)).find(P=>P.reportHubId===e)??null:S=await Xn(r,e),R.current.token===b&&(s(S),o(null))}catch(S){R.current.token===b&&o(S instanceof Error?S:new Error("Load failed"))}finally{R.current.token===b&&(i(!1),l(!1))}},Yn);return()=>clearTimeout(T)},[e,t,r]),{report:n,error:a,isLoading:f,isRefetching:u}},Tr=()=>{let{apiBasePath:e}=j();return Gn(t=>{let r=Oe(t);r&&!_.getList(r)&&Cr(e,r).catch(n=>vr.warn("Prefetch error",r,n))},[e])};import{useEffect as ds}from"react";import{z as p}from"zod";var Jn=p.object({name:p.string().nullish(),affiliation:p.string().nullish()}),Qn=p.object({name:p.string().nullish(),text:p.string().nullish(),color:p.string().nullish()}),Zn=p.object({id:p.number(),name:p.string().nullish(),color:p.string().nullish()}),Nr=p.object({id:p.number(),userId:p.string().nullish(),userName:p.string().nullish(),content:p.string().nullish(),createdAt:p.string().nullish(),isMine:p.boolean()}),es=p.object({id:p.string(),fileName:p.string(),fileType:p.string().nullable(),fileSize:p.number().nullable(),createdAt:p.string().nullable(),state:p.enum(["present","absent","unknown"])}),jt=p.object({reportHubId:p.number(),date:p.string().nullish(),createdAt:p.string().nullish(),author:p.string().nullish(),userId:p.string().nullish(),sourceType:p.string().nullish(),employeeName:p.string().nullish(),updatedBy:p.string().nullish(),updatedAt:p.string().nullish(),category:p.string().nullish(),creationCategory:p.string().nullish(),visitTimeFrom:p.string().nullish(),visitTimeTo:p.string().nullish(),customerName:p.string().nullish(),interviewers:p.array(Jn),subject:p.string().nullish(),content:p.string().nullish(),comments:p.array(Qn),isRead:p.boolean(),isStarred:p.boolean(),labels:p.array(Zn),commentItems:p.array(Nr),attachments:p.array(es).default([])}),ts=p.object({type:p.literal("connected")}),rs=p.object({type:p.literal("status-update"),reportHubId:p.number(),statusType:p.enum(["star","read"]),value:p.boolean(),clientTempId:p.string(),recipientRawUserId:p.number().optional()}),ns=p.object({type:p.literal("comment-add"),reportHubId:p.number(),comment:Nr,clientTempId:p.string(),recipientRawUserId:p.number().optional()}),ss=p.object({type:p.literal("comment-delete"),reportHubId:p.number(),commentId:p.number(),clientTempId:p.string(),recipientRawUserId:p.number().optional()}),as=p.object({type:p.literal("report-create"),reportHubId:p.number(),report:jt,clientTempId:p.string(),recipientRawUserId:p.number().optional()}),os=p.object({type:p.literal("report-update"),reportHubId:p.number(),report:jt,clientTempId:p.string(),recipientRawUserId:p.number().optional()}),is=p.object({type:p.literal("report-publish"),reportHubId:p.number(),report:jt,clientTempId:p.string(),recipientRawUserId:p.number().optional()}),ls=p.object({type:p.literal("report-delete"),reportHubId:p.number(),clientTempId:p.string()}),kr=p.discriminatedUnion("type",[ts,rs,ns,ss,as,os,is,ls]);var $e=ke(1,"daily-report-sse-connection"),Er=({isSseEnabled:e,onMessage:t})=>{let{ssePath:r}=j();ds(()=>{if(!e)return;let n=null,s=null,a=0,o,f=()=>{n?.close(),n=new EventSource(`${r}${o?`?lastEventId=${o}`:""}`),n.onopen=()=>{a=0,$e.info("SSE Connected")},n.onmessage=i=>{i.lastEventId&&(o=i.lastEventId);try{let u=JSON.parse(i.data),l=kr.safeParse(u);if(!l.success){$e.error("SSE Validation Error:",l.error.flatten(),"raw message:",u);return}if(l.data.type==="connected"){$e.info("SSE Subscribe Ready");return}t(l.data)}catch(u){$e.error("SSE Parse Error",u)}},n.onerror=i=>{n?.close(),n=null,a++;let u=Math.min(2e3*2**(a-1),3e4);$e.error(`SSE Error. Retrying in ${u}ms (attempt ${a})...`,i),s=setTimeout(f,u)}};return f(),()=>{n&&n.close(),s&&clearTimeout(s)}},[e,t,r])};import{useSyncExternalStore as hs}from"react";var us=50,cs=1e3,ms=3e4,ps=6,fs=3e4,dt=Symbol("read-stall"),bs="/daily_report/api",gs=/^\d{4}-\d{2}-\d{2}$/,ut=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??bs,this.fetchFn=t.fetchFn??((r,n)=>fetch(r,n)),this.setTimeoutFn=t.setTimeoutFn??((r,n)=>setTimeout(r,n)),this.clearTimeoutFn=t.clearTimeoutFn??(r=>clearTimeout(r)),this.warn=t.warn??((...r)=>console.warn(...r)),this.readStallTimeoutMs=t.readStallTimeoutMs??fs,this.publishCoalesceMs=t.publishCoalesceMs??us,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>=ps){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(cs*2**(this.consecutiveFailures-1),ms))}}pruneUnseenItems(){let t=this.activeSeenIds;if(this.activeSeenIds=null,!!t)for(let r of Array.from(this.itemMap.keys()))t.has(r)||this.itemMap.delete(r)}async streamOnce(t){let r=new AbortController;this.activeAbortController=r;try{let n=this.fetchFn(this.buildStreamUrl(t),{signal:r.signal,headers:{Accept:"application/x-ndjson"},cache:"no-store"}),s=null,a=this.readStallTimeoutMs<=0?await n:await Promise.race([n,new Promise(R=>{s=this.setTimeoutFn(()=>R(dt),this.readStallTimeoutMs*3)})]).finally(()=>{s!==null&&this.clearTimeoutFn(s)});if(a===dt)return r.abort(),n.catch(()=>{}),{kind:"retryable",error:new Error("Stream stalled: no response headers within timeout")};if(a.status===401||a.status===403)return{kind:"auth-required"};if(!(a.ok&&a.body))return{kind:"retryable",error:new Error(`ids stream HTTP ${a.status}`)};let o=a.body.getReader(),f=new TextDecoder,i="",u=!1,l=!1;for(;;){let R=await this.readWithStallGuard(o);if(R===dt)return r.abort(),o.cancel().catch(()=>{}),{kind:"retryable",error:new Error("Stream stalled: no data within timeout")};let{done:D,value:b}=R;if(D)break;let v=(i+f.decode(b,{stream:!0})).split(`
2
- `);i=v.pop()??"";let C=!1;for(let T of v){if(T.trim()==="")continue;let S;try{S=JSON.parse(T)}catch{this.warn("[DailyReportIdsStream] skipped malformed line");continue}if(!br(S)){u=!0;continue}C=this.absorbChunkItems(S.items)||C,typeof S.total=="number"&&Number.isFinite(S.total)&&S.total!==this.state.totalCount&&this.publish({totalCount:S.total}),S.nextCursor&&(S.nextCursor.businessDate===null||gs.test(S.nextCursor.businessDate))&&(this.lastCursor=S.nextCursor),S.isLast&&(l=!0)}C&&(this.consecutiveFailures=0,this.schedulePublishItems())}return u?{kind:"retryable",error:new Error("Stream interrupted by server error")}:l?{kind:"complete"}:{kind:"retryable",error:new Error("Stream ended before completion")}}catch(n){return n instanceof Error&&n.name==="AbortError"?{kind:"aborted"}:{kind:"retryable",error:n instanceof Error?n:new Error(String(n))}}finally{this.activeAbortController===r&&(this.activeAbortController=null)}}async readWithStallGuard(t){if(this.readStallTimeoutMs<=0)return t.read();let r=null,n=new Promise(s=>{r=this.setTimeoutFn(()=>s(dt),this.readStallTimeoutMs)});try{return await Promise.race([t.read(),n])}finally{r!==null&&this.clearTimeoutFn(r)}}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 ys=6e4,Y=null,Wt=new Set,Lr={items:[],loadedCount:0,totalCount:null,phase:"idle",isRevalidating:!1,hasCompletedOnce:!1,completedAt:null,error:null},Pr=()=>{typeof window<"u"&&window.location.reload()},Gt=()=>{for(let e of Wt)e()},mt=()=>{Y&&(Y.unsubscribe(),Y.client.dispose(),Y=null,Gt())},ct=e=>{if(typeof window>"u")return;let t=e.apiBasePath??Ze.apiBasePath;if(Y&&(Y.userKey!==e.userKey||Y.apiBasePath!==t)&&(Y.userKey!==e.userKey&&Fe(),mt()),!Y){let r=new ut({apiBasePath:t});Y={client:r,userKey:e.userKey,apiBasePath:t,unsubscribe:r.subscribe(Gt)},r.start(),Gt();return}Kt(Y)},Kt=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>ys&&e.client.refresh()},Ar=e=>{if(!(typeof window>"u")){if(!Y){ct(e);return}if(Y.userKey!==e.userKey){Fe(),mt(),ct(e);return}Kt(Y)}},Mr=()=>{typeof window>"u"||!Y||Kt(Y)},Ve=e=>{Y?.client.applyExternalUpsert(e)},pt=e=>{Y?.client.applyExternalRemoval(e)},ft=()=>{Y?.client.retry()},qt=(e={})=>{Y?.client.refresh(e)},Hr=()=>Y?.userKey,xs=e=>(Wt.add(e),()=>Wt.delete(e)),vs=()=>Y?.client.getState()??Lr,Rs=()=>Lr,Le=()=>hs(xs,vs,Rs),Mo=()=>{mt()};typeof import.meta<"u"&&import.meta.hot&&import.meta.hot.dispose(()=>{mt()});import{createContext as Ds,useCallback as _r,useContext as Is,useEffect as ws,useMemo as Ss,useRef as Or,useState as Cs}from"react";import{jsx as Fr,jsxs as Br}from"react/jsx-runtime";var Ts=8e3,Ur=Ds({notifyError:()=>{}}),$r=()=>Is(Ur),Vr=({children:e})=>{let{onError:t}=j(),[r,n]=Cs(null),s=Or(t);s.current=t;let a=Or(null),o=_r(u=>{let l=s.current;if(l){l(u);return}n(u)},[]),f=_r(()=>{a.current!==null&&(clearTimeout(a.current),a.current=null),n(null)},[]);ws(()=>{if(r)return a.current=setTimeout(()=>n(null),Ts),()=>{a.current!==null&&(clearTimeout(a.current),a.current=null)}},[r]);let i=Ss(()=>({notifyError:o}),[o]);return Br(Ur.Provider,{value:i,children:[e,r&&Br("div",{role:"alert","data-testid":"daily-report-error-banner",className:"fade-in slide-in-from-bottom-2 fixed inset-x-0 bottom-4 z-[100] mx-auto flex w-fit max-w-[92vw] animate-in items-center gap-3 rounded-lg border border-red-300 bg-red-600 px-4 py-2.5 text-sm text-white shadow-lg duration-200 dark:border-red-500/60 dark:bg-red-700",children:[Fr("span",{className:"font-medium",children:r.message}),Fr("button",{type:"button","aria-label":"\u9589\u3058\u308B",onClick:f,className:"shrink-0 rounded px-1.5 py-0.5 font-bold text-white/90 transition-colors hover:bg-red-700 hover:text-white dark:hover:bg-red-800",children:"\u2715"})]})]})};import{jsx as As}from"react/jsx-runtime";var xe=ke(1,"daily-report-action-context"),Es={create:"\u65E5\u5831\u306E\u4F5C\u6210",update:"\u65E5\u5831\u306E\u4FDD\u5B58",publish:"\u65E5\u5831\u306E\u516C\u958B",delete:"\u65E5\u5831\u306E\u524A\u9664",addComment:"\u30B3\u30E1\u30F3\u30C8\u306E\u6295\u7A3F",deleteComment:"\u30B3\u30E1\u30F3\u30C8\u306E\u524A\u9664",toggleStar:"\u30B9\u30BF\u30FC\u306E\u66F4\u65B0",toggleRead:"\u65E2\u8AAD\u72B6\u614B\u306E\u66F4\u65B0"},Ls=e=>`${Es[e]??"\u64CD\u4F5C"}\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u6642\u9593\u3092\u304A\u3044\u3066\u518D\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002`,Ps=Object.freeze([]),Yt=globalThis.__DailyReportActionContext??Ns(null);globalThis.__DailyReportActionContext=Yt;var pe=()=>{let e=ks(Yt);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"},jr=({children:e,user:t,initialItems:r=Ps,userId:n})=>{let{apiBasePath:s,draftLabelName:a}=j(),{notifyError:o}=$r(),f=le(o);f.current=o;let i=le(new Map),u=le(new Map),l=le(new Map),R=le(new Map),D=le(new Map),[b,v]=bt(0),[C,T]=bt(r),[S,w]=bt(!!n),P=le(new Map),F=le(new Set),$=le(new Set),M=le(new Set),H=Le(),B=le(!1);B.current=H.phase==="complete"&&!H.isRevalidating;let A=Re(()=>Hr()===(n??null),[n]),O=Re(async()=>{xe.info("[DailyReportActionProvider] Refetching data without page reload..."),qt(),v(m=>m+1),_.listeners.forEach(m=>{m(-1)})},[]),J=Re(async()=>{xe.info("[DailyReportActionProvider] Clearing client & server/DB cache and refetching data without page reload..."),Fe(),$.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 g=await d.json().catch(()=>null);xe.warn("[DailyReportActionProvider] Failed to clear server-side cache:",d.status,g)}}catch(m){xe.warn("[DailyReportActionProvider] Failed to clear server-side cache:",m)}A()&&(qt({forceRefresh:!0}),v(m=>m+1),_.listeners.forEach(m=>{m(-1)}))},[s,A]),Q=le(new Map),ue=le(()=>{}),re=Re((m,d)=>{let g=Q.current,h=g.get(m);if(h){h.messages.push(d);return}let x={messages:[d],unsubscribe:()=>{},timer:setTimeout(()=>{let I=g.get(m);I&&(I.unsubscribe(),g.delete(m),xe.warn(`[SSE Queue] Expired: reportHubId=${m}, dropped=${I.messages.length} messages`))},3e4)};x.unsubscribe=wr(m,()=>{let I=g.get(m);if(I&&ce(m,{ignoreExpiry:!0})){I.unsubscribe(),clearTimeout(I.timer),g.delete(m),xe.info(`[SSE Queue] Replaying ${I.messages.length} messages for reportHubId=${m}`);for(let E of I.messages)ue.current(E)}}),g.set(m,x)},[]),be=m=>{M.current.add(m),setTimeout(()=>{M.current.delete(m)},3e4)},ne=Re(m=>!!m&&M.current.has(m),[]),N=Re((m,d)=>{d!==void 0&&Ve({reportHubId:m,businessDate:d??null}),T(g=>{let h=g.find(I=>I.reportHubId===m),x=d??h?.businessDate??null;return $t(g,{reportHubId:m,businessDate:x,sourceType:h?.sourceType})})},[]),L=()=>{n&&w(m=>!m)},X=Re(m=>{A()&&($.current.add(m),pt(m),T(d=>d.filter(g=>g.reportHubId!==m)))},[A]),[k,V]=bt(r);if(r!==k){V(r);let m=new Map;for(let g of r)$.current.has(g.reportHubId)||m.set(g.reportHubId,g);for(let g of C)m.has(g.reportHubId)||$.current.has(g.reportHubId)||m.set(g.reportHubId,g);let d=Array.from(m.values());gr(d)||d.sort(at),T(d)}zr(()=>{if(B.current){let m=new Set(r.map(d=>d.reportHubId));for(let d of $.current)m.has(d)||$.current.delete(d)}},[r]);let q=Re(m=>{if(A()&&!ne(m.clientTempId))switch(m.type){case"comment-add":{let{comment:d,reportHubId:g}=m,h=ce(g,{ignoreExpiry:!0});if(h){if(h.commentItems.some(G=>G.id===d.id))return;let x=!1,I=i.current.get(g);if(I){for(let[G,de]of I.entries())if(de===d.content){I.delete(G),D.current.set(G,d.id),x=!0;break}}let E={...d,userName:d.userName||(x?ze(t):"Unknown"),createdAt:d.createdAt||new Date().toISOString(),isMine:x},z={...h,commentItems:[...h.commentItems,E].sort((G,de)=>new Date(G.createdAt||0).getTime()-new Date(de.createdAt||0).getTime())};Se(g,z),Be(g),Ue(g),v(G=>G+1)}else re(g,m);break}case"comment-delete":{let{commentId:d,reportHubId:g}=m,h=ce(g,{ignoreExpiry:!0});if(h){let x={...h,commentItems:h.commentItems.filter(I=>I.id!==d)};Se(g,x),Be(g),Ue(g),v(I=>I+1)}else re(g,m);break}case"status-update":{let{statusType:d,value:g,reportHubId:h}=m,x=ce(h,{ignoreExpiry:!0});if(d==="star")if(l.current.get(h)===g&&l.current.delete(h),x){let I={...x,isStarred:g};Se(h,I),v(E=>E+1)}else re(h,m);else if(d==="read")if(R.current.get(h)===g&&R.current.delete(h),x){let I={...x,isRead:g};Se(h,I),v(E=>E+1)}else re(h,m);break}case"report-delete":{let{reportHubId:d}=m;F.current.delete(d),$.current.add(d),pt(d);let g=Q.current.get(d);g&&(g.unsubscribe(),clearTimeout(g.timer),Q.current.delete(d));let h=ce(d,{ignoreExpiry:!0});h?.date&&(lt(d,h.date),v(x=>x+1)),T(x=>x.filter(I=>I.reportHubId!==d));break}case"report-create":case"report-update":case"report-publish":{let{report:d}=m;Sr(d),(m.type==="report-create"||m.type==="report-publish")&&(F.current.add(d.reportHubId),N(d.reportHubId,d.date)),v(g=>g+1);break}}},[ne,A,N,t,re]);ue.current=q,zr(()=>()=>{for(let m of Q.current.values())m.unsubscribe(),clearTimeout(m.timer);Q.current.clear()},[]),Er({isSseEnabled:S,onMessage:q});let ie=async(m,d,g,h,x,I)=>{I?.skipLock||Be(m),x.onOptimistic?.();let E=h.clientTempId||crypto.randomUUID();be(E);let z=new FormData;z.append("intent",d),z.append("reportHubId",String(m)),z.append("businessDate",g),z.append("operationTimestamp",String(Date.now())),z.append("clientTempId",E);for(let[G,de]of Object.entries(h))G!=="clientTempId"&&z.append(G,de);try{let G=await fetch(`${s}/action`,{method:"POST",body:z,headers:{Accept:"application/json"}});if(!G.ok){let sr=new Error(`Failed to ${d}`);throw Object.assign(sr,{status:G.status}),sr}let de=await G.json();if(de.status!=="OK"||d!=="create"&&String(de.reportHubId)!==String(m))throw new Error(`Invalid response for ${d}`);if(typeof de.clientTempId!="string"||de.clientTempId!==E)throw new Error(`Invalid clientTempId for ${d}`);if(!A())throw xe.warn(`[executeAction] ${d} resolved after a user switch; discarding continuation`),new Error(`Stale continuation for ${d}`);return await x.onSuccess?.(de)}catch(G){throw xe.error(`${d} failed:`,G),A()&&(x.onFailure?.(),f.current({operation:d,message:Ls(d),cause:G})),G}finally{I?.keepLock||I?.skipLock||Ue(m)}},xn=async(m,d,g)=>{let h=Number(m),x=-1*Date.now(),I=ie(h,"addComment",g,{content:d,clientTempId:String(x)},{onOptimistic:()=>{i.current.has(h)||i.current.set(h,new Map),i.current.get(h)?.set(x,d),v(E=>E+1)},onSuccess:E=>{if(!E.newComment)throw new Error("No new comment returned");let z=E.newComment.id;D.current.set(x,z),i.current.get(h)?.delete(x);let G=ce(h,{ignoreExpiry:!0});return G&&!G.commentItems.some(de=>de.id===z)&&me(h,{commentItems:[...G.commentItems,{...E.newComment,id:z,isMine:!0,userName:ze(t)}],updatedAt:E.updatedAt}),z},onFailure:()=>{i.current.get(h)?.delete(x)}},{skipLock:!0}).finally(()=>P.current.delete(x));P.current.set(x,I),await I},vn=async(m,d,g)=>{let h=Number(m);u.current.has(h)||u.current.set(h,new Set),u.current.get(h)?.add(d),v(I=>I+1);let x=d;if(d<0){let I=D.current.get(d);if(I!==void 0)x=I;else{let E=P.current.get(d);if(!E)return;try{x=await E}catch{return}}}await ie(h,"deleteComment",g,{commentId:String(x)},{onSuccess:I=>{let E=typeof I.deletedCommentId=="string"?Number(I.deletedCommentId):x,z=ce(h,{ignoreExpiry:!0});z&&(me(h,{commentItems:z.commentItems.filter(G=>G.id!==E),updatedAt:I.updatedAt}),Ir(E)),u.current.get(h)?.delete(d)},onFailure:()=>{u.current.get(h)?.delete(d)}},{skipLock:!0})},Rn=async(m,d,g)=>{let h=Number(m);await ie(h,"toggleStar",g,{isStarred:String(d)},{onOptimistic:()=>{me(h,{isStarred:d}),l.current.set(h,d),v(x=>x+1)},onSuccess:x=>{x.updatedStatus&&typeof x.updatedStatus.isStarred=="boolean"&&ce(h,{ignoreExpiry:!0})&&(me(h,{isStarred:x.updatedStatus.isStarred,updatedAt:x.updatedAt}),v(E=>E+1)),l.current.delete(h)},onFailure:()=>{me(h,{isStarred:!d}),l.current.delete(h)}},{skipLock:!0})},rr=async(m,d,g)=>{let h=Number(m);await ie(h,"toggleRead",g,{isRead:String(d)},{onOptimistic:()=>{me(h,{isRead:d}),R.current.set(h,d),v(x=>x+1)},onSuccess:x=>{x.updatedStatus&&typeof x.updatedStatus.isRead=="boolean"&&ce(h,{ignoreExpiry:!0})&&(me(h,{isRead:x.updatedStatus.isRead,updatedAt:x.updatedAt}),v(E=>E+1)),R.current.delete(h)},onFailure:()=>{me(h,{isRead:!d}),R.current.delete(h)}},{skipLock:!0})},nr=le(rr);nr.current=rr;let Dn=Re((m,d,g)=>nr.current(m,d,g),[]),In=async m=>{let d=-1*Date.now(),g=new Date().toISOString(),h={reportHubId:d,date:m,createdAt:g,author:ze(t),userId:t?.id??"unknown",sourceType:"Internal",employeeName:ze(t),updatedBy:ze(t),updatedAt:g,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:[]};Dr(h,Date.now()+3e5,!1),T(x=>[{reportHubId:d,businessDate:m},...x]);try{let x=await ie(0,"create",m,{clientTempId:String(d)},{onSuccess:E=>E});if(x.clientTempId&&x.clientTempId!==String(d))throw xe.warn(`[createReport] ID mismatch. req=${d}, res=${x.clientTempId}`),new Error("Optimistic ID mismatch");let I=Number(x.reportHubId);return Ve({reportHubId:I,businessDate:m}),Be(I),x.report&&(Se(I,x.report),v(E=>E+1)),T(E=>E.some(z=>z.reportHubId===I)?E.filter(z=>z.reportHubId!==d):E.map(z=>z.reportHubId===d?{...z,reportHubId:I}:z)),setTimeout(()=>Ue(I),1e3),I}catch(x){throw xe.error("[createReport] Failed or mismatched",x),T(I=>I.filter(E=>E.reportHubId!==d)),x}},wn=async(m,d,g)=>{let h=Number(m);await ie(h,"update",g,{...d.title&&{title:d.title},...d.content&&{content:d.content}},{onSuccess:()=>{let x=ce(h,{ignoreExpiry:!0});x&&(me(h,{subject:d.title??x.subject,content:d.content??x.content}),v(I=>I+1))}})},Sn=async(m,d)=>{let g=Number(m),h=ce(g,{ignoreExpiry:!0}),x=h?.labels||[];await ie(g,"publish",d,{},{onOptimistic:()=>{if(h){let I=h.labels.filter(E=>E.name!==a);me(g,{labels:I}),v(E=>E+1)}},onSuccess:I=>{I.report&&(Se(g,I.report),v(E=>E+1)),Ve({reportHubId:g,businessDate:d})},onFailure:()=>{me(g,{labels:x}),v(I=>I+1)}},{skipLock:!0})},Cn=async(m,d)=>{let g=Number(m),h=C.find(x=>x.reportHubId===g);$.current.add(g),pt(g),T(x=>x.filter(I=>I.reportHubId!==g));try{await ie(g,"delete",d,{},{onSuccess:x=>{lt(g,d)}})}catch(x){if(x.status===404){lt(g,d);return}if(!A())return;$.current.delete(g),Ve({reportHubId:g,businessDate:h?.businessDate??d}),h&&T(E=>E.some(z=>z.reportHubId===g)?E:$t(E,h))}};return As(Yt.Provider,{value:{user:t,pendingAddCommentIds:i,pendingDeleteCommentIds:u,pendingStarUpdates:l,pendingReadUpdates:R,resolvedIdMap:D,version:b,items:C,isSseEnabled:S,toggleSse:L,addComment:xn,deleteComment:vn,toggleStar:Rn,toggleRead:Dn,createReport:In,updateReport:wn,publishReport:Sn,deleteReport:Cn,removeStaleItem:X,refetchData:O,clearCacheAndRefetch:J},children:e})};import{useCallback as Wr,useMemo as Ms,useRef as Hs,useState as _s}from"react";var gt=(e,t,r)=>{let{pendingAddCommentIds:n,pendingDeleteCommentIds:s,resolvedIdMap:a,version:o,addComment:f,deleteComment:i}=pe(),[u,l]=_s(null),R=Wr(C=>e&&i(e.reportHubId,C,e.date??""),[e,i]),D=Wr(C=>e&&t?f(e.reportHubId,C,e.date??""):Promise.resolve(),[e,t,f]),b=Hs([]);return{uiComments:Ms(()=>{if(!e)return[];let C=ur(e.comments,e.commentItems,r),T=s.current.get(e.reportHubId);T?.size&&(C=C.filter(w=>!T.has(w.id)));let S=n.current.get(e.reportHubId);if(S?.size&&t){let w=new Set(C.map(F=>F.id)),P=t.displayName?.trim()||(t.name?`${t.name.familyName??""} ${t.name.givenName??""}`.trim():"")||t.emails?.[0]?.value||"Unknown";for(let[F,$]of S){if(T?.has(F)||w.has(F))continue;let M=a.current.get(F);M&&w.has(M)||C.some(H=>H.isMine&&H.content===$&&typeof H.id=="number"&&H.id>0)||C.push({id:F,authorName:P,content:$,createdAt:new Date().toISOString(),isMine:!0,isLegacy:!1})}}return JSON.stringify(C)===JSON.stringify(b.current)?b.current:(b.current=C,C)},[e,t,r,s,n,a,o]),handleAddComment:D,handleDeleteComment:R,pendingDeleteId:u,setPendingDeleteId:l,resolvedIdMap:a.current}};import{useCallback as Os,useEffect as Fs,useState as Bs}from"react";var ht=(e,t)=>{let{enableMutationObserver:r=!1,bottomGap:n=4,minFallbackHeight:s=240}=t??{},[a,o]=Bs(600),f=Os(()=>{if(typeof window>"u")return;let i=e.current;if(!i||i.offsetParent===null&&window.getComputedStyle(i).position!=="fixed")return;let u=O=>Number.parseFloat(O)||0,{top:l}=i.getBoundingClientRect(),R=i.parentElement?.getBoundingClientRect(),D=window.getComputedStyle(document.documentElement),b=u(D.getPropertyValue("--footer-height")),v=u(D.getPropertyValue("--header-height")),C=u(D.getPropertyValue("--scrollbar-height")),T=window.getComputedStyle(i),S=u(T.marginBottom),w=u(T.paddingBottom),P=window.innerHeight-b-C-n,F=R?Math.min(R.bottom,P):P,$=R?Math.max(R.top,v):v,M=Math.max(l,$),H=F-M-S-w,B=Number.isFinite(H)?Math.floor(H):0,A=B>0?B:s;A>0&&Number.isFinite(A)&&o(O=>Math.abs(O-A)>1?A:O)},[n,e,s]);return Fs(()=>{if(typeof window>"u")return;let i=null,u=null,l=null,R=null,D=()=>{i!==null&&window.cancelAnimationFrame(i),i=window.requestAnimationFrame(()=>{f()})};D(),u=window.setTimeout(()=>{D()},150);let b=e.current;return typeof ResizeObserver<"u"&&b&&(l=new ResizeObserver(()=>{D()}),l.observe(b),b.parentElement&&l.observe(b.parentElement)),r&&typeof MutationObserver<"u"&&(R=new MutationObserver(()=>{D()}),R.observe(document.documentElement,{attributes:!0,attributeFilter:["style"]})),window.addEventListener("resize",D),()=>{i!==null&&window.cancelAnimationFrame(i),u!==null&&window.clearTimeout(u),window.removeEventListener("resize",D),l?.disconnect(),R?.disconnect()}},[r,f,e]),{viewportHeight:a,updateViewportHeight:f}};import{tapScrollCircleSampleVisual as Us}from"@aiquants/virtualscroll";var yt=180,Xt=160,xt=6,je=Xt-xt,vt=.8,Rt={maxVelocity:18,deceleration:.0018,startVelocityThreshold:.03},Dt=20,Gr=6,It={reportHubId:-1,businessDate:null},Kr={report:null,error:null,isLoading:!1,isRefetching:!1},wt=240,St=15,Ct=8,qr=3,Tt={enabled:!0,renderVisual:Us,maxSpeedCurve:{exponentialSteepness:3,exponentialScale:8},maxSpeedMultiplier:8},Nt=["pen","touch"];import{useEffect as qs,useRef as Ys,useState as Jt}from"react";import{Slot as $s}from"@radix-ui/react-slot";import{cva as Vs}from"class-variance-authority";import*as Yr from"react";import{jsx as js}from"react/jsx-runtime";var zs=Vs("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=Yr.forwardRef(({className:e,variant:t,size:r,asChild:n=!1,...s},a)=>js(n?$s:"button",{className:W(zs({variant:t,size:r,className:e})),ref:a,...s}));De.displayName="Button";import{jsx as Ws}from"react/jsx-runtime";function Xr({className:e,type:t,...r}){return Ws("input",{type:t,"data-slot":"input",className:W("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 Jr from"@radix-ui/react-label";import{jsx as Gs}from"react/jsx-runtime";function Pe({className:e,...t}){return Gs(Jr.Root,{"data-slot":"label",className:W("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 Ks}from"react/jsx-runtime";function Qr({className:e,...t}){return Ks("textarea",{"data-slot":"textarea",className:W("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 Ce,jsxs as kt}from"react/jsx-runtime";var Et=({report:e,onCancel:t,onPublishSuccess:r})=>{let{updateReport:n,publishReport:s}=pe(),[a,o]=Jt(e.subject??""),[f,i]=Jt(e.content??""),[u,l]=Jt(!1),R=Ys(e.reportHubId);qs(()=>{e.reportHubId!==R.current&&(o(e.subject??""),i(e.content??""),R.current=e.reportHubId)},[e.reportHubId,e.subject,e.content]);let D=async()=>{l(!0);try{await n(e.reportHubId,{title:a,content:f},e.date??"")}catch{}finally{l(!1)}},b=async()=>{l(!0);try{await n(e.reportHubId,{title:a,content:f},e.date??""),await s(e.reportHubId,e.date??""),r?.()}catch{}finally{l(!1)}};return kt("div",{className:"space-y-6 p-1",children:[kt("div",{className:"space-y-2",children:[Ce(Pe,{htmlFor:`report-title-${e.reportHubId}`,children:"\u30BF\u30A4\u30C8\u30EB"}),Ce(Xr,{id:`report-title-${e.reportHubId}`,value:a,onChange:v=>o(v.target.value),placeholder:"\u65E5\u5831\u306E\u30BF\u30A4\u30C8\u30EB\u3092\u5165\u529B",disabled:u})]}),kt("div",{className:"space-y-2",children:[Ce(Pe,{htmlFor:`report-content-${e.reportHubId}`,children:"\u5185\u5BB9"}),Ce(Qr,{id:`report-content-${e.reportHubId}`,value:f,onChange:v=>i(v.target.value),placeholder:"\u65E5\u5831\u306E\u5185\u5BB9\u3092\u5165\u529B",className:"min-h-50",disabled:u})]}),kt("div",{className:"flex justify-end gap-2",children:[t&&Ce(De,{variant:"outline",onClick:t,disabled:u,children:"\u30AD\u30E3\u30F3\u30BB\u30EB"}),Ce(De,{variant:"secondary",onClick:D,disabled:u,children:"\u4FDD\u5B58"}),Ce(De,{onClick:b,disabled:u,children:"\u516C\u958B"})]})]})};import{jsx as Xs}from"react/jsx-runtime";var We=({className:e})=>Xs("span",{className:W("text-blue-500",e),children:"\u25CF"});import{Fragment as da,jsx as y,jsxs as U}from"react/jsx-runtime";var ea=(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])},ta=({itemId:e,index:t,setSize:r,onHeightMeasured:n,children:s})=>{let a=fe(null);return ea(a,e,n),y("div",{ref:a,className:"px-2 pb-3","data-daily-report-button":e,role:"listitem","aria-posinset":t+1,"aria-setsize":r,children:s})},ra=e=>e.affiliation?.trim()?`${e.name}\uFF08${e.affiliation}\uFF09`:e.name??"",en=({dailyReportItems:e,userId:t,selectedItemId:r,onSelectItem:n,initialScrollOffset:s,onScrollOffsetChange:a})=>{let o=fe(new Map),f=fe(null),i=fe(null),{title:u}=j(),{viewportHeight:l,updateViewportHeight:R}=ht(f,{enableMutationObserver:!0}),D=Tr(),[b,v]=Lt(""),[C,T]=Lt(!1),S=fe(null),w=fe(null),P=fe(e);P.current=e;let F=fe(null);Ie(()=>{if(r!=null&&i.current){let N=e.findIndex(L=>L.reportHubId===r);if(N!==-1){if(F.current?.id===r&&F.current?.index===N)return;i.current.scrollToIndex(N,{align:"top"}),F.current={id:r,index:N}}}else F.current=null},[r,e]);let $=fe(n);$.current=n,Ie(()=>{if(i.current){let N=document.querySelector('[data-testid="daily-report-detail-list"]');if(N){let L=i.current,X=Object.assign({},L,{findReportIndex:k=>P.current.findIndex(V=>V.reportHubId===k),getReportItem:k=>P.current[k],selectItem:k=>$.current?.(k)});N.__virtualScroll=X}}});let M=e.length,H=ve(N=>N>=M?It:e[N],[e,M]),B=ve((N,L)=>{if(M===0)return;let X=Math.max(0,N),k=Math.min(M-1,L);if(X>k)return;let V=new Set;for(let q=X;q<=k;q++){let ie=H(q);if(ie.businessDate&&V.add(ie.businessDate),V.size>=Gr)break}V.forEach(q=>{D(q)})},[H,M,D]),A=ve(({renderingStartIndex:N,renderingEndIndex:L,visibleStartIndex:X})=>{if(M===0)return;let k=H(X);k?.businessDate&&v(ae(k.businessDate)),B(N,L),B(L+1,L+Dt),B(N-Dt,N-1)},[H,M,B]),O=ve(()=>{i.current&&a&&a(i.current.getScrollPosition());let N=f.current;N&&(N.dataset.scrolling!=="true"&&(N.dataset.scrolling="true"),w.current&&clearTimeout(w.current),w.current=setTimeout(()=>{N&&delete N.dataset.scrolling,w.current=null},150))},[a]);Ie(()=>()=>{i.current&&a&&a(i.current.getScrollPosition())},[a]);let J=ve(N=>y(Je,{...N,label:b,isWheelScrollActive:C}),[b,C]);Ie(()=>{let N=f.current;if(!N)return;let L=()=>{T(!0),S.current&&clearTimeout(S.current),S.current=window.setTimeout(()=>{T(!1),S.current=null},wt)};return N.addEventListener("wheel",L,{passive:!0}),()=>{N.removeEventListener("wheel",L),S.current&&clearTimeout(S.current)}},[]);let Q=ve((N,L)=>{if(o.current.get(N)!==L&&(o.current.set(N,L),i.current)){let X=P.current.findIndex(k=>k.reportHubId===N);X!==-1&&i.current.updateItemSize(X,L)}},[]),ue=ve(N=>{let L=H(N);return o.current.get(L.reportHubId)||350},[H]),re=ve(N=>H(N).reportHubId,[H]);Ie(()=>{M>=0&&R()},[M,R]),Ie(()=>{M!==0&&B(0,Math.min(M-1,Dt))},[M,B]);let be=ve(N=>{let L=P.current.findIndex(X=>X.reportHubId===N);L>=0&&setTimeout(()=>i.current?.scrollToIndex(L,{align:"bottom"}),300)},[]),ne=ve((N,L)=>y(sa,{item:N,index:L,setSize:M,onHeightMeasured:Q,onCommentAdded:be,userId:t},N.reportHubId),[Q,be,t,M]);return U(da,{children:[y("div",{ref:f,className:"flex min-h-0 flex-1 flex-col",children:y(Js,{ref:i,itemCount:M,getItem:H,getItemKey:re,getItemHeight:ue,viewportSize:l,initialScrollOffset:s,overscanCount:St,scrollBarOptions:{width:Ct,tapScrollCircleOptions:Tt,renderThumbOverlay:J},behaviorOptions:{pointerDragInputs:Nt,wheelSpeedMultiplier:vt,inertiaOptions:Rt,enableKeyboardNavigation:!1},onRangeChange:A,onScroll:O,testId:"daily-report-detail-list",className:"relative w-full",contentProps:{role:"list","aria-label":u},children:ne})}),M===0&&y("div",{className:"py-8 text-center",children:y("p",{className:"text-slate-500",children:"\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093"})})]})},na=()=>U("div",{className:"rounded-2xl border border-slate-200 bg-white p-4 shadow-sm dark:border-slate-700 dark:bg-slate-900/70",children:[U("div",{className:"mb-4 flex flex-wrap gap-2",children:[y("div",{className:"h-6 w-20 rounded-full bg-slate-200"}),y("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),y("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),y("div",{className:"h-6 w-28 rounded-full bg-slate-200"})]}),U("div",{className:"mb-3 grid gap-3 md:grid-cols-[minmax(0,1fr)_220px]",children:[U("div",{className:"space-y-3",children:[y("div",{className:"h-5 w-40 rounded bg-slate-200"}),y("div",{className:"h-5 w-56 rounded bg-slate-200"}),y("div",{className:"h-24 rounded-lg bg-slate-200"})]}),U("div",{className:"rounded-xl bg-slate-100 p-3",children:[y("div",{className:"mb-2 h-4 w-24 rounded bg-slate-200"}),y("div",{className:"mb-2 h-4 w-28 rounded bg-slate-200"}),y("div",{className:"h-4 w-32 rounded bg-slate-200"})]})]}),U("div",{className:"space-y-3",children:[y("div",{className:"h-4 w-24 rounded bg-slate-200"}),U("div",{className:"flex flex-wrap gap-2",children:[y("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),y("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),y("div",{className:"h-6 w-16 rounded-full bg-slate-200"})]}),U("div",{className:"space-y-2",children:[y("div",{className:"h-16 rounded-lg bg-slate-200"}),y("div",{className:"h-16 rounded-lg bg-slate-200"})]})]})]}),sa=({item:e,index:t,setSize:r,onHeightMeasured:n,onCommentAdded:s,userId:a})=>{let{report:o,error:f,isLoading:i,isRefetching:u}=Ee(e.reportHubId,e.businessDate),{removeStaleItem:l}=pe(),{draftLabelName:R}=j(),[D,b]=Lt(!1),[v,C]=Lt(!1),T=fe(!1),S=fe(!1);u&&(S.current=!0),Ie(()=>{!(o||i||u||f)&&S.current&&e.reportHubId>0&&l(e.reportHubId)},[o,i,u,f,e.reportHubId,l]);let w=o?.labels.some(F=>F.name===R),P=a&&o?.userId===a;return Ie(()=>{o&&P&&w&&!D&&!v?(b(!0),T.current=!0):o&&!w&&D&&T.current&&(b(!1),T.current=!1)},[o,P,w,D,v]),y(ta,{itemId:e.reportHubId,index:t,setSize:r,onHeightMeasured:n,children:f?y(la,{itemId:e.reportHubId}):o?D?y(Et,{report:o,onCancel:()=>{b(!1),C(!0)},onPublishSuccess:()=>{b(!1)}}):y(ia,{item:e,report:o,onCommentAdded:s,userId:a,onDoubleClick:P?()=>b(!0):void 0}):y(na,{})})},aa=({report:e,isRead:t,isStarred:r,isMine:n,onToggleRead:s,onToggleStar:a,onDelete:o,itemSourceType:f,visitTimeDisplay:i,categoryLabel:u,fieldLabels:l})=>{let{sourceTypeConfigs:R}=j();return U("div",{className:"flex flex-wrap items-center gap-2 font-medium text-slate-600 text-xs",children:[y(Qe,{count:e.attachments.length,label:l.attachments}),(()=>{let D=f??e?.sourceType,b=Te(D,R);return b?y("span",{className:W("inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",b.badgeClassName),children:b.label}):null})(),y("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?y(Zr,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):y(Zr,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),y("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?y(Qs,{className:"h-3.5 w-3.5 text-blue-500"}):y(We,{className:"text-xs"})}),n&&y("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:y(Zs,{className:"h-4 w-4 text-slate-300 hover:text-red-500"})}),U("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:[y("span",{className:"text-[10px] text-blue-500 uppercase tracking-wide",children:l.id}),e.reportHubId]}),U("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[y("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:l.businessDate}),ae(e.date)]}),U("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[y("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:l.author}),se(e.employeeName)]}),U("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[y("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:l.visitTime}),i||"-"]}),U("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[y("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:l.updatedAt}),ae(e.updatedAt)]}),u&&U("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-amber-100 px-3 py-1 text-amber-700",children:[y("span",{className:"text-[10px] text-amber-500 uppercase tracking-wide",children:l.category}),u]})]})},oa=({report:e,visitTimeDisplay:t,categoryLabel:r,fieldLabels:n})=>U("div",{className:"flex flex-col gap-3 rounded-xl bg-slate-100 p-4 text-slate-600 text-xs dark:bg-slate-800/60 dark:text-slate-300",children:[U("div",{className:"flex flex-col gap-1",children:[y("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.author}),y("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:se(e.author)})]}),U("div",{className:"flex flex-col gap-1",children:[y("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.createdAt}),y("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:ae(e.createdAt)})]}),U("div",{className:"flex flex-col gap-1",children:[y("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.updatedBy}),y("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:se(e.updatedBy)})]}),U("div",{className:"flex flex-col gap-1",children:[y("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.updatedAt}),y("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:ae(e.updatedAt)})]}),U("div",{className:"flex flex-col gap-1",children:[y("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.businessDate}),y("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:ae(e.date)})]}),t&&U("div",{className:"flex flex-col gap-1",children:[y("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.visitTime}),y("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:t})]}),r&&U("div",{className:"flex flex-col gap-1",children:[y("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.categoryInfo}),y("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:r})]})]}),ia=({item:e,report:t,onCommentAdded:r,userId:n,onDoubleClick:s})=>{let a=fe(null),{toggleStar:o,toggleRead:f,pendingStarUpdates:i,pendingReadUpdates:u,deleteReport:l,user:R}=pe(),{uiComments:D,handleAddComment:b,handleDeleteComment:v,pendingDeleteId:C,setPendingDeleteId:T,resolvedIdMap:S}=gt(t,R,n),{fieldLabels:w,sourceTypeConfigs:P}=j(),F=e.sourceType??t?.sourceType,$=Te(F,P),M=F?F.toLowerCase()!=="internal":!1,H=$?.allowComment??!M,B=async L=>{await b(L),r?.(e.reportHubId)},A=i.current.has(t.reportHubId)?i.current.get(t.reportHubId)??!1:t.isStarred,O=u.current.has(t.reportHubId)?u.current.get(t.reportHubId)??!1:t.isRead,J=!!(n&&t.userId===n),Q=async()=>{try{await f(t.reportHubId,!O,t.date??"")}catch{}},ue=async()=>{try{await o(t.reportHubId,!A,t.date??"")}catch{}},re=async()=>{confirm("\u672C\u5F53\u306B\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F")&&await l(t.reportHubId,t.date??"")},be=Qt(()=>t.content?t.content.replace(/<br\s*\/??\s*>/gi,`
3
- `).trim():"",[t.content]),ne=Qt(()=>{let L=t.visitTimeFrom?.trim(),X=t.visitTimeTo?.trim();return L&&X?`${L} - ${X}`:L||X||""},[t.visitTimeFrom,t.visitTimeTo]),N=Qt(()=>{let L=[];return t.category?.trim()&&L.push(`${w.category}: ${t.category}`),t.creationCategory?.trim()&&L.push(`${w.creationCategory}: ${t.creationCategory}`),L.join(" / ")},[t.category,t.creationCategory,w.category,w.creationCategory]);return y("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 ${O?"":"border-l-4 border-l-blue-500"}`,children:U("div",{className:"flex flex-col gap-4",children:[y(aa,{report:t,itemSourceType:e.sourceType,isRead:O,isStarred:A,isMine:J,onToggleRead:Q,onToggleStar:ue,onDelete:re,visitTimeDisplay:ne,categoryLabel:N,fieldLabels:w}),U("div",{className:"grid gap-4 md:grid-cols-[minmax(0,1fr)_240px]",children:[U("div",{className:"flex flex-col gap-4",children:[U("div",{className:"grid gap-3 sm:grid-cols-2",children:[U("div",{className:"flex flex-col gap-1",children:[y("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:w.customer}),y("span",{className:"font-semibold text-base text-slate-900 dark:text-slate-100",children:se(t.customerName)})]}),U("div",{className:"flex flex-col gap-1",children:[y("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:w.subject}),y("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:se(t.subject)})]})]}),be&&U("div",{className:"flex flex-col gap-2",children:[y("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:w.content}),y("div",{className:"whitespace-pre-wrap rounded-xl bg-slate-50 p-3 text-slate-700 text-sm leading-relaxed dark:bg-slate-800/60 dark:text-slate-200",children:be})]}),t.interviewers.length>0&&U("div",{className:"flex flex-col gap-2",children:[y("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:w.interviewers}),y("ul",{className:"flex flex-wrap gap-2",children:t.interviewers.map(L=>y("li",{className:"rounded-full bg-slate-100 px-3 py-1 text-slate-600 text-xs",children:ra(L)},`${L.name}-${L.affiliation||""}`))})]}),y(tt,{attachments:t.attachments}),D.length>0&&U("div",{className:"flex flex-col gap-2",children:[y("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:w.comments}),y(nt,{comments:D,reportHubId:t.reportHubId,businessDate:t.date??"",onDeleteComment:v,pendingDeleteId:C,onPendingDeleteIdChange:T,resolvedIdMap:S})]}),H&&y("div",{className:"mt-auto",ref:a,children:y(st,{reportHubId:t.reportHubId,businessDate:t.date??"",onAddComment:B})})]}),y(oa,{report:t,visitTimeDisplay:ne,categoryLabel:N,fieldLabels:w})]})]})})},la=({itemId:e})=>y("div",{className:"rounded-2xl border border-red-200 bg-red-50 p-4 text-red-700 text-sm",children:U("p",{children:["\u65E5\u5831 ",e.toLocaleString()," \u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"]})});import{RefreshCw as rn}from"lucide-react";import{useEffect as ua,useRef as tn,useState as ca}from"react";var Ge=(e,t=250)=>{let[r,n]=ca(e),s=tn(e),a=tn(!0);return ua(()=>{if(a.current){a.current=!1,s.current=e,n(e);return}let o=s.current;if(o===e)return;let f=null,i=null,u=l=>{i===null&&(i=l);let R=Math.min(1,Math.max(0,(l-i)/t)),D=1-(1-R)**3,b=Math.round(o+(e-o)*D);s.current=b,n(b),R<1&&(f=requestAnimationFrame(u))};return f=requestAnimationFrame(u),()=>{f!==null&&cancelAnimationFrame(f)}},[e,t]),r};import{jsx as Pt,jsxs as At}from"react/jsx-runtime";var Mt=()=>{let e=Le(),t=Ge(e.loadedCount),r=Ge(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 At("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:[Pt("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"?At("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:[Pt(rn,{"aria-hidden":"true",className:"h-3 w-3 animate-spin"}),"\u518D\u63A5\u7D9A\u4E2D... (",e.loadedCount.toLocaleString()," \u4EF6\u53D7\u4FE1\u6E08)"]}):e.phase==="failed"?At("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",Pt("button",{type:"button","data-testid":"daily-report-ids-stream-retry",onClick:()=>ft(),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?At("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:[Pt(rn,{"aria-hidden":"true",className:"h-3 w-3 animate-spin"}),"\u6700\u65B0\u5316\u4E2D"]}):null};import{SwipeCloseGuardContext as ba,useSwipeGuardState as ga,useSwipeToDismissOverlay as ha,useTapClick as an,useTransitionDisplay as ya}from"@aiquants/swipe-overlay";import{VirtualScroll as xa}from"@aiquants/virtualscroll";import{Check as va,Star as sn,Trash2 as Ra}from"lucide-react";import{memo as Da,useCallback as he,useEffect as oe,useMemo as er,useRef as Z,useState as He}from"react";import{useEffect as ma,useState as pa}from"react";var fa="(max-width: 639px)",nn=()=>{let[e,t]=pa(!1);return ma(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;let r=window.matchMedia(fa),n=()=>t(r.matches);return n(),r.addEventListener("change",n),()=>r.removeEventListener("change",n)},[]),e};import*as ge from"@radix-ui/react-tabs";import*as Ht from"react";import{jsx as Zt}from"react/jsx-runtime";var _t=ge.Root,Ke=Ht.forwardRef(({className:e,...t},r)=>Zt(ge.List,{ref:r,className:W("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",e),...t}));Ke.displayName=ge.List.displayName;var qe=Ht.forwardRef(({className:e,...t},r)=>Zt(ge.Trigger,{ref:r,className:W("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}));qe.displayName=ge.Trigger.displayName;var Ae=Ht.forwardRef(({className:e,...t},r)=>Zt(ge.Content,{ref:r,className:W("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=ge.Content.displayName;import{Fragment as un,jsx as c,jsxs as K}from"react/jsx-runtime";var Ia=(e,t,r,n)=>{let[s,a]=He(!1),[o,f]=He(!1),i=Z(null),u=Z(null),l=Z(null),R=er(()=>t===null?null:r.find(v=>v.reportHubId===t)??null,[r,t]),D=e&&s&&R!==null;oe(()=>{if(D)f(!0);else{let v=setTimeout(()=>f(!1),300);return()=>clearTimeout(v)}},[D]),oe(()=>{if(!(typeof window>"u")){if(e&&s&&t!==null&&!i.current){let v=`overlay-${Date.now()}`;window.history.pushState({...window.history.state,dailyReportOverlay:v},"",window.location.href),i.current=v}else!(e&&s)&&i.current&&(i.current=null);return s?(l.current=document.body.style.overflow,document.body.style.overflow="hidden"):l.current!==null&&(document.body.style.overflow=l.current,l.current=null),()=>{l.current!==null&&(document.body.style.overflow=l.current)}}},[e,s,t]),oe(()=>{if(typeof window>"u")return;let v=()=>{i.current&&(u.current=t,i.current=null,a(!1),n(null))};return window.addEventListener("popstate",v),()=>window.removeEventListener("popstate",v)},[t,n]);let b=he(()=>{e&&(u.current=t,a(!1),n(null),i.current&&typeof window<"u"&&(i.current=null,window.history.back()))},[e,t,n]);return{isMobileDetailOpen:s,setIsMobileDetailOpen:a,isOverlayMounted:o,shouldShowOverlay:D,handleOverlayClose:b,lastClosedItemIdRef:u,selectedItem:R}},wa=(e,t,r,n,s)=>{let a=Z(null),o=Z(void 0);o.current!==e?.reportHubId&&(o.current=e?.reportHubId,a.current=null),oe(()=>{n||(a.current=null)},[n]);let f=he(async(i=!1)=>{if(!e)return;i||(a.current=e.reportHubId);let u=!e.isRead;try{await s(e.reportHubId,u,e.date??"")}catch{}},[e,s]);return oe(()=>{if(r&&e&&!e.isRead&&!t){if(a.current===e.reportHubId)return;let i=setTimeout(()=>f(!0),500);return()=>clearTimeout(i)}},[e,t,r,f]),{handleToggleRead:f}},on=({dailyReportItems:e,autoMarkRead:t=!1,selectedReportHubId:r,onSelectItem:n,userId:s,initialScrollOffset:a,onScrollOffsetChange:o})=>{let f=Z(null),i=Z(null),{title:u}=j(),{viewportHeight:l,updateViewportHeight:R}=ht(f),[D,b]=He(""),[v,C]=He(!1),T=nn(),S=Z(null),w=e.length,P=Z(null),{isMobileDetailOpen:F,setIsMobileDetailOpen:$,isOverlayMounted:M,shouldShowOverlay:H,handleOverlayClose:B,lastClosedItemIdRef:A,selectedItem:O}=Ia(T,r,e,n),J=er(()=>Number.isFinite(l)&&l>0?{height:l}:void 0,[l]);oe(()=>{if(typeof window>"u")return;let k=()=>requestAnimationFrame(R);window.addEventListener("resize",k),R();let V=f.current,q=()=>{C(!0),S.current&&clearTimeout(S.current),S.current=window.setTimeout(()=>{C(!1),S.current=null},wt)};return V?.addEventListener("wheel",q,{passive:!0}),()=>{window.removeEventListener("resize",k),V?.removeEventListener("wheel",q),S.current&&clearTimeout(S.current)}},[R]),oe(()=>{!w&&r!==null&&n(null)},[w,r,n]),oe(()=>{if(T||F||A.current===null)return;let k=A.current;A.current=null;let V=e.findIndex(q=>q.reportHubId===k);V>=0&&(i.current?.scrollToIndex(V),requestAnimationFrame(()=>{document.querySelector(`[data-testid="daily-report-list"] [data-daily-report-button="${k}"]`)?.focus()}))},[F,T,e,A]),oe(()=>{w>0&&b(k=>{let V=ae(e[0]?.businessDate);return k===V?k:V})},[e,w]);let Q=Z(e);Q.current=e,oe(()=>{if(i.current){let k=document.querySelector('[data-testid="daily-report-list"]');k&&(k.__virtualScroll={...i.current,findReportIndex:V=>Q.current.findIndex(q=>q.reportHubId===V),getReportIds:(V=20)=>Q.current.slice(0,V).map(q=>q.reportHubId)})}});let ue=he(k=>{k<=0||(n(k),T&&$(!0))},[T,n,$]),re=he(k=>k<w?e[k]:It,[e,w]),be=he(()=>Xt,[]),ne=he((k,V)=>c(dn,{item:k,index:V,setSize:w,isActive:k.reportHubId===r,onSelect:ue},k.reportHubId),[w,r,ue]),N=he(k=>{let V=re(k.visibleStartIndex);V?.reportHubId>0&&b(q=>{let ie=ae(V.businessDate);return q===ie?q:ie})},[re]),L=he(()=>{i.current&&o&&o(i.current.getScrollPosition());let k=f.current;k&&(k.dataset.scrolling!=="true"&&(k.dataset.scrolling="true"),P.current&&clearTimeout(P.current),P.current=setTimeout(()=>{k&&delete k.dataset.scrolling,P.current=null},150))},[o]);oe(()=>()=>{i.current&&o&&o(i.current.getScrollPosition())},[o]);let X=he(k=>c(Je,{...k,label:D,isWheelScrollActive:v}),[D,v]);return K(un,{children:[K("div",{className:"flex h-full min-h-0 gap-4",children:[c("div",{ref:f,className:"flex min-h-0 w-full sm:w-90",style:J,children:c(xa,{ref:i,itemCount:w,getItem:re,getItemHeight:be,viewportSize:l,initialScrollOffset:a,overscanCount:St,scrollBarOptions:{width:Ct,tapScrollCircleOptions:Tt,renderThumbOverlay:X},behaviorOptions:{pointerDragInputs:Nt,inertiaOptions:Rt,wheelSpeedMultiplier:vt,enableKeyboardNavigation:!1},onRangeChange:N,onScroll:L,contentInsets:{top:xt,bottom:xt},testId:"daily-report-list",className:"relative w-full",contentProps:{role:"list","aria-label":u},children:ne})}),c(ln,{dailyReportItems:e,selectedItem:O,heightStyle:J,autoMarkRead:!T&&t,isActive:r!==null,userId:s})]}),w===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"})}),M&&c(Ta,{isOpen:H,selectedItem:O,onClose:B,autoMarkRead:T&&t,userId:s})]})},Sa=e=>c("div",{...e,className:"px-2 pb-3",style:{height:je},children:K("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:[K("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"})]}),K("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"})]})]})}),ln=({dailyReportItems:e,selectedItem:t,heightStyle:r,autoMarkRead:n=!1,isActive:s=!0,userId:a})=>{let[o,f]=He("article"),[i,u]=He(!1),{draftLabelName:l,fieldLabels:R,sourceTypeConfigs:D}=j(),{report:b,error:v,isLoading:C}=Ee(t?.reportHubId??-1,t?.businessDate??null),T=Z(null),S=Z(null),w=Z(!1);oe(()=>{if(!b)return;let A=b.labels.some(O=>O.name===l);b.reportHubId!==S.current?(S.current=b.reportHubId,A?(u(!0),w.current=!0):(u(!1),w.current=!1)):!A&&i&&w.current&&(u(!1),w.current=!1)},[b,i,l]);let P=!!(a&&b?.userId===a),F=he(()=>{setTimeout(()=>{T.current&&T.current.scrollTo({top:T.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 $=ae(b?.date??t?.businessDate),M=b?.employeeName||b?.author?se(b.employeeName??b.author):"",H=C||!b,B=K(un,{children:[K("div",{className:"space-y-1",children:[c("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:R.businessDate}),c("div",{className:"text-slate-900 text-sm dark:text-slate-100",children:$}),K("div",{className:"flex min-h-4 items-center gap-1 text-slate-500 text-xs dark:text-slate-300",children:[K("span",{children:[R.author,":"]}),H?c("div",{"data-skeleton":!0,className:"h-3 w-24 animate-pulse rounded bg-slate-200 dark:bg-slate-700"}):c("span",{children:M}),(()=>{let A=b?.sourceType,O=A?D?.[A]:void 0;return O?c("span",{className:W("ml-2 inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",O.badgeClassName),children:O.label}):null})()]})]}),K(_t,{value:o,onValueChange:A=>f(A),className:"flex min-h-0 flex-1 flex-col",children:[c(Ke,{className:"grid grid-cols-2 gap-1 rounded-md bg-slate-100 p-1 text-xs dark:bg-slate-800",children:["article","relations"].map(A=>c(qe,{value:A,className:"rounded-md px-2 py-1 font-medium text-slate-600 transition-colors data-[state=active]:bg-white data-[state=active]:text-slate-900 data-[state=active]:shadow-sm dark:text-slate-200 dark:data-[state=active]:bg-slate-900/70 dark:data-[state=active]:text-slate-100",children:A==="article"?R.tabArticle:R.tabRelations},A))}),c(Ae,{ref:T,value:"article",className:"scrollbar-thin flex-1 touch-pan-y overflow-y-auto overflow-x-hidden pt-3 text-sm",children:i?b?c(Et,{report:b,onCancel:()=>u(!1),onPublishSuccess:()=>u(!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(Ca,{report:b,isLoading:C,error:v,selectedItem:t,autoMarkRead:n,isActive:s,onCommentAdded:F,userId:a,onDoubleClick:P?()=>u(!0):void 0})}),c(Ae,{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:R.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:B}):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:B})},Me=({className:e="w-32"})=>c("div",{"data-skeleton":!0,className:`h-4 animate-pulse rounded bg-slate-200 dark:bg-slate-700 ${e}`}),Ca=({report:e,isLoading:t,error:r,selectedItem:n,autoMarkRead:s=!1,isActive:a=!0,onCommentAdded:o,userId:f,onDoubleClick:i})=>{let{toggleStar:u,toggleRead:l,deleteReport:R,user:D}=pe(),{fieldLabels:b,sourceTypeConfigs:v}=j(),{uiComments:C,handleAddComment:T,handleDeleteComment:S,pendingDeleteId:w,setPendingDeleteId:P,resolvedIdMap:F}=gt(e,D,f),{handleToggleRead:$}=wa(e,t,s,a,l),M=n.sourceType??e?.sourceType,H=Te(M,v),B=M?M.toLowerCase()!=="internal":!1,A=H?.allowComment??!B,O=Z(null),J=Z(C.length);oe(()=>{let V=e?.reportHubId??null;if(V!==O.current){O.current=V,J.current=C.length;return}C.length>J.current&&o?.(),J.current=C.length},[C.length,e?.reportHubId,o]);let Q=async V=>{await T(V)},ue=er(()=>e?.content?e.content.replace(/<br\s*\/?\s*>/gi,`
1
+ import{jsx as Bt}from"react/jsx-runtime";var Ze=({orientation:e,thumbCenter:t,label:r,isDragging:n,isTapScrollActive:s,isWheelScrollActive:a})=>r.trim()&&(n||s||a)?Bt("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:Bt("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:Bt("span",{className:"whitespace-nowrap font-semibold text-slate-800 dark:text-slate-100",children:r.trim()})})}):null;import{Paperclip as kn}from"lucide-react";import{jsx as ir,jsxs as Ln}from"react/jsx-runtime";var En=2,et=({count:e,label:t})=>e<=0?null:Ln("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:[ir(kn,{className:"h-3.5 w-3.5","aria-hidden":"true"}),e>=En&&ir("span",{className:"font-semibold text-[10px] leading-none",children:e})]});import{createContext as An,useContext as Pn,useMemo as Mn}from"react";import{jsx as Ut,jsxs as Hn}from"react/jsx-runtime";var lr={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:lr,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})=>Hn("header",{className:"flex flex-wrap items-baseline justify-between gap-2 px-2 py-1",children:[Ut("span",{className:"text-nowrap text-slate-700 text-sm dark:text-slate-200",children:e}),t?Ut("span",{className:"text-slate-600 text-xs dark:text-slate-300",children:t}):null]}),showDevControls:!1},dr=An(tt),ur=({config:e,children:t})=>{let r=Mn(()=>({...tt,...e,fieldLabels:{...lr,...e?.fieldLabels??{}}}),[e]);return Ut(dr.Provider,{value:r,children:t})},z=()=>Pn(dr),Ne=(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 Fe,jsxs as rt}from"react/jsx-runtime";var cr=1024,$t=["B","KB","MB","GB"],_n=e=>{if(e===null||!Number.isFinite(e)||e<0)return null;let t=e,r=0;for(;t>=cr&&r<$t.length-1;)t/=cr,r+=1;return r===0?`${t} ${$t[r]}`:`${t.toFixed(1)} ${$t[r]}`},nt=({attachments:e})=>{let{apiBasePath:t,fieldLabels:r}=z();return e.length===0?null:rt("div",{className:"flex flex-col gap-2","data-testid":"daily-report-attachment-section",children:[Fe("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:r.attachments}),Fe("ul",{className:"flex flex-col gap-1.5",children:e.map(n=>{let s=`${t}/attachment/${n.id}`,a=_n(n.fileSize),o=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:[o?Fe("span",{className:"truncate text-slate-400 text-sm line-through dark:text-slate-500","data-testid":"daily-report-attachment-name",children:n.fileName}):Fe("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",o&&` \xB7 ${r.attachmentMissing}`]})]}),!o&&Fe("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 Bn}from"@heroicons/react/24/outline";import{useState as Un}from"react";var mr=(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]},pr=e=>{if(!e)return"text-gray-700 dark:text-gray-300";let t=e.toLowerCase();return t.includes("red")||t.includes("\u8D64")?"text-red-600 dark:text-red-400":t.includes("green")||t.includes("\u7DD1")?"text-green-600 dark:text-green-400":t.includes("blue")||t.includes("\u9752")?"text-blue-600 dark:text-blue-400":t.includes("yellow")||t.includes("\u9EC4")?"text-yellow-600 dark:text-yellow-400":t.includes("orange")||t.includes("\u6A59")?"text-orange-500 dark:text-orange-400":"text-gray-700 dark:text-gray-300"};var ne=e=>{if(!e)return"-";let t=e.trim();return t===""?"-":t},se=e=>{if(!e)return"-";if(typeof e!="string")return e instanceof Date?se(e.toISOString()):String(e);let t=e.trim();if(t==="")return"-";let r=t.match(/^(\d{4})[-/](\d{2})[-/](\d{2})$/);if(r)return`${r[1]}-${r[2]}-${r[3]}`;let n=new Date(t);if(Number.isNaN(n.getTime()))return t;let s=n.getFullYear(),a=String(n.getMonth()+1).padStart(2,"0"),o=String(n.getDate()).padStart(2,"0");if(t.includes(":")||t.includes("T")){let i=String(n.getHours()).padStart(2,"0"),u=String(n.getMinutes()).padStart(2,"0"),l=String(n.getSeconds()).padStart(2,"0");return`${s}-${a}-${o}T${i}:${u}:${l}`}return`${s}-${a}-${o}`};import{clsx as On}from"clsx";import{twMerge as Fn}from"tailwind-merge";function W(...e){return Fn(On(e))}import{jsx as ke,jsxs as st}from"react/jsx-runtime";var $n=(e,t,r)=>t===e||typeof e=="number"&&e<0&&r?.get(e)===t||typeof t=="number"&&t<0&&r?.get(t)===e,fr=({comment:e,reportHubId:t,businessDate:r,onOptimisticDelete:n,pendingDeleteId:s,onPendingDeleteIdChange:a,onTrashClick:o,resolvedIdMap:f})=>{let[i,u]=Un(!1),l=$n(e.id,s,f),R=D=>{D.stopPropagation(),D.preventDefault(),a(null),u(!0),typeof e.id=="number"&&n(e.id)};return st("li",{"data-comment-id":e.id,"data-deleted":i?"true":void 0,className:W("group relative rounded-xl border border-slate-200 bg-white p-3 dark:border-slate-700 dark:bg-slate-900/70",e.isMine&&"border-blue-200 bg-blue-50 dark:border-blue-800/70 dark:bg-blue-950/40",i&&"hidden",l?"z-50":"z-0 hover:z-10"),children:[st("div",{className:"mb-1 flex items-center justify-between",children:[ke("div",{className:W("font-semibold text-xs",pr(e.color)),children:ne(e.authorName)}),st("div",{className:"flex items-center gap-2",children:[e.createdAt&&ke("div",{className:"text-[10px] text-slate-400",children:se(e.createdAt)}),e.isMine&&!e.isLegacy&&st("div",{className:"relative",children:[ke("button",{type:"button",className:W("transition-colors",l?"text-red-500":"text-slate-400 hover:text-red-500"),title:"\u524A\u9664","aria-label":"\u524A\u9664",onClick:D=>o(D,e.id),children:ke(Bn,{className:"h-4 w-4"})}),l&&ke("button",{type:"button","data-delete-confirmation":!0,className:"fade-in zoom-in-95 absolute top-full right-0 z-20 mt-1 animate-in whitespace-nowrap rounded-md bg-red-600 px-3 py-1.5 font-bold text-white text-xs shadow-lg duration-200 hover:bg-red-700 active:scale-95",onClick:R,children:"\u524A\u9664\u3059\u308B"})]})]})]}),ke("div",{className:"whitespace-pre-wrap text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:e.content})]})};import{useCallback as Vn,useEffect as br,useRef as gr,useState as zn}from"react";import{jsx as Se,jsxs as Wn}from"react/jsx-runtime";var jn=(e,t)=>{let r=gr(null);return br(()=>{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]),br(()=>()=>{r.current&&clearTimeout(r.current)},[]),{handleTrashClick:Vn((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:o})=>{let{handleTrashClick:f}=jn(s,a);return e.length===0?null:Se("ul",{className:"mb-3 space-y-2",children:e.map(i=>Se(fr,{comment:i,reportHubId:t,businessDate:r,onOptimisticDelete:n||(()=>{}),pendingDeleteId:s,onPendingDeleteIdChange:a,onTrashClick:f,resolvedIdMap:o},i.id))})},ot=({reportHubId:e,businessDate:t,onAddComment:r})=>{let[n,s]=zn(!1),a=gr(null);return Wn("form",{className:"flex gap-2",ref:a,onSubmit:async f=>{f.preventDefault();let u=new FormData(f.currentTarget).get("content")?.trim();if(u&&r){s(!0),a.current?.reset();try{await r(u)}catch{if(a.current){let l=a.current.elements.namedItem("content");l&&(l.value=u)}}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{VirtualScroll as Qs}from"@aiquants/virtualscroll";import{Check as Zs,Star as tn,Trash2 as ea}from"lucide-react";import{useCallback as xe,useEffect as De,useMemo as er,useRef as fe,useState as At}from"react";import{createContext as Es,useCallback as ve,useContext as Ls,useEffect as Jt,useRef as ae,useState as Tt}from"react";var hr=e=>typeof e=="object"&&e!==null&&Array.isArray(e.items),it=(e,t)=>e.businessDate!==t.businessDate?e.businessDate===null?1:t.businessDate===null||e.businessDate>t.businessDate?-1:1:t.reportHubId-e.reportHubId,yr=e=>{for(let t=1;t<e.length;t++)if(it(e[t-1],e[t])>0)return!1;return!0},Vt=(e,t)=>{let r=e.filter(a=>a.reportHubId!==t.reportHubId),n=0,s=r.length;for(;n<s;){let a=n+s>>1;it(r[a],t)<=0?n=a+1:s=a}return r.splice(n,0,t),r};var Ee=(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 Yn,useEffect as wr,useRef as Xn,useState as xt}from"react";var Gn=/^\d{4}-\d{2}-\d{2}$/,Kn=/^\d{4}\/\d{2}\/\d{2}$/,lt=e=>e<10?`0${e}`:`${e}`,xr=e=>{if(Number.isNaN(e.getTime()))return null;let t=e.getFullYear(),r=lt(e.getMonth()+1),n=lt(e.getDate());return`${t}-${r}-${n}`},zt=(e=new Date)=>Number.isNaN(e.getTime())?zt(new Date):`${e.getFullYear()}-${lt(e.getMonth()+1)}-${lt(e.getDate())}`,Be=e=>{if(e==null)return null;if(e instanceof Date)return xr(e);let t=e.trim();if(t==="")return null;if(Gn.test(t))return t;if(Kn.test(t))return t.replaceAll("/","-");let r=new Date(t);return xr(r)};import{tapScrollCircleSampleVisual as qn}from"@aiquants/virtualscroll";var Le=120,vr=1e3,jt=160,dt=6,Ue=jt-dt,ut=.8,ct={maxVelocity:18,deceleration:.0018,startVelocityThreshold:.03},mt=20,Rr=6,pt={reportHubId:-1,businessDate:null},Dr={report:null,error:null,isLoading:!1,isRefetching:!1},ft=240,bt=15,gt=8,Ir=3,ht={enabled:!0,renderVisual:qn,maxSpeedCurve:{exponentialSteepness:3,exponentialScale:8},maxSpeedMultiplier:8},yt=["pen","touch"];var Cr=Ee(1,"use-daily-report"),Tr=(e,t)=>{if(typeof window>"u")return t;let r=window[e];return typeof r=="number"&&!Number.isNaN(r)?r:t},Wt=Tr("__DAILY_REPORT_CACHE_TTL__",3e5),Jn=Tr("__DAILY_REPORT_CACHE_REVIVE_MS__",6e4),_={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=>{_.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=Be(e.date),s=n?this.lists.get(n):null;if(s&&n){let o=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: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()){Cr.warn(`[DailyReportCache] Stale update skipped id=${e}`);return}this.set({...n.data,...t},Math.max(n.expiresAt,Date.now()+Jn))}},delete(e,t){this.reports.delete(e);let r=Be(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+Wt;for(let[o,f]of this.recentDeletes)n-f>1e4&&this.recentDeletes.delete(o);let a=e.map(o=>{if(this.locks.has(o.reportHubId))return o;let f=this.lastMutations.get(o.reportHubId);if(f&&r>0&&f>r)return this.reports.get(o.reportHubId)?.data??o;let i=this.reports.get(o.reportHubId)?.data,u=this.merge(o,i);return this.set(u,s,!1),u});return t&&this.lists.set(t,{data:a,expiresAt:s}),a}},Nr=(e,t,r=!0)=>_.set(e,t,r),ce=(e,t)=>_.getReport(e,t?.ignoreExpiry),me=(e,t)=>_.update(e,t),vt=(e,t)=>_.delete(e,t),$e=()=>_.clear(),Ve=e=>{_.locks.add(e),_.lastMutations.set(e,Date.now())},ze=e=>{_.locks.delete(e),_.lastMutations.set(e,Date.now())},kr=e=>_.recentDeletes.set(e,Date.now()),Er=(e,t)=>{let r=n=>{n===e&&t()};return _.listeners.add(r),()=>{_.listeners.delete(r)}},Ce=(e,t)=>{_.prune(),_.set(t,Date.now()+Wt)},Lr=e=>{_.prune();let t=_.getReport(e.reportHubId,!0),r=new Map;for(let s of t?.commentItems??[])r.set(s.id,s.isMine??!1);let n=(e.commentItems??[]).map(s=>({...s,isMine:r.get(s.id)??!1}));_.set({...e,isRead:t?.isRead??!1,isStarred:t?.isStarred??!1,commentItems:n},Date.now()+Wt)},Qn=async(e,t)=>{let r=_.getReport(t);if(r)return r;let n=_.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 f=o.report;return _.cacheMany([f],null,s)[0]}).finally(()=>_.pendingReports.delete(t));return _.pendingReports.set(t,a),a},Ar=async(e,t)=>{let r=_.getList(t);if(r)return r;let n=_.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 _.cacheMany(o.reports??[],t,s)}).finally(()=>_.pendingLists.delete(t));return _.pendingLists.set(t,a),a},Ae=(e,t)=>{let{apiBasePath:r}=z(),[n,s]=xt(()=>_.getReport(e)),[a,o]=xt(null),[f,i]=xt(!1),[u,l]=xt(!1),R=Xn({id:e,token:0});return wr(()=>{let D=b=>{if(b===e){let v=_.getReport(e,!0);s(v)}};return _.listeners.add(D),()=>{_.listeners.delete(D)}},[e]),wr(()=>{let D=Be(t),b=(R.current.token||0)+1;if(R.current={id:e,token:b},e<=0){s(null),o(e===0?new Error("Invalid ID"):null),i(!1),l(!1);return}let v=_.getReport(e,!0),S=!1;if(v)S=!_.isValid(_.reports.get(e)?.expiresAt??0);else if(D){let H=_.getList(D,!0)?.find(O=>O.reportHubId===e);H&&(v=H,S=!_.isValid(_.lists.get(D)?.expiresAt??0))}if(s(v),v&&!S){o(null),i(!1),l(!1);return}i(!v),l(!0);let C=setTimeout(async()=>{if(R.current.token===b)try{let I=null;D?I=(await Ar(r,D)).find(O=>O.reportHubId===e)??null:I=await Qn(r,e),R.current.token===b&&(s(I),o(null))}catch(I){R.current.token===b&&o(I instanceof Error?I:new Error("Load failed"))}finally{R.current.token===b&&(i(!1),l(!1))}},v?Le:0);return()=>clearTimeout(C)},[e,t,r]),{report:n,error:a,isLoading:f,isRefetching:u}},Pr=()=>{let{apiBasePath:e}=z();return Yn(t=>{let r=Be(t);r&&!_.getList(r)&&Ar(e,r).catch(n=>Cr.warn("Prefetch error",r,n))},[e])};import{useEffect as cs}from"react";import{z as p}from"zod";var Zn=p.object({name:p.string().nullish(),affiliation:p.string().nullish()}),es=p.object({name:p.string().nullish(),text:p.string().nullish(),color:p.string().nullish()}),ts=p.object({id:p.number(),name:p.string().nullish(),color:p.string().nullish()}),Mr=p.object({id:p.number(),userId:p.string().nullish(),userName:p.string().nullish(),content:p.string().nullish(),createdAt:p.string().nullish(),isMine:p.boolean()}),rs=p.object({id:p.string(),fileName:p.string(),fileType:p.string().nullable(),fileSize:p.number().nullable(),createdAt:p.string().nullable(),state:p.enum(["present","absent","unknown"])}),Gt=p.object({reportHubId:p.number(),date:p.string().nullish(),createdAt:p.string().nullish(),author:p.string().nullish(),userId:p.string().nullish(),sourceType:p.string().nullish(),employeeName:p.string().nullish(),updatedBy:p.string().nullish(),updatedAt:p.string().nullish(),category:p.string().nullish(),creationCategory:p.string().nullish(),visitTimeFrom:p.string().nullish(),visitTimeTo:p.string().nullish(),customerName:p.string().nullish(),interviewers:p.array(Zn),subject:p.string().nullish(),content:p.string().nullish(),comments:p.array(es),isRead:p.boolean(),isStarred:p.boolean(),labels:p.array(ts),commentItems:p.array(Mr),attachments:p.array(rs).default([])}),ns=p.object({type:p.literal("connected")}),ss=p.object({type:p.literal("status-update"),reportHubId:p.number(),statusType:p.enum(["star","read"]),value:p.boolean(),clientTempId:p.string(),recipientRawUserId:p.number().optional()}),as=p.object({type:p.literal("comment-add"),reportHubId:p.number(),comment:Mr,clientTempId:p.string(),recipientRawUserId:p.number().optional()}),os=p.object({type:p.literal("comment-delete"),reportHubId:p.number(),commentId:p.number(),clientTempId:p.string(),recipientRawUserId:p.number().optional()}),is=p.object({type:p.literal("report-create"),reportHubId:p.number(),report:Gt,clientTempId:p.string(),recipientRawUserId:p.number().optional()}),ls=p.object({type:p.literal("report-update"),reportHubId:p.number(),report:Gt,clientTempId:p.string(),recipientRawUserId:p.number().optional()}),ds=p.object({type:p.literal("report-publish"),reportHubId:p.number(),report:Gt,clientTempId:p.string(),recipientRawUserId:p.number().optional()}),us=p.object({type:p.literal("report-delete"),reportHubId:p.number(),clientTempId:p.string()}),Hr=p.discriminatedUnion("type",[ns,ss,as,os,is,ls,ds,us]);var je=Ee(1,"daily-report-sse-connection"),_r=({isSseEnabled:e,onMessage:t})=>{let{ssePath:r}=z();cs(()=>{if(!e)return;let n=null,s=null,a=0,o,f=()=>{n?.close(),n=new EventSource(`${r}${o?`?lastEventId=${o}`:""}`),n.onopen=()=>{a=0,je.info("SSE Connected")},n.onmessage=i=>{i.lastEventId&&(o=i.lastEventId);try{let u=JSON.parse(i.data),l=Hr.safeParse(u);if(!l.success){je.error("SSE Validation Error:",l.error.flatten(),"raw message:",u);return}if(l.data.type==="connected"){je.info("SSE Subscribe Ready");return}t(l.data)}catch(u){je.error("SSE Parse Error",u)}},n.onerror=i=>{n?.close(),n=null,a++;let u=Math.min(2e3*2**(a-1),3e4);je.error(`SSE Error. Retrying in ${u}ms (attempt ${a})...`,i),s=setTimeout(f,u)}};return f(),()=>{n&&n.close(),s&&clearTimeout(s)}},[e,t,r])};import{useSyncExternalStore as xs}from"react";var ms=50,ps=1e3,fs=3e4,bs=6,gs=3e4,Rt=Symbol("read-stall"),hs="/daily_report/api",ys=/^\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??hs,this.fetchFn=t.fetchFn??((r,n)=>fetch(r,n)),this.setTimeoutFn=t.setTimeoutFn??((r,n)=>setTimeout(r,n)),this.clearTimeoutFn=t.clearTimeoutFn??(r=>clearTimeout(r)),this.warn=t.warn??((...r)=>console.warn(...r)),this.readStallTimeoutMs=t.readStallTimeoutMs??gs,this.publishCoalesceMs=t.publishCoalesceMs??ms,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>=bs){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(ps*2**(this.consecutiveFailures-1),fs))}}pruneUnseenItems(){let t=this.activeSeenIds;if(this.activeSeenIds=null,!!t)for(let r of Array.from(this.itemMap.keys()))t.has(r)||this.itemMap.delete(r)}async streamOnce(t){let r=new AbortController;this.activeAbortController=r;try{let n=this.fetchFn(this.buildStreamUrl(t),{signal:r.signal,headers:{Accept:"application/x-ndjson"},cache:"no-store"}),s=null,a=this.readStallTimeoutMs<=0?await n:await Promise.race([n,new Promise(R=>{s=this.setTimeoutFn(()=>R(Rt),this.readStallTimeoutMs*3)})]).finally(()=>{s!==null&&this.clearTimeoutFn(s)});if(a===Rt)return r.abort(),n.catch(()=>{}),{kind:"retryable",error:new Error("Stream stalled: no response headers within timeout")};if(a.status===401||a.status===403)return{kind:"auth-required"};if(!(a.ok&&a.body))return{kind:"retryable",error:new Error(`ids stream HTTP ${a.status}`)};let o=a.body.getReader(),f=new TextDecoder,i="",u=!1,l=!1;for(;;){let R=await this.readWithStallGuard(o);if(R===Rt)return r.abort(),o.cancel().catch(()=>{}),{kind:"retryable",error:new Error("Stream stalled: no data within timeout")};let{done:D,value:b}=R;if(D)break;let v=(i+f.decode(b,{stream:!0})).split(`
2
+ `);i=v.pop()??"";let S=!1;for(let N of v){if(N.trim()==="")continue;let C;try{C=JSON.parse(N)}catch{this.warn("[DailyReportIdsStream] skipped malformed line");continue}if(!hr(C)){u=!0;continue}S=this.absorbChunkItems(C.items)||S,typeof C.total=="number"&&Number.isFinite(C.total)&&C.total!==this.state.totalCount&&this.publish({totalCount:C.total}),C.nextCursor&&(C.nextCursor.businessDate===null||ys.test(C.nextCursor.businessDate))&&(this.lastCursor=C.nextCursor),C.isLast&&(l=!0)}S&&(this.consecutiveFailures=0,this.schedulePublishItems())}return u?{kind:"retryable",error:new Error("Stream interrupted by server error")}:l?{kind:"complete"}:{kind:"retryable",error:new Error("Stream ended before completion")}}catch(n){return n instanceof Error&&n.name==="AbortError"?{kind:"aborted"}:{kind:"retryable",error:n instanceof Error?n:new Error(String(n))}}finally{this.activeAbortController===r&&(this.activeAbortController=null)}}async readWithStallGuard(t){if(this.readStallTimeoutMs<=0)return t.read();let r=null,n=new Promise(s=>{r=this.setTimeoutFn(()=>s(Rt),this.readStallTimeoutMs)});try{return await Promise.race([t.read(),n])}finally{r!==null&&this.clearTimeoutFn(r)}}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 vs=6e4,q=null,Kt=new Set,Or={items:[],loadedCount:0,totalCount:null,phase:"idle",isRevalidating:!1,hasCompletedOnce:!1,completedAt:null,error:null},Fr=()=>{typeof window<"u"&&window.location.reload()},qt=()=>{for(let e of Kt)e()},wt=()=>{q&&(q.unsubscribe(),q.client.dispose(),q=null,qt())},It=e=>{if(typeof window>"u")return;let t=e.apiBasePath??tt.apiBasePath;if(q&&(q.userKey!==e.userKey||q.apiBasePath!==t)&&(q.userKey!==e.userKey&&$e(),wt()),!q){let r=new Dt({apiBasePath:t});q={client:r,userKey:e.userKey,apiBasePath:t,unsubscribe:r.subscribe(qt)},r.start(),qt();return}Yt(q)},Yt=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>vs&&e.client.refresh()},Br=e=>{if(!(typeof window>"u")){if(!q){It(e);return}if(q.userKey!==e.userKey){$e(),wt(),It(e);return}Yt(q)}},Ur=()=>{typeof window>"u"||!q||Yt(q)},We=e=>{q?.client.applyExternalUpsert(e)},St=e=>{q?.client.applyExternalRemoval(e)},Ct=()=>{q?.client.retry()},Xt=(e={})=>{q?.client.refresh(e)},$r=()=>q?.userKey,Rs=e=>(Kt.add(e),()=>Kt.delete(e)),Ds=()=>q?.client.getState()??Or,Is=()=>Or,Pe=()=>xs(Rs,Ds,Is),Fo=()=>{wt()};typeof import.meta<"u"&&import.meta.hot&&import.meta.hot.dispose(()=>{wt()});import{createContext as ws,useCallback as Vr,useContext as Ss,useEffect as Cs,useMemo as Ts,useRef as zr,useState as Ns}from"react";import{jsx as jr,jsxs as Wr}from"react/jsx-runtime";var ks=8e3,Gr=ws({notifyError:()=>{}}),Kr=()=>Ss(Gr),qr=({children:e})=>{let{onError:t}=z(),[r,n]=Ns(null),s=zr(t);s.current=t;let a=zr(null),o=Vr(u=>{let l=s.current;if(l){l(u);return}n(u)},[]),f=Vr(()=>{a.current!==null&&(clearTimeout(a.current),a.current=null),n(null)},[]);Cs(()=>{if(r)return a.current=setTimeout(()=>n(null),ks),()=>{a.current!==null&&(clearTimeout(a.current),a.current=null)}},[r]);let i=Ts(()=>({notifyError:o}),[o]);return Wr(Gr.Provider,{value:i,children:[e,r&&Wr("div",{role:"alert","data-testid":"daily-report-error-banner",className:"fade-in slide-in-from-bottom-2 fixed inset-x-0 bottom-4 z-[100] mx-auto flex w-fit max-w-[92vw] animate-in items-center gap-3 rounded-lg border border-red-300 bg-red-600 px-4 py-2.5 text-sm text-white shadow-lg duration-200 dark:border-red-500/60 dark:bg-red-700",children:[jr("span",{className:"font-medium",children:r.message}),jr("button",{type:"button","aria-label":"\u9589\u3058\u308B",onClick:f,className:"shrink-0 rounded px-1.5 py-0.5 font-bold text-white/90 transition-colors hover:bg-red-700 hover:text-white dark:hover:bg-red-800",children:"\u2715"})]})]})};import{jsx as Hs}from"react/jsx-runtime";var ye=Ee(1,"daily-report-action-context"),As={create:"\u65E5\u5831\u306E\u4F5C\u6210",update:"\u65E5\u5831\u306E\u4FDD\u5B58",publish:"\u65E5\u5831\u306E\u516C\u958B",delete:"\u65E5\u5831\u306E\u524A\u9664",addComment:"\u30B3\u30E1\u30F3\u30C8\u306E\u6295\u7A3F",deleteComment:"\u30B3\u30E1\u30F3\u30C8\u306E\u524A\u9664",toggleStar:"\u30B9\u30BF\u30FC\u306E\u66F4\u65B0",toggleRead:"\u65E2\u8AAD\u72B6\u614B\u306E\u66F4\u65B0"},Ps=e=>`${As[e]??"\u64CD\u4F5C"}\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u6642\u9593\u3092\u304A\u3044\u3066\u518D\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002`,Ms=Object.freeze([]),Qt=globalThis.__DailyReportActionContext??Es(null);globalThis.__DailyReportActionContext=Qt;var pe=()=>{let e=Ls(Qt);if(!e)throw new Error("useDailyReportActionContext must be used within a DailyReportActionProvider");return e},Ge=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"},Yr=({children:e,user:t,initialItems:r=Ms,userId:n})=>{let{apiBasePath:s,draftLabelName:a}=z(),{notifyError:o}=Kr(),f=ae(o);f.current=o;let i=ae(new Map),u=ae(new Map),l=ae(new Map),R=ae(new Map),D=ae(new Map),[b,v]=Tt(0),[S,N]=Tt(r),[C,I]=Tt(!1),H=ae(!1),O=ae(new Map),j=ae(new Set),L=ae(new Set),M=ae(new Set),B=Pe(),F=ae(!1);F.current=B.phase==="complete"&&!B.isRevalidating;let k=ve(()=>$r()===(n??null),[n]),J=ve(async()=>{ye.info("[DailyReportActionProvider] Refetching data without page reload..."),Xt(),v(m=>m+1),_.listeners.forEach(m=>{m(-1)})},[]),ie=ve(async()=>{ye.info("[DailyReportActionProvider] Clearing client & server/DB cache and refetching data without page reload..."),$e(),L.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 g=await d.json().catch(()=>null);ye.warn("[DailyReportActionProvider] Failed to clear server-side cache:",d.status,g)}}catch(m){ye.warn("[DailyReportActionProvider] Failed to clear server-side cache:",m)}k()&&(Xt({forceRefresh:!0}),v(m=>m+1),_.listeners.forEach(m=>{m(-1)}))},[s,k]),te=ae(new Map),ue=ae(()=>{}),re=ve((m,d)=>{let g=te.current,h=g.get(m);if(h){h.messages.push(d);return}let x={messages:[d],unsubscribe:()=>{},timer:setTimeout(()=>{let w=g.get(m);w&&(w.unsubscribe(),g.delete(m),ye.warn(`[SSE Queue] Expired: reportHubId=${m}, dropped=${w.messages.length} messages`))},3e4)};x.unsubscribe=Er(m,()=>{let w=g.get(m);if(w&&ce(m,{ignoreExpiry:!0})){w.unsubscribe(),clearTimeout(w.timer),g.delete(m),ye.info(`[SSE Queue] Replaying ${w.messages.length} messages for reportHubId=${m}`);for(let A of w.messages)ue.current(A)}}),g.set(m,x)},[]),le=m=>{M.current.add(m),setTimeout(()=>{M.current.delete(m)},3e4)},T=ve(m=>!!m&&M.current.has(m),[]),P=ve((m,d)=>{d!==void 0&&We({reportHubId:m,businessDate:d??null}),N(g=>{let h=g.find(w=>w.reportHubId===m),x=d??h?.businessDate??null;return Vt(g,{reportHubId:m,businessDate:x,sourceType:h?.sourceType})})},[]),Y=()=>{n&&(H.current=!0,I(m=>!m))};Jt(()=>{if(!n)return;let m=setTimeout(()=>{H.current||I(!0)},vr);return()=>clearTimeout(m)},[n]);let E=ve(m=>{k()&&(L.current.add(m),St(m),N(d=>d.filter(g=>g.reportHubId!==m)))},[k]),[$,X]=Tt(r);if(r!==$){X(r);let m=new Map;for(let g of r)L.current.has(g.reportHubId)||m.set(g.reportHubId,g);for(let g of S)m.has(g.reportHubId)||L.current.has(g.reportHubId)||m.set(g.reportHubId,g);let d=Array.from(m.values());yr(d)||d.sort(it),N(d)}Jt(()=>{if(F.current){let m=new Set(r.map(d=>d.reportHubId));for(let d of L.current)m.has(d)||L.current.delete(d)}},[r]);let Ie=ve(m=>{if(k()&&!T(m.clientTempId))switch(m.type){case"comment-add":{let{comment:d,reportHubId:g}=m,h=ce(g,{ignoreExpiry:!0});if(h){if(h.commentItems.some(G=>G.id===d.id))return;let x=!1,w=i.current.get(g);if(w){for(let[G,de]of w.entries())if(de===d.content){w.delete(G),D.current.set(G,d.id),x=!0;break}}let A={...d,userName:d.userName||(x?Ge(t):"Unknown"),createdAt:d.createdAt||new Date().toISOString(),isMine:x},V={...h,commentItems:[...h.commentItems,A].sort((G,de)=>new Date(G.createdAt||0).getTime()-new Date(de.createdAt||0).getTime())};Ce(g,V),Ve(g),ze(g),v(G=>G+1)}else re(g,m);break}case"comment-delete":{let{commentId:d,reportHubId:g}=m,h=ce(g,{ignoreExpiry:!0});if(h){let x={...h,commentItems:h.commentItems.filter(w=>w.id!==d)};Ce(g,x),Ve(g),ze(g),v(w=>w+1)}else re(g,m);break}case"status-update":{let{statusType:d,value:g,reportHubId:h}=m,x=ce(h,{ignoreExpiry:!0});if(d==="star")if(l.current.get(h)===g&&l.current.delete(h),x){let w={...x,isStarred:g};Ce(h,w),v(A=>A+1)}else re(h,m);else if(d==="read")if(R.current.get(h)===g&&R.current.delete(h),x){let w={...x,isRead:g};Ce(h,w),v(A=>A+1)}else re(h,m);break}case"report-delete":{let{reportHubId:d}=m;j.current.delete(d),L.current.add(d),St(d);let g=te.current.get(d);g&&(g.unsubscribe(),clearTimeout(g.timer),te.current.delete(d));let h=ce(d,{ignoreExpiry:!0});h?.date&&(vt(d,h.date),v(x=>x+1)),N(x=>x.filter(w=>w.reportHubId!==d));break}case"report-create":case"report-update":case"report-publish":{let{report:d}=m;Lr(d),(m.type==="report-create"||m.type==="report-publish")&&(j.current.add(d.reportHubId),P(d.reportHubId,d.date)),v(g=>g+1);break}}},[T,k,P,t,re]);ue.current=Ie,Jt(()=>()=>{for(let m of te.current.values())m.unsubscribe(),clearTimeout(m.timer);te.current.clear()},[]),_r({isSseEnabled:C,onMessage:Ie});let we=async(m,d,g,h,x,w)=>{w?.skipLock||Ve(m),x.onOptimistic?.();let A=h.clientTempId||crypto.randomUUID();le(A);let V=new FormData;V.append("intent",d),V.append("reportHubId",String(m)),V.append("businessDate",g),V.append("operationTimestamp",String(Date.now())),V.append("clientTempId",A);for(let[G,de]of Object.entries(h))G!=="clientTempId"&&V.append(G,de);try{let G=await fetch(`${s}/action`,{method:"POST",body:V,headers:{Accept:"application/json"}});if(!G.ok){let or=new Error(`Failed to ${d}`);throw Object.assign(or,{status:G.status}),or}let de=await G.json();if(de.status!=="OK"||d!=="create"&&String(de.reportHubId)!==String(m))throw new Error(`Invalid response for ${d}`);if(typeof de.clientTempId!="string"||de.clientTempId!==A)throw new Error(`Invalid clientTempId for ${d}`);if(!k())throw ye.warn(`[executeAction] ${d} resolved after a user switch; discarding continuation`),new Error(`Stale continuation for ${d}`);return await x.onSuccess?.(de)}catch(G){throw ye.error(`${d} failed:`,G),k()&&(x.onFailure?.(),f.current({operation:d,message:Ps(d),cause:G})),G}finally{w?.keepLock||w?.skipLock||ze(m)}},Rn=async(m,d,g)=>{let h=Number(m),x=-1*Date.now(),w=we(h,"addComment",g,{content:d,clientTempId:String(x)},{onOptimistic:()=>{i.current.has(h)||i.current.set(h,new Map),i.current.get(h)?.set(x,d),v(A=>A+1)},onSuccess:A=>{if(!A.newComment)throw new Error("No new comment returned");let V=A.newComment.id;D.current.set(x,V),i.current.get(h)?.delete(x);let G=ce(h,{ignoreExpiry:!0});return G&&!G.commentItems.some(de=>de.id===V)&&me(h,{commentItems:[...G.commentItems,{...A.newComment,id:V,isMine:!0,userName:Ge(t)}],updatedAt:A.updatedAt}),V},onFailure:()=>{i.current.get(h)?.delete(x)}},{skipLock:!0}).finally(()=>O.current.delete(x));O.current.set(x,w),await w},Dn=async(m,d,g)=>{let h=Number(m);u.current.has(h)||u.current.set(h,new Set),u.current.get(h)?.add(d),v(w=>w+1);let x=d;if(d<0){let w=D.current.get(d);if(w!==void 0)x=w;else{let A=O.current.get(d);if(!A)return;try{x=await A}catch{return}}}await we(h,"deleteComment",g,{commentId:String(x)},{onSuccess:w=>{let A=typeof w.deletedCommentId=="string"?Number(w.deletedCommentId):x,V=ce(h,{ignoreExpiry:!0});V&&(me(h,{commentItems:V.commentItems.filter(G=>G.id!==A),updatedAt:w.updatedAt}),kr(A)),u.current.get(h)?.delete(d)},onFailure:()=>{u.current.get(h)?.delete(d)}},{skipLock:!0})},In=async(m,d,g)=>{let h=Number(m);await we(h,"toggleStar",g,{isStarred:String(d)},{onOptimistic:()=>{me(h,{isStarred:d}),l.current.set(h,d),v(x=>x+1)},onSuccess:x=>{x.updatedStatus&&typeof x.updatedStatus.isStarred=="boolean"&&ce(h,{ignoreExpiry:!0})&&(me(h,{isStarred:x.updatedStatus.isStarred,updatedAt:x.updatedAt}),v(A=>A+1)),l.current.delete(h)},onFailure:()=>{me(h,{isStarred:!d}),l.current.delete(h)}},{skipLock:!0})},sr=async(m,d,g)=>{let h=Number(m);await we(h,"toggleRead",g,{isRead:String(d)},{onOptimistic:()=>{me(h,{isRead:d}),R.current.set(h,d),v(x=>x+1)},onSuccess:x=>{x.updatedStatus&&typeof x.updatedStatus.isRead=="boolean"&&ce(h,{ignoreExpiry:!0})&&(me(h,{isRead:x.updatedStatus.isRead,updatedAt:x.updatedAt}),v(A=>A+1)),R.current.delete(h)},onFailure:()=>{me(h,{isRead:!d}),R.current.delete(h)}},{skipLock:!0})},ar=ae(sr);ar.current=sr;let wn=ve((m,d,g)=>ar.current(m,d,g),[]),Sn=async m=>{let d=-1*Date.now(),g=new Date().toISOString(),h={reportHubId:d,date:m,createdAt:g,author:Ge(t),userId:t?.id??"unknown",sourceType:"Internal",employeeName:Ge(t),updatedBy:Ge(t),updatedAt:g,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:[]};Nr(h,Date.now()+3e5,!1),N(x=>[{reportHubId:d,businessDate:m},...x]);try{let x=await we(0,"create",m,{clientTempId:String(d)},{onSuccess:A=>A});if(x.clientTempId&&x.clientTempId!==String(d))throw ye.warn(`[createReport] ID mismatch. req=${d}, res=${x.clientTempId}`),new Error("Optimistic ID mismatch");let w=Number(x.reportHubId);return We({reportHubId:w,businessDate:m}),Ve(w),x.report&&(Ce(w,x.report),v(A=>A+1)),N(A=>A.some(V=>V.reportHubId===w)?A.filter(V=>V.reportHubId!==d):A.map(V=>V.reportHubId===d?{...V,reportHubId:w}:V)),setTimeout(()=>ze(w),1e3),w}catch(x){throw ye.error("[createReport] Failed or mismatched",x),N(w=>w.filter(A=>A.reportHubId!==d)),x}},Cn=async(m,d,g)=>{let h=Number(m);await we(h,"update",g,{...d.title&&{title:d.title},...d.content&&{content:d.content}},{onSuccess:()=>{let x=ce(h,{ignoreExpiry:!0});x&&(me(h,{subject:d.title??x.subject,content:d.content??x.content}),v(w=>w+1))}})},Tn=async(m,d)=>{let g=Number(m),h=ce(g,{ignoreExpiry:!0}),x=h?.labels||[];await we(g,"publish",d,{},{onOptimistic:()=>{if(h){let w=h.labels.filter(A=>A.name!==a);me(g,{labels:w}),v(A=>A+1)}},onSuccess:w=>{w.report&&(Ce(g,w.report),v(A=>A+1)),We({reportHubId:g,businessDate:d})},onFailure:()=>{me(g,{labels:x}),v(w=>w+1)}},{skipLock:!0})},Nn=async(m,d)=>{let g=Number(m),h=S.find(x=>x.reportHubId===g);L.current.add(g),St(g),N(x=>x.filter(w=>w.reportHubId!==g));try{await we(g,"delete",d,{},{onSuccess:x=>{vt(g,d)}})}catch(x){if(x.status===404){vt(g,d);return}if(!k())return;L.current.delete(g),We({reportHubId:g,businessDate:h?.businessDate??d}),h&&N(A=>A.some(V=>V.reportHubId===g)?A:Vt(A,h))}};return Hs(Qt.Provider,{value:{user:t,pendingAddCommentIds:i,pendingDeleteCommentIds:u,pendingStarUpdates:l,pendingReadUpdates:R,resolvedIdMap:D,version:b,items:S,isSseEnabled:C,toggleSse:Y,addComment:Rn,deleteComment:Dn,toggleStar:In,toggleRead:wn,createReport:Sn,updateReport:Cn,publishReport:Tn,deleteReport:Nn,removeStaleItem:E,refetchData:J,clearCacheAndRefetch:ie},children:e})};import{useCallback as Xr,useMemo as _s,useRef as Os,useState as Fs}from"react";var Nt=(e,t,r)=>{let{pendingAddCommentIds:n,pendingDeleteCommentIds:s,resolvedIdMap:a,version:o,addComment:f,deleteComment:i}=pe(),[u,l]=Fs(null),R=Xr(S=>e&&i(e.reportHubId,S,e.date??""),[e,i]),D=Xr(S=>e&&t?f(e.reportHubId,S,e.date??""):Promise.resolve(),[e,t,f]),b=Os([]);return{uiComments:_s(()=>{if(!e)return[];let S=mr(e.comments,e.commentItems,r),N=s.current.get(e.reportHubId);N?.size&&(S=S.filter(I=>!N.has(I.id)));let C=n.current.get(e.reportHubId);if(C?.size&&t){let I=new Set(S.map(O=>O.id)),H=t.displayName?.trim()||(t.name?`${t.name.familyName??""} ${t.name.givenName??""}`.trim():"")||t.emails?.[0]?.value||"Unknown";for(let[O,j]of C){if(N?.has(O)||I.has(O))continue;let L=a.current.get(O);L&&I.has(L)||S.some(M=>M.isMine&&M.content===j&&typeof M.id=="number"&&M.id>0)||S.push({id:O,authorName:H,content:j,createdAt:new Date().toISOString(),isMine:!0,isLegacy:!1})}}return JSON.stringify(S)===JSON.stringify(b.current)?b.current:(b.current=S,S)},[e,t,r,s,n,a,o]),handleAddComment:D,handleDeleteComment:R,pendingDeleteId:u,setPendingDeleteId:l,resolvedIdMap:a.current}};import{useCallback as Bs,useEffect as Us,useState as $s}from"react";var kt=(e,t)=>{let{enableMutationObserver:r=!1,bottomGap:n=4,minFallbackHeight:s=240}=t??{},[a,o]=$s(600),f=Bs(()=>{if(typeof window>"u")return;let i=e.current;if(!i||i.offsetParent===null&&window.getComputedStyle(i).position!=="fixed")return;let u=k=>Number.parseFloat(k)||0,{top:l}=i.getBoundingClientRect(),R=i.parentElement?.getBoundingClientRect(),D=window.getComputedStyle(document.documentElement),b=u(D.getPropertyValue("--footer-height")),v=u(D.getPropertyValue("--header-height")),S=u(D.getPropertyValue("--scrollbar-height")),N=window.getComputedStyle(i),C=u(N.marginBottom),I=u(N.paddingBottom),H=window.innerHeight-b-S-n,O=R?Math.min(R.bottom,H):H,j=R?Math.max(R.top,v):v,L=Math.max(l,j),M=O-L-C-I,B=Number.isFinite(M)?Math.floor(M):0,F=B>0?B:s;F>0&&Number.isFinite(F)&&o(k=>Math.abs(k-F)>1?F:k)},[n,e,s]);return Us(()=>{if(typeof window>"u")return;let i=null,u=null,l=null,R=null,D=()=>{i!==null&&window.cancelAnimationFrame(i),i=window.requestAnimationFrame(()=>{f()})};D(),u=window.setTimeout(()=>{D()},150);let b=e.current;return typeof ResizeObserver<"u"&&b&&(l=new ResizeObserver(()=>{D()}),l.observe(b),b.parentElement&&l.observe(b.parentElement)),r&&typeof MutationObserver<"u"&&(R=new MutationObserver(()=>{D()}),R.observe(document.documentElement,{attributes:!0,attributeFilter:["style"]})),window.addEventListener("resize",D),()=>{i!==null&&window.cancelAnimationFrame(i),u!==null&&window.clearTimeout(u),window.removeEventListener("resize",D),l?.disconnect(),R?.disconnect()}},[r,f,e]),{viewportHeight:a,updateViewportHeight:f}};import{useEffect as Ys,useRef as Xs,useState as Zt}from"react";import{Slot as Vs}from"@radix-ui/react-slot";import{cva as zs}from"class-variance-authority";import*as Jr from"react";import{jsx as Ws}from"react/jsx-runtime";var js=zs("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"}}),Re=Jr.forwardRef(({className:e,variant:t,size:r,asChild:n=!1,...s},a)=>Ws(n?Vs:"button",{className:W(js({variant:t,size:r,className:e})),ref:a,...s}));Re.displayName="Button";import{jsx as Gs}from"react/jsx-runtime";function Qr({className:e,type:t,...r}){return Gs("input",{type:t,"data-slot":"input",className:W("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 Zr from"@radix-ui/react-label";import{jsx as Ks}from"react/jsx-runtime";function Me({className:e,...t}){return Ks(Zr.Root,{"data-slot":"label",className:W("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 qs}from"react/jsx-runtime";function en({className:e,...t}){return qs("textarea",{"data-slot":"textarea",className:W("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 Et}from"react/jsx-runtime";var Lt=({report:e,onCancel:t,onPublishSuccess:r})=>{let{updateReport:n,publishReport:s}=pe(),[a,o]=Zt(e.subject??""),[f,i]=Zt(e.content??""),[u,l]=Zt(!1),R=Xs(e.reportHubId);Ys(()=>{e.reportHubId!==R.current&&(o(e.subject??""),i(e.content??""),R.current=e.reportHubId)},[e.reportHubId,e.subject,e.content]);let D=async()=>{l(!0);try{await n(e.reportHubId,{title:a,content:f},e.date??"")}catch{}finally{l(!1)}},b=async()=>{l(!0);try{await n(e.reportHubId,{title:a,content:f},e.date??""),await s(e.reportHubId,e.date??""),r?.()}catch{}finally{l(!1)}};return Et("div",{className:"space-y-6 p-1",children:[Et("div",{className:"space-y-2",children:[Te(Me,{htmlFor:`report-title-${e.reportHubId}`,children:"\u30BF\u30A4\u30C8\u30EB"}),Te(Qr,{id:`report-title-${e.reportHubId}`,value:a,onChange:v=>o(v.target.value),placeholder:"\u65E5\u5831\u306E\u30BF\u30A4\u30C8\u30EB\u3092\u5165\u529B",disabled:u})]}),Et("div",{className:"space-y-2",children:[Te(Me,{htmlFor:`report-content-${e.reportHubId}`,children:"\u5185\u5BB9"}),Te(en,{id:`report-content-${e.reportHubId}`,value:f,onChange:v=>i(v.target.value),placeholder:"\u65E5\u5831\u306E\u5185\u5BB9\u3092\u5165\u529B",className:"min-h-50",disabled:u})]}),Et("div",{className:"flex justify-end gap-2",children:[t&&Te(Re,{variant:"outline",onClick:t,disabled:u,children:"\u30AD\u30E3\u30F3\u30BB\u30EB"}),Te(Re,{variant:"secondary",onClick:D,disabled:u,children:"\u4FDD\u5B58"}),Te(Re,{onClick:b,disabled:u,children:"\u516C\u958B"})]})]})};import{jsx as Js}from"react/jsx-runtime";var Ke=({className:e})=>Js("span",{className:W("text-blue-500",e),children:"\u25CF"});import{Fragment as ua,jsx as y,jsxs as U}from"react/jsx-runtime";var ta=(e,t,r)=>{De(()=>{let n=e.current;if(!n)return;let s=new ResizeObserver(()=>{r(t,n.offsetHeight)});return s.observe(n),()=>s.disconnect()},[t,r,e])},ra=({itemId:e,index:t,setSize:r,onHeightMeasured:n,children:s})=>{let a=fe(null);return ta(a,e,n),y("div",{ref:a,className:"px-2 pb-3","data-daily-report-button":e,role:"listitem","aria-posinset":t+1,"aria-setsize":r,children:s})},na=e=>e.affiliation?.trim()?`${e.name}\uFF08${e.affiliation}\uFF09`:e.name??"",rn=({dailyReportItems:e,userId:t,selectedItemId:r,onSelectItem:n,initialScrollOffset:s,onScrollOffsetChange:a})=>{let o=fe(new Map),f=fe(null),i=fe(null),{title:u}=z(),{viewportHeight:l,updateViewportHeight:R}=kt(f,{enableMutationObserver:!0}),D=Pr(),[b,v]=At(""),[S,N]=At(!1),C=fe(null),I=fe(null),H=fe(e);H.current=e;let O=fe(null);De(()=>{if(r!=null&&i.current){let T=e.findIndex(P=>P.reportHubId===r);if(T!==-1){if(O.current?.id===r&&O.current?.index===T)return;i.current.scrollToIndex(T,{align:"top"}),O.current={id:r,index:T}}}else O.current=null},[r,e]);let j=fe(n);j.current=n,De(()=>{if(i.current){let T=document.querySelector('[data-testid="daily-report-detail-list"]');if(T){let P=i.current,Y=Object.assign({},P,{findReportIndex:E=>H.current.findIndex($=>$.reportHubId===E),getReportItem:E=>H.current[E],selectItem:E=>j.current?.(E)});T.__virtualScroll=Y}}});let L=e.length,M=xe(T=>T>=L?pt:e[T],[e,L]),B=xe((T,P)=>{if(L===0)return;let Y=Math.max(0,T),E=Math.min(L-1,P);if(Y>E)return;let $=new Set;for(let X=Y;X<=E;X++){let Ie=M(X);if(Ie.businessDate&&$.add(Ie.businessDate),$.size>=Rr)break}$.forEach(X=>{D(X)})},[M,L,D]),F=xe(({renderingStartIndex:T,renderingEndIndex:P,visibleStartIndex:Y})=>{if(L===0)return;let E=M(Y);E?.businessDate&&v(se(E.businessDate)),B(T,P),B(P+1,P+mt),B(T-mt,T-1)},[M,L,B]),k=xe(()=>{i.current&&a&&a(i.current.getScrollPosition());let T=f.current;T&&(T.dataset.scrolling!=="true"&&(T.dataset.scrolling="true"),I.current&&clearTimeout(I.current),I.current=setTimeout(()=>{T&&delete T.dataset.scrolling,I.current=null},150))},[a]);De(()=>()=>{i.current&&a&&a(i.current.getScrollPosition())},[a]);let J=xe(T=>y(Ze,{...T,label:b,isWheelScrollActive:S}),[b,S]);De(()=>{let T=f.current;if(!T)return;let P=()=>{N(!0),C.current&&clearTimeout(C.current),C.current=window.setTimeout(()=>{N(!1),C.current=null},ft)};return T.addEventListener("wheel",P,{passive:!0}),()=>{T.removeEventListener("wheel",P),C.current&&clearTimeout(C.current)}},[]);let ie=xe((T,P)=>{if(o.current.get(T)!==P&&(o.current.set(T,P),i.current)){let Y=H.current.findIndex(E=>E.reportHubId===T);Y!==-1&&i.current.updateItemSize(Y,P)}},[]),te=xe(T=>{let P=M(T);return o.current.get(P.reportHubId)||350},[M]),ue=xe(T=>M(T).reportHubId,[M]);De(()=>{L>=0&&R()},[L,R]),De(()=>{L!==0&&B(0,Math.min(L-1,mt))},[L,B]);let re=xe(T=>{let P=H.current.findIndex(Y=>Y.reportHubId===T);P>=0&&setTimeout(()=>i.current?.scrollToIndex(P,{align:"bottom"}),300)},[]),le=xe((T,P)=>y(aa,{item:T,index:P,setSize:L,onHeightMeasured:ie,onCommentAdded:re,userId:t},T.reportHubId),[ie,re,t,L]);return U(ua,{children:[y("div",{ref:f,className:"flex min-h-0 flex-1 flex-col",children:y(Qs,{ref:i,itemCount:L,getItem:M,getItemKey:ue,getItemHeight:te,viewportSize:l,initialScrollOffset:s,overscanCount:bt,scrollBarOptions:{width:gt,tapScrollCircleOptions:ht,renderThumbOverlay:J},behaviorOptions:{pointerDragInputs:yt,wheelSpeedMultiplier:ut,inertiaOptions:ct,enableKeyboardNavigation:!1},onRangeChange:F,onScroll:k,testId:"daily-report-detail-list",className:"relative w-full",contentProps:{role:"list","aria-label":u},children:le})}),L===0&&y("div",{className:"py-8 text-center",children:y("p",{className:"text-slate-500",children:"\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093"})})]})},sa=()=>U("div",{className:"rounded-2xl border border-slate-200 bg-white p-4 shadow-sm dark:border-slate-700 dark:bg-slate-900/70",children:[U("div",{className:"mb-4 flex flex-wrap gap-2",children:[y("div",{className:"h-6 w-20 rounded-full bg-slate-200"}),y("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),y("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),y("div",{className:"h-6 w-28 rounded-full bg-slate-200"})]}),U("div",{className:"mb-3 grid gap-3 md:grid-cols-[minmax(0,1fr)_220px]",children:[U("div",{className:"space-y-3",children:[y("div",{className:"h-5 w-40 rounded bg-slate-200"}),y("div",{className:"h-5 w-56 rounded bg-slate-200"}),y("div",{className:"h-24 rounded-lg bg-slate-200"})]}),U("div",{className:"rounded-xl bg-slate-100 p-3",children:[y("div",{className:"mb-2 h-4 w-24 rounded bg-slate-200"}),y("div",{className:"mb-2 h-4 w-28 rounded bg-slate-200"}),y("div",{className:"h-4 w-32 rounded bg-slate-200"})]})]}),U("div",{className:"space-y-3",children:[y("div",{className:"h-4 w-24 rounded bg-slate-200"}),U("div",{className:"flex flex-wrap gap-2",children:[y("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),y("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),y("div",{className:"h-6 w-16 rounded-full bg-slate-200"})]}),U("div",{className:"space-y-2",children:[y("div",{className:"h-16 rounded-lg bg-slate-200"}),y("div",{className:"h-16 rounded-lg bg-slate-200"})]})]})]}),aa=({item:e,index:t,setSize:r,onHeightMeasured:n,onCommentAdded:s,userId:a})=>{let{report:o,error:f,isLoading:i,isRefetching:u}=Ae(e.reportHubId,e.businessDate),{removeStaleItem:l}=pe(),{draftLabelName:R}=z(),[D,b]=At(!1),[v,S]=At(!1),N=fe(!1),C=fe(!1);u&&(C.current=!0),De(()=>{!(o||i||u||f)&&C.current&&e.reportHubId>0&&l(e.reportHubId)},[o,i,u,f,e.reportHubId,l]);let I=o?.labels.some(O=>O.name===R),H=a&&o?.userId===a;return De(()=>{o&&H&&I&&!D&&!v?(b(!0),N.current=!0):o&&!I&&D&&N.current&&(b(!1),N.current=!1)},[o,H,I,D,v]),y(ra,{itemId:e.reportHubId,index:t,setSize:r,onHeightMeasured:n,children:f?y(da,{itemId:e.reportHubId}):o?D?y(Lt,{report:o,onCancel:()=>{b(!1),S(!0)},onPublishSuccess:()=>{b(!1)}}):y(la,{item:e,report:o,onCommentAdded:s,userId:a,onDoubleClick:H?()=>b(!0):void 0}):y(sa,{})})},oa=({report:e,isRead:t,isStarred:r,isMine:n,onToggleRead:s,onToggleStar:a,onDelete:o,itemSourceType:f,visitTimeDisplay:i,categoryLabel:u,fieldLabels:l})=>{let{sourceTypeConfigs:R}=z();return U("div",{className:"flex flex-wrap items-center gap-2 font-medium text-slate-600 text-xs",children:[y(et,{count:e.attachments.length,label:l.attachments}),(()=>{let D=f??e?.sourceType,b=Ne(D,R);return b?y("span",{className:W("inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",b.badgeClassName),children:b.label}):null})(),y("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?y(tn,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):y(tn,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),y("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?y(Zs,{className:"h-3.5 w-3.5 text-blue-500"}):y(Ke,{className:"text-xs"})}),n&&y("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:y(ea,{className:"h-4 w-4 text-slate-300 hover:text-red-500"})}),U("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:[y("span",{className:"text-[10px] text-blue-500 uppercase tracking-wide",children:l.id}),e.reportHubId]}),U("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[y("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:l.businessDate}),se(e.date)]}),U("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[y("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:l.author}),ne(e.employeeName)]}),U("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[y("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:l.visitTime}),i||"-"]}),U("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[y("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:l.updatedAt}),se(e.updatedAt)]}),u&&U("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-amber-100 px-3 py-1 text-amber-700",children:[y("span",{className:"text-[10px] text-amber-500 uppercase tracking-wide",children:l.category}),u]})]})},ia=({report:e,visitTimeDisplay:t,categoryLabel:r,fieldLabels:n})=>U("div",{className:"flex flex-col gap-3 rounded-xl bg-slate-100 p-4 text-slate-600 text-xs dark:bg-slate-800/60 dark:text-slate-300",children:[U("div",{className:"flex flex-col gap-1",children:[y("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.author}),y("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:ne(e.author)})]}),U("div",{className:"flex flex-col gap-1",children:[y("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.createdAt}),y("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:se(e.createdAt)})]}),U("div",{className:"flex flex-col gap-1",children:[y("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.updatedBy}),y("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:ne(e.updatedBy)})]}),U("div",{className:"flex flex-col gap-1",children:[y("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.updatedAt}),y("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:se(e.updatedAt)})]}),U("div",{className:"flex flex-col gap-1",children:[y("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.businessDate}),y("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:se(e.date)})]}),t&&U("div",{className:"flex flex-col gap-1",children:[y("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.visitTime}),y("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:t})]}),r&&U("div",{className:"flex flex-col gap-1",children:[y("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide dark:text-slate-400",children:n.categoryInfo}),y("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:r})]})]}),la=({item:e,report:t,onCommentAdded:r,userId:n,onDoubleClick:s})=>{let a=fe(null),{toggleStar:o,toggleRead:f,pendingStarUpdates:i,pendingReadUpdates:u,deleteReport:l,user:R}=pe(),{uiComments:D,handleAddComment:b,handleDeleteComment:v,pendingDeleteId:S,setPendingDeleteId:N,resolvedIdMap:C}=Nt(t,R,n),{fieldLabels:I,sourceTypeConfigs:H}=z(),O=e.sourceType??t?.sourceType,j=Ne(O,H),L=O?O.toLowerCase()!=="internal":!1,M=j?.allowComment??!L,B=async P=>{await b(P),r?.(e.reportHubId)},F=i.current.has(t.reportHubId)?i.current.get(t.reportHubId)??!1:t.isStarred,k=u.current.has(t.reportHubId)?u.current.get(t.reportHubId)??!1:t.isRead,J=!!(n&&t.userId===n),ie=async()=>{try{await f(t.reportHubId,!k,t.date??"")}catch{}},te=async()=>{try{await o(t.reportHubId,!F,t.date??"")}catch{}},ue=async()=>{confirm("\u672C\u5F53\u306B\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F")&&await l(t.reportHubId,t.date??"")},re=er(()=>t.content?t.content.replace(/<br\s*\/??\s*>/gi,`
3
+ `).trim():"",[t.content]),le=er(()=>{let P=t.visitTimeFrom?.trim(),Y=t.visitTimeTo?.trim();return P&&Y?`${P} - ${Y}`:P||Y||""},[t.visitTimeFrom,t.visitTimeTo]),T=er(()=>{let P=[];return t.category?.trim()&&P.push(`${I.category}: ${t.category}`),t.creationCategory?.trim()&&P.push(`${I.creationCategory}: ${t.creationCategory}`),P.join(" / ")},[t.category,t.creationCategory,I.category,I.creationCategory]);return y("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 ${k?"":"border-l-4 border-l-blue-500"}`,children:U("div",{className:"flex flex-col gap-4",children:[y(oa,{report:t,itemSourceType:e.sourceType,isRead:k,isStarred:F,isMine:J,onToggleRead:ie,onToggleStar:te,onDelete:ue,visitTimeDisplay:le,categoryLabel:T,fieldLabels:I}),U("div",{className:"grid gap-4 md:grid-cols-[minmax(0,1fr)_240px]",children:[U("div",{className:"flex flex-col gap-4",children:[U("div",{className:"grid gap-3 sm:grid-cols-2",children:[U("div",{className:"flex flex-col gap-1",children:[y("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.customer}),y("span",{className:"font-semibold text-base text-slate-900 dark:text-slate-100",children:ne(t.customerName)})]}),U("div",{className:"flex flex-col gap-1",children:[y("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.subject}),y("span",{className:"text-slate-700 text-sm dark:text-slate-200",children:ne(t.subject)})]})]}),re&&U("div",{className:"flex flex-col gap-2",children:[y("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.content}),y("div",{className:"whitespace-pre-wrap rounded-xl bg-slate-50 p-3 text-slate-700 text-sm leading-relaxed dark:bg-slate-800/60 dark:text-slate-200",children:re})]}),t.interviewers.length>0&&U("div",{className:"flex flex-col gap-2",children:[y("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.interviewers}),y("ul",{className:"flex flex-wrap gap-2",children:t.interviewers.map(P=>y("li",{className:"rounded-full bg-slate-100 px-3 py-1 text-slate-600 text-xs",children:na(P)},`${P.name}-${P.affiliation||""}`))})]}),y(nt,{attachments:t.attachments}),D.length>0&&U("div",{className:"flex flex-col gap-2",children:[y("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.comments}),y(at,{comments:D,reportHubId:t.reportHubId,businessDate:t.date??"",onDeleteComment:v,pendingDeleteId:S,onPendingDeleteIdChange:N,resolvedIdMap:C})]}),M&&y("div",{className:"mt-auto",ref:a,children:y(ot,{reportHubId:t.reportHubId,businessDate:t.date??"",onAddComment:B})})]}),y(ia,{report:t,visitTimeDisplay:le,categoryLabel:T,fieldLabels:I})]})]})})},da=({itemId:e})=>y("div",{className:"rounded-2xl border border-red-200 bg-red-50 p-4 text-red-700 text-sm",children:U("p",{children:["\u65E5\u5831 ",e.toLocaleString()," \u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"]})});import{RefreshCw as sn}from"lucide-react";import{useEffect as ca,useRef as nn,useState as ma}from"react";var qe=(e,t=250)=>{let[r,n]=ma(e),s=nn(e),a=nn(!0);return ca(()=>{if(a.current){a.current=!1,s.current=e,n(e);return}let o=s.current;if(o===e)return;let f=null,i=null,u=l=>{i===null&&(i=l);let R=Math.min(1,Math.max(0,(l-i)/t)),D=1-(1-R)**3,b=Math.round(o+(e-o)*D);s.current=b,n(b),R<1&&(f=requestAnimationFrame(u))};return f=requestAnimationFrame(u),()=>{f!==null&&cancelAnimationFrame(f)}},[e,t]),r};import{jsx as Pt,jsxs as Mt}from"react/jsx-runtime";var Ht=()=>{let e=Pe(),t=qe(e.loadedCount),r=qe(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 Mt("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:[Pt("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"?Mt("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:[Pt(sn,{"aria-hidden":"true",className:"h-3 w-3 animate-spin"}),"\u518D\u63A5\u7D9A\u4E2D... (",e.loadedCount.toLocaleString()," \u4EF6\u53D7\u4FE1\u6E08)"]}):e.phase==="failed"?Mt("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",Pt("button",{type:"button","data-testid":"daily-report-ids-stream-retry",onClick:()=>Ct(),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?Mt("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:[Pt(sn,{"aria-hidden":"true",className:"h-3 w-3 animate-spin"}),"\u6700\u65B0\u5316\u4E2D"]}):null};import{SwipeCloseGuardContext as ga,useSwipeGuardState as ha,useSwipeToDismissOverlay as ya,useTapClick as ln,useTransitionDisplay as xa}from"@aiquants/swipe-overlay";import{VirtualScroll as va}from"@aiquants/virtualscroll";import{Check as Ra,Star as on,Trash2 as Da}from"lucide-react";import{memo as Ia,useCallback as ge,useEffect as oe,useMemo as rr,useRef as Q,useState as Oe}from"react";import{useEffect as pa,useState as fa}from"react";var ba="(max-width: 639px)",an=()=>{let[e,t]=fa(!1);return pa(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;let r=window.matchMedia(ba),n=()=>t(r.matches);return n(),r.addEventListener("change",n),()=>r.removeEventListener("change",n)},[]),e};import*as be from"@radix-ui/react-tabs";import*as _t from"react";import{jsx as tr}from"react/jsx-runtime";var Ot=be.Root,Ye=_t.forwardRef(({className:e,...t},r)=>tr(be.List,{ref:r,className:W("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",e),...t}));Ye.displayName=be.List.displayName;var Xe=_t.forwardRef(({className:e,...t},r)=>tr(be.Trigger,{ref:r,className:W("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=be.Trigger.displayName;var He=_t.forwardRef(({className:e,...t},r)=>tr(be.Content,{ref:r,className:W("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}));He.displayName=be.Content.displayName;import{Fragment as mn,jsx as c,jsxs as K}from"react/jsx-runtime";var wa=(e,t,r,n)=>{let[s,a]=Oe(!1),[o,f]=Oe(!1),i=Q(null),u=Q(null),l=Q(null),R=rr(()=>t===null?null:r.find(v=>v.reportHubId===t)??null,[r,t]),D=e&&s&&R!==null;oe(()=>{if(D)f(!0);else{let v=setTimeout(()=>f(!1),300);return()=>clearTimeout(v)}},[D]),oe(()=>{if(!(typeof window>"u")){if(e&&s&&t!==null&&!i.current){let v=`overlay-${Date.now()}`;window.history.pushState({...window.history.state,dailyReportOverlay:v},"",window.location.href),i.current=v}else!(e&&s)&&i.current&&(i.current=null);return s?(l.current=document.body.style.overflow,document.body.style.overflow="hidden"):l.current!==null&&(document.body.style.overflow=l.current,l.current=null),()=>{l.current!==null&&(document.body.style.overflow=l.current)}}},[e,s,t]),oe(()=>{if(typeof window>"u")return;let v=()=>{i.current&&(u.current=t,i.current=null,a(!1),n(null))};return window.addEventListener("popstate",v),()=>window.removeEventListener("popstate",v)},[t,n]);let b=ge(()=>{e&&(u.current=t,a(!1),n(null),i.current&&typeof window<"u"&&(i.current=null,window.history.back()))},[e,t,n]);return{isMobileDetailOpen:s,setIsMobileDetailOpen:a,isOverlayMounted:o,shouldShowOverlay:D,handleOverlayClose:b,lastClosedItemIdRef:u,selectedItem:R}},Sa=(e,t,r,n,s)=>{let a=Q(null),o=Q(void 0);o.current!==e?.reportHubId&&(o.current=e?.reportHubId,a.current=null),oe(()=>{n||(a.current=null)},[n]);let f=ge(async(i=!1)=>{if(!e)return;i||(a.current=e.reportHubId);let u=!e.isRead;try{await s(e.reportHubId,u,e.date??"")}catch{}},[e,s]);return oe(()=>{if(r&&e&&!e.isRead&&!t){if(a.current===e.reportHubId)return;let i=setTimeout(()=>f(!0),500);return()=>clearTimeout(i)}},[e,t,r,f]),{handleToggleRead:f}},dn=({dailyReportItems:e,autoMarkRead:t=!1,selectedReportHubId:r,onSelectItem:n,userId:s,initialScrollOffset:a,onScrollOffsetChange:o})=>{let f=Q(null),i=Q(null),{title:u}=z(),{viewportHeight:l,updateViewportHeight:R}=kt(f),[D,b]=Oe(""),[v,S]=Oe(!1),N=an(),C=Q(null),I=e.length,H=Q(null),{isMobileDetailOpen:O,setIsMobileDetailOpen:j,isOverlayMounted:L,shouldShowOverlay:M,handleOverlayClose:B,lastClosedItemIdRef:F,selectedItem:k}=wa(N,r,e,n),J=rr(()=>Number.isFinite(l)&&l>0?{height:l}:void 0,[l]);oe(()=>{if(typeof window>"u")return;let E=()=>requestAnimationFrame(R);window.addEventListener("resize",E),R();let $=f.current,X=()=>{S(!0),C.current&&clearTimeout(C.current),C.current=window.setTimeout(()=>{S(!1),C.current=null},ft)};return $?.addEventListener("wheel",X,{passive:!0}),()=>{window.removeEventListener("resize",E),$?.removeEventListener("wheel",X),C.current&&clearTimeout(C.current)}},[R]),oe(()=>{!I&&r!==null&&n(null)},[I,r,n]),oe(()=>{if(N||O||F.current===null)return;let E=F.current;F.current=null;let $=e.findIndex(X=>X.reportHubId===E);$>=0&&(i.current?.scrollToIndex($),requestAnimationFrame(()=>{document.querySelector(`[data-testid="daily-report-list"] [data-daily-report-button="${E}"]`)?.focus()}))},[O,N,e,F]),oe(()=>{I>0&&b(E=>{let $=se(e[0]?.businessDate);return E===$?E:$})},[e,I]);let ie=Q(e);ie.current=e,oe(()=>{if(i.current){let E=document.querySelector('[data-testid="daily-report-list"]');E&&(E.__virtualScroll={...i.current,findReportIndex:$=>ie.current.findIndex(X=>X.reportHubId===$),getReportIds:($=20)=>ie.current.slice(0,$).map(X=>X.reportHubId)})}});let te=ge(E=>{E<=0||(n(E),N&&j(!0))},[N,n,j]),ue=ge(E=>E<I?e[E]:pt,[e,I]),re=ge(()=>jt,[]),le=ge((E,$)=>c(cn,{item:E,index:$,setSize:I,isActive:E.reportHubId===r,onSelect:te},E.reportHubId),[I,r,te]),T=ge(E=>{let $=ue(E.visibleStartIndex);$?.reportHubId>0&&b(X=>{let Ie=se($.businessDate);return X===Ie?X:Ie})},[ue]),P=ge(()=>{i.current&&o&&o(i.current.getScrollPosition());let E=f.current;E&&(E.dataset.scrolling!=="true"&&(E.dataset.scrolling="true"),H.current&&clearTimeout(H.current),H.current=setTimeout(()=>{E&&delete E.dataset.scrolling,H.current=null},150))},[o]);oe(()=>()=>{i.current&&o&&o(i.current.getScrollPosition())},[o]);let Y=ge(E=>c(Ze,{...E,label:D,isWheelScrollActive:v}),[D,v]);return K(mn,{children:[K("div",{className:"flex h-full min-h-0 gap-4",children:[c("div",{ref:f,className:"flex min-h-0 w-full sm:w-90",style:J,children:c(va,{ref:i,itemCount:I,getItem:ue,getItemHeight:re,viewportSize:l,initialScrollOffset:a,overscanCount:bt,scrollBarOptions:{width:gt,tapScrollCircleOptions:ht,renderThumbOverlay:Y},behaviorOptions:{pointerDragInputs:yt,inertiaOptions:ct,wheelSpeedMultiplier:ut,enableKeyboardNavigation:!1},onRangeChange:T,onScroll:P,contentInsets:{top:dt,bottom:dt},testId:"daily-report-list",className:"relative w-full",contentProps:{role:"list","aria-label":u},children:le})}),c(un,{dailyReportItems:e,selectedItem:k,heightStyle:J,autoMarkRead:!N&&t,isActive:r!==null,userId:s})]}),I===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"})}),L&&c(Na,{isOpen:M,selectedItem:k,onClose:B,autoMarkRead:N&&t,userId:s})]})},Ca=e=>c("div",{...e,className:"px-2 pb-3",style:{height:Ue},children:K("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:[K("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"})]}),K("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"})]})]})}),un=({dailyReportItems:e,selectedItem:t,heightStyle:r,autoMarkRead:n=!1,isActive:s=!0,userId:a})=>{let[o,f]=Oe("article"),[i,u]=Oe(!1),{draftLabelName:l,fieldLabels:R,sourceTypeConfigs:D}=z(),{report:b,error:v,isLoading:S}=Ae(t?.reportHubId??-1,t?.businessDate??null),N=Q(null),C=Q(null),I=Q(!1);oe(()=>{if(!b)return;let F=b.labels.some(k=>k.name===l);b.reportHubId!==C.current?(C.current=b.reportHubId,F?(u(!0),I.current=!0):(u(!1),I.current=!1)):!F&&i&&I.current&&(u(!1),I.current=!1)},[b,i,l]);let H=!!(a&&b?.userId===a),O=ge(()=>{setTimeout(()=>{N.current&&N.current.scrollTo({top:N.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 j=se(b?.date??t?.businessDate),L=b?.employeeName||b?.author?ne(b.employeeName??b.author):"",M=S||!b,B=K(mn,{children:[K("div",{className:"space-y-1",children:[c("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:R.businessDate}),c("div",{className:"text-slate-900 text-sm dark:text-slate-100",children:j}),K("div",{className:"flex min-h-4 items-center gap-1 text-slate-500 text-xs dark:text-slate-300",children:[K("span",{children:[R.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:L}),(()=>{let F=b?.sourceType,k=F?D?.[F]:void 0;return k?c("span",{className:W("ml-2 inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",k.badgeClassName),children:k.label}):null})()]})]}),K(Ot,{value:o,onValueChange:F=>f(F),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(F=>c(Xe,{value:F,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:F==="article"?R.tabArticle:R.tabRelations},F))}),c(He,{ref:N,value:"article",className:"scrollbar-thin flex-1 touch-pan-y overflow-y-auto overflow-x-hidden pt-3 text-sm",children:i?b?c(Lt,{report:b,onCancel:()=>u(!1),onPublishSuccess:()=>u(!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(Ta,{report:b,isLoading:S,error:v,selectedItem:t,autoMarkRead:n,isActive:s,onCommentAdded:O,userId:a,onDoubleClick:H?()=>u(!0):void 0})}),c(He,{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:R.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:B}):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:B})},_e=({className:e="w-32"})=>c("div",{"data-skeleton":!0,className:`h-4 animate-pulse rounded bg-slate-200 dark:bg-slate-700 ${e}`}),Ta=({report:e,isLoading:t,error:r,selectedItem:n,autoMarkRead:s=!1,isActive:a=!0,onCommentAdded:o,userId:f,onDoubleClick:i})=>{let{toggleStar:u,toggleRead:l,deleteReport:R,user:D}=pe(),{fieldLabels:b,sourceTypeConfigs:v}=z(),{uiComments:S,handleAddComment:N,handleDeleteComment:C,pendingDeleteId:I,setPendingDeleteId:H,resolvedIdMap:O}=Nt(e,D,f),{handleToggleRead:j}=Sa(e,t,s,a,l),L=n.sourceType??e?.sourceType,M=Ne(L,v),B=L?L.toLowerCase()!=="internal":!1,F=M?.allowComment??!B,k=Q(null),J=Q(S.length);oe(()=>{let $=e?.reportHubId??null;if($!==k.current){k.current=$,J.current=S.length;return}S.length>J.current&&o?.(),J.current=S.length},[S.length,e?.reportHubId,o]);let ie=async $=>{await N($)},te=rr(()=>e?.content?e.content.replace(/<br\s*\/?\s*>/gi,`
4
4
  `).replace(/<\/p>/gi,`
5
- `).replace(/<[^>]+>/g,""):null,[e]),re=async()=>{if(!e)return;let V=!e.isStarred;try{await u(e.reportHubId,V,e.date??"")}catch{}},be=async()=>{if(e&&confirm("\u672C\u5F53\u306B\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F"))try{await R(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 ne=!e,N=e?.isStarred??!1,L=e?.isRead??!1,X=!!(f&&e?.userId===f),k=C.length>0;return K("div",{className:"relative space-y-4 text-slate-700 dark:text-slate-200",onDoubleClick:i,children:[!ne&&e&&K("div",{className:"absolute top-0 right-2 z-10 flex items-center justify-end gap-3",children:[c("button",{type:"button",onClick:()=>$(!1),className:"text-lg leading-none transition-transform focus:outline-none active:scale-110",title:L?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","data-detail-read-button":e.reportHubId,children:L?c("span",{className:"text-slate-300 hover:text-blue-500",children:"\u2713"}):c(We,{className:"hover:text-blue-600"})}),c("button",{type:"button",onClick:re,className:"text-lg leading-none transition-transform focus:outline-none active:scale-110",title:N?"\u30B9\u30BF\u30FC\u3092\u5916\u3059":"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B","data-detail-star-button":e.reportHubId,children:N?c("span",{className:"text-yellow-400",children:"\u2605"}):c("span",{className:"text-slate-300 hover:text-yellow-400",children:"\u2606"})}),X&&c("button",{type:"button",onClick:be,"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(Ra,{className:"h-4 w-4 text-slate-300 hover:text-red-500"})})]}),K("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:b.subject}),c("div",{className:"flex-1 pr-20",children:ne?c(Me,{className:"w-3/4"}):c("span",{className:"fade-in animate-in text-sm duration-500",children:se(e?.subject)})})]}),K("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:b.customer}),c("div",{className:"flex-1",children:ne?c(Me,{className:"w-1/2"}):c("span",{className:"fade-in animate-in text-sm duration-500",children:se(e?.customerName)})})]}),K("div",{className:"space-y-2",children:[c("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:b.content}),c("div",{className:"min-h-22 rounded-lg bg-slate-50 p-3 text-sm leading-relaxed dark:bg-slate-800/40",children:ne?K("div",{className:"space-y-2",children:[c(Me,{className:"w-full"}),c(Me,{className:"w-11/12"}),c(Me,{className:"w-4/5"})]}):ue?c("div",{className:"fade-in animate-in whitespace-pre-wrap duration-500",children:ue}):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"})})]}),K("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:b.visitTime}),c("div",{className:"flex-1",children:ne?c(Me,{className:"w-1/3"}):K("span",{className:"fade-in animate-in text-sm duration-500",children:[se(e?.visitTimeFrom)," ",e?.visitTimeFrom&&e?.visitTimeTo?"-":""," ",se(e?.visitTimeTo)]})})]}),e&&c(tt,{attachments:e.attachments}),e&&K("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:b.comments}),k&&c(nt,{comments:C,reportHubId:e.reportHubId,businessDate:e.date??"",onDeleteComment:S,pendingDeleteId:w,onPendingDeleteIdChange:P,resolvedIdMap:F}),A&&c(st,{reportHubId:e.reportHubId,businessDate:e.date??"",onAddComment:Q})]})]})},Ta=({isOpen:e,selectedItem:t,onClose:r,autoMarkRead:n=!1,userId:s})=>{let a=Z(null),o=Z(null),{isBlocked:f,requestBlock:i,reset:u}=ga(),{report:l,error:R,isLoading:D}=Ee(t?.reportHubId??-1,t?.businessDate??null),b=ya(e,t?{item:t,detail:{report:l,error:R,isLoading:D}}:null),v=b?.item??null;b?.detail??Kr;let{overlayRef:T,overlayStyle:S,attemptClose:w,isSwiping:P}=ha({isOpen:e,onClose:r,isCloseBlocked:he(()=>f,[f]),skipWhenTextSelected:!0}),F=an(()=>w());return oe(()=>{e?requestAnimationFrame(()=>o.current?.focus()):(a.current?.contains(document.activeElement)&&document.activeElement.blur(),u())},[e,u]),v?K("div",{ref:a,className:`fixed inset-0 z-50 flex touch-manipulation transition-[visibility] duration-200 sm:hidden ${e?"visible":"invisible"} ${e&&!P?"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"}`,...F}),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:T,onKeyDown:$=>{$.key==="Escape"&&($.preventDefault(),w())},style:S,children:K("div",{className:"flex h-full w-full flex-col gap-3 p-4",children:[c(ba.Provider,{value:{isBlocked:f,requestBlock:i},children:c(ln,{selectedItem:v,autoMarkRead:n,isActive:e,userId:s})}),c("div",{className:"mt-2 flex justify-start",children:c("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:()=>w(),children:"\u9589\u3058\u308B"})})]})})]}):null},Na=e=>e?e.replace(/<br\s*\/?\s*>/gi,`
5
+ `).replace(/<[^>]+>/g,""):null,[e]),ue=async()=>{if(!e)return;let $=!e.isStarred;try{await u(e.reportHubId,$,e.date??"")}catch{}},re=async()=>{if(e&&confirm("\u672C\u5F53\u306B\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F"))try{await R(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 le=!e,T=e?.isStarred??!1,P=e?.isRead??!1,Y=!!(f&&e?.userId===f),E=S.length>0;return K("div",{className:"relative space-y-4 text-slate-700 dark:text-slate-200",onDoubleClick:i,children:[!le&&e&&K("div",{className:"absolute top-0 right-2 z-10 flex items-center justify-end gap-3",children:[c("button",{type:"button",onClick:()=>j(!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(Ke,{className:"hover:text-blue-600"})}),c("button",{type:"button",onClick:ue,className:"text-lg leading-none transition-transform focus:outline-none active:scale-110",title:T?"\u30B9\u30BF\u30FC\u3092\u5916\u3059":"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B","data-detail-star-button":e.reportHubId,children:T?c("span",{className:"text-yellow-400",children:"\u2605"}):c("span",{className:"text-slate-300 hover:text-yellow-400",children:"\u2606"})}),Y&&c("button",{type:"button",onClick:re,"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(Da,{className:"h-4 w-4 text-slate-300 hover:text-red-500"})})]}),K("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:b.subject}),c("div",{className:"flex-1 pr-20",children:le?c(_e,{className:"w-3/4"}):c("span",{className:"fade-in animate-in text-sm duration-500",children:ne(e?.subject)})})]}),K("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:b.customer}),c("div",{className:"flex-1",children:le?c(_e,{className:"w-1/2"}):c("span",{className:"fade-in animate-in text-sm duration-500",children:ne(e?.customerName)})})]}),K("div",{className:"space-y-2",children:[c("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:b.content}),c("div",{className:"min-h-22 rounded-lg bg-slate-50 p-3 text-sm leading-relaxed dark:bg-slate-800/40",children:le?K("div",{className:"space-y-2",children:[c(_e,{className:"w-full"}),c(_e,{className:"w-11/12"}),c(_e,{className:"w-4/5"})]}):te?c("div",{className:"fade-in animate-in whitespace-pre-wrap duration-500",children:te}):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"})})]}),K("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:b.visitTime}),c("div",{className:"flex-1",children:le?c(_e,{className:"w-1/3"}):K("span",{className:"fade-in animate-in text-sm duration-500",children:[ne(e?.visitTimeFrom)," ",e?.visitTimeFrom&&e?.visitTimeTo?"-":""," ",ne(e?.visitTimeTo)]})})]}),e&&c(nt,{attachments:e.attachments}),e&&K("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:b.comments}),E&&c(at,{comments:S,reportHubId:e.reportHubId,businessDate:e.date??"",onDeleteComment:C,pendingDeleteId:I,onPendingDeleteIdChange:H,resolvedIdMap:O}),F&&c(ot,{reportHubId:e.reportHubId,businessDate:e.date??"",onAddComment:ie})]})]})},Na=({isOpen:e,selectedItem:t,onClose:r,autoMarkRead:n=!1,userId:s})=>{let a=Q(null),o=Q(null),{isBlocked:f,requestBlock:i,reset:u}=ha(),{report:l,error:R,isLoading:D}=Ae(t?.reportHubId??-1,t?.businessDate??null),b=xa(e,t?{item:t,detail:{report:l,error:R,isLoading:D}}:null),v=b?.item??null;b?.detail??Dr;let{overlayRef:N,overlayStyle:C,attemptClose:I,isSwiping:H}=ya({isOpen:e,onClose:r,isCloseBlocked:ge(()=>f,[f]),skipWhenTextSelected:!0}),O=ln(()=>I());return oe(()=>{e?requestAnimationFrame(()=>o.current?.focus()):(a.current?.contains(document.activeElement)&&document.activeElement.blur(),u())},[e,u]),v?K("div",{ref:a,className:`fixed inset-0 z-50 flex touch-manipulation transition-[visibility] duration-200 sm:hidden ${e?"visible":"invisible"} ${e&&!H?"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"}`,...O}),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:N,onKeyDown:j=>{j.key==="Escape"&&(j.preventDefault(),I())},style:C,children:K("div",{className:"flex h-full w-full flex-col gap-3 p-4",children:[c(ga.Provider,{value:{isBlocked:f,requestBlock:i},children:c(un,{selectedItem:v,autoMarkRead:n,isActive:e,userId:s})}),c("div",{className:"mt-2 flex justify-start",children:c("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},ka=e=>e?e.replace(/<br\s*\/?\s*>/gi,`
6
6
  `).replace(/<\/p>/gi,`
7
- `).replace(/<[^>]+>/g,"").split(/\r?\n/).map(t=>t.replace(/\u3000/g," ").trim()).filter(t=>t.length>0).slice(0,qr):[],dn=Da(({item:e,index:t,setSize:r,isActive:n,onSelect:s})=>{let{fieldLabels:a,sourceTypeConfigs:o}=j(),{toggleStar:f,toggleRead:i,removeStaleItem:u}=pe(),{report:l,error:R,isLoading:D,isRefetching:b}=Ee(e.reportHubId,e.businessDate),v={role:"listitem","aria-posinset":t+1,"aria-setsize":r},C=Z(!1);b&&(C.current=!0),oe(()=>{!(l||D||b||R)&&C.current&&e.reportHubId>0&&u(e.reportHubId)},[l,D,b,R,e.reportHubId,u]);let T=an(()=>s(e.reportHubId));if(R)return c("div",{...v,className:"px-2 pb-3",style:{height:je},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 dark:border-red-900/50 dark:bg-red-950/40 dark:text-red-300",children:K("p",{children:["\u65E5\u5831 ",e.reportHubId.toLocaleString()," \u306E\u6982\u8981\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"]})})});if(D)return c(Sa,{...v});if(!l)return c("div",{...v,className:"px-2 pb-3",style:{height:je},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 S=Na(l.content??null).map((H,B)=>({line:H,key:`${e.reportHubId}-line-${B}`})),w=se(l.employeeName??l.author),P=ae(l.date),F=async H=>{H.stopPropagation();let B=!l.isStarred;try{await f(l.reportHubId,B,l.date??"")}catch{}},$=async H=>{H.stopPropagation();let B=!l.isRead;try{await i(l.reportHubId,B,l.date??"")}catch{}},M=H=>{H.stopPropagation()};return c("div",{...v,className:"px-2 pb-3",style:{height:je},children:K("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 ${n?"border-blue-300 shadow-md ring-2 ring-blue-200 dark:border-blue-500/70 dark:ring-blue-500/40":"border-slate-200 dark:border-slate-700"}`,style:{touchAction:"manipulation"},role:"button",tabIndex:0,"aria-current":n?"true":void 0,"aria-pressed":n,"aria-label":`${P} ${w}`,...T,children:[K("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:P})}),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:w})}),K("div",{className:"ml-auto flex items-center gap-1.5",children:[c(Qe,{count:l.attachments.length,label:a.attachments}),(()=>{let H=e.sourceType??l?.sourceType,B=Te(H,o);return B?c("span",{className:W("inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",B.badgeClassName),children:B.label}):null})(),c("button",{type:"button",title:l.isStarred?"\u30B9\u30BF\u30FC\u3092\u5916\u3059":"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B","aria-label":l.isStarred?"\u30B9\u30BF\u30FC\u3092\u5916\u3059":"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B","aria-pressed":l.isStarred,"data-list-star-button":e.reportHubId,onClick:F,onPointerDown:M,onPointerUp:M,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 dark:hover:bg-slate-700",children:l.isStarred?c(sn,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):c(sn,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),c("button",{type:"button",title:l.isRead?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","aria-label":l.isRead?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","aria-pressed":l.isRead,"data-list-read-button":e.reportHubId,onClick:$,onPointerDown:M,onPointerUp:M,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 dark:hover:bg-slate-700",children:l.isRead?c(va,{className:"h-3.5 w-3.5 text-blue-500"}):c(We,{className:"text-xs"})})]})]}),c("div",{className:"space-y-1 text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:S.length>0?S.map(({line:H,key:B})=>c("p",{className:"wrap-break-word line-clamp-1",children:H},B)):c("p",{children:"\u5185\u5BB9\u306F\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093"})})]})})});dn.displayName="ListReportItem";import{useEffect as hn}from"react";import{Plus as ka,RefreshCw as Ea,RotateCw as La}from"lucide-react";import{useCallback as pn,useEffect as fn,useMemo as Pa,useRef as tr,useState as bn}from"react";import{useSearchParams as Aa}from"react-router";import*as Ye from"@radix-ui/react-switch";import*as mn from"react";import{jsx as cn}from"react/jsx-runtime";var Ot=mn.forwardRef(({className:e,...t},r)=>cn(Ye.Root,{className:W("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:cn(Ye.Thumb,{className:W("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")})}));Ot.displayName=Ye.Root.displayName;import{Fragment as Ha,jsx as ee,jsxs as ye}from"react/jsx-runtime";var Ma="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",gn=({userId:e})=>{let[t,r]=bn(!1),{title:n,renderHeader:s,showDevControls:a}=j(),{isSseEnabled:o,toggleSse:f,createReport:i,items:u,refetchData:l,clearCacheAndRefetch:R}=pe(),[D]=Aa(),b=Ge(u.length),v=tr(0),C=tr(0),T=pn(O=>{v.current=O},[]),S=pn(O=>{C.current=O},[]),[w,P]=bn(()=>u.length===0?null:u[0].reportHubId),F=tr(!1);fn(()=>{!F.current&&u.length>0&&(F.current=!0,P(O=>O??u[0].reportHubId))},[u]);let $=async()=>{await l()},M=async()=>{await R()},H=async()=>{let J=D.get("businessDate")||Vt(),Q=await i(J);P(Q)};fn(()=>{localStorage.getItem("daily-report-auto-read")==="true"&&r(!0)},[]);let B=O=>{r(O),localStorage.setItem("daily-report-auto-read",String(O))},A=Pa(()=>[{value:"list",label:"\u{1F4C4} List",content:ee(on,{dailyReportItems:u,autoMarkRead:t,selectedReportHubId:w,onSelectItem:P,userId:e,initialScrollOffset:v.current,onScrollOffsetChange:T})},{value:"tree",label:"\u{1F333} Tree",content:ee("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:ee(en,{dailyReportItems:u,userId:e,selectedItemId:w,onSelectItem:P,initialScrollOffset:C.current,onScrollOffsetChange:S})}],[u,t,w,e,T,S]);return ye(Ha,{children:[s({title:n,annotation:ye("div",{className:"flex flex-wrap items-center gap-2 leading-1",children:[ee(Mt,{}),ye("span",{className:"tabular-nums",children:["\u7DCF\u4EF6\u6570: ",b.toLocaleString()," \u4EF6"]}),ye("span",{children:["\u30C7\u30D0\u30A6\u30F3\u30B9: ",yt," ms"]})]})}),ee("div",{className:"h-full bg-slate-50 dark:bg-slate-950",children:ee("div",{className:"flex h-full w-full max-w-6xl flex-1 flex-col p-1",children:ye(_t,{defaultValue:"list",className:"flex h-full flex-1 flex-col",children:[ye("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:[ee(Ke,{className:"scrollbar-none flex w-full touch-pan-x flex-nowrap overflow-x-auto overflow-y-hidden bg-transparent p-0",children:A.map(({value:O,label:J})=>ee(qe,{value:O,className:Ma,children:J},O))}),ye("div",{className:"flex shrink-0 items-center space-x-1 px-2",children:[ee(De,{variant:"ghost",size:"icon",onClick:H,title:"\u65E5\u5831\u3092\u4F5C\u6210",children:ee(ka,{className:"h-4 w-4"})}),a&&ye("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:[ee("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"}),ye("div",{className:"flex items-center space-x-1",children:[ee(Ot,{id:"sse-mode",checked:o,onCheckedChange:f,className:"scale-75"}),ee(Pe,{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"})]}),ye(De,{variant:"ghost",size:"sm",onClick:$,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:[ee(La,{className:"mr-1 h-3 w-3"}),"\u30EA\u30ED\u30FC\u30C9"]}),ye(De,{variant:"ghost",size:"sm",onClick:M,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:[ee(Ea,{className:"mr-1 h-3 w-3"}),"\u30AD\u30E3\u30C3\u30B7\u30E5\u30AF\u30EA\u30A2"]})]}),ee(Ot,{id:"auto-read-mode",checked:t,onCheckedChange:B,className:"scale-75"}),ee(Pe,{htmlFor:"auto-read-mode",className:"cursor-pointer text-slate-500 text-xs",children:"\u81EA\u52D5\u65E2\u8AAD"})]})]}),A.map(({value:O,content:J})=>ee(Ae,{value:O,className:"mt-0 flex h-full min-h-0 flex-1 flex-col",children:J},O))]})})})]})};import{Fragment as yn,jsx as te,jsxs as Xe}from"react/jsx-runtime";var _a=()=>{let{title:e,renderHeader:t}=j();return Xe(yn,{children:[t({title:e,annotation:te("span",{className:"font-bold text-red-500",children:"Error"})}),te("div",{className:"h-full bg-slate-50 p-2",children:te("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:Xe("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:[te("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"}),te("button",{type:"button","data-testid":"daily-report-load-error-retry",onClick:()=>ft(),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"})]})})})]})},Oa=()=>{let{title:e,renderHeader:t}=j();return Xe(yn,{children:[t({title:e,annotation:Xe("div",{className:"flex flex-wrap items-center gap-2 leading-none",children:[te(Mt,{}),te("span",{children:"\u7DCF\u4EF6\u6570: \u8AAD\u307F\u8FBC\u307F\u4E2D..."}),Xe("span",{children:["\u30C7\u30D0\u30A6\u30F3\u30B9: ",yt," ms"]})]})}),te("div",{className:"h-full bg-slate-50 p-2",children:te("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:te("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..."})})})]})},Fa=({user:e,userId:t})=>{let{apiBasePath:r}=j(),n=Le();hn(()=>{ct({apiBasePath:r,userKey:t??null})},[r,t]),hn(()=>{n.phase==="auth-required"&&Pr()},[n.phase]);let s=n.items.length>0||n.phase==="complete";return te(Vr,{children:te(jr,{user:e,initialItems:n.items,userId:t,children:s?te(gn,{userId:t}):n.phase==="failed"?te(_a,{}):te(Oa,{})},t??"anonymous")})},rd=({config:e,...t})=>te(lr,{config:e,children:te(Fa,{...t})});var od=({actionResult:e,actionStatus:t,currentUrl:r,defaultShouldRevalidate:n,formAction:s,formData:a,formEncType:o,formMethod:f,json:i,nextUrl:u,text:l})=>{if(!n)return!1;if(!(r.pathname===u.pathname&&r.search===u.search&&r.hash===u.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||f!==void 0||i!==void 0||l!==void 0?n:!1},id=e=>{let t=async r=>{Mr();let n=await r.serverLoader(),s=n.userId;return Ar({apiBasePath:e?.apiBasePath,userKey:typeof s=="string"?s:null}),n};return t.hydrate=!0,t};export{Je as BusinessDayThumbOverlay,Nt as CONTENT_DRAG_POINTER_INPUTS,yt as DAILY_REPORT_FETCH_DEBOUNCE_MS,Xt as DEFAULT_ITEM_HEIGHT,jr as DailyReportActionProvider,Qe as DailyReportAttachmentIndicator,tt as DailyReportAttachmentList,_ as DailyReportCache,st as DailyReportCommentForm,mr as DailyReportCommentItem,nt as DailyReportCommentList,lr as DailyReportConfigProvider,en as DailyReportDetailList,Et as DailyReportEditForm,Vr as DailyReportErrorProvider,ut as DailyReportIdsStreamClient,Mt as DailyReportIdsStreamStatus,on as DailyReportList,_a as DailyReportLoadError,Oa as DailyReportLoading,rd as DailyReportPage,gn as DailyReportResolvedContent,Kr as EMPTY_DETAIL,It as EMPTY_ITEM,Rt as FAST_SCROLL_INERTIA_OPTIONS,vt as FAST_SCROLL_WHEEL_MULTIPLIER,je as ITEM_CONTAINER_HEIGHT,xt as ITEM_VERTICAL_PADDING,qr as MAX_PREVIEW_LINES,Dt as PREFETCH_LOOKAHEAD,Gr as PREFETCH_MAX_DATES,Ct as SCROLL_BAR_WIDTH,Tt as TAP_SCROLL_CIRCLE_OPTIONS,We as UnreadIndicator,St as VIRTUAL_SCROLL_OVERSCAN_COUNT,wt as WHEEL_RESET_TIMEOUT_MS,Be as acquireMutationLock,Sr as applyBroadcastReportUpdate,Se as applyDailyReportServerUpdates,Ar as bootstrapDailyReportIdsStreamSession,Fe as clearDailyReportCache,id as createDailyReportClientLoader,od as dailyReportShouldRevalidate,Ze as defaultDailyReportClientConfig,or as defaultDailyReportFieldLabels,lt as deleteDailyReportCache,ct as ensureDailyReportIdsStreamSession,ce as getCachedReport,Hr as getDailyReportIdsStreamSessionUserKey,Mr as primeDailyReportIdsStreamSession,qt as refreshDailyReportIdsStream,Ir as registerRecentDeletion,Ue as releaseMutationLock,Pr as reloadDocument,pt as removeDailyReportIdsStreamItem,Mo as resetDailyReportIdsStreamSessionForTesting,Te as resolveSourceTypeConfig,ft as retryDailyReportIdsStream,wr as subscribeCacheReady,me as updateDailyReportCache,Ve as upsertDailyReportIdsStreamItem,Ge as useAnimatedNumber,pe as useDailyReportActionContext,gt as useDailyReportComments,j as useDailyReportConfig,Ee as useDailyReportDetail,$r as useDailyReportErrorSurface,Le as useDailyReportIdsStream,Tr as useDailyReportPrefetch,Er as useDailyReportSseConnection,ht as useDynamicViewportHeight,Dr as writeCache};
7
+ `).replace(/<[^>]+>/g,"").split(/\r?\n/).map(t=>t.replace(/\u3000/g," ").trim()).filter(t=>t.length>0).slice(0,Ir):[],cn=Ia(({item:e,index:t,setSize:r,isActive:n,onSelect:s})=>{let{fieldLabels:a,sourceTypeConfigs:o}=z(),{toggleStar:f,toggleRead:i,removeStaleItem:u}=pe(),{report:l,error:R,isLoading:D,isRefetching:b}=Ae(e.reportHubId,e.businessDate),v={role:"listitem","aria-posinset":t+1,"aria-setsize":r},S=Q(!1);b&&(S.current=!0),oe(()=>{!(l||D||b||R)&&S.current&&e.reportHubId>0&&u(e.reportHubId)},[l,D,b,R,e.reportHubId,u]);let N=ln(()=>s(e.reportHubId));if(R)return c("div",{...v,className:"px-2 pb-3",style:{height:Ue},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 dark:border-red-900/50 dark:bg-red-950/40 dark:text-red-300",children:K("p",{children:["\u65E5\u5831 ",e.reportHubId.toLocaleString()," \u306E\u6982\u8981\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"]})})});if(D)return c(Ca,{...v});if(!l)return c("div",{...v,className:"px-2 pb-3",style:{height:Ue},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 C=ka(l.content??null).map((M,B)=>({line:M,key:`${e.reportHubId}-line-${B}`})),I=ne(l.employeeName??l.author),H=se(l.date),O=async M=>{M.stopPropagation();let B=!l.isStarred;try{await f(l.reportHubId,B,l.date??"")}catch{}},j=async M=>{M.stopPropagation();let B=!l.isRead;try{await i(l.reportHubId,B,l.date??"")}catch{}},L=M=>{M.stopPropagation()};return c("div",{...v,className:"px-2 pb-3",style:{height:Ue},children:K("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 ${n?"border-blue-300 shadow-md ring-2 ring-blue-200 dark:border-blue-500/70 dark:ring-blue-500/40":"border-slate-200 dark:border-slate-700"}`,style:{touchAction:"manipulation"},role:"button",tabIndex:0,"aria-current":n?"true":void 0,"aria-pressed":n,"aria-label":`${H} ${I}`,...N,children:[K("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:H})}),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:I})}),K("div",{className:"ml-auto flex items-center gap-1.5",children:[c(et,{count:l.attachments.length,label:a.attachments}),(()=>{let M=e.sourceType??l?.sourceType,B=Ne(M,o);return B?c("span",{className:W("inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",B.badgeClassName),children:B.label}):null})(),c("button",{type:"button",title:l.isStarred?"\u30B9\u30BF\u30FC\u3092\u5916\u3059":"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B","aria-label":l.isStarred?"\u30B9\u30BF\u30FC\u3092\u5916\u3059":"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B","aria-pressed":l.isStarred,"data-list-star-button":e.reportHubId,onClick:O,onPointerDown:L,onPointerUp: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:l.isStarred?c(on,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):c(on,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),c("button",{type:"button",title:l.isRead?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","aria-label":l.isRead?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","aria-pressed":l.isRead,"data-list-read-button":e.reportHubId,onClick:j,onPointerDown:L,onPointerUp: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:l.isRead?c(Ra,{className:"h-3.5 w-3.5 text-blue-500"}):c(Ke,{className:"text-xs"})})]})]}),c("div",{className:"space-y-1 text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:C.length>0?C.map(({line:M,key:B})=>c("p",{className:"wrap-break-word line-clamp-1",children:M},B)):c("p",{children:"\u5185\u5BB9\u306F\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093"})})]})})});cn.displayName="ListReportItem";import{useEffect as xn}from"react";import{Plus as Ea,RefreshCw as La,RotateCw as Aa}from"lucide-react";import{useCallback as bn,useEffect as gn,useMemo as Pa,useRef as nr,useState as hn}from"react";import{useSearchParams as Ma}from"react-router";import*as Je from"@radix-ui/react-switch";import*as fn from"react";import{jsx as pn}from"react/jsx-runtime";var Ft=fn.forwardRef(({className:e,...t},r)=>pn(Je.Root,{className:W("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:pn(Je.Thumb,{className:W("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")})}));Ft.displayName=Je.Root.displayName;import{Fragment as _a,jsx as Z,jsxs as he}from"react/jsx-runtime";var Ha="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",yn=({userId:e})=>{let[t,r]=hn(!1),{title:n,renderHeader:s,showDevControls:a}=z(),{isSseEnabled:o,toggleSse:f,createReport:i,items:u,refetchData:l,clearCacheAndRefetch:R}=pe(),[D]=Ma(),b=qe(u.length),v=nr(0),S=nr(0),N=bn(k=>{v.current=k},[]),C=bn(k=>{S.current=k},[]),[I,H]=hn(()=>u.length===0?null:u[0].reportHubId),O=nr(!1);gn(()=>{!O.current&&u.length>0&&(O.current=!0,H(k=>k??u[0].reportHubId))},[u]);let j=async()=>{await l()},L=async()=>{await R()},M=async()=>{let J=D.get("businessDate")||zt(),ie=await i(J);H(ie)};gn(()=>{localStorage.getItem("daily-report-auto-read")==="true"&&r(!0)},[]);let B=k=>{r(k),localStorage.setItem("daily-report-auto-read",String(k))},F=Pa(()=>[{value:"list",label:"\u{1F4C4} List",content:Z(dn,{dailyReportItems:u,autoMarkRead:t,selectedReportHubId:I,onSelectItem:H,userId:e,initialScrollOffset:v.current,onScrollOffsetChange:N})},{value:"tree",label:"\u{1F333} Tree",content:Z("div",{className:"flex flex-1 items-center justify-center rounded-lg border border-slate-300 border-dashed bg-white p-6 text-slate-500 transition-colors dark:border-slate-700 dark:bg-slate-900/70 dark:text-slate-300",children:"Tree \u30D3\u30E5\u30FC\u306F\u73FE\u5728\u6E96\u5099\u4E2D\u3067\u3059"})},{value:"detailList",label:"\u{1F4CB} DetailList",content:Z(rn,{dailyReportItems:u,userId:e,selectedItemId:I,onSelectItem:H,initialScrollOffset:S.current,onScrollOffsetChange:C})}],[u,t,I,e,N,C]);return he(_a,{children:[s({title:n,annotation:he("div",{className:"flex flex-wrap items-center gap-2 leading-1",children:[Z(Ht,{}),he("span",{className:"tabular-nums",children:["\u7DCF\u4EF6\u6570: ",b.toLocaleString()," \u4EF6"]}),he("span",{children:["\u30C7\u30D0\u30A6\u30F3\u30B9: ",Le," ms"]})]})}),Z("div",{className:"h-full bg-slate-50 dark:bg-slate-950",children:Z("div",{className:"flex h-full w-full max-w-6xl flex-1 flex-col p-1",children:he(Ot,{defaultValue:"list",className:"flex h-full flex-1 flex-col",children:[he("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:[Z(Ye,{className:"scrollbar-none flex w-full touch-pan-x flex-nowrap overflow-x-auto overflow-y-hidden bg-transparent p-0",children:F.map(({value:k,label:J})=>Z(Xe,{value:k,className:Ha,children:J},k))}),he("div",{className:"flex shrink-0 items-center space-x-1 px-2",children:[Z(Re,{variant:"ghost",size:"icon",onClick:M,title:"\u65E5\u5831\u3092\u4F5C\u6210",children:Z(Ea,{className:"h-4 w-4"})}),a&&he("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:[Z("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"}),he("div",{className:"flex items-center space-x-1",children:[Z(Ft,{id:"sse-mode",checked:o,onCheckedChange:f,className:"scale-75"}),Z(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"})]}),he(Re,{variant:"ghost",size:"sm",onClick:j,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:[Z(Aa,{className:"mr-1 h-3 w-3"}),"\u30EA\u30ED\u30FC\u30C9"]}),he(Re,{variant:"ghost",size:"sm",onClick:L,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:[Z(La,{className:"mr-1 h-3 w-3"}),"\u30AD\u30E3\u30C3\u30B7\u30E5\u30AF\u30EA\u30A2"]})]}),Z(Ft,{id:"auto-read-mode",checked:t,onCheckedChange:B,className:"scale-75"}),Z(Me,{htmlFor:"auto-read-mode",className:"cursor-pointer text-slate-500 text-xs",children:"\u81EA\u52D5\u65E2\u8AAD"})]})]}),F.map(({value:k,content:J})=>Z(He,{value:k,className:"mt-0 flex h-full min-h-0 flex-1 flex-col",children:J},k))]})})})]})};import{Fragment as vn,jsx as ee,jsxs as Qe}from"react/jsx-runtime";var Oa=()=>{let{title:e,renderHeader:t}=z();return Qe(vn,{children:[t({title:e,annotation:ee("span",{className:"font-bold text-red-500",children:"Error"})}),ee("div",{className:"h-full bg-slate-50 p-2",children:ee("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:[ee("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"}),ee("button",{type:"button","data-testid":"daily-report-load-error-retry",onClick:()=>Ct(),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"})]})})})]})},Fa=()=>{let{title:e,renderHeader:t}=z();return Qe(vn,{children:[t({title:e,annotation:Qe("div",{className:"flex flex-wrap items-center gap-2 leading-none",children:[ee(Ht,{}),ee("span",{children:"\u7DCF\u4EF6\u6570: \u8AAD\u307F\u8FBC\u307F\u4E2D..."}),Qe("span",{children:["\u30C7\u30D0\u30A6\u30F3\u30B9: ",Le," ms"]})]})}),ee("div",{className:"h-full bg-slate-50 p-2",children:ee("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:ee("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..."})})})]})},Ba=({user:e,userId:t})=>{let{apiBasePath:r}=z(),n=Pe();xn(()=>{It({apiBasePath:r,userKey:t??null})},[r,t]),xn(()=>{n.phase==="auth-required"&&Fr()},[n.phase]);let s=n.items.length>0||n.phase==="complete";return ee(qr,{children:ee(Yr,{user:e,initialItems:n.items,userId:t,children:s?ee(yn,{userId:t}):n.phase==="failed"?ee(Oa,{}):ee(Fa,{})},t??"anonymous")})},ad=({config:e,...t})=>ee(ur,{config:e,children:ee(Ba,{...t})});var dd=({actionResult:e,actionStatus:t,currentUrl:r,defaultShouldRevalidate:n,formAction:s,formData:a,formEncType:o,formMethod:f,json:i,nextUrl:u,text:l})=>{if(!n)return!1;if(!(r.pathname===u.pathname&&r.search===u.search&&r.hash===u.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||f!==void 0||i!==void 0||l!==void 0?n:!1},ud=e=>{let t=async r=>{Ur();let n=await r.serverLoader(),s=n.userId;return Br({apiBasePath:e?.apiBasePath,userKey:typeof s=="string"?s:null}),n};return t.hydrate=!0,t};export{Ze as BusinessDayThumbOverlay,yt as CONTENT_DRAG_POINTER_INPUTS,Le as DAILY_REPORT_FETCH_DEBOUNCE_MS,jt as DEFAULT_ITEM_HEIGHT,Yr as DailyReportActionProvider,et as DailyReportAttachmentIndicator,nt as DailyReportAttachmentList,_ as DailyReportCache,ot as DailyReportCommentForm,fr as DailyReportCommentItem,at as DailyReportCommentList,ur as DailyReportConfigProvider,rn as DailyReportDetailList,Lt as DailyReportEditForm,qr as DailyReportErrorProvider,Dt as DailyReportIdsStreamClient,Ht as DailyReportIdsStreamStatus,dn as DailyReportList,Oa as DailyReportLoadError,Fa as DailyReportLoading,ad as DailyReportPage,yn as DailyReportResolvedContent,Dr as EMPTY_DETAIL,pt as EMPTY_ITEM,ct as FAST_SCROLL_INERTIA_OPTIONS,ut as FAST_SCROLL_WHEEL_MULTIPLIER,Ue as ITEM_CONTAINER_HEIGHT,dt as ITEM_VERTICAL_PADDING,Ir as MAX_PREVIEW_LINES,mt as PREFETCH_LOOKAHEAD,Rr as PREFETCH_MAX_DATES,gt as SCROLL_BAR_WIDTH,vr as SSE_INITIAL_CONNECT_DEFER_MS,ht as TAP_SCROLL_CIRCLE_OPTIONS,Ke as UnreadIndicator,bt as VIRTUAL_SCROLL_OVERSCAN_COUNT,ft as WHEEL_RESET_TIMEOUT_MS,Ve as acquireMutationLock,Lr as applyBroadcastReportUpdate,Ce as applyDailyReportServerUpdates,Br as bootstrapDailyReportIdsStreamSession,$e as clearDailyReportCache,ud as createDailyReportClientLoader,dd as dailyReportShouldRevalidate,tt as defaultDailyReportClientConfig,lr as defaultDailyReportFieldLabels,vt as deleteDailyReportCache,It as ensureDailyReportIdsStreamSession,ce as getCachedReport,$r as getDailyReportIdsStreamSessionUserKey,Ur as primeDailyReportIdsStreamSession,Xt as refreshDailyReportIdsStream,kr as registerRecentDeletion,ze as releaseMutationLock,Fr as reloadDocument,St as removeDailyReportIdsStreamItem,Fo as resetDailyReportIdsStreamSessionForTesting,Ne as resolveSourceTypeConfig,Ct as retryDailyReportIdsStream,Er as subscribeCacheReady,me as updateDailyReportCache,We as upsertDailyReportIdsStreamItem,qe as useAnimatedNumber,pe as useDailyReportActionContext,Nt as useDailyReportComments,z as useDailyReportConfig,Ae as useDailyReportDetail,Kr as useDailyReportErrorSurface,Pe as useDailyReportIdsStream,Pr as useDailyReportPrefetch,_r as useDailyReportSseConnection,kt as useDynamicViewportHeight,Nr as writeCache};
8
8
  //# sourceMappingURL=client.mjs.map