@epam/ai-dial-chat-hooks 1.3.0-dev.294 → 1.3.0-dev.296

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@epam/ai-dial-chat-hooks",
3
3
  "description": "Framework-level React hooks extracted from AI DIAL Chat for building custom chat interfaces",
4
- "version": "1.3.0-dev.294",
4
+ "version": "1.3.0-dev.296",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./index.js",
@@ -131,7 +131,7 @@
131
131
  }
132
132
  },
133
133
  "dependencies": {
134
- "@epam/ai-dial-chat-api-client": "1.3.0-dev.294",
134
+ "@epam/ai-dial-chat-api-client": "1.3.0-dev.296",
135
135
  "dompurify": "3.4.17",
136
136
  "fflate": "^0.8.3",
137
137
  "lru-cache": "^10.4.3",
@@ -140,23 +140,23 @@
140
140
  },
141
141
  "peerDependencies": {
142
142
  "react": "^19.2.8",
143
- "@epam/ai-dial-attachment-canvas": "1.3.0-dev.294",
144
- "@epam/ai-dial-attachment-input": "1.3.0-dev.294",
145
- "@epam/ai-dial-catalog": "1.3.0-dev.294",
146
- "@epam/ai-dial-chat-overlay": "1.3.0-dev.294",
147
- "@epam/ai-dial-chat-shared": "1.3.0-dev.294",
148
- "@epam/ai-dial-conversation-input": "1.3.0-dev.294",
149
- "@epam/ai-dial-mcp-apps": "1.3.0-dev.294",
150
- "@epam/ai-dial-projects": "1.3.0-dev.294",
151
- "@epam/ai-dial-publish-panel": "1.3.0-dev.294",
152
- "@epam/ai-dial-quotations": "1.3.0-dev.294",
143
+ "@epam/ai-dial-attachment-canvas": "1.3.0-dev.296",
144
+ "@epam/ai-dial-attachment-input": "1.3.0-dev.296",
145
+ "@epam/ai-dial-catalog": "1.3.0-dev.296",
146
+ "@epam/ai-dial-chat-overlay": "1.3.0-dev.296",
147
+ "@epam/ai-dial-chat-shared": "1.3.0-dev.296",
148
+ "@epam/ai-dial-conversation-input": "1.3.0-dev.296",
149
+ "@epam/ai-dial-mcp-apps": "1.3.0-dev.296",
150
+ "@epam/ai-dial-projects": "1.3.0-dev.296",
151
+ "@epam/ai-dial-publish-panel": "1.3.0-dev.296",
152
+ "@epam/ai-dial-quotations": "1.3.0-dev.296",
153
153
  "@epam/ai-dial-react-file-manager": "^0.4.0-dev.25",
154
- "@epam/ai-dial-scheduled-tasks": "1.3.0-dev.294",
155
- "@epam/ai-dial-share": "1.3.0-dev.294",
156
- "@epam/ai-dial-skill-editor": "1.3.0-dev.294",
157
- "@epam/ai-dial-source-panel": "1.3.0-dev.294",
154
+ "@epam/ai-dial-scheduled-tasks": "1.3.0-dev.296",
155
+ "@epam/ai-dial-share": "1.3.0-dev.296",
156
+ "@epam/ai-dial-skill-editor": "1.3.0-dev.296",
157
+ "@epam/ai-dial-source-panel": "1.3.0-dev.296",
158
158
  "@epam/ai-dial-ui-kit": "^0.16.0-dev.67",
159
- "@epam/ai-dial-usage-dashboard": "1.3.0-dev.294",
159
+ "@epam/ai-dial-usage-dashboard": "1.3.0-dev.296",
160
160
  "@modelcontextprotocol/sdk": "^1.32.2",
161
161
  "@epam/pdf-highlighter-kit": "^0.0.19"
162
162
  },
