UNPKG

@progress/kendo-react-grid

Version:

React Data Grid (Table) provides 100+ ready-to-use data grid features. KendoReact Grid package

9 lines (8 loc) 3.26 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2026 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const L=require("react"),U=require("../utils/handleAIResponse.js");function _(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const s=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,s.get?s:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const a=_(L),N=e=>{e!==void 0&&typeof console!="undefined"&&typeof console.warn=="function"&&console.warn("Grid AI Assistant requestOptions.cancelToken is not supported by the default fetch transport. Use requestOptions.signal or provide a custom httpClient.")},z=(e,t)=>{if(!t||t===e)return e;const o=new AbortController,s=i=>{const d=i.reason;o.signal.aborted||o.abort(d)};return e.aborted&&s(e),t.aborted&&s(t),o.signal.aborted||(e.addEventListener("abort",()=>s(e),{once:!0}),t.addEventListener("abort",()=>s(t),{once:!0})),o.signal},B=e=>{const t={};return e.forEach((o,s)=>{t[s]=o}),t};function F(e){return{request:async(t,o)=>{const s=await e(t,o);return{data:s.data,status:s.status,statusText:s.statusText,headers:s.headers}}}}function J(e){const{requestUrl:t,requestOptions:o,httpClient:s,role:i="user",columns:d=[],gridState:h,gridRef:g,onPromptRequest:b,onResponseSuccess:m,onResponseError:q,onStateChange:C,onMessages:T,onExportPdf:O}=e,[x,f]=a.useState(!1),[S,p]=a.useState(!1),R=a.useRef(null),A=a.useCallback((c,u,l)=>{if(p(!1),f(!1),h&&g){const n=U.handleAIResponse(c,h,g);C&&C(n.state),n.shouldExportPdf&&O&&O(),n.messages.length>0&&T&&T(n.messages,u,l)}m&&m(c,u,l)},[h,g,C,O,T,m]),y=a.useCallback(c=>{p(!1),f(!1),q&&q(c)},[q]),M=a.useCallback((c,u)=>{const l=new AbortController,n={role:i||"user",columns:d||[],headers:{Accept:"*/*","Content-Type":"application/json"},promptMessage:c,requestOptions:{url:t,method:"POST",withCredentials:!1,responseType:"json",signal:l.signal,...o}};if(b&&b(n,u),n.requestOptions.url!==void 0){p(!0),f(!0);const{url:w,cancelToken:I,signal:D,headers:G,...k}=n.requestOptions,j=z(l.signal,D),v={...G,...n.headers};if(w){const E={columns:n.columns,contents:[{text:n.promptMessage}]};s?s.request(w,{...k,cancelToken:I,headers:v,signal:j,data:E}).then(r=>A(r,n.promptMessage,u)).catch(y):(N(I),fetch(w,{method:k.method||"POST",headers:v,credentials:k.withCredentials?"include":"same-origin",body:JSON.stringify(E),signal:j}).then(async r=>{if(!r.ok){const P=new Error(r.statusText);throw P.response={status:r.status,statusText:r.statusText},P}return{data:await r.json(),status:r.status,statusText:r.statusText,headers:B(r.headers)}}).then(r=>A(r,n.promptMessage,u)).catch(y)),R.current=l}}},[i,d,t,o,s,b,A,y]),H=a.useCallback(()=>{R.current&&R.current.abort("Request cancelled by user."),p(!1),f(!1)},[]);return{loading:x,streaming:S,sendRequest:M,cancelRequest:H}}exports.createAxiosAIClient=F;exports.useGridAIRequest=J;