@aiquants/daily-report 0.4.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -0
- package/dist/client.d.mts +90 -5
- package/dist/client.d.ts +90 -5
- package/dist/client.js +4 -4
- package/dist/client.js.map +1 -1
- package/dist/client.mjs +4 -4
- package/dist/client.mjs.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/server.d.mts +13 -1
- package/dist/server.d.ts +13 -1
- package/dist/server.js +6 -6
- package/dist/server.js.map +1 -1
- package/dist/server.mjs +6 -6
- package/dist/server.mjs.map +1 -1
- package/dist/{sse-schema-BnQQh_Cc.d.ts → sse-schema-ChCypDPj.d.ts} +34 -1
- package/dist/{sse-schema-DRNjDRDy.d.mts → sse-schema-Cs1oC2DP.d.mts} +34 -1
- package/dist/styles/daily-report.standalone.css +1 -1
- package/dist/{types-DAyE_3R1.d.mts → types-BNhYC2j9.d.mts} +1 -1
- package/dist/{types-DAyE_3R1.d.ts → types-BNhYC2j9.d.ts} +1 -1
- package/package.json +1 -1
- package/src/client/components/daily-report-detail-list.tsx +62 -50
- package/src/client/components/daily-report-list.tsx +15 -3
- package/src/client/components/daily-report-resolved-content.tsx +33 -7
- package/src/client/config-context.tsx +21 -8
- package/src/client/contexts/daily-report-action-context.tsx +53 -1
- package/src/client/hooks/use-daily-report.ts +23 -1
- package/src/server/cache.spec.ts +47 -0
- package/src/server/cache.ts +27 -0
- package/src/server/handlers.ts +4 -0
- package/src/server/service.ts +18 -1
- package/src/shared/sse-schema.ts +1 -0
- package/src/shared/types.ts +1 -1
package/dist/client.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{jsx as pt}from"react/jsx-runtime";var We=({orientation:e,thumbCenter:t,label:r,isDragging:n,isTapScrollActive:s,isWheelScrollActive:a})=>r.trim()&&(n||s||a)?pt("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:pt("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:pt("span",{className:"whitespace-nowrap font-semibold text-slate-800 dark:text-slate-100",children:r.trim()})})}):null;import{TrashIcon as vr}from"@heroicons/react/24/outline";import{useState as Rr}from"react";var wt=(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]},It=e=>{if(!e)return"text-gray-700";let t=e.toLowerCase();return t.includes("red")||t.includes("\u8D64")?"text-red-600":t.includes("green")||t.includes("\u7DD1")?"text-green-600":t.includes("blue")||t.includes("\u9752")?"text-blue-600":t.includes("yellow")||t.includes("\u9EC4")?"text-yellow-600":t.includes("orange")||t.includes("\u6A59")?"text-orange-500":"text-gray-700"};var re=e=>{if(!e)return"-";let t=e.trim();return t===""?"-":t},ne=e=>{if(!e)return"-";if(typeof e!="string")return e instanceof Date?ne(e.toISOString()):String(e);let t=e.trim();if(t==="")return"-";let r=new Date(t);if(Number.isNaN(r.getTime()))return t;let n=r.getFullYear(),s=String(r.getMonth()+1).padStart(2,"0"),a=String(r.getDate()).padStart(2,"0");if(t.includes(":")||t.includes("T")){let p=String(r.getHours()).padStart(2,"0"),u=String(r.getMinutes()).padStart(2,"0"),d=String(r.getSeconds()).padStart(2,"0");return`${n}-${s}-${a}T${p}:${u}:${d}`}return`${n}-${s}-${a}`};import{clsx as hr}from"clsx";import{twMerge as xr}from"tailwind-merge";function q(...e){return xr(hr(e))}import{jsx as Ne,jsxs as Ge}from"react/jsx-runtime";var Dr=(e,t,r)=>t===e||typeof e=="number"&&e<0&&r?.get(e)===t||typeof t=="number"&&t<0&&r?.get(t)===e,Ct=({comment:e,reportHubId:t,businessDate:r,onOptimisticDelete:n,pendingDeleteId:s,onPendingDeleteIdChange:a,onTrashClick:o,resolvedIdMap:p})=>{let[u,d]=Rr(!1),g=Dr(e.id,s,p),N=i=>{i.stopPropagation(),i.preventDefault(),a(null),d(!0),typeof e.id=="number"&&n(e.id)};return Ge("li",{"data-comment-id":e.id,"data-deleted":u?"true":void 0,className:q("group relative rounded-xl border border-slate-200 bg-white p-3",e.isMine&&"border-blue-200 bg-blue-50",u&&"hidden",g?"z-50":"z-0 hover:z-10"),children:[Ge("div",{className:"mb-1 flex items-center justify-between",children:[Ne("div",{className:q("font-semibold text-xs",It(e.color)),children:re(e.authorName)}),Ge("div",{className:"flex items-center gap-2",children:[e.createdAt&&Ne("div",{className:"text-[10px] text-slate-400",children:ne(e.createdAt)}),e.isMine&&!e.isLegacy&&Ge("div",{className:"relative",children:[Ne("button",{type:"button",className:q("transition-colors",g?"text-red-500":"text-slate-400 hover:text-red-500"),title:"\u524A\u9664","aria-label":"\u524A\u9664",onClick:i=>o(i,e.id),children:Ne(vr,{className:"h-4 w-4"})}),g&&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:N,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 wr,useEffect as Nt,useRef as St,useState as Ir}from"react";import{jsx as De,jsxs as Nr}from"react/jsx-runtime";var Cr=(e,t)=>{let r=St(null);return Nt(()=>{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]),Nt(()=>()=>{r.current&&clearTimeout(r.current)},[]),{handleTrashClick:wr((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])}},qe=({comments:e,reportHubId:t,businessDate:r,onDeleteComment:n,pendingDeleteId:s,onPendingDeleteIdChange:a,resolvedIdMap:o})=>{let{handleTrashClick:p}=Cr(s,a);return e.length===0?null:De("ul",{className:"mb-3 space-y-2",children:e.map(u=>De(Ct,{comment:u,reportHubId:t,businessDate:r,onOptimisticDelete:n||(()=>{}),pendingDeleteId:s,onPendingDeleteIdChange:a,onTrashClick:p,resolvedIdMap:o},u.id))})},Ye=({reportHubId:e,businessDate:t,onAddComment:r})=>{let[n,s]=Ir(!1),a=St(null);return Nr("form",{className:"flex gap-2",ref:a,onSubmit:async p=>{p.preventDefault();let d=new FormData(p.currentTarget).get("content")?.trim();if(d&&r){s(!0),a.current?.reset();try{await r(d)}catch{if(a.current){let g=a.current.elements.namedItem("content");g&&(g.value=d)}}finally{s(!1)}}},children:[De("input",{type:"hidden",name:"intent",value:"addComment"}),De("input",{type:"hidden",name:"reportHubId",value:e}),De("input",{type:"hidden",name:"businessDate",value:t}),De("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"}),De("button",{type:"submit",className:"rounded-lg bg-blue-600 px-4 py-2 font-medium text-sm text-white hover:bg-blue-700 disabled:opacity-50",disabled:n,children:"\u9001\u4FE1"})]})};import{tapScrollCircleSampleVisual as yn,VirtualScroll as hn}from"@aiquants/virtualscroll";import{Check as xn,Star as ar,Trash2 as vn}from"lucide-react";import{useCallback as ye,useEffect as ve,useMemo as dt,useRef as fe,useState as Ue}from"react";import{createContext as Sr,useContext as Tr,useMemo as kr}from"react";import{jsx as ft,jsxs as Er}from"react/jsx-runtime";var Tt={id:"ID",businessDate:"Business date",author:"Author",visitTime:"Visit time",createdAt:"Created at",updatedAt:"Updated at",updatedBy:"Updated by",category:"Category",categoryInfo:"Category",creationCategory:"Creation category",customer:"Customer",subject:"Subject",content:"Content",interviewers:"Attendees",comments:"Comments",tabArticle:"Overview",tabRelations:"Related",relationsEmpty:"No related view configured yet."},Ke={title:"Daily Reports",apiBasePath:"/daily_report/api",ssePath:"/sse/daily_report/updates",draftLabelName:"draft",fieldLabels:Tt,renderHeader:({title:e,annotation:t})=>Er("header",{className:"flex flex-wrap items-baseline justify-between gap-2 px-2 py-1",children:[ft("span",{className:"text-nowrap text-slate-700 text-sm dark:text-slate-200",children:e}),t?ft("span",{className:"text-slate-600 text-xs dark:text-slate-300",children:t}):null]}),showDevControls:!1,sourceTypeConfigs:{Internal:{label:"\u30AA\u30EA\u30B8\u30CA\u30EB",badgeClassName:"bg-emerald-100 text-emerald-800 dark:bg-emerald-900/30 dark:text-emerald-400"}}},kt=Sr(Ke),Et=({config:e,children:t})=>{let r=kr(()=>({...Ke,...e,fieldLabels:{...Tt,...e?.fieldLabels??{}}}),[e]);return ft(kt.Provider,{value:r,children:t})},J=()=>Tr(kt);import{createContext as Qr,useCallback as ke,useContext as Xr,useEffect as Gt,useRef as ue,useState as gt}from"react";var Se=(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 Lr,useEffect as Lt,useRef as Pr,useState as Qe}from"react";var Hr=/^\d{4}-\d{2}-\d{2}$/,Mr=/^\d{4}\/\d{2}\/\d{2}$/,Ht=e=>e<10?`0${e}`:`${e}`,Mt=e=>{if(Number.isNaN(e.getTime()))return null;let t=e.getFullYear(),r=Ht(e.getMonth()+1),n=Ht(e.getDate());return`${t}-${r}-${n}`},Me=e=>{if(e==null)return null;if(e instanceof Date)return Mt(e);let t=e.trim();if(t==="")return null;if(Hr.test(t))return t;if(Mr.test(t))return t.replaceAll("/","-");let r=new Date(t);return Mt(r)};var At=Se(1,"use-daily-report"),Ot=(e,t)=>{if(typeof window>"u")return t;let r=window[e];return typeof r=="number"&&!Number.isNaN(r)?r:t},_t=Ot("__DAILY_REPORT_CACHE_TTL__",3e5),Ar=Ot("__DAILY_REPORT_CACHE_REVIVE_MS__",6e4),Or=120,P={reports:new Map,lists:new Map,pendingLists:new Map,pendingReports:new Map,listeners:new Set,locks:new Set,lastMutations:new Map,recentDeletes:new Map,lastPrune:0,prune(){let e=Date.now();if(e-this.lastPrune<6e4)return;this.lastPrune=e;let t=3600*1e3;for(let[r,n]of this.reports)e-n.expiresAt>t&&this.reports.delete(r);for(let[r,n]of this.lists)e-n.expiresAt>t&&this.lists.delete(r)},isValid:e=>e>Date.now(),notify:e=>{P.listeners.forEach(t=>{t(e)})},getReport(e,t=!1){let r=this.reports.get(e);return r&&(t||this.isValid(r.expiresAt))?r.data:null},getList(e,t=!1){let r=e&&this.lists.get(e);return r&&(t||this.isValid(r.expiresAt))?r.data:null},set(e,t,r=!0){if(this.reports.set(e.reportHubId,{data:e,expiresAt:t}),r){let n=Me(e.date),s=n?this.lists.get(n):null;if(s&&n){let o=s.data.some(p=>p.reportHubId===e.reportHubId)?s.data.map(p=>p.reportHubId===e.reportHubId?e:p):[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()){At.warn(`[DailyReportCache] Stale update skipped id=${e}`);return}this.set({...n.data,...t},Math.max(n.expiresAt,Date.now()+Ar))}},delete(e,t){this.reports.delete(e);let r=Me(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).getTime()<1e4);s.length>0&&(r={...r,commentItems:[...r.commentItems,...s].sort((a,o)=>new Date(a.createdAt).getTime()-new Date(o.createdAt).getTime())})}return r},cacheMany(e,t,r=0){if(!e.length)return[];this.prune();let n=Date.now(),s=n+_t;for(let[o,p]of this.recentDeletes)n-p>1e4&&this.recentDeletes.delete(o);let a=e.map(o=>{if(this.locks.has(o.reportHubId))return o;let p=this.lastMutations.get(o.reportHubId);if(p&&r>0&&p>r)return this.reports.get(o.reportHubId)?.data??o;let u=this.reports.get(o.reportHubId)?.data,d=this.merge(o,u);return this.set(d,s,!1),d});return t&&this.lists.set(t,{data:a,expiresAt:s}),a}},Ft=(e,t,r=!0)=>P.set(e,t,r),de=(e,t)=>P.getReport(e,t?.ignoreExpiry),ce=(e,t)=>P.update(e,t),Xe=(e,t)=>P.delete(e,t),Le=e=>{P.locks.add(e),P.lastMutations.set(e,Date.now())},Pe=e=>{P.locks.delete(e),P.lastMutations.set(e,Date.now())},Bt=e=>P.recentDeletes.set(e,Date.now()),Ut=(e,t)=>{let r=n=>{n===e&&t()};return P.listeners.add(r),()=>{P.listeners.delete(r)}},xe=(e,t)=>{P.prune(),P.set(t,Date.now()+_t)},_r=async(e,t)=>{let r=P.getReport(t);if(r)return r;let n=P.pendingReports.get(t);if(n)return n;let s=Date.now(),a=fetch(`${e}/report?reportHubId=${t}`,{cache:"no-cache"}).then(o=>o.ok?o.json():Promise.reject(`HTTP ${o.status}`)).then(o=>{if(o.error)throw new Error(o.error.message);let p=o.report;return P.cacheMany([p],null,s)[0]}).finally(()=>P.pendingReports.delete(t));return P.pendingReports.set(t,a),a},$t=async(e,t)=>{let r=P.getList(t);if(r)return r;let n=P.pendingLists.get(t);if(n)return n;let s=Date.now(),a=fetch(`${e}/business-date?businessDate=${encodeURIComponent(t)}`,{cache:"no-cache"}).then(o=>o.ok?o.json():Promise.reject(`HTTP ${o.status}`)).then(o=>{if(o.error)throw new Error(o.error.message);return P.cacheMany(o.reports??[],t,s)}).finally(()=>P.pendingLists.delete(t));return P.pendingLists.set(t,a),a},Te=(e,t)=>{let{apiBasePath:r}=J(),[n,s]=Qe(()=>P.getReport(e)),[a,o]=Qe(null),[p,u]=Qe(!1),[d,g]=Qe(!1),N=Pr({id:e,token:0});return Lt(()=>{let i=D=>{if(D===e){let w=P.getReport(e,!0);s(w)}};return P.listeners.add(i),()=>{P.listeners.delete(i)}},[e]),Lt(()=>{let i=Me(t),D=(N.current.token||0)+1;if(N.current={id:e,token:D},e<=0){s(null),o(e===0?new Error("Invalid ID"):null),u(!1),g(!1);return}let w=P.getReport(e,!0),T=!1;if(w)T=!P.isValid(P.reports.get(e)?.expiresAt??0);else if(i){let I=P.getList(i,!0)?.find(H=>H.reportHubId===e);I&&(w=I,T=!P.isValid(P.lists.get(i)?.expiresAt??0))}if(s(w),w&&!T){o(null),u(!1),g(!1);return}u(!w),g(!0);let M=setTimeout(async()=>{if(N.current.token===D)try{let R=null;i?R=(await $t(r,i)).find(H=>H.reportHubId===e)??null:R=await _r(r,e),N.current.token===D&&(s(R),o(null))}catch(R){N.current.token===D&&o(R instanceof Error?R:new Error("Load failed"))}finally{N.current.token===D&&(u(!1),g(!1))}},Or);return()=>clearTimeout(M)},[e,t,r]),{report:n,error:a,isLoading:p,isRefetching:d}},Vt=()=>{let{apiBasePath:e}=J();return Lr(t=>{let r=Me(t);r&&!P.getList(r)&&$t(e,r).catch(n=>At.warn("Prefetch error",r,n))},[e])};import{useEffect as Kr}from"react";import{z as b}from"zod";var Fr=b.object({name:b.string(),affiliation:b.string().nullable()}),Br=b.object({name:b.string().nullable(),text:b.string().nullable(),color:b.string().nullable()}),Ur=b.object({id:b.number(),name:b.string(),color:b.string().nullable()}),jt=b.object({id:b.number(),userId:b.string(),userName:b.string(),content:b.string(),createdAt:b.string(),isMine:b.boolean()}),bt=b.object({reportHubId:b.number(),date:b.string().nullable(),createdAt:b.string().nullable(),author:b.string(),userId:b.string(),employeeName:b.string().nullable(),updatedBy:b.string().nullable(),updatedAt:b.string().nullable(),category:b.string().nullable(),creationCategory:b.string().nullable(),visitTimeFrom:b.string().nullable(),visitTimeTo:b.string().nullable(),customerName:b.string().nullable(),interviewers:b.array(Fr),subject:b.string().nullable(),content:b.string().nullable(),comments:b.array(Br),isRead:b.boolean(),isStarred:b.boolean(),labels:b.array(Ur),commentItems:b.array(jt)}),$r=b.object({type:b.literal("connected")}),Vr=b.object({type:b.literal("status-update"),reportHubId:b.number(),statusType:b.enum(["star","read"]),value:b.boolean(),clientTempId:b.string(),recipientRawUserId:b.number().optional()}),jr=b.object({type:b.literal("comment-add"),reportHubId:b.number(),comment:jt,clientTempId:b.string()}),zr=b.object({type:b.literal("comment-delete"),reportHubId:b.number(),commentId:b.number(),clientTempId:b.string()}),Wr=b.object({type:b.literal("report-create"),reportHubId:b.number(),report:bt,clientTempId:b.string(),recipientRawUserId:b.number().optional()}),Gr=b.object({type:b.literal("report-update"),reportHubId:b.number(),report:bt,clientTempId:b.string(),recipientRawUserId:b.number().optional()}),qr=b.object({type:b.literal("report-publish"),reportHubId:b.number(),report:bt,clientTempId:b.string()}),Yr=b.object({type:b.literal("report-delete"),reportHubId:b.number(),clientTempId:b.string()}),zt=b.discriminatedUnion("type",[$r,Vr,jr,zr,Wr,Gr,qr,Yr]);var Ae=Se(1,"daily-report-sse-connection"),Wt=({isSseEnabled:e,onMessage:t})=>{let{ssePath:r}=J();Kr(()=>{if(!e)return;let n=null,s=null,a=0,o,p=()=>{n?.close(),n=new EventSource(`${r}${o?`?lastEventId=${o}`:""}`),n.onopen=()=>{a=0,Ae.info("SSE Connected")},n.onmessage=u=>{u.lastEventId&&(o=u.lastEventId);try{let d=JSON.parse(u.data),g=zt.safeParse(d);if(!g.success){Ae.error("SSE Validation Error",g.error.format());return}if(g.data.type==="connected"){Ae.info("SSE Subscribe Ready");return}t(g.data)}catch(d){Ae.error("SSE Parse Error",d)}},n.onerror=u=>{n?.close(),n=null,a++;let d=Math.min(2e3*2**(a-1),3e4);Ae.error(`SSE Error. Retrying in ${d}ms (attempt ${a})...`,u),s=setTimeout(p,d)}};return p(),()=>{n&&n.close(),s&&clearTimeout(s)}},[e,t,r])};import{jsx as Jr}from"react/jsx-runtime";var Oe=Se(1,"daily-report-action-context"),yt=globalThis.__DailyReportActionContext??Qr(null);globalThis.__DailyReportActionContext=yt;var me=()=>{let e=Xr(yt);if(!e)throw new Error("useDailyReportActionContext must be used within a DailyReportActionProvider");return e},_e=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"},qt=({children:e,user:t,initialItems:r=[],userId:n})=>{let{apiBasePath:s,draftLabelName:a}=J(),o=ue(new Map),p=ue(new Map),u=ue(new Map),d=ue(new Map),g=ue(new Map),[N,i]=gt(0),[D,w]=gt(r),[T,M]=gt(!!n),R=ue(new Map),I=ue(new Set),H=ue(new Set),k=ue(new Set),L=ue(new Map),z=ue(()=>{}),U=ke((h,l)=>{let y=L.current,c=y.get(h);if(c){c.messages.push(l);return}let f={messages:[l],unsubscribe:()=>{},timer:setTimeout(()=>{let v=y.get(h);v&&(v.unsubscribe(),y.delete(h),Oe.warn(`[SSE Queue] Expired: reportHubId=${h}, dropped=${v.messages.length} messages`))},3e4)};f.unsubscribe=Ut(h,()=>{let v=y.get(h);if(v&&de(h,{ignoreExpiry:!0})){v.unsubscribe(),clearTimeout(v.timer),y.delete(h),Oe.info(`[SSE Queue] Replaying ${v.messages.length} messages for reportHubId=${h}`);for(let C of v.messages)z.current(C)}}),y.set(h,f)},[]),W=h=>{k.current.add(h),setTimeout(()=>{k.current.delete(h)},3e4)},Z=ke(h=>!!h&&k.current.has(h),[]),V=ke((h,l)=>{w(y=>{let c=l??y.find(C=>C.reportHubId===h)?.businessDate??null;return(y.some(C=>C.reportHubId===h)?y.map(C=>C.reportHubId===h?{...C,businessDate:c}:C):[{reportHubId:h,businessDate:c},...y]).sort((C,O)=>{let F=C.businessDate??"";return(O.businessDate??"").localeCompare(F)})})},[]),ie=()=>{n&&M(h=>!h)},le=ke(h=>{H.current.add(h),w(l=>l.filter(y=>y.reportHubId!==h))},[]);Gt(()=>{let h=new Set(r.map(l=>l.reportHubId));for(let l of H.current)h.has(l)||H.current.delete(l);w(l=>{let y=new Map;for(let c of r)H.current.has(c.reportHubId)||y.set(c.reportHubId,c);for(let c of l)y.has(c.reportHubId)||H.current.has(c.reportHubId)||y.set(c.reportHubId,c);return Array.from(y.values()).sort((c,f)=>{let v=c.businessDate?new Date(c.businessDate).getTime():0;return(f.businessDate?new Date(f.businessDate).getTime():0)-v})})},[r]);let j=ke(h=>{if(!Z(h.clientTempId))switch(h.type){case"comment-add":{let{comment:l,reportHubId:y}=h,c=de(y,{ignoreExpiry:!0});if(c){if(c.commentItems.some(F=>F.id===l.id))return;let f=!1,v=o.current.get(y);if(v){for(let[F,se]of v.entries())if(se===l.content){v.delete(F),g.current.set(F,l.id),f=!0;break}}let C={...l,userName:l.userName||(f?_e(t):"Unknown"),createdAt:l.createdAt||new Date().toISOString(),isMine:f},O={...c,commentItems:[...c.commentItems,C].sort((F,se)=>new Date(F.createdAt).getTime()-new Date(se.createdAt).getTime())};xe(y,O),Le(y),Pe(y),i(F=>F+1)}else U(y,h);break}case"comment-delete":{let{commentId:l,reportHubId:y}=h,c=de(y,{ignoreExpiry:!0});if(c){let f={...c,commentItems:c.commentItems.filter(v=>v.id!==l)};xe(y,f),Le(y),Pe(y),i(v=>v+1)}else U(y,h);break}case"status-update":{let{statusType:l,value:y,reportHubId:c}=h,f=de(c,{ignoreExpiry:!0});if(l==="star")if(u.current.get(c)===y&&u.current.delete(c),f){let v={...f,isStarred:y};xe(c,v),i(C=>C+1)}else U(c,h);else if(l==="read")if(d.current.get(c)===y&&d.current.delete(c),f){let v={...f,isRead:y};xe(c,v),i(C=>C+1)}else U(c,h);break}case"report-delete":{let{reportHubId:l}=h;I.current.delete(l),H.current.add(l);let y=L.current.get(l);y&&(y.unsubscribe(),clearTimeout(y.timer),L.current.delete(l));let c=de(l,{ignoreExpiry:!0});c?.date&&(Xe(l,c.date),i(f=>f+1)),w(f=>f.filter(v=>v.reportHubId!==l));break}case"report-create":case"report-update":case"report-publish":{let{report:l}=h;xe(l.reportHubId,l),(h.type==="report-create"||h.type==="report-publish")&&(I.current.add(l.reportHubId),V(l.reportHubId,l.date)),i(y=>y+1);break}}},[Z,V,t,U]);z.current=j,Gt(()=>()=>{for(let h of L.current.values())h.unsubscribe(),clearTimeout(h.timer);L.current.clear()},[]),Wt({isSseEnabled:T,onMessage:j});let K=async(h,l,y,c,f,v)=>{v?.skipLock||Le(h),f.onOptimistic?.();let C=c.clientTempId||crypto.randomUUID();W(C);let O=new FormData;O.append("intent",l),O.append("reportHubId",String(h)),O.append("businessDate",y),O.append("operationTimestamp",String(Date.now())),O.append("clientTempId",C);for(let[F,se]of Object.entries(c))F!=="clientTempId"&&O.append(F,se);try{let F=await fetch(`${s}/action`,{method:"POST",body:O,headers:{Accept:"application/json"}});if(!F.ok){let Dt=new Error(`Failed to ${l}`);throw Object.assign(Dt,{status:F.status}),Dt}let se=await F.json();if(se.status!=="OK"||l!=="create"&&String(se.reportHubId)!==String(h))throw new Error(`Invalid response for ${l}`);if(typeof se.clientTempId!="string"||se.clientTempId!==C)throw new Error(`Invalid clientTempId for ${l}`);return await f.onSuccess?.(se)}catch(F){throw Oe.error(`${l} failed:`,F),f.onFailure?.(),F}finally{v?.keepLock||v?.skipLock||Pe(h)}},te=async(h,l,y)=>{let c=Number(h),f=-1*Date.now(),v=K(c,"addComment",y,{content:l,clientTempId:String(f)},{onOptimistic:()=>{o.current.has(c)||o.current.set(c,new Map),o.current.get(c)?.set(f,l),i(C=>C+1)},onSuccess:C=>{if(!C.newComment)throw new Error("No new comment returned");let O=C.newComment.id;g.current.set(f,O),o.current.get(c)?.delete(f);let F=de(c,{ignoreExpiry:!0});return F&&!F.commentItems.some(se=>se.id===O)&&ce(c,{commentItems:[...F.commentItems,{...C.newComment,id:O,isMine:!0,userName:_e(t)}],updatedAt:C.updatedAt}),O},onFailure:()=>{o.current.get(c)?.delete(f)}},{skipLock:!0}).finally(()=>R.current.delete(f));R.current.set(f,v),await v},S=async(h,l,y)=>{let c=Number(h);p.current.has(c)||p.current.set(c,new Set),p.current.get(c)?.add(l),i(v=>v+1);let f=l;if(l<0){let v=g.current.get(l);if(v!==void 0)f=v;else{let C=R.current.get(l);if(!C)return;try{f=await C}catch{return}}}await K(c,"deleteComment",y,{commentId:String(f)},{onSuccess:v=>{let C=typeof v.deletedCommentId=="string"?Number(v.deletedCommentId):f,O=de(c,{ignoreExpiry:!0});O&&(ce(c,{commentItems:O.commentItems.filter(F=>F.id!==C),updatedAt:v.updatedAt}),Bt(C)),p.current.get(c)?.delete(l)},onFailure:()=>{p.current.get(c)?.delete(l)}},{skipLock:!0})},B=async(h,l,y)=>{let c=Number(h);await K(c,"toggleStar",y,{isStarred:String(l)},{onOptimistic:()=>{ce(c,{isStarred:l}),u.current.set(c,l),i(f=>f+1)},onSuccess:f=>{f.updatedStatus&&typeof f.updatedStatus.isStarred=="boolean"&&de(c,{ignoreExpiry:!0})&&(ce(c,{isStarred:f.updatedStatus.isStarred,updatedAt:f.updatedAt}),i(C=>C+1)),u.current.delete(c)},onFailure:()=>{ce(c,{isStarred:!l}),u.current.delete(c)}},{skipLock:!0})},Y=async(h,l,y)=>{let c=Number(h);await K(c,"toggleRead",y,{isRead:String(l)},{onOptimistic:()=>{ce(c,{isRead:l}),d.current.set(c,l),i(f=>f+1)},onSuccess:f=>{f.updatedStatus&&typeof f.updatedStatus.isRead=="boolean"&&de(c,{ignoreExpiry:!0})&&(ce(c,{isRead:f.updatedStatus.isRead,updatedAt:f.updatedAt}),i(C=>C+1)),d.current.delete(c)},onFailure:()=>{ce(c,{isRead:!l}),d.current.delete(c)}},{skipLock:!0})},G=ue(Y);G.current=Y;let he=ke((h,l,y)=>G.current(h,l,y),[]),E=async h=>{let l=-1*Date.now(),y=new Date().toISOString(),c={reportHubId:l,date:h,createdAt:y,author:_e(t),userId:t?.id??"unknown",employeeName:_e(t),updatedBy:_e(t),updatedAt:y,category:null,creationCategory:null,visitTimeFrom:null,visitTimeTo:null,customerName:null,interviewers:[],subject:"",content:"",comments:[],isRead:!0,isStarred:!1,labels:[{id:0,name:a,color:"#9ca3af"}],commentItems:[]};Ft(c,Date.now()+3e5,!1),w(f=>[{reportHubId:l,businessDate:h},...f]);try{let f=await K(0,"create",h,{clientTempId:String(l)},{onSuccess:C=>C});if(f.clientTempId&&f.clientTempId!==String(l))throw Oe.warn(`[createReport] ID mismatch. req=${l}, res=${f.clientTempId}`),new Error("Optimistic ID mismatch");let v=Number(f.reportHubId);return Le(v),f.report&&(xe(v,f.report),i(C=>C+1)),w(C=>C.some(O=>O.reportHubId===v)?C.filter(O=>O.reportHubId!==l):C.map(O=>O.reportHubId===l?{...O,reportHubId:v}:O)),setTimeout(()=>Pe(v),1e3),v}catch(f){throw Oe.error("[createReport] Failed or mismatched",f),w(v=>v.filter(C=>C.reportHubId!==l)),f}},_=async(h,l,y)=>{let c=Number(h);await K(c,"update",y,{...l.title&&{title:l.title},...l.content&&{content:l.content}},{onSuccess:()=>{let f=de(c,{ignoreExpiry:!0});f&&(ce(c,{subject:l.title??f.subject,content:l.content??f.content}),i(v=>v+1))}})},ee=async(h,l)=>{let y=Number(h),c=de(y,{ignoreExpiry:!0}),f=c?.labels||[];await K(y,"publish",l,{},{onOptimistic:()=>{if(c){let v=c.labels.filter(C=>C.name!==a);ce(y,{labels:v}),i(C=>C+1)}},onSuccess:v=>{v.report&&(xe(y,v.report),i(C=>C+1))},onFailure:()=>{ce(y,{labels:f}),i(v=>v+1)}},{skipLock:!0})},pe=async(h,l)=>{let y=Number(h),c=D.find(f=>f.reportHubId===y);H.current.add(y),w(f=>f.filter(v=>v.reportHubId!==y));try{await K(y,"delete",l,{},{onSuccess:f=>{Xe(y,l)}})}catch(f){if(f.status===404){Xe(y,l);return}H.current.delete(y),c&&w(C=>C.some(O=>O.reportHubId===y)?C:[c,...C].sort((O,F)=>(F.businessDate??"").localeCompare(O.businessDate??"")))}};return Jr(yt.Provider,{value:{user:t,pendingAddCommentIds:o,pendingDeleteCommentIds:p,pendingStarUpdates:u,pendingReadUpdates:d,resolvedIdMap:g,version:N,items:D,isSseEnabled:T,toggleSse:ie,addComment:te,deleteComment:S,toggleStar:B,toggleRead:he,createReport:E,updateReport:_,publishReport:ee,deleteReport:pe,removeStaleItem:le},children:e})};import{useCallback as Yt,useMemo as Zr,useRef as en,useState as tn}from"react";var Je=(e,t,r)=>{let{pendingAddCommentIds:n,pendingDeleteCommentIds:s,resolvedIdMap:a,version:o,addComment:p,deleteComment:u}=me(),[d,g]=tn(null),N=Yt(T=>e&&u(e.reportHubId,T,e.date??""),[e,u]),i=Yt(T=>e&&t?p(e.reportHubId,T,e.date??""):Promise.resolve(),[e,t,p]),D=en([]);return{uiComments:Zr(()=>{if(!e)return[];let T=wt(e.comments,e.commentItems,r),M=s.current.get(e.reportHubId);M?.size&&(T=T.filter(I=>!M.has(I.id)));let R=n.current.get(e.reportHubId);if(R?.size&&t){let I=new Set(T.map(k=>k.id)),H=t.displayName?.trim()||(t.name?`${t.name.familyName??""} ${t.name.givenName??""}`.trim():"")||t.emails?.[0]?.value||"Unknown";for(let[k,L]of R){if(M?.has(k)||I.has(k))continue;let z=a.current.get(k);z&&I.has(z)||T.some(U=>U.isMine&&U.content===L&&typeof U.id=="number"&&U.id>0)||T.push({id:k,authorName:H,content:L,createdAt:new Date().toISOString(),isMine:!0,isLegacy:!1})}}return JSON.stringify(T)===JSON.stringify(D.current)?D.current:(D.current=T,T)},[e,t,r,s,n,a,o]),handleAddComment:i,handleDeleteComment:N,pendingDeleteId:d,setPendingDeleteId:g,resolvedIdMap:a.current}};import{useCallback as rn,useEffect as nn,useState as sn}from"react";var Ze=(e,t)=>{let{enableMutationObserver:r=!1,bottomGap:n=4,minFallbackHeight:s=240}=t??{},[a,o]=sn(600),p=rn(()=>{if(typeof window>"u")return;let u=e.current;if(!u||u.offsetParent===null&&window.getComputedStyle(u).position!=="fixed")return;let d=V=>Number.parseFloat(V)||0,{top:g}=u.getBoundingClientRect(),N=u.parentElement?.getBoundingClientRect(),i=window.getComputedStyle(document.documentElement),D=d(i.getPropertyValue("--footer-height")),w=d(i.getPropertyValue("--header-height")),T=d(i.getPropertyValue("--scrollbar-height")),M=window.getComputedStyle(u),R=d(M.marginBottom),I=d(M.paddingBottom),H=window.innerHeight-D-T-n,k=N?Math.min(N.bottom,H):H,L=N?Math.max(N.top,w):w,z=Math.max(g,L),U=k-z-R-I,W=Number.isFinite(U)?Math.floor(U):0,Z=W>0?W:s;Z>0&&Number.isFinite(Z)&&o(V=>Math.abs(V-Z)>1?Z:V)},[n,e,s]);return nn(()=>{if(typeof window>"u")return;let u=null,d=null,g=null,N=null,i=()=>{u!==null&&window.cancelAnimationFrame(u),u=window.requestAnimationFrame(()=>{p()})};i(),d=window.setTimeout(()=>{i()},150);let D=e.current;return typeof ResizeObserver<"u"&&D&&(g=new ResizeObserver(()=>{i()}),g.observe(D),D.parentElement&&g.observe(D.parentElement)),r&&typeof MutationObserver<"u"&&(N=new MutationObserver(()=>{i()}),N.observe(document.documentElement,{attributes:!0,attributeFilter:["style"]})),window.addEventListener("resize",i),()=>{u!==null&&window.cancelAnimationFrame(u),d!==null&&window.clearTimeout(d),window.removeEventListener("resize",i),g?.disconnect(),N?.disconnect()}},[r,p,e]),{viewportHeight:a,updateViewportHeight:p}};import{tapScrollCircleSampleVisual as an}from"@aiquants/virtualscroll";var et=180,ht=160,tt=6,Fe=ht-tt,rt=.8,nt={maxVelocity:18,deceleration:.0018,startVelocityThreshold:.03},st=20,Kt=6,at={reportHubId:-1,businessDate:null},Qt={report:null,error:null,isLoading:!1,isRefetching:!1},Xt=240,ot=15,Jt=8,Zt=3,er={enabled:!0,renderVisual:an,maxSpeedCurve:{exponentialSteepness:7.5,exponentialScale:14,easedOffset:.18},maxSpeedMultiplier:18};import{useEffect as fn,useRef as bn,useState as xt}from"react";import{Slot as on}from"@radix-ui/react-slot";import{cva as ln}from"class-variance-authority";import*as tr from"react";import{jsx as cn}from"react/jsx-runtime";var dn=ln("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"}}),we=tr.forwardRef(({className:e,variant:t,size:r,asChild:n=!1,...s},a)=>cn(n?on:"button",{className:q(dn({variant:t,size:r,className:e})),ref:a,...s}));we.displayName="Button";import{jsx as un}from"react/jsx-runtime";function rr({className:e,type:t,...r}){return un("input",{type:t,"data-slot":"input",className:q("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 nr from"@radix-ui/react-label";import{jsx as mn}from"react/jsx-runtime";function Ee({className:e,...t}){return mn(nr.Root,{"data-slot":"label",className:q("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 pn}from"react/jsx-runtime";function sr({className:e,...t}){return pn("textarea",{"data-slot":"textarea",className:q("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 Ie,jsxs as it}from"react/jsx-runtime";var lt=({report:e,onCancel:t,onPublishSuccess:r})=>{let{updateReport:n,publishReport:s}=me(),[a,o]=xt(e.subject??""),[p,u]=xt(e.content??""),[d,g]=xt(!1),N=bn(e.reportHubId);fn(()=>{e.reportHubId!==N.current&&(o(e.subject??""),u(e.content??""),N.current=e.reportHubId)},[e.reportHubId,e.subject,e.content]);let i=async()=>{g(!0);try{await n(e.reportHubId,{title:a,content:p},e.date??"")}finally{g(!1)}},D=async()=>{g(!0);try{await n(e.reportHubId,{title:a,content:p},e.date??""),await s(e.reportHubId,e.date??""),r?.()}finally{g(!1)}};return it("div",{className:"space-y-6 p-1",children:[it("div",{className:"space-y-2",children:[Ie(Ee,{htmlFor:`report-title-${e.reportHubId}`,children:"\u30BF\u30A4\u30C8\u30EB"}),Ie(rr,{id:`report-title-${e.reportHubId}`,value:a,onChange:w=>o(w.target.value),placeholder:"\u65E5\u5831\u306E\u30BF\u30A4\u30C8\u30EB\u3092\u5165\u529B",disabled:d})]}),it("div",{className:"space-y-2",children:[Ie(Ee,{htmlFor:`report-content-${e.reportHubId}`,children:"\u5185\u5BB9"}),Ie(sr,{id:`report-content-${e.reportHubId}`,value:p,onChange:w=>u(w.target.value),placeholder:"\u65E5\u5831\u306E\u5185\u5BB9\u3092\u5165\u529B",className:"min-h-50",disabled:d})]}),it("div",{className:"flex justify-end gap-2",children:[t&&Ie(we,{variant:"outline",onClick:t,disabled:d,children:"\u30AD\u30E3\u30F3\u30BB\u30EB"}),Ie(we,{variant:"secondary",onClick:i,disabled:d,children:"\u4FDD\u5B58"}),Ie(we,{onClick:D,disabled:d,children:"\u516C\u958B"})]})]})};import{jsx as gn}from"react/jsx-runtime";var Be=({className:e})=>gn("span",{className:q("text-blue-500",e),children:"\u25CF"});import{Fragment as En,jsx as x,jsxs as A}from"react/jsx-runtime";var Rn=(e,t,r)=>{ve(()=>{let n=e.current;if(!n)return;let s=new ResizeObserver(()=>{r(t,n.offsetHeight)});return s.observe(n),()=>s.disconnect()},[t,r,e])},Dn=({itemId:e,onHeightMeasured:t,children:r})=>{let n=fe(null);return Rn(n,e,t),x("div",{ref:n,className:"px-2 pb-3","data-daily-report-button":e,children:r})},wn=e=>e.affiliation?.trim()?`${e.name}\uFF08${e.affiliation}\uFF09`:e.name,or=({dailyReportItems:e,userId:t,selectedItemId:r,onSelectItem:n})=>{let[s,a]=Ue(new Map),o=fe(null),p=fe(null),{viewportHeight:u,updateViewportHeight:d}=Ze(o,{enableMutationObserver:!0}),g=Vt(),[N,i]=Ue(""),[D,w]=Ue(!1),T=fe(null),M=fe(null),R=fe(e);R.current=e;let I=fe(null);ve(()=>{if(r!=null&&p.current){let S=e.findIndex(B=>B.reportHubId===r);if(S!==-1){if(I.current?.id===r&&I.current?.index===S)return;p.current.scrollToIndex(S,{align:"top"}),I.current={id:r,index:S}}}else I.current=null},[r,e]);let H=fe(n);H.current=n,ve(()=>{if(p.current){let S=document.querySelector('[data-testid="daily-report-detail-list"]');if(S){let B=p.current,Y=Object.assign({},B,{findReportIndex:G=>R.current.findIndex(he=>he.reportHubId===G),getReportItem:G=>R.current[G],selectItem:G=>H.current?.(G)});S.__virtualScroll=Y}}});let k=e.length,L=ye(S=>S>=k?at:e[S],[e,k]),z=ye((S,B)=>{if(k===0)return;let Y=Math.max(0,S),G=Math.min(k-1,B);if(Y>G)return;let he=new Set;for(let E=Y;E<=G;E++){let _=L(E);if(_.businessDate&&he.add(_.businessDate),he.size>=Kt)break}he.forEach(E=>{g(E)})},[L,k,g]),U=ye(({renderingStartIndex:S,renderingEndIndex:B,visibleStartIndex:Y})=>{if(k===0)return;let G=L(Y);G?.businessDate&&i(ne(G.businessDate)),z(S,B),z(B+1,B+st),z(S-st,S-1)},[L,k,z]),W=ye(()=>{let S=o.current;S&&(S.dataset.scrolling!=="true"&&(S.dataset.scrolling="true"),M.current&&clearTimeout(M.current),M.current=setTimeout(()=>{S&&delete S.dataset.scrolling,M.current=null},150))},[]),Z=ye(S=>x(We,{...S,label:N,isWheelScrollActive:D}),[N,D]);ve(()=>{let S=o.current;if(!S)return;let B=()=>{w(!0),T.current&&clearTimeout(T.current),T.current=window.setTimeout(()=>{w(!1),T.current=null},240)};return S.addEventListener("wheel",B,{passive:!0}),()=>{S.removeEventListener("wheel",B),T.current&&clearTimeout(T.current)}},[]);let V=ye((S,B)=>{if(a(Y=>{if(Y.get(S)===B)return Y;let G=new Map(Y);return G.set(S,B),G}),p.current){let Y=R.current.findIndex(G=>G.reportHubId===S);Y!==-1&&p.current.updateItemSize(Y,B)}},[]),ie=ye(S=>{let B=L(S);return s.get(B.reportHubId)||350},[L,s]),le=ye(S=>L(S).reportHubId,[L]),j=dt(()=>({enabled:!0,renderVisual:yn}),[]);ve(()=>{k>=0&&d()},[k,d]),ve(()=>{k!==0&&z(0,Math.min(k-1,st))},[k,z]);let K=ye(S=>{let B=R.current.findIndex(Y=>Y.reportHubId===S);B>=0&&setTimeout(()=>p.current?.scrollToIndex(B,{align:"bottom"}),300)},[]),te=ye(S=>x(Cn,{item:S,onHeightMeasured:V,onCommentAdded:K,userId:t},S.reportHubId),[V,K,t]);return A(En,{children:[x("div",{ref:o,className:"flex min-h-0 flex-1 flex-col",children:x(hn,{ref:p,itemCount:k,getItem:L,getItemKey:le,getItemHeight:ie,viewportSize:u,overscanCount:ot,scrollBarOptions:{width:8,tapScrollCircleOptions:j,renderThumbOverlay:Z},behaviorOptions:{wheelSpeedMultiplier:rt,inertiaOptions:nt},onRangeChange:U,onScroll:W,testId:"daily-report-detail-list",className:"relative w-full",children:te})}),k===0&&x("div",{className:"py-8 text-center",children:x("p",{className:"text-slate-500",children:"\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093"})})]})},In=()=>A("div",{className:"rounded-2xl border border-slate-200 bg-white p-4 shadow-sm",children:[A("div",{className:"mb-4 flex flex-wrap gap-2",children:[x("div",{className:"h-6 w-20 rounded-full bg-slate-200"}),x("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),x("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),x("div",{className:"h-6 w-28 rounded-full bg-slate-200"})]}),A("div",{className:"mb-3 grid gap-3 md:grid-cols-[minmax(0,1fr)_220px]",children:[A("div",{className:"space-y-3",children:[x("div",{className:"h-5 w-40 rounded bg-slate-200"}),x("div",{className:"h-5 w-56 rounded bg-slate-200"}),x("div",{className:"h-24 rounded-lg bg-slate-200"})]}),A("div",{className:"rounded-xl bg-slate-100 p-3",children:[x("div",{className:"mb-2 h-4 w-24 rounded bg-slate-200"}),x("div",{className:"mb-2 h-4 w-28 rounded bg-slate-200"}),x("div",{className:"h-4 w-32 rounded bg-slate-200"})]})]}),A("div",{className:"space-y-3",children:[x("div",{className:"h-4 w-24 rounded bg-slate-200"}),A("div",{className:"flex flex-wrap gap-2",children:[x("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),x("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),x("div",{className:"h-6 w-16 rounded-full bg-slate-200"})]}),A("div",{className:"space-y-2",children:[x("div",{className:"h-16 rounded-lg bg-slate-200"}),x("div",{className:"h-16 rounded-lg bg-slate-200"})]})]})]}),Cn=({item:e,onHeightMeasured:t,onCommentAdded:r,userId:n})=>{let{report:s,error:a,isLoading:o,isRefetching:p}=Te(e.reportHubId,e.businessDate),{removeStaleItem:u}=me(),{draftLabelName:d}=J(),[g,N]=Ue(!1),[i,D]=Ue(!1),w=fe(!1),T=fe(!1);p&&(T.current=!0),ve(()=>{!(s||o||p||a)&&T.current&&e.reportHubId>0&&u(e.reportHubId)},[s,o,p,a,e.reportHubId,u]);let M=s?.labels.some(I=>I.name===d),R=n&&s?.userId===n;return ve(()=>{s&&R&&M&&!g&&!i?(N(!0),w.current=!0):s&&!M&&g&&w.current&&(N(!1),w.current=!1)},[s,R,M,g,i]),x(Dn,{itemId:e.reportHubId,onHeightMeasured:t,children:a?x(kn,{itemId:e.reportHubId}):s?g?x(lt,{report:s,onCancel:()=>{N(!1),D(!0)},onPublishSuccess:()=>{N(!1)}}):x(Tn,{item:e,report:s,onCommentAdded:r,userId:n,onDoubleClick:R?()=>N(!0):void 0}):x(In,{})})},Nn=({report:e,isRead:t,isStarred:r,isMine:n,onToggleRead:s,onToggleStar:a,onDelete:o,visitTimeDisplay:p,categoryLabel:u,fieldLabels:d})=>A("div",{className:"flex flex-wrap items-center gap-2 font-medium text-slate-600 text-xs",children:[x("button",{type:"button",onClick:s,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 focus:outline-none dark:hover:bg-slate-700",title:t?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","data-detail-read-button":e.reportHubId,children:t?x(xn,{className:"h-3.5 w-3.5 text-blue-500"}):x(Be,{className:"text-xs"})}),x("button",{type:"button",onClick:a,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 focus:outline-none dark:hover:bg-slate-700",title:r?"\u30B9\u30BF\u30FC\u3092\u5916\u3059":"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B","data-detail-star-button":e.reportHubId,children:r?x(ar,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):x(ar,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),n&&x("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:x(vn,{className:"h-4 w-4 text-slate-300 hover:text-red-500"})}),A("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-blue-50 px-3 py-1 font-semibold text-blue-700 text-xs",children:[x("span",{className:"text-[10px] text-blue-500 uppercase tracking-wide",children:d.id}),e.reportHubId]}),A("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[x("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:d.businessDate}),ne(e.date)]}),A("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[x("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:d.author}),re(e.employeeName)]}),A("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[x("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:d.visitTime}),p||"-"]}),A("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[x("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:d.updatedAt}),ne(e.updatedAt)]}),u&&A("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-amber-100 px-3 py-1 text-amber-700",children:[x("span",{className:"text-[10px] text-amber-500 uppercase tracking-wide",children:d.category}),u]})]}),Sn=({report:e,visitTimeDisplay:t,categoryLabel:r,fieldLabels:n})=>A("div",{className:"flex flex-col gap-3 rounded-xl bg-slate-100 p-4 text-slate-600 text-xs",children:[A("div",{className:"flex flex-col gap-1",children:[x("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.author}),x("span",{className:"text-slate-700 text-sm",children:re(e.author)})]}),A("div",{className:"flex flex-col gap-1",children:[x("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.createdAt}),x("span",{className:"text-slate-700 text-sm",children:ne(e.createdAt)})]}),A("div",{className:"flex flex-col gap-1",children:[x("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.updatedBy}),x("span",{className:"text-slate-700 text-sm",children:re(e.updatedBy)})]}),A("div",{className:"flex flex-col gap-1",children:[x("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.updatedAt}),x("span",{className:"text-slate-700 text-sm",children:ne(e.updatedAt)})]}),A("div",{className:"flex flex-col gap-1",children:[x("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.businessDate}),x("span",{className:"text-slate-700 text-sm",children:ne(e.date)})]}),t&&A("div",{className:"flex flex-col gap-1",children:[x("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.visitTime}),x("span",{className:"text-slate-700 text-sm",children:t})]}),r&&A("div",{className:"flex flex-col gap-1",children:[x("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.categoryInfo}),x("span",{className:"text-slate-700 text-sm",children:r})]})]}),Tn=({item:e,report:t,onCommentAdded:r,userId:n,onDoubleClick:s})=>{let a=fe(null),{toggleStar:o,toggleRead:p,pendingStarUpdates:u,pendingReadUpdates:d,deleteReport:g,user:N}=me(),{uiComments:i,handleAddComment:D,handleDeleteComment:w,pendingDeleteId:T,setPendingDeleteId:M,resolvedIdMap:R}=Je(t,N,n),{fieldLabels:I}=J(),H=async j=>{await D(j),r?.(e.reportHubId)},k=u.current.has(t.reportHubId)?u.current.get(t.reportHubId)??!1:t.isStarred,L=d.current.has(t.reportHubId)?d.current.get(t.reportHubId)??!1:t.isRead,z=!!(n&&t.userId===n),U=async()=>{try{await p(t.reportHubId,!L,t.date??"")}catch{}},W=async()=>{try{await o(t.reportHubId,!k,t.date??"")}catch{}},Z=async()=>{confirm("\u672C\u5F53\u306B\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F")&&await g(t.reportHubId,t.date??"")},V=dt(()=>t.content?t.content.replace(/<br\s*\/??\s*>/gi,`
|
|
2
|
-
`).trim():"",[t.content]),ie=dt(()=>{let j=t.visitTimeFrom?.trim(),K=t.visitTimeTo?.trim();return j&&K?`${j} - ${K}`:j||K||""},[t.visitTimeFrom,t.visitTimeTo]),le=dt(()=>{let j=[];return t.category?.trim()&&j.push(`${I.category}: ${t.category}`),t.creationCategory?.trim()&&j.push(`${I.creationCategory}: ${t.creationCategory}`),j.join(" / ")},[t.category,t.creationCategory,I.category,I.creationCategory]);return x("div",{onDoubleClick:s,className:`flex h-full w-full flex-col rounded-2xl border bg-white p-4 shadow-sm transition-all duration-200 hover:-translate-y-0.5 hover:border-blue-300 hover:shadow-lg dark:border-slate-700 dark:bg-slate-900/70 ${L?"":"border-l-4 border-l-blue-500"}`,children:A("div",{className:"flex flex-col gap-4",children:[x(Nn,{report:t,isRead:L,isStarred:k,isMine:z,onToggleRead:U,onToggleStar:W,onDelete:Z,visitTimeDisplay:ie,categoryLabel:le,fieldLabels:I}),A("div",{className:"grid gap-4 md:grid-cols-[minmax(0,1fr)_240px]",children:[A("div",{className:"flex flex-col gap-4",children:[A("div",{className:"grid gap-3 sm:grid-cols-2",children:[A("div",{className:"flex flex-col gap-1",children:[x("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.customer}),x("span",{className:"font-semibold text-base text-slate-900",children:re(t.customerName)})]}),A("div",{className:"flex flex-col gap-1",children:[x("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.subject}),x("span",{className:"text-slate-700 text-sm",children:re(t.subject)})]})]}),V&&A("div",{className:"flex flex-col gap-2",children:[x("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.content}),x("div",{className:"whitespace-pre-wrap rounded-xl bg-slate-50 p-3 text-slate-700 text-sm leading-relaxed",children:V})]}),t.interviewers.length>0&&A("div",{className:"flex flex-col gap-2",children:[x("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.interviewers}),x("ul",{className:"flex flex-wrap gap-2",children:t.interviewers.map(j=>x("li",{className:"rounded-full bg-slate-100 px-3 py-1 text-slate-600 text-xs",children:wn(j)},`${j.name}-${j.affiliation||""}`))})]}),i.length>0&&A("div",{className:"flex flex-col gap-2",children:[x("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.comments}),x(qe,{comments:i,reportHubId:t.reportHubId,businessDate:t.date??"",onDeleteComment:w,pendingDeleteId:T,onPendingDeleteIdChange:M,resolvedIdMap:R})]}),x("div",{className:"mt-auto",ref:a,children:x(Ye,{reportHubId:t.reportHubId,businessDate:t.date??"",onAddComment:H})})]}),x(Sn,{report:t,visitTimeDisplay:ie,categoryLabel:le,fieldLabels:I})]})]})})},kn=({itemId:e})=>x("div",{className:"rounded-2xl border border-red-200 bg-red-50 p-4 text-red-700 text-sm",children:A("p",{children:["\u65E5\u5831 ",e.toLocaleString()," \u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"]})});import{SwipeCloseGuardContext as Hn,useSwipeGuardState as Mn,useSwipeToDismissOverlay as Ln,useTapClick as lr,useTransitionDisplay as Pn}from"@aiquants/swipe-overlay";import{VirtualScroll as An}from"@aiquants/virtualscroll";import{Check as On,Star as ir,Trash2 as _n}from"lucide-react";import{useCallback as ge,useEffect as ae,useMemo as Rt,useRef as Q,useState as Ce}from"react";import*as be from"@radix-ui/react-tabs";import*as ct from"react";import{jsx as vt}from"react/jsx-runtime";var ut=be.Root,$e=ct.forwardRef(({className:e,...t},r)=>vt(be.List,{ref:r,className:q("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",e),...t}));$e.displayName=be.List.displayName;var Ve=ct.forwardRef(({className:e,...t},r)=>vt(be.Trigger,{ref:r,className:q("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}));Ve.displayName=be.Trigger.displayName;var He=ct.forwardRef(({className:e,...t},r)=>vt(be.Content,{ref:r,className:q("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 ur,jsx as m,jsxs as $}from"react/jsx-runtime";var Fn=(e,t,r,n)=>{let[s,a]=Ce(!1),[o,p]=Ce(!1),u=Q(null),d=Q(null),g=Q(null),N=Rt(()=>t===null?null:r.find(w=>w.reportHubId===t)??null,[r,t]),i=e&&s&&N!==null;ae(()=>{if(i)p(!0);else{let w=setTimeout(()=>p(!1),300);return()=>clearTimeout(w)}},[i]),ae(()=>{if(!(typeof window>"u")){if(e&&s&&t!==null&&!u.current){let w=`overlay-${Date.now()}`;window.history.pushState({...window.history.state,dailyReportOverlay:w},"",window.location.href),u.current=w}else!(e&&s)&&u.current&&(u.current=null);return s?(g.current=document.body.style.overflow,document.body.style.overflow="hidden"):g.current!==null&&(document.body.style.overflow=g.current,g.current=null),()=>{g.current!==null&&(document.body.style.overflow=g.current)}}},[e,s,t]),ae(()=>{if(typeof window>"u")return;let w=()=>{u.current&&(d.current=t,u.current=null,a(!1),n(null))};return window.addEventListener("popstate",w),()=>window.removeEventListener("popstate",w)},[t,n]);let D=ge(()=>{e&&(d.current=t,a(!1),n(null),u.current&&typeof window<"u"&&(u.current=null,window.history.back()))},[e,t,n]);return{isMobileDetailOpen:s,setIsMobileDetailOpen:a,isOverlayMounted:o,shouldShowOverlay:i,handleOverlayClose:D,lastClosedItemIdRef:d,selectedItem:N}},Bn=(e,t,r,n,s)=>{let a=Q(null),o=Q(void 0);o.current!==e?.reportHubId&&(o.current=e?.reportHubId,a.current=null),ae(()=>{n||(a.current=null)},[n]);let p=ge(async(u=!1)=>{if(!e)return;u||(a.current=e.reportHubId);let d=!e.isRead;try{await s(e.reportHubId,d,e.date??"")}catch{}},[e,s]);return ae(()=>{if(r&&e&&!e.isRead&&!t){if(a.current===e.reportHubId)return;let u=setTimeout(()=>p(!0),500);return()=>clearTimeout(u)}},[e,t,r,p]),{handleToggleRead:p}},dr=({dailyReportItems:e,initialSelectedBusinessDate:t=null,initialSelectedReportHubId:r=null,autoMarkRead:n=!1,selectedReportHubId:s,onSelectItem:a,userId:o})=>{let p=Q(null),u=Q(null),{viewportHeight:d,updateViewportHeight:g}=Ze(p),[N,i]=Ce(""),[D,w]=Ce(!1),[T,M]=Ce(!1),R=Q(null),I=Q(null),H=e.length,k=Q(null),{isMobileDetailOpen:L,setIsMobileDetailOpen:z,isOverlayMounted:U,shouldShowOverlay:W,handleOverlayClose:Z,lastClosedItemIdRef:V,selectedItem:ie}=Fn(T,s,e,a),le=Rt(()=>Number.isFinite(d)&&d>0?{height:d}:void 0,[d]);ae(()=>{if(typeof window>"u")return;let E=window.matchMedia("(max-width: 639px)"),_=l=>M(l.matches);M(E.matches),E.addEventListener("change",_);let ee=()=>requestAnimationFrame(g);window.addEventListener("resize",ee),g();let pe=p.current,h=()=>{w(!0),R.current&&clearTimeout(R.current),R.current=window.setTimeout(()=>{w(!1),R.current=null},Xt)};return pe?.addEventListener("wheel",h,{passive:!0}),()=>{E.removeEventListener("change",_),window.removeEventListener("resize",ee),pe?.removeEventListener("wheel",h),R.current&&clearTimeout(R.current)}},[g]),ae(()=>{if(!H){I.current=null,s!==null&&a(null);return}let E=`${r??""}|${t??""}`,_=(r??null)!==null||(t??null)!==null;if(_||(I.current=null),_&&I.current!==E){let ee=r&&e.find(pe=>pe.reportHubId===r)||t&&e.find(pe=>pe.businessDate===t);if(ee){I.current=E,s!==ee.reportHubId&&a(ee.reportHubId);return}}},[e,t,r,s,H,a]),ae(()=>{if(T||L||V.current===null)return;let E=V.current;V.current=null;let _=e.findIndex(ee=>ee.reportHubId===E);_>=0&&requestAnimationFrame(()=>u.current?.focusItemAtIndex(_))},[L,T,e,V]),ae(()=>{H>0&&i(E=>{let _=ne(e[0]?.businessDate);return E===_?E:_})},[e,H]);let j=Q(e);j.current=e,ae(()=>{if(u.current){let E=document.querySelector('[data-testid="daily-report-list"]');E&&(E.__virtualScroll={...u.current,findReportIndex:_=>j.current.findIndex(ee=>ee.reportHubId===_),getReportIds:(_=20)=>j.current.slice(0,_).map(ee=>ee.reportHubId)})}});let K=ge(E=>{E<=0||(a(E),T&&z(!0))},[T,a,z]),te=ge(E=>E<H?e[E]:at,[e,H]),S=ge(()=>ht,[]),B=ge(E=>{let _=te(E.visibleStartIndex);_?.reportHubId>0&&i(ee=>{let pe=ne(_.businessDate);return ee===pe?ee:pe})},[te]),Y=ge(E=>{let _=te(E);if(_&&_.reportHubId>0){if(_.reportHubId===s)return;a(_.reportHubId)}},[te,a,s]),G=ge(()=>{let E=p.current;E&&(E.dataset.scrolling!=="true"&&(E.dataset.scrolling="true"),k.current&&clearTimeout(k.current),k.current=setTimeout(()=>{E&&delete E.dataset.scrolling,k.current=null},150))},[]),he=ge(E=>m(We,{...E,label:N,isWheelScrollActive:D}),[N,D]);return $(ur,{children:[$("div",{className:"flex h-full min-h-0 gap-4",children:[m("div",{ref:p,className:"flex min-h-0 w-full sm:w-90",style:le,children:m(An,{ref:u,itemCount:H,getItem:te,getItemHeight:S,viewportSize:d,overscanCount:ot,scrollBarOptions:{width:Jt,tapScrollCircleOptions:er,renderThumbOverlay:he},behaviorOptions:{inertiaOptions:nt,wheelSpeedMultiplier:rt},onRangeChange:B,onScroll:G,onItemFocus:Y,contentInsets:{top:tt,bottom:tt},testId:"daily-report-list",className:"relative w-full",children:E=>m(zn,{item:E,isActive:E.reportHubId===s,onSelect:K},E.reportHubId)})}),m(cr,{dailyReportItems:e,selectedItem:ie,heightStyle:le,autoMarkRead:!T&&n,isActive:s!==null,userId:o})]}),H===0&&m("div",{className:"py-8 text-center",children:m("p",{className:"text-slate-500",children:"\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093"})}),U&&m(Vn,{isOpen:W,selectedItem:ie,onClose:Z,autoMarkRead:T&&n,userId:o})]})},Un=()=>m("div",{className:"px-2 pb-3",style:{height:Fe},children:$("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:[$("div",{className:"mb-3 flex flex-wrap items-center gap-3",children:[m("div",{className:"h-4 w-24 rounded bg-slate-200"}),m("div",{className:"h-4 w-24 rounded bg-slate-200"}),m("div",{className:"h-4 w-24 rounded bg-slate-200"})]}),$("div",{className:"space-y-2",children:[m("div",{className:"h-4 w-full rounded bg-slate-200"}),m("div",{className:"h-4 w-11/12 rounded bg-slate-200"}),m("div",{className:"h-4 w-5/6 rounded bg-slate-200"})]})]})}),cr=({dailyReportItems:e,selectedItem:t,heightStyle:r,autoMarkRead:n=!1,isActive:s=!0,userId:a})=>{let[o,p]=Ce("article"),[u,d]=Ce(!1),{draftLabelName:g,fieldLabels:N}=J(),{report:i,error:D,isLoading:w}=Te(t?.reportHubId??-1,t?.businessDate??null),T=Q(null),M=Q(null),R=Q(!1);ae(()=>{if(!i)return;let W=i.labels.some(Z=>Z.name===g);i.reportHubId!==M.current?(M.current=i.reportHubId,W?(d(!0),R.current=!0):(d(!1),R.current=!1)):!W&&u&&R.current&&(d(!1),R.current=!1)},[i,u,g]);let I=!!(a&&i?.userId===a),H=ge(()=>{setTimeout(()=>{T.current&&T.current.scrollTo({top:T.current.scrollHeight,behavior:"smooth"})},100)},[]);if(e&&(e.length===0||!t))return m("aside",{className:"hidden min-h-0 min-w-0 flex-1 gap-3 rounded-2xl border border-slate-200 bg-white p-4 shadow-sm sm:block dark:border-slate-700 dark:bg-slate-900/70",style:r,children:m("div",{className:"flex flex-1 items-center justify-center rounded-xl border border-slate-300 border-dashed bg-slate-50 p-4 text-center text-slate-500 text-sm dark:border-slate-600 dark:bg-slate-900/40 dark:text-slate-300",children:m("p",{children:"\u5DE6\u5074\u306E\u4E00\u89A7\u304B\u3089\u65E5\u5831\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002"})})});let k=ne(i?.date??t?.businessDate),L=i?.employeeName||i?.author?re(i.employeeName??i.author):"",z=w||!i,U=$(ur,{children:[$("div",{className:"space-y-1",children:[m("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:N.businessDate}),m("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:[$("span",{children:[N.author,":"]}),z?m("div",{"data-skeleton":!0,className:"h-3 w-24 animate-pulse rounded bg-slate-200 dark:bg-slate-700"}):m("span",{children:L})]})]}),$(ut,{value:o,onValueChange:W=>p(W),className:"flex min-h-0 flex-1 flex-col",children:[m($e,{className:"grid grid-cols-2 gap-1 rounded-md bg-slate-100 p-1 text-xs dark:bg-slate-800",children:["article","relations"].map(W=>m(Ve,{value:W,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:W==="article"?N.tabArticle:N.tabRelations},W))}),m(He,{ref:T,value:"article",className:"scrollbar-thin flex-1 touch-pan-y overflow-y-auto overflow-x-hidden pt-3 text-sm",children:u?i?m(lt,{report:i,onCancel:()=>d(!1),onPublishSuccess:()=>d(!1)}):m("p",{className:"rounded-lg border border-slate-300 border-dashed bg-slate-50 p-4 text-slate-600 dark:border-slate-600 dark:bg-slate-900/40 dark:text-slate-300",children:"\u8AAD\u307F\u8FBC\u307F\u4E2D..."}):t&&m($n,{report:i,isLoading:w,error:D,selectedItem:t,autoMarkRead:n,isActive:s,onCommentAdded:H,userId:a,onDoubleClick:I?()=>d(!0):void 0})}),m(He,{value:"relations",className:"scrollbar-thin flex-1 touch-pan-y overflow-y-auto pt-3 text-sm",children:m("p",{className:"rounded-lg border border-slate-300 border-dashed bg-slate-50 p-4 text-slate-600 dark:border-slate-600 dark:bg-slate-900/40 dark:text-slate-300",children:N.relationsEmpty})})]})]});return e?m("aside",{"data-testid":"daily-report-side-pane","data-report-id":t?.reportHubId,className:"hidden min-h-0 min-w-0 flex-1 flex-col gap-3 rounded-2xl border border-slate-200 bg-white p-4 shadow-sm sm:flex dark:border-slate-700 dark:bg-slate-900/70",style:r,children:U}):m("div",{"data-testid":"daily-report-side-pane","data-report-id":t?.reportHubId,className:"flex min-h-0 flex-1 flex-col gap-3 overflow-hidden",children:U})},$n=({report:e,isLoading:t,error:r,autoMarkRead:n=!1,isActive:s=!0,onCommentAdded:a,userId:o,onDoubleClick:p})=>{let{toggleStar:u,toggleRead:d,deleteReport:g,user:N}=me(),{fieldLabels:i}=J(),{uiComments:D,handleAddComment:w,handleDeleteComment:T,pendingDeleteId:M,setPendingDeleteId:R,resolvedIdMap:I}=Je(e,N,o),{handleToggleRead:H}=Bn(e,t,n,s,d),k=Q(null),L=Q(D.length);ae(()=>{let S=e?.reportHubId??null;if(S!==k.current){k.current=S,L.current=D.length;return}D.length>L.current&&a?.(),L.current=D.length},[D.length,e?.reportHubId,a]);let z=async S=>{await w(S)},U=Rt(()=>e?.content?e.content.replace(/<br\s*\/?\s*>/gi,`
|
|
1
|
+
import{jsx as gt}from"react/jsx-runtime";var Ge=({orientation:e,thumbCenter:t,label:r,isDragging:n,isTapScrollActive:a,isWheelScrollActive:s})=>r.trim()&&(n||a||s)?gt("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:gt("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:gt("span",{className:"whitespace-nowrap font-semibold text-slate-800 dark:text-slate-100",children:r.trim()})})}):null;import{TrashIcon as Cr}from"@heroicons/react/24/outline";import{useState as Nr}from"react";var Nt=(e,t,r)=>{let n=e.map((s,o)=>({id:`legacy-${o}`,authorName:s.name||"Unknown",content:s.text||"",isMine:!1,color:s.color||void 0,isLegacy:!0})),a=t.map(s=>({id:s.id,authorName:s.userName,content:s.content,createdAt:s.createdAt,isMine:r?s.userId===r:s.isMine,isLegacy:!1}));return[...n,...a]},Tt=e=>{if(!e)return"text-gray-700";let t=e.toLowerCase();return t.includes("red")||t.includes("\u8D64")?"text-red-600":t.includes("green")||t.includes("\u7DD1")?"text-green-600":t.includes("blue")||t.includes("\u9752")?"text-blue-600":t.includes("yellow")||t.includes("\u9EC4")?"text-yellow-600":t.includes("orange")||t.includes("\u6A59")?"text-orange-500":"text-gray-700"};var re=e=>{if(!e)return"-";let t=e.trim();return t===""?"-":t},ne=e=>{if(!e)return"-";if(typeof e!="string")return e instanceof Date?ne(e.toISOString()):String(e);let t=e.trim();if(t==="")return"-";let r=new Date(t);if(Number.isNaN(r.getTime()))return t;let n=r.getFullYear(),a=String(r.getMonth()+1).padStart(2,"0"),s=String(r.getDate()).padStart(2,"0");if(t.includes(":")||t.includes("T")){let i=String(r.getHours()).padStart(2,"0"),l=String(r.getMinutes()).padStart(2,"0"),m=String(r.getSeconds()).padStart(2,"0");return`${n}-${a}-${s}T${i}:${l}:${m}`}return`${n}-${a}-${s}`};import{clsx as Dr}from"clsx";import{twMerge as Ir}from"tailwind-merge";function j(...e){return Ir(Dr(e))}import{jsx as Se,jsxs as qe}from"react/jsx-runtime";var Tr=(e,t,r)=>t===e||typeof e=="number"&&e<0&&r?.get(e)===t||typeof t=="number"&&t<0&&r?.get(t)===e,St=({comment:e,reportHubId:t,businessDate:r,onOptimisticDelete:n,pendingDeleteId:a,onPendingDeleteIdChange:s,onTrashClick:o,resolvedIdMap:i})=>{let[l,m]=Nr(!1),p=Tr(e.id,a,i),I=g=>{g.stopPropagation(),g.preventDefault(),s(null),m(!0),typeof e.id=="number"&&n(e.id)};return qe("li",{"data-comment-id":e.id,"data-deleted":l?"true":void 0,className:j("group relative rounded-xl border border-slate-200 bg-white p-3",e.isMine&&"border-blue-200 bg-blue-50",l&&"hidden",p?"z-50":"z-0 hover:z-10"),children:[qe("div",{className:"mb-1 flex items-center justify-between",children:[Se("div",{className:j("font-semibold text-xs",Tt(e.color)),children:re(e.authorName)}),qe("div",{className:"flex items-center gap-2",children:[e.createdAt&&Se("div",{className:"text-[10px] text-slate-400",children:ne(e.createdAt)}),e.isMine&&!e.isLegacy&&qe("div",{className:"relative",children:[Se("button",{type:"button",className:j("transition-colors",p?"text-red-500":"text-slate-400 hover:text-red-500"),title:"\u524A\u9664","aria-label":"\u524A\u9664",onClick:g=>o(g,e.id),children:Se(Cr,{className:"h-4 w-4"})}),p&&Se("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:I,children:"\u524A\u9664\u3059\u308B"})]})]})]}),Se("div",{className:"whitespace-pre-wrap text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:e.content})]})};import{useCallback as Sr,useEffect as kt,useRef as Et,useState as kr}from"react";import{jsx as Ce,jsxs as Hr}from"react/jsx-runtime";var Er=(e,t)=>{let r=Et(null);return kt(()=>{if(e===null)return;let a=s=>{s.target.closest("[data-delete-confirmation]")||t(null)};return document.addEventListener("mousedown",a),document.addEventListener("touchstart",a),()=>{document.removeEventListener("mousedown",a),document.removeEventListener("touchstart",a)}},[e,t]),kt(()=>()=>{r.current&&clearTimeout(r.current)},[]),{handleTrashClick:Sr((a,s)=>{a.stopPropagation(),a.preventDefault(),e!==s&&(t(s),r.current&&clearTimeout(r.current),r.current=window.setTimeout(()=>{t(null),r.current=null},5e3))},[e,t])}},Ye=({comments:e,reportHubId:t,businessDate:r,onDeleteComment:n,pendingDeleteId:a,onPendingDeleteIdChange:s,resolvedIdMap:o})=>{let{handleTrashClick:i}=Er(a,s);return e.length===0?null:Ce("ul",{className:"mb-3 space-y-2",children:e.map(l=>Ce(St,{comment:l,reportHubId:t,businessDate:r,onOptimisticDelete:n||(()=>{}),pendingDeleteId:a,onPendingDeleteIdChange:s,onTrashClick:i,resolvedIdMap:o},l.id))})},Ke=({reportHubId:e,businessDate:t,onAddComment:r})=>{let[n,a]=kr(!1),s=Et(null);return Hr("form",{className:"flex gap-2",ref:s,onSubmit:async i=>{i.preventDefault();let m=new FormData(i.currentTarget).get("content")?.trim();if(m&&r){a(!0),s.current?.reset();try{await r(m)}catch{if(s.current){let p=s.current.elements.namedItem("content");p&&(p.value=m)}}finally{a(!1)}}},children:[Ce("input",{type:"hidden",name:"intent",value:"addComment"}),Ce("input",{type:"hidden",name:"reportHubId",value:e}),Ce("input",{type:"hidden",name:"businessDate",value:t}),Ce("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"}),Ce("button",{type:"submit",className:"rounded-lg bg-blue-600 px-4 py-2 font-medium text-sm text-white hover:bg-blue-700 disabled:opacity-50",disabled:n,children:"\u9001\u4FE1"})]})};import{tapScrollCircleSampleVisual as Dn,VirtualScroll as In}from"@aiquants/virtualscroll";import{Check as Cn,Star as dr,Trash2 as Nn}from"lucide-react";import{useCallback as he,useEffect as Ie,useMemo as ut,useRef as fe,useState as Ue}from"react";import{createContext as Mr,useContext as Pr,useMemo as Lr}from"react";import{jsx as yt,jsxs as Ar}from"react/jsx-runtime";var Ht={id:"ID",businessDate:"Business date",author:"Author",visitTime:"Visit time",createdAt:"Created at",updatedAt:"Updated at",updatedBy:"Updated by",category:"Category",categoryInfo:"Category",creationCategory:"Creation category",customer:"Customer",subject:"Subject",content:"Content",interviewers:"Attendees",comments:"Comments",tabArticle:"Overview",tabRelations:"Related",relationsEmpty:"No related view configured yet."},Qe={title:"Daily Reports",apiBasePath:"/daily_report/api",ssePath:"/sse/daily_report/updates",draftLabelName:"draft",fieldLabels:Ht,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})=>Ar("header",{className:"flex flex-wrap items-baseline justify-between gap-2 px-2 py-1",children:[yt("span",{className:"text-nowrap text-slate-700 text-sm dark:text-slate-200",children:e}),t?yt("span",{className:"text-slate-600 text-xs dark:text-slate-300",children:t}):null]}),showDevControls:!1},Mt=Mr(Qe),Pt=({config:e,children:t})=>{let r=Lr(()=>({...Qe,...e,fieldLabels:{...Ht,...e?.fieldLabels??{}}}),[e]);return yt(Mt.Provider,{value:r,children:t})},K=()=>Pr(Mt),Xe=(e,t)=>{if(!(e&&t))return;if(t[e])return t[e];let r=e.toLowerCase(),n=Object.keys(t).find(a=>a.toLowerCase()===r);return n?t[n]:void 0};import{createContext as tn,useCallback as we,useContext as rn,useEffect as Qt,useRef as ue,useState as xt}from"react";import{useRevalidator as nn}from"react-router";var ke=(e,t,r=console)=>{let n=a=>typeof a=="string"?[`${t} ${a}`]:[t,a];return{debug:(a,...s)=>{e<=0&&r.debug(...n(a),...s)},info:(a,...s)=>{e<=1&&r.info(...n(a),...s)},warn:(a,...s)=>{e<=2&&r.warn(...n(a),...s)},error:(a,...s)=>{e<=3&&r.error(...n(a),...s)}}};import{useCallback as Fr,useEffect as Ot,useRef as Br,useState as Je}from"react";var Or=/^\d{4}-\d{2}-\d{2}$/,_r=/^\d{4}\/\d{2}\/\d{2}$/,Lt=e=>e<10?`0${e}`:`${e}`,At=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}`},Pe=e=>{if(e==null)return null;if(e instanceof Date)return At(e);let t=e.trim();if(t==="")return null;if(Or.test(t))return t;if(_r.test(t))return t.replaceAll("/","-");let r=new Date(t);return At(r)};var Ft=ke(1,"use-daily-report"),Bt=(e,t)=>{if(typeof window>"u")return t;let r=window[e];return typeof r=="number"&&!Number.isNaN(r)?r:t},Ut=Bt("__DAILY_REPORT_CACHE_TTL__",3e5),Ur=Bt("__DAILY_REPORT_CACHE_REVIVE_MS__",6e4),$r=120,P={reports:new Map,lists:new Map,pendingLists:new Map,pendingReports:new Map,listeners:new Set,locks:new Set,lastMutations:new Map,recentDeletes:new Map,lastPrune:0,prune(){let e=Date.now();if(e-this.lastPrune<6e4)return;this.lastPrune=e;let t=3600*1e3;for(let[r,n]of this.reports)e-n.expiresAt>t&&this.reports.delete(r);for(let[r,n]of this.lists)e-n.expiresAt>t&&this.lists.delete(r)},clear(){this.reports.clear(),this.lists.clear(),this.pendingLists.clear(),this.pendingReports.clear(),this.locks.clear(),this.lastMutations.clear(),this.recentDeletes.clear(),this.listeners.forEach(e=>{e(-1)})},isValid:e=>e>Date.now(),notify:e=>{P.listeners.forEach(t=>{t(e)})},getReport(e,t=!1){let r=this.reports.get(e);return r&&(t||this.isValid(r.expiresAt))?r.data:null},getList(e,t=!1){let r=e&&this.lists.get(e);return r&&(t||this.isValid(r.expiresAt))?r.data:null},set(e,t,r=!0){if(this.reports.set(e.reportHubId,{data:e,expiresAt:t}),r){let n=Pe(e.date),a=n?this.lists.get(n):null;if(a&&n){let o=a.data.some(i=>i.reportHubId===e.reportHubId)?a.data.map(i=>i.reportHubId===e.reportHubId?e:i):[e,...a.data];this.lists.set(n,{...a,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()){Ft.warn(`[DailyReportCache] Stale update skipped id=${e}`);return}this.set({...n.data,...t},Math.max(n.expiresAt,Date.now()+Ur))}},delete(e,t){this.reports.delete(e);let r=Pe(t),n=r&&this.lists.get(r);n&&r&&this.lists.set(r,{...n,data:n.data.filter(a=>a.reportHubId!==e)}),this.notify(e)},merge(e,t){let r=e;if(r.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(s=>s.id)),a=t.commentItems.filter(s=>!n.has(s.id)&&s.isMine&&Date.now()-new Date(s.createdAt).getTime()<1e4);a.length>0&&(r={...r,commentItems:[...r.commentItems,...a].sort((s,o)=>new Date(s.createdAt).getTime()-new Date(o.createdAt).getTime())})}return r},cacheMany(e,t,r=0){if(!e.length)return[];this.prune();let n=Date.now(),a=n+Ut;for(let[o,i]of this.recentDeletes)n-i>1e4&&this.recentDeletes.delete(o);let s=e.map(o=>{if(this.locks.has(o.reportHubId))return o;let i=this.lastMutations.get(o.reportHubId);if(i&&r>0&&i>r)return this.reports.get(o.reportHubId)?.data??o;let l=this.reports.get(o.reportHubId)?.data,m=this.merge(o,l);return this.set(m,a,!1),m});return t&&this.lists.set(t,{data:s,expiresAt:a}),s}},$t=(e,t,r=!0)=>P.set(e,t,r),de=(e,t)=>P.getReport(e,t?.ignoreExpiry),ce=(e,t)=>P.update(e,t),Ze=(e,t)=>P.delete(e,t),Vt=()=>P.clear(),Le=e=>{P.locks.add(e),P.lastMutations.set(e,Date.now())},Ae=e=>{P.locks.delete(e),P.lastMutations.set(e,Date.now())},jt=e=>P.recentDeletes.set(e,Date.now()),zt=(e,t)=>{let r=n=>{n===e&&t()};return P.listeners.add(r),()=>{P.listeners.delete(r)}},Re=(e,t)=>{P.prune(),P.set(t,Date.now()+Ut)},Vr=async(e,t)=>{let r=P.getReport(t);if(r)return r;let n=P.pendingReports.get(t);if(n)return n;let a=Date.now(),s=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 i=o.report;return P.cacheMany([i],null,a)[0]}).finally(()=>P.pendingReports.delete(t));return P.pendingReports.set(t,s),s},Wt=async(e,t)=>{let r=P.getList(t);if(r)return r;let n=P.pendingLists.get(t);if(n)return n;let a=Date.now(),s=fetch(`${e}/business-date?businessDate=${encodeURIComponent(t)}`,{cache:"no-cache"}).then(o=>o.ok?o.json():Promise.reject(`HTTP ${o.status}`)).then(o=>{if(o.error)throw new Error(o.error.message);return P.cacheMany(o.reports??[],t,a)}).finally(()=>P.pendingLists.delete(t));return P.pendingLists.set(t,s),s},Ee=(e,t)=>{let{apiBasePath:r}=K(),[n,a]=Je(()=>P.getReport(e)),[s,o]=Je(null),[i,l]=Je(!1),[m,p]=Je(!1),I=Br({id:e,token:0});return Ot(()=>{let g=b=>{if(b===e){let w=P.getReport(e,!0);a(w)}};return P.listeners.add(g),()=>{P.listeners.delete(g)}},[e]),Ot(()=>{let g=Pe(t),b=(I.current.token||0)+1;if(I.current={id:e,token:b},e<=0){a(null),o(e===0?new Error("Invalid ID"):null),l(!1),p(!1);return}let w=P.getReport(e,!0),T=!1;if(w)T=!P.isValid(P.reports.get(e)?.expiresAt??0);else if(g){let D=P.getList(g,!0)?.find(S=>S.reportHubId===e);D&&(w=D,T=!P.isValid(P.lists.get(g)?.expiresAt??0))}if(a(w),w&&!T){o(null),l(!1),p(!1);return}l(!w),p(!0);let L=setTimeout(async()=>{if(I.current.token===b)try{let H=null;g?H=(await Wt(r,g)).find(S=>S.reportHubId===e)??null:H=await Vr(r,e),I.current.token===b&&(a(H),o(null))}catch(H){I.current.token===b&&o(H instanceof Error?H:new Error("Load failed"))}finally{I.current.token===b&&(l(!1),p(!1))}},$r);return()=>clearTimeout(L)},[e,t,r]),{report:n,error:s,isLoading:i,isRefetching:m}},Gt=()=>{let{apiBasePath:e}=K();return Fr(t=>{let r=Pe(t);r&&!P.getList(r)&&Wt(e,r).catch(n=>Ft.warn("Prefetch error",r,n))},[e])};import{useEffect as en}from"react";import{z as y}from"zod";var jr=y.object({name:y.string(),affiliation:y.string().nullable()}),zr=y.object({name:y.string().nullable(),text:y.string().nullable(),color:y.string().nullable()}),Wr=y.object({id:y.number(),name:y.string(),color:y.string().nullable()}),qt=y.object({id:y.number(),userId:y.string(),userName:y.string(),content:y.string(),createdAt:y.string(),isMine:y.boolean()}),ht=y.object({reportHubId:y.number(),date:y.string().nullable(),createdAt:y.string().nullable(),author:y.string(),userId:y.string(),sourceType:y.string().nullable(),employeeName:y.string().nullable(),updatedBy:y.string().nullable(),updatedAt:y.string().nullable(),category:y.string().nullable(),creationCategory:y.string().nullable(),visitTimeFrom:y.string().nullable(),visitTimeTo:y.string().nullable(),customerName:y.string().nullable(),interviewers:y.array(jr),subject:y.string().nullable(),content:y.string().nullable(),comments:y.array(zr),isRead:y.boolean(),isStarred:y.boolean(),labels:y.array(Wr),commentItems:y.array(qt)}),Gr=y.object({type:y.literal("connected")}),qr=y.object({type:y.literal("status-update"),reportHubId:y.number(),statusType:y.enum(["star","read"]),value:y.boolean(),clientTempId:y.string(),recipientRawUserId:y.number().optional()}),Yr=y.object({type:y.literal("comment-add"),reportHubId:y.number(),comment:qt,clientTempId:y.string()}),Kr=y.object({type:y.literal("comment-delete"),reportHubId:y.number(),commentId:y.number(),clientTempId:y.string()}),Qr=y.object({type:y.literal("report-create"),reportHubId:y.number(),report:ht,clientTempId:y.string(),recipientRawUserId:y.number().optional()}),Xr=y.object({type:y.literal("report-update"),reportHubId:y.number(),report:ht,clientTempId:y.string(),recipientRawUserId:y.number().optional()}),Jr=y.object({type:y.literal("report-publish"),reportHubId:y.number(),report:ht,clientTempId:y.string()}),Zr=y.object({type:y.literal("report-delete"),reportHubId:y.number(),clientTempId:y.string()}),Yt=y.discriminatedUnion("type",[Gr,qr,Yr,Kr,Qr,Xr,Jr,Zr]);var Oe=ke(1,"daily-report-sse-connection"),Kt=({isSseEnabled:e,onMessage:t})=>{let{ssePath:r}=K();en(()=>{if(!e)return;let n=null,a=null,s=0,o,i=()=>{n?.close(),n=new EventSource(`${r}${o?`?lastEventId=${o}`:""}`),n.onopen=()=>{s=0,Oe.info("SSE Connected")},n.onmessage=l=>{l.lastEventId&&(o=l.lastEventId);try{let m=JSON.parse(l.data),p=Yt.safeParse(m);if(!p.success){Oe.error("SSE Validation Error",p.error.format());return}if(p.data.type==="connected"){Oe.info("SSE Subscribe Ready");return}t(p.data)}catch(m){Oe.error("SSE Parse Error",m)}},n.onerror=l=>{n?.close(),n=null,s++;let m=Math.min(2e3*2**(s-1),3e4);Oe.error(`SSE Error. Retrying in ${m}ms (attempt ${s})...`,l),a=setTimeout(i,m)}};return i(),()=>{n&&n.close(),a&&clearTimeout(a)}},[e,t,r])};import{jsx as an}from"react/jsx-runtime";var De=ke(1,"daily-report-action-context"),vt=globalThis.__DailyReportActionContext??tn(null);globalThis.__DailyReportActionContext=vt;var me=()=>{let e=rn(vt);if(!e)throw new Error("useDailyReportActionContext must be used within a DailyReportActionProvider");return e},_e=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"},Xt=({children:e,user:t,initialItems:r=[],userId:n})=>{let{apiBasePath:a,draftLabelName:s}=K(),o=ue(new Map),i=ue(new Map),l=ue(new Map),m=ue(new Map),p=ue(new Map),[I,g]=xt(0),[b,w]=xt(r),[T,L]=xt(!!n),H=ue(new Map),D=ue(new Set),S=ue(new Set),E=ue(new Set),k=nn(),U=we(async()=>{De.info("[DailyReportActionProvider] Refetching data without page reload..."),k.state==="idle"&&k.revalidate(),g(f=>f+1),P.listeners.forEach(f=>{f(-1)})},[k]),G=we(async()=>{De.info("[DailyReportActionProvider] Clearing client & server/DB cache and refetching data without page reload..."),Vt(),S.current.clear();try{sessionStorage.clear()}catch{}try{let f=new FormData;f.append("intent","clearCache"),await fetch(`${a}/action`,{method:"POST",body:f})}catch(f){De.warn("[DailyReportActionProvider] Failed to clear server-side cache:",f)}k.state==="idle"&&k.revalidate(),g(f=>f+1),P.listeners.forEach(f=>{f(-1)})},[a,k]),q=ue(new Map),V=ue(()=>{}),_=we((f,d)=>{let x=q.current,c=x.get(f);if(c){c.messages.push(d);return}let h={messages:[d],unsubscribe:()=>{},timer:setTimeout(()=>{let R=x.get(f);R&&(R.unsubscribe(),x.delete(f),De.warn(`[SSE Queue] Expired: reportHubId=${f}, dropped=${R.messages.length} messages`))},3e4)};h.unsubscribe=zt(f,()=>{let R=x.get(f);if(R&&de(f,{ignoreExpiry:!0})){R.unsubscribe(),clearTimeout(R.timer),x.delete(f),De.info(`[SSE Queue] Replaying ${R.messages.length} messages for reportHubId=${f}`);for(let C of R.messages)V.current(C)}}),x.set(f,h)},[]),ie=f=>{E.current.add(f),setTimeout(()=>{E.current.delete(f)},3e4)},oe=we(f=>!!f&&E.current.has(f),[]),W=we((f,d)=>{w(x=>{let c=d??x.find(C=>C.reportHubId===f)?.businessDate??null;return(x.some(C=>C.reportHubId===f)?x.map(C=>C.reportHubId===f?{...C,businessDate:c}:C):[{reportHubId:f,businessDate:c},...x]).sort((C,F)=>{let $=C.businessDate??"";return(F.businessDate??"").localeCompare($)})})},[]),le=()=>{n&&L(f=>!f)},te=we(f=>{S.current.add(f),w(d=>d.filter(x=>x.reportHubId!==f))},[]);Qt(()=>{let f=new Set(r.map(d=>d.reportHubId));for(let d of S.current)f.has(d)||S.current.delete(d);w(d=>{let x=new Map;for(let c of r)S.current.has(c.reportHubId)||x.set(c.reportHubId,c);for(let c of d)x.has(c.reportHubId)||S.current.has(c.reportHubId)||x.set(c.reportHubId,c);return Array.from(x.values()).sort((c,h)=>{let R=c.businessDate?new Date(c.businessDate).getTime():0;return(h.businessDate?new Date(h.businessDate).getTime():0)-R})})},[r]);let N=we(f=>{if(!oe(f.clientTempId))switch(f.type){case"comment-add":{let{comment:d,reportHubId:x}=f,c=de(x,{ignoreExpiry:!0});if(c){if(c.commentItems.some($=>$.id===d.id))return;let h=!1,R=o.current.get(x);if(R){for(let[$,ae]of R.entries())if(ae===d.content){R.delete($),p.current.set($,d.id),h=!0;break}}let C={...d,userName:d.userName||(h?_e(t):"Unknown"),createdAt:d.createdAt||new Date().toISOString(),isMine:h},F={...c,commentItems:[...c.commentItems,C].sort(($,ae)=>new Date($.createdAt).getTime()-new Date(ae.createdAt).getTime())};Re(x,F),Le(x),Ae(x),g($=>$+1)}else _(x,f);break}case"comment-delete":{let{commentId:d,reportHubId:x}=f,c=de(x,{ignoreExpiry:!0});if(c){let h={...c,commentItems:c.commentItems.filter(R=>R.id!==d)};Re(x,h),Le(x),Ae(x),g(R=>R+1)}else _(x,f);break}case"status-update":{let{statusType:d,value:x,reportHubId:c}=f,h=de(c,{ignoreExpiry:!0});if(d==="star")if(l.current.get(c)===x&&l.current.delete(c),h){let R={...h,isStarred:x};Re(c,R),g(C=>C+1)}else _(c,f);else if(d==="read")if(m.current.get(c)===x&&m.current.delete(c),h){let R={...h,isRead:x};Re(c,R),g(C=>C+1)}else _(c,f);break}case"report-delete":{let{reportHubId:d}=f;D.current.delete(d),S.current.add(d);let x=q.current.get(d);x&&(x.unsubscribe(),clearTimeout(x.timer),q.current.delete(d));let c=de(d,{ignoreExpiry:!0});c?.date&&(Ze(d,c.date),g(h=>h+1)),w(h=>h.filter(R=>R.reportHubId!==d));break}case"report-create":case"report-update":case"report-publish":{let{report:d}=f;Re(d.reportHubId,d),(f.type==="report-create"||f.type==="report-publish")&&(D.current.add(d.reportHubId),W(d.reportHubId,d.date)),g(x=>x+1);break}}},[oe,W,t,_]);V.current=N,Qt(()=>()=>{for(let f of q.current.values())f.unsubscribe(),clearTimeout(f.timer);q.current.clear()},[]),Kt({isSseEnabled:T,onMessage:N});let A=async(f,d,x,c,h,R)=>{R?.skipLock||Le(f),h.onOptimistic?.();let C=c.clientTempId||crypto.randomUUID();ie(C);let F=new FormData;F.append("intent",d),F.append("reportHubId",String(f)),F.append("businessDate",x),F.append("operationTimestamp",String(Date.now())),F.append("clientTempId",C);for(let[$,ae]of Object.entries(c))$!=="clientTempId"&&F.append($,ae);try{let $=await fetch(`${a}/action`,{method:"POST",body:F,headers:{Accept:"application/json"}});if(!$.ok){let Ct=new Error(`Failed to ${d}`);throw Object.assign(Ct,{status:$.status}),Ct}let ae=await $.json();if(ae.status!=="OK"||d!=="create"&&String(ae.reportHubId)!==String(f))throw new Error(`Invalid response for ${d}`);if(typeof ae.clientTempId!="string"||ae.clientTempId!==C)throw new Error(`Invalid clientTempId for ${d}`);return await h.onSuccess?.(ae)}catch($){throw De.error(`${d} failed:`,$),h.onFailure?.(),$}finally{R?.keepLock||R?.skipLock||Ae(f)}},Q=async(f,d,x)=>{let c=Number(f),h=-1*Date.now(),R=A(c,"addComment",x,{content:d,clientTempId:String(h)},{onOptimistic:()=>{o.current.has(c)||o.current.set(c,new Map),o.current.get(c)?.set(h,d),g(C=>C+1)},onSuccess:C=>{if(!C.newComment)throw new Error("No new comment returned");let F=C.newComment.id;p.current.set(h,F),o.current.get(c)?.delete(h);let $=de(c,{ignoreExpiry:!0});return $&&!$.commentItems.some(ae=>ae.id===F)&&ce(c,{commentItems:[...$.commentItems,{...C.newComment,id:F,isMine:!0,userName:_e(t)}],updatedAt:C.updatedAt}),F},onFailure:()=>{o.current.get(c)?.delete(h)}},{skipLock:!0}).finally(()=>H.current.delete(h));H.current.set(h,R),await R},Y=async(f,d,x)=>{let c=Number(f);i.current.has(c)||i.current.set(c,new Set),i.current.get(c)?.add(d),g(R=>R+1);let h=d;if(d<0){let R=p.current.get(d);if(R!==void 0)h=R;else{let C=H.current.get(d);if(!C)return;try{h=await C}catch{return}}}await A(c,"deleteComment",x,{commentId:String(h)},{onSuccess:R=>{let C=typeof R.deletedCommentId=="string"?Number(R.deletedCommentId):h,F=de(c,{ignoreExpiry:!0});F&&(ce(c,{commentItems:F.commentItems.filter($=>$.id!==C),updatedAt:R.updatedAt}),jt(C)),i.current.get(c)?.delete(d)},onFailure:()=>{i.current.get(c)?.delete(d)}},{skipLock:!0})},xe=async(f,d,x)=>{let c=Number(f);await A(c,"toggleStar",x,{isStarred:String(d)},{onOptimistic:()=>{ce(c,{isStarred:d}),l.current.set(c,d),g(h=>h+1)},onSuccess:h=>{h.updatedStatus&&typeof h.updatedStatus.isStarred=="boolean"&&de(c,{ignoreExpiry:!0})&&(ce(c,{isStarred:h.updatedStatus.isStarred,updatedAt:h.updatedAt}),g(C=>C+1)),l.current.delete(c)},onFailure:()=>{ce(c,{isStarred:!d}),l.current.delete(c)}},{skipLock:!0})},M=async(f,d,x)=>{let c=Number(f);await A(c,"toggleRead",x,{isRead:String(d)},{onOptimistic:()=>{ce(c,{isRead:d}),m.current.set(c,d),g(h=>h+1)},onSuccess:h=>{h.updatedStatus&&typeof h.updatedStatus.isRead=="boolean"&&de(c,{ignoreExpiry:!0})&&(ce(c,{isRead:h.updatedStatus.isRead,updatedAt:h.updatedAt}),g(C=>C+1)),m.current.delete(c)},onFailure:()=>{ce(c,{isRead:!d}),m.current.delete(c)}},{skipLock:!0})},B=ue(M);B.current=M;let Z=we((f,d,x)=>B.current(f,d,x),[]),pe=async f=>{let d=-1*Date.now(),x=new Date().toISOString(),c={reportHubId:d,date:f,createdAt:x,author:_e(t),userId:t?.id??"unknown",sourceType:"Internal",employeeName:_e(t),updatedBy:_e(t),updatedAt:x,category:null,creationCategory:null,visitTimeFrom:null,visitTimeTo:null,customerName:null,interviewers:[],subject:"",content:"",comments:[],isRead:!0,isStarred:!1,labels:[{id:0,name:s,color:"#9ca3af"}],commentItems:[]};$t(c,Date.now()+3e5,!1),w(h=>[{reportHubId:d,businessDate:f},...h]);try{let h=await A(0,"create",f,{clientTempId:String(d)},{onSuccess:C=>C});if(h.clientTempId&&h.clientTempId!==String(d))throw De.warn(`[createReport] ID mismatch. req=${d}, res=${h.clientTempId}`),new Error("Optimistic ID mismatch");let R=Number(h.reportHubId);return Le(R),h.report&&(Re(R,h.report),g(C=>C+1)),w(C=>C.some(F=>F.reportHubId===R)?C.filter(F=>F.reportHubId!==d):C.map(F=>F.reportHubId===d?{...F,reportHubId:R}:F)),setTimeout(()=>Ae(R),1e3),R}catch(h){throw De.error("[createReport] Failed or mismatched",h),w(R=>R.filter(C=>C.reportHubId!==d)),h}},We=async(f,d,x)=>{let c=Number(f);await A(c,"update",x,{...d.title&&{title:d.title},...d.content&&{content:d.content}},{onSuccess:()=>{let h=de(c,{ignoreExpiry:!0});h&&(ce(c,{subject:d.title??h.subject,content:d.content??h.content}),g(R=>R+1))}})},bt=async(f,d)=>{let x=Number(f),c=de(x,{ignoreExpiry:!0}),h=c?.labels||[];await A(x,"publish",d,{},{onOptimistic:()=>{if(c){let R=c.labels.filter(C=>C.name!==s);ce(x,{labels:R}),g(C=>C+1)}},onSuccess:R=>{R.report&&(Re(x,R.report),g(C=>C+1))},onFailure:()=>{ce(x,{labels:h}),g(R=>R+1)}},{skipLock:!0})},wr=async(f,d)=>{let x=Number(f),c=b.find(h=>h.reportHubId===x);S.current.add(x),w(h=>h.filter(R=>R.reportHubId!==x));try{await A(x,"delete",d,{},{onSuccess:h=>{Ze(x,d)}})}catch(h){if(h.status===404){Ze(x,d);return}S.current.delete(x),c&&w(C=>C.some(F=>F.reportHubId===x)?C:[c,...C].sort((F,$)=>($.businessDate??"").localeCompare(F.businessDate??"")))}};return an(vt.Provider,{value:{user:t,pendingAddCommentIds:o,pendingDeleteCommentIds:i,pendingStarUpdates:l,pendingReadUpdates:m,resolvedIdMap:p,version:I,items:b,isSseEnabled:T,toggleSse:le,addComment:Q,deleteComment:Y,toggleStar:xe,toggleRead:Z,createReport:pe,updateReport:We,publishReport:bt,deleteReport:wr,removeStaleItem:te,refetchData:U,clearCacheAndRefetch:G},children:e})};import{useCallback as Jt,useMemo as sn,useRef as on,useState as ln}from"react";var et=(e,t,r)=>{let{pendingAddCommentIds:n,pendingDeleteCommentIds:a,resolvedIdMap:s,version:o,addComment:i,deleteComment:l}=me(),[m,p]=ln(null),I=Jt(T=>e&&l(e.reportHubId,T,e.date??""),[e,l]),g=Jt(T=>e&&t?i(e.reportHubId,T,e.date??""):Promise.resolve(),[e,t,i]),b=on([]);return{uiComments:sn(()=>{if(!e)return[];let T=Nt(e.comments,e.commentItems,r),L=a.current.get(e.reportHubId);L?.size&&(T=T.filter(D=>!L.has(D.id)));let H=n.current.get(e.reportHubId);if(H?.size&&t){let D=new Set(T.map(E=>E.id)),S=t.displayName?.trim()||(t.name?`${t.name.familyName??""} ${t.name.givenName??""}`.trim():"")||t.emails?.[0]?.value||"Unknown";for(let[E,k]of H){if(L?.has(E)||D.has(E))continue;let U=s.current.get(E);U&&D.has(U)||T.some(G=>G.isMine&&G.content===k&&typeof G.id=="number"&&G.id>0)||T.push({id:E,authorName:S,content:k,createdAt:new Date().toISOString(),isMine:!0,isLegacy:!1})}}return JSON.stringify(T)===JSON.stringify(b.current)?b.current:(b.current=T,T)},[e,t,r,a,n,s,o]),handleAddComment:g,handleDeleteComment:I,pendingDeleteId:m,setPendingDeleteId:p,resolvedIdMap:s.current}};import{useCallback as dn,useEffect as cn,useState as un}from"react";var tt=(e,t)=>{let{enableMutationObserver:r=!1,bottomGap:n=4,minFallbackHeight:a=240}=t??{},[s,o]=un(600),i=dn(()=>{if(typeof window>"u")return;let l=e.current;if(!l||l.offsetParent===null&&window.getComputedStyle(l).position!=="fixed")return;let m=_=>Number.parseFloat(_)||0,{top:p}=l.getBoundingClientRect(),I=l.parentElement?.getBoundingClientRect(),g=window.getComputedStyle(document.documentElement),b=m(g.getPropertyValue("--footer-height")),w=m(g.getPropertyValue("--header-height")),T=m(g.getPropertyValue("--scrollbar-height")),L=window.getComputedStyle(l),H=m(L.marginBottom),D=m(L.paddingBottom),S=window.innerHeight-b-T-n,E=I?Math.min(I.bottom,S):S,k=I?Math.max(I.top,w):w,U=Math.max(p,k),G=E-U-H-D,q=Number.isFinite(G)?Math.floor(G):0,V=q>0?q:a;V>0&&Number.isFinite(V)&&o(_=>Math.abs(_-V)>1?V:_)},[n,e,a]);return cn(()=>{if(typeof window>"u")return;let l=null,m=null,p=null,I=null,g=()=>{l!==null&&window.cancelAnimationFrame(l),l=window.requestAnimationFrame(()=>{i()})};g(),m=window.setTimeout(()=>{g()},150);let b=e.current;return typeof ResizeObserver<"u"&&b&&(p=new ResizeObserver(()=>{g()}),p.observe(b),b.parentElement&&p.observe(b.parentElement)),r&&typeof MutationObserver<"u"&&(I=new MutationObserver(()=>{g()}),I.observe(document.documentElement,{attributes:!0,attributeFilter:["style"]})),window.addEventListener("resize",g),()=>{l!==null&&window.cancelAnimationFrame(l),m!==null&&window.clearTimeout(m),window.removeEventListener("resize",g),p?.disconnect(),I?.disconnect()}},[r,i,e]),{viewportHeight:s,updateViewportHeight:i}};import{tapScrollCircleSampleVisual as mn}from"@aiquants/virtualscroll";var rt=180,Rt=160,nt=6,Fe=Rt-nt,at=.8,st={maxVelocity:18,deceleration:.0018,startVelocityThreshold:.03},ot=20,Zt=6,it={reportHubId:-1,businessDate:null},er={report:null,error:null,isLoading:!1,isRefetching:!1},tr=240,lt=15,rr=8,nr=3,ar={enabled:!0,renderVisual:mn,maxSpeedCurve:{exponentialSteepness:7.5,exponentialScale:14,easedOffset:.18},maxSpeedMultiplier:18};import{useEffect as vn,useRef as Rn,useState as wt}from"react";import{Slot as pn}from"@radix-ui/react-slot";import{cva as fn}from"class-variance-authority";import*as sr from"react";import{jsx as gn}from"react/jsx-runtime";var bn=fn("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"}}),ve=sr.forwardRef(({className:e,variant:t,size:r,asChild:n=!1,...a},s)=>gn(n?pn:"button",{className:j(bn({variant:t,size:r,className:e})),ref:s,...a}));ve.displayName="Button";import{jsx as yn}from"react/jsx-runtime";function or({className:e,type:t,...r}){return yn("input",{type:t,"data-slot":"input",className:j("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 ir from"@radix-ui/react-label";import{jsx as hn}from"react/jsx-runtime";function He({className:e,...t}){return hn(ir.Root,{"data-slot":"label",className:j("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 xn}from"react/jsx-runtime";function lr({className:e,...t}){return xn("textarea",{"data-slot":"textarea",className:j("flex min-h-15 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30","aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",e),...t})}import{jsx as Ne,jsxs as dt}from"react/jsx-runtime";var ct=({report:e,onCancel:t,onPublishSuccess:r})=>{let{updateReport:n,publishReport:a}=me(),[s,o]=wt(e.subject??""),[i,l]=wt(e.content??""),[m,p]=wt(!1),I=Rn(e.reportHubId);vn(()=>{e.reportHubId!==I.current&&(o(e.subject??""),l(e.content??""),I.current=e.reportHubId)},[e.reportHubId,e.subject,e.content]);let g=async()=>{p(!0);try{await n(e.reportHubId,{title:s,content:i},e.date??"")}finally{p(!1)}},b=async()=>{p(!0);try{await n(e.reportHubId,{title:s,content:i},e.date??""),await a(e.reportHubId,e.date??""),r?.()}finally{p(!1)}};return dt("div",{className:"space-y-6 p-1",children:[dt("div",{className:"space-y-2",children:[Ne(He,{htmlFor:`report-title-${e.reportHubId}`,children:"\u30BF\u30A4\u30C8\u30EB"}),Ne(or,{id:`report-title-${e.reportHubId}`,value:s,onChange:w=>o(w.target.value),placeholder:"\u65E5\u5831\u306E\u30BF\u30A4\u30C8\u30EB\u3092\u5165\u529B",disabled:m})]}),dt("div",{className:"space-y-2",children:[Ne(He,{htmlFor:`report-content-${e.reportHubId}`,children:"\u5185\u5BB9"}),Ne(lr,{id:`report-content-${e.reportHubId}`,value:i,onChange:w=>l(w.target.value),placeholder:"\u65E5\u5831\u306E\u5185\u5BB9\u3092\u5165\u529B",className:"min-h-50",disabled:m})]}),dt("div",{className:"flex justify-end gap-2",children:[t&&Ne(ve,{variant:"outline",onClick:t,disabled:m,children:"\u30AD\u30E3\u30F3\u30BB\u30EB"}),Ne(ve,{variant:"secondary",onClick:g,disabled:m,children:"\u4FDD\u5B58"}),Ne(ve,{onClick:b,disabled:m,children:"\u516C\u958B"})]})]})};import{jsx as wn}from"react/jsx-runtime";var Be=({className:e})=>wn("span",{className:j("text-blue-500",e),children:"\u25CF"});import{Fragment as On,jsx as v,jsxs as O}from"react/jsx-runtime";var Tn=(e,t,r)=>{Ie(()=>{let n=e.current;if(!n)return;let a=new ResizeObserver(()=>{r(t,n.offsetHeight)});return a.observe(n),()=>a.disconnect()},[t,r,e])},Sn=({itemId:e,onHeightMeasured:t,children:r})=>{let n=fe(null);return Tn(n,e,t),v("div",{ref:n,className:"px-2 pb-3","data-daily-report-button":e,children:r})},kn=e=>e.affiliation?.trim()?`${e.name}\uFF08${e.affiliation}\uFF09`:e.name,cr=({dailyReportItems:e,userId:t,selectedItemId:r,onSelectItem:n})=>{let[a,s]=Ue(new Map),o=fe(null),i=fe(null),{viewportHeight:l,updateViewportHeight:m}=tt(o,{enableMutationObserver:!0}),p=Gt(),[I,g]=Ue(""),[b,w]=Ue(!1),T=fe(null),L=fe(null),H=fe(e);H.current=e;let D=fe(null);Ie(()=>{if(r!=null&&i.current){let N=e.findIndex(A=>A.reportHubId===r);if(N!==-1){if(D.current?.id===r&&D.current?.index===N)return;i.current.scrollToIndex(N,{align:"top"}),D.current={id:r,index:N}}}else D.current=null},[r,e]);let S=fe(n);S.current=n,Ie(()=>{if(i.current){let N=document.querySelector('[data-testid="daily-report-detail-list"]');if(N){let A=i.current,Q=Object.assign({},A,{findReportIndex:Y=>H.current.findIndex(xe=>xe.reportHubId===Y),getReportItem:Y=>H.current[Y],selectItem:Y=>S.current?.(Y)});N.__virtualScroll=Q}}});let E=e.length,k=he(N=>N>=E?it:e[N],[e,E]),U=he((N,A)=>{if(E===0)return;let Q=Math.max(0,N),Y=Math.min(E-1,A);if(Q>Y)return;let xe=new Set;for(let M=Q;M<=Y;M++){let B=k(M);if(B.businessDate&&xe.add(B.businessDate),xe.size>=Zt)break}xe.forEach(M=>{p(M)})},[k,E,p]),G=he(({renderingStartIndex:N,renderingEndIndex:A,visibleStartIndex:Q})=>{if(E===0)return;let Y=k(Q);Y?.businessDate&&g(ne(Y.businessDate)),U(N,A),U(A+1,A+ot),U(N-ot,N-1)},[k,E,U]),q=he(()=>{let N=o.current;N&&(N.dataset.scrolling!=="true"&&(N.dataset.scrolling="true"),L.current&&clearTimeout(L.current),L.current=setTimeout(()=>{N&&delete N.dataset.scrolling,L.current=null},150))},[]),V=he(N=>v(Ge,{...N,label:I,isWheelScrollActive:b}),[I,b]);Ie(()=>{let N=o.current;if(!N)return;let A=()=>{w(!0),T.current&&clearTimeout(T.current),T.current=window.setTimeout(()=>{w(!1),T.current=null},240)};return N.addEventListener("wheel",A,{passive:!0}),()=>{N.removeEventListener("wheel",A),T.current&&clearTimeout(T.current)}},[]);let _=he((N,A)=>{if(s(Q=>{if(Q.get(N)===A)return Q;let Y=new Map(Q);return Y.set(N,A),Y}),i.current){let Q=H.current.findIndex(Y=>Y.reportHubId===N);Q!==-1&&i.current.updateItemSize(Q,A)}},[]),ie=he(N=>{let A=k(N);return a.get(A.reportHubId)||350},[k,a]),oe=he(N=>k(N).reportHubId,[k]),W=ut(()=>({enabled:!0,renderVisual:Dn}),[]);Ie(()=>{E>=0&&m()},[E,m]),Ie(()=>{E!==0&&U(0,Math.min(E-1,ot))},[E,U]);let le=he(N=>{let A=H.current.findIndex(Q=>Q.reportHubId===N);A>=0&&setTimeout(()=>i.current?.scrollToIndex(A,{align:"bottom"}),300)},[]),te=he(N=>v(Hn,{item:N,onHeightMeasured:_,onCommentAdded:le,userId:t},N.reportHubId),[_,le,t]);return O(On,{children:[v("div",{ref:o,className:"flex min-h-0 flex-1 flex-col",children:v(In,{ref:i,itemCount:E,getItem:k,getItemKey:oe,getItemHeight:ie,viewportSize:l,overscanCount:lt,scrollBarOptions:{width:8,tapScrollCircleOptions:W,renderThumbOverlay:V},behaviorOptions:{wheelSpeedMultiplier:at,inertiaOptions:st},onRangeChange:G,onScroll:q,testId:"daily-report-detail-list",className:"relative w-full",children:te})}),E===0&&v("div",{className:"py-8 text-center",children:v("p",{className:"text-slate-500",children:"\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093"})})]})},En=()=>O("div",{className:"rounded-2xl border border-slate-200 bg-white p-4 shadow-sm",children:[O("div",{className:"mb-4 flex flex-wrap gap-2",children:[v("div",{className:"h-6 w-20 rounded-full bg-slate-200"}),v("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),v("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),v("div",{className:"h-6 w-28 rounded-full bg-slate-200"})]}),O("div",{className:"mb-3 grid gap-3 md:grid-cols-[minmax(0,1fr)_220px]",children:[O("div",{className:"space-y-3",children:[v("div",{className:"h-5 w-40 rounded bg-slate-200"}),v("div",{className:"h-5 w-56 rounded bg-slate-200"}),v("div",{className:"h-24 rounded-lg bg-slate-200"})]}),O("div",{className:"rounded-xl bg-slate-100 p-3",children:[v("div",{className:"mb-2 h-4 w-24 rounded bg-slate-200"}),v("div",{className:"mb-2 h-4 w-28 rounded bg-slate-200"}),v("div",{className:"h-4 w-32 rounded bg-slate-200"})]})]}),O("div",{className:"space-y-3",children:[v("div",{className:"h-4 w-24 rounded bg-slate-200"}),O("div",{className:"flex flex-wrap gap-2",children:[v("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),v("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),v("div",{className:"h-6 w-16 rounded-full bg-slate-200"})]}),O("div",{className:"space-y-2",children:[v("div",{className:"h-16 rounded-lg bg-slate-200"}),v("div",{className:"h-16 rounded-lg bg-slate-200"})]})]})]}),Hn=({item:e,onHeightMeasured:t,onCommentAdded:r,userId:n})=>{let{report:a,error:s,isLoading:o,isRefetching:i}=Ee(e.reportHubId,e.businessDate),{removeStaleItem:l}=me(),{draftLabelName:m}=K(),[p,I]=Ue(!1),[g,b]=Ue(!1),w=fe(!1),T=fe(!1);i&&(T.current=!0),Ie(()=>{!(a||o||i||s)&&T.current&&e.reportHubId>0&&l(e.reportHubId)},[a,o,i,s,e.reportHubId,l]);let L=a?.labels.some(D=>D.name===m),H=n&&a?.userId===n;return Ie(()=>{a&&H&&L&&!p&&!g?(I(!0),w.current=!0):a&&!L&&p&&w.current&&(I(!1),w.current=!1)},[a,H,L,p,g]),v(Sn,{itemId:e.reportHubId,onHeightMeasured:t,children:s?v(An,{itemId:e.reportHubId}):a?p?v(ct,{report:a,onCancel:()=>{I(!1),b(!0)},onPublishSuccess:()=>{I(!1)}}):v(Ln,{item:e,report:a,onCommentAdded:r,userId:n,onDoubleClick:H?()=>I(!0):void 0}):v(En,{})})},Mn=({report:e,isRead:t,isStarred:r,isMine:n,onToggleRead:a,onToggleStar:s,onDelete:o,itemSourceType:i,visitTimeDisplay:l,categoryLabel:m,fieldLabels:p})=>{let{sourceTypeConfigs:I}=K();return O("div",{className:"flex flex-wrap items-center gap-2 font-medium text-slate-600 text-xs",children:[(()=>{let g=i??e?.sourceType,b=Xe(g,I);return b?v("span",{className:j("inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",b.badgeClassName),children:b.label}):null})(),v("button",{type:"button",onClick: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:r?"\u30B9\u30BF\u30FC\u3092\u5916\u3059":"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B","data-detail-star-button":e.reportHubId,children:r?v(dr,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):v(dr,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),v("button",{type:"button",onClick:a,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 focus:outline-none dark:hover:bg-slate-700",title:t?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","data-detail-read-button":e.reportHubId,children:t?v(Cn,{className:"h-3.5 w-3.5 text-blue-500"}):v(Be,{className:"text-xs"})}),n&&v("button",{type:"button",onClick:o,"data-detail-delete-button":e.reportHubId,className:"text-lg leading-none transition-transform focus:outline-none active:scale-125",title:"\u524A\u9664\u3059\u308B",children:v(Nn,{className:"h-4 w-4 text-slate-300 hover:text-red-500"})}),O("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-blue-50 px-3 py-1 font-semibold text-blue-700 text-xs",children:[v("span",{className:"text-[10px] text-blue-500 uppercase tracking-wide",children:p.id}),e.reportHubId]}),O("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[v("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:p.businessDate}),ne(e.date)]}),O("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[v("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:p.author}),re(e.employeeName)]}),O("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[v("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:p.visitTime}),l||"-"]}),O("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[v("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:p.updatedAt}),ne(e.updatedAt)]}),m&&O("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-amber-100 px-3 py-1 text-amber-700",children:[v("span",{className:"text-[10px] text-amber-500 uppercase tracking-wide",children:p.category}),m]})]})},Pn=({report:e,visitTimeDisplay:t,categoryLabel:r,fieldLabels:n})=>O("div",{className:"flex flex-col gap-3 rounded-xl bg-slate-100 p-4 text-slate-600 text-xs",children:[O("div",{className:"flex flex-col gap-1",children:[v("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.author}),v("span",{className:"text-slate-700 text-sm",children:re(e.author)})]}),O("div",{className:"flex flex-col gap-1",children:[v("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.createdAt}),v("span",{className:"text-slate-700 text-sm",children:ne(e.createdAt)})]}),O("div",{className:"flex flex-col gap-1",children:[v("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.updatedBy}),v("span",{className:"text-slate-700 text-sm",children:re(e.updatedBy)})]}),O("div",{className:"flex flex-col gap-1",children:[v("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.updatedAt}),v("span",{className:"text-slate-700 text-sm",children:ne(e.updatedAt)})]}),O("div",{className:"flex flex-col gap-1",children:[v("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.businessDate}),v("span",{className:"text-slate-700 text-sm",children:ne(e.date)})]}),t&&O("div",{className:"flex flex-col gap-1",children:[v("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.visitTime}),v("span",{className:"text-slate-700 text-sm",children:t})]}),r&&O("div",{className:"flex flex-col gap-1",children:[v("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.categoryInfo}),v("span",{className:"text-slate-700 text-sm",children:r})]})]}),Ln=({item:e,report:t,onCommentAdded:r,userId:n,onDoubleClick:a})=>{let s=fe(null),{toggleStar:o,toggleRead:i,pendingStarUpdates:l,pendingReadUpdates:m,deleteReport:p,user:I}=me(),{uiComments:g,handleAddComment:b,handleDeleteComment:w,pendingDeleteId:T,setPendingDeleteId:L,resolvedIdMap:H}=et(t,I,n),{fieldLabels:D}=K(),S=async W=>{await b(W),r?.(e.reportHubId)},E=l.current.has(t.reportHubId)?l.current.get(t.reportHubId)??!1:t.isStarred,k=m.current.has(t.reportHubId)?m.current.get(t.reportHubId)??!1:t.isRead,U=!!(n&&t.userId===n),G=async()=>{try{await i(t.reportHubId,!k,t.date??"")}catch{}},q=async()=>{try{await o(t.reportHubId,!E,t.date??"")}catch{}},V=async()=>{confirm("\u672C\u5F53\u306B\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F")&&await p(t.reportHubId,t.date??"")},_=ut(()=>t.content?t.content.replace(/<br\s*\/??\s*>/gi,`
|
|
2
|
+
`).trim():"",[t.content]),ie=ut(()=>{let W=t.visitTimeFrom?.trim(),le=t.visitTimeTo?.trim();return W&&le?`${W} - ${le}`:W||le||""},[t.visitTimeFrom,t.visitTimeTo]),oe=ut(()=>{let W=[];return t.category?.trim()&&W.push(`${D.category}: ${t.category}`),t.creationCategory?.trim()&&W.push(`${D.creationCategory}: ${t.creationCategory}`),W.join(" / ")},[t.category,t.creationCategory,D.category,D.creationCategory]);return v("div",{onDoubleClick:a,className:`flex h-full w-full flex-col rounded-2xl border bg-white p-4 shadow-sm transition-all duration-200 hover:-translate-y-0.5 hover:border-blue-300 hover:shadow-lg dark:border-slate-700 dark:bg-slate-900/70 ${k?"":"border-l-4 border-l-blue-500"}`,children:O("div",{className:"flex flex-col gap-4",children:[v(Mn,{report:t,itemSourceType:e.sourceType,isRead:k,isStarred:E,isMine:U,onToggleRead:G,onToggleStar:q,onDelete:V,visitTimeDisplay:ie,categoryLabel:oe,fieldLabels:D}),O("div",{className:"grid gap-4 md:grid-cols-[minmax(0,1fr)_240px]",children:[O("div",{className:"flex flex-col gap-4",children:[O("div",{className:"grid gap-3 sm:grid-cols-2",children:[O("div",{className:"flex flex-col gap-1",children:[v("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:D.customer}),v("span",{className:"font-semibold text-base text-slate-900",children:re(t.customerName)})]}),O("div",{className:"flex flex-col gap-1",children:[v("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:D.subject}),v("span",{className:"text-slate-700 text-sm",children:re(t.subject)})]})]}),_&&O("div",{className:"flex flex-col gap-2",children:[v("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:D.content}),v("div",{className:"whitespace-pre-wrap rounded-xl bg-slate-50 p-3 text-slate-700 text-sm leading-relaxed",children:_})]}),t.interviewers.length>0&&O("div",{className:"flex flex-col gap-2",children:[v("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:D.interviewers}),v("ul",{className:"flex flex-wrap gap-2",children:t.interviewers.map(W=>v("li",{className:"rounded-full bg-slate-100 px-3 py-1 text-slate-600 text-xs",children:kn(W)},`${W.name}-${W.affiliation||""}`))})]}),g.length>0&&O("div",{className:"flex flex-col gap-2",children:[v("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:D.comments}),v(Ye,{comments:g,reportHubId:t.reportHubId,businessDate:t.date??"",onDeleteComment:w,pendingDeleteId:T,onPendingDeleteIdChange:L,resolvedIdMap:H})]}),v("div",{className:"mt-auto",ref:s,children:v(Ke,{reportHubId:t.reportHubId,businessDate:t.date??"",onAddComment:S})})]}),v(Pn,{report:t,visitTimeDisplay:ie,categoryLabel:oe,fieldLabels:D})]})]})})},An=({itemId:e})=>v("div",{className:"rounded-2xl border border-red-200 bg-red-50 p-4 text-red-700 text-sm",children:O("p",{children:["\u65E5\u5831 ",e.toLocaleString()," \u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"]})});import{SwipeCloseGuardContext as _n,useSwipeGuardState as Fn,useSwipeToDismissOverlay as Bn,useTapClick as mr,useTransitionDisplay as Un}from"@aiquants/swipe-overlay";import{VirtualScroll as $n}from"@aiquants/virtualscroll";import{Check as Vn,Star as ur,Trash2 as jn}from"lucide-react";import{useCallback as ge,useEffect as se,useMemo as It,useRef as X,useState as Te}from"react";import*as be from"@radix-ui/react-tabs";import*as mt from"react";import{jsx as Dt}from"react/jsx-runtime";var pt=be.Root,$e=mt.forwardRef(({className:e,...t},r)=>Dt(be.List,{ref:r,className:j("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",e),...t}));$e.displayName=be.List.displayName;var Ve=mt.forwardRef(({className:e,...t},r)=>Dt(be.Trigger,{ref:r,className:j("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}));Ve.displayName=be.Trigger.displayName;var Me=mt.forwardRef(({className:e,...t},r)=>Dt(be.Content,{ref:r,className:j("data-[state=inactive]:hidden","mt-2 ring-offset-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",e),...t}));Me.displayName=be.Content.displayName;import{Fragment as br,jsx as u,jsxs as z}from"react/jsx-runtime";var zn=(e,t,r,n)=>{let[a,s]=Te(!1),[o,i]=Te(!1),l=X(null),m=X(null),p=X(null),I=It(()=>t===null?null:r.find(w=>w.reportHubId===t)??null,[r,t]),g=e&&a&&I!==null;se(()=>{if(g)i(!0);else{let w=setTimeout(()=>i(!1),300);return()=>clearTimeout(w)}},[g]),se(()=>{if(!(typeof window>"u")){if(e&&a&&t!==null&&!l.current){let w=`overlay-${Date.now()}`;window.history.pushState({...window.history.state,dailyReportOverlay:w},"",window.location.href),l.current=w}else!(e&&a)&&l.current&&(l.current=null);return a?(p.current=document.body.style.overflow,document.body.style.overflow="hidden"):p.current!==null&&(document.body.style.overflow=p.current,p.current=null),()=>{p.current!==null&&(document.body.style.overflow=p.current)}}},[e,a,t]),se(()=>{if(typeof window>"u")return;let w=()=>{l.current&&(m.current=t,l.current=null,s(!1),n(null))};return window.addEventListener("popstate",w),()=>window.removeEventListener("popstate",w)},[t,n]);let b=ge(()=>{e&&(m.current=t,s(!1),n(null),l.current&&typeof window<"u"&&(l.current=null,window.history.back()))},[e,t,n]);return{isMobileDetailOpen:a,setIsMobileDetailOpen:s,isOverlayMounted:o,shouldShowOverlay:g,handleOverlayClose:b,lastClosedItemIdRef:m,selectedItem:I}},Wn=(e,t,r,n,a)=>{let s=X(null),o=X(void 0);o.current!==e?.reportHubId&&(o.current=e?.reportHubId,s.current=null),se(()=>{n||(s.current=null)},[n]);let i=ge(async(l=!1)=>{if(!e)return;l||(s.current=e.reportHubId);let m=!e.isRead;try{await a(e.reportHubId,m,e.date??"")}catch{}},[e,a]);return se(()=>{if(r&&e&&!e.isRead&&!t){if(s.current===e.reportHubId)return;let l=setTimeout(()=>i(!0),500);return()=>clearTimeout(l)}},[e,t,r,i]),{handleToggleRead:i}},pr=({dailyReportItems:e,initialSelectedBusinessDate:t=null,initialSelectedReportHubId:r=null,autoMarkRead:n=!1,selectedReportHubId:a,onSelectItem:s,userId:o})=>{let i=X(null),l=X(null),{viewportHeight:m,updateViewportHeight:p}=tt(i),[I,g]=Te(""),[b,w]=Te(!1),[T,L]=Te(!1),H=X(null),D=X(null),S=e.length,E=X(null),{isMobileDetailOpen:k,setIsMobileDetailOpen:U,isOverlayMounted:G,shouldShowOverlay:q,handleOverlayClose:V,lastClosedItemIdRef:_,selectedItem:ie}=zn(T,a,e,s),oe=It(()=>Number.isFinite(m)&&m>0?{height:m}:void 0,[m]);se(()=>{if(typeof window>"u")return;let M=window.matchMedia("(max-width: 639px)"),B=bt=>L(bt.matches);L(M.matches),M.addEventListener("change",B);let Z=()=>requestAnimationFrame(p);window.addEventListener("resize",Z),p();let pe=i.current,We=()=>{w(!0),H.current&&clearTimeout(H.current),H.current=window.setTimeout(()=>{w(!1),H.current=null},tr)};return pe?.addEventListener("wheel",We,{passive:!0}),()=>{M.removeEventListener("change",B),window.removeEventListener("resize",Z),pe?.removeEventListener("wheel",We),H.current&&clearTimeout(H.current)}},[p]),se(()=>{if(!S){D.current=null,a!==null&&s(null);return}let M=`${r??""}|${t??""}`,B=(r??null)!==null||(t??null)!==null;if(B||(D.current=null),B&&D.current!==M){let Z=r&&e.find(pe=>pe.reportHubId===r)||t&&e.find(pe=>pe.businessDate===t);if(Z){D.current=M,a!==Z.reportHubId&&s(Z.reportHubId);return}}},[e,t,r,a,S,s]),se(()=>{if(T||k||_.current===null)return;let M=_.current;_.current=null;let B=e.findIndex(Z=>Z.reportHubId===M);B>=0&&requestAnimationFrame(()=>l.current?.focusItemAtIndex(B))},[k,T,e,_]),se(()=>{S>0&&g(M=>{let B=ne(e[0]?.businessDate);return M===B?M:B})},[e,S]);let W=X(e);W.current=e,se(()=>{if(l.current){let M=document.querySelector('[data-testid="daily-report-list"]');M&&(M.__virtualScroll={...l.current,findReportIndex:B=>W.current.findIndex(Z=>Z.reportHubId===B),getReportIds:(B=20)=>W.current.slice(0,B).map(Z=>Z.reportHubId)})}});let le=ge(M=>{M<=0||(s(M),T&&U(!0))},[T,s,U]),te=ge(M=>M<S?e[M]:it,[e,S]),N=ge(()=>Rt,[]),A=ge(M=>{let B=te(M.visibleStartIndex);B?.reportHubId>0&&g(Z=>{let pe=ne(B.businessDate);return Z===pe?Z:pe})},[te]),Q=ge(M=>{let B=te(M);if(B&&B.reportHubId>0){if(B.reportHubId===a)return;s(B.reportHubId)}},[te,s,a]),Y=ge(()=>{let M=i.current;M&&(M.dataset.scrolling!=="true"&&(M.dataset.scrolling="true"),E.current&&clearTimeout(E.current),E.current=setTimeout(()=>{M&&delete M.dataset.scrolling,E.current=null},150))},[]),xe=ge(M=>u(Ge,{...M,label:I,isWheelScrollActive:b}),[I,b]);return z(br,{children:[z("div",{className:"flex h-full min-h-0 gap-4",children:[u("div",{ref:i,className:"flex min-h-0 w-full sm:w-90",style:oe,children:u($n,{ref:l,itemCount:S,getItem:te,getItemHeight:N,viewportSize:m,overscanCount:lt,scrollBarOptions:{width:rr,tapScrollCircleOptions:ar,renderThumbOverlay:xe},behaviorOptions:{inertiaOptions:st,wheelSpeedMultiplier:at},onRangeChange:A,onScroll:Y,onItemFocus:Q,contentInsets:{top:nt,bottom:nt},testId:"daily-report-list",className:"relative w-full",children:M=>u(Qn,{item:M,isActive:M.reportHubId===a,onSelect:le},M.reportHubId)})}),u(fr,{dailyReportItems:e,selectedItem:ie,heightStyle:oe,autoMarkRead:!T&&n,isActive:a!==null,userId:o})]}),S===0&&u("div",{className:"py-8 text-center",children:u("p",{className:"text-slate-500",children:"\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093"})}),G&&u(Yn,{isOpen:q,selectedItem:ie,onClose:V,autoMarkRead:T&&n,userId:o})]})},Gn=()=>u("div",{className:"px-2 pb-3",style:{height:Fe},children:z("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:[z("div",{className:"mb-3 flex flex-wrap items-center gap-3",children:[u("div",{className:"h-4 w-24 rounded bg-slate-200"}),u("div",{className:"h-4 w-24 rounded bg-slate-200"}),u("div",{className:"h-4 w-24 rounded bg-slate-200"})]}),z("div",{className:"space-y-2",children:[u("div",{className:"h-4 w-full rounded bg-slate-200"}),u("div",{className:"h-4 w-11/12 rounded bg-slate-200"}),u("div",{className:"h-4 w-5/6 rounded bg-slate-200"})]})]})}),fr=({dailyReportItems:e,selectedItem:t,heightStyle:r,autoMarkRead:n=!1,isActive:a=!0,userId:s})=>{let[o,i]=Te("article"),[l,m]=Te(!1),{draftLabelName:p,fieldLabels:I,sourceTypeConfigs:g}=K(),{report:b,error:w,isLoading:T}=Ee(t?.reportHubId??-1,t?.businessDate??null),L=X(null),H=X(null),D=X(!1);se(()=>{if(!b)return;let V=b.labels.some(_=>_.name===p);b.reportHubId!==H.current?(H.current=b.reportHubId,V?(m(!0),D.current=!0):(m(!1),D.current=!1)):!V&&l&&D.current&&(m(!1),D.current=!1)},[b,l,p]);let S=!!(s&&b?.userId===s),E=ge(()=>{setTimeout(()=>{L.current&&L.current.scrollTo({top:L.current.scrollHeight,behavior:"smooth"})},100)},[]);if(e&&(e.length===0||!t))return u("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:u("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:u("p",{children:"\u5DE6\u5074\u306E\u4E00\u89A7\u304B\u3089\u65E5\u5831\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002"})})});let k=ne(b?.date??t?.businessDate),U=b?.employeeName||b?.author?re(b.employeeName??b.author):"",G=T||!b,q=z(br,{children:[z("div",{className:"space-y-1",children:[u("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:I.businessDate}),u("div",{className:"text-slate-900 text-sm dark:text-slate-100",children:k}),z("div",{className:"flex min-h-4 items-center gap-1 text-slate-500 text-xs dark:text-slate-300",children:[z("span",{children:[I.author,":"]}),G?u("div",{"data-skeleton":!0,className:"h-3 w-24 animate-pulse rounded bg-slate-200 dark:bg-slate-700"}):u("span",{children:U}),(()=>{let V=b?.sourceType,_=V?g?.[V]:void 0;return _?u("span",{className:j("ml-2 inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",_.badgeClassName),children:_.label}):null})()]})]}),z(pt,{value:o,onValueChange:V=>i(V),className:"flex min-h-0 flex-1 flex-col",children:[u($e,{className:"grid grid-cols-2 gap-1 rounded-md bg-slate-100 p-1 text-xs dark:bg-slate-800",children:["article","relations"].map(V=>u(Ve,{value:V,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:V==="article"?I.tabArticle:I.tabRelations},V))}),u(Me,{ref:L,value:"article",className:"scrollbar-thin flex-1 touch-pan-y overflow-y-auto overflow-x-hidden pt-3 text-sm",children:l?b?u(ct,{report:b,onCancel:()=>m(!1),onPublishSuccess:()=>m(!1)}):u("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&&u(qn,{report:b,isLoading:T,error:w,selectedItem:t,autoMarkRead:n,isActive:a,onCommentAdded:E,userId:s,onDoubleClick:S?()=>m(!0):void 0})}),u(Me,{value:"relations",className:"scrollbar-thin flex-1 touch-pan-y overflow-y-auto pt-3 text-sm",children:u("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:I.relationsEmpty})})]})]});return e?u("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:q}):u("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:q})},qn=({report:e,isLoading:t,error:r,autoMarkRead:n=!1,isActive:a=!0,onCommentAdded:s,userId:o,onDoubleClick:i})=>{let{toggleStar:l,toggleRead:m,deleteReport:p,user:I}=me(),{fieldLabels:g}=K(),{uiComments:b,handleAddComment:w,handleDeleteComment:T,pendingDeleteId:L,setPendingDeleteId:H,resolvedIdMap:D}=et(e,I,o),{handleToggleRead:S}=Wn(e,t,n,a,m),E=X(null),k=X(b.length);se(()=>{let N=e?.reportHubId??null;if(N!==E.current){E.current=N,k.current=b.length;return}b.length>k.current&&s?.(),k.current=b.length},[b.length,e?.reportHubId,s]);let U=async N=>{await w(N)},G=It(()=>e?.content?e.content.replace(/<br\s*\/?\s*>/gi,`
|
|
3
3
|
`).replace(/<\/p>/gi,`
|
|
4
|
-
`).replace(/<[^>]+>/g,""):null,[e]),
|
|
4
|
+
`).replace(/<[^>]+>/g,""):null,[e]),q=async()=>{if(!e)return;let N=!e.isStarred;try{await l(e.reportHubId,N,e.date??"")}catch{}},V=async()=>{if(e&&confirm("\u672C\u5F53\u306B\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F"))try{await p(e.reportHubId,e.date??"")}catch{alert("\u524A\u9664\u306B\u5931\u6557\u3057\u307E\u3057\u305F")}};if(r)return u("p",{className:"text-red-500",children:r.message});let _=!e,ie=e?.isStarred??!1,oe=e?.isRead??!1,W=!!(o&&e?.userId===o),le=b.length>0,te=({className:N="w-32"})=>u("div",{"data-skeleton":!0,className:`h-4 animate-pulse rounded bg-slate-200 dark:bg-slate-700 ${N}`});return z("div",{className:"relative space-y-4 text-slate-700 dark:text-slate-200",onDoubleClick:i,children:[!_&&e&&z("div",{className:"absolute top-0 right-2 z-10 flex items-center justify-end gap-3",children:[u("button",{type:"button",onClick:()=>S(!1),className:"text-lg leading-none transition-transform focus:outline-none active:scale-110",title:oe?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","data-detail-read-button":e.reportHubId,children:oe?u("span",{className:"text-slate-300 hover:text-blue-500",children:"\u2713"}):u(Be,{className:"hover:text-blue-600"})}),u("button",{type:"button",onClick:q,className:"text-lg leading-none transition-transform focus:outline-none active:scale-110",title:ie?"\u30B9\u30BF\u30FC\u3092\u5916\u3059":"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B","data-detail-star-button":e.reportHubId,children:ie?u("span",{className:"text-yellow-400",children:"\u2605"}):u("span",{className:"text-slate-300 hover:text-yellow-400",children:"\u2606"})}),W&&u("button",{type:"button",onClick:V,"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:u(jn,{className:"h-4 w-4 text-slate-300 hover:text-red-500"})})]}),z("div",{className:"flex items-baseline",children:[u("span",{className:"w-24 shrink-0 font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:g.subject}),u("div",{className:"flex-1 pr-20",children:_?u(te,{className:"w-3/4"}):u("span",{className:"fade-in animate-in text-sm duration-500",children:re(e?.subject)})})]}),z("div",{className:"flex items-baseline",children:[u("span",{className:"w-24 shrink-0 font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:g.customer}),u("div",{className:"flex-1",children:_?u(te,{className:"w-1/2"}):u("span",{className:"fade-in animate-in text-sm duration-500",children:re(e?.customerName)})})]}),z("div",{className:"space-y-2",children:[u("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:g.content}),u("div",{className:"min-h-22 rounded-lg bg-slate-50 p-3 text-sm leading-relaxed dark:bg-slate-800/40",children:_?z("div",{className:"space-y-2",children:[u(te,{className:"w-full"}),u(te,{className:"w-11/12"}),u(te,{className:"w-4/5"})]}):G?u("div",{className:"fade-in animate-in whitespace-pre-wrap duration-500",children:G}):u("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"})})]}),z("div",{className:"flex items-baseline",children:[u("span",{className:"w-24 shrink-0 font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:g.visitTime}),u("div",{className:"flex-1",children:_?u(te,{className:"w-1/3"}):z("span",{className:"fade-in animate-in text-sm duration-500",children:[re(e?.visitTimeFrom)," ",e?.visitTimeFrom&&e?.visitTimeTo?"-":""," ",re(e?.visitTimeTo)]})})]}),e&&z("div",{className:"fade-in animate-in space-y-2 border-slate-100 border-t pt-4 duration-500 dark:border-slate-800",children:[u("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:g.comments}),le&&u(Ye,{comments:b,reportHubId:e.reportHubId,businessDate:e.date??"",onDeleteComment:T,pendingDeleteId:L,onPendingDeleteIdChange:H,resolvedIdMap:D}),u(Ke,{reportHubId:e.reportHubId,businessDate:e.date??"",onAddComment:U})]})]})},Yn=({isOpen:e,selectedItem:t,onClose:r,autoMarkRead:n=!1,userId:a})=>{let s=X(null),o=X(null),{isBlocked:i,requestBlock:l,reset:m}=Fn(),{report:p,error:I,isLoading:g}=Ee(t?.reportHubId??-1,t?.businessDate??null),b=Un(e,t?{item:t,detail:{report:p,error:I,isLoading:g}}:null),w=b?.item??null;b?.detail??er;let{overlayRef:L,overlayStyle:H,attemptClose:D,isSwiping:S}=Bn({isOpen:e,onClose:r,isCloseBlocked:ge(()=>i,[i]),skipWhenTextSelected:!0}),E=mr(()=>D());return se(()=>{e?requestAnimationFrame(()=>o.current?.focus()):(s.current?.contains(document.activeElement)&&document.activeElement.blur(),m())},[e,m]),w?z("div",{ref:s,className:`fixed inset-0 z-50 flex touch-manipulation transition-[visibility] duration-200 sm:hidden ${e?"visible":"invisible"} ${e&&!S?"pointer-events-auto":"pointer-events-none"}`,"aria-hidden":!e,children:[u("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"}`,...E}),u("aside",{role:"dialog","aria-modal":"true","aria-label":"\u65E5\u5831\u8A73\u7D30",className:`relative ml-auto flex h-full w-full max-w-full transform touch-none select-none bg-white shadow-xl transition-transform duration-200 ease-out dark:bg-slate-900/95 ${e?"pointer-events-auto":"pointer-events-none"}`,ref:L,onKeyDown:k=>{k.key==="Escape"&&(k.preventDefault(),D())},style:H,children:z("div",{className:"flex h-full w-full flex-col gap-3 p-4",children:[u(_n.Provider,{value:{isBlocked:i,requestBlock:l},children:u(fr,{selectedItem:w,autoMarkRead:n,isActive:e,userId:a})}),u("div",{className:"mt-2 flex justify-start",children:u("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:()=>D(),children:"\u9589\u3058\u308B"})})]})})]}):null},Kn=e=>e?e.replace(/<br\s*\/?\s*>/gi,`
|
|
5
5
|
`).replace(/<\/p>/gi,`
|
|
6
|
-
`).replace(/<[^>]+>/g,"").split(/\r?\n/).map(t=>t.replace(/\u3000/g," ").trim()).filter(t=>t.length>0).slice(0,Zt):[],zn=({item:e,isActive:t,onSelect:r})=>{let{report:n,error:s,isLoading:a,isRefetching:o}=Te(e.reportHubId,e.businessDate),{toggleStar:p,toggleRead:u,removeStaleItem:d}=me(),g=Q(!1);o&&(g.current=!0),ae(()=>{!(n||a||o||s)&&g.current&&e.reportHubId>0&&d(e.reportHubId)},[n,a,o,s,e.reportHubId,d]);let N=lr(()=>r(e.reportHubId));if(s)return m("div",{className:"px-2 pb-3",style:{height:Fe},children:m("div",{className:"flex h-full items-center justify-center rounded-2xl border border-red-200 bg-red-50 p-4 text-red-700 text-sm",children:$("p",{children:["\u65E5\u5831 ",e.reportHubId.toLocaleString()," \u306E\u6982\u8981\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"]})})});if(a)return m(Un,{});if(!n)return m("div",{className:"px-2 pb-3",style:{height:Fe},children:m("div",{className:"flex h-full items-center justify-center rounded-2xl border border-slate-200 bg-slate-50 p-4 text-slate-500 text-sm dark:border-slate-700 dark:bg-slate-900/40 dark:text-slate-400",children:m("p",{children:"\u65E5\u5831\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093"})})});let i=jn(n.content).map((R,I)=>({line:R,key:`${e.reportHubId}-line-${I}`})),D=re(n.employeeName??n.author),w=ne(n.date),T=async R=>{R.stopPropagation();let I=!n.isStarred;try{await p(n.reportHubId,I,n.date??"")}catch{}},M=async R=>{R.stopPropagation();let I=!n.isRead;try{await u(n.reportHubId,I,n.date??"")}catch{}};return m("div",{className:"px-2 pb-3",style:{height:Fe},children:$("div",{"data-daily-report-button":e.reportHubId,className:`flex h-full w-full in-[[data-scrolling]]:transform-none cursor-pointer select-none flex-col rounded-2xl border in-[[data-scrolling]]:border-slate-200 bg-white p-4 text-left in-[[data-scrolling]]:shadow-sm shadow-sm in-[[data-scrolling]]:transition-none transition-all duration-200 hover:-translate-y-0.5 hover:border-blue-300 hover:shadow-lg dark:bg-slate-900/70 ${t?"border-blue-300 shadow-md ring-2 ring-blue-200 dark:border-blue-500/70 dark:ring-blue-500/40":"border-slate-200 dark:border-slate-700"}`,style:{touchAction:"manipulation"},role:"button",tabIndex:0,"aria-pressed":t,...N,children:[$("div",{className:"mb-3 flex items-center gap-3 text-slate-600 text-sm",children:[m("span",{className:"inline-flex shrink-0 items-center rounded-full bg-slate-100 px-3 py-1 font-semibold text-xs dark:bg-slate-800 dark:text-slate-200",children:m("span",{className:"whitespace-nowrap font-medium text-slate-900 dark:text-slate-100",children:w})}),m("span",{className:"inline-flex min-w-0 max-w-full items-center rounded-full bg-slate-100 px-3 py-1 font-semibold text-xs dark:bg-slate-800 dark:text-slate-200",children:m("span",{className:"truncate font-medium text-slate-900 dark:text-slate-100",children:D})}),$("div",{className:"ml-auto flex items-center gap-1.5",children:[m("button",{type:"button",title:n.isStarred?"\u30B9\u30BF\u30FC\u3092\u5916\u3059":"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B","data-list-star-button":e.reportHubId,onClick:T,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 dark:hover:bg-slate-700",children:n.isStarred?m(ir,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):m(ir,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),m("button",{type:"button",title:n.isRead?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","data-list-read-button":e.reportHubId,onClick: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:n.isRead?m(On,{className:"h-3.5 w-3.5 text-blue-500"}):m(Be,{className:"text-xs"})})]})]}),m("div",{className:"space-y-1 text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:i.length>0?i.map(({line:R,key:I})=>m("p",{className:"wrap-break-word line-clamp-1",children:R},I)):m("p",{children:"\u5185\u5BB9\u306F\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093"})})]})})};import{Suspense as Xn,useCallback as Jn,useEffect as Zn,useState as es}from"react";import{Await as ts,useRevalidator as rs}from"react-router";import{Plus as Wn}from"lucide-react";import{useEffect as Gn,useMemo as qn,useState as fr}from"react";import{useSearchParams as Yn}from"react-router";import*as je from"@radix-ui/react-switch";import*as pr from"react";import{jsx as mr}from"react/jsx-runtime";var mt=pr.forwardRef(({className:e,...t},r)=>mr(je.Root,{className:q("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:mr(je.Thumb,{className:q("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})}));mt.displayName=je.Root.displayName;import{Fragment as Qn,jsx as oe,jsxs as Re}from"react/jsx-runtime";var Kn="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",br=({dailyReportItems:e,userId:t})=>{let[r,n]=fr(!1),{title:s,renderHeader:a,showDevControls:o}=J(),{isSseEnabled:p,toggleSse:u,createReport:d,items:g}=me(),[N]=Yn(),[i,D]=fr(()=>g.length===0?null:g[0].reportHubId),w=async()=>{let R=N.get("businessDate"),I=new Date().toISOString().split("T")[0],k=await d(R||I);D(k)};Gn(()=>{localStorage.getItem("daily-report-auto-read")==="true"&&n(!0)},[]);let T=R=>{n(R),localStorage.setItem("daily-report-auto-read",String(R))},M=qn(()=>[{value:"list",label:"\u{1F4C4} List",content:oe(dr,{dailyReportItems:g,autoMarkRead:r,selectedReportHubId:i,onSelectItem:D,userId:t})},{value:"tree",label:"\u{1F333} Tree",content:oe("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:oe(or,{dailyReportItems:g,userId:t,selectedItemId:i,onSelectItem:D})}],[g,r,i,t]);return Re(Qn,{children:[a({title:s,annotation:Re("div",{className:"flex flex-wrap gap-2 leading-1",children:[Re("span",{children:["\u7DCF\u4EF6\u6570: ",g.length.toLocaleString()," \u4EF6"]}),Re("span",{children:["\u30C7\u30D0\u30A6\u30F3\u30B9: ",et," ms"]})]})}),oe("div",{className:"h-full bg-slate-50 dark:bg-slate-500",children:oe("div",{className:"flex h-full w-full max-w-6xl flex-1 flex-col p-1",children:Re(ut,{defaultValue:"list",className:"flex h-full flex-1 flex-col",children:[Re("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:[oe($e,{className:"scrollbar-none flex w-full touch-pan-x flex-nowrap overflow-x-auto overflow-y-hidden bg-transparent p-0",children:M.map(({value:R,label:I})=>oe(Ve,{value:R,className:Kn,children:I},R))}),Re("div",{className:"flex shrink-0 items-center space-x-1 px-2",children:[oe(we,{variant:"ghost",size:"icon",onClick:w,title:"\u65E5\u5831\u3092\u4F5C\u6210",children:oe(Wn,{className:"h-4 w-4"})}),o&&Re("div",{className:"hidden items-center space-x-1 sm:flex",children:[oe(mt,{id:"sse-mode",checked:p,onCheckedChange:u,className:"scale-75"}),oe(Ee,{htmlFor:"sse-mode",className:"cursor-pointer text-slate-500 text-xs",children:"\u8CFC\u8AAD"})]}),oe(mt,{id:"auto-read-mode",checked:r,onCheckedChange:T,className:"scale-75"}),oe(Ee,{htmlFor:"auto-read-mode",className:"cursor-pointer text-slate-500 text-xs",children:"\u81EA\u52D5\u65E2\u8AAD"})]})]}),M.map(({value:R,content:I})=>oe(He,{value:R,className:"mt-0 flex h-full min-h-0 flex-1 flex-col",children:I},R))]})})})]})};import{Fragment as yr,jsx as X,jsxs as ze}from"react/jsx-runtime";var ns=({dailyReportItems:e,userId:t,onResolved:r})=>(Zn(()=>{r(e)},[e,r]),X(br,{dailyReportItems:e,userId:t})),ss=()=>{let{title:e,renderHeader:t}=J(),{revalidate:r}=rs();return ze(yr,{children:[t({title:e,annotation:X("span",{className:"font-bold text-red-500",children:"Error"})}),X("div",{className:"h-full bg-slate-50 p-2",children:X("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:ze("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:[X("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"}),X("button",{type:"button",onClick:()=>r(),className:"rounded bg-slate-100 px-4 py-2 text-slate-700 text-sm hover:bg-slate-200 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-slate-700",children:"\u518D\u8AAD\u307F\u8FBC\u307F"})]})})})]})},gr=()=>{let{title:e,renderHeader:t}=J();return ze(yr,{children:[t({title:e,annotation:ze("div",{className:"flex flex-wrap gap-2 leading-none",children:[X("span",{children:"\u7DCF\u4EF6\u6570: \u8AAD\u307F\u8FBC\u307F\u4E2D..."}),ze("span",{children:["\u30C7\u30D0\u30A6\u30F3\u30B9: ",et," ms"]})]})}),X("div",{className:"h-full bg-slate-50 p-2",children:X("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:X("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..."})})})]})},as=({user:e,userId:t,dailyReportIds:r})=>{let[n,s]=es([]),a=Jn(o=>{s(o)},[]);return X(qt,{user:e,initialItems:n,userId:t,children:X(Xn,{fallback:X(gr,{}),children:r?X(ts,{resolve:r,errorElement:X(ss,{}),children:o=>{if(!o)throw new Error("Daily report ids resolve must not be null");return X(ns,{dailyReportItems:o,userId:t,onResolved:a})}}):X(gr,{})})})},Ao=({config:e,...t})=>X(Et,{config:e,children:X(as,{...t})});var Bo=({actionResult:e,actionStatus:t,currentUrl:r,defaultShouldRevalidate:n,formAction:s,formData:a,formEncType:o,formMethod:p,json:u,nextUrl:d,text:g})=>{if(!n)return!1;if(!(r.pathname===d.pathname&&r.search===d.search&&r.hash===d.hash))return n;if(a){let D=a.get("intent");if(D==="toggleRead"||D==="toggleStar"||D==="addComment"||D==="deleteComment"||D==="create"||D==="update"||D==="publish"||D==="delete")return!1}return e!==void 0||t!==void 0||s!==void 0||a!==void 0||o!==void 0||p!==void 0||u!==void 0||g!==void 0?n:!1},os=(e=Ke.apiBasePath)=>fetch(`${e}/ids`,{method:"GET",headers:{"Content-Type":"application/json"},cache:"no-cache"}).then(async t=>{if(!t.ok)throw new Error(`Failed to fetch daily report ids: ${t.status} ${t.statusText}`);return t}).then(async t=>t.json()).then(t=>{if(!(t.ids&&Array.isArray(t.ids)))throw new Error("Invalid daily report ids response");return t.ids}),Uo=e=>{let t=async r=>{let n=os(e?.apiBasePath);return{...await r.serverLoader(),dailyReportIds:n}};return t.hydrate=!0,t};export{We as BusinessDayThumbOverlay,et as DAILY_REPORT_FETCH_DEBOUNCE_MS,ht as DEFAULT_ITEM_HEIGHT,qt as DailyReportActionProvider,Ye as DailyReportCommentForm,Ct as DailyReportCommentItem,qe as DailyReportCommentList,Et as DailyReportConfigProvider,or as DailyReportDetailList,lt as DailyReportEditForm,dr as DailyReportList,ss as DailyReportLoadError,gr as DailyReportLoading,Ao as DailyReportPage,br as DailyReportResolvedContent,Qt as EMPTY_DETAIL,at as EMPTY_ITEM,nt as FAST_SCROLL_INERTIA_OPTIONS,rt as FAST_SCROLL_WHEEL_MULTIPLIER,Fe as ITEM_CONTAINER_HEIGHT,tt as ITEM_VERTICAL_PADDING,Zt as MAX_PREVIEW_LINES,st as PREFETCH_LOOKAHEAD,Kt as PREFETCH_MAX_DATES,Jt as SCROLL_BAR_WIDTH,er as TAP_SCROLL_CIRCLE_OPTIONS,Be as UnreadIndicator,ot as VIRTUAL_SCROLL_OVERSCAN_COUNT,Xt as WHEEL_RESET_TIMEOUT_MS,Le as acquireMutationLock,xe as applyDailyReportServerUpdates,Uo as createDailyReportClientLoader,Bo as dailyReportShouldRevalidate,Ke as defaultDailyReportClientConfig,Tt as defaultDailyReportFieldLabels,Xe as deleteDailyReportCache,os as fetchDailyReportIds,de as getCachedReport,Bt as registerRecentDeletion,Pe as releaseMutationLock,Ut as subscribeCacheReady,ce as updateDailyReportCache,me as useDailyReportActionContext,Je as useDailyReportComments,J as useDailyReportConfig,Te as useDailyReportDetail,Vt as useDailyReportPrefetch,Wt as useDailyReportSseConnection,Ze as useDynamicViewportHeight,Ft as writeCache};
|
|
6
|
+
`).replace(/<[^>]+>/g,"").split(/\r?\n/).map(t=>t.replace(/\u3000/g," ").trim()).filter(t=>t.length>0).slice(0,nr):[],Qn=({item:e,isActive:t,onSelect:r})=>{let{sourceTypeConfigs:n}=K(),{toggleStar:a,toggleRead:s,removeStaleItem:o}=me(),{report:i,error:l,isLoading:m,isRefetching:p}=Ee(e.reportHubId,e.businessDate),I=X(!1);p&&(I.current=!0),se(()=>{!(i||m||p||l)&&I.current&&e.reportHubId>0&&o(e.reportHubId)},[i,m,p,l,e.reportHubId,o]);let g=mr(()=>r(e.reportHubId));if(l)return u("div",{className:"px-2 pb-3",style:{height:Fe},children:u("div",{className:"flex h-full items-center justify-center rounded-2xl border border-red-200 bg-red-50 p-4 text-red-700 text-sm",children:z("p",{children:["\u65E5\u5831 ",e.reportHubId.toLocaleString()," \u306E\u6982\u8981\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"]})})});if(m)return u(Gn,{});if(!i)return u("div",{className:"px-2 pb-3",style:{height:Fe},children:u("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:u("p",{children:"\u65E5\u5831\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093"})})});let b=Kn(i.content).map((D,S)=>({line:D,key:`${e.reportHubId}-line-${S}`})),w=re(i.employeeName??i.author),T=ne(i.date),L=async D=>{D.stopPropagation();let S=!i.isStarred;try{await a(i.reportHubId,S,i.date??"")}catch{}},H=async D=>{D.stopPropagation();let S=!i.isRead;try{await s(i.reportHubId,S,i.date??"")}catch{}};return u("div",{className:"px-2 pb-3",style:{height:Fe},children:z("div",{"data-daily-report-button":e.reportHubId,className:`flex h-full w-full in-[[data-scrolling]]:transform-none cursor-pointer select-none flex-col rounded-2xl border in-[[data-scrolling]]:border-slate-200 bg-white p-4 text-left in-[[data-scrolling]]:shadow-sm shadow-sm in-[[data-scrolling]]:transition-none transition-all duration-200 hover:-translate-y-0.5 hover:border-blue-300 hover:shadow-lg dark:bg-slate-900/70 ${t?"border-blue-300 shadow-md ring-2 ring-blue-200 dark:border-blue-500/70 dark:ring-blue-500/40":"border-slate-200 dark:border-slate-700"}`,style:{touchAction:"manipulation"},role:"button",tabIndex:0,"aria-pressed":t,...g,children:[z("div",{className:"mb-3 flex items-center gap-3 text-slate-600 text-sm",children:[u("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:u("span",{className:"whitespace-nowrap font-medium text-slate-900 dark:text-slate-100",children:T})}),u("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:u("span",{className:"truncate font-medium text-slate-900 dark:text-slate-100",children:w})}),z("div",{className:"ml-auto flex items-center gap-1.5",children:[(()=>{let D=e.sourceType??i?.sourceType,S=Xe(D,n);return S?u("span",{className:j("inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",S.badgeClassName),children:S.label}):null})(),u("button",{type:"button",title:i.isStarred?"\u30B9\u30BF\u30FC\u3092\u5916\u3059":"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B","data-list-star-button":e.reportHubId,onClick:L,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 dark:hover:bg-slate-700",children:i.isStarred?u(ur,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):u(ur,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),u("button",{type:"button",title:i.isRead?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","data-list-read-button":e.reportHubId,onClick:H,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 dark:hover:bg-slate-700",children:i.isRead?u(Vn,{className:"h-3.5 w-3.5 text-blue-500"}):u(Be,{className:"text-xs"})})]})]}),u("div",{className:"space-y-1 text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:b.length>0?b.map(({line:D,key:S})=>u("p",{className:"wrap-break-word line-clamp-1",children:D},S)):u("p",{children:"\u5185\u5BB9\u306F\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093"})})]})})};import{Suspense as sa,useCallback as oa,useEffect as ia,useState as la}from"react";import{Await as da,useRevalidator as ca}from"react-router";import{Plus as Xn,RefreshCw as Jn,RotateCw as Zn}from"lucide-react";import{useEffect as ea,useMemo as ta,useState as hr}from"react";import{useSearchParams as ra}from"react-router";import*as je from"@radix-ui/react-switch";import*as yr from"react";import{jsx as gr}from"react/jsx-runtime";var ft=yr.forwardRef(({className:e,...t},r)=>gr(je.Root,{className:j("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:gr(je.Thumb,{className:j("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 aa,jsx as ee,jsxs as ye}from"react/jsx-runtime";var na="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",xr=({dailyReportItems:e,userId:t})=>{let[r,n]=hr(!1),{title:a,renderHeader:s,showDevControls:o}=K(),{isSseEnabled:i,toggleSse:l,createReport:m,items:p,refetchData:I,clearCacheAndRefetch:g}=me(),[b]=ra(),[w,T]=hr(()=>p.length===0?null:p[0].reportHubId),L=async()=>{await I()},H=async()=>{await g()},D=async()=>{let k=b.get("businessDate"),U=new Date().toISOString().split("T")[0],q=await m(k||U);T(q)};ea(()=>{localStorage.getItem("daily-report-auto-read")==="true"&&n(!0)},[]);let S=k=>{n(k),localStorage.setItem("daily-report-auto-read",String(k))},E=ta(()=>[{value:"list",label:"\u{1F4C4} List",content:ee(pr,{dailyReportItems:p,autoMarkRead:r,selectedReportHubId:w,onSelectItem:T,userId: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(cr,{dailyReportItems:p,userId:t,selectedItemId:w,onSelectItem:T})}],[p,r,w,t]);return ye(aa,{children:[s({title:a,annotation:ye("div",{className:"flex flex-wrap gap-2 leading-1",children:[ye("span",{children:["\u7DCF\u4EF6\u6570: ",p.length.toLocaleString()," \u4EF6"]}),ye("span",{children:["\u30C7\u30D0\u30A6\u30F3\u30B9: ",rt," ms"]})]})}),ee("div",{className:"h-full bg-slate-50 dark:bg-slate-500",children:ee("div",{className:"flex h-full w-full max-w-6xl flex-1 flex-col p-1",children:ye(pt,{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($e,{className:"scrollbar-none flex w-full touch-pan-x flex-nowrap overflow-x-auto overflow-y-hidden bg-transparent p-0",children:E.map(({value:k,label:U})=>ee(Ve,{value:k,className:na,children:U},k))}),ye("div",{className:"flex shrink-0 items-center space-x-1 px-2",children:[ee(ve,{variant:"ghost",size:"icon",onClick:D,title:"\u65E5\u5831\u3092\u4F5C\u6210",children:ee(Xn,{className:"h-4 w-4"})}),o&&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(ft,{id:"sse-mode",checked:i,onCheckedChange:l,className:"scale-75"}),ee(He,{htmlFor:"sse-mode",className:"cursor-pointer text-slate-600 text-xs dark:text-slate-300",title:"\u958B\u767A\u74B0\u5883\u306E\u307F: Real-time SSE \u8CFC\u8AAD\u5207\u308A\u66FF\u3048",children:"\u8CFC\u8AAD"})]}),ye(ve,{variant:"ghost",size:"sm",onClick:L,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(Zn,{className:"mr-1 h-3 w-3"}),"\u30EA\u30ED\u30FC\u30C9"]}),ye(ve,{variant:"ghost",size:"sm",onClick:H,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(Jn,{className:"mr-1 h-3 w-3"}),"\u30AD\u30E3\u30C3\u30B7\u30E5\u30AF\u30EA\u30A2"]})]}),ee(ft,{id:"auto-read-mode",checked:r,onCheckedChange:S,className:"scale-75"}),ee(He,{htmlFor:"auto-read-mode",className:"cursor-pointer text-slate-500 text-xs",children:"\u81EA\u52D5\u65E2\u8AAD"})]})]}),E.map(({value:k,content:U})=>ee(Me,{value:k,className:"mt-0 flex h-full min-h-0 flex-1 flex-col",children:U},k))]})})})]})};import{Fragment as Rr,jsx as J,jsxs as ze}from"react/jsx-runtime";var ua=({dailyReportItems:e,userId:t,onResolved:r})=>(ia(()=>{r(e)},[e,r]),J(xr,{dailyReportItems:e,userId:t})),ma=()=>{let{title:e,renderHeader:t}=K(),{revalidate:r}=ca();return ze(Rr,{children:[t({title:e,annotation:J("span",{className:"font-bold text-red-500",children:"Error"})}),J("div",{className:"h-full bg-slate-50 p-2",children:J("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:ze("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:[J("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"}),J("button",{type:"button",onClick:()=>r(),className:"rounded bg-slate-100 px-4 py-2 text-slate-700 text-sm hover:bg-slate-200 dark:bg-slate-800 dark:text-slate-300 dark:hover:bg-slate-700",children:"\u518D\u8AAD\u307F\u8FBC\u307F"})]})})})]})},vr=()=>{let{title:e,renderHeader:t}=K();return ze(Rr,{children:[t({title:e,annotation:ze("div",{className:"flex flex-wrap gap-2 leading-none",children:[J("span",{children:"\u7DCF\u4EF6\u6570: \u8AAD\u307F\u8FBC\u307F\u4E2D..."}),ze("span",{children:["\u30C7\u30D0\u30A6\u30F3\u30B9: ",rt," ms"]})]})}),J("div",{className:"h-full bg-slate-50 p-2",children:J("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:J("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..."})})})]})},pa=({user:e,userId:t,dailyReportIds:r})=>{let[n,a]=la([]),s=oa(o=>{a(o)},[]);return J(Xt,{user:e,initialItems:n,userId:t,children:J(sa,{fallback:J(vr,{}),children:r?J(da,{resolve:r,errorElement:J(ma,{}),children:o=>{if(!o)throw new Error("Daily report ids resolve must not be null");return J(ua,{dailyReportItems:o,userId:t,onResolved:s})}}):J(vr,{})})})},Go=({config:e,...t})=>J(Pt,{config:e,children:J(pa,{...t})});var Qo=({actionResult:e,actionStatus:t,currentUrl:r,defaultShouldRevalidate:n,formAction:a,formData:s,formEncType:o,formMethod:i,json:l,nextUrl:m,text:p})=>{if(!n)return!1;if(!(r.pathname===m.pathname&&r.search===m.search&&r.hash===m.hash))return n;if(s){let b=s.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||a!==void 0||s!==void 0||o!==void 0||i!==void 0||l!==void 0||p!==void 0?n:!1},fa=(e=Qe.apiBasePath)=>fetch(`${e}/ids`,{method:"GET",headers:{"Content-Type":"application/json"},cache:"no-cache"}).then(async t=>{if(!t.ok)throw new Error(`Failed to fetch daily report ids: ${t.status} ${t.statusText}`);return t}).then(async t=>t.json()).then(t=>{if(!(t.ids&&Array.isArray(t.ids)))throw new Error("Invalid daily report ids response");return t.ids}),Xo=e=>{let t=async r=>{let n=fa(e?.apiBasePath);return{...await r.serverLoader(),dailyReportIds:n}};return t.hydrate=!0,t};export{Ge as BusinessDayThumbOverlay,rt as DAILY_REPORT_FETCH_DEBOUNCE_MS,Rt as DEFAULT_ITEM_HEIGHT,Xt as DailyReportActionProvider,P as DailyReportCache,Ke as DailyReportCommentForm,St as DailyReportCommentItem,Ye as DailyReportCommentList,Pt as DailyReportConfigProvider,cr as DailyReportDetailList,ct as DailyReportEditForm,pr as DailyReportList,ma as DailyReportLoadError,vr as DailyReportLoading,Go as DailyReportPage,xr as DailyReportResolvedContent,er as EMPTY_DETAIL,it as EMPTY_ITEM,st as FAST_SCROLL_INERTIA_OPTIONS,at as FAST_SCROLL_WHEEL_MULTIPLIER,Fe as ITEM_CONTAINER_HEIGHT,nt as ITEM_VERTICAL_PADDING,nr as MAX_PREVIEW_LINES,ot as PREFETCH_LOOKAHEAD,Zt as PREFETCH_MAX_DATES,rr as SCROLL_BAR_WIDTH,ar as TAP_SCROLL_CIRCLE_OPTIONS,Be as UnreadIndicator,lt as VIRTUAL_SCROLL_OVERSCAN_COUNT,tr as WHEEL_RESET_TIMEOUT_MS,Le as acquireMutationLock,Re as applyDailyReportServerUpdates,Vt as clearDailyReportCache,Xo as createDailyReportClientLoader,Qo as dailyReportShouldRevalidate,Qe as defaultDailyReportClientConfig,Ht as defaultDailyReportFieldLabels,Ze as deleteDailyReportCache,fa as fetchDailyReportIds,de as getCachedReport,jt as registerRecentDeletion,Ae as releaseMutationLock,Xe as resolveSourceTypeConfig,zt as subscribeCacheReady,ce as updateDailyReportCache,me as useDailyReportActionContext,et as useDailyReportComments,K as useDailyReportConfig,Ee as useDailyReportDetail,Gt as useDailyReportPrefetch,Kt as useDailyReportSseConnection,tt as useDynamicViewportHeight,$t as writeCache};
|
|
7
7
|
//# sourceMappingURL=client.mjs.map
|