@@ -1,4 +1,4 @@
1
- import { AttachmentDto, ConversationResponseDto, CreateConversationDto, CreateProjectResponseDto, ListProjectsResponseDto, ProjectArtifactListResponseDto, ProjectConversationListResponseDto, ProjectDetailsDto, RenameConversationResponseDto, UpdateProjectResponseDto } from '@epam/ai-dial-chat-api-client';
1
+ import { AttachmentDto, ConversationResponseDto, CreateConversationDto, CreateProjectResponseDto, ListProjectsResponseDto, ProjectArtifactListResponseDto, ProjectConversationListResponseDto, ProjectConversationTitlesResponseDto, ProjectDetailsDto, RenameConversationResponseDto, UpdateProjectResponseDto } from '@epam/ai-dial-chat-api-client';
2
2
  import { RequestSkill } from '@epam/ai-dial-chat-shared';
3
3
  /** A generated-client `Raw` answer, of which only the native response is read. */
4
4
  interface RawApiResponse {
@@ -40,9 +40,13 @@ export interface ProjectsConfiguredClient {
40
40
  }, options?: RequestInit) => Promise<RawApiResponse>;
41
41
  listProjectConversations: (request: {
42
42
  id: string;
43
- limit?: number;
44
- offset?: number;
45
43
  }, options?: RequestInit) => Promise<ProjectConversationListResponseDto>;
44
+ getProjectConversationTitles: (request: {
45
+ id: string;
46
+ projectConversationTitlesBodyDto: {
47
+ names: string[];
48
+ };
49
+ }, options?: RequestInit) => Promise<ProjectConversationTitlesResponseDto>;
46
50
  listProjectArtifacts: (request: {
47
51
  id: string;
48
52
  }, options?: RequestInit) => Promise<ProjectArtifactListResponseDto>;
@@ -110,13 +114,6 @@ export interface ProjectUpdateRequest {
110
114
  /** The loaded project's `contentVersion`; a conversation written meanwhile does not change it. */
111
115
  contentVersion: string;
112
116
  }
113
- /** One page of a project's conversations, newest first. */
114
- export interface ProjectConversationListPage {
115
- /** Page size, `1..100`; the BFF defaults to 50. */
116
- limit?: number;
117
- /** Conversations to skip; the next page starts at the count already loaded. */
118
- offset?: number;
119
- }
120
117
  /** The first message of a new top-level or project conversation. */
121
118
  export interface ConversationCreateRequest {
122
119
  /** The first user message. */
@@ -143,7 +140,8 @@ export interface ProjectsApiClient {
143
140
  downloadProjectContextFile: (id: string, fileName: string, signal?: AbortSignal) => Promise<Response>;
144
141
  /** Lists the files the agents saved under the project's `artifacts/` folder, newest first. */
145
142
  listProjectArtifacts: (projectId: string, signal?: AbortSignal) => Promise<ProjectArtifactListResponseDto>;
146
- listProjectConversations: (projectId: string, signal?: AbortSignal, page?: ProjectConversationListPage) => Promise<ProjectConversationListResponseDto>;
143
+ listProjectConversations: (projectId: string, signal?: AbortSignal) => Promise<ProjectConversationListResponseDto>;
144
+ getProjectConversationTitles: (projectId: string, names: string[], signal?: AbortSignal) => Promise<ProjectConversationTitlesResponseDto>;
147
145
  createProjectConversation: (projectId: string, request: ConversationCreateRequest) => Promise<ConversationResponseDto>;
148
146
  getProjectConversation: (conversationId: string, signal?: AbortSignal) => Promise<ConversationResponseDto>;
149
147
  saveProjectConversation: (conversationId: string, conversation: ConversationResponseDto) => Promise<ConversationResponseDto>;
@@ -1 +1 @@
1
- {"version":3,"file":"projects-api-client.d.ts","sourceRoot":"","sources":["../../src/project/projects-api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projects-api-client.d.ts","sourceRoot":"","sources":["../../src/project/projects-api-client.ts"],"names":[],"mappings":"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"}
@@ -51,10 +51,11 @@ var e = (e) => {
51
51
  fileName: r
52
52
  }, ...n(i))).raw,
53
53
  listProjectArtifacts: (t, r) => e.listProjectArtifacts({ id: t }, ...n(r)),
54
- listProjectConversations: (t, r, i) => e.listProjectConversations({
54
+ listProjectConversations: (t, r) => e.listProjectConversations({ id: t }, ...n(r)),
55
+ getProjectConversationTitles: (t, r, i) => e.getProjectConversationTitles({
55
56
  id: t,
56
- ...i
57
- }, ...n(r)),
57
+ projectConversationTitlesBodyDto: { names: r }
58
+ }, ...n(i)),
58
59
  createProjectConversation: (t, n) => e.createProjectConversation({
59
60
  id: t,
60
61
  createConversationDto: r(n)
@@ -2,28 +2,30 @@ import { ProjectConversationListItem } from '@epam/ai-dial-projects';
2
2
  import { ProjectsApiClient } from './projects-api-client';
3
3
  /**
4
4
  * Loads a project's conversations for its Chats list and keeps them in local
5
- * state: the first page is read once per project (and on retry), `loadMore`
6
- * appends the next one, `refresh` silently re-reads the rows already shown
7
- * for live updates, and rename, delete and `markViewed` update the list in
8
- * place. Requests are aborted when the project changes or the view unmounts.
9
- * Rename, delete and `loadMore` reject on failure for the caller's toast.
5
+ * state. DIAL Core cannot page them in display order, so the whole list is
6
+ * read once per project (and on retry) and paged here: the list shows the
7
+ * first 20, and `loadMore` shows 20 more after reading the titles the list
8
+ * left pending. `refresh` silently re-reads the whole list for live updates,
9
+ * and rename, delete and `markViewed` update it in place. Requests are
10
+ * aborted when the project changes or the view unmounts. Rename, delete and
11
+ * `loadMore` reject on failure for the caller's toast.
10
12
  *
11
13
  * @param client - Configured project requests, from `createProjectsApiClient`; it must be referentially stable, because a new object reloads the list.
12
14
  * @param projectId - The project's DIAL id, or `null` while none is known.
13
15
  */
14
- export declare const useProjectConversations: (client: Pick<ProjectsApiClient, "listProjectConversations" | "renameProjectConversation" | "deleteProjectConversation" | "markProjectConversationViewed">, projectId: string | null) => {
15
- retry: () => void;
16
- loadMore: () => Promise<void>;
17
- rename: (id: string, newTitle: string) => Promise<void>;
18
- remove: (id: string) => Promise<void>;
19
- refresh: () => Promise<void>;
20
- markViewed: (id: string) => void;
16
+ export declare const useProjectConversations: (client: Pick<ProjectsApiClient, "listProjectConversations" | "getProjectConversationTitles" | "renameProjectConversation" | "deleteProjectConversation" | "markProjectConversationViewed">, projectId: string | null) => {
21
17
  items: ProjectConversationListItem[];
22
18
  isLoading: boolean;
23
19
  hasError: boolean;
24
20
  /** More conversations exist after `items`. */
25
21
  hasMore: boolean;
26
- /** The next page is being read. */
22
+ /** The titles of the next conversations are being read. */
27
23
  isLoadingMore: boolean;
24
+ retry: () => void;
25
+ loadMore: () => Promise<void>;
26
+ rename: (id: string, newTitle: string) => Promise<void>;
27
+ remove: (id: string) => Promise<void>;
28
+ refresh: () => Promise<void>;
29
+ markViewed: (id: string) => void;
28
30
  };
29
31
  //# sourceMappingURL=use-project-conversations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-project-conversations.d.ts","sourceRoot":"","sources":["../../src/project/use-project-conversations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AA2D/D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,GAClC,QAAQ,IAAI,CACV,iBAAiB,EACf,0BAA0B,GAC1B,2BAA2B,GAC3B,2BAA2B,GAC3B,+BAA+B,CAClC,EACD,WAAW,MAAM,GAAG,IAAI;;;iBAyKX,MAAM,YAAY,MAAM;iBAaxB,MAAM;;qBAlCZ,MAAM;WA/NN,2BAA2B,EAAE;eACzB,OAAO;cACR,OAAO;IACjB,8CAA8C;aACrC,OAAO;IAChB,mCAAmC;mBACpB,OAAO;CA8QvB,CAAC"}
1
+ {"version":3,"file":"use-project-conversations.d.ts","sourceRoot":"","sources":["../../src/project/use-project-conversations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AA+F/D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,uBAAuB,GAClC,QAAQ,IAAI,CACV,iBAAiB,EACf,0BAA0B,GAC1B,8BAA8B,GAC9B,2BAA2B,GAC3B,2BAA2B,GAC3B,+BAA+B,CAClC,EACD,WAAW,MAAM,GAAG,IAAI;;;;IA6NtB,8CAA8C;;IAE9C,2DAA2D;;;;iBA1ChD,MAAM,YAAY,MAAM;iBAaxB,MAAM;;qBAlCZ,MAAM;CAwEd,CAAC"}
@@ -1,182 +1,199 @@
1
- import { useCallback as e, useEffect as t, useRef as n, useState as r } from "react";
1
+ import { useCallback as e, useEffect as t, useMemo as n, useRef as r, useState as i } from "react";
2
2
  //#region src/project/use-project-conversations.ts
3
- var i = {
4
- items: [],
3
+ var a = 20, o = 100, s = {
4
+ rows: [],
5
+ visibleCount: a,
5
6
  isLoading: !0,
6
7
  hasError: !1,
7
- hasMore: !1,
8
8
  isLoadingMore: !1
9
- }, a = {
10
- ...i,
9
+ }, c = {
10
+ ...s,
11
11
  isLoading: !1
12
- }, o = 50, s = 100, c = (e, t) => e.map(({ id: e, title: n, author: r, updatedAt: i, isUnread: a }) => {
13
- let o = a;
12
+ }, l = (e, t) => e.map(({ id: e, name: n, title: r, author: i, updatedAt: a, isUnread: o, isTitlePending: s }) => {
13
+ let c = o;
14
14
  if (t.has(e)) {
15
15
  let n = t.get(e);
16
- i != null && n != null && i > n ? t.delete(e) : o = !1;
16
+ a != null && n != null && a > n ? t.delete(e) : c = !1;
17
17
  }
18
18
  return {
19
19
  id: e,
20
- title: n,
21
- authorName: r,
22
- ...o ? { isUnread: !0 } : {}
20
+ name: n,
21
+ title: r,
22
+ authorName: i,
23
+ isTitlePending: s === !0,
24
+ ...c ? { isUnread: !0 } : {}
23
25
  };
24
- }), l = (l, u) => {
25
- let [d, f] = r(i), [p, m] = r(0), h = n(null), g = n(null), _ = n(0), v = n(/* @__PURE__ */ new Map()), y = n(/* @__PURE__ */ new Map()), b = n(d);
26
+ }), u = (e, t) => {
27
+ if (t.length === 0) return e;
28
+ let n = new Map(t.map((e) => [e.id, e]));
29
+ return e.map((e) => n.get(e.id) ?? e);
30
+ }, d = ({ id: e, title: t, authorName: n, isUnread: r }) => ({
31
+ id: e,
32
+ title: t,
33
+ authorName: n,
34
+ ...r ? { isUnread: !0 } : {}
35
+ }), f = (f, p) => {
36
+ let [m, h] = i(s), [g, _] = i(0), v = r(null), y = r(null), b = r(!1), x = r(/* @__PURE__ */ new Map()), S = r(/* @__PURE__ */ new Map()), C = r(m);
26
37
  t(() => {
27
- b.current = d;
38
+ C.current = m;
28
39
  });
29
- let x = e((e) => {
30
- for (let { id: t, updatedAt: n } of e) y.current.set(t, n);
31
- }, []);
40
+ let w = e((e) => {
41
+ for (let { id: t, updatedAt: n } of e) S.current.set(t, n);
42
+ }, []), T = e(async (e, t) => {
43
+ if (p == null) return [];
44
+ let n = e.filter((e) => e.isTitlePending).map((e) => e.name), r = [];
45
+ for (let e = 0; e < n.length; e += o) {
46
+ let { items: i } = await f.getProjectConversationTitles(p, n.slice(e, e + o), t);
47
+ r.push(...i);
48
+ }
49
+ return w(r), l(r, x.current);
50
+ }, [
51
+ f,
52
+ p,
53
+ w
54
+ ]), E = e(async (e, t, n) => {
55
+ try {
56
+ let r = await T(e.slice(0, t), n);
57
+ if (n.aborted) return;
58
+ h((e) => ({
59
+ ...e,
60
+ rows: u(e.rows, r)
61
+ }));
62
+ } catch {}
63
+ }, [T]);
32
64
  t(() => {
33
- if (v.current = /* @__PURE__ */ new Map(), y.current = /* @__PURE__ */ new Map(), u == null) {
34
- f(a);
65
+ if (x.current = /* @__PURE__ */ new Map(), S.current = /* @__PURE__ */ new Map(), p == null) {
66
+ h(c);
35
67
  return;
36
68
  }
37
69
  let e = new AbortController();
38
- return h.current = e, (async () => {
39
- f((e) => ({
70
+ return v.current = e, (async () => {
71
+ h((e) => ({
40
72
  ...e,
41
73
  isLoading: !0,
42
74
  hasError: !1,
43
75
  isLoadingMore: !1
44
76
  }));
45
77
  try {
46
- let t = await l.listProjectConversations(u, e.signal);
78
+ let { items: t } = await f.listProjectConversations(p, e.signal);
47
79
  if (e.signal.aborted) return;
48
- x(t.items), f({
49
- items: c(t.items, v.current),
50
- isLoading: !1,
51
- hasError: !1,
52
- hasMore: t.hasMore,
53
- isLoadingMore: !1
80
+ w(t), h({
81
+ ...c,
82
+ rows: l(t, x.current)
54
83
  });
55
84
  } catch {
56
85
  if (e.signal.aborted) return;
57
- f({
58
- ...a,
86
+ h({
87
+ ...c,
59
88
  hasError: !0
60
89
  });
61
90
  }
62
91
  })(), () => {
63
- e.abort(), g.current?.abort();
92
+ e.abort(), y.current?.abort();
64
93
  };
65
94
  }, [
66
- l,
67
- u,
95
+ f,
68
96
  p,
69
- x
97
+ g,
98
+ w
70
99
  ]);
71
- let S = e(() => m((e) => e + 1), []), C = e(async () => {
72
- let e = h.current;
73
- if (u == null || e == null) return;
74
- let t = _.current;
75
- f((e) => ({
100
+ let D = e(() => _((e) => e + 1), []), O = e(async () => {
101
+ let e = v.current, t = C.current;
102
+ if (p == null || e == null || b.current) return;
103
+ b.current = !0;
104
+ let n = t.visibleCount + a, r = t.rows.slice(t.visibleCount, n);
105
+ h((e) => ({
76
106
  ...e,
77
107
  isLoadingMore: !0
78
108
  }));
79
109
  try {
80
- let n = await l.listProjectConversations(u, e.signal, { offset: d.items.length });
110
+ let t = await T(r, e.signal);
81
111
  if (e.signal.aborted) return;
82
- if (t !== _.current) {
83
- f((e) => ({
84
- ...e,
85
- isLoadingMore: !1
86
- }));
87
- return;
88
- }
89
- x(n.items), f((e) => {
90
- let t = new Set(e.items.map((e) => e.id));
91
- return {
92
- ...e,
93
- items: [...e.items, ...c(n.items, v.current).filter((e) => !t.has(e.id))],
94
- hasMore: n.hasMore,
95
- isLoadingMore: !1
96
- };
97
- });
112
+ h((e) => ({
113
+ ...e,
114
+ rows: u(e.rows, t),
115
+ visibleCount: Math.max(e.visibleCount, n),
116
+ isLoadingMore: !1
117
+ }));
98
118
  } catch (t) {
99
119
  if (e.signal.aborted) return;
100
- throw f((e) => ({
120
+ throw h((e) => ({
101
121
  ...e,
102
122
  isLoadingMore: !1
103
123
  })), t;
124
+ } finally {
125
+ b.current = !1;
104
126
  }
105
- }, [
106
- l,
107
- u,
108
- x,
109
- d.items.length
110
- ]), w = e(async () => {
111
- let e = b.current;
112
- if (u == null || e.isLoading || e.hasError) return;
113
- g.current?.abort();
127
+ }, [p, T]), k = e(async () => {
128
+ let e = C.current;
129
+ if (p == null || e.isLoading || e.hasError) return;
130
+ y.current?.abort();
114
131
  let t = new AbortController();
115
- g.current = t, _.current += 1;
116
- let n = Math.max(e.items.length, o), r = [], i = !0;
132
+ y.current = t;
133
+ let n;
117
134
  try {
118
- for (; r.length < n && i;) {
119
- let e = await l.listProjectConversations(u, t.signal, {
120
- offset: r.length,
121
- limit: Math.min(s, n - r.length)
122
- });
123
- if (t.signal.aborted) return;
124
- if (r.push(...e.items), i = e.hasMore, e.items.length === 0) break;
125
- }
135
+ let { items: e } = await f.listProjectConversations(p, t.signal);
136
+ if (t.signal.aborted) return;
137
+ w(e), n = l(e, x.current);
126
138
  } catch {
127
139
  return;
128
140
  }
129
- if (t.signal.aborted) return;
130
- x(r);
131
- let a = /* @__PURE__ */ new Set(), d = c(r, v.current).filter((e) => !a.has(e.id) && (a.add(e.id), !0));
132
- f((e) => ({
141
+ h((e) => ({
133
142
  ...e,
134
- items: d,
135
- hasMore: i,
136
- isLoadingMore: !1
137
- }));
143
+ rows: n
144
+ })), await E(n, C.current.visibleCount, t.signal);
138
145
  }, [
139
- l,
140
- u,
141
- x
146
+ f,
147
+ E,
148
+ p,
149
+ w
142
150
  ]);
143
- t(() => () => g.current?.abort(), []);
144
- let T = e((e) => {
145
- v.current.set(e, y.current.get(e)), f((t) => ({
151
+ t(() => () => y.current?.abort(), []);
152
+ let A = e((e) => {
153
+ x.current.set(e, S.current.get(e)), h((t) => ({
146
154
  ...t,
147
- items: t.items.map((t) => t.id === e && t.isUnread ? {
155
+ rows: t.rows.map((t) => t.id === e && t.isUnread ? {
148
156
  ...t,
149
157
  isUnread: !1
150
158
  } : t)
151
159
  })), (async () => {
152
160
  try {
153
- await l.markProjectConversationViewed?.(e);
161
+ await f.markProjectConversationViewed?.(e);
154
162
  } catch {}
155
163
  })();
156
- }, [l]), E = e(async (e, t) => {
157
- let { name: n } = await l.renameProjectConversation(e, t);
158
- f((t) => ({
164
+ }, [f]), j = e(async (e, t) => {
165
+ let { name: n } = await f.renameProjectConversation(e, t);
166
+ h((t) => ({
159
167
  ...t,
160
- items: t.items.map((t) => t.id === e ? {
168
+ rows: t.rows.map((t) => t.id === e ? {
161
169
  ...t,
162
- title: n
170
+ title: n,
171
+ isTitlePending: !1
163
172
  } : t)
164
173
  }));
165
- }, [l]), D = e(async (e) => {
166
- await l.deleteProjectConversation(e), f((t) => ({
174
+ }, [f]), M = e(async (e) => {
175
+ await f.deleteProjectConversation(e);
176
+ let { rows: t, visibleCount: n } = C.current, r = t.filter((t) => t.id !== e);
177
+ h((t) => ({
167
178
  ...t,
168
- items: t.items.filter((t) => t.id !== e)
179
+ rows: t.rows.filter((t) => t.id !== e)
169
180
  }));
170
- }, [l]);
181
+ let i = v.current;
182
+ i != null && E(r, n, i.signal);
183
+ }, [f, E]), { rows: N, visibleCount: P, isLoading: F, hasError: I, isLoadingMore: L } = m;
171
184
  return {
172
- ...d,
173
- retry: S,
174
- loadMore: C,
175
- rename: E,
176
- remove: D,
177
- refresh: w,
178
- markViewed: T
185
+ items: n(() => N.slice(0, P).map(d), [N, P]),
186
+ isLoading: F,
187
+ hasError: I,
188
+ hasMore: P < N.length,
189
+ isLoadingMore: L,
190
+ retry: D,
191
+ loadMore: O,
192
+ rename: j,
193
+ remove: M,
194
+ refresh: k,
195
+ markViewed: A
179
196
  };
180
197
  };
181
198
  //#endregion
182
- export { l as useProjectConversations };
199
+ export { f as useProjectConversations };