@progress/kendo-react-grid
Version:
React Data Grid (Table) provides 100+ ready-to-use data grid features. KendoReact Grid package
94 lines (93 loc) • 2.43 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2026 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
import * as s from "react";
import x from "axios";
import { handleAIResponse as v } from "../utils/handleAIResponse.mjs";
function w(b) {
const {
requestUrl: h,
requestOptions: R,
role: q = "user",
columns: S = [],
gridState: c,
gridRef: l,
onPromptRequest: u,
onResponseSuccess: i,
onResponseError: f,
onStateChange: p,
onMessages: d,
onExportPdf: m
} = b, [O, a] = s.useState(!1), [E, r] = s.useState(!1), g = s.useRef(null), k = s.useCallback(
(n, t, o) => {
if (r(!1), a(!1), c && l) {
const e = v(n, c, l);
p && p(e.state), e.shouldExportPdf && m && m(), e.messages.length > 0 && d && d(e.messages, t, o);
}
i && i(n, t, o);
},
[c, l, p, m, d, i]
), C = s.useCallback(
(n) => {
r(!1), a(!1), f && f(n);
},
[f]
), I = s.useCallback(
(n, t) => {
const o = x.CancelToken.source(), e = {
role: q || "user",
columns: S || [],
headers: {
Accept: "*/*",
"Content-Type": "application/json"
},
promptMessage: n,
requestOptions: {
url: h,
method: "POST",
withCredentials: !1,
responseType: "json",
cancelToken: o.token,
...R
}
};
if (u && u(e, t), e.requestOptions.url !== void 0) {
r(!0), a(!0);
const { url: T, ...j } = e.requestOptions;
T && (x(T, {
...j,
headers: e.headers,
data: {
columns: e.columns,
contents: [{ text: e.promptMessage }]
},
responseType: "json"
}).then((A) => k(A, e.promptMessage, t)).catch(C), g.current = o);
}
},
[
q,
S,
h,
R,
u,
k,
C
]
), P = s.useCallback(() => {
g.current && g.current.cancel("Request cancelled by user."), r(!1), a(!1);
}, []);
return {
loading: O,
streaming: E,
sendRequest: I,
cancelRequest: P
};
}
export {
w as useGridAIRequest
};