UNPKG

@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
/** * @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 };