@aiquants/daily-report 0.1.1 → 0.3.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 +21 -0
- package/dist/client.d.mts +10 -3
- package/dist/client.d.ts +10 -3
- 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 +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/server.mjs +2 -2
- package/dist/server.mjs.map +1 -1
- package/dist/{sse-schema-yl5AaSsj.d.mts → sse-schema-DKUjXMW3.d.mts} +34 -1
- package/dist/{sse-schema-CK7cUnEo.d.ts → sse-schema-DO9Qe8XF.d.ts} +34 -1
- package/dist/{types-CVhwLhSN.d.mts → types-DrjeK3_G.d.mts} +1 -0
- package/dist/{types-CVhwLhSN.d.ts → types-DrjeK3_G.d.ts} +1 -0
- package/package.json +3 -3
- package/src/client/components/daily-report-detail-list.tsx +20 -10
- package/src/client/components/daily-report-list.tsx +13 -1
- package/src/client/config-context.tsx +9 -0
- package/src/client/contexts/daily-report-action-context.tsx +1 -0
- package/src/server/service.ts +2 -0
- package/src/shared/sse-schema.ts +1 -0
- package/src/shared/types.ts +1 -0
package/README.md
CHANGED
|
@@ -134,6 +134,27 @@ export default function Route() {
|
|
|
134
134
|
|
|
135
135
|
詳細/一覧カードの見出し (`id` / `businessDate` / `author` / `visitTime` / `createdAt` / `updatedAt` / `updatedBy` / `category` / `categoryInfo` / `creationCategory` / `customer` / `subject` / `content` / `interviewers` / `comments` / `tabArticle` / `tabRelations` / `relationsEmpty`) はすべて DI。**パッケージは中立な英語 (`Business date` / `Customer` / `Content` 等) のみを既定で同梱**し、各見出しの言語・表記は消費アプリが `fieldLabels` で上書きする。これによりパッケージ本体は業務ドメイン固有の表記を持たない。部分指定した分だけ既定へ上書きされる (`DailyReportConfigProvider` が 1 段深くマージ)。
|
|
136
136
|
|
|
137
|
+
### 外部ソースバッジ設定 (`sourceTypeConfigs`)
|
|
138
|
+
|
|
139
|
+
外部ソースから取り込まれた日報の表示 (ラベル名やバッジの CSS クラス) を `sourceTypeConfigs` で上書き設定できます。これにより、パッケージ自身は特定の外部サービス ( NI 日報や Kintone など) の名前やデザインに依存せず、ホストアプリケーションから柔軟に表示をカスタマイズできます。
|
|
140
|
+
|
|
141
|
+
```tsx
|
|
142
|
+
sourceTypeConfigs: {
|
|
143
|
+
Internal: {
|
|
144
|
+
label: "オリジナル",
|
|
145
|
+
badgeClassName: "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400",
|
|
146
|
+
},
|
|
147
|
+
NI: {
|
|
148
|
+
label: "NI 日報",
|
|
149
|
+
badgeClassName: "bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400",
|
|
150
|
+
},
|
|
151
|
+
Kintone: {
|
|
152
|
+
label: "Kintone",
|
|
153
|
+
badgeClassName: "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400",
|
|
154
|
+
},
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
137
158
|
## Realtime architecture
|
|
138
159
|
|
|
139
160
|
1. 変更系サービスは `invalidate → epoch increment → SSE publish` の順で Redis Stream (`daily-report:sse-stream`) へ発行。
|
package/dist/client.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactNode, Context, RefObject } from 'react';
|
|
3
3
|
import { ScrollBarThumbOverlayRenderProps, ScrollPaneInertiaOptions, ScrollBarTapCircleOptions } from '@aiquants/virtualscroll';
|
|
4
|
-
import { U as UIComment, D as DailyReportSseMessage } from './sse-schema-
|
|
5
|
-
import { D as DailyReportItem, a as DailyReportDetail, b as DailyReportUser } from './types-
|
|
4
|
+
import { U as UIComment, D as DailyReportSseMessage } from './sse-schema-DKUjXMW3.mjs';
|
|
5
|
+
import { D as DailyReportItem, a as DailyReportDetail, b as DailyReportUser } from './types-DrjeK3_G.mjs';
|
|
6
6
|
import { ShouldRevalidateFunction } from 'react-router';
|
|
7
7
|
import 'zod';
|
|
8
8
|
|
|
@@ -122,6 +122,10 @@ type DailyReportFieldLabels = {
|
|
|
122
122
|
tabRelations: string;
|
|
123
123
|
relationsEmpty: string;
|
|
124
124
|
};
|
|
125
|
+
type SourceTypeConfig = {
|
|
126
|
+
label: string;
|
|
127
|
+
badgeClassName?: string;
|
|
128
|
+
};
|
|
125
129
|
/** クライアント層の設定一式。 */
|
|
126
130
|
type DailyReportClientConfig = {
|
|
127
131
|
/** 画面タイトル (ヘッダーへ渡す)。 */
|
|
@@ -134,6 +138,8 @@ type DailyReportClientConfig = {
|
|
|
134
138
|
draftLabelName: string;
|
|
135
139
|
/** 詳細/一覧カードのフィールド見出しラベル。既定は中立英語。アプリが自ドメインの表記を注入する。 */
|
|
136
140
|
fieldLabels: DailyReportFieldLabels;
|
|
141
|
+
/** 外部ソース区分ごとのバッジ表示設定。 */
|
|
142
|
+
sourceTypeConfigs?: Record<string, SourceTypeConfig>;
|
|
137
143
|
/** ヘッダー描画スロット。アプリのヘッダーコンポーネントを差し込む。 */
|
|
138
144
|
renderHeader: (props: DailyReportHeaderProps) => ReactNode;
|
|
139
145
|
/** 開発向けコントロール (SSE 購読トグル等) を表示するか。 */
|
|
@@ -145,6 +151,7 @@ type DailyReportClientConfig = {
|
|
|
145
151
|
*/
|
|
146
152
|
type DailyReportClientConfigInput = Partial<Omit<DailyReportClientConfig, "fieldLabels">> & {
|
|
147
153
|
fieldLabels?: Partial<DailyReportFieldLabels>;
|
|
154
|
+
sourceTypeConfigs?: Record<string, SourceTypeConfig>;
|
|
148
155
|
};
|
|
149
156
|
/** 中立英語のフィールドラベル既定 (ドメイン非依存)。 */
|
|
150
157
|
declare const defaultDailyReportFieldLabels: DailyReportFieldLabels;
|
|
@@ -446,4 +453,4 @@ declare const SCROLL_BAR_WIDTH = 8;
|
|
|
446
453
|
declare const MAX_PREVIEW_LINES = 3;
|
|
447
454
|
declare const TAP_SCROLL_CIRCLE_OPTIONS: ScrollBarTapCircleOptions;
|
|
448
455
|
|
|
449
|
-
export { BusinessDayThumbOverlay, DAILY_REPORT_FETCH_DEBOUNCE_MS, DEFAULT_ITEM_HEIGHT, DailyReportActionProvider, type DailyReportClientConfig, type DailyReportClientConfigInput, DailyReportCommentForm, DailyReportCommentItem, DailyReportCommentList, DailyReportConfigProvider, DailyReportDetailList, type DailyReportDetailResource, DailyReportEditForm, type DailyReportFieldLabels, type DailyReportHeaderProps, DailyReportList, DailyReportLoadError, DailyReportLoading, DailyReportPage, type DailyReportPageProps, DailyReportResolvedContent, EMPTY_DETAIL, EMPTY_ITEM, FAST_SCROLL_INERTIA_OPTIONS, FAST_SCROLL_WHEEL_MULTIPLIER, ITEM_CONTAINER_HEIGHT, ITEM_VERTICAL_PADDING, MAX_PREVIEW_LINES, PREFETCH_LOOKAHEAD, PREFETCH_MAX_DATES, SCROLL_BAR_WIDTH, TAP_SCROLL_CIRCLE_OPTIONS, UnreadIndicator, VIRTUAL_SCROLL_OVERSCAN_COUNT, WHEEL_RESET_TIMEOUT_MS, acquireMutationLock, applyDailyReportServerUpdates, createDailyReportClientLoader, dailyReportShouldRevalidate, defaultDailyReportClientConfig, defaultDailyReportFieldLabels, deleteDailyReportCache, fetchDailyReportIds, getCachedReport, registerRecentDeletion, releaseMutationLock, subscribeCacheReady, updateDailyReportCache, useDailyReportActionContext, useDailyReportComments, useDailyReportConfig, useDailyReportDetail, useDailyReportPrefetch, useDailyReportSseConnection, useDynamicViewportHeight, writeCache };
|
|
456
|
+
export { BusinessDayThumbOverlay, DAILY_REPORT_FETCH_DEBOUNCE_MS, DEFAULT_ITEM_HEIGHT, DailyReportActionProvider, type DailyReportClientConfig, type DailyReportClientConfigInput, DailyReportCommentForm, DailyReportCommentItem, DailyReportCommentList, DailyReportConfigProvider, DailyReportDetailList, type DailyReportDetailResource, DailyReportEditForm, type DailyReportFieldLabels, type DailyReportHeaderProps, DailyReportList, DailyReportLoadError, DailyReportLoading, DailyReportPage, type DailyReportPageProps, DailyReportResolvedContent, EMPTY_DETAIL, EMPTY_ITEM, FAST_SCROLL_INERTIA_OPTIONS, FAST_SCROLL_WHEEL_MULTIPLIER, ITEM_CONTAINER_HEIGHT, ITEM_VERTICAL_PADDING, MAX_PREVIEW_LINES, PREFETCH_LOOKAHEAD, PREFETCH_MAX_DATES, SCROLL_BAR_WIDTH, type SourceTypeConfig, TAP_SCROLL_CIRCLE_OPTIONS, UnreadIndicator, VIRTUAL_SCROLL_OVERSCAN_COUNT, WHEEL_RESET_TIMEOUT_MS, acquireMutationLock, applyDailyReportServerUpdates, createDailyReportClientLoader, dailyReportShouldRevalidate, defaultDailyReportClientConfig, defaultDailyReportFieldLabels, deleteDailyReportCache, fetchDailyReportIds, getCachedReport, registerRecentDeletion, releaseMutationLock, subscribeCacheReady, updateDailyReportCache, useDailyReportActionContext, useDailyReportComments, useDailyReportConfig, useDailyReportDetail, useDailyReportPrefetch, useDailyReportSseConnection, useDynamicViewportHeight, writeCache };
|
package/dist/client.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactNode, Context, RefObject } from 'react';
|
|
3
3
|
import { ScrollBarThumbOverlayRenderProps, ScrollPaneInertiaOptions, ScrollBarTapCircleOptions } from '@aiquants/virtualscroll';
|
|
4
|
-
import { U as UIComment, D as DailyReportSseMessage } from './sse-schema-
|
|
5
|
-
import { D as DailyReportItem, a as DailyReportDetail, b as DailyReportUser } from './types-
|
|
4
|
+
import { U as UIComment, D as DailyReportSseMessage } from './sse-schema-DO9Qe8XF.js';
|
|
5
|
+
import { D as DailyReportItem, a as DailyReportDetail, b as DailyReportUser } from './types-DrjeK3_G.js';
|
|
6
6
|
import { ShouldRevalidateFunction } from 'react-router';
|
|
7
7
|
import 'zod';
|
|
8
8
|
|
|
@@ -122,6 +122,10 @@ type DailyReportFieldLabels = {
|
|
|
122
122
|
tabRelations: string;
|
|
123
123
|
relationsEmpty: string;
|
|
124
124
|
};
|
|
125
|
+
type SourceTypeConfig = {
|
|
126
|
+
label: string;
|
|
127
|
+
badgeClassName?: string;
|
|
128
|
+
};
|
|
125
129
|
/** クライアント層の設定一式。 */
|
|
126
130
|
type DailyReportClientConfig = {
|
|
127
131
|
/** 画面タイトル (ヘッダーへ渡す)。 */
|
|
@@ -134,6 +138,8 @@ type DailyReportClientConfig = {
|
|
|
134
138
|
draftLabelName: string;
|
|
135
139
|
/** 詳細/一覧カードのフィールド見出しラベル。既定は中立英語。アプリが自ドメインの表記を注入する。 */
|
|
136
140
|
fieldLabels: DailyReportFieldLabels;
|
|
141
|
+
/** 外部ソース区分ごとのバッジ表示設定。 */
|
|
142
|
+
sourceTypeConfigs?: Record<string, SourceTypeConfig>;
|
|
137
143
|
/** ヘッダー描画スロット。アプリのヘッダーコンポーネントを差し込む。 */
|
|
138
144
|
renderHeader: (props: DailyReportHeaderProps) => ReactNode;
|
|
139
145
|
/** 開発向けコントロール (SSE 購読トグル等) を表示するか。 */
|
|
@@ -145,6 +151,7 @@ type DailyReportClientConfig = {
|
|
|
145
151
|
*/
|
|
146
152
|
type DailyReportClientConfigInput = Partial<Omit<DailyReportClientConfig, "fieldLabels">> & {
|
|
147
153
|
fieldLabels?: Partial<DailyReportFieldLabels>;
|
|
154
|
+
sourceTypeConfigs?: Record<string, SourceTypeConfig>;
|
|
148
155
|
};
|
|
149
156
|
/** 中立英語のフィールドラベル既定 (ドメイン非依存)。 */
|
|
150
157
|
declare const defaultDailyReportFieldLabels: DailyReportFieldLabels;
|
|
@@ -446,4 +453,4 @@ declare const SCROLL_BAR_WIDTH = 8;
|
|
|
446
453
|
declare const MAX_PREVIEW_LINES = 3;
|
|
447
454
|
declare const TAP_SCROLL_CIRCLE_OPTIONS: ScrollBarTapCircleOptions;
|
|
448
455
|
|
|
449
|
-
export { BusinessDayThumbOverlay, DAILY_REPORT_FETCH_DEBOUNCE_MS, DEFAULT_ITEM_HEIGHT, DailyReportActionProvider, type DailyReportClientConfig, type DailyReportClientConfigInput, DailyReportCommentForm, DailyReportCommentItem, DailyReportCommentList, DailyReportConfigProvider, DailyReportDetailList, type DailyReportDetailResource, DailyReportEditForm, type DailyReportFieldLabels, type DailyReportHeaderProps, DailyReportList, DailyReportLoadError, DailyReportLoading, DailyReportPage, type DailyReportPageProps, DailyReportResolvedContent, EMPTY_DETAIL, EMPTY_ITEM, FAST_SCROLL_INERTIA_OPTIONS, FAST_SCROLL_WHEEL_MULTIPLIER, ITEM_CONTAINER_HEIGHT, ITEM_VERTICAL_PADDING, MAX_PREVIEW_LINES, PREFETCH_LOOKAHEAD, PREFETCH_MAX_DATES, SCROLL_BAR_WIDTH, TAP_SCROLL_CIRCLE_OPTIONS, UnreadIndicator, VIRTUAL_SCROLL_OVERSCAN_COUNT, WHEEL_RESET_TIMEOUT_MS, acquireMutationLock, applyDailyReportServerUpdates, createDailyReportClientLoader, dailyReportShouldRevalidate, defaultDailyReportClientConfig, defaultDailyReportFieldLabels, deleteDailyReportCache, fetchDailyReportIds, getCachedReport, registerRecentDeletion, releaseMutationLock, subscribeCacheReady, updateDailyReportCache, useDailyReportActionContext, useDailyReportComments, useDailyReportConfig, useDailyReportDetail, useDailyReportPrefetch, useDailyReportSseConnection, useDynamicViewportHeight, writeCache };
|
|
456
|
+
export { BusinessDayThumbOverlay, DAILY_REPORT_FETCH_DEBOUNCE_MS, DEFAULT_ITEM_HEIGHT, DailyReportActionProvider, type DailyReportClientConfig, type DailyReportClientConfigInput, DailyReportCommentForm, DailyReportCommentItem, DailyReportCommentList, DailyReportConfigProvider, DailyReportDetailList, type DailyReportDetailResource, DailyReportEditForm, type DailyReportFieldLabels, type DailyReportHeaderProps, DailyReportList, DailyReportLoadError, DailyReportLoading, DailyReportPage, type DailyReportPageProps, DailyReportResolvedContent, EMPTY_DETAIL, EMPTY_ITEM, FAST_SCROLL_INERTIA_OPTIONS, FAST_SCROLL_WHEEL_MULTIPLIER, ITEM_CONTAINER_HEIGHT, ITEM_VERTICAL_PADDING, MAX_PREVIEW_LINES, PREFETCH_LOOKAHEAD, PREFETCH_MAX_DATES, SCROLL_BAR_WIDTH, type SourceTypeConfig, TAP_SCROLL_CIRCLE_OPTIONS, UnreadIndicator, VIRTUAL_SCROLL_OVERSCAN_COUNT, WHEEL_RESET_TIMEOUT_MS, acquireMutationLock, applyDailyReportServerUpdates, createDailyReportClientLoader, dailyReportShouldRevalidate, defaultDailyReportClientConfig, defaultDailyReportFieldLabels, deleteDailyReportCache, fetchDailyReportIds, getCachedReport, registerRecentDeletion, releaseMutationLock, subscribeCacheReady, updateDailyReportCache, useDailyReportActionContext, useDailyReportComments, useDailyReportConfig, useDailyReportDetail, useDailyReportPrefetch, useDailyReportSseConnection, useDynamicViewportHeight, writeCache };
|
package/dist/client.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";var Ir=Object.create;var lt=Object.defineProperty;var Cr=Object.getOwnPropertyDescriptor;var Nr=Object.getOwnPropertyNames;var Sr=Object.getPrototypeOf,Tr=Object.prototype.hasOwnProperty;var kr=(e,t)=>{for(var r in t)lt(e,r,{get:t[r],enumerable:!0})},Ut=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Nr(t))!Tr.call(e,s)&&s!==r&<(e,s,{get:()=>t[s],enumerable:!(n=Cr(t,s))||n.enumerable});return e};var ke=(e,t,r)=>(r=e!=null?Ir(Sr(e)):{},Ut(t||!e||!e.__esModule?lt(r,"default",{value:e,enumerable:!0}):r,e)),Er=e=>Ut(lt({},"__esModule",{value:!0}),e);var vn={};kr(vn,{BusinessDayThumbOverlay:()=>Ue,DAILY_REPORT_FETCH_DEBOUNCE_MS:()=>Xe,DEFAULT_ITEM_HEIGHT:()=>ct,DailyReportActionProvider:()=>St,DailyReportCommentForm:()=>Ve,DailyReportCommentItem:()=>yt,DailyReportCommentList:()=>$e,DailyReportConfigProvider:()=>vt,DailyReportDetailList:()=>Pt,DailyReportEditForm:()=>st,DailyReportList:()=>At,DailyReportLoadError:()=>Dr,DailyReportLoading:()=>Ft,DailyReportPage:()=>gn,DailyReportResolvedContent:()=>_t,EMPTY_DETAIL:()=>kt,EMPTY_ITEM:()=>rt,FAST_SCROLL_INERTIA_OPTIONS:()=>et,FAST_SCROLL_WHEEL_MULTIPLIER:()=>Ze,ITEM_CONTAINER_HEIGHT:()=>Oe,ITEM_VERTICAL_PADDING:()=>Je,MAX_PREVIEW_LINES:()=>Lt,PREFETCH_LOOKAHEAD:()=>tt,PREFETCH_MAX_DATES:()=>Tt,SCROLL_BAR_WIDTH:()=>Ht,TAP_SCROLL_CIRCLE_OPTIONS:()=>Mt,UnreadIndicator:()=>Fe,VIRTUAL_SCROLL_OVERSCAN_COUNT:()=>nt,WHEEL_RESET_TIMEOUT_MS:()=>Et,acquireMutationLock:()=>Me,applyDailyReportServerUpdates:()=>xe,createDailyReportClientLoader:()=>hn,dailyReportShouldRevalidate:()=>yn,defaultDailyReportClientConfig:()=>je,defaultDailyReportFieldLabels:()=>ht,deleteDailyReportCache:()=>We,fetchDailyReportIds:()=>wr,getCachedReport:()=>oe,registerRecentDeletion:()=>Rt,releaseMutationLock:()=>Pe,subscribeCacheReady:()=>Dt,updateDailyReportCache:()=>ie,useDailyReportActionContext:()=>le,useDailyReportComments:()=>Ke,useDailyReportConfig:()=>Z,useDailyReportDetail:()=>Ie,useDailyReportPrefetch:()=>wt,useDailyReportSseConnection:()=>Ct,useDynamicViewportHeight:()=>Qe,writeCache:()=>xt});module.exports=Er(vn);var dt=require("react/jsx-runtime"),Ue=({orientation:e,thumbCenter:t,label:r,isDragging:n,isTapScrollActive:s,isWheelScrollActive:a})=>r.trim()&&(n||s||a)?(0,dt.jsx)("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:(0,dt.jsx)("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:(0,dt.jsx)("span",{className:"whitespace-nowrap font-semibold text-slate-800 dark:text-slate-100",children:r.trim()})})}):null;var Wt=require("@heroicons/react/24/outline"),Gt=require("react");var $t=(e,t,r)=>{let n=e.map((a,l)=>({id:`legacy-${l}`,authorName:a.name||"Unknown",content:a.text||"",isMine:!1,color:a.color||void 0,isLegacy:!0})),s=t.map(a=>({id:a.id,authorName:a.userName,content:a.content,createdAt:a.createdAt,isMine:r?a.userId===r:a.isMine,isLegacy:!1}));return[...n,...s]},Vt=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 ne=e=>{if(!e)return"-";let t=e.trim();return t===""?"-":t},se=e=>{if(!e)return"-";if(typeof e!="string")return e instanceof Date?se(e.toISOString()):String(e);let t=e.trim();if(t==="")return"-";let r=new Date(t);if(Number.isNaN(r.getTime()))return t;let n=r.getFullYear(),s=String(r.getMonth()+1).padStart(2,"0"),a=String(r.getDate()).padStart(2,"0");if(t.includes(":")||t.includes("T")){let f=String(r.getHours()).padStart(2,"0"),p=String(r.getMinutes()).padStart(2,"0"),u=String(r.getSeconds()).padStart(2,"0");return`${n}-${s}-${a}T${f}:${p}:${u}`}return`${n}-${s}-${a}`};var jt=require("clsx"),zt=require("tailwind-merge");function Q(...e){return(0,zt.twMerge)((0,jt.clsx)(e))}var me=require("react/jsx-runtime"),Hr=(e,t,r)=>t===e||typeof e=="number"&&e<0&&r?.get(e)===t||typeof t=="number"&&t<0&&r?.get(t)===e,yt=({comment:e,reportHubId:t,businessDate:r,onOptimisticDelete:n,pendingDeleteId:s,onPendingDeleteIdChange:a,onTrashClick:l,resolvedIdMap:f})=>{let[p,u]=(0,Gt.useState)(!1),y=Hr(e.id,s,f),S=d=>{d.stopPropagation(),d.preventDefault(),a(null),u(!0),typeof e.id=="number"&&n(e.id)};return(0,me.jsxs)("li",{"data-comment-id":e.id,className:Q("group relative rounded-xl border border-slate-200 bg-white p-3",e.isMine&&"border-blue-200 bg-blue-50",p&&"hidden",y?"z-50":"z-0 hover:z-10"),children:[(0,me.jsxs)("div",{className:"mb-1 flex items-center justify-between",children:[(0,me.jsx)("div",{className:Q("font-semibold text-xs",Vt(e.color)),children:ne(e.authorName)}),(0,me.jsxs)("div",{className:"flex items-center gap-2",children:[e.createdAt&&(0,me.jsx)("div",{className:"text-[10px] text-slate-400",children:se(e.createdAt)}),e.isMine&&!e.isLegacy&&(0,me.jsxs)("div",{className:"relative",children:[(0,me.jsx)("button",{type:"button",className:Q("transition-colors",y?"text-red-500":"text-slate-400 hover:text-red-500"),title:"\u524A\u9664","aria-label":"\u524A\u9664",onClick:d=>l(d,e.id),children:(0,me.jsx)(Wt.TrashIcon,{className:"h-4 w-4"})}),y&&(0,me.jsx)("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:S,children:"\u524A\u9664\u3059\u308B"})]})]})]}),(0,me.jsx)("div",{className:"whitespace-pre-wrap text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:e.content})]})};var he=require("react");var ye=require("react/jsx-runtime"),Lr=(e,t)=>{let r=(0,he.useRef)(null);return(0,he.useEffect)(()=>{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]),(0,he.useEffect)(()=>()=>{r.current&&clearTimeout(r.current)},[]),{handleTrashClick:(0,he.useCallback)((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])}},$e=({comments:e,reportHubId:t,businessDate:r,onDeleteComment:n,pendingDeleteId:s,onPendingDeleteIdChange:a,resolvedIdMap:l})=>{let{handleTrashClick:f}=Lr(s,a);return e.length===0?null:(0,ye.jsx)("ul",{className:"mb-3 space-y-2",children:e.map(p=>(0,ye.jsx)(yt,{comment:p,reportHubId:t,businessDate:r,onOptimisticDelete:n||(()=>{}),pendingDeleteId:s,onPendingDeleteIdChange:a,onTrashClick:f,resolvedIdMap:l},p.id))})},Ve=({reportHubId:e,businessDate:t,onAddComment:r})=>{let[n,s]=(0,he.useState)(!1),a=(0,he.useRef)(null);return(0,ye.jsxs)("form",{className:"flex gap-2",ref:a,onSubmit:async f=>{f.preventDefault();let u=new FormData(f.currentTarget).get("content")?.trim();if(u&&r){s(!0),a.current?.reset();try{await r(u)}catch{if(a.current){let y=a.current.elements.namedItem("content");y&&(y.value=u)}}finally{s(!1)}}},children:[(0,ye.jsx)("input",{type:"hidden",name:"intent",value:"addComment"}),(0,ye.jsx)("input",{type:"hidden",name:"reportHubId",value:e}),(0,ye.jsx)("input",{type:"hidden",name:"businessDate",value:t}),(0,ye.jsx)("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"}),(0,ye.jsx)("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"})]})};var ut=require("@aiquants/virtualscroll"),Ne=require("lucide-react"),L=require("react");var He=require("react"),Ee=require("react/jsx-runtime"),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."},je={title:"Daily Reports",apiBasePath:"/daily_report/api",ssePath:"/sse/daily_report/updates",draftLabelName:"draft",fieldLabels:ht,renderHeader:({title:e,annotation:t})=>(0,Ee.jsxs)("header",{className:"flex flex-wrap items-baseline justify-between gap-2 px-2 py-1",children:[(0,Ee.jsx)("span",{className:"text-nowrap text-slate-700 text-sm dark:text-slate-200",children:e}),t?(0,Ee.jsx)("span",{className:"text-slate-600 text-xs dark:text-slate-300",children:t}):null]}),showDevControls:!1},qt=(0,He.createContext)(je),vt=({config:e,children:t})=>{let r=(0,He.useMemo)(()=>({...je,...e,fieldLabels:{...ht,...e?.fieldLabels??{}}}),[e]);return(0,Ee.jsx)(qt.Provider,{value:r,children:t})},Z=()=>(0,He.useContext)(qt);var F=require("react");var Le=(e,t,r=console)=>{let n=s=>typeof s=="string"?[`${t} ${s}`]:[t,s];return{debug:(s,...a)=>{e<=0&&r.debug(...n(s),...a)},info:(s,...a)=>{e<=1&&r.info(...n(s),...a)},warn:(s,...a)=>{e<=2&&r.warn(...n(s),...a)},error:(s,...a)=>{e<=3&&r.error(...n(s),...a)}}};var pe=require("react");var Mr=/^\d{4}-\d{2}-\d{2}$/,Pr=/^\d{4}\/\d{2}\/\d{2}$/,Yt=e=>e<10?`0${e}`:`${e}`,Kt=e=>{if(Number.isNaN(e.getTime()))return null;let t=e.getFullYear(),r=Yt(e.getMonth()+1),n=Yt(e.getDate());return`${t}-${r}-${n}`},ze=e=>{if(e==null)return null;if(e instanceof Date)return Kt(e);let t=e.trim();if(t==="")return null;if(Mr.test(t))return t;if(Pr.test(t))return t.replaceAll("/","-");let r=new Date(t);return Kt(r)};var Xt=Le(1,"use-daily-report"),Jt=(e,t)=>{if(typeof window>"u")return t;let r=window[e];return typeof r=="number"&&!Number.isNaN(r)?r:t},Zt=Jt("__DAILY_REPORT_CACHE_TTL__",3e5),Ar=Jt("__DAILY_REPORT_CACHE_REVIVE_MS__",6e4),Or=120,O={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=>{O.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=ze(e.date),s=n?this.lists.get(n):null;if(s&&n){let l=s.data.some(f=>f.reportHubId===e.reportHubId)?s.data.map(f=>f.reportHubId===e.reportHubId?e:f):[e,...s.data];this.lists.set(n,{...s,data:l})}}this.notify(e.reportHubId)},update(e,t,r=!0){let n=this.reports.get(e);if(n?.data){if(r&&t.updatedAt&&n.data.updatedAt&&new Date(t.updatedAt).getTime()<new Date(n.data.updatedAt).getTime()){Xt.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=ze(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,l)=>new Date(a.createdAt).getTime()-new Date(l.createdAt).getTime())})}return r},cacheMany(e,t,r=0){if(!e.length)return[];this.prune();let n=Date.now(),s=n+Zt;for(let[l,f]of this.recentDeletes)n-f>1e4&&this.recentDeletes.delete(l);let a=e.map(l=>{if(this.locks.has(l.reportHubId))return l;let f=this.lastMutations.get(l.reportHubId);if(f&&r>0&&f>r)return this.reports.get(l.reportHubId)?.data??l;let p=this.reports.get(l.reportHubId)?.data,u=this.merge(l,p);return this.set(u,s,!1),u});return t&&this.lists.set(t,{data:a,expiresAt:s}),a}},xt=(e,t,r=!0)=>O.set(e,t,r),oe=(e,t)=>O.getReport(e,t?.ignoreExpiry),ie=(e,t)=>O.update(e,t),We=(e,t)=>O.delete(e,t),Me=e=>{O.locks.add(e),O.lastMutations.set(e,Date.now())},Pe=e=>{O.locks.delete(e),O.lastMutations.set(e,Date.now())},Rt=e=>O.recentDeletes.set(e,Date.now()),Dt=(e,t)=>{let r=n=>{n===e&&t()};return O.listeners.add(r),()=>{O.listeners.delete(r)}},xe=(e,t)=>{O.prune(),O.set(t,Date.now()+Zt)},_r=async(e,t)=>{let r=O.getReport(t);if(r)return r;let n=O.pendingReports.get(t);if(n)return n;let s=Date.now(),a=fetch(`${e}/report?reportHubId=${t}`,{cache:"no-cache"}).then(l=>l.ok?l.json():Promise.reject(`HTTP ${l.status}`)).then(l=>{if(l.error)throw new Error(l.error.message);let f=l.report;return O.cacheMany([f],null,s)[0]}).finally(()=>O.pendingReports.delete(t));return O.pendingReports.set(t,a),a},er=async(e,t)=>{let r=O.getList(t);if(r)return r;let n=O.pendingLists.get(t);if(n)return n;let s=Date.now(),a=fetch(`${e}/business-date?businessDate=${encodeURIComponent(t)}`,{cache:"no-cache"}).then(l=>l.ok?l.json():Promise.reject(`HTTP ${l.status}`)).then(l=>{if(l.error)throw new Error(l.error.message);return O.cacheMany(l.reports??[],t,s)}).finally(()=>O.pendingLists.delete(t));return O.pendingLists.set(t,a),a},Ie=(e,t)=>{let{apiBasePath:r}=Z(),[n,s]=(0,pe.useState)(()=>O.getReport(e)),[a,l]=(0,pe.useState)(null),[f,p]=(0,pe.useState)(!1),[u,y]=(0,pe.useState)(!1),S=(0,pe.useRef)({id:e,token:0});return(0,pe.useEffect)(()=>{let d=D=>{if(D===e){let w=O.getReport(e,!0);s(w)}};return O.listeners.add(d),()=>{O.listeners.delete(d)}},[e]),(0,pe.useEffect)(()=>{let d=ze(t),D=(S.current.token||0)+1;if(S.current={id:e,token:D},e<=0){s(null),l(e===0?new Error("Invalid ID"):null),p(!1),y(!1);return}let w=O.getReport(e,!0),k=!1;if(w)k=!O.isValid(O.reports.get(e)?.expiresAt??0);else if(d){let I=O.getList(d,!0)?.find(M=>M.reportHubId===e);I&&(w=I,k=!O.isValid(O.lists.get(d)?.expiresAt??0))}if(s(w),w&&!k){l(null),p(!1),y(!1);return}p(!w),y(!0);let P=setTimeout(async()=>{if(S.current.token===D)try{let R=null;d?R=(await er(r,d)).find(M=>M.reportHubId===e)??null:R=await _r(r,e),S.current.token===D&&(s(R),l(null))}catch(R){S.current.token===D&&l(R instanceof Error?R:new Error("Load failed"))}finally{S.current.token===D&&(p(!1),y(!1))}},Or);return()=>clearTimeout(P)},[e,t,r]),{report:n,error:a,isLoading:f,isRefetching:u}},wt=()=>{let{apiBasePath:e}=Z();return(0,pe.useCallback)(t=>{let r=ze(t);r&&!O.getList(r)&&er(e,r).catch(n=>Xt.warn("Prefetch error",r,n))},[e])};var nr=require("react");var b=require("zod"),Fr=b.z.object({name:b.z.string(),affiliation:b.z.string().nullable()}),Br=b.z.object({name:b.z.string().nullable(),text:b.z.string().nullable(),color:b.z.string().nullable()}),Ur=b.z.object({id:b.z.number(),name:b.z.string(),color:b.z.string().nullable()}),tr=b.z.object({id:b.z.number(),userId:b.z.string(),userName:b.z.string(),content:b.z.string(),createdAt:b.z.string(),isMine:b.z.boolean()}),It=b.z.object({reportHubId:b.z.number(),date:b.z.string().nullable(),createdAt:b.z.string().nullable(),author:b.z.string(),userId:b.z.string(),employeeName:b.z.string().nullable(),updatedBy:b.z.string().nullable(),updatedAt:b.z.string().nullable(),category:b.z.string().nullable(),creationCategory:b.z.string().nullable(),visitTimeFrom:b.z.string().nullable(),visitTimeTo:b.z.string().nullable(),customerName:b.z.string().nullable(),interviewers:b.z.array(Fr),subject:b.z.string().nullable(),content:b.z.string().nullable(),comments:b.z.array(Br),isRead:b.z.boolean(),isStarred:b.z.boolean(),labels:b.z.array(Ur),commentItems:b.z.array(tr)}),$r=b.z.object({type:b.z.literal("connected")}),Vr=b.z.object({type:b.z.literal("status-update"),reportHubId:b.z.number(),statusType:b.z.enum(["star","read"]),value:b.z.boolean(),clientTempId:b.z.string(),recipientRawUserId:b.z.number().optional()}),jr=b.z.object({type:b.z.literal("comment-add"),reportHubId:b.z.number(),comment:tr,clientTempId:b.z.string()}),zr=b.z.object({type:b.z.literal("comment-delete"),reportHubId:b.z.number(),commentId:b.z.number(),clientTempId:b.z.string()}),Wr=b.z.object({type:b.z.literal("report-create"),reportHubId:b.z.number(),report:It,clientTempId:b.z.string(),recipientRawUserId:b.z.number().optional()}),Gr=b.z.object({type:b.z.literal("report-update"),reportHubId:b.z.number(),report:It,clientTempId:b.z.string(),recipientRawUserId:b.z.number().optional()}),qr=b.z.object({type:b.z.literal("report-publish"),reportHubId:b.z.number(),report:It,clientTempId:b.z.string()}),Yr=b.z.object({type:b.z.literal("report-delete"),reportHubId:b.z.number(),clientTempId:b.z.string()}),rr=b.z.discriminatedUnion("type",[$r,Vr,jr,zr,Wr,Gr,qr,Yr]);var Ge=Le(1,"daily-report-sse-connection"),Ct=({isSseEnabled:e,onMessage:t})=>{let{ssePath:r}=Z();(0,nr.useEffect)(()=>{if(!e)return;let n=null,s=null,a=0,l,f=()=>{n?.close(),n=new EventSource(`${r}${l?`?lastEventId=${l}`:""}`),n.onopen=()=>{a=0,Ge.info("SSE Connected")},n.onmessage=p=>{p.lastEventId&&(l=p.lastEventId);try{let u=JSON.parse(p.data),y=rr.safeParse(u);if(!y.success){Ge.error("SSE Validation Error",y.error.format());return}if(y.data.type==="connected"){Ge.info("SSE Subscribe Ready");return}t(y.data)}catch(u){Ge.error("SSE Parse Error",u)}},n.onerror=p=>{n?.close(),n=null,a++;let u=Math.min(2e3*2**(a-1),3e4);Ge.error(`SSE Error. Retrying in ${u}ms (attempt ${a})...`,p),s=setTimeout(f,u)}};return f(),()=>{n&&n.close(),s&&clearTimeout(s)}},[e,t,r])};var sr=require("react/jsx-runtime"),qe=Le(1,"daily-report-action-context"),Nt=globalThis.__DailyReportActionContext??(0,F.createContext)(null);globalThis.__DailyReportActionContext=Nt;var le=()=>{let e=(0,F.useContext)(Nt);if(!e)throw new Error("useDailyReportActionContext must be used within a DailyReportActionProvider");return e},Ye=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"},St=({children:e,user:t,initialItems:r=[],userId:n})=>{let{apiBasePath:s,draftLabelName:a}=Z(),l=(0,F.useRef)(new Map),f=(0,F.useRef)(new Map),p=(0,F.useRef)(new Map),u=(0,F.useRef)(new Map),y=(0,F.useRef)(new Map),[S,d]=(0,F.useState)(0),[D,w]=(0,F.useState)(r),[k,P]=(0,F.useState)(!!n),R=(0,F.useRef)(new Map),I=(0,F.useRef)(new Set),M=(0,F.useRef)(new Set),E=(0,F.useRef)(new Set),A=(0,F.useRef)(new Map),q=(0,F.useRef)(()=>{}),z=(0,F.useCallback)((v,c)=>{let h=A.current,m=h.get(v);if(m){m.messages.push(c);return}let g={messages:[c],unsubscribe:()=>{},timer:setTimeout(()=>{let x=h.get(v);x&&(x.unsubscribe(),h.delete(v),qe.warn(`[SSE Queue] Expired: reportHubId=${v}, dropped=${x.messages.length} messages`))},3e4)};g.unsubscribe=Dt(v,()=>{let x=h.get(v);if(x&&oe(v,{ignoreExpiry:!0})){x.unsubscribe(),clearTimeout(x.timer),h.delete(v),qe.info(`[SSE Queue] Replaying ${x.messages.length} messages for reportHubId=${v}`);for(let C of x.messages)q.current(C)}}),h.set(v,g)},[]),Y=v=>{E.current.add(v),setTimeout(()=>{E.current.delete(v)},3e4)},ee=(0,F.useCallback)(v=>!!v&&E.current.has(v),[]),W=(0,F.useCallback)((v,c)=>{w(h=>{let m=c??h.find(C=>C.reportHubId===v)?.businessDate??null;return(h.some(C=>C.reportHubId===v)?h.map(C=>C.reportHubId===v?{...C,businessDate:m}:C):[{reportHubId:v,businessDate:m},...h]).sort((C,_)=>{let $=C.businessDate??"";return(_.businessDate??"").localeCompare($)})})},[]),ce=()=>{n&&P(v=>!v)},ue=(0,F.useCallback)(v=>{M.current.add(v),w(c=>c.filter(h=>h.reportHubId!==v))},[]);(0,F.useEffect)(()=>{let v=new Set(r.map(c=>c.reportHubId));for(let c of M.current)v.has(c)||M.current.delete(c);w(c=>{let h=new Map;for(let m of r)M.current.has(m.reportHubId)||h.set(m.reportHubId,m);for(let m of c)h.has(m.reportHubId)||M.current.has(m.reportHubId)||h.set(m.reportHubId,m);return Array.from(h.values()).sort((m,g)=>{let x=m.businessDate?new Date(m.businessDate).getTime():0;return(g.businessDate?new Date(g.businessDate).getTime():0)-x})})},[r]);let G=(0,F.useCallback)(v=>{if(!ee(v.clientTempId))switch(v.type){case"comment-add":{let{comment:c,reportHubId:h}=v,m=oe(h,{ignoreExpiry:!0});if(m){if(m.commentItems.some($=>$.id===c.id))return;let g=!1,x=l.current.get(h);if(x){for(let[$,ae]of x.entries())if(ae===c.content){x.delete($),y.current.set($,c.id),g=!0;break}}let C={...c,userName:c.userName||(g?Ye(t):"Unknown"),createdAt:c.createdAt||new Date().toISOString(),isMine:g},_={...m,commentItems:[...m.commentItems,C].sort(($,ae)=>new Date($.createdAt).getTime()-new Date(ae.createdAt).getTime())};xe(h,_),Me(h),Pe(h),d($=>$+1)}else z(h,v);break}case"comment-delete":{let{commentId:c,reportHubId:h}=v,m=oe(h,{ignoreExpiry:!0});if(m){let g={...m,commentItems:m.commentItems.filter(x=>x.id!==c)};xe(h,g),Me(h),Pe(h),d(x=>x+1)}else z(h,v);break}case"status-update":{let{statusType:c,value:h,reportHubId:m}=v,g=oe(m,{ignoreExpiry:!0});if(c==="star")if(p.current.get(m)===h&&p.current.delete(m),g){let x={...g,isStarred:h};xe(m,x),d(C=>C+1)}else z(m,v);else if(c==="read")if(u.current.get(m)===h&&u.current.delete(m),g){let x={...g,isRead:h};xe(m,x),d(C=>C+1)}else z(m,v);break}case"report-delete":{let{reportHubId:c}=v;I.current.delete(c),M.current.add(c);let h=A.current.get(c);h&&(h.unsubscribe(),clearTimeout(h.timer),A.current.delete(c));let m=oe(c,{ignoreExpiry:!0});m?.date&&(We(c,m.date),d(g=>g+1)),w(g=>g.filter(x=>x.reportHubId!==c));break}case"report-create":case"report-update":case"report-publish":{let{report:c}=v;xe(c.reportHubId,c),(v.type==="report-create"||v.type==="report-publish")&&(I.current.add(c.reportHubId),W(c.reportHubId,c.date)),d(h=>h+1);break}}},[ee,W,t,z]);q.current=G,(0,F.useEffect)(()=>()=>{for(let v of A.current.values())v.unsubscribe(),clearTimeout(v.timer);A.current.clear()},[]),Ct({isSseEnabled:k,onMessage:G});let J=async(v,c,h,m,g,x)=>{x?.skipLock||Me(v),g.onOptimistic?.();let C=m.clientTempId||crypto.randomUUID();Y(C);let _=new FormData;_.append("intent",c),_.append("reportHubId",String(v)),_.append("businessDate",h),_.append("operationTimestamp",String(Date.now())),_.append("clientTempId",C);for(let[$,ae]of Object.entries(m))$!=="clientTempId"&&_.append($,ae);try{let $=await fetch(`${s}/action`,{method:"POST",body:_,headers:{Accept:"application/json"}});if(!$.ok){let Bt=new Error(`Failed to ${c}`);throw Object.assign(Bt,{status:$.status}),Bt}let ae=await $.json();if(ae.status!=="OK"||c!=="create"&&String(ae.reportHubId)!==String(v))throw new Error(`Invalid response for ${c}`);if(typeof ae.clientTempId!="string"||ae.clientTempId!==C)throw new Error(`Invalid clientTempId for ${c}`);return await g.onSuccess?.(ae)}catch($){throw qe.error(`${c} failed:`,$),g.onFailure?.(),$}finally{x?.keepLock||x?.skipLock||Pe(v)}},re=async(v,c,h)=>{let m=Number(v),g=-1*Date.now(),x=J(m,"addComment",h,{content:c,clientTempId:String(g)},{onOptimistic:()=>{l.current.has(m)||l.current.set(m,new Map),l.current.get(m)?.set(g,c),d(C=>C+1)},onSuccess:C=>{if(!C.newComment)throw new Error("No new comment returned");let _=C.newComment.id;y.current.set(g,_),l.current.get(m)?.delete(g);let $=oe(m,{ignoreExpiry:!0});return $&&!$.commentItems.some(ae=>ae.id===_)&&ie(m,{commentItems:[...$.commentItems,{...C.newComment,id:_,isMine:!0,userName:Ye(t)}],updatedAt:C.updatedAt}),_},onFailure:()=>{l.current.get(m)?.delete(g)}},{skipLock:!0}).finally(()=>R.current.delete(g));R.current.set(g,x),await x},T=async(v,c,h)=>{let m=Number(v);f.current.has(m)||f.current.set(m,new Set),f.current.get(m)?.add(c),d(x=>x+1);let g=c;if(c<0){let x=y.current.get(c);if(x!==void 0)g=x;else{let C=R.current.get(c);if(!C)return;try{g=await C}catch{return}}}await J(m,"deleteComment",h,{commentId:String(g)},{onSuccess:x=>{let C=typeof x.deletedCommentId=="string"?Number(x.deletedCommentId):g,_=oe(m,{ignoreExpiry:!0});_&&(ie(m,{commentItems:_.commentItems.filter($=>$.id!==C),updatedAt:x.updatedAt}),Rt(C)),f.current.get(m)?.delete(c)},onFailure:()=>{f.current.get(m)?.delete(c)}},{skipLock:!0})},V=async(v,c,h)=>{let m=Number(v);await J(m,"toggleStar",h,{isStarred:String(c)},{onOptimistic:()=>{ie(m,{isStarred:c}),p.current.set(m,c),d(g=>g+1)},onSuccess:g=>{g.updatedStatus&&typeof g.updatedStatus.isStarred=="boolean"&&oe(m,{ignoreExpiry:!0})&&(ie(m,{isStarred:g.updatedStatus.isStarred,updatedAt:g.updatedAt}),d(C=>C+1)),p.current.delete(m)},onFailure:()=>{ie(m,{isStarred:!c}),p.current.delete(m)}},{skipLock:!0})},X=async(v,c,h)=>{let m=Number(v);await J(m,"toggleRead",h,{isRead:String(c)},{onOptimistic:()=>{ie(m,{isRead:c}),u.current.set(m,c),d(g=>g+1)},onSuccess:g=>{g.updatedStatus&&typeof g.updatedStatus.isRead=="boolean"&&oe(m,{ignoreExpiry:!0})&&(ie(m,{isRead:g.updatedStatus.isRead,updatedAt:g.updatedAt}),d(C=>C+1)),u.current.delete(m)},onFailure:()=>{ie(m,{isRead:!c}),u.current.delete(m)}},{skipLock:!0})},K=(0,F.useRef)(X);K.current=X;let ve=(0,F.useCallback)((v,c,h)=>K.current(v,c,h),[]),H=async v=>{let c=-1*Date.now(),h=new Date().toISOString(),m={reportHubId:c,date:v,createdAt:h,author:Ye(t),userId:t?.id??"unknown",employeeName:Ye(t),updatedBy:Ye(t),updatedAt:h,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:[]};xt(m,Date.now()+3e5,!1),w(g=>[{reportHubId:c,businessDate:v},...g]);try{let g=await J(0,"create",v,{clientTempId:String(c)},{onSuccess:C=>C});if(g.clientTempId&&g.clientTempId!==String(c))throw qe.warn(`[createReport] ID mismatch. req=${c}, res=${g.clientTempId}`),new Error("Optimistic ID mismatch");let x=Number(g.reportHubId);return Me(x),g.report&&(xe(x,g.report),d(C=>C+1)),w(C=>C.some(_=>_.reportHubId===x)?C.filter(_=>_.reportHubId!==c):C.map(_=>_.reportHubId===c?{..._,reportHubId:x}:_)),setTimeout(()=>Pe(x),1e3),x}catch(g){throw qe.error("[createReport] Failed or mismatched",g),w(x=>x.filter(C=>C.reportHubId!==c)),g}},U=async(v,c,h)=>{let m=Number(v);await J(m,"update",h,{...c.title&&{title:c.title},...c.content&&{content:c.content}},{onSuccess:()=>{let g=oe(m,{ignoreExpiry:!0});g&&(ie(m,{subject:c.title??g.subject,content:c.content??g.content}),d(x=>x+1))}})},te=async(v,c)=>{let h=Number(v),m=oe(h,{ignoreExpiry:!0}),g=m?.labels||[];await J(h,"publish",c,{},{onOptimistic:()=>{if(m){let x=m.labels.filter(C=>C.name!==a);ie(h,{labels:x}),d(C=>C+1)}},onSuccess:x=>{x.report&&(xe(h,x.report),d(C=>C+1))},onFailure:()=>{ie(h,{labels:g}),d(x=>x+1)}},{skipLock:!0})},fe=async(v,c)=>{let h=Number(v),m=D.find(g=>g.reportHubId===h);M.current.add(h),w(g=>g.filter(x=>x.reportHubId!==h));try{await J(h,"delete",c,{},{onSuccess:g=>{We(h,c)}})}catch(g){if(g.status===404){We(h,c);return}M.current.delete(h),m&&w(C=>C.some(_=>_.reportHubId===h)?C:[m,...C].sort((_,$)=>($.businessDate??"").localeCompare(_.businessDate??"")))}};return(0,sr.jsx)(Nt.Provider,{value:{user:t,pendingAddCommentIds:l,pendingDeleteCommentIds:f,pendingStarUpdates:p,pendingReadUpdates:u,resolvedIdMap:y,version:S,items:D,isSseEnabled:k,toggleSse:ce,addComment:re,deleteComment:T,toggleStar:V,toggleRead:ve,createReport:H,updateReport:U,publishReport:te,deleteReport:fe,removeStaleItem:ue},children:e})};var Re=require("react");var Ke=(e,t,r)=>{let{pendingAddCommentIds:n,pendingDeleteCommentIds:s,resolvedIdMap:a,version:l,addComment:f,deleteComment:p}=le(),[u,y]=(0,Re.useState)(null),S=(0,Re.useCallback)(k=>e&&p(e.reportHubId,k,e.date??""),[e,p]),d=(0,Re.useCallback)(k=>e&&t?f(e.reportHubId,k,e.date??""):Promise.resolve(),[e,t,f]),D=(0,Re.useRef)([]);return{uiComments:(0,Re.useMemo)(()=>{if(!e)return[];let k=$t(e.comments,e.commentItems,r),P=s.current.get(e.reportHubId);P?.size&&(k=k.filter(I=>!P.has(I.id)));let R=n.current.get(e.reportHubId);if(R?.size&&t){let I=new Set(k.map(E=>E.id)),M=t.displayName?.trim()||(t.name?`${t.name.familyName??""} ${t.name.givenName??""}`.trim():"")||t.emails?.[0]?.value||"Unknown";for(let[E,A]of R){if(P?.has(E)||I.has(E))continue;let q=a.current.get(E);q&&I.has(q)||k.some(z=>z.isMine&&z.content===A&&typeof z.id=="number"&&z.id>0)||k.push({id:E,authorName:M,content:A,createdAt:new Date().toISOString(),isMine:!0,isLegacy:!1})}}return JSON.stringify(k)===JSON.stringify(D.current)?D.current:(D.current=k,k)},[e,t,r,s,n,a,l]),handleAddComment:d,handleDeleteComment:S,pendingDeleteId:u,setPendingDeleteId:y,resolvedIdMap:a.current}};var Ae=require("react"),Qe=(e,t)=>{let{enableMutationObserver:r=!1,bottomGap:n=4,minFallbackHeight:s=240}=t??{},[a,l]=(0,Ae.useState)(600),f=(0,Ae.useCallback)(()=>{if(typeof window>"u")return;let p=e.current;if(!p||p.offsetParent===null&&window.getComputedStyle(p).position!=="fixed")return;let u=W=>Number.parseFloat(W)||0,{top:y}=p.getBoundingClientRect(),S=p.parentElement?.getBoundingClientRect(),d=window.getComputedStyle(document.documentElement),D=u(d.getPropertyValue("--footer-height")),w=u(d.getPropertyValue("--header-height")),k=u(d.getPropertyValue("--scrollbar-height")),P=window.getComputedStyle(p),R=u(P.marginBottom),I=u(P.paddingBottom),M=window.innerHeight-D-k-n,E=S?Math.min(S.bottom,M):M,A=S?Math.max(S.top,w):w,q=Math.max(y,A),z=E-q-R-I,Y=Number.isFinite(z)?Math.floor(z):0,ee=Y>0?Y:s;ee>0&&Number.isFinite(ee)&&l(W=>Math.abs(W-ee)>1?ee:W)},[n,e,s]);return(0,Ae.useEffect)(()=>{if(typeof window>"u")return;let p=null,u=null,y=null,S=null,d=()=>{p!==null&&window.cancelAnimationFrame(p),p=window.requestAnimationFrame(()=>{f()})};d(),u=window.setTimeout(()=>{d()},150);let D=e.current;return typeof ResizeObserver<"u"&&D&&(y=new ResizeObserver(()=>{d()}),y.observe(D),D.parentElement&&y.observe(D.parentElement)),r&&typeof MutationObserver<"u"&&(S=new MutationObserver(()=>{d()}),S.observe(document.documentElement,{attributes:!0,attributeFilter:["style"]})),window.addEventListener("resize",d),()=>{p!==null&&window.cancelAnimationFrame(p),u!==null&&window.clearTimeout(u),window.removeEventListener("resize",d),y?.disconnect(),S?.disconnect()}},[r,f,e]),{viewportHeight:a,updateViewportHeight:f}};var ar=require("@aiquants/virtualscroll"),Xe=180,ct=160,Je=6,Oe=ct-Je,Ze=.8,et={maxVelocity:18,deceleration:.0018,startVelocityThreshold:.03},tt=20,Tt=6,rt={reportHubId:-1,businessDate:null},kt={report:null,error:null,isLoading:!1,isRefetching:!1},Et=240,nt=15,Ht=8,Lt=3,Mt={enabled:!0,renderVisual:ar.tapScrollCircleSampleVisual,maxSpeedCurve:{exponentialSteepness:7.5,exponentialScale:14,easedOffset:.18},maxSpeedMultiplier:18};var De=require("react");var or=require("@radix-ui/react-slot"),ir=require("class-variance-authority"),lr=ke(require("react"));var dr=require("react/jsx-runtime"),Kr=(0,ir.cva)("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"}}),Ce=lr.forwardRef(({className:e,variant:t,size:r,asChild:n=!1,...s},a)=>(0,dr.jsx)(n?or.Slot:"button",{className:Q(Kr({variant:t,size:r,className:e})),ref:a,...s}));Ce.displayName="Button";var ur=require("react/jsx-runtime");function cr({className:e,type:t,...r}){return(0,ur.jsx)("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})}var mr=ke(require("@radix-ui/react-label"));var pr=require("react/jsx-runtime");function _e({className:e,...t}){return(0,pr.jsx)(mr.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})}var br=require("react/jsx-runtime");function fr({className:e,...t}){return(0,br.jsx)("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})}var de=require("react/jsx-runtime"),st=({report:e,onCancel:t,onPublishSuccess:r})=>{let{updateReport:n,publishReport:s}=le(),[a,l]=(0,De.useState)(e.subject??""),[f,p]=(0,De.useState)(e.content??""),[u,y]=(0,De.useState)(!1),S=(0,De.useRef)(e.reportHubId);(0,De.useEffect)(()=>{e.reportHubId!==S.current&&(l(e.subject??""),p(e.content??""),S.current=e.reportHubId)},[e.reportHubId,e.subject,e.content]);let d=async()=>{y(!0);try{await n(e.reportHubId,{title:a,content:f},e.date??"")}finally{y(!1)}},D=async()=>{y(!0);try{await n(e.reportHubId,{title:a,content:f},e.date??""),await s(e.reportHubId,e.date??""),r?.()}finally{y(!1)}};return(0,de.jsxs)("div",{className:"space-y-6 p-1",children:[(0,de.jsxs)("div",{className:"space-y-2",children:[(0,de.jsx)(_e,{htmlFor:`report-title-${e.reportHubId}`,children:"\u30BF\u30A4\u30C8\u30EB"}),(0,de.jsx)(cr,{id:`report-title-${e.reportHubId}`,value:a,onChange:w=>l(w.target.value),placeholder:"\u65E5\u5831\u306E\u30BF\u30A4\u30C8\u30EB\u3092\u5165\u529B",disabled:u})]}),(0,de.jsxs)("div",{className:"space-y-2",children:[(0,de.jsx)(_e,{htmlFor:`report-content-${e.reportHubId}`,children:"\u5185\u5BB9"}),(0,de.jsx)(fr,{id:`report-content-${e.reportHubId}`,value:f,onChange:w=>p(w.target.value),placeholder:"\u65E5\u5831\u306E\u5185\u5BB9\u3092\u5165\u529B",className:"min-h-50",disabled:u})]}),(0,de.jsxs)("div",{className:"flex justify-end gap-2",children:[t&&(0,de.jsx)(Ce,{variant:"outline",onClick:t,disabled:u,children:"\u30AD\u30E3\u30F3\u30BB\u30EB"}),(0,de.jsx)(Ce,{variant:"secondary",onClick:d,disabled:u,children:"\u4FDD\u5B58"}),(0,de.jsx)(Ce,{onClick:D,disabled:u,children:"\u516C\u958B"})]})]})};var gr=require("react/jsx-runtime"),Fe=({className:e})=>(0,gr.jsx)("span",{className:Q("text-blue-500",e),children:"\u25CF"});var i=require("react/jsx-runtime"),Qr=(e,t,r)=>{(0,L.useEffect)(()=>{let n=e.current;if(!n)return;let s=new ResizeObserver(()=>{r(t,n.offsetHeight)});return s.observe(n),()=>s.disconnect()},[t,r,e])},Xr=({itemId:e,onHeightMeasured:t,children:r})=>{let n=(0,L.useRef)(null);return Qr(n,e,t),(0,i.jsx)("div",{ref:n,className:"px-2 pb-3","data-daily-report-button":e,children:r})},Jr=e=>e.affiliation?.trim()?`${e.name}\uFF08${e.affiliation}\uFF09`:e.name,Pt=({dailyReportItems:e,userId:t,selectedItemId:r,onSelectItem:n})=>{let[s,a]=(0,L.useState)(new Map),l=(0,L.useRef)(null),f=(0,L.useRef)(null),{viewportHeight:p,updateViewportHeight:u}=Qe(l,{enableMutationObserver:!0}),y=wt(),[S,d]=(0,L.useState)(""),[D,w]=(0,L.useState)(!1),k=(0,L.useRef)(null),P=(0,L.useRef)(null),R=(0,L.useRef)(e);R.current=e;let I=(0,L.useRef)(null);(0,L.useEffect)(()=>{if(r!=null&&f.current){let T=e.findIndex(V=>V.reportHubId===r);if(T!==-1){if(I.current?.id===r&&I.current?.index===T)return;f.current.scrollToIndex(T,{align:"top"}),I.current={id:r,index:T}}}else I.current=null},[r,e]);let M=(0,L.useRef)(n);M.current=n,(0,L.useEffect)(()=>{if(f.current){let T=document.querySelector(".test-daily-report-detail-list");if(T){let V=f.current,X=Object.assign({},V,{findReportIndex:K=>R.current.findIndex(ve=>ve.reportHubId===K),getReportItem:K=>R.current[K],selectItem:K=>M.current?.(K)});T.__virtualScroll=X}}});let E=e.length,A=(0,L.useCallback)(T=>T>=E?rt:e[T],[e,E]),q=(0,L.useCallback)((T,V)=>{if(E===0)return;let X=Math.max(0,T),K=Math.min(E-1,V);if(X>K)return;let ve=new Set;for(let H=X;H<=K;H++){let U=A(H);if(U.businessDate&&ve.add(U.businessDate),ve.size>=Tt)break}ve.forEach(H=>{y(H)})},[A,E,y]),z=(0,L.useCallback)(({renderingStartIndex:T,renderingEndIndex:V,visibleStartIndex:X})=>{if(E===0)return;let K=A(X);K?.businessDate&&d(se(K.businessDate)),q(T,V),q(V+1,V+tt),q(T-tt,T-1)},[A,E,q]),Y=(0,L.useCallback)(()=>{let T=l.current;T&&(T.classList.contains("is-scrolling")||T.classList.add("is-scrolling"),P.current&&clearTimeout(P.current),P.current=setTimeout(()=>{T&&T.classList.remove("is-scrolling"),P.current=null},150))},[]),ee=(0,L.useCallback)(T=>(0,i.jsx)(Ue,{...T,label:S,isWheelScrollActive:D}),[S,D]);(0,L.useEffect)(()=>{let T=l.current;if(!T)return;let V=()=>{w(!0),k.current&&clearTimeout(k.current),k.current=window.setTimeout(()=>{w(!1),k.current=null},240)};return T.addEventListener("wheel",V,{passive:!0}),()=>{T.removeEventListener("wheel",V),k.current&&clearTimeout(k.current)}},[]);let W=(0,L.useCallback)((T,V)=>{if(a(X=>{if(X.get(T)===V)return X;let K=new Map(X);return K.set(T,V),K}),f.current){let X=R.current.findIndex(K=>K.reportHubId===T);X!==-1&&f.current.updateItemSize(X,V)}},[]),ce=(0,L.useCallback)(T=>{let V=A(T);return s.get(V.reportHubId)||350},[A,s]),ue=(0,L.useCallback)(T=>A(T).reportHubId,[A]),G=(0,L.useMemo)(()=>({enabled:!0,renderVisual:ut.tapScrollCircleSampleVisual}),[]);(0,L.useEffect)(()=>{E>=0&&u()},[E,u]),(0,L.useEffect)(()=>{E!==0&&q(0,Math.min(E-1,tt))},[E,q]);let J=(0,L.useCallback)(T=>{let V=R.current.findIndex(X=>X.reportHubId===T);V>=0&&setTimeout(()=>f.current?.scrollToIndex(V,{align:"bottom"}),300)},[]),re=(0,L.useCallback)(T=>(0,i.jsx)(en,{item:T,onHeightMeasured:W,onCommentAdded:J,userId:t},T.reportHubId),[W,J,t]);return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("div",{ref:l,className:"flex min-h-0 flex-1 flex-col",children:(0,i.jsx)(ut.VirtualScroll,{ref:f,itemCount:E,getItem:A,getItemKey:ue,getItemHeight:ce,viewportSize:p,overscanCount:nt,scrollBarOptions:{width:8,tapScrollCircleOptions:G,renderThumbOverlay:ee},behaviorOptions:{wheelSpeedMultiplier:Ze,inertiaOptions:et},onRangeChange:z,onScroll:Y,className:"t-detail-list test-daily-report-detail-list relative w-full",children:re})}),E===0&&(0,i.jsx)("div",{className:"py-8 text-center",children:(0,i.jsx)("p",{className:"text-slate-500",children:"\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093"})})]})},Zr=()=>(0,i.jsxs)("div",{className:"rounded-2xl border border-slate-200 bg-white p-4 shadow-sm",children:[(0,i.jsxs)("div",{className:"mb-4 flex flex-wrap gap-2",children:[(0,i.jsx)("div",{className:"h-6 w-20 rounded-full bg-slate-200"}),(0,i.jsx)("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),(0,i.jsx)("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),(0,i.jsx)("div",{className:"h-6 w-28 rounded-full bg-slate-200"})]}),(0,i.jsxs)("div",{className:"mb-3 grid gap-3 md:grid-cols-[minmax(0,1fr)_220px]",children:[(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsx)("div",{className:"h-5 w-40 rounded bg-slate-200"}),(0,i.jsx)("div",{className:"h-5 w-56 rounded bg-slate-200"}),(0,i.jsx)("div",{className:"h-24 rounded-lg bg-slate-200"})]}),(0,i.jsxs)("div",{className:"rounded-xl bg-slate-100 p-3",children:[(0,i.jsx)("div",{className:"mb-2 h-4 w-24 rounded bg-slate-200"}),(0,i.jsx)("div",{className:"mb-2 h-4 w-28 rounded bg-slate-200"}),(0,i.jsx)("div",{className:"h-4 w-32 rounded bg-slate-200"})]})]}),(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsx)("div",{className:"h-4 w-24 rounded bg-slate-200"}),(0,i.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,i.jsx)("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),(0,i.jsx)("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),(0,i.jsx)("div",{className:"h-6 w-16 rounded-full bg-slate-200"})]}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)("div",{className:"h-16 rounded-lg bg-slate-200"}),(0,i.jsx)("div",{className:"h-16 rounded-lg bg-slate-200"})]})]})]}),en=({item:e,onHeightMeasured:t,onCommentAdded:r,userId:n})=>{let{report:s,error:a,isLoading:l,isRefetching:f}=Ie(e.reportHubId,e.businessDate),{removeStaleItem:p}=le(),{draftLabelName:u}=Z(),[y,S]=(0,L.useState)(!1),[d,D]=(0,L.useState)(!1),w=(0,L.useRef)(!1),k=(0,L.useRef)(!1);f&&(k.current=!0),(0,L.useEffect)(()=>{!(s||l||f||a)&&k.current&&e.reportHubId>0&&p(e.reportHubId)},[s,l,f,a,e.reportHubId,p]);let P=s?.labels.some(I=>I.name===u),R=n&&s?.userId===n;return(0,L.useEffect)(()=>{s&&R&&P&&!y&&!d?(S(!0),w.current=!0):s&&!P&&y&&w.current&&(S(!1),w.current=!1)},[s,R,P,y,d]),(0,i.jsx)(Xr,{itemId:e.reportHubId,onHeightMeasured:t,children:a?(0,i.jsx)(sn,{itemId:e.reportHubId}):s?y?(0,i.jsx)(st,{report:s,onCancel:()=>{S(!1),D(!0)},onPublishSuccess:()=>{S(!1)}}):(0,i.jsx)(nn,{item:e,report:s,onCommentAdded:r,userId:n,onDoubleClick:R?()=>S(!0):void 0}):(0,i.jsx)(Zr,{})})},tn=({report:e,isRead:t,isStarred:r,isMine:n,onToggleRead:s,onToggleStar:a,onDelete:l,visitTimeDisplay:f,categoryLabel:p,fieldLabels:u})=>(0,i.jsxs)("div",{className:"flex flex-wrap items-center gap-2 font-medium text-slate-600 text-xs",children:[(0,i.jsx)("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?(0,i.jsx)(Ne.Check,{className:"h-3.5 w-3.5 text-blue-500"}):(0,i.jsx)(Fe,{className:"text-xs"})}),(0,i.jsx)("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?(0,i.jsx)(Ne.Star,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):(0,i.jsx)(Ne.Star,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),n&&(0,i.jsx)("button",{type:"button",onClick:l,"data-detail-delete-button":e.reportHubId,className:"text-lg leading-none transition-transform focus:outline-none active:scale-125",title:"\u524A\u9664\u3059\u308B",children:(0,i.jsx)(Ne.Trash2,{className:"h-4 w-4 text-slate-300 hover:text-red-500"})}),(0,i.jsxs)("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:[(0,i.jsx)("span",{className:"text-[10px] text-blue-500 uppercase tracking-wide",children:u.id}),e.reportHubId]}),(0,i.jsxs)("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[(0,i.jsx)("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:u.businessDate}),se(e.date)]}),(0,i.jsxs)("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[(0,i.jsx)("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:u.author}),ne(e.employeeName)]}),(0,i.jsxs)("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[(0,i.jsx)("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:u.visitTime}),f||"-"]}),(0,i.jsxs)("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[(0,i.jsx)("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:u.updatedAt}),se(e.updatedAt)]}),p&&(0,i.jsxs)("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-amber-100 px-3 py-1 text-amber-700",children:[(0,i.jsx)("span",{className:"text-[10px] text-amber-500 uppercase tracking-wide",children:u.category}),p]})]}),rn=({report:e,visitTimeDisplay:t,categoryLabel:r,fieldLabels:n})=>(0,i.jsxs)("div",{className:"flex flex-col gap-3 rounded-xl bg-slate-100 p-4 text-slate-600 text-xs",children:[(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.author}),(0,i.jsx)("span",{className:"text-slate-700 text-sm",children:ne(e.author)})]}),(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.createdAt}),(0,i.jsx)("span",{className:"text-slate-700 text-sm",children:se(e.createdAt)})]}),(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.updatedBy}),(0,i.jsx)("span",{className:"text-slate-700 text-sm",children:ne(e.updatedBy)})]}),(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.updatedAt}),(0,i.jsx)("span",{className:"text-slate-700 text-sm",children:se(e.updatedAt)})]}),(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.businessDate}),(0,i.jsx)("span",{className:"text-slate-700 text-sm",children:se(e.date)})]}),t&&(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.visitTime}),(0,i.jsx)("span",{className:"text-slate-700 text-sm",children:t})]}),r&&(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.categoryInfo}),(0,i.jsx)("span",{className:"text-slate-700 text-sm",children:r})]})]}),nn=({item:e,report:t,onCommentAdded:r,userId:n,onDoubleClick:s})=>{let a=(0,L.useRef)(null),{toggleStar:l,toggleRead:f,pendingStarUpdates:p,pendingReadUpdates:u,deleteReport:y,user:S}=le(),{uiComments:d,handleAddComment:D,handleDeleteComment:w,pendingDeleteId:k,setPendingDeleteId:P,resolvedIdMap:R}=Ke(t,S,n),{fieldLabels:I}=Z(),M=async G=>{await D(G),r?.(e.reportHubId)},E=p.current.has(t.reportHubId)?p.current.get(t.reportHubId)??!1:t.isStarred,A=u.current.has(t.reportHubId)?u.current.get(t.reportHubId)??!1:t.isRead,q=!!(n&&t.userId===n),z=async()=>{try{await f(t.reportHubId,!A,t.date??"")}catch{}},Y=async()=>{try{await l(t.reportHubId,!E,t.date??"")}catch{}},ee=async()=>{confirm("\u672C\u5F53\u306B\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F")&&await y(t.reportHubId,t.date??"")},W=(0,L.useMemo)(()=>t.content?t.content.replace(/<br\s*\/??\s*>/gi,`
|
|
2
|
-
`).trim():"",[t.content]),ce=(0,L.useMemo)(()=>{let G=t.visitTimeFrom?.trim(),J=t.visitTimeTo?.trim();return G&&J?`${G} - ${J}`:G||J||""},[t.visitTimeFrom,t.visitTimeTo]),ue=(0,L.useMemo)(()=>{let G=[];return t.category?.trim()&&G.push(`${I.category}: ${t.category}`),t.creationCategory?.trim()&&G.push(`${I.creationCategory}: ${t.creationCategory}`),G.join(" / ")},[t.category,t.creationCategory,I.category,I.creationCategory]);return(0,i.jsx)("div",{onDoubleClick:s,className:`flex h-full w-full flex-col rounded-2xl border bg-white p-4 shadow-sm transition-all duration-200 hover:-translate-y-0.5 hover:border-blue-300 hover:shadow-lg dark:border-slate-700 dark:bg-slate-900/70 ${A?"":"border-l-4 border-l-blue-500"}`,children:(0,i.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,i.jsx)(tn,{report:t,isRead:A,isStarred:E,isMine:q,onToggleRead:z,onToggleStar:Y,onDelete:ee,visitTimeDisplay:ce,categoryLabel:ue,fieldLabels:I}),(0,i.jsxs)("div",{className:"grid gap-4 md:grid-cols-[minmax(0,1fr)_240px]",children:[(0,i.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,i.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.customer}),(0,i.jsx)("span",{className:"font-semibold text-base text-slate-900",children:ne(t.customerName)})]}),(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.subject}),(0,i.jsx)("span",{className:"text-slate-700 text-sm",children:ne(t.subject)})]})]}),W&&(0,i.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,i.jsx)("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.content}),(0,i.jsx)("div",{className:"whitespace-pre-wrap rounded-xl bg-slate-50 p-3 text-slate-700 text-sm leading-relaxed",children:W})]}),t.interviewers.length>0&&(0,i.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,i.jsx)("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.interviewers}),(0,i.jsx)("ul",{className:"flex flex-wrap gap-2",children:t.interviewers.map(G=>(0,i.jsx)("li",{className:"rounded-full bg-slate-100 px-3 py-1 text-slate-600 text-xs",children:Jr(G)},`${G.name}-${G.affiliation||""}`))})]}),d.length>0&&(0,i.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,i.jsx)("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:I.comments}),(0,i.jsx)($e,{comments:d,reportHubId:t.reportHubId,businessDate:t.date??"",onDeleteComment:w,pendingDeleteId:k,onPendingDeleteIdChange:P,resolvedIdMap:R})]}),(0,i.jsx)("div",{className:"mt-auto",ref:a,children:(0,i.jsx)(Ve,{reportHubId:t.reportHubId,businessDate:t.date??"",onAddComment:M})})]}),(0,i.jsx)(rn,{report:t,visitTimeDisplay:ce,categoryLabel:ue,fieldLabels:I})]})]})})},sn=({itemId:e})=>(0,i.jsx)("div",{className:"rounded-2xl border border-red-200 bg-red-50 p-4 text-red-700 text-sm",children:(0,i.jsxs)("p",{children:["\u65E5\u5831 ",e.toLocaleString()," \u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"]})});var ge=require("@aiquants/swipe-overlay"),yr=require("@aiquants/virtualscroll"),Se=require("lucide-react"),N=require("react");var be=ke(require("@radix-ui/react-tabs")),mt=ke(require("react"));var ft=require("react/jsx-runtime"),pt=be.Root,at=mt.forwardRef(({className:e,...t},r)=>(0,ft.jsx)(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}));at.displayName=be.List.displayName;var ot=mt.forwardRef(({className:e,...t},r)=>(0,ft.jsx)(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}));ot.displayName=be.Trigger.displayName;var Be=mt.forwardRef(({className:e,...t},r)=>(0,ft.jsx)(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}));Be.displayName=be.Content.displayName;var o=require("react/jsx-runtime"),an=(e,t,r,n)=>{let[s,a]=(0,N.useState)(!1),[l,f]=(0,N.useState)(!1),p=(0,N.useRef)(null),u=(0,N.useRef)(null),y=(0,N.useRef)(null),S=(0,N.useMemo)(()=>t===null?null:r.find(w=>w.reportHubId===t)??null,[r,t]),d=e&&s&&S!==null;(0,N.useEffect)(()=>{if(d)f(!0);else{let w=setTimeout(()=>f(!1),300);return()=>clearTimeout(w)}},[d]),(0,N.useEffect)(()=>{if(!(typeof window>"u")){if(e&&s&&t!==null&&!p.current){let w=`overlay-${Date.now()}`;window.history.pushState({...window.history.state,dailyReportOverlay:w},"",window.location.href),p.current=w}else!(e&&s)&&p.current&&(p.current=null);return s?(y.current=document.body.style.overflow,document.body.style.overflow="hidden"):y.current!==null&&(document.body.style.overflow=y.current,y.current=null),()=>{y.current!==null&&(document.body.style.overflow=y.current)}}},[e,s,t]),(0,N.useEffect)(()=>{if(typeof window>"u")return;let w=()=>{p.current&&(u.current=t,p.current=null,a(!1),n(null))};return window.addEventListener("popstate",w),()=>window.removeEventListener("popstate",w)},[t,n]);let D=(0,N.useCallback)(()=>{e&&(u.current=t,a(!1),n(null),p.current&&typeof window<"u"&&(p.current=null,window.history.back()))},[e,t,n]);return{isMobileDetailOpen:s,setIsMobileDetailOpen:a,isOverlayMounted:l,shouldShowOverlay:d,handleOverlayClose:D,lastClosedItemIdRef:u,selectedItem:S}},on=(e,t,r,n,s)=>{let a=(0,N.useRef)(null),l=(0,N.useRef)(void 0);l.current!==e?.reportHubId&&(l.current=e?.reportHubId,a.current=null),(0,N.useEffect)(()=>{n||(a.current=null)},[n]);let f=(0,N.useCallback)(async(p=!1)=>{if(!e)return;p||(a.current=e.reportHubId);let u=!e.isRead;try{await s(e.reportHubId,u,e.date??"")}catch{}},[e,s]);return(0,N.useEffect)(()=>{if(r&&e&&!e.isRead&&!t){if(a.current===e.reportHubId)return;let p=setTimeout(()=>f(!0),500);return()=>clearTimeout(p)}},[e,t,r,f]),{handleToggleRead:f}},At=({dailyReportItems:e,initialSelectedBusinessDate:t=null,initialSelectedReportHubId:r=null,autoMarkRead:n=!1,selectedReportHubId:s,onSelectItem:a,userId:l})=>{let f=(0,N.useRef)(null),p=(0,N.useRef)(null),{viewportHeight:u,updateViewportHeight:y}=Qe(f),[S,d]=(0,N.useState)(""),[D,w]=(0,N.useState)(!1),[k,P]=(0,N.useState)(!1),R=(0,N.useRef)(null),I=(0,N.useRef)(null),M=e.length,E=(0,N.useRef)(null),{isMobileDetailOpen:A,setIsMobileDetailOpen:q,isOverlayMounted:z,shouldShowOverlay:Y,handleOverlayClose:ee,lastClosedItemIdRef:W,selectedItem:ce}=an(k,s,e,a),ue=(0,N.useMemo)(()=>Number.isFinite(u)&&u>0?{height:u}:void 0,[u]);(0,N.useEffect)(()=>{if(typeof window>"u")return;let H=window.matchMedia("(max-width: 639px)"),U=c=>P(c.matches);P(H.matches),H.addEventListener("change",U);let te=()=>requestAnimationFrame(y);window.addEventListener("resize",te),y();let fe=f.current,v=()=>{w(!0),R.current&&clearTimeout(R.current),R.current=window.setTimeout(()=>{w(!1),R.current=null},Et)};return fe?.addEventListener("wheel",v,{passive:!0}),()=>{H.removeEventListener("change",U),window.removeEventListener("resize",te),fe?.removeEventListener("wheel",v),R.current&&clearTimeout(R.current)}},[y]),(0,N.useEffect)(()=>{if(!M){I.current=null,s!==null&&a(null);return}let H=`${r??""}|${t??""}`,U=(r??null)!==null||(t??null)!==null;if(U||(I.current=null),U&&I.current!==H){let te=r&&e.find(fe=>fe.reportHubId===r)||t&&e.find(fe=>fe.businessDate===t);if(te){I.current=H,s!==te.reportHubId&&a(te.reportHubId);return}}},[e,t,r,s,M,a]),(0,N.useEffect)(()=>{if(k||A||W.current===null)return;let H=W.current;W.current=null;let U=e.findIndex(te=>te.reportHubId===H);U>=0&&requestAnimationFrame(()=>p.current?.focusItemAtIndex(U))},[A,k,e,W]),(0,N.useEffect)(()=>{M>0&&d(H=>{let U=se(e[0]?.businessDate);return H===U?H:U})},[e,M]);let G=(0,N.useRef)(e);G.current=e,(0,N.useEffect)(()=>{if(p.current){let H=document.querySelector(".test-daily-report-list");H&&(H.__virtualScroll={...p.current,findReportIndex:U=>G.current.findIndex(te=>te.reportHubId===U),getReportIds:(U=20)=>G.current.slice(0,U).map(te=>te.reportHubId)})}});let J=(0,N.useCallback)(H=>{H<=0||(a(H),k&&q(!0))},[k,a,q]),re=(0,N.useCallback)(H=>H<M?e[H]:rt,[e,M]),T=(0,N.useCallback)(()=>ct,[]),V=(0,N.useCallback)(H=>{let U=re(H.visibleStartIndex);U?.reportHubId>0&&d(te=>{let fe=se(U.businessDate);return te===fe?te:fe})},[re]),X=(0,N.useCallback)(H=>{let U=re(H);if(U&&U.reportHubId>0){if(U.reportHubId===s)return;a(U.reportHubId)}},[re,a,s]),K=(0,N.useCallback)(()=>{let H=f.current;H&&(H.classList.contains("is-scrolling")||H.classList.add("is-scrolling"),E.current&&clearTimeout(E.current),E.current=setTimeout(()=>{H&&H.classList.remove("is-scrolling"),E.current=null},150))},[]),ve=(0,N.useCallback)(H=>(0,o.jsx)(Ue,{...H,label:S,isWheelScrollActive:D}),[S,D]);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)("div",{className:"flex h-full min-h-0 gap-4",children:[(0,o.jsx)("div",{ref:f,className:"flex min-h-0 w-full sm:w-90",style:ue,children:(0,o.jsx)(yr.VirtualScroll,{ref:p,itemCount:M,getItem:re,getItemHeight:T,viewportSize:u,overscanCount:nt,scrollBarOptions:{width:Ht,tapScrollCircleOptions:Mt,renderThumbOverlay:ve},behaviorOptions:{inertiaOptions:et,wheelSpeedMultiplier:Ze},onRangeChange:V,onScroll:K,onItemFocus:X,contentInsets:{top:Je,bottom:Je},className:"test-daily-report-list relative w-full",children:H=>(0,o.jsx)(mn,{item:H,isActive:H.reportHubId===s,onSelect:J},H.reportHubId)})}),(0,o.jsx)(hr,{dailyReportItems:e,selectedItem:ce,heightStyle:ue,autoMarkRead:!k&&n,isActive:s!==null,userId:l})]}),M===0&&(0,o.jsx)("div",{className:"py-8 text-center",children:(0,o.jsx)("p",{className:"text-slate-500",children:"\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093"})}),z&&(0,o.jsx)(cn,{isOpen:Y,selectedItem:ce,onClose:ee,autoMarkRead:k&&n,userId:l})]})},ln=()=>(0,o.jsx)("div",{className:"px-2 pb-3",style:{height:Oe},children:(0,o.jsxs)("div",{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:[(0,o.jsxs)("div",{className:"mb-3 flex flex-wrap items-center gap-3",children:[(0,o.jsx)("div",{className:"h-4 w-24 rounded bg-slate-200"}),(0,o.jsx)("div",{className:"h-4 w-24 rounded bg-slate-200"}),(0,o.jsx)("div",{className:"h-4 w-24 rounded bg-slate-200"})]}),(0,o.jsxs)("div",{className:"space-y-2",children:[(0,o.jsx)("div",{className:"h-4 w-full rounded bg-slate-200"}),(0,o.jsx)("div",{className:"h-4 w-11/12 rounded bg-slate-200"}),(0,o.jsx)("div",{className:"h-4 w-5/6 rounded bg-slate-200"})]})]})}),hr=({dailyReportItems:e,selectedItem:t,heightStyle:r,autoMarkRead:n=!1,isActive:s=!0,userId:a})=>{let[l,f]=(0,N.useState)("article"),[p,u]=(0,N.useState)(!1),{draftLabelName:y,fieldLabels:S}=Z(),{report:d,error:D,isLoading:w}=Ie(t?.reportHubId??-1,t?.businessDate??null),k=(0,N.useRef)(null),P=(0,N.useRef)(null),R=(0,N.useRef)(!1);(0,N.useEffect)(()=>{if(!d)return;let Y=d.labels.some(ee=>ee.name===y);d.reportHubId!==P.current?(P.current=d.reportHubId,Y?(u(!0),R.current=!0):(u(!1),R.current=!1)):!Y&&p&&R.current&&(u(!1),R.current=!1)},[d,p,y]);let I=!!(a&&d?.userId===a),M=(0,N.useCallback)(()=>{setTimeout(()=>{k.current&&k.current.scrollTo({top:k.current.scrollHeight,behavior:"smooth"})},100)},[]);if(e&&(e.length===0||!t))return(0,o.jsx)("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:(0,o.jsx)("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:(0,o.jsx)("p",{children:"\u5DE6\u5074\u306E\u4E00\u89A7\u304B\u3089\u65E5\u5831\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002"})})});let E=se(d?.date??t?.businessDate),A=d?.employeeName||d?.author?ne(d.employeeName??d.author):"",q=w||!d,z=(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)("div",{className:"space-y-1",children:[(0,o.jsx)("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:S.businessDate}),(0,o.jsx)("div",{className:"text-slate-900 text-sm dark:text-slate-100",children:E}),(0,o.jsxs)("div",{className:"flex min-h-4 items-center gap-1 text-slate-500 text-xs dark:text-slate-300",children:[(0,o.jsxs)("span",{children:[S.author,":"]}),q?(0,o.jsx)("div",{className:"h-3 w-24 animate-pulse rounded bg-slate-200 dark:bg-slate-700"}):(0,o.jsx)("span",{children:A})]})]}),(0,o.jsxs)(pt,{value:l,onValueChange:Y=>f(Y),className:"flex min-h-0 flex-1 flex-col",children:[(0,o.jsx)(at,{className:"grid grid-cols-2 gap-1 rounded-md bg-slate-100 p-1 text-xs dark:bg-slate-800",children:["article","relations"].map(Y=>(0,o.jsx)(ot,{value:Y,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:Y==="article"?S.tabArticle:S.tabRelations},Y))}),(0,o.jsx)(Be,{ref:k,value:"article",className:"scrollbar-thin flex-1 touch-pan-y overflow-y-auto overflow-x-hidden pt-3 text-sm",children:p?d?(0,o.jsx)(st,{report:d,onCancel:()=>u(!1),onPublishSuccess:()=>u(!1)}):(0,o.jsx)("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&&(0,o.jsx)(dn,{report:d,isLoading:w,error:D,selectedItem:t,autoMarkRead:n,isActive:s,onCommentAdded:M,userId:a,onDoubleClick:I?()=>u(!0):void 0})}),(0,o.jsx)(Be,{value:"relations",className:"scrollbar-thin flex-1 touch-pan-y overflow-y-auto pt-3 text-sm",children:(0,o.jsx)("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:S.relationsEmpty})})]})]});return e?(0,o.jsx)("aside",{"data-report-id":t?.reportHubId,className:"test-daily-report-side-pane 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:z}):(0,o.jsx)("div",{"data-report-id":t?.reportHubId,className:"test-daily-report-side-pane flex min-h-0 flex-1 flex-col gap-3 overflow-hidden",children:z})},dn=({report:e,isLoading:t,error:r,autoMarkRead:n=!1,isActive:s=!0,onCommentAdded:a,userId:l,onDoubleClick:f})=>{let{toggleStar:p,toggleRead:u,deleteReport:y,user:S}=le(),{fieldLabels:d}=Z(),{uiComments:D,handleAddComment:w,handleDeleteComment:k,pendingDeleteId:P,setPendingDeleteId:R,resolvedIdMap:I}=Ke(e,S,l),{handleToggleRead:M}=on(e,t,n,s,u),E=(0,N.useRef)(null),A=(0,N.useRef)(D.length);(0,N.useEffect)(()=>{let T=e?.reportHubId??null;if(T!==E.current){E.current=T,A.current=D.length;return}D.length>A.current&&a?.(),A.current=D.length},[D.length,e?.reportHubId,a]);let q=async T=>{await w(T)},z=(0,N.useMemo)(()=>e?.content?e.content.replace(/<br\s*\/?\s*>/gi,`
|
|
1
|
+
"use strict";var Ir=Object.create;var lt=Object.defineProperty;var Cr=Object.getOwnPropertyDescriptor;var Nr=Object.getOwnPropertyNames;var Tr=Object.getPrototypeOf,Sr=Object.prototype.hasOwnProperty;var kr=(e,t)=>{for(var r in t)lt(e,r,{get:t[r],enumerable:!0})},Ut=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Nr(t))!Sr.call(e,s)&&s!==r&<(e,s,{get:()=>t[s],enumerable:!(n=Cr(t,s))||n.enumerable});return e};var ke=(e,t,r)=>(r=e!=null?Ir(Tr(e)):{},Ut(t||!e||!e.__esModule?lt(r,"default",{value:e,enumerable:!0}):r,e)),Er=e=>Ut(lt({},"__esModule",{value:!0}),e);var xn={};kr(xn,{BusinessDayThumbOverlay:()=>Ue,DAILY_REPORT_FETCH_DEBOUNCE_MS:()=>Xe,DEFAULT_ITEM_HEIGHT:()=>ct,DailyReportActionProvider:()=>Tt,DailyReportCommentForm:()=>Ve,DailyReportCommentItem:()=>yt,DailyReportCommentList:()=>$e,DailyReportConfigProvider:()=>xt,DailyReportDetailList:()=>Pt,DailyReportEditForm:()=>st,DailyReportList:()=>At,DailyReportLoadError:()=>wr,DailyReportLoading:()=>Ft,DailyReportPage:()=>gn,DailyReportResolvedContent:()=>_t,EMPTY_DETAIL:()=>kt,EMPTY_ITEM:()=>rt,FAST_SCROLL_INERTIA_OPTIONS:()=>et,FAST_SCROLL_WHEEL_MULTIPLIER:()=>Ze,ITEM_CONTAINER_HEIGHT:()=>Oe,ITEM_VERTICAL_PADDING:()=>Je,MAX_PREVIEW_LINES:()=>Lt,PREFETCH_LOOKAHEAD:()=>tt,PREFETCH_MAX_DATES:()=>St,SCROLL_BAR_WIDTH:()=>Ht,TAP_SCROLL_CIRCLE_OPTIONS:()=>Mt,UnreadIndicator:()=>Fe,VIRTUAL_SCROLL_OVERSCAN_COUNT:()=>nt,WHEEL_RESET_TIMEOUT_MS:()=>Et,acquireMutationLock:()=>Me,applyDailyReportServerUpdates:()=>ve,createDailyReportClientLoader:()=>hn,dailyReportShouldRevalidate:()=>yn,defaultDailyReportClientConfig:()=>je,defaultDailyReportFieldLabels:()=>ht,deleteDailyReportCache:()=>We,fetchDailyReportIds:()=>Dr,getCachedReport:()=>oe,registerRecentDeletion:()=>Rt,releaseMutationLock:()=>Pe,subscribeCacheReady:()=>wt,updateDailyReportCache:()=>ie,useDailyReportActionContext:()=>le,useDailyReportComments:()=>Ke,useDailyReportConfig:()=>Z,useDailyReportDetail:()=>Ie,useDailyReportPrefetch:()=>Dt,useDailyReportSseConnection:()=>Ct,useDynamicViewportHeight:()=>Qe,writeCache:()=>vt});module.exports=Er(xn);var dt=require("react/jsx-runtime"),Ue=({orientation:e,thumbCenter:t,label:r,isDragging:n,isTapScrollActive:s,isWheelScrollActive:a})=>r.trim()&&(n||s||a)?(0,dt.jsx)("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:(0,dt.jsx)("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:(0,dt.jsx)("span",{className:"whitespace-nowrap font-semibold text-slate-800 dark:text-slate-100",children:r.trim()})})}):null;var Wt=require("@heroicons/react/24/outline"),Gt=require("react");var $t=(e,t,r)=>{let n=e.map((a,l)=>({id:`legacy-${l}`,authorName:a.name||"Unknown",content:a.text||"",isMine:!1,color:a.color||void 0,isLegacy:!0})),s=t.map(a=>({id:a.id,authorName:a.userName,content:a.content,createdAt:a.createdAt,isMine:r?a.userId===r:a.isMine,isLegacy:!1}));return[...n,...s]},Vt=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"),m=String(r.getMinutes()).padStart(2,"0"),c=String(r.getSeconds()).padStart(2,"0");return`${n}-${s}-${a}T${p}:${m}:${c}`}return`${n}-${s}-${a}`};var jt=require("clsx"),zt=require("tailwind-merge");function G(...e){return(0,zt.twMerge)((0,jt.clsx)(e))}var me=require("react/jsx-runtime"),Hr=(e,t,r)=>t===e||typeof e=="number"&&e<0&&r?.get(e)===t||typeof t=="number"&&t<0&&r?.get(t)===e,yt=({comment:e,reportHubId:t,businessDate:r,onOptimisticDelete:n,pendingDeleteId:s,onPendingDeleteIdChange:a,onTrashClick:l,resolvedIdMap:p})=>{let[m,c]=(0,Gt.useState)(!1),y=Hr(e.id,s,p),D=f=>{f.stopPropagation(),f.preventDefault(),a(null),c(!0),typeof e.id=="number"&&n(e.id)};return(0,me.jsxs)("li",{"data-comment-id":e.id,className:G("group relative rounded-xl border border-slate-200 bg-white p-3",e.isMine&&"border-blue-200 bg-blue-50",m&&"hidden",y?"z-50":"z-0 hover:z-10"),children:[(0,me.jsxs)("div",{className:"mb-1 flex items-center justify-between",children:[(0,me.jsx)("div",{className:G("font-semibold text-xs",Vt(e.color)),children:re(e.authorName)}),(0,me.jsxs)("div",{className:"flex items-center gap-2",children:[e.createdAt&&(0,me.jsx)("div",{className:"text-[10px] text-slate-400",children:ne(e.createdAt)}),e.isMine&&!e.isLegacy&&(0,me.jsxs)("div",{className:"relative",children:[(0,me.jsx)("button",{type:"button",className:G("transition-colors",y?"text-red-500":"text-slate-400 hover:text-red-500"),title:"\u524A\u9664","aria-label":"\u524A\u9664",onClick:f=>l(f,e.id),children:(0,me.jsx)(Wt.TrashIcon,{className:"h-4 w-4"})}),y&&(0,me.jsx)("button",{type:"button","data-delete-confirmation":!0,className:"fade-in zoom-in-95 absolute top-full right-0 z-20 mt-1 animate-in whitespace-nowrap rounded-md bg-red-600 px-3 py-1.5 font-bold text-white text-xs shadow-lg duration-200 hover:bg-red-700 active:scale-95",onClick:D,children:"\u524A\u9664\u3059\u308B"})]})]})]}),(0,me.jsx)("div",{className:"whitespace-pre-wrap text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:e.content})]})};var he=require("react");var ye=require("react/jsx-runtime"),Lr=(e,t)=>{let r=(0,he.useRef)(null);return(0,he.useEffect)(()=>{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]),(0,he.useEffect)(()=>()=>{r.current&&clearTimeout(r.current)},[]),{handleTrashClick:(0,he.useCallback)((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])}},$e=({comments:e,reportHubId:t,businessDate:r,onDeleteComment:n,pendingDeleteId:s,onPendingDeleteIdChange:a,resolvedIdMap:l})=>{let{handleTrashClick:p}=Lr(s,a);return e.length===0?null:(0,ye.jsx)("ul",{className:"mb-3 space-y-2",children:e.map(m=>(0,ye.jsx)(yt,{comment:m,reportHubId:t,businessDate:r,onOptimisticDelete:n||(()=>{}),pendingDeleteId:s,onPendingDeleteIdChange:a,onTrashClick:p,resolvedIdMap:l},m.id))})},Ve=({reportHubId:e,businessDate:t,onAddComment:r})=>{let[n,s]=(0,he.useState)(!1),a=(0,he.useRef)(null);return(0,ye.jsxs)("form",{className:"flex gap-2",ref:a,onSubmit:async p=>{p.preventDefault();let c=new FormData(p.currentTarget).get("content")?.trim();if(c&&r){s(!0),a.current?.reset();try{await r(c)}catch{if(a.current){let y=a.current.elements.namedItem("content");y&&(y.value=c)}}finally{s(!1)}}},children:[(0,ye.jsx)("input",{type:"hidden",name:"intent",value:"addComment"}),(0,ye.jsx)("input",{type:"hidden",name:"reportHubId",value:e}),(0,ye.jsx)("input",{type:"hidden",name:"businessDate",value:t}),(0,ye.jsx)("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"}),(0,ye.jsx)("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"})]})};var ut=require("@aiquants/virtualscroll"),Ne=require("lucide-react"),M=require("react");var He=require("react"),Ee=require("react/jsx-runtime"),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."},je={title:"Daily Reports",apiBasePath:"/daily_report/api",ssePath:"/sse/daily_report/updates",draftLabelName:"draft",fieldLabels:ht,sourceTypeConfigs:{},renderHeader:({title:e,annotation:t})=>(0,Ee.jsxs)("header",{className:"flex flex-wrap items-baseline justify-between gap-2 px-2 py-1",children:[(0,Ee.jsx)("span",{className:"text-nowrap text-slate-700 text-sm dark:text-slate-200",children:e}),t?(0,Ee.jsx)("span",{className:"text-slate-600 text-xs dark:text-slate-300",children:t}):null]}),showDevControls:!1},qt=(0,He.createContext)(je),xt=({config:e,children:t})=>{let r=(0,He.useMemo)(()=>({...je,...e,fieldLabels:{...ht,...e?.fieldLabels??{}}}),[e]);return(0,Ee.jsx)(qt.Provider,{value:r,children:t})},Z=()=>(0,He.useContext)(qt);var F=require("react");var Le=(e,t,r=console)=>{let n=s=>typeof s=="string"?[`${t} ${s}`]:[t,s];return{debug:(s,...a)=>{e<=0&&r.debug(...n(s),...a)},info:(s,...a)=>{e<=1&&r.info(...n(s),...a)},warn:(s,...a)=>{e<=2&&r.warn(...n(s),...a)},error:(s,...a)=>{e<=3&&r.error(...n(s),...a)}}};var pe=require("react");var Mr=/^\d{4}-\d{2}-\d{2}$/,Pr=/^\d{4}\/\d{2}\/\d{2}$/,Yt=e=>e<10?`0${e}`:`${e}`,Kt=e=>{if(Number.isNaN(e.getTime()))return null;let t=e.getFullYear(),r=Yt(e.getMonth()+1),n=Yt(e.getDate());return`${t}-${r}-${n}`},ze=e=>{if(e==null)return null;if(e instanceof Date)return Kt(e);let t=e.trim();if(t==="")return null;if(Mr.test(t))return t;if(Pr.test(t))return t.replaceAll("/","-");let r=new Date(t);return Kt(r)};var Xt=Le(1,"use-daily-report"),Jt=(e,t)=>{if(typeof window>"u")return t;let r=window[e];return typeof r=="number"&&!Number.isNaN(r)?r:t},Zt=Jt("__DAILY_REPORT_CACHE_TTL__",3e5),Ar=Jt("__DAILY_REPORT_CACHE_REVIVE_MS__",6e4),Or=120,O={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=>{O.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=ze(e.date),s=n?this.lists.get(n):null;if(s&&n){let l=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:l})}}this.notify(e.reportHubId)},update(e,t,r=!0){let n=this.reports.get(e);if(n?.data){if(r&&t.updatedAt&&n.data.updatedAt&&new Date(t.updatedAt).getTime()<new Date(n.data.updatedAt).getTime()){Xt.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=ze(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,l)=>new Date(a.createdAt).getTime()-new Date(l.createdAt).getTime())})}return r},cacheMany(e,t,r=0){if(!e.length)return[];this.prune();let n=Date.now(),s=n+Zt;for(let[l,p]of this.recentDeletes)n-p>1e4&&this.recentDeletes.delete(l);let a=e.map(l=>{if(this.locks.has(l.reportHubId))return l;let p=this.lastMutations.get(l.reportHubId);if(p&&r>0&&p>r)return this.reports.get(l.reportHubId)?.data??l;let m=this.reports.get(l.reportHubId)?.data,c=this.merge(l,m);return this.set(c,s,!1),c});return t&&this.lists.set(t,{data:a,expiresAt:s}),a}},vt=(e,t,r=!0)=>O.set(e,t,r),oe=(e,t)=>O.getReport(e,t?.ignoreExpiry),ie=(e,t)=>O.update(e,t),We=(e,t)=>O.delete(e,t),Me=e=>{O.locks.add(e),O.lastMutations.set(e,Date.now())},Pe=e=>{O.locks.delete(e),O.lastMutations.set(e,Date.now())},Rt=e=>O.recentDeletes.set(e,Date.now()),wt=(e,t)=>{let r=n=>{n===e&&t()};return O.listeners.add(r),()=>{O.listeners.delete(r)}},ve=(e,t)=>{O.prune(),O.set(t,Date.now()+Zt)},_r=async(e,t)=>{let r=O.getReport(t);if(r)return r;let n=O.pendingReports.get(t);if(n)return n;let s=Date.now(),a=fetch(`${e}/report?reportHubId=${t}`,{cache:"no-cache"}).then(l=>l.ok?l.json():Promise.reject(`HTTP ${l.status}`)).then(l=>{if(l.error)throw new Error(l.error.message);let p=l.report;return O.cacheMany([p],null,s)[0]}).finally(()=>O.pendingReports.delete(t));return O.pendingReports.set(t,a),a},er=async(e,t)=>{let r=O.getList(t);if(r)return r;let n=O.pendingLists.get(t);if(n)return n;let s=Date.now(),a=fetch(`${e}/business-date?businessDate=${encodeURIComponent(t)}`,{cache:"no-cache"}).then(l=>l.ok?l.json():Promise.reject(`HTTP ${l.status}`)).then(l=>{if(l.error)throw new Error(l.error.message);return O.cacheMany(l.reports??[],t,s)}).finally(()=>O.pendingLists.delete(t));return O.pendingLists.set(t,a),a},Ie=(e,t)=>{let{apiBasePath:r}=Z(),[n,s]=(0,pe.useState)(()=>O.getReport(e)),[a,l]=(0,pe.useState)(null),[p,m]=(0,pe.useState)(!1),[c,y]=(0,pe.useState)(!1),D=(0,pe.useRef)({id:e,token:0});return(0,pe.useEffect)(()=>{let f=b=>{if(b===e){let N=O.getReport(e,!0);s(N)}};return O.listeners.add(f),()=>{O.listeners.delete(f)}},[e]),(0,pe.useEffect)(()=>{let f=ze(t),b=(D.current.token||0)+1;if(D.current={id:e,token:b},e<=0){s(null),l(e===0?new Error("Invalid ID"):null),m(!1),y(!1);return}let N=O.getReport(e,!0),k=!1;if(N)k=!O.isValid(O.reports.get(e)?.expiresAt??0);else if(f){let R=O.getList(f,!0)?.find(E=>E.reportHubId===e);R&&(N=R,k=!O.isValid(O.lists.get(f)?.expiresAt??0))}if(s(N),N&&!k){l(null),m(!1),y(!1);return}m(!N),y(!0);let P=setTimeout(async()=>{if(D.current.token===b)try{let T=null;f?T=(await er(r,f)).find(E=>E.reportHubId===e)??null:T=await _r(r,e),D.current.token===b&&(s(T),l(null))}catch(T){D.current.token===b&&l(T instanceof Error?T:new Error("Load failed"))}finally{D.current.token===b&&(m(!1),y(!1))}},Or);return()=>clearTimeout(P)},[e,t,r]),{report:n,error:a,isLoading:p,isRefetching:c}},Dt=()=>{let{apiBasePath:e}=Z();return(0,pe.useCallback)(t=>{let r=ze(t);r&&!O.getList(r)&&er(e,r).catch(n=>Xt.warn("Prefetch error",r,n))},[e])};var nr=require("react");var g=require("zod"),Fr=g.z.object({name:g.z.string(),affiliation:g.z.string().nullable()}),Br=g.z.object({name:g.z.string().nullable(),text:g.z.string().nullable(),color:g.z.string().nullable()}),Ur=g.z.object({id:g.z.number(),name:g.z.string(),color:g.z.string().nullable()}),tr=g.z.object({id:g.z.number(),userId:g.z.string(),userName:g.z.string(),content:g.z.string(),createdAt:g.z.string(),isMine:g.z.boolean()}),It=g.z.object({reportHubId:g.z.number(),date:g.z.string().nullable(),createdAt:g.z.string().nullable(),author:g.z.string(),userId:g.z.string(),sourceType:g.z.string().nullable(),employeeName:g.z.string().nullable(),updatedBy:g.z.string().nullable(),updatedAt:g.z.string().nullable(),category:g.z.string().nullable(),creationCategory:g.z.string().nullable(),visitTimeFrom:g.z.string().nullable(),visitTimeTo:g.z.string().nullable(),customerName:g.z.string().nullable(),interviewers:g.z.array(Fr),subject:g.z.string().nullable(),content:g.z.string().nullable(),comments:g.z.array(Br),isRead:g.z.boolean(),isStarred:g.z.boolean(),labels:g.z.array(Ur),commentItems:g.z.array(tr)}),$r=g.z.object({type:g.z.literal("connected")}),Vr=g.z.object({type:g.z.literal("status-update"),reportHubId:g.z.number(),statusType:g.z.enum(["star","read"]),value:g.z.boolean(),clientTempId:g.z.string(),recipientRawUserId:g.z.number().optional()}),jr=g.z.object({type:g.z.literal("comment-add"),reportHubId:g.z.number(),comment:tr,clientTempId:g.z.string()}),zr=g.z.object({type:g.z.literal("comment-delete"),reportHubId:g.z.number(),commentId:g.z.number(),clientTempId:g.z.string()}),Wr=g.z.object({type:g.z.literal("report-create"),reportHubId:g.z.number(),report:It,clientTempId:g.z.string(),recipientRawUserId:g.z.number().optional()}),Gr=g.z.object({type:g.z.literal("report-update"),reportHubId:g.z.number(),report:It,clientTempId:g.z.string(),recipientRawUserId:g.z.number().optional()}),qr=g.z.object({type:g.z.literal("report-publish"),reportHubId:g.z.number(),report:It,clientTempId:g.z.string()}),Yr=g.z.object({type:g.z.literal("report-delete"),reportHubId:g.z.number(),clientTempId:g.z.string()}),rr=g.z.discriminatedUnion("type",[$r,Vr,jr,zr,Wr,Gr,qr,Yr]);var Ge=Le(1,"daily-report-sse-connection"),Ct=({isSseEnabled:e,onMessage:t})=>{let{ssePath:r}=Z();(0,nr.useEffect)(()=>{if(!e)return;let n=null,s=null,a=0,l,p=()=>{n?.close(),n=new EventSource(`${r}${l?`?lastEventId=${l}`:""}`),n.onopen=()=>{a=0,Ge.info("SSE Connected")},n.onmessage=m=>{m.lastEventId&&(l=m.lastEventId);try{let c=JSON.parse(m.data),y=rr.safeParse(c);if(!y.success){Ge.error("SSE Validation Error",y.error.format());return}if(y.data.type==="connected"){Ge.info("SSE Subscribe Ready");return}t(y.data)}catch(c){Ge.error("SSE Parse Error",c)}},n.onerror=m=>{n?.close(),n=null,a++;let c=Math.min(2e3*2**(a-1),3e4);Ge.error(`SSE Error. Retrying in ${c}ms (attempt ${a})...`,m),s=setTimeout(p,c)}};return p(),()=>{n&&n.close(),s&&clearTimeout(s)}},[e,t,r])};var sr=require("react/jsx-runtime"),qe=Le(1,"daily-report-action-context"),Nt=globalThis.__DailyReportActionContext??(0,F.createContext)(null);globalThis.__DailyReportActionContext=Nt;var le=()=>{let e=(0,F.useContext)(Nt);if(!e)throw new Error("useDailyReportActionContext must be used within a DailyReportActionProvider");return e},Ye=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"},Tt=({children:e,user:t,initialItems:r=[],userId:n})=>{let{apiBasePath:s,draftLabelName:a}=Z(),l=(0,F.useRef)(new Map),p=(0,F.useRef)(new Map),m=(0,F.useRef)(new Map),c=(0,F.useRef)(new Map),y=(0,F.useRef)(new Map),[D,f]=(0,F.useState)(0),[b,N]=(0,F.useState)(r),[k,P]=(0,F.useState)(!!n),T=(0,F.useRef)(new Map),R=(0,F.useRef)(new Set),E=(0,F.useRef)(new Set),H=(0,F.useRef)(new Set),A=(0,F.useRef)(new Map),Y=(0,F.useRef)(()=>{}),K=(0,F.useCallback)((v,d)=>{let x=A.current,u=x.get(v);if(u){u.messages.push(d);return}let h={messages:[d],unsubscribe:()=>{},timer:setTimeout(()=>{let w=x.get(v);w&&(w.unsubscribe(),x.delete(v),qe.warn(`[SSE Queue] Expired: reportHubId=${v}, dropped=${w.messages.length} messages`))},3e4)};h.unsubscribe=wt(v,()=>{let w=x.get(v);if(w&&oe(v,{ignoreExpiry:!0})){w.unsubscribe(),clearTimeout(w.timer),x.delete(v),qe.info(`[SSE Queue] Replaying ${w.messages.length} messages for reportHubId=${v}`);for(let I of w.messages)Y.current(I)}}),x.set(v,h)},[]),te=v=>{H.current.add(v),setTimeout(()=>{H.current.delete(v)},3e4)},z=(0,F.useCallback)(v=>!!v&&H.current.has(v),[]),B=(0,F.useCallback)((v,d)=>{N(x=>{let u=d??x.find(I=>I.reportHubId===v)?.businessDate??null;return(x.some(I=>I.reportHubId===v)?x.map(I=>I.reportHubId===v?{...I,businessDate:u}:I):[{reportHubId:v,businessDate:u},...x]).sort((I,_)=>{let j=I.businessDate??"";return(_.businessDate??"").localeCompare(j)})})},[]),ce=()=>{n&&P(v=>!v)},ue=(0,F.useCallback)(v=>{E.current.add(v),N(d=>d.filter(x=>x.reportHubId!==v))},[]);(0,F.useEffect)(()=>{let v=new Set(r.map(d=>d.reportHubId));for(let d of E.current)v.has(d)||E.current.delete(d);N(d=>{let x=new Map;for(let u of r)E.current.has(u.reportHubId)||x.set(u.reportHubId,u);for(let u of d)x.has(u.reportHubId)||E.current.has(u.reportHubId)||x.set(u.reportHubId,u);return Array.from(x.values()).sort((u,h)=>{let w=u.businessDate?new Date(u.businessDate).getTime():0;return(h.businessDate?new Date(h.businessDate).getTime():0)-w})})},[r]);let ae=(0,F.useCallback)(v=>{if(!z(v.clientTempId))switch(v.type){case"comment-add":{let{comment:d,reportHubId:x}=v,u=oe(x,{ignoreExpiry:!0});if(u){if(u.commentItems.some(j=>j.id===d.id))return;let h=!1,w=l.current.get(x);if(w){for(let[j,se]of w.entries())if(se===d.content){w.delete(j),y.current.set(j,d.id),h=!0;break}}let I={...d,userName:d.userName||(h?Ye(t):"Unknown"),createdAt:d.createdAt||new Date().toISOString(),isMine:h},_={...u,commentItems:[...u.commentItems,I].sort((j,se)=>new Date(j.createdAt).getTime()-new Date(se.createdAt).getTime())};ve(x,_),Me(x),Pe(x),f(j=>j+1)}else K(x,v);break}case"comment-delete":{let{commentId:d,reportHubId:x}=v,u=oe(x,{ignoreExpiry:!0});if(u){let h={...u,commentItems:u.commentItems.filter(w=>w.id!==d)};ve(x,h),Me(x),Pe(x),f(w=>w+1)}else K(x,v);break}case"status-update":{let{statusType:d,value:x,reportHubId:u}=v,h=oe(u,{ignoreExpiry:!0});if(d==="star")if(m.current.get(u)===x&&m.current.delete(u),h){let w={...h,isStarred:x};ve(u,w),f(I=>I+1)}else K(u,v);else if(d==="read")if(c.current.get(u)===x&&c.current.delete(u),h){let w={...h,isRead:x};ve(u,w),f(I=>I+1)}else K(u,v);break}case"report-delete":{let{reportHubId:d}=v;R.current.delete(d),E.current.add(d);let x=A.current.get(d);x&&(x.unsubscribe(),clearTimeout(x.timer),A.current.delete(d));let u=oe(d,{ignoreExpiry:!0});u?.date&&(We(d,u.date),f(h=>h+1)),N(h=>h.filter(w=>w.reportHubId!==d));break}case"report-create":case"report-update":case"report-publish":{let{report:d}=v;ve(d.reportHubId,d),(v.type==="report-create"||v.type==="report-publish")&&(R.current.add(d.reportHubId),B(d.reportHubId,d.date)),f(x=>x+1);break}}},[z,B,t,K]);Y.current=ae,(0,F.useEffect)(()=>()=>{for(let v of A.current.values())v.unsubscribe(),clearTimeout(v.timer);A.current.clear()},[]),Ct({isSseEnabled:k,onMessage:ae});let U=async(v,d,x,u,h,w)=>{w?.skipLock||Me(v),h.onOptimistic?.();let I=u.clientTempId||crypto.randomUUID();te(I);let _=new FormData;_.append("intent",d),_.append("reportHubId",String(v)),_.append("businessDate",x),_.append("operationTimestamp",String(Date.now())),_.append("clientTempId",I);for(let[j,se]of Object.entries(u))j!=="clientTempId"&&_.append(j,se);try{let j=await fetch(`${s}/action`,{method:"POST",body:_,headers:{Accept:"application/json"}});if(!j.ok){let Bt=new Error(`Failed to ${d}`);throw Object.assign(Bt,{status:j.status}),Bt}let se=await j.json();if(se.status!=="OK"||d!=="create"&&String(se.reportHubId)!==String(v))throw new Error(`Invalid response for ${d}`);if(typeof se.clientTempId!="string"||se.clientTempId!==I)throw new Error(`Invalid clientTempId for ${d}`);return await h.onSuccess?.(se)}catch(j){throw qe.error(`${d} failed:`,j),h.onFailure?.(),j}finally{w?.keepLock||w?.skipLock||Pe(v)}},X=async(v,d,x)=>{let u=Number(v),h=-1*Date.now(),w=U(u,"addComment",x,{content:d,clientTempId:String(h)},{onOptimistic:()=>{l.current.has(u)||l.current.set(u,new Map),l.current.get(u)?.set(h,d),f(I=>I+1)},onSuccess:I=>{if(!I.newComment)throw new Error("No new comment returned");let _=I.newComment.id;y.current.set(h,_),l.current.get(u)?.delete(h);let j=oe(u,{ignoreExpiry:!0});return j&&!j.commentItems.some(se=>se.id===_)&&ie(u,{commentItems:[...j.commentItems,{...I.newComment,id:_,isMine:!0,userName:Ye(t)}],updatedAt:I.updatedAt}),_},onFailure:()=>{l.current.get(u)?.delete(h)}},{skipLock:!0}).finally(()=>T.current.delete(h));T.current.set(h,w),await w},S=async(v,d,x)=>{let u=Number(v);p.current.has(u)||p.current.set(u,new Set),p.current.get(u)?.add(d),f(w=>w+1);let h=d;if(d<0){let w=y.current.get(d);if(w!==void 0)h=w;else{let I=T.current.get(d);if(!I)return;try{h=await I}catch{return}}}await U(u,"deleteComment",x,{commentId:String(h)},{onSuccess:w=>{let I=typeof w.deletedCommentId=="string"?Number(w.deletedCommentId):h,_=oe(u,{ignoreExpiry:!0});_&&(ie(u,{commentItems:_.commentItems.filter(j=>j.id!==I),updatedAt:w.updatedAt}),Rt(I)),p.current.get(u)?.delete(d)},onFailure:()=>{p.current.get(u)?.delete(d)}},{skipLock:!0})},W=async(v,d,x)=>{let u=Number(v);await U(u,"toggleStar",x,{isStarred:String(d)},{onOptimistic:()=>{ie(u,{isStarred:d}),m.current.set(u,d),f(h=>h+1)},onSuccess:h=>{h.updatedStatus&&typeof h.updatedStatus.isStarred=="boolean"&&oe(u,{ignoreExpiry:!0})&&(ie(u,{isStarred:h.updatedStatus.isStarred,updatedAt:h.updatedAt}),f(I=>I+1)),m.current.delete(u)},onFailure:()=>{ie(u,{isStarred:!d}),m.current.delete(u)}},{skipLock:!0})},J=async(v,d,x)=>{let u=Number(v);await U(u,"toggleRead",x,{isRead:String(d)},{onOptimistic:()=>{ie(u,{isRead:d}),c.current.set(u,d),f(h=>h+1)},onSuccess:h=>{h.updatedStatus&&typeof h.updatedStatus.isRead=="boolean"&&oe(u,{ignoreExpiry:!0})&&(ie(u,{isRead:h.updatedStatus.isRead,updatedAt:h.updatedAt}),f(I=>I+1)),c.current.delete(u)},onFailure:()=>{ie(u,{isRead:!d}),c.current.delete(u)}},{skipLock:!0})},Q=(0,F.useRef)(J);Q.current=J;let xe=(0,F.useCallback)((v,d,x)=>Q.current(v,d,x),[]),L=async v=>{let d=-1*Date.now(),x=new Date().toISOString(),u={reportHubId:d,date:v,createdAt:x,author:Ye(t),userId:t?.id??"unknown",sourceType:"Internal",employeeName:Ye(t),updatedBy:Ye(t),updatedAt:x,category:null,creationCategory:null,visitTimeFrom:null,visitTimeTo:null,customerName:null,interviewers:[],subject:"",content:"",comments:[],isRead:!0,isStarred:!1,labels:[{id:0,name:a,color:"#9ca3af"}],commentItems:[]};vt(u,Date.now()+3e5,!1),N(h=>[{reportHubId:d,businessDate:v},...h]);try{let h=await U(0,"create",v,{clientTempId:String(d)},{onSuccess:I=>I});if(h.clientTempId&&h.clientTempId!==String(d))throw qe.warn(`[createReport] ID mismatch. req=${d}, res=${h.clientTempId}`),new Error("Optimistic ID mismatch");let w=Number(h.reportHubId);return Me(w),h.report&&(ve(w,h.report),f(I=>I+1)),N(I=>I.some(_=>_.reportHubId===w)?I.filter(_=>_.reportHubId!==d):I.map(_=>_.reportHubId===d?{..._,reportHubId:w}:_)),setTimeout(()=>Pe(w),1e3),w}catch(h){throw qe.error("[createReport] Failed or mismatched",h),N(w=>w.filter(I=>I.reportHubId!==d)),h}},V=async(v,d,x)=>{let u=Number(v);await U(u,"update",x,{...d.title&&{title:d.title},...d.content&&{content:d.content}},{onSuccess:()=>{let h=oe(u,{ignoreExpiry:!0});h&&(ie(u,{subject:d.title??h.subject,content:d.content??h.content}),f(w=>w+1))}})},ee=async(v,d)=>{let x=Number(v),u=oe(x,{ignoreExpiry:!0}),h=u?.labels||[];await U(x,"publish",d,{},{onOptimistic:()=>{if(u){let w=u.labels.filter(I=>I.name!==a);ie(x,{labels:w}),f(I=>I+1)}},onSuccess:w=>{w.report&&(ve(x,w.report),f(I=>I+1))},onFailure:()=>{ie(x,{labels:h}),f(w=>w+1)}},{skipLock:!0})},fe=async(v,d)=>{let x=Number(v),u=b.find(h=>h.reportHubId===x);E.current.add(x),N(h=>h.filter(w=>w.reportHubId!==x));try{await U(x,"delete",d,{},{onSuccess:h=>{We(x,d)}})}catch(h){if(h.status===404){We(x,d);return}E.current.delete(x),u&&N(I=>I.some(_=>_.reportHubId===x)?I:[u,...I].sort((_,j)=>(j.businessDate??"").localeCompare(_.businessDate??"")))}};return(0,sr.jsx)(Nt.Provider,{value:{user:t,pendingAddCommentIds:l,pendingDeleteCommentIds:p,pendingStarUpdates:m,pendingReadUpdates:c,resolvedIdMap:y,version:D,items:b,isSseEnabled:k,toggleSse:ce,addComment:X,deleteComment:S,toggleStar:W,toggleRead:xe,createReport:L,updateReport:V,publishReport:ee,deleteReport:fe,removeStaleItem:ue},children:e})};var Re=require("react");var Ke=(e,t,r)=>{let{pendingAddCommentIds:n,pendingDeleteCommentIds:s,resolvedIdMap:a,version:l,addComment:p,deleteComment:m}=le(),[c,y]=(0,Re.useState)(null),D=(0,Re.useCallback)(k=>e&&m(e.reportHubId,k,e.date??""),[e,m]),f=(0,Re.useCallback)(k=>e&&t?p(e.reportHubId,k,e.date??""):Promise.resolve(),[e,t,p]),b=(0,Re.useRef)([]);return{uiComments:(0,Re.useMemo)(()=>{if(!e)return[];let k=$t(e.comments,e.commentItems,r),P=s.current.get(e.reportHubId);P?.size&&(k=k.filter(R=>!P.has(R.id)));let T=n.current.get(e.reportHubId);if(T?.size&&t){let R=new Set(k.map(H=>H.id)),E=t.displayName?.trim()||(t.name?`${t.name.familyName??""} ${t.name.givenName??""}`.trim():"")||t.emails?.[0]?.value||"Unknown";for(let[H,A]of T){if(P?.has(H)||R.has(H))continue;let Y=a.current.get(H);Y&&R.has(Y)||k.some(K=>K.isMine&&K.content===A&&typeof K.id=="number"&&K.id>0)||k.push({id:H,authorName:E,content:A,createdAt:new Date().toISOString(),isMine:!0,isLegacy:!1})}}return JSON.stringify(k)===JSON.stringify(b.current)?b.current:(b.current=k,k)},[e,t,r,s,n,a,l]),handleAddComment:f,handleDeleteComment:D,pendingDeleteId:c,setPendingDeleteId:y,resolvedIdMap:a.current}};var Ae=require("react"),Qe=(e,t)=>{let{enableMutationObserver:r=!1,bottomGap:n=4,minFallbackHeight:s=240}=t??{},[a,l]=(0,Ae.useState)(600),p=(0,Ae.useCallback)(()=>{if(typeof window>"u")return;let m=e.current;if(!m||m.offsetParent===null&&window.getComputedStyle(m).position!=="fixed")return;let c=B=>Number.parseFloat(B)||0,{top:y}=m.getBoundingClientRect(),D=m.parentElement?.getBoundingClientRect(),f=window.getComputedStyle(document.documentElement),b=c(f.getPropertyValue("--footer-height")),N=c(f.getPropertyValue("--header-height")),k=c(f.getPropertyValue("--scrollbar-height")),P=window.getComputedStyle(m),T=c(P.marginBottom),R=c(P.paddingBottom),E=window.innerHeight-b-k-n,H=D?Math.min(D.bottom,E):E,A=D?Math.max(D.top,N):N,Y=Math.max(y,A),K=H-Y-T-R,te=Number.isFinite(K)?Math.floor(K):0,z=te>0?te:s;z>0&&Number.isFinite(z)&&l(B=>Math.abs(B-z)>1?z:B)},[n,e,s]);return(0,Ae.useEffect)(()=>{if(typeof window>"u")return;let m=null,c=null,y=null,D=null,f=()=>{m!==null&&window.cancelAnimationFrame(m),m=window.requestAnimationFrame(()=>{p()})};f(),c=window.setTimeout(()=>{f()},150);let b=e.current;return typeof ResizeObserver<"u"&&b&&(y=new ResizeObserver(()=>{f()}),y.observe(b),b.parentElement&&y.observe(b.parentElement)),r&&typeof MutationObserver<"u"&&(D=new MutationObserver(()=>{f()}),D.observe(document.documentElement,{attributes:!0,attributeFilter:["style"]})),window.addEventListener("resize",f),()=>{m!==null&&window.cancelAnimationFrame(m),c!==null&&window.clearTimeout(c),window.removeEventListener("resize",f),y?.disconnect(),D?.disconnect()}},[r,p,e]),{viewportHeight:a,updateViewportHeight:p}};var ar=require("@aiquants/virtualscroll"),Xe=180,ct=160,Je=6,Oe=ct-Je,Ze=.8,et={maxVelocity:18,deceleration:.0018,startVelocityThreshold:.03},tt=20,St=6,rt={reportHubId:-1,businessDate:null},kt={report:null,error:null,isLoading:!1,isRefetching:!1},Et=240,nt=15,Ht=8,Lt=3,Mt={enabled:!0,renderVisual:ar.tapScrollCircleSampleVisual,maxSpeedCurve:{exponentialSteepness:7.5,exponentialScale:14,easedOffset:.18},maxSpeedMultiplier:18};var we=require("react");var or=require("@radix-ui/react-slot"),ir=require("class-variance-authority"),lr=ke(require("react"));var dr=require("react/jsx-runtime"),Kr=(0,ir.cva)("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"}}),Ce=lr.forwardRef(({className:e,variant:t,size:r,asChild:n=!1,...s},a)=>(0,dr.jsx)(n?or.Slot:"button",{className:G(Kr({variant:t,size:r,className:e})),ref:a,...s}));Ce.displayName="Button";var ur=require("react/jsx-runtime");function cr({className:e,type:t,...r}){return(0,ur.jsx)("input",{type:t,"data-slot":"input",className:G("flex h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs outline-none transition-[color,box-shadow] selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:font-medium file:text-foreground file:text-sm placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30","focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50","aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",e),...r})}var mr=ke(require("@radix-ui/react-label"));var pr=require("react/jsx-runtime");function _e({className:e,...t}){return(0,pr.jsx)(mr.Root,{"data-slot":"label",className:G("flex select-none items-center gap-2 font-medium text-sm leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50",e),...t})}var br=require("react/jsx-runtime");function fr({className:e,...t}){return(0,br.jsx)("textarea",{"data-slot":"textarea",className:G("flex min-h-15 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30","aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",e),...t})}var de=require("react/jsx-runtime"),st=({report:e,onCancel:t,onPublishSuccess:r})=>{let{updateReport:n,publishReport:s}=le(),[a,l]=(0,we.useState)(e.subject??""),[p,m]=(0,we.useState)(e.content??""),[c,y]=(0,we.useState)(!1),D=(0,we.useRef)(e.reportHubId);(0,we.useEffect)(()=>{e.reportHubId!==D.current&&(l(e.subject??""),m(e.content??""),D.current=e.reportHubId)},[e.reportHubId,e.subject,e.content]);let f=async()=>{y(!0);try{await n(e.reportHubId,{title:a,content:p},e.date??"")}finally{y(!1)}},b=async()=>{y(!0);try{await n(e.reportHubId,{title:a,content:p},e.date??""),await s(e.reportHubId,e.date??""),r?.()}finally{y(!1)}};return(0,de.jsxs)("div",{className:"space-y-6 p-1",children:[(0,de.jsxs)("div",{className:"space-y-2",children:[(0,de.jsx)(_e,{htmlFor:`report-title-${e.reportHubId}`,children:"\u30BF\u30A4\u30C8\u30EB"}),(0,de.jsx)(cr,{id:`report-title-${e.reportHubId}`,value:a,onChange:N=>l(N.target.value),placeholder:"\u65E5\u5831\u306E\u30BF\u30A4\u30C8\u30EB\u3092\u5165\u529B",disabled:c})]}),(0,de.jsxs)("div",{className:"space-y-2",children:[(0,de.jsx)(_e,{htmlFor:`report-content-${e.reportHubId}`,children:"\u5185\u5BB9"}),(0,de.jsx)(fr,{id:`report-content-${e.reportHubId}`,value:p,onChange:N=>m(N.target.value),placeholder:"\u65E5\u5831\u306E\u5185\u5BB9\u3092\u5165\u529B",className:"min-h-50",disabled:c})]}),(0,de.jsxs)("div",{className:"flex justify-end gap-2",children:[t&&(0,de.jsx)(Ce,{variant:"outline",onClick:t,disabled:c,children:"\u30AD\u30E3\u30F3\u30BB\u30EB"}),(0,de.jsx)(Ce,{variant:"secondary",onClick:f,disabled:c,children:"\u4FDD\u5B58"}),(0,de.jsx)(Ce,{onClick:b,disabled:c,children:"\u516C\u958B"})]})]})};var gr=require("react/jsx-runtime"),Fe=({className:e})=>(0,gr.jsx)("span",{className:G("text-blue-500",e),children:"\u25CF"});var i=require("react/jsx-runtime"),Qr=(e,t,r)=>{(0,M.useEffect)(()=>{let n=e.current;if(!n)return;let s=new ResizeObserver(()=>{r(t,n.offsetHeight)});return s.observe(n),()=>s.disconnect()},[t,r,e])},Xr=({itemId:e,onHeightMeasured:t,children:r})=>{let n=(0,M.useRef)(null);return Qr(n,e,t),(0,i.jsx)("div",{ref:n,className:"px-2 pb-3","data-daily-report-button":e,children:r})},Jr=e=>e.affiliation?.trim()?`${e.name}\uFF08${e.affiliation}\uFF09`:e.name,Pt=({dailyReportItems:e,userId:t,selectedItemId:r,onSelectItem:n})=>{let[s,a]=(0,M.useState)(new Map),l=(0,M.useRef)(null),p=(0,M.useRef)(null),{viewportHeight:m,updateViewportHeight:c}=Qe(l,{enableMutationObserver:!0}),y=Dt(),[D,f]=(0,M.useState)(""),[b,N]=(0,M.useState)(!1),k=(0,M.useRef)(null),P=(0,M.useRef)(null),T=(0,M.useRef)(e);T.current=e;let R=(0,M.useRef)(null);(0,M.useEffect)(()=>{if(r!=null&&p.current){let S=e.findIndex(W=>W.reportHubId===r);if(S!==-1){if(R.current?.id===r&&R.current?.index===S)return;p.current.scrollToIndex(S,{align:"top"}),R.current={id:r,index:S}}}else R.current=null},[r,e]);let E=(0,M.useRef)(n);E.current=n,(0,M.useEffect)(()=>{if(p.current){let S=document.querySelector(".test-daily-report-detail-list");if(S){let W=p.current,J=Object.assign({},W,{findReportIndex:Q=>T.current.findIndex(xe=>xe.reportHubId===Q),getReportItem:Q=>T.current[Q],selectItem:Q=>E.current?.(Q)});S.__virtualScroll=J}}});let H=e.length,A=(0,M.useCallback)(S=>S>=H?rt:e[S],[e,H]),Y=(0,M.useCallback)((S,W)=>{if(H===0)return;let J=Math.max(0,S),Q=Math.min(H-1,W);if(J>Q)return;let xe=new Set;for(let L=J;L<=Q;L++){let V=A(L);if(V.businessDate&&xe.add(V.businessDate),xe.size>=St)break}xe.forEach(L=>{y(L)})},[A,H,y]),K=(0,M.useCallback)(({renderingStartIndex:S,renderingEndIndex:W,visibleStartIndex:J})=>{if(H===0)return;let Q=A(J);Q?.businessDate&&f(ne(Q.businessDate)),Y(S,W),Y(W+1,W+tt),Y(S-tt,S-1)},[A,H,Y]),te=(0,M.useCallback)(()=>{let S=l.current;S&&(S.classList.contains("is-scrolling")||S.classList.add("is-scrolling"),P.current&&clearTimeout(P.current),P.current=setTimeout(()=>{S&&S.classList.remove("is-scrolling"),P.current=null},150))},[]),z=(0,M.useCallback)(S=>(0,i.jsx)(Ue,{...S,label:D,isWheelScrollActive:b}),[D,b]);(0,M.useEffect)(()=>{let S=l.current;if(!S)return;let W=()=>{N(!0),k.current&&clearTimeout(k.current),k.current=window.setTimeout(()=>{N(!1),k.current=null},240)};return S.addEventListener("wheel",W,{passive:!0}),()=>{S.removeEventListener("wheel",W),k.current&&clearTimeout(k.current)}},[]);let B=(0,M.useCallback)((S,W)=>{if(a(J=>{if(J.get(S)===W)return J;let Q=new Map(J);return Q.set(S,W),Q}),p.current){let J=T.current.findIndex(Q=>Q.reportHubId===S);J!==-1&&p.current.updateItemSize(J,W)}},[]),ce=(0,M.useCallback)(S=>{let W=A(S);return s.get(W.reportHubId)||350},[A,s]),ue=(0,M.useCallback)(S=>A(S).reportHubId,[A]),ae=(0,M.useMemo)(()=>({enabled:!0,renderVisual:ut.tapScrollCircleSampleVisual}),[]);(0,M.useEffect)(()=>{H>=0&&c()},[H,c]),(0,M.useEffect)(()=>{H!==0&&Y(0,Math.min(H-1,tt))},[H,Y]);let U=(0,M.useCallback)(S=>{let W=T.current.findIndex(J=>J.reportHubId===S);W>=0&&setTimeout(()=>p.current?.scrollToIndex(W,{align:"bottom"}),300)},[]),X=(0,M.useCallback)(S=>(0,i.jsx)(en,{item:S,onHeightMeasured:B,onCommentAdded:U,userId:t},S.reportHubId),[B,U,t]);return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("div",{ref:l,className:"flex min-h-0 flex-1 flex-col",children:(0,i.jsx)(ut.VirtualScroll,{ref:p,itemCount:H,getItem:A,getItemKey:ue,getItemHeight:ce,viewportSize:m,overscanCount:nt,scrollBarOptions:{width:8,tapScrollCircleOptions:ae,renderThumbOverlay:z},behaviorOptions:{wheelSpeedMultiplier:Ze,inertiaOptions:et},onRangeChange:K,onScroll:te,className:"t-detail-list test-daily-report-detail-list relative w-full",children:X})}),H===0&&(0,i.jsx)("div",{className:"py-8 text-center",children:(0,i.jsx)("p",{className:"text-slate-500",children:"\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093"})})]})},Zr=()=>(0,i.jsxs)("div",{className:"rounded-2xl border border-slate-200 bg-white p-4 shadow-sm",children:[(0,i.jsxs)("div",{className:"mb-4 flex flex-wrap gap-2",children:[(0,i.jsx)("div",{className:"h-6 w-20 rounded-full bg-slate-200"}),(0,i.jsx)("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),(0,i.jsx)("div",{className:"h-6 w-24 rounded-full bg-slate-200"}),(0,i.jsx)("div",{className:"h-6 w-28 rounded-full bg-slate-200"})]}),(0,i.jsxs)("div",{className:"mb-3 grid gap-3 md:grid-cols-[minmax(0,1fr)_220px]",children:[(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsx)("div",{className:"h-5 w-40 rounded bg-slate-200"}),(0,i.jsx)("div",{className:"h-5 w-56 rounded bg-slate-200"}),(0,i.jsx)("div",{className:"h-24 rounded-lg bg-slate-200"})]}),(0,i.jsxs)("div",{className:"rounded-xl bg-slate-100 p-3",children:[(0,i.jsx)("div",{className:"mb-2 h-4 w-24 rounded bg-slate-200"}),(0,i.jsx)("div",{className:"mb-2 h-4 w-28 rounded bg-slate-200"}),(0,i.jsx)("div",{className:"h-4 w-32 rounded bg-slate-200"})]})]}),(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsx)("div",{className:"h-4 w-24 rounded bg-slate-200"}),(0,i.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,i.jsx)("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),(0,i.jsx)("div",{className:"h-6 w-16 rounded-full bg-slate-200"}),(0,i.jsx)("div",{className:"h-6 w-16 rounded-full bg-slate-200"})]}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)("div",{className:"h-16 rounded-lg bg-slate-200"}),(0,i.jsx)("div",{className:"h-16 rounded-lg bg-slate-200"})]})]})]}),en=({item:e,onHeightMeasured:t,onCommentAdded:r,userId:n})=>{let{report:s,error:a,isLoading:l,isRefetching:p}=Ie(e.reportHubId,e.businessDate),{removeStaleItem:m}=le(),{draftLabelName:c}=Z(),[y,D]=(0,M.useState)(!1),[f,b]=(0,M.useState)(!1),N=(0,M.useRef)(!1),k=(0,M.useRef)(!1);p&&(k.current=!0),(0,M.useEffect)(()=>{!(s||l||p||a)&&k.current&&e.reportHubId>0&&m(e.reportHubId)},[s,l,p,a,e.reportHubId,m]);let P=s?.labels.some(R=>R.name===c),T=n&&s?.userId===n;return(0,M.useEffect)(()=>{s&&T&&P&&!y&&!f?(D(!0),N.current=!0):s&&!P&&y&&N.current&&(D(!1),N.current=!1)},[s,T,P,y,f]),(0,i.jsx)(Xr,{itemId:e.reportHubId,onHeightMeasured:t,children:a?(0,i.jsx)(sn,{itemId:e.reportHubId}):s?y?(0,i.jsx)(st,{report:s,onCancel:()=>{D(!1),b(!0)},onPublishSuccess:()=>{D(!1)}}):(0,i.jsx)(nn,{item:e,report:s,onCommentAdded:r,userId:n,onDoubleClick:T?()=>D(!0):void 0}):(0,i.jsx)(Zr,{})})},tn=({report:e,isRead:t,isStarred:r,isMine:n,onToggleRead:s,onToggleStar:a,onDelete:l,visitTimeDisplay:p,categoryLabel:m,fieldLabels:c,sourceTypeConfigs:y})=>(0,i.jsxs)("div",{className:"flex flex-wrap items-center gap-2 font-medium text-slate-600 text-xs",children:[(()=>{let D=e.sourceType,f=D?y?.[D]:void 0;return f?(0,i.jsx)("span",{className:G("inline-flex items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",f.badgeClassName),children:f.label}):null})(),(0,i.jsx)("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?(0,i.jsx)(Ne.Star,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):(0,i.jsx)(Ne.Star,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),(0,i.jsx)("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?(0,i.jsx)(Ne.Check,{className:"h-3.5 w-3.5 text-blue-500"}):(0,i.jsx)(Fe,{className:"text-xs"})}),n&&(0,i.jsx)("button",{type:"button",onClick:l,"data-detail-delete-button":e.reportHubId,className:"text-lg leading-none transition-transform focus:outline-none active:scale-125",title:"\u524A\u9664\u3059\u308B",children:(0,i.jsx)(Ne.Trash2,{className:"h-4 w-4 text-slate-300 hover:text-red-500"})}),(0,i.jsxs)("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:[(0,i.jsx)("span",{className:"text-[10px] text-blue-500 uppercase tracking-wide",children:c.id}),e.reportHubId]}),(0,i.jsxs)("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[(0,i.jsx)("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:c.businessDate}),ne(e.date)]}),(0,i.jsxs)("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[(0,i.jsx)("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:c.author}),re(e.employeeName)]}),(0,i.jsxs)("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[(0,i.jsx)("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:c.visitTime}),p||"-"]}),(0,i.jsxs)("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-slate-100 px-3 py-1",children:[(0,i.jsx)("span",{className:"text-[10px] text-slate-400 uppercase tracking-wide",children:c.updatedAt}),ne(e.updatedAt)]}),m&&(0,i.jsxs)("span",{className:"inline-flex items-center gap-1 whitespace-nowrap rounded-full bg-amber-100 px-3 py-1 text-amber-700",children:[(0,i.jsx)("span",{className:"text-[10px] text-amber-500 uppercase tracking-wide",children:c.category}),m]})]}),rn=({report:e,visitTimeDisplay:t,categoryLabel:r,fieldLabels:n})=>(0,i.jsxs)("div",{className:"flex flex-col gap-3 rounded-xl bg-slate-100 p-4 text-slate-600 text-xs",children:[(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.author}),(0,i.jsx)("span",{className:"text-slate-700 text-sm",children:re(e.author)})]}),(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.createdAt}),(0,i.jsx)("span",{className:"text-slate-700 text-sm",children:ne(e.createdAt)})]}),(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.updatedBy}),(0,i.jsx)("span",{className:"text-slate-700 text-sm",children:re(e.updatedBy)})]}),(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.updatedAt}),(0,i.jsx)("span",{className:"text-slate-700 text-sm",children:ne(e.updatedAt)})]}),(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.businessDate}),(0,i.jsx)("span",{className:"text-slate-700 text-sm",children:ne(e.date)})]}),t&&(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.visitTime}),(0,i.jsx)("span",{className:"text-slate-700 text-sm",children:t})]}),r&&(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("span",{className:"font-semibold text-[10px] text-slate-500 uppercase tracking-wide",children:n.categoryInfo}),(0,i.jsx)("span",{className:"text-slate-700 text-sm",children:r})]})]}),nn=({item:e,report:t,onCommentAdded:r,userId:n,onDoubleClick:s})=>{let a=(0,M.useRef)(null),{toggleStar:l,toggleRead:p,pendingStarUpdates:m,pendingReadUpdates:c,deleteReport:y,user:D}=le(),{uiComments:f,handleAddComment:b,handleDeleteComment:N,pendingDeleteId:k,setPendingDeleteId:P,resolvedIdMap:T}=Ke(t,D,n),{fieldLabels:R,sourceTypeConfigs:E}=Z(),H=async U=>{await b(U),r?.(e.reportHubId)},A=m.current.has(t.reportHubId)?m.current.get(t.reportHubId)??!1:t.isStarred,Y=c.current.has(t.reportHubId)?c.current.get(t.reportHubId)??!1:t.isRead,K=!!(n&&t.userId===n),te=async()=>{try{await p(t.reportHubId,!Y,t.date??"")}catch{}},z=async()=>{try{await l(t.reportHubId,!A,t.date??"")}catch{}},B=async()=>{confirm("\u672C\u5F53\u306B\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F")&&await y(t.reportHubId,t.date??"")},ce=(0,M.useMemo)(()=>t.content?t.content.replace(/<br\s*\/??\s*>/gi,`
|
|
2
|
+
`).trim():"",[t.content]),ue=(0,M.useMemo)(()=>{let U=t.visitTimeFrom?.trim(),X=t.visitTimeTo?.trim();return U&&X?`${U} - ${X}`:U||X||""},[t.visitTimeFrom,t.visitTimeTo]),ae=(0,M.useMemo)(()=>{let U=[];return t.category?.trim()&&U.push(`${R.category}: ${t.category}`),t.creationCategory?.trim()&&U.push(`${R.creationCategory}: ${t.creationCategory}`),U.join(" / ")},[t.category,t.creationCategory,R.category,R.creationCategory]);return(0,i.jsx)("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 ${Y?"":"border-l-4 border-l-blue-500"}`,children:(0,i.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,i.jsx)(tn,{report:t,isRead:Y,isStarred:A,isMine:K,onToggleRead:te,onToggleStar:z,onDelete:B,visitTimeDisplay:ue,categoryLabel:ae,fieldLabels:R,sourceTypeConfigs:E}),(0,i.jsxs)("div",{className:"grid gap-4 md:grid-cols-[minmax(0,1fr)_240px]",children:[(0,i.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,i.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:R.customer}),(0,i.jsx)("span",{className:"font-semibold text-base text-slate-900",children:re(t.customerName)})]}),(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:R.subject}),(0,i.jsx)("span",{className:"text-slate-700 text-sm",children:re(t.subject)})]})]}),ce&&(0,i.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,i.jsx)("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:R.content}),(0,i.jsx)("div",{className:"whitespace-pre-wrap rounded-xl bg-slate-50 p-3 text-slate-700 text-sm leading-relaxed",children:ce})]}),t.interviewers.length>0&&(0,i.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,i.jsx)("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:R.interviewers}),(0,i.jsx)("ul",{className:"flex flex-wrap gap-2",children:t.interviewers.map(U=>(0,i.jsx)("li",{className:"rounded-full bg-slate-100 px-3 py-1 text-slate-600 text-xs",children:Jr(U)},`${U.name}-${U.affiliation||""}`))})]}),f.length>0&&(0,i.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,i.jsx)("span",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide",children:R.comments}),(0,i.jsx)($e,{comments:f,reportHubId:t.reportHubId,businessDate:t.date??"",onDeleteComment:N,pendingDeleteId:k,onPendingDeleteIdChange:P,resolvedIdMap:T})]}),(0,i.jsx)("div",{className:"mt-auto",ref:a,children:(0,i.jsx)(Ve,{reportHubId:t.reportHubId,businessDate:t.date??"",onAddComment:H})})]}),(0,i.jsx)(rn,{report:t,visitTimeDisplay:ue,categoryLabel:ae,fieldLabels:R})]})]})})},sn=({itemId:e})=>(0,i.jsx)("div",{className:"rounded-2xl border border-red-200 bg-red-50 p-4 text-red-700 text-sm",children:(0,i.jsxs)("p",{children:["\u65E5\u5831 ",e.toLocaleString()," \u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002"]})});var ge=require("@aiquants/swipe-overlay"),yr=require("@aiquants/virtualscroll"),Te=require("lucide-react"),C=require("react");var be=ke(require("@radix-ui/react-tabs")),mt=ke(require("react"));var ft=require("react/jsx-runtime"),pt=be.Root,at=mt.forwardRef(({className:e,...t},r)=>(0,ft.jsx)(be.List,{ref:r,className:G("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",e),...t}));at.displayName=be.List.displayName;var ot=mt.forwardRef(({className:e,...t},r)=>(0,ft.jsx)(be.Trigger,{ref:r,className:G("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 font-medium text-sm ring-offset-background transition-all focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-2xs",e),...t}));ot.displayName=be.Trigger.displayName;var Be=mt.forwardRef(({className:e,...t},r)=>(0,ft.jsx)(be.Content,{ref:r,className:G("data-[state=inactive]:hidden","mt-2 ring-offset-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",e),...t}));Be.displayName=be.Content.displayName;var o=require("react/jsx-runtime"),an=(e,t,r,n)=>{let[s,a]=(0,C.useState)(!1),[l,p]=(0,C.useState)(!1),m=(0,C.useRef)(null),c=(0,C.useRef)(null),y=(0,C.useRef)(null),D=(0,C.useMemo)(()=>t===null?null:r.find(N=>N.reportHubId===t)??null,[r,t]),f=e&&s&&D!==null;(0,C.useEffect)(()=>{if(f)p(!0);else{let N=setTimeout(()=>p(!1),300);return()=>clearTimeout(N)}},[f]),(0,C.useEffect)(()=>{if(!(typeof window>"u")){if(e&&s&&t!==null&&!m.current){let N=`overlay-${Date.now()}`;window.history.pushState({...window.history.state,dailyReportOverlay:N},"",window.location.href),m.current=N}else!(e&&s)&&m.current&&(m.current=null);return s?(y.current=document.body.style.overflow,document.body.style.overflow="hidden"):y.current!==null&&(document.body.style.overflow=y.current,y.current=null),()=>{y.current!==null&&(document.body.style.overflow=y.current)}}},[e,s,t]),(0,C.useEffect)(()=>{if(typeof window>"u")return;let N=()=>{m.current&&(c.current=t,m.current=null,a(!1),n(null))};return window.addEventListener("popstate",N),()=>window.removeEventListener("popstate",N)},[t,n]);let b=(0,C.useCallback)(()=>{e&&(c.current=t,a(!1),n(null),m.current&&typeof window<"u"&&(m.current=null,window.history.back()))},[e,t,n]);return{isMobileDetailOpen:s,setIsMobileDetailOpen:a,isOverlayMounted:l,shouldShowOverlay:f,handleOverlayClose:b,lastClosedItemIdRef:c,selectedItem:D}},on=(e,t,r,n,s)=>{let a=(0,C.useRef)(null),l=(0,C.useRef)(void 0);l.current!==e?.reportHubId&&(l.current=e?.reportHubId,a.current=null),(0,C.useEffect)(()=>{n||(a.current=null)},[n]);let p=(0,C.useCallback)(async(m=!1)=>{if(!e)return;m||(a.current=e.reportHubId);let c=!e.isRead;try{await s(e.reportHubId,c,e.date??"")}catch{}},[e,s]);return(0,C.useEffect)(()=>{if(r&&e&&!e.isRead&&!t){if(a.current===e.reportHubId)return;let m=setTimeout(()=>p(!0),500);return()=>clearTimeout(m)}},[e,t,r,p]),{handleToggleRead:p}},At=({dailyReportItems:e,initialSelectedBusinessDate:t=null,initialSelectedReportHubId:r=null,autoMarkRead:n=!1,selectedReportHubId:s,onSelectItem:a,userId:l})=>{let p=(0,C.useRef)(null),m=(0,C.useRef)(null),{viewportHeight:c,updateViewportHeight:y}=Qe(p),[D,f]=(0,C.useState)(""),[b,N]=(0,C.useState)(!1),[k,P]=(0,C.useState)(!1),T=(0,C.useRef)(null),R=(0,C.useRef)(null),E=e.length,H=(0,C.useRef)(null),{isMobileDetailOpen:A,setIsMobileDetailOpen:Y,isOverlayMounted:K,shouldShowOverlay:te,handleOverlayClose:z,lastClosedItemIdRef:B,selectedItem:ce}=an(k,s,e,a),ue=(0,C.useMemo)(()=>Number.isFinite(c)&&c>0?{height:c}:void 0,[c]);(0,C.useEffect)(()=>{if(typeof window>"u")return;let L=window.matchMedia("(max-width: 639px)"),V=d=>P(d.matches);P(L.matches),L.addEventListener("change",V);let ee=()=>requestAnimationFrame(y);window.addEventListener("resize",ee),y();let fe=p.current,v=()=>{N(!0),T.current&&clearTimeout(T.current),T.current=window.setTimeout(()=>{N(!1),T.current=null},Et)};return fe?.addEventListener("wheel",v,{passive:!0}),()=>{L.removeEventListener("change",V),window.removeEventListener("resize",ee),fe?.removeEventListener("wheel",v),T.current&&clearTimeout(T.current)}},[y]),(0,C.useEffect)(()=>{if(!E){R.current=null,s!==null&&a(null);return}let L=`${r??""}|${t??""}`,V=(r??null)!==null||(t??null)!==null;if(V||(R.current=null),V&&R.current!==L){let ee=r&&e.find(fe=>fe.reportHubId===r)||t&&e.find(fe=>fe.businessDate===t);if(ee){R.current=L,s!==ee.reportHubId&&a(ee.reportHubId);return}}},[e,t,r,s,E,a]),(0,C.useEffect)(()=>{if(k||A||B.current===null)return;let L=B.current;B.current=null;let V=e.findIndex(ee=>ee.reportHubId===L);V>=0&&requestAnimationFrame(()=>m.current?.focusItemAtIndex(V))},[A,k,e,B]),(0,C.useEffect)(()=>{E>0&&f(L=>{let V=ne(e[0]?.businessDate);return L===V?L:V})},[e,E]);let ae=(0,C.useRef)(e);ae.current=e,(0,C.useEffect)(()=>{if(m.current){let L=document.querySelector(".test-daily-report-list");L&&(L.__virtualScroll={...m.current,findReportIndex:V=>ae.current.findIndex(ee=>ee.reportHubId===V),getReportIds:(V=20)=>ae.current.slice(0,V).map(ee=>ee.reportHubId)})}});let U=(0,C.useCallback)(L=>{L<=0||(a(L),k&&Y(!0))},[k,a,Y]),X=(0,C.useCallback)(L=>L<E?e[L]:rt,[e,E]),S=(0,C.useCallback)(()=>ct,[]),W=(0,C.useCallback)(L=>{let V=X(L.visibleStartIndex);V?.reportHubId>0&&f(ee=>{let fe=ne(V.businessDate);return ee===fe?ee:fe})},[X]),J=(0,C.useCallback)(L=>{let V=X(L);if(V&&V.reportHubId>0){if(V.reportHubId===s)return;a(V.reportHubId)}},[X,a,s]),Q=(0,C.useCallback)(()=>{let L=p.current;L&&(L.classList.contains("is-scrolling")||L.classList.add("is-scrolling"),H.current&&clearTimeout(H.current),H.current=setTimeout(()=>{L&&L.classList.remove("is-scrolling"),H.current=null},150))},[]),xe=(0,C.useCallback)(L=>(0,o.jsx)(Ue,{...L,label:D,isWheelScrollActive:b}),[D,b]);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)("div",{className:"flex h-full min-h-0 gap-4",children:[(0,o.jsx)("div",{ref:p,className:"flex min-h-0 w-full sm:w-90",style:ue,children:(0,o.jsx)(yr.VirtualScroll,{ref:m,itemCount:E,getItem:X,getItemHeight:S,viewportSize:c,overscanCount:nt,scrollBarOptions:{width:Ht,tapScrollCircleOptions:Mt,renderThumbOverlay:xe},behaviorOptions:{inertiaOptions:et,wheelSpeedMultiplier:Ze},onRangeChange:W,onScroll:Q,onItemFocus:J,contentInsets:{top:Je,bottom:Je},className:"test-daily-report-list relative w-full",children:L=>(0,o.jsx)(mn,{item:L,isActive:L.reportHubId===s,onSelect:U},L.reportHubId)})}),(0,o.jsx)(hr,{dailyReportItems:e,selectedItem:ce,heightStyle:ue,autoMarkRead:!k&&n,isActive:s!==null,userId:l})]}),E===0&&(0,o.jsx)("div",{className:"py-8 text-center",children:(0,o.jsx)("p",{className:"text-slate-500",children:"\u30C7\u30FC\u30BF\u304C\u3042\u308A\u307E\u305B\u3093"})}),K&&(0,o.jsx)(cn,{isOpen:te,selectedItem:ce,onClose:z,autoMarkRead:k&&n,userId:l})]})},ln=()=>(0,o.jsx)("div",{className:"px-2 pb-3",style:{height:Oe},children:(0,o.jsxs)("div",{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:[(0,o.jsxs)("div",{className:"mb-3 flex flex-wrap items-center gap-3",children:[(0,o.jsx)("div",{className:"h-4 w-24 rounded bg-slate-200"}),(0,o.jsx)("div",{className:"h-4 w-24 rounded bg-slate-200"}),(0,o.jsx)("div",{className:"h-4 w-24 rounded bg-slate-200"})]}),(0,o.jsxs)("div",{className:"space-y-2",children:[(0,o.jsx)("div",{className:"h-4 w-full rounded bg-slate-200"}),(0,o.jsx)("div",{className:"h-4 w-11/12 rounded bg-slate-200"}),(0,o.jsx)("div",{className:"h-4 w-5/6 rounded bg-slate-200"})]})]})}),hr=({dailyReportItems:e,selectedItem:t,heightStyle:r,autoMarkRead:n=!1,isActive:s=!0,userId:a})=>{let[l,p]=(0,C.useState)("article"),[m,c]=(0,C.useState)(!1),{draftLabelName:y,fieldLabels:D,sourceTypeConfigs:f}=Z(),{report:b,error:N,isLoading:k}=Ie(t?.reportHubId??-1,t?.businessDate??null),P=(0,C.useRef)(null),T=(0,C.useRef)(null),R=(0,C.useRef)(!1);(0,C.useEffect)(()=>{if(!b)return;let z=b.labels.some(B=>B.name===y);b.reportHubId!==T.current?(T.current=b.reportHubId,z?(c(!0),R.current=!0):(c(!1),R.current=!1)):!z&&m&&R.current&&(c(!1),R.current=!1)},[b,m,y]);let E=!!(a&&b?.userId===a),H=(0,C.useCallback)(()=>{setTimeout(()=>{P.current&&P.current.scrollTo({top:P.current.scrollHeight,behavior:"smooth"})},100)},[]);if(e&&(e.length===0||!t))return(0,o.jsx)("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:(0,o.jsx)("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:(0,o.jsx)("p",{children:"\u5DE6\u5074\u306E\u4E00\u89A7\u304B\u3089\u65E5\u5831\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002"})})});let A=ne(b?.date??t?.businessDate),Y=b?.employeeName||b?.author?re(b.employeeName??b.author):"",K=k||!b,te=(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)("div",{className:"space-y-1",children:[(0,o.jsx)("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:D.businessDate}),(0,o.jsx)("div",{className:"text-slate-900 text-sm dark:text-slate-100",children:A}),(0,o.jsxs)("div",{className:"flex min-h-4 items-center gap-1 text-slate-500 text-xs dark:text-slate-300",children:[(0,o.jsxs)("span",{children:[D.author,":"]}),K?(0,o.jsx)("div",{className:"h-3 w-24 animate-pulse rounded bg-slate-200 dark:bg-slate-700"}):(0,o.jsx)("span",{children:Y}),(()=>{let z=b?.sourceType,B=z?f?.[z]:void 0;return B?(0,o.jsx)("span",{className:G("ml-2 inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",B.badgeClassName),children:B.label}):null})()]})]}),(0,o.jsxs)(pt,{value:l,onValueChange:z=>p(z),className:"flex min-h-0 flex-1 flex-col",children:[(0,o.jsx)(at,{className:"grid grid-cols-2 gap-1 rounded-md bg-slate-100 p-1 text-xs dark:bg-slate-800",children:["article","relations"].map(z=>(0,o.jsx)(ot,{value:z,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:z==="article"?D.tabArticle:D.tabRelations},z))}),(0,o.jsx)(Be,{ref:P,value:"article",className:"scrollbar-thin flex-1 touch-pan-y overflow-y-auto overflow-x-hidden pt-3 text-sm",children:m?b?(0,o.jsx)(st,{report:b,onCancel:()=>c(!1),onPublishSuccess:()=>c(!1)}):(0,o.jsx)("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&&(0,o.jsx)(dn,{report:b,isLoading:k,error:N,selectedItem:t,autoMarkRead:n,isActive:s,onCommentAdded:H,userId:a,onDoubleClick:E?()=>c(!0):void 0})}),(0,o.jsx)(Be,{value:"relations",className:"scrollbar-thin flex-1 touch-pan-y overflow-y-auto pt-3 text-sm",children:(0,o.jsx)("p",{className:"rounded-lg border border-slate-300 border-dashed bg-slate-50 p-4 text-slate-600 dark:border-slate-600 dark:bg-slate-900/40 dark:text-slate-300",children:D.relationsEmpty})})]})]});return e?(0,o.jsx)("aside",{"data-report-id":t?.reportHubId,className:"test-daily-report-side-pane 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:te}):(0,o.jsx)("div",{"data-report-id":t?.reportHubId,className:"test-daily-report-side-pane flex min-h-0 flex-1 flex-col gap-3 overflow-hidden",children:te})},dn=({report:e,isLoading:t,error:r,autoMarkRead:n=!1,isActive:s=!0,onCommentAdded:a,userId:l,onDoubleClick:p})=>{let{toggleStar:m,toggleRead:c,deleteReport:y,user:D}=le(),{fieldLabels:f}=Z(),{uiComments:b,handleAddComment:N,handleDeleteComment:k,pendingDeleteId:P,setPendingDeleteId:T,resolvedIdMap:R}=Ke(e,D,l),{handleToggleRead:E}=on(e,t,n,s,c),H=(0,C.useRef)(null),A=(0,C.useRef)(b.length);(0,C.useEffect)(()=>{let S=e?.reportHubId??null;if(S!==H.current){H.current=S,A.current=b.length;return}b.length>A.current&&a?.(),A.current=b.length},[b.length,e?.reportHubId,a]);let Y=async S=>{await N(S)},K=(0,C.useMemo)(()=>e?.content?e.content.replace(/<br\s*\/?\s*>/gi,`
|
|
3
3
|
`).replace(/<\/p>/gi,`
|
|
4
|
-
`).replace(/<[^>]+>/g,""):null,[e]),
|
|
4
|
+
`).replace(/<[^>]+>/g,""):null,[e]),te=async()=>{if(!e)return;let S=!e.isStarred;try{await m(e.reportHubId,S,e.date??"")}catch{}},z=async()=>{if(e&&confirm("\u672C\u5F53\u306B\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F"))try{await y(e.reportHubId,e.date??"")}catch{alert("\u524A\u9664\u306B\u5931\u6557\u3057\u307E\u3057\u305F")}};if(r)return(0,o.jsx)("p",{className:"text-red-500",children:r.message});let B=!e,ce=e?.isStarred??!1,ue=e?.isRead??!1,ae=!!(l&&e?.userId===l),U=b.length>0,X=({className:S="w-32"})=>(0,o.jsx)("div",{className:`h-4 animate-pulse rounded bg-slate-200 dark:bg-slate-700 ${S}`});return(0,o.jsxs)("div",{className:"relative space-y-4 text-slate-700 dark:text-slate-200",onDoubleClick:p,children:[!B&&e&&(0,o.jsxs)("div",{className:"absolute top-0 right-2 z-10 flex items-center justify-end gap-3",children:[(0,o.jsx)("button",{type:"button",onClick:()=>E(!1),className:"text-lg leading-none transition-transform focus:outline-none active:scale-110",title:ue?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","data-detail-read-button":e.reportHubId,children:ue?(0,o.jsx)("span",{className:"text-slate-300 hover:text-blue-500",children:"\u2713"}):(0,o.jsx)(Fe,{className:"hover:text-blue-600"})}),(0,o.jsx)("button",{type:"button",onClick:te,className:"text-lg leading-none transition-transform focus:outline-none active:scale-110",title:ce?"\u30B9\u30BF\u30FC\u3092\u5916\u3059":"\u30B9\u30BF\u30FC\u3092\u4ED8\u3051\u308B","data-detail-star-button":e.reportHubId,children:ce?(0,o.jsx)("span",{className:"text-yellow-400",children:"\u2605"}):(0,o.jsx)("span",{className:"text-slate-300 hover:text-yellow-400",children:"\u2606"})}),ae&&(0,o.jsx)("button",{type:"button",onClick:z,"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:(0,o.jsx)(Te.Trash2,{className:"h-4 w-4 text-slate-300 hover:text-red-500"})})]}),(0,o.jsxs)("div",{className:"flex items-baseline",children:[(0,o.jsx)("span",{className:"w-24 shrink-0 font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:f.subject}),(0,o.jsx)("div",{className:"flex-1 pr-20",children:B?(0,o.jsx)(X,{className:"w-3/4"}):(0,o.jsx)("span",{className:"fade-in animate-in text-sm duration-500",children:re(e?.subject)})})]}),(0,o.jsxs)("div",{className:"flex items-baseline",children:[(0,o.jsx)("span",{className:"w-24 shrink-0 font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:f.customer}),(0,o.jsx)("div",{className:"flex-1",children:B?(0,o.jsx)(X,{className:"w-1/2"}):(0,o.jsx)("span",{className:"fade-in animate-in text-sm duration-500",children:re(e?.customerName)})})]}),(0,o.jsxs)("div",{className:"space-y-2",children:[(0,o.jsx)("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:f.content}),(0,o.jsx)("div",{className:"min-h-22 rounded-lg bg-slate-50 p-3 text-sm leading-relaxed dark:bg-slate-800/40",children:B?(0,o.jsxs)("div",{className:"space-y-2",children:[(0,o.jsx)(X,{className:"w-full"}),(0,o.jsx)(X,{className:"w-11/12"}),(0,o.jsx)(X,{className:"w-4/5"})]}):K?(0,o.jsx)("div",{className:"fade-in animate-in whitespace-pre-wrap duration-500",children:K}):(0,o.jsx)("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"})})]}),(0,o.jsxs)("div",{className:"flex items-baseline",children:[(0,o.jsx)("span",{className:"w-24 shrink-0 font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:f.visitTime}),(0,o.jsx)("div",{className:"flex-1",children:B?(0,o.jsx)(X,{className:"w-1/3"}):(0,o.jsxs)("span",{className:"fade-in animate-in text-sm duration-500",children:[re(e?.visitTimeFrom)," ",e?.visitTimeFrom&&e?.visitTimeTo?"-":""," ",re(e?.visitTimeTo)]})})]}),e&&(0,o.jsxs)("div",{className:"fade-in animate-in space-y-2 border-slate-100 border-t pt-4 duration-500 dark:border-slate-800",children:[(0,o.jsx)("div",{className:"font-semibold text-slate-500 text-xs uppercase tracking-wide dark:text-slate-300",children:f.comments}),U&&(0,o.jsx)($e,{comments:b,reportHubId:e.reportHubId,businessDate:e.date??"",onDeleteComment:k,pendingDeleteId:P,onPendingDeleteIdChange:T,resolvedIdMap:R}),(0,o.jsx)(Ve,{reportHubId:e.reportHubId,businessDate:e.date??"",onAddComment:Y})]})]})},cn=({isOpen:e,selectedItem:t,onClose:r,autoMarkRead:n=!1,userId:s})=>{let a=(0,C.useRef)(null),l=(0,C.useRef)(null),{isBlocked:p,requestBlock:m,reset:c}=(0,ge.useSwipeGuardState)(),{report:y,error:D,isLoading:f}=Ie(t?.reportHubId??-1,t?.businessDate??null),b=(0,ge.useTransitionDisplay)(e,t?{item:t,detail:{report:y,error:D,isLoading:f}}:null),N=b?.item??null;b?.detail??kt;let{overlayRef:P,overlayStyle:T,attemptClose:R,isSwiping:E}=(0,ge.useSwipeToDismissOverlay)({isOpen:e,onClose:r,isCloseBlocked:(0,C.useCallback)(()=>p,[p]),skipWhenTextSelected:!0}),H=(0,ge.useTapClick)(()=>R());return(0,C.useEffect)(()=>{e?requestAnimationFrame(()=>l.current?.focus()):(a.current?.contains(document.activeElement)&&document.activeElement.blur(),c())},[e,c]),N?(0,o.jsxs)("div",{ref:a,className:`fixed inset-0 z-50 flex touch-manipulation transition-[visibility] duration-200 sm:hidden ${e?"visible":"invisible"} ${e&&!E?"pointer-events-auto":"pointer-events-none"}`,"aria-hidden":!e,children:[(0,o.jsx)("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"}`,...H}),(0,o.jsx)("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:P,onKeyDown:A=>{A.key==="Escape"&&(A.preventDefault(),R())},style:T,children:(0,o.jsxs)("div",{className:"flex h-full w-full flex-col gap-3 p-4",children:[(0,o.jsx)(ge.SwipeCloseGuardContext.Provider,{value:{isBlocked:p,requestBlock:m},children:(0,o.jsx)(hr,{selectedItem:N,autoMarkRead:n,isActive:e,userId:s})}),(0,o.jsx)("div",{className:"mt-2 flex justify-start",children:(0,o.jsx)("button",{type:"button",ref:l,"data-overlay-interactive":"true",className:"touch-manipulation rounded-full border border-slate-300 px-4 py-2 font-medium text-slate-600 text-sm shadow-sm transition-colors hover:bg-slate-100 dark:border-slate-600 dark:text-slate-200 dark:hover:bg-slate-800",onClick:()=>R(),children:"\u9589\u3058\u308B"})})]})})]}):null},un=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,Lt):[],mn=({item:e,isActive:t,onSelect:r})=>{let{report:n,error:s,isLoading:a,isRefetching:l}=Ie(e.reportHubId,e.businessDate),{toggleStar:f,toggleRead:p,removeStaleItem:u}=le(),y=(0,N.useRef)(!1);l&&(y.current=!0),(0,N.useEffect)(()=>{!(n||a||l||s)&&y.current&&e.reportHubId>0&&u(e.reportHubId)},[n,a,l,s,e.reportHubId,u]);let S=(0,ge.useTapClick)(()=>r(e.reportHubId));if(s)return(0,o.jsx)("div",{className:"px-2 pb-3",style:{height:Oe},children:(0,o.jsx)("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:(0,o.jsxs)("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(0,o.jsx)(ln,{});if(!n)return(0,o.jsx)("div",{className:"px-2 pb-3",style:{height:Oe},children:(0,o.jsx)("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:(0,o.jsx)("p",{children:"\u65E5\u5831\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093"})})});let d=un(n.content).map((R,I)=>({line:R,key:`${e.reportHubId}-line-${I}`})),D=ne(n.employeeName??n.author),w=se(n.date),k=async R=>{R.stopPropagation();let I=!n.isStarred;try{await f(n.reportHubId,I,n.date??"")}catch{}},P=async R=>{R.stopPropagation();let I=!n.isRead;try{await p(n.reportHubId,I,n.date??"")}catch{}};return(0,o.jsx)("div",{className:"px-2 pb-3",style:{height:Oe},children:(0,o.jsxs)("div",{"data-daily-report-button":e.reportHubId,className:`flex h-full w-full in-[.is-scrolling]:transform-none cursor-pointer select-none flex-col rounded-2xl border in-[.is-scrolling]:border-slate-200 bg-white p-4 text-left in-[.is-scrolling]:shadow-sm shadow-sm in-[.is-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,...S,children:[(0,o.jsxs)("div",{className:"mb-3 flex items-center gap-3 text-slate-600 text-sm",children:[(0,o.jsx)("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:(0,o.jsx)("span",{className:"whitespace-nowrap font-medium text-slate-900 dark:text-slate-100",children:w})}),(0,o.jsx)("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:(0,o.jsx)("span",{className:"truncate font-medium text-slate-900 dark:text-slate-100",children:D})}),(0,o.jsxs)("div",{className:"ml-auto flex items-center gap-1.5",children:[(0,o.jsx)("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:k,className:"flex h-6 w-6 items-center justify-center rounded-full transition-colors hover:bg-slate-200 dark:hover:bg-slate-700",children:n.isStarred?(0,o.jsx)(Se.Star,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):(0,o.jsx)(Se.Star,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),(0,o.jsx)("button",{type:"button",title:n.isRead?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","data-list-read-button":e.reportHubId,onClick:P,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?(0,o.jsx)(Se.Check,{className:"h-3.5 w-3.5 text-blue-500"}):(0,o.jsx)(Fe,{className:"text-xs"})})]})]}),(0,o.jsx)("div",{className:"space-y-1 text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:d.length>0?d.map(({line:R,key:I})=>(0,o.jsx)("p",{className:"wrap-break-word line-clamp-1",children:R},I)):(0,o.jsx)("p",{children:"\u5185\u5BB9\u306F\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093"})})]})})};var we=require("react"),gt=require("react-router");var xr=require("lucide-react"),Te=require("react"),Rr=require("react-router");var it=ke(require("@radix-ui/react-switch")),vr=ke(require("react"));var Ot=require("react/jsx-runtime"),bt=vr.forwardRef(({className:e,...t},r)=>(0,Ot.jsx)(it.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:(0,Ot.jsx)(it.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")})}));bt.displayName=it.Root.displayName;var j=require("react/jsx-runtime"),pn="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",_t=({dailyReportItems:e,userId:t})=>{let[r,n]=(0,Te.useState)(!1),{title:s,renderHeader:a,showDevControls:l}=Z(),{isSseEnabled:f,toggleSse:p,createReport:u,items:y}=le(),[S]=(0,Rr.useSearchParams)(),[d,D]=(0,Te.useState)(()=>y.length===0?null:y[0].reportHubId),w=async()=>{let R=S.get("businessDate"),I=new Date().toISOString().split("T")[0],E=await u(R||I);D(E)};(0,Te.useEffect)(()=>{localStorage.getItem("daily-report-auto-read")==="true"&&n(!0)},[]);let k=R=>{n(R),localStorage.setItem("daily-report-auto-read",String(R))},P=(0,Te.useMemo)(()=>[{value:"list",label:"\u{1F4C4} List",content:(0,j.jsx)(At,{dailyReportItems:y,autoMarkRead:r,selectedReportHubId:d,onSelectItem:D,userId:t})},{value:"tree",label:"\u{1F333} Tree",content:(0,j.jsx)("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:(0,j.jsx)(Pt,{dailyReportItems:y,userId:t,selectedItemId:d,onSelectItem:D})}],[y,r,d,t]);return(0,j.jsxs)(j.Fragment,{children:[a({title:s,annotation:(0,j.jsxs)("div",{className:"flex flex-wrap gap-2 leading-1",children:[(0,j.jsxs)("span",{children:["\u7DCF\u4EF6\u6570: ",y.length.toLocaleString()," \u4EF6"]}),(0,j.jsxs)("span",{children:["\u30C7\u30D0\u30A6\u30F3\u30B9: ",Xe," ms"]})]})}),(0,j.jsx)("div",{className:"h-full bg-slate-50 dark:bg-slate-500",children:(0,j.jsx)("div",{className:"flex h-full w-full max-w-6xl flex-1 flex-col p-1",children:(0,j.jsxs)(pt,{defaultValue:"list",className:"flex h-full flex-1 flex-col",children:[(0,j.jsxs)("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:[(0,j.jsx)(at,{className:"scrollbar-none flex w-full touch-pan-x flex-nowrap overflow-x-auto overflow-y-hidden bg-transparent p-0",children:P.map(({value:R,label:I})=>(0,j.jsx)(ot,{value:R,className:pn,children:I},R))}),(0,j.jsxs)("div",{className:"flex shrink-0 items-center space-x-1 px-2",children:[(0,j.jsx)(Ce,{variant:"ghost",size:"icon",onClick:w,title:"\u65E5\u5831\u3092\u4F5C\u6210",children:(0,j.jsx)(xr.Plus,{className:"h-4 w-4"})}),l&&(0,j.jsxs)("div",{className:"hidden items-center space-x-1 sm:flex",children:[(0,j.jsx)(bt,{id:"sse-mode",checked:f,onCheckedChange:p,className:"scale-75"}),(0,j.jsx)(_e,{htmlFor:"sse-mode",className:"cursor-pointer text-slate-500 text-xs",children:"\u8CFC\u8AAD"})]}),(0,j.jsx)(bt,{id:"auto-read-mode",checked:r,onCheckedChange:k,className:"scale-75"}),(0,j.jsx)(_e,{htmlFor:"auto-read-mode",className:"cursor-pointer text-slate-500 text-xs",children:"\u81EA\u52D5\u65E2\u8AAD"})]})]}),P.map(({value:R,content:I})=>(0,j.jsx)(Be,{value:R,className:"mt-0 flex h-full min-h-0 flex-1 flex-col",children:I},R))]})})})]})};var B=require("react/jsx-runtime"),fn=({dailyReportItems:e,userId:t,onResolved:r})=>((0,we.useEffect)(()=>{r(e)},[e,r]),(0,B.jsx)(_t,{dailyReportItems:e,userId:t})),Dr=()=>{let{title:e,renderHeader:t}=Z(),{revalidate:r}=(0,gt.useRevalidator)();return(0,B.jsxs)(B.Fragment,{children:[t({title:e,annotation:(0,B.jsx)("span",{className:"font-bold text-red-500",children:"Error"})}),(0,B.jsx)("div",{className:"h-full bg-slate-50 p-2",children:(0,B.jsx)("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:(0,B.jsxs)("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:[(0,B.jsx)("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"}),(0,B.jsx)("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"})]})})})]})},Ft=()=>{let{title:e,renderHeader:t}=Z();return(0,B.jsxs)(B.Fragment,{children:[t({title:e,annotation:(0,B.jsxs)("div",{className:"flex flex-wrap gap-2 leading-none",children:[(0,B.jsx)("span",{children:"\u7DCF\u4EF6\u6570: \u8AAD\u307F\u8FBC\u307F\u4E2D..."}),(0,B.jsxs)("span",{children:["\u30C7\u30D0\u30A6\u30F3\u30B9: ",Xe," ms"]})]})}),(0,B.jsx)("div",{className:"h-full bg-slate-50 p-2",children:(0,B.jsx)("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:(0,B.jsx)("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..."})})})]})},bn=({user:e,userId:t,dailyReportIds:r})=>{let[n,s]=(0,we.useState)([]),a=(0,we.useCallback)(l=>{s(l)},[]);return(0,B.jsx)(St,{user:e,initialItems:n,userId:t,children:(0,B.jsx)(we.Suspense,{fallback:(0,B.jsx)(Ft,{}),children:r?(0,B.jsx)(gt.Await,{resolve:r,errorElement:(0,B.jsx)(Dr,{}),children:l=>{if(!l)throw new Error("Daily report ids resolve must not be null");return(0,B.jsx)(fn,{dailyReportItems:l,userId:t,onResolved:a})}}):(0,B.jsx)(Ft,{})})})},gn=({config:e,...t})=>(0,B.jsx)(vt,{config:e,children:(0,B.jsx)(bn,{...t})});var yn=({actionResult:e,actionStatus:t,currentUrl:r,defaultShouldRevalidate:n,formAction:s,formData:a,formEncType:l,formMethod:f,json:p,nextUrl:u,text:y})=>{if(!n)return!1;if(!(r.pathname===u.pathname&&r.search===u.search&&r.hash===u.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||l!==void 0||f!==void 0||p!==void 0||y!==void 0?n:!1},wr=(e=je.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}),hn=e=>{let t=async r=>{let n=wr(e?.apiBasePath);return{...await r.serverLoader(),dailyReportIds:n}};return t.hydrate=!0,t};0&&(module.exports={BusinessDayThumbOverlay,DAILY_REPORT_FETCH_DEBOUNCE_MS,DEFAULT_ITEM_HEIGHT,DailyReportActionProvider,DailyReportCommentForm,DailyReportCommentItem,DailyReportCommentList,DailyReportConfigProvider,DailyReportDetailList,DailyReportEditForm,DailyReportList,DailyReportLoadError,DailyReportLoading,DailyReportPage,DailyReportResolvedContent,EMPTY_DETAIL,EMPTY_ITEM,FAST_SCROLL_INERTIA_OPTIONS,FAST_SCROLL_WHEEL_MULTIPLIER,ITEM_CONTAINER_HEIGHT,ITEM_VERTICAL_PADDING,MAX_PREVIEW_LINES,PREFETCH_LOOKAHEAD,PREFETCH_MAX_DATES,SCROLL_BAR_WIDTH,TAP_SCROLL_CIRCLE_OPTIONS,UnreadIndicator,VIRTUAL_SCROLL_OVERSCAN_COUNT,WHEEL_RESET_TIMEOUT_MS,acquireMutationLock,applyDailyReportServerUpdates,createDailyReportClientLoader,dailyReportShouldRevalidate,defaultDailyReportClientConfig,defaultDailyReportFieldLabels,deleteDailyReportCache,fetchDailyReportIds,getCachedReport,registerRecentDeletion,releaseMutationLock,subscribeCacheReady,updateDailyReportCache,useDailyReportActionContext,useDailyReportComments,useDailyReportConfig,useDailyReportDetail,useDailyReportPrefetch,useDailyReportSseConnection,useDynamicViewportHeight,writeCache});
|
|
6
|
+
`).replace(/<[^>]+>/g,"").split(/\r?\n/).map(t=>t.replace(/\u3000/g," ").trim()).filter(t=>t.length>0).slice(0,Lt):[],mn=({item:e,isActive:t,onSelect:r})=>{let{report:n,error:s,isLoading:a,isRefetching:l}=Ie(e.reportHubId,e.businessDate),{toggleStar:p,toggleRead:m,removeStaleItem:c}=le(),{sourceTypeConfigs:y}=Z(),D=(0,C.useRef)(!1);l&&(D.current=!0),(0,C.useEffect)(()=>{!(n||a||l||s)&&D.current&&e.reportHubId>0&&c(e.reportHubId)},[n,a,l,s,e.reportHubId,c]);let f=(0,ge.useTapClick)(()=>r(e.reportHubId));if(s)return(0,o.jsx)("div",{className:"px-2 pb-3",style:{height:Oe},children:(0,o.jsx)("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:(0,o.jsxs)("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(0,o.jsx)(ln,{});if(!n)return(0,o.jsx)("div",{className:"px-2 pb-3",style:{height:Oe},children:(0,o.jsx)("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:(0,o.jsx)("p",{children:"\u65E5\u5831\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093"})})});let b=un(n.content).map((R,E)=>({line:R,key:`${e.reportHubId}-line-${E}`})),N=re(n.employeeName??n.author),k=ne(n.date),P=async R=>{R.stopPropagation();let E=!n.isStarred;try{await p(n.reportHubId,E,n.date??"")}catch{}},T=async R=>{R.stopPropagation();let E=!n.isRead;try{await m(n.reportHubId,E,n.date??"")}catch{}};return(0,o.jsx)("div",{className:"px-2 pb-3",style:{height:Oe},children:(0,o.jsxs)("div",{"data-daily-report-button":e.reportHubId,className:`flex h-full w-full in-[.is-scrolling]:transform-none cursor-pointer select-none flex-col rounded-2xl border in-[.is-scrolling]:border-slate-200 bg-white p-4 text-left in-[.is-scrolling]:shadow-sm shadow-sm in-[.is-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,...f,children:[(0,o.jsxs)("div",{className:"mb-3 flex items-center gap-3 text-slate-600 text-sm",children:[(0,o.jsx)("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:(0,o.jsx)("span",{className:"whitespace-nowrap font-medium text-slate-900 dark:text-slate-100",children:k})}),(0,o.jsx)("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:(0,o.jsx)("span",{className:"truncate font-medium text-slate-900 dark:text-slate-100",children:N})}),(0,o.jsxs)("div",{className:"ml-auto flex items-center gap-1.5",children:[(()=>{let R=n?.sourceType,E=R?y?.[R]:void 0;return E?(0,o.jsx)("span",{className:G("inline-flex shrink-0 items-center rounded px-2 py-0.5 font-semibold text-[10px] tracking-wide",E.badgeClassName),children:E.label}):null})(),(0,o.jsx)("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:P,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?(0,o.jsx)(Te.Star,{className:"h-3.5 w-3.5 fill-yellow-400 text-yellow-400"}):(0,o.jsx)(Te.Star,{className:"h-3.5 w-3.5 text-slate-300 dark:text-slate-500"})}),(0,o.jsx)("button",{type:"button",title:n.isRead?"\u672A\u8AAD\u306B\u3059\u308B":"\u65E2\u8AAD\u306B\u3059\u308B","data-list-read-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.isRead?(0,o.jsx)(Te.Check,{className:"h-3.5 w-3.5 text-blue-500"}):(0,o.jsx)(Fe,{className:"text-xs"})})]})]}),(0,o.jsx)("div",{className:"space-y-1 text-slate-700 text-sm leading-relaxed dark:text-slate-200",children:b.length>0?b.map(({line:R,key:E})=>(0,o.jsx)("p",{className:"wrap-break-word line-clamp-1",children:R},E)):(0,o.jsx)("p",{children:"\u5185\u5BB9\u306F\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093"})})]})})};var De=require("react"),gt=require("react-router");var vr=require("lucide-react"),Se=require("react"),Rr=require("react-router");var it=ke(require("@radix-ui/react-switch")),xr=ke(require("react"));var Ot=require("react/jsx-runtime"),bt=xr.forwardRef(({className:e,...t},r)=>(0,Ot.jsx)(it.Root,{className:G("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",e),...t,ref:r,children:(0,Ot.jsx)(it.Thumb,{className:G("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})}));bt.displayName=it.Root.displayName;var q=require("react/jsx-runtime"),pn="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",_t=({dailyReportItems:e,userId:t})=>{let[r,n]=(0,Se.useState)(!1),{title:s,renderHeader:a,showDevControls:l}=Z(),{isSseEnabled:p,toggleSse:m,createReport:c,items:y}=le(),[D]=(0,Rr.useSearchParams)(),[f,b]=(0,Se.useState)(()=>y.length===0?null:y[0].reportHubId),N=async()=>{let T=D.get("businessDate"),R=new Date().toISOString().split("T")[0],H=await c(T||R);b(H)};(0,Se.useEffect)(()=>{localStorage.getItem("daily-report-auto-read")==="true"&&n(!0)},[]);let k=T=>{n(T),localStorage.setItem("daily-report-auto-read",String(T))},P=(0,Se.useMemo)(()=>[{value:"list",label:"\u{1F4C4} List",content:(0,q.jsx)(At,{dailyReportItems:y,autoMarkRead:r,selectedReportHubId:f,onSelectItem:b,userId:t})},{value:"tree",label:"\u{1F333} Tree",content:(0,q.jsx)("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:(0,q.jsx)(Pt,{dailyReportItems:y,userId:t,selectedItemId:f,onSelectItem:b})}],[y,r,f,t]);return(0,q.jsxs)(q.Fragment,{children:[a({title:s,annotation:(0,q.jsxs)("div",{className:"flex flex-wrap gap-2 leading-1",children:[(0,q.jsxs)("span",{children:["\u7DCF\u4EF6\u6570: ",y.length.toLocaleString()," \u4EF6"]}),(0,q.jsxs)("span",{children:["\u30C7\u30D0\u30A6\u30F3\u30B9: ",Xe," ms"]})]})}),(0,q.jsx)("div",{className:"h-full bg-slate-50 dark:bg-slate-500",children:(0,q.jsx)("div",{className:"flex h-full w-full max-w-6xl flex-1 flex-col p-1",children:(0,q.jsxs)(pt,{defaultValue:"list",className:"flex h-full flex-1 flex-col",children:[(0,q.jsxs)("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:[(0,q.jsx)(at,{className:"scrollbar-none flex w-full touch-pan-x flex-nowrap overflow-x-auto overflow-y-hidden bg-transparent p-0",children:P.map(({value:T,label:R})=>(0,q.jsx)(ot,{value:T,className:pn,children:R},T))}),(0,q.jsxs)("div",{className:"flex shrink-0 items-center space-x-1 px-2",children:[(0,q.jsx)(Ce,{variant:"ghost",size:"icon",onClick:N,title:"\u65E5\u5831\u3092\u4F5C\u6210",children:(0,q.jsx)(vr.Plus,{className:"h-4 w-4"})}),l&&(0,q.jsxs)("div",{className:"hidden items-center space-x-1 sm:flex",children:[(0,q.jsx)(bt,{id:"sse-mode",checked:p,onCheckedChange:m,className:"scale-75"}),(0,q.jsx)(_e,{htmlFor:"sse-mode",className:"cursor-pointer text-slate-500 text-xs",children:"\u8CFC\u8AAD"})]}),(0,q.jsx)(bt,{id:"auto-read-mode",checked:r,onCheckedChange:k,className:"scale-75"}),(0,q.jsx)(_e,{htmlFor:"auto-read-mode",className:"cursor-pointer text-slate-500 text-xs",children:"\u81EA\u52D5\u65E2\u8AAD"})]})]}),P.map(({value:T,content:R})=>(0,q.jsx)(Be,{value:T,className:"mt-0 flex h-full min-h-0 flex-1 flex-col",children:R},T))]})})})]})};var $=require("react/jsx-runtime"),fn=({dailyReportItems:e,userId:t,onResolved:r})=>((0,De.useEffect)(()=>{r(e)},[e,r]),(0,$.jsx)(_t,{dailyReportItems:e,userId:t})),wr=()=>{let{title:e,renderHeader:t}=Z(),{revalidate:r}=(0,gt.useRevalidator)();return(0,$.jsxs)($.Fragment,{children:[t({title:e,annotation:(0,$.jsx)("span",{className:"font-bold text-red-500",children:"Error"})}),(0,$.jsx)("div",{className:"h-full bg-slate-50 p-2",children:(0,$.jsx)("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:(0,$.jsxs)("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:[(0,$.jsx)("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"}),(0,$.jsx)("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"})]})})})]})},Ft=()=>{let{title:e,renderHeader:t}=Z();return(0,$.jsxs)($.Fragment,{children:[t({title:e,annotation:(0,$.jsxs)("div",{className:"flex flex-wrap gap-2 leading-none",children:[(0,$.jsx)("span",{children:"\u7DCF\u4EF6\u6570: \u8AAD\u307F\u8FBC\u307F\u4E2D..."}),(0,$.jsxs)("span",{children:["\u30C7\u30D0\u30A6\u30F3\u30B9: ",Xe," ms"]})]})}),(0,$.jsx)("div",{className:"h-full bg-slate-50 p-2",children:(0,$.jsx)("div",{className:"mx-auto flex h-full w-full max-w-6xl flex-1 flex-col gap-6",children:(0,$.jsx)("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..."})})})]})},bn=({user:e,userId:t,dailyReportIds:r})=>{let[n,s]=(0,De.useState)([]),a=(0,De.useCallback)(l=>{s(l)},[]);return(0,$.jsx)(Tt,{user:e,initialItems:n,userId:t,children:(0,$.jsx)(De.Suspense,{fallback:(0,$.jsx)(Ft,{}),children:r?(0,$.jsx)(gt.Await,{resolve:r,errorElement:(0,$.jsx)(wr,{}),children:l=>{if(!l)throw new Error("Daily report ids resolve must not be null");return(0,$.jsx)(fn,{dailyReportItems:l,userId:t,onResolved:a})}}):(0,$.jsx)(Ft,{})})})},gn=({config:e,...t})=>(0,$.jsx)(xt,{config:e,children:(0,$.jsx)(bn,{...t})});var yn=({actionResult:e,actionStatus:t,currentUrl:r,defaultShouldRevalidate:n,formAction:s,formData:a,formEncType:l,formMethod:p,json:m,nextUrl:c,text:y})=>{if(!n)return!1;if(!(r.pathname===c.pathname&&r.search===c.search&&r.hash===c.hash))return n;if(a){let b=a.get("intent");if(b==="toggleRead"||b==="toggleStar"||b==="addComment"||b==="deleteComment"||b==="create"||b==="update"||b==="publish"||b==="delete")return!1}return e!==void 0||t!==void 0||s!==void 0||a!==void 0||l!==void 0||p!==void 0||m!==void 0||y!==void 0?n:!1},Dr=(e=je.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}),hn=e=>{let t=async r=>{let n=Dr(e?.apiBasePath);return{...await r.serverLoader(),dailyReportIds:n}};return t.hydrate=!0,t};0&&(module.exports={BusinessDayThumbOverlay,DAILY_REPORT_FETCH_DEBOUNCE_MS,DEFAULT_ITEM_HEIGHT,DailyReportActionProvider,DailyReportCommentForm,DailyReportCommentItem,DailyReportCommentList,DailyReportConfigProvider,DailyReportDetailList,DailyReportEditForm,DailyReportList,DailyReportLoadError,DailyReportLoading,DailyReportPage,DailyReportResolvedContent,EMPTY_DETAIL,EMPTY_ITEM,FAST_SCROLL_INERTIA_OPTIONS,FAST_SCROLL_WHEEL_MULTIPLIER,ITEM_CONTAINER_HEIGHT,ITEM_VERTICAL_PADDING,MAX_PREVIEW_LINES,PREFETCH_LOOKAHEAD,PREFETCH_MAX_DATES,SCROLL_BAR_WIDTH,TAP_SCROLL_CIRCLE_OPTIONS,UnreadIndicator,VIRTUAL_SCROLL_OVERSCAN_COUNT,WHEEL_RESET_TIMEOUT_MS,acquireMutationLock,applyDailyReportServerUpdates,createDailyReportClientLoader,dailyReportShouldRevalidate,defaultDailyReportClientConfig,defaultDailyReportFieldLabels,deleteDailyReportCache,fetchDailyReportIds,getCachedReport,registerRecentDeletion,releaseMutationLock,subscribeCacheReady,updateDailyReportCache,useDailyReportActionContext,useDailyReportComments,useDailyReportConfig,useDailyReportDetail,useDailyReportPrefetch,useDailyReportSseConnection,useDynamicViewportHeight,writeCache});
|
|
7
7
|
//# sourceMappingURL=client.js.map
|