@epam/statgpt-conversation-view 0.3.0-rc.6 → 0.3.0-rc.7
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/index.js +1 -1
- package/index.mjs +1 -1
- package/package.json +6 -6
package/index.js
CHANGED
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
`);if(!t.startsWith("```"))return{code:e};const n=t.split(`
|
|
8
8
|
`),r=n[0].slice(3).trim()||void 0;let l=-1;for(let u=n.length-1;u>0;u--)if(n[u].trim()==="```"){l=u;break}return l===-1?{code:n.slice(1).join(`
|
|
9
9
|
`),language:r}:{code:n.slice(1,l).join(`
|
|
10
|
-
`),language:r}}const Zl=["python"];function Aa(e,t,n,s,r,l,u,f,i,c=!1){const[o,h]=d.useState(),[m,p]=d.useState(),[g,x]=d.useState(),[w,k]=d.useState(),[b,v]=d.useState({title:u?.dataGrid||"Data Grid",type:te.AttachmentType.CUSTOM_DATA_GRID}),[y,D]=d.useState({title:u?.chart||"Chart",type:te.AttachmentType.CUSTOM_CHART}),[E,j]=d.useState([]),[A,O]=d.useState([]),[M,N]=d.useState([]),[T,P]=d.useState(!1),[J,Z]=d.useState({startPeriod:null,endPeriod:null}),{getConstraints:_,getDataSet:V,getDataSetData:$,putOnboardingFile:oe}=e,X=d.useCallback(H=>{if(!H)return;const Y=C.getDimensions(H);p(H.dataflows?.[0]||void 0),k(H||void 0),O([...Y?.dimensions||[],...Y?.timeDimensions||[]])},[]),G=d.useCallback(async H=>{const Y=C.getFiltersDtoFromDataQuery(H);try{const ae=(await We(_,Be(H.urn,Y),()=>_(H.urn,Y)))?.data?.dataConstraints||[];x(ae)}catch{x([])}},[_]),ee=d.useCallback(async H=>{const Y=i?{data:i}:await We(V,Be(H.urn),()=>V(H.urn));if(Y?.data){const Q=C.getDimensions(Y.data);X(Y.data);const ae=Q?.dimensions==null?null:C.getTimeSeriesFilterKey(Q?.dimensions,H.filters),me=Ys(H,Q);We($,Be(H.urn,{filterKey:ae,timeFilter:me}),()=>$(H.urn,{filterKey:ae,timeFilter:me})).then(we=>{h(we||void 0),N(C.getStructureDimensions(we))}).finally(()=>P(!1))}},[X,V,$,i]);d.useEffect(()=>{X(i)},[X,i]),d.useEffect(()=>{async function H(Y){P(!0);try{await Promise.all([G(Y),ee(Y)])}catch(Q){console.error("Error loading dataset details",Q)}}n!=null&&!(c&&!i)?H(n):n!=null&&c&&P(!0)},[n,i,c,G,ee]);const fe=d.useCallback((H,Y,Q)=>{try{P(!0),x(Y);const ae=Q?.find(me=>me.id===C.TIME_PERIOD)?.timeRange;ae&&Z(ae),We($,Be(n?.urn||"",H),()=>$(n?.urn||"",H)).then(me=>{h(me||void 0),N(C.getStructureDimensions(me))}).finally(()=>P(!1))}catch(ae){console.error("Error loading dataset data",ae)}},[n,$]);d.useEffect(()=>{if(w!=null&&o!=null&&g?.length){const H=w.dataflows?.[0]?.names?.[t],Y=Kl(w,o,n,t,s,l,r,u,oe,g,J);v(Q=>({...Q,title:H||u?.dataGrid||"Data Grid",grid_data:Y}))}},[w,o,u,t,s,n,l,r,g,J,oe]),d.useEffect(()=>{w!=null&&o!=null&&D(H=>{const Y=Wl(w,o,n,t,r);return{...H,charting_data:Y}})},[w,o,n,t,r]),d.useEffect(()=>{if(f?.length){const H=n?.urn,Y=f.filter(Q=>Q.type===te.AttachmentType.MARKDOWN).filter(Q=>!H||Q.title?.includes(H)).map(Q=>{const ae=ql(Q.data??"");return{title:u?.codeSamples??"Code samples",type:te.AttachmentType.CUSTOM_CODE_SAMPLE,language:ae.language,data:ae.code}}).filter(Q=>Zl.includes(Q.language??""));j(Y)}},[f,u,n]);const ce=d.useMemo(()=>[b,y,...E],[b,y,E]);return{dataMessage:o,structures:w,dataset:m,dimensions:A,structureDimensions:M,onFiltersChange:fe,constraints:g,isLoadingGridData:T,dataSetAttachments:ce}}const Ql=async(e,t)=>{const n=new Map,s=C.getFiltersDtoMapFromDataQuery(e);for(const r of e){const l=await t(r.urn,s?.get(r.urn));n?.set(r.urn,l?.data?.dataConstraints||[])}return n},Xl=()=>({datasetsMap:new Map,dataMessagesMap:new Map,structuresMap:new Map,dimensionsMap:new Map,structureDimensionsMap:new Map}),ec=async(e,t,n,s)=>{const r=Xl();for(const l of e)t(l.urn).then(u=>{if(u?.data){const f=C.getDimensions(u.data);r.datasetsMap?.set(l?.urn,u?.data?.dataflows?.[0]),r.structuresMap?.set(l?.urn,u?.data),r.dimensionsMap?.set(l?.urn,[...f?.dimensions||[],...f?.timeDimensions||[]]);const i=f?.dimensions==null?null:C.getTimeSeriesFilterKey(f?.dimensions,l.filters),c=Ys(l,f);tc(l,{filterKey:i,timeFilter:c},n).then(({dataMessage:o,structureDimensions:h})=>{r?.dataMessagesMap?.set(l.urn,o),r?.structureDimensionsMap?.set(l.urn,h||[])}).finally(()=>s(!1))}});return r},tc=async(e,t,n)=>n(e.urn,t).then(s=>({dataMessage:s,structureDimensions:C.getStructureDimensions(s)}));function nc(e,t){const[n,s]=d.useState(),[r,l]=d.useState(),[u,f]=d.useState(),[i,c]=d.useState(),[o,h]=d.useState(),[m,p]=d.useState(),[g,x]=d.useState(!1),w=d.useCallback(async b=>{try{const v=await Ql(b,e.getConstraints);f(v)}catch{f(new Map)}},[e,f]),k=d.useCallback(async b=>{const v=await ec(b,e.getDataSet,e.getDataSetData,x);l(v?.datasetsMap),c(v?.structuresMap),h(v?.dimensionsMap),s(v?.dataMessagesMap),p(v?.structureDimensionsMap)},[e]);return d.useEffect(()=>{async function b(v){x(!0);try{await Promise.all([w(v),k(v)])}catch(y){console.error("Error loading dataset details",y)}}t?.length&&b(t)},[t,w,k]),{dataMessagesMap:n,structuresMap:i,datasetsMap:r,dimensionsMap:o,structureDimensionsMap:m,constraintsMap:u,isLoadingGridData:g}}const sc=({attachmentsProps:e,actions:t,titles:n,shareConversationProps:s,metadataSettings:r,formattingSettings:l,locale:u,advanceViewStyles:f,getDatasetUpdatedTime:i,attachmentsConfig:c,datasetInfoOptions:o,...h})=>{const m=h.filtersProps.conversation?.messages?.at(-1)?.custom_content?.attachments,{dataMessage:p,dataset:g,dimensions:x,structureDimensions:w,structures:k,dataSetAttachments:b,onFiltersChange:v,isLoadingGridData:y,constraints:D}=Aa(t,u,e.currentDataQuery,l,e.styles?.chartingStyles,r,n,m),{dimensionsMap:E,structuresMap:j,structureDimensionsMap:A,constraintsMap:O}=nc(t,e.dataQueries),[M,N]=d.useState(),[T,P]=d.useState({filterKey:null,timeFilter:null}),J=d.useCallback((V,$,oe)=>{P(V),N(!0),v(V,$,oe)},[v]),Z=d.useCallback(V=>{V&&t?.updateCurrentDataQuery(e?.dataQueries?.find($=>$?.urn===V)||e.currentDataQuery)},[t,e.currentDataQuery,e?.dataQueries]),_=pa(c?.isExternaLinkIncludeFilters,T,e.currentDataQuery||e.dataQueries?.[0],x);return a.jsxs("div",{className:"advanced-view flex flex-col flex-1 h-full min-w-0",children:[a.jsx(xl,{titles:n,locale:u,shareConversationProps:s,isShowShare:f?.isShowShare}),e?.datasets?.length?a.jsxs(a.Fragment,{children:[e?.datasets?.length>1&&a.jsx(ga,{datasets:e?.datasets,initialSelectedDatasetUrn:e?.currentDataQuery?.urn,locale:u,isHideAdvancedViewButton:!0,selectDataset:Z}),y&&!M?a.jsx(S.Loader,{}):a.jsxs(a.Fragment,{children:[a.jsx(bl,{...o,titles:n,locale:u,dataset:g,data:p?.data,structures:k,metadataSettings:r,getDatasetUpdatedTime:i,externalLink:_}),a.jsx("div",{className:R("flex-1 min-h-0 overflow-auto","advanced-view-filters"),children:a.jsx(Eo,{...h,titles:n,actions:t,attachments:b,attachmentsDataQuery:e.currentDataQuery,dataQueries:e?.dataQueries,dimensions:x,attachmentsStyles:e.styles,isDataLoading:y,locale:u,filtersProps:{...h?.filtersProps,structureDimensions:w,structures:k,dimensionsMap:E,structureDimensionsMap:A,structuresMap:j,onFiltersChange:v,initialConstraints:D,initialConstraintsMap:O},setIsFiltering:N,attachmentsConfig:c,filters:T,onFiltersChange:J})})]})]}):a.jsx(S.Loader,{})]})};function ac(e,t,n,s,r){const[l,u]=d.useState([]),[f,i]=d.useState(),[c,o]=d.useState(!1);return d.useEffect(()=>{let h=!0;async function m(p){o(!0);try{const g=await Promise.all(p.map(w=>We(e,Be(w.urn),()=>e(w.urn))));if(!h)return;const x=g?.map(w=>w?.data?.dataflows?.[0])?.filter(w=>!!w)||[];u(x),t(x),n(p),s(p[0]),i(new Map(g?.map(w=>[C.generateShortUrn(w?.data?.dataflows?.[0]?.id,w?.data?.dataflows?.[0]?.version,w?.data?.dataflows?.[0]?.agencyID),w?.data])))}catch(g){console.error("Error loading datasets",g)}finally{h&&o(!1)}}if(!r?.length){o(!1);return}return m(r),()=>{h=!1}},[r,e,s,n,t]),{datasets:l,datasetStructuresMap:f,isLoading:c}}function us(e){const t=e?.filter(n=>Qs(n));if(t?.every(n=>!!n?.data))return t?.map(n=>({title:n?.title,...ic(rc(n?.data))}))}function rc(e){if(e)try{return JSON.parse(e)}catch(t){console.error("Invalid JSON:",t)}return null}function ic(e){return{...e,filters:e?.filters?.map(t=>({...t,componentCode:t?.component_code||t?.componentCode})),metadata:{datasetUrl:e?.metadata?.datasetUrl,countryDimension:e?.metadata?.country_dimension||e?.metadata?.countryDimension,indicatorDimensions:e?.metadata?.indicator_dimensions||e?.metadata?.indicatorDimensions}}}var Ea=(e=>(e.COMPLETED="completed",e))(Ea||{});const oc=({stage:e,stageRef:t,isCurrentStage:n})=>a.jsxs("div",{ref:t,className:"message-stage flex relative pb-8 last:pb-0 last:mb-8",children:[a.jsx("span",{className:"message-stage-line absolute border-l h-full"}),a.jsx(Me.IconPointFilled,{className:"message-stage-indicator flex shrink-0 z-10"}),a.jsxs("div",{className:"ml-2 w-full",children:[a.jsxs("div",{className:R("flex gap-2 items-center",e?.content&&"mb-4"),children:[n&&a.jsx(S.Loader,{}),a.jsx("h3",{className:"message-stage-name",children:e?.name})]}),a.jsx("div",{className:"prose max-w-full break-words",children:a.jsx(fs,{remarkPlugins:[ms],components:{strong:s=>a.jsx("strong",{className:"text-neutrals-1000",...s}),a:({href:s,children:r,...l})=>a.jsx("a",{href:s,target:"_blank",...l,children:r}),h1:s=>a.jsx("h1",{className:"h1 text-neutrals-1000",...s}),h2:s=>a.jsx("h2",{className:"h2 text-neutrals-1000",...s}),h3:s=>a.jsx("h3",{className:"h3 text-neutrals-1000",...s}),h4:s=>a.jsx("h4",{className:"h4 text-neutrals-1000",...s}),h5:s=>a.jsx("h5",{className:"h5 text-neutrals-1000",...s}),code:s=>a.jsx("code",{className:"text-neutrals-900",...s}),pre:s=>a.jsx("pre",{className:"bg-neutrals-100 border border-neutrals-600",...s})},children:e?.content})})]})]}),lc=({stages:e,expandIcon:t,processingTitle:n})=>{const[s,r]=d.useState(),[l,u]=d.useState(),f=d.useRef(null),i=d.useRef(null);d.useEffect(()=>{u(e?.filter(o=>o?.status!==Ea.COMPLETED)?.at(-1))},[e]),d.useEffect(()=>{s&&i?.current?.scrollIntoView({block:"nearest",behavior:"smooth"})},[s]),d.useEffect(()=>{const o=f.current;let h;if(!o)return;const m=new IntersectionObserver(([p])=>{const g=p?.boundingClientRect?.top;h&&!p?.isIntersecting&&g<h&&r(!1),h=g},{threshold:0});return m.observe(o),()=>m.disconnect()},[]);const c=()=>{r(o=>!o)};return a.jsxs("div",{className:"message-stages",ref:f,children:[a.jsxs("div",{className:R("message-stages-header inline-flex max-w-full items-center cursor-pointer",!l?.name&&"default-header"),onClick:c,children:[a.jsx("p",{className:"message-stages-title truncate",children:l?.name||n||"Processing..."}),a.jsx("i",{className:R("message-stages-expand-icon",s&&"rotated"),children:t})]}),s&&e&&a.jsx("div",{className:"flex flex-col",children:e?.map(o=>a.jsx(oc,{stage:o,stageRef:l?i:null,isCurrentStage:o?.index===l?.index},o.index))})]})},cc=({message:e,regenerateMessage:t,messageActionsIcons:n,rateResponse:s,isStreaming:r=!1,isReadOnly:l=!1,isRegenerateAvailable:u=!1})=>{const f=n?.copy,i=n?.regenerate,c=n?.thumbUp,o=n?.thumbDown,h=n?.thumbPressed,[m,p]=d.useState(e.like??ie.LikeState.NoState),{isAgentAvailable:g}=S.useAgentAvailability(),x=w=>{e.responseId&&(p(w),s(e.responseId||"",w))};return a.jsxs("div",{className:R("message-actions","flex gap-x-2 pt-2"),children:[f&&a.jsx("p",{onClick:()=>navigator.clipboard.writeText(e.content),children:f}),u&&i&&!l&&!r&&a.jsx("p",{onClick:g?()=>t?.(e):void 0,"aria-disabled":!g,className:R(!g&&"opacity-50 !cursor-not-allowed pointer-events-none"),children:i}),c&&!l&&m!==ie.LikeState.Disliked&&(m===ie.LikeState.NoState?a.jsx("p",{onClick:()=>x(ie.LikeState.Liked),children:c}):a.jsx("p",{children:h})),o&&!l&&m!==ie.LikeState.Liked&&(m===ie.LikeState.NoState?a.jsx("p",{onClick:()=>x(ie.LikeState.Disliked),children:o}):a.jsx("p",{className:"rotate-180",children:h}))]})},dc=({message:e,onEditClick:t,messageActionsIcons:n,isStreaming:s=!1,isReadOnly:r=!1})=>{const l=n?.copy,u=n?.edit,{isAgentAvailable:f}=S.useAgentAvailability();return a.jsxs("div",{className:R("message-actions","flex gap-x-2 pt-2 ml-12"),children:[l&&a.jsx("p",{onClick:()=>navigator.clipboard.writeText(e.content),children:l}),u&&!s&&!r&&a.jsx("p",{onClick:f?t:void 0,className:R(!f&&"opacity-50 !cursor-not-allowed pointer-events-none"),"aria-disabled":!f,children:u})]})},uc=({content:e,textColorClass:t,onCancel:n,onEditApply:s,editMessageTitles:r})=>{const{isOpenedAdvancedView:l}=Oe(),u=d.useRef(null);d.useEffect(()=>{const i=u.current;f(),i&&(i.focus(),i.setSelectionRange(i.value.length,i.value.length))},[]);const f=()=>{const i=u.current;i&&(i.style.height="auto",i.style.height=i.scrollHeight+"px")};return a.jsxs("div",{className:R("max-w-none break-words",l?"body-2":"body-1",t),children:[a.jsx("textarea",{ref:u,className:"resize-none overflow-hidden outline-none bg-neutrals-300 w-full",defaultValue:e,onInput:f}),a.jsxs("div",{className:R("flex gap-x-2 items-center","edit-buttons-wrapper"),children:[a.jsx(S.Button,{buttonClassName:"text-button-secondary small-icon-button",title:r?.cancel,isSmallButton:!0,onClick:n}),a.jsx(S.Button,{buttonClassName:"text-button-primary small-icon-button",title:r?.send,isSmallButton:!0,onClick:()=>s(u.current?.value||"")})]})]})},hc=({message:e,previousMessage:t,titles:n,actions:s,dataQuery:r,isStreaming:l=!1,isCurrentMessageStreaming:u=!1,messageStyles:f,attachmentsStyles:i,showAdvancedView:c,formattingSettings:o,locale:h,metadataSettings:m,expandStagesIcon:p,onAdvancedViewOpen:g,regenerateMessage:x,selectMessageToSend:w,messageActionsIcons:k,rateResponse:b,editMessage:v,editMessageTitles:y,isReadOnlyConversation:D,isLastNotUserMessage:E,limitMessages:j,attachmentsConfig:A})=>{const[O,M]=d.useState(),[N,T]=d.useState(),[P,J]=d.useState([]),[Z,_]=d.useState([]),[V,$]=d.useState(),[oe,X]=d.useState(!1),G=e.role===ie.Role.User,ee=e.role===ie.Role.System,{datasets:fe,datasetStructuresMap:ce,isLoading:H}=ac(s.getDataSet,s.updateDatasets,s.updateDataQueries,s.updateCurrentDataQuery,O),[Y,Q]=d.useState(!1),[ae,me]=d.useState([]);d.useEffect(()=>{T(O?.[0])},[O]);const{dataSetAttachments:we,dimensions:ve,isLoadingGridData:Ce}=Aa(s,h,N,o,i?.chartingStyles,m,n,e.custom_content?.attachments,N?ce?.get(N.urn):void 0,H),{isOpenedAdvancedView:ye}=Oe(),De=()=>{G&&Q(!0)},xe=()=>{Q(!1)},Ae=W=>{xe(),v?.({...e,content:W})},Ne=d.useCallback(W=>{W&&(T(O?.find(K=>K?.urn===W)),$(void 0))},[O]);d.useEffect(()=>{const W=e.custom_content?.form_schema?.properties,K=E?W?.choice?.oneOf||W?.completion?.oneOf:[];me(K||[])},[e,E]),d.useEffect(()=>{const W=ts(e),K=us(W),le=W.filter(he=>yt(he));M(K),_(le)},[e]),d.useEffect(()=>{X(O!=null&&O.length>0)},[O]),d.useEffect(()=>{r&&r.urn&&$(r.urn)},[r]),d.useEffect(()=>{if(e?.role===ie.Role.System&&t){const W=ts(t),K=us(W)||[];O&&K&&ce&&J(yo(K,O,ce,h))}},[O,N,ce,ve,h,e?.role,t]);const je=d.useCallback(()=>!G&&f?.systemMessageIcon&&!(ye&&!u)?a.jsx("div",{className:R("flex-shrink-0 rounded-full flex items-center justify-center w-[44px] h-[44px]",u?"text-white absolute":"text-neutrals-400"),children:f.systemMessageIcon}):null,[G,f?.systemMessageIcon,ye,u]),B=d.useMemo(()=>a.jsx(wa,{actions:s,titles:n,attachments:oe?we:Z,onAdvancedViewOpen:g,isDataSetAttachments:oe,datasets:fe,initialSelectedDatasetUrn:V,messageStyles:f,attachmentsStyles:i,showAdvancedView:c,isSystemAttachments:ee,isDataLoading:Ce,currentDataQuery:N,dataQueries:O,attachmentInfoList:P,locale:h,dimensions:ve,selectDataset:Ne,limitMessages:j,attachmentsConfig:A}),[s,n,oe,we,Z,fe,V,f,i,c,ee,Ce,N,O,P,h,ve,Ne,g,j,A]);return a.jsx(a.Fragment,{children:!(ee&&ye)&&a.jsx("div",{className:R("max-w-full flex",G?"justify-end":"justify-start","message-wrapper"),children:a.jsxs("div",{className:R("flex items-start max-w-full",(ee||Y)&&"w-full"),children:[a.jsxs("div",{className:"mr-2 relative",children:[je(),u&&a.jsx(S.Loader,{})]}),a.jsxs("div",{className:"flex-1 min-w-0",children:[a.jsxs("div",{className:R(G?"bg-neutrals-300 px-6":"pt-0",G?"user-message":"system-message",G&&(Y?"w-[100%] ml-0":"ml-12")),children:[!G&&!ye&&e?.custom_content?.stages?a.jsx(lc,{stages:e?.custom_content?.stages,expandIcon:p,processingTitle:f?.processingTitle}):u&&a.jsx("p",{className:"body-1 text-neutrals-700 loading-message",children:n?.loading}),Y?a.jsx(uc,{content:e.content,onCancel:xe,onEditApply:Ae,editMessageTitles:y}):a.jsx(_s,{content:e.content})]}),B,!u&&(G?!Y&&a.jsx(dc,{messageActionsIcons:k,message:e,isStreaming:l,onEditClick:De,isReadOnly:D}):a.jsx(cc,{messageActionsIcons:k,message:e,isStreaming:l,regenerateMessage:x,rateResponse:b,isReadOnly:D,isRegenerateAvailable:E})),!ye&&!Ce&&a.jsx(Vs,{choiceButtons:ae,onClick:w})]})]})})})},fc=({messages:e,isStreaming:t=!1,isReadOnly:n,scrollBottomIcon:s,conversationViewState:r,...l})=>{const u=d.useRef(null),f=d.useRef(null),{isOpenedAdvancedView:i}=Oe(),[c,o]=d.useState(null),[h,m]=d.useState(!1),p=()=>{const b=f.current?.parentElement,v=u.current;if(b&&v){const y=v.offsetTop-b.offsetTop;b.scrollTo({top:y,behavior:"smooth"})}};d.useEffect(()=>{p()},[e,t]),d.useEffect(()=>{!i&&c!==null&&setTimeout(()=>{f?.current?.parentElement?.scrollTo({top:c,behavior:"smooth"})})},[i,c]);const g=()=>{const b=f.current?.parentElement?.scrollTop||null;o(b)},x=()=>{const b=f.current?.parentElement;if(b){const{scrollTop:v,scrollHeight:y,clientHeight:D}=b;v+D>=y?m(!1):!h&&!i&&m(!0)}};d.useEffect(()=>{i&&m(!1)},[i]);const w=S.useDebounce(x,300);d.useEffect(()=>{const b=f.current?.parentElement;return b?.addEventListener("scroll",w),()=>b?.removeEventListener("scroll",w)},[w]);const k=d.useCallback(b=>{const v=z.linkifyText(b);return a.jsx("div",{className:"whitespace-pre-wrap break-words",children:v.map((y,D)=>y.type==="text"?a.jsx(d.Fragment,{children:y.value},D):a.jsx("a",{href:y.value,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center align-middle",children:a.jsx(Me.IconExternalLink,{className:"text-primary cursor-pointer w-4 h-4 shrink-0"})},D))})},[]);return a.jsxs("div",{ref:f,className:"h-full w-full flex justify-center",children:[a.jsxs("div",{className:"flex flex-col gap-y-6 max-w-full chat-messages-wrapper",children:[e.map((b,v)=>{const y=b.id??v;if(b.errorMessage){const A=r?.errorContext?.kind===te.ERROR_CONTEXT_KIND.RATE_LIMIT?S.InlineAlertType.Warning:S.InlineAlertType.Error;return a.jsx(S.InlineAlert,{type:A,children:a.jsx("div",{className:"flex flex-col",children:k(b.errorMessage)})},y)}const D=v===e.length-1,E=oi(e,v),j=li(e);return a.jsx(hc,{message:b,previousMessage:E,onAdvancedViewOpen:g,isStreaming:t,isCurrentMessageStreaming:t&&D&&b.role===ie.Role.Assistant,showAdvancedView:v===j&&!n,isLastNotUserMessage:D&&b.role!==ie.Role.User,...l},y)}),a.jsx("div",{ref:u,className:"h-4"})]}),a.jsx("div",{onClick:p,className:R("fixed right-10 lg:right-6 sm:hidden bottom-[88px] rounded-[50%] border-[2px] w-[40px] h-[40px] border-primary cursor-pointer text-primary bg-white","scroll-button-wrapper",h?"block":"hidden"),children:a.jsx("div",{className:"flex justify-center items-center w-full h-full",children:s})})]})},mc=e=>{const t={};return e.choices?.[0]?.delta?.content&&(t.content=e.choices[0].delta.content),e.choices?.[0]?.delta?.custom_content&&(t.custom_content=e.choices[0].delta.custom_content),e.choices?.[0]?.delta?.role&&(t.role=e.choices[0].delta.role),e.id&&(t.responseId=e.id),t},gc="local",pc=e=>!e.permissions?.includes(ie.SharePermission.WRITE)&&!vc(e),wc=(e,t)=>Na(e)!==t,vc=e=>Na(e)===gc,Na=e=>e.id.split("/")[0],bc=(e,t)=>_t([...t?.messages||[],e]),_t=e=>[...e].map(t=>{const n={role:t.role,content:t.content};return(t.role===ie.Role.Assistant||t.role===ie.Role.System)&&t.custom_content!=null&&(t.custom_content.state!=null||t.custom_content.attachments!=null||t.custom_content.form_schema!=null)&&(n.custom_content={},t.custom_content.state!=null&&(n.custom_content.state=t.custom_content.state),t.custom_content.attachments!=null&&(n.custom_content.attachments=Cc(t.custom_content.attachments)),t.custom_content.form_schema!=null&&(n.custom_content.form_schema=t.custom_content.form_schema)),t.role===ie.Role.User&&t.custom_content&&(n.custom_content=t.custom_content),n}),xc=(e,t)=>{const n=t?.messages,s=n?.findIndex(r=>e.id===r.id);return _t(n?.slice(0,s)||[])},Sc=(e,t)=>{const n=t?.messages,s=n?.findIndex(r=>e.id===r.id);return _t([...n?.slice(0,s)||[],e])};function Cc(e){return e.map(t=>({type:t.type,title:t.title,data:t.data,url:t.url,reference_type:t.reference_type,reference_url:t.reference_url}))}const yc=(e,t,n,s)=>{if(!n||t)return null;const r={id:`msg-${Date.now()}`,role:ie.Role.User,content:e,timestamp:Date.now()};if(s){const l=s===ht.COMPLETE?it.COMPLETION:it.CHOICE;r.custom_content={form_value:{[l]:s}}}return r},kc=(e,t,n)=>`/${t}${n}/${z.getConversationNavPath(e?.folderId,e?.id)}`,Dc=(e,t,n)=>{const s=`${t}/${n}`,r=te.generateConversationId({folderId:s,name:e?.name});return{...e,folderId:s,id:r}},Mc="AbortError",Ac=({error:e,statusMessages:t})=>{if(e){if(e.type===te.DIAL_ERROR_TYPES.RATE_LIMIT_EXCEEDED){const n=e.exceeded_limit?.length?t.getExceededLimitsMessage(e.exceeded_limit):e.display_message??"";throw new z.HttpError({message:e.message,displayMessage:n,code:e.type,status:e.status??z.HTTP_ERROR_CODES.TOO_MANY_REQUESTS,details:{kind:te.ERROR_CONTEXT_KIND.RATE_LIMIT,occurredAt:new Date().toISOString(),retryAfterSeconds:Number(e.retry_after??"")}})}throw new z.HttpError({message:e.message,status:e.status??z.HTTP_ERROR_CODES.BAD_REQUEST,code:e.code})}},Ec=({error:e,statusMessages:t})=>{if(e.code===te.DIAL_ERROR_TYPES.RATE_LIMIT_EXCEEDED){const n=e;return{errorMessage:n.displayMessage??n.message,errorContext:n.details}}return e.code===te.DIAL_ERROR_CODES.CONTENT_FILTER?{errorMessage:t.contentFilterError??e.message}:{errorMessage:e.status===z.HTTP_ERROR_CODES.SERVICE_UNAVAILABLE?t.serverOverloaded:t.serverError}},hs=(e,t)=>{const n=e.customViewState??{},s=n[te.CUSTOM_VIEW_STATE_KEY]??{};return{...e,customViewState:{...n,[te.CUSTOM_VIEW_STATE_KEY]:{...s,errorContext:t}}}},Nc=({conversationKey:e,conversation:t,actions:n,messageStyles:s,attachmentsStyles:r,inputMessageStyles:l,shareConversationProps:u,showConversationHeaderAdvancedView:f=!0,formattingSettings:i,metadataSettings:c,expandStagesIcon:o,locale:h,conversationsRoute:m,token:p,titles:g,dataQuery:x,handleInvalidStreaming:w,setConversation:k,setConversations:b,openUrl:v,messageActionsIcons:y,editMessageTitles:D,scrollBottomIcon:E,isFinalMessage:j,limitMessages:A,attachmentsConfig:O})=>{const[M,N]=d.useState(null),[T,P]=d.useState(!1),[J,Z]=d.useState(!0),{isStreaming:_,setIsStreaming:V}=bs(),{isOpenedAdvancedView:$}=Oe(),{isAgentAvailable:oe}=S.useAgentAvailability(),{statusMessages:X}=Et(),{onboardingFileSchema:G,onboardingFilePath:ee,onboardingFileName:fe,isShowOnboarding:ce,setOnboardingFileSchema:H}=Se();d.useEffect(()=>{G&&n.putOnboardingFile?.(fe,ee,G)},[n,G,fe,ee]),d.useEffect(()=>{$&&G?.lastDisplayedElement===ue.OPEN_ADVANCED_VIEW&&H?.(Zs(G))},[n,$,H,G]);const Y=d.useCallback(()=>{v(`/${h}${m}`)},[h,m,v]),Q=d.useCallback(async()=>{try{const{bucket:I}=await n.getBucket(),L=Dc(t,I,h);await n.createConversation(L,h);const F=await n.getConversations(h);b(z.cleanConversationNames(F)),v(kc(L,h,m))}catch(I){console.error("Failed to save conversation:",I)}},[n,t,m,h,v,b]),ae=d.useCallback(async I=>{try{await n.updateConversation(decodeURI(e),{name:I.name,messages:I.messages,customViewState:I.customViewState})}catch(L){console.error("Failed to save conversation:",L)}},[n,e]),me=d.useCallback(I=>{k(L=>L?{...L,messages:[...L?.messages||[],I]}:null)},[k]),we=d.useCallback(()=>{const I={id:`msg-${Date.now()+1}`,role:ie.Role.Assistant,content:"",timestamp:Date.now()};return k(L=>L?{...L,messages:[...L.messages,I]}:null),I},[k]),ve=d.useCallback((I,L)=>{const F=te.mergeMessages?.(I,[L]);if(F)return k(ne=>ne?{...ne,messages:ne.messages.map(U=>U.id===I.id?{...F}:U)}:null),F},[k]),Ce=d.useCallback((I,L)=>{t?.model?.id&&(n.rateResponse(I,L===ie.LikeState.Liked,t.model.id),t.messages=t.messages.map(F=>F.responseId===I?At.merge(F,{like:L}):F),ae(t))},[n,t,ae]),ye=d.useCallback((I,L)=>{let F=X.serverError,ne,U;if(z.isHttpError(I)){U=I;const ge=Ec({error:I,statusMessages:X});F=ge.errorMessage,ne=ge.errorContext}else U=new z.HttpError({status:z.HTTP_ERROR_CODES.INTERNAL_SERVER_ERROR,message:F});return L&&(L=ve(L,{errorMessage:F})),w?.(U),{assistantMessage:L,errorContext:ne}},[w,X.serverError,X.serverOverloaded,X.contentFilterError,ve]),De=d.useCallback(async(I,L,F)=>{const ne=new AbortController;N(ne);let U=I,ge;return F?(await te.streamChatResponse?.(encodeURI(F.id),L,{model:F.model,signal:ne?.signal,onMessage:pe=>{Ac({error:pe.error,statusMessages:X});const Ee=mc(pe);(Ee.content||Ee.role||Ee.responseId)&&(U=ve(U,Ee))},onError:pe=>{if(!B(pe))throw console.error("Streaming error:",pe),pe}},p,F?.custom_fields).catch(pe=>{const{assistantMessage:Ee,errorContext:He}=ye(pe,U);U=Ee,ge=He}),{assistantMessage:U,errorContext:ge}):{assistantMessage:U,errorContext:ge}},[p,ve,ye,X]),xe=d.useCallback(async(I,L,F,ne)=>{if(!L)return;let U=hs(L,ne);U={...U,messages:[...L.messages],updatedAt:Date.now()},F&&U.messages.push(F),U.messages.push(I),await ae(U)},[ae]),Ae=d.useCallback(I=>{k(L=>L&&hs(L,I))},[k]),Ne=d.useCallback((I,L)=>{k(F=>F?{...F,messages:F.messages.filter(ne=>ne.id!==L.id)}:null)},[k]),je=d.useCallback(()=>{M&&!M.signal.aborted&&M.abort()},[M]),B=I=>I?.name===Mc,W=d.useCallback(async(I,L,F,ne,U,ge=!0)=>{B(U)?await xe(ne??F,I,ge?L:void 0):Ne(U,L)},[xe,Ne]),K=d.useCallback(async(I,L,F)=>{if(!L||!I)return;const ne=yc(I,_,L,F);let U,ge;if(ne){me(ne);try{V(!0),U=we();const pe=bc(ne,L),{assistantMessage:Ee,errorContext:He}=await De(U,pe,L);Ae(He),ge=Ee,await xe(ge,L,ne,He)}catch(pe){W(L,ne,U,ge,pe)}finally{V(!1)}}},[_,V,me,we,De,xe,W,Ae]),le=d.useCallback(async(I,L,F)=>{let ne,U;try{V(!0),ne=we();const{assistantMessage:ge,errorContext:pe}=await De(ne,I,L);U=ge,Ae(pe),await xe(U,L,void 0,pe)}catch(ge){W(L,F,ne,U,ge,!1)}finally{V(!1)}},[V,xe,W,De,we,Ae]),he=d.useCallback(async(I,L)=>{if(!L||!I)return;const F=xc(I,L),ne={...L,messages:L.messages.slice(0,F.length)};k(U=>U?{...U,...ne}:null),le(F,ne,I)},[k,le]),{isLastMessageFailed:Ie,regenerateLastMessage:Fe}=d.useMemo(()=>{const I=t?.messages?.at(-1);return{isLastMessageFailed:!!I?.errorMessage,regenerateLastMessage:I&&(()=>he(I,t))}},[t,he]),_e=d.useCallback(async(I,L)=>{if(!L||!I)return;const F=Sc(I,L),ne={...L,messages:[...L.messages.slice(0,F.length-1),I]};k(U=>U?{...U,...ne}:null),le(F,ne,I)},[k,le]);d.useEffect(()=>{ns();async function I(){try{Z(!0);const{bucket:L}=await n.getBucket(),F=await n.getConversation(decodeURI(e));k(F),P(pc(F)&&wc(F,L)),(F.messages.length===0||F?.messages?.[0]?.role===ie.Role.Assistant&&F?.messages?.length===1)&&K(F.prompt,F)}catch{P(!0)}finally{Z(!1)}}return e&&I(),()=>{ns()}},[e]);const Xe=d.useMemo(()=>({getFile:n.getFile,putOnboardingFile:n.putOnboardingFile,getDataSet:n.getDataSet,getDataSetData:n.getDataSetData,getConstraints:n.getConstraints,updateCurrentDataQuery:n.updateCurrentDataQuery,updateDataQueries:n.updateDataQueries,updateDatasets:n.updateDatasets,downloadDataSet:n.downloadDataSet}),[n]);if(J)return a.jsx(S.Loader,{});const Ve=t?.customViewState?.[te.CUSTOM_VIEW_STATE_KEY],et=()=>{if(Ve?.errorContext?.kind===te.ERROR_CONTEXT_KIND.RATE_LIMIT&&te.isRateLimitStillActive(Ve.errorContext)){const I=te.getRateLimitRestoreDate(Ve.errorContext);if(I){const L=te.formatDateTime(I);return a.jsx(S.InlineAlert,{type:S.InlineAlertType.Info,children:X.getAssistantRestoreMessage(L.date,L.time)})}}return oe?a.jsx(ys,{onSendMessage:I=>K(I,t),onStopStreaming:je,inProcess:_,sendMessageIcon:l.sendMessageIcon,retryIcon:l.retryIcon,placeholder:g?.askAnything??"Ask anything...",containerClasses:"mt-4",inputClasses:"border-neutrals-600 mr-2",isLastFailed:Ie,onRetryFailed:Fe}):a.jsx(S.InlineAlert,{type:S.InlineAlertType.Error,children:X.assistantUnavailable})};return a.jsxs("div",{className:R("h-full flex flex-col bg-white conversation-view-wrapper",$&&!f?"p-4":"pr-2"),children:[$&&!f?null:a.jsx(Fs,{conversation:t,locale:h,isOpenedAdvancedView:$,isShowShareButton:!T&&!ce,shareConversationProps:u}),a.jsx("div",{className:R("flex-1 min-h-0 flex flex-col items-end hover:overflow-y-auto",s?.messagesWrapperClass),children:a.jsx(fc,{messages:t?.messages||[],actions:Xe,isStreaming:_,isReadOnly:T,messageStyles:s,attachmentsStyles:r,formattingSettings:i,metadataSettings:c,expandStagesIcon:o,dataQuery:x,locale:h,titles:g,regenerateMessage:I=>he(I,t),selectMessageToSend:(I,L)=>K(I,t,L),messageActionsIcons:y,rateResponse:Ce,editMessage:I=>_e(I,t),editMessageTitles:D,scrollBottomIcon:E,isReadOnlyConversation:T||ce,limitMessages:A,attachmentsConfig:O,conversationViewState:Ve})}),ce?null:T?a.jsx("div",{className:"flex items-center justify-center mt-4",children:a.jsx(S.Button,{iconBefore:a.jsx(Me.IconCopy,{width:20,height:20}),title:g?.duplicate??"Duplicate Chat",isSmallButton:!0,onClick:Q,buttonClassName:R("text-button-secondary")})}):a.jsx("div",{className:R(l.inputContainerClass),children:et()}),ce&&j&&a.jsx(S.Button,{iconBefore:a.jsx(Me.IconPlus,{width:24,height:24}),title:g?.onboardingFooterLink,onClick:Y,isSmallButton:!0,buttonClassName:"text-button-secondary self-center mb-3"})]})},Vt=d.createContext(null);function jc({map:e,children:t}){const n=d.useMemo(()=>({map:e,getDimensionsMetadata:l=>e[l],getDimensionMetadata:(l,u)=>e[l]?.[u]}),[e]);return a.jsx(Vt.Provider,{value:n,children:t})}function Tc(){const e=d.useContext(Vt);if(!e)throw new Error("useDatasetDimensionsMetadataMap must be used within DatasetDimensionsMetadataMapProvider");return e}function Lc(){return d.useContext(Vt)}exports.AdvancedView=sc;exports.AdvancedViewProvider=Ha;exports.CUSTOM_CHOICE_ID=ht;exports.ChartingIcon=ot;exports.ChatFooter=Bs;exports.ChatMessagesProvider=Ba;exports.ChatOnboardingFooter=Hs;exports.ConversationView=Nc;exports.ConversationViewMessagesProvider=Wa;exports.ConversationWelcome=dr;exports.CustomContentProperties=it;exports.DatasetDimensionsMetadataMapProvider=jc;exports.OnboardingProvider=Ga;exports.STAGE_STATUS=Cs;exports.useAdvancedView=Oe;exports.useChatMessages=bs;exports.useConversationViewMessages=Et;exports.useDatasetDimensionsMetadataMap=Tc;exports.useDatasetDimensionsMetadataMapOptional=Lc;exports.useOnboarding=Se;
|
|
10
|
+
`),language:r}}const Zl=["python"];function Aa(e,t,n,s,r,l,u,f,i,c=!1){const[o,h]=d.useState(),[m,p]=d.useState(),[g,x]=d.useState(),[w,k]=d.useState(),[b,v]=d.useState({title:u?.dataGrid||"Data Grid",type:te.AttachmentType.CUSTOM_DATA_GRID}),[y,D]=d.useState({title:u?.chart||"Chart",type:te.AttachmentType.CUSTOM_CHART}),[E,j]=d.useState([]),[A,O]=d.useState([]),[M,N]=d.useState([]),[T,P]=d.useState(!1),[J,Z]=d.useState({startPeriod:null,endPeriod:null}),{getConstraints:_,getDataSet:V,getDataSetData:$,putOnboardingFile:oe}=e,X=d.useCallback(H=>{if(!H)return;const Y=C.getDimensions(H);p(H.dataflows?.[0]||void 0),k(H||void 0),O([...Y?.dimensions||[],...Y?.timeDimensions||[]])},[]),G=d.useCallback(async H=>{const Y=C.getFiltersDtoFromDataQuery(H);try{const ae=(await We(_,Be(H.urn,Y),()=>_(H.urn,Y)))?.data?.dataConstraints||[];x(ae)}catch{x([])}},[_]),ee=d.useCallback(async H=>{const Y=i?{data:i}:await We(V,Be(H.urn),()=>V(H.urn));if(Y?.data){const Q=C.getDimensions(Y.data);X(Y.data);const ae=Q?.dimensions==null?null:C.getTimeSeriesFilterKey(Q?.dimensions,H.filters),me=Ys(H,Q);We($,Be(H.urn,{filterKey:ae,timeFilter:me}),()=>$(H.urn,{filterKey:ae,timeFilter:me})).then(we=>{h(we||void 0),N(C.getStructureDimensions(we))}).finally(()=>P(!1))}},[X,V,$,i]);d.useEffect(()=>{X(i)},[X,i]),d.useEffect(()=>{async function H(Y){P(!0);try{await Promise.all([G(Y),ee(Y)])}catch(Q){console.error("Error loading dataset details",Q)}}n!=null&&!(c&&!i)?H(n):n!=null&&c&&P(!0)},[n,i,c,G,ee]);const fe=d.useCallback((H,Y,Q)=>{try{P(!0),x(Y);const ae=Q?.find(me=>me.id===C.TIME_PERIOD)?.timeRange;ae&&Z(ae),We($,Be(n?.urn||"",H),()=>$(n?.urn||"",H)).then(me=>{h(me||void 0),N(C.getStructureDimensions(me))}).finally(()=>P(!1))}catch(ae){console.error("Error loading dataset data",ae)}},[n,$]);d.useEffect(()=>{if(w!=null&&o!=null&&g?.length){const H=w.dataflows?.[0]?.names?.[t],Y=Kl(w,o,n,t,s,l,r,u,oe,g,J);v(Q=>({...Q,title:H||u?.dataGrid||"Data Grid",grid_data:Y}))}},[w,o,u,t,s,n,l,r,g,J,oe]),d.useEffect(()=>{w!=null&&o!=null&&D(H=>{const Y=Wl(w,o,n,t,r);return{...H,charting_data:Y}})},[w,o,n,t,r]),d.useEffect(()=>{if(f?.length){const H=n?.urn,Y=f.filter(Q=>Q.type===te.AttachmentType.MARKDOWN).filter(Q=>!H||Q.title?.includes(H)).map(Q=>{const ae=ql(Q.data??"");return{title:u?.codeSamples??"Code samples",type:te.AttachmentType.CUSTOM_CODE_SAMPLE,language:ae.language,data:ae.code}}).filter(Q=>Zl.includes(Q.language??""));j(Y)}},[f,u,n]);const ce=d.useMemo(()=>[b,y,...E],[b,y,E]);return{dataMessage:o,structures:w,dataset:m,dimensions:A,structureDimensions:M,onFiltersChange:fe,constraints:g,isLoadingGridData:T,dataSetAttachments:ce}}const Ql=async(e,t)=>{const n=new Map,s=C.getFiltersDtoMapFromDataQuery(e);for(const r of e){const l=await t(r.urn,s?.get(r.urn));n?.set(r.urn,l?.data?.dataConstraints||[])}return n},Xl=()=>({datasetsMap:new Map,dataMessagesMap:new Map,structuresMap:new Map,dimensionsMap:new Map,structureDimensionsMap:new Map}),ec=async(e,t,n,s)=>{const r=Xl();for(const l of e)t(l.urn).then(u=>{if(u?.data){const f=C.getDimensions(u.data);r.datasetsMap?.set(l?.urn,u?.data?.dataflows?.[0]),r.structuresMap?.set(l?.urn,u?.data),r.dimensionsMap?.set(l?.urn,[...f?.dimensions||[],...f?.timeDimensions||[]]);const i=f?.dimensions==null?null:C.getTimeSeriesFilterKey(f?.dimensions,l.filters),c=Ys(l,f);tc(l,{filterKey:i,timeFilter:c},n).then(({dataMessage:o,structureDimensions:h})=>{r?.dataMessagesMap?.set(l.urn,o),r?.structureDimensionsMap?.set(l.urn,h||[])}).finally(()=>s(!1))}});return r},tc=async(e,t,n)=>n(e.urn,t).then(s=>({dataMessage:s,structureDimensions:C.getStructureDimensions(s)}));function nc(e,t){const[n,s]=d.useState(),[r,l]=d.useState(),[u,f]=d.useState(),[i,c]=d.useState(),[o,h]=d.useState(),[m,p]=d.useState(),[g,x]=d.useState(!1),w=d.useCallback(async b=>{try{const v=await Ql(b,e.getConstraints);f(v)}catch{f(new Map)}},[e,f]),k=d.useCallback(async b=>{const v=await ec(b,e.getDataSet,e.getDataSetData,x);l(v?.datasetsMap),c(v?.structuresMap),h(v?.dimensionsMap),s(v?.dataMessagesMap),p(v?.structureDimensionsMap)},[e]);return d.useEffect(()=>{async function b(v){x(!0);try{await Promise.all([w(v),k(v)])}catch(y){console.error("Error loading dataset details",y)}}t?.length&&b(t)},[t,w,k]),{dataMessagesMap:n,structuresMap:i,datasetsMap:r,dimensionsMap:o,structureDimensionsMap:m,constraintsMap:u,isLoadingGridData:g}}const sc=({attachmentsProps:e,actions:t,titles:n,shareConversationProps:s,metadataSettings:r,formattingSettings:l,locale:u,advanceViewStyles:f,getDatasetUpdatedTime:i,attachmentsConfig:c,datasetInfoOptions:o,...h})=>{const m=h.filtersProps.conversation?.messages?.at(-1)?.custom_content?.attachments,{dataMessage:p,dataset:g,dimensions:x,structureDimensions:w,structures:k,dataSetAttachments:b,onFiltersChange:v,isLoadingGridData:y,constraints:D}=Aa(t,u,e.currentDataQuery,l,e.styles?.chartingStyles,r,n,m),{dimensionsMap:E,structuresMap:j,structureDimensionsMap:A,constraintsMap:O}=nc(t,e.dataQueries),[M,N]=d.useState(),[T,P]=d.useState({filterKey:null,timeFilter:null}),J=d.useCallback((V,$,oe)=>{P(V),N(!0),v(V,$,oe)},[v]),Z=d.useCallback(V=>{V&&t?.updateCurrentDataQuery(e?.dataQueries?.find($=>$?.urn===V)||e.currentDataQuery)},[t,e.currentDataQuery,e?.dataQueries]),_=pa(c?.isExternaLinkIncludeFilters,T,e.currentDataQuery||e.dataQueries?.[0],x);return a.jsxs("div",{className:"advanced-view flex flex-col flex-1 h-full min-w-0",children:[a.jsx(xl,{titles:n,locale:u,shareConversationProps:s,isShowShare:f?.isShowShare}),e?.datasets?.length?a.jsxs(a.Fragment,{children:[e?.datasets?.length>1&&a.jsx(ga,{datasets:e?.datasets,initialSelectedDatasetUrn:e?.currentDataQuery?.urn,locale:u,isHideAdvancedViewButton:!0,selectDataset:Z}),y&&!M?a.jsx(S.Loader,{}):a.jsxs(a.Fragment,{children:[a.jsx(bl,{...o,titles:n,locale:u,dataset:g,data:p?.data,structures:k,metadataSettings:r,getDatasetUpdatedTime:i,externalLink:_}),a.jsx("div",{className:R("flex-1 min-h-0 overflow-auto","advanced-view-filters"),children:a.jsx(Eo,{...h,titles:n,actions:t,attachments:b,attachmentsDataQuery:e.currentDataQuery,dataQueries:e?.dataQueries,dimensions:x,attachmentsStyles:e.styles,isDataLoading:y,locale:u,filtersProps:{...h?.filtersProps,structureDimensions:w,structures:k,dimensionsMap:E,structureDimensionsMap:A,structuresMap:j,onFiltersChange:v,initialConstraints:D,initialConstraintsMap:O},setIsFiltering:N,attachmentsConfig:c,filters:T,onFiltersChange:J})})]})]}):a.jsx(S.Loader,{})]})};function ac(e,t,n,s,r){const[l,u]=d.useState([]),[f,i]=d.useState(),[c,o]=d.useState(!1);return d.useEffect(()=>{let h=!0;async function m(p){o(!0);try{const g=await Promise.all(p.map(w=>We(e,Be(w.urn),()=>e(w.urn))));if(!h)return;const x=g?.map(w=>w?.data?.dataflows?.[0])?.filter(w=>!!w)||[];u(x),t(x),n(p),s(p[0]),i(new Map(g?.map(w=>[C.generateShortUrn(w?.data?.dataflows?.[0]?.id,w?.data?.dataflows?.[0]?.version,w?.data?.dataflows?.[0]?.agencyID),w?.data])))}catch(g){console.error("Error loading datasets",g)}finally{h&&o(!1)}}if(!r?.length){o(!1);return}return m(r),()=>{h=!1}},[r,e,s,n,t]),{datasets:l,datasetStructuresMap:f,isLoading:c}}function us(e){const t=e?.filter(n=>Qs(n));if(t?.every(n=>!!n?.data))return t?.map(n=>({title:n?.title,...ic(rc(n?.data))}))}function rc(e){if(e)try{return JSON.parse(e)}catch(t){console.error("Invalid JSON:",t)}return null}function ic(e){return{...e,filters:e?.filters?.map(t=>({...t,componentCode:t?.component_code||t?.componentCode})),metadata:{datasetUrl:e?.metadata?.datasetUrl,countryDimension:e?.metadata?.country_dimension||e?.metadata?.countryDimension,indicatorDimensions:e?.metadata?.indicator_dimensions||e?.metadata?.indicatorDimensions}}}var Ea=(e=>(e.COMPLETED="completed",e))(Ea||{});const oc=({stage:e,stageRef:t,isCurrentStage:n})=>a.jsxs("div",{ref:t,className:"message-stage flex relative pb-8 last:pb-0 last:mb-8",children:[a.jsx("span",{className:"message-stage-line absolute border-l h-full"}),a.jsx(Me.IconPointFilled,{className:"message-stage-indicator flex shrink-0 z-10"}),a.jsxs("div",{className:"ml-2 w-full",children:[a.jsxs("div",{className:R("flex gap-2 items-center",e?.content&&"mb-4"),children:[n&&a.jsx(S.Loader,{}),a.jsx("h3",{className:"message-stage-name",children:e?.name})]}),a.jsx("div",{className:"prose max-w-full break-words",children:a.jsx(fs,{remarkPlugins:[ms],components:{strong:s=>a.jsx("strong",{className:"text-neutrals-1000",...s}),a:({href:s,children:r,...l})=>a.jsx("a",{href:s,target:"_blank",...l,children:r}),h1:s=>a.jsx("h1",{className:"h1 text-neutrals-1000",...s}),h2:s=>a.jsx("h2",{className:"h2 text-neutrals-1000",...s}),h3:s=>a.jsx("h3",{className:"h3 text-neutrals-1000",...s}),h4:s=>a.jsx("h4",{className:"h4 text-neutrals-1000",...s}),h5:s=>a.jsx("h5",{className:"h5 text-neutrals-1000",...s}),code:s=>a.jsx("code",{className:"text-neutrals-900",...s}),pre:s=>a.jsx("pre",{className:"bg-neutrals-100 border border-neutrals-600",...s})},children:e?.content})})]})]}),lc=({stages:e,expandIcon:t,processingTitle:n})=>{const[s,r]=d.useState(),[l,u]=d.useState(),f=d.useRef(null),i=d.useRef(null);d.useEffect(()=>{u(e?.filter(o=>o?.status!==Ea.COMPLETED)?.at(-1))},[e]),d.useEffect(()=>{s&&i?.current?.scrollIntoView({block:"nearest",behavior:"smooth"})},[s]),d.useEffect(()=>{const o=f.current;let h;if(!o)return;const m=new IntersectionObserver(([p])=>{const g=p?.boundingClientRect?.top;h&&!p?.isIntersecting&&g<h&&r(!1),h=g},{threshold:0});return m.observe(o),()=>m.disconnect()},[]);const c=()=>{r(o=>!o)};return a.jsxs("div",{className:"message-stages",ref:f,children:[a.jsxs("div",{className:R("message-stages-header inline-flex max-w-full items-center cursor-pointer",!l?.name&&"default-header"),onClick:c,children:[a.jsx("p",{className:"message-stages-title truncate",children:l?.name||n||"Processing..."}),a.jsx("i",{className:R("message-stages-expand-icon",s&&"rotated"),children:t})]}),s&&e&&a.jsx("div",{className:"flex flex-col",children:e?.map(o=>a.jsx(oc,{stage:o,stageRef:l?i:null,isCurrentStage:o?.index===l?.index},o.index))})]})},cc=({message:e,regenerateMessage:t,messageActionsIcons:n,rateResponse:s,isStreaming:r=!1,isReadOnly:l=!1,isRegenerateAvailable:u=!1})=>{const f=n?.copy,i=n?.regenerate,c=n?.thumbUp,o=n?.thumbDown,h=n?.thumbPressed,[m,p]=d.useState(e.like??ie.LikeState.NoState),{isAgentAvailable:g}=S.useAgentAvailability(),x=w=>{e.responseId&&(p(w),s(e.responseId||"",w))};return a.jsxs("div",{className:R("message-actions","flex gap-x-2 pt-2"),children:[f&&a.jsx("p",{onClick:()=>navigator.clipboard.writeText(e.content),children:f}),u&&i&&!l&&!r&&a.jsx("p",{onClick:g?()=>t?.(e):void 0,"aria-disabled":!g,className:R(!g&&"opacity-50 !cursor-not-allowed pointer-events-none"),children:i}),c&&!l&&m!==ie.LikeState.Disliked&&(m===ie.LikeState.NoState?a.jsx("p",{onClick:()=>x(ie.LikeState.Liked),children:c}):a.jsx("p",{children:h})),o&&!l&&m!==ie.LikeState.Liked&&(m===ie.LikeState.NoState?a.jsx("p",{onClick:()=>x(ie.LikeState.Disliked),children:o}):a.jsx("p",{className:"rotate-180",children:h}))]})},dc=({message:e,onEditClick:t,messageActionsIcons:n,isStreaming:s=!1,isReadOnly:r=!1})=>{const l=n?.copy,u=n?.edit,{isAgentAvailable:f}=S.useAgentAvailability();return a.jsxs("div",{className:R("message-actions","flex gap-x-2 pt-2 ml-12"),children:[l&&a.jsx("p",{onClick:()=>navigator.clipboard.writeText(e.content),children:l}),u&&!s&&!r&&a.jsx("p",{onClick:f?t:void 0,className:R(!f&&"opacity-50 !cursor-not-allowed pointer-events-none"),"aria-disabled":!f,children:u})]})},uc=({content:e,textColorClass:t,onCancel:n,onEditApply:s,editMessageTitles:r})=>{const{isOpenedAdvancedView:l}=Oe(),u=d.useRef(null);d.useEffect(()=>{const i=u.current;f(),i&&(i.focus(),i.setSelectionRange(i.value.length,i.value.length))},[]);const f=()=>{const i=u.current;i&&(i.style.height="auto",i.style.height=i.scrollHeight+"px")};return a.jsxs("div",{className:R("max-w-none break-words",l?"body-2":"body-1",t),children:[a.jsx("textarea",{ref:u,className:"resize-none overflow-hidden outline-none bg-neutrals-300 w-full",defaultValue:e,onInput:f}),a.jsxs("div",{className:R("flex gap-x-2 items-center","edit-buttons-wrapper"),children:[a.jsx(S.Button,{buttonClassName:"text-button-secondary small-icon-button",title:r?.cancel,isSmallButton:!0,onClick:n}),a.jsx(S.Button,{buttonClassName:"text-button-primary small-icon-button",title:r?.send,isSmallButton:!0,onClick:()=>s(u.current?.value||"")})]})]})},hc=({message:e,previousMessage:t,titles:n,actions:s,dataQuery:r,isStreaming:l=!1,isCurrentMessageStreaming:u=!1,messageStyles:f,attachmentsStyles:i,showAdvancedView:c,formattingSettings:o,locale:h,metadataSettings:m,expandStagesIcon:p,onAdvancedViewOpen:g,regenerateMessage:x,selectMessageToSend:w,messageActionsIcons:k,rateResponse:b,editMessage:v,editMessageTitles:y,isReadOnlyConversation:D,isLastNotUserMessage:E,limitMessages:j,attachmentsConfig:A})=>{const[O,M]=d.useState(),[N,T]=d.useState(),[P,J]=d.useState([]),[Z,_]=d.useState([]),[V,$]=d.useState(),[oe,X]=d.useState(!1),G=e.role===ie.Role.User,ee=e.role===ie.Role.System,{datasets:fe,datasetStructuresMap:ce,isLoading:H}=ac(s.getDataSet,s.updateDatasets,s.updateDataQueries,s.updateCurrentDataQuery,O),[Y,Q]=d.useState(!1),[ae,me]=d.useState([]);d.useEffect(()=>{T(O?.[0])},[O]);const{dataSetAttachments:we,dimensions:ve,isLoadingGridData:Ce}=Aa(s,h,N,o,i?.chartingStyles,m,n,e.custom_content?.attachments,N?ce?.get(N.urn):void 0,H),{isOpenedAdvancedView:ye}=Oe(),De=()=>{G&&Q(!0)},xe=()=>{Q(!1)},Ae=W=>{xe(),v?.({...e,content:W})},Ne=d.useCallback(W=>{W&&(T(O?.find(K=>K?.urn===W)),$(void 0))},[O]);d.useEffect(()=>{const W=e.custom_content?.form_schema?.properties,K=E?W?.choice?.oneOf||W?.completion?.oneOf:[];me(K||[])},[e,E]),d.useEffect(()=>{const W=ts(e),K=us(W),le=W.filter(he=>yt(he));M(K),_(le)},[e]),d.useEffect(()=>{X(O!=null&&O.length>0)},[O]),d.useEffect(()=>{r&&r.urn&&$(r.urn)},[r]),d.useEffect(()=>{if(e?.role===ie.Role.System&&t){const W=ts(t),K=us(W)||[];O&&K&&ce&&J(yo(K,O,ce,h))}},[O,N,ce,ve,h,e?.role,t]);const je=d.useCallback(()=>!G&&f?.systemMessageIcon&&!(ye&&!u)?a.jsx("div",{className:R("flex-shrink-0 rounded-full flex items-center justify-center w-[44px] h-[44px]",u?"text-white absolute":"text-neutrals-400"),children:f.systemMessageIcon}):null,[G,f?.systemMessageIcon,ye,u]),B=d.useMemo(()=>a.jsx(wa,{actions:s,titles:n,attachments:oe?we:Z,onAdvancedViewOpen:g,isDataSetAttachments:oe,datasets:fe,initialSelectedDatasetUrn:V,messageStyles:f,attachmentsStyles:i,showAdvancedView:c,isSystemAttachments:ee,isDataLoading:Ce,currentDataQuery:N,dataQueries:O,attachmentInfoList:P,locale:h,dimensions:ve,selectDataset:Ne,limitMessages:j,attachmentsConfig:A}),[s,n,oe,we,Z,fe,V,f,i,c,ee,Ce,N,O,P,h,ve,Ne,g,j,A]);return a.jsx(a.Fragment,{children:!(ee&&ye)&&a.jsx("div",{className:R("max-w-full flex",G?"justify-end":"justify-start","message-wrapper"),children:a.jsxs("div",{className:R("flex items-start max-w-full",(ee||Y)&&"w-full"),children:[a.jsxs("div",{className:"mr-2 relative",children:[je(),u&&a.jsx(S.Loader,{})]}),a.jsxs("div",{className:"flex-1 min-w-0",children:[a.jsxs("div",{className:R(G?"bg-neutrals-300 px-6":"pt-0",G?"user-message":"system-message",G&&(Y?"w-[100%] ml-0":"ml-12")),children:[!G&&!ye&&e?.custom_content?.stages?a.jsx(lc,{stages:e?.custom_content?.stages,expandIcon:p,processingTitle:f?.processingTitle}):u&&a.jsx("p",{className:"body-1 text-neutrals-700 loading-message",children:n?.loading}),Y?a.jsx(uc,{content:e.content,onCancel:xe,onEditApply:Ae,editMessageTitles:y}):a.jsx(_s,{content:e.content})]}),B,!u&&(G?!Y&&a.jsx(dc,{messageActionsIcons:k,message:e,isStreaming:l,onEditClick:De,isReadOnly:D}):a.jsx(cc,{messageActionsIcons:k,message:e,isStreaming:l,regenerateMessage:x,rateResponse:b,isReadOnly:D,isRegenerateAvailable:E})),!ye&&!Ce&&a.jsx(Vs,{choiceButtons:ae,onClick:w})]})]})})})},fc=({messages:e,isStreaming:t=!1,isReadOnly:n,scrollBottomIcon:s,conversationViewState:r,...l})=>{const u=d.useRef(null),f=d.useRef(null),{isOpenedAdvancedView:i}=Oe(),[c,o]=d.useState(null),[h,m]=d.useState(!1),p=()=>{const b=f.current?.parentElement,v=u.current;if(b&&v){const y=v.offsetTop-b.offsetTop;b.scrollTo({top:y,behavior:"smooth"})}};d.useEffect(()=>{p()},[e,t]),d.useEffect(()=>{!i&&c!==null&&setTimeout(()=>{f?.current?.parentElement?.scrollTo({top:c,behavior:"smooth"})})},[i,c]);const g=()=>{const b=f.current?.parentElement?.scrollTop||null;o(b)},x=()=>{const b=f.current?.parentElement;if(b){const{scrollTop:v,scrollHeight:y,clientHeight:D}=b;v+D>=y?m(!1):!h&&!i&&m(!0)}};d.useEffect(()=>{i&&m(!1)},[i]);const w=S.useDebounce(x,300);d.useEffect(()=>{const b=f.current?.parentElement;return b?.addEventListener("scroll",w),()=>b?.removeEventListener("scroll",w)},[w]);const k=d.useCallback(b=>{const v=z.linkifyText(b);return a.jsx("div",{className:"whitespace-pre-wrap break-words",children:v.map((y,D)=>y.type==="text"?a.jsx(d.Fragment,{children:y.value},D):a.jsx("a",{href:y.value,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center align-middle",children:a.jsx(Me.IconExternalLink,{className:"text-primary cursor-pointer w-4 h-4 shrink-0"})},D))})},[]);return a.jsxs("div",{ref:f,className:"h-full w-full flex justify-center",children:[a.jsxs("div",{className:"flex flex-col gap-y-6 max-w-full chat-messages-wrapper",children:[e.map((b,v)=>{const y=b.id??v;if(b.errorMessage){const A=r?.errorContext?.kind===te.ERROR_CONTEXT_KIND.RATE_LIMIT?S.InlineAlertType.Warning:S.InlineAlertType.Error;return a.jsx(S.InlineAlert,{type:A,children:a.jsx("div",{className:"flex flex-col",children:k(b.errorMessage)})},y)}const D=v===e.length-1,E=oi(e,v),j=li(e);return a.jsx(hc,{message:b,previousMessage:E,onAdvancedViewOpen:g,isStreaming:t,isCurrentMessageStreaming:t&&D&&b.role===ie.Role.Assistant,showAdvancedView:v===j&&!n,isLastNotUserMessage:D&&b.role!==ie.Role.User,...l},y)}),a.jsx("div",{ref:u,className:"h-4"})]}),a.jsx("div",{onClick:p,className:R("fixed right-10 lg:right-6 sm:hidden bottom-[88px] rounded-[50%] border-[2px] w-[40px] h-[40px] border-primary cursor-pointer text-primary bg-white","scroll-button-wrapper",h?"block":"hidden"),children:a.jsx("div",{className:"flex justify-center items-center w-full h-full",children:s})})]})},mc=e=>{const t={};return e.choices?.[0]?.delta?.content&&(t.content=e.choices[0].delta.content),e.choices?.[0]?.delta?.custom_content&&(t.custom_content=e.choices[0].delta.custom_content),e.choices?.[0]?.delta?.role&&(t.role=e.choices[0].delta.role),e.id&&(t.responseId=e.id),t},gc="local",pc=e=>!e.permissions?.includes(ie.SharePermission.WRITE)&&!vc(e),wc=(e,t)=>Na(e)!==t,vc=e=>Na(e)===gc,Na=e=>e.id.split("/")[0],bc=(e,t)=>_t([...t?.messages||[],e]),_t=e=>[...e].map(t=>{const n={role:t.role,content:t.content};return(t.role===ie.Role.Assistant||t.role===ie.Role.System)&&t.custom_content!=null&&(t.custom_content.state!=null||t.custom_content.attachments!=null||t.custom_content.form_schema!=null)&&(n.custom_content={},t.custom_content.state!=null&&(n.custom_content.state=t.custom_content.state),t.custom_content.attachments!=null&&(n.custom_content.attachments=Cc(t.custom_content.attachments)),t.custom_content.form_schema!=null&&(n.custom_content.form_schema=t.custom_content.form_schema)),t.role===ie.Role.User&&t.custom_content&&(n.custom_content=t.custom_content),n}),xc=(e,t)=>{const n=t?.messages,s=n?.findIndex(r=>e.id===r.id);return _t(n?.slice(0,s)||[])},Sc=(e,t)=>{const n=t?.messages,s=n?.findIndex(r=>e.id===r.id);return _t([...n?.slice(0,s)||[],e])};function Cc(e){return e.map(t=>({type:t.type,title:t.title,data:t.data,url:t.url,reference_type:t.reference_type,reference_url:t.reference_url}))}const yc=(e,t,n,s)=>{if(!n||t)return null;const r={id:`msg-${Date.now()}`,role:ie.Role.User,content:e,timestamp:Date.now()};if(s){const l=s===ht.COMPLETE?it.COMPLETION:it.CHOICE;r.custom_content={form_value:{[l]:s}}}return r},kc=(e,t,n)=>`/${t}${n}/${z.getConversationNavPath(e?.folderId,e?.id)}`,Dc=(e,t,n)=>{const s=`${t}/${n}`,r=te.generateConversationId({folderId:s,name:e?.name});return{...e,folderId:s,id:r}},Mc="AbortError",Ac=({error:e,statusMessages:t})=>{if(e){if(e.type===te.DIAL_ERROR_TYPES.RATE_LIMIT_EXCEEDED){const n=e.exceeded_limit?.length?t.getExceededLimitsMessage(e.exceeded_limit):e.display_message??"";throw new z.HttpError({message:e.message,displayMessage:n,code:e.type,status:e.status??z.HTTP_ERROR_CODES.TOO_MANY_REQUESTS,details:{kind:te.ERROR_CONTEXT_KIND.RATE_LIMIT,occurredAt:new Date().toISOString(),retryAfterSeconds:Number(e.retry_after??"")}})}throw new z.HttpError({message:e.message,status:e.status??z.HTTP_ERROR_CODES.BAD_REQUEST,code:e.code})}},Ec=({error:e,statusMessages:t})=>{if(e.code===te.DIAL_ERROR_TYPES.RATE_LIMIT_EXCEEDED){const n=e;return{errorMessage:n.displayMessage??n.message,errorContext:n.details}}return e.code===te.DIAL_ERROR_CODES.CONTENT_FILTER?{errorMessage:t.contentFilterError??e.message}:{errorMessage:e.status===z.HTTP_ERROR_CODES.SERVICE_UNAVAILABLE?t.serverOverloaded:t.serverError}},hs=(e,t)=>{const n=e.customViewState??{},s=n[te.CUSTOM_VIEW_STATE_KEY]??{};return{...e,customViewState:{...n,[te.CUSTOM_VIEW_STATE_KEY]:{...s,errorContext:t}}}},Nc=({conversationKey:e,conversation:t,actions:n,messageStyles:s,attachmentsStyles:r,inputMessageStyles:l,shareConversationProps:u,showConversationHeaderAdvancedView:f=!0,formattingSettings:i,metadataSettings:c,expandStagesIcon:o,locale:h,conversationsRoute:m,token:p,titles:g,dataQuery:x,handleInvalidStreaming:w,setConversation:k,setConversations:b,openUrl:v,messageActionsIcons:y,editMessageTitles:D,scrollBottomIcon:E,isFinalMessage:j,limitMessages:A,attachmentsConfig:O})=>{const[M,N]=d.useState(null),[T,P]=d.useState(!1),[J,Z]=d.useState(!0),{isStreaming:_,setIsStreaming:V}=bs(),{isOpenedAdvancedView:$}=Oe(),{isAgentAvailable:oe}=S.useAgentAvailability(),{statusMessages:X}=Et(),{onboardingFileSchema:G,onboardingFilePath:ee,onboardingFileName:fe,isShowOnboarding:ce,setOnboardingFileSchema:H}=Se();d.useEffect(()=>{G&&n.putOnboardingFile?.(fe,ee,G)},[n,G,fe,ee]),d.useEffect(()=>{$&&G?.lastDisplayedElement===ue.OPEN_ADVANCED_VIEW&&H?.(Zs(G))},[n,$,H,G]);const Y=d.useCallback(()=>{v(`/${h}${m}`)},[h,m,v]),Q=d.useCallback(async()=>{try{const{bucket:I}=await n.getBucket(),L=Dc(t,I,h);await n.createConversation(L,h);const F=await n.getConversations(h);b(z.cleanConversationNames(F)),v(kc(L,h,m))}catch(I){console.error("Failed to save conversation:",I)}},[n,t,m,h,v,b]),ae=d.useCallback(async I=>{try{await n.updateConversation(decodeURI(e),{name:I.name,messages:I.messages,customViewState:I.customViewState})}catch(L){console.error("Failed to save conversation:",L)}},[n,e]),me=d.useCallback(I=>{k(L=>L?{...L,messages:[...L?.messages||[],I]}:null)},[k]),we=d.useCallback(()=>{const I={id:`msg-${Date.now()+1}`,role:ie.Role.Assistant,content:"",timestamp:Date.now()};return k(L=>L?{...L,messages:[...L.messages,I]}:null),I},[k]),ve=d.useCallback((I,L)=>{const F=te.mergeMessages?.(I,[L]);if(F)return k(ne=>ne?{...ne,messages:ne.messages.map(U=>U.id===I.id?{...F}:U)}:null),F},[k]),Ce=d.useCallback((I,L)=>{t?.model?.id&&(n.rateResponse(I,L===ie.LikeState.Liked,t.model.id),t.messages=t.messages.map(F=>F.responseId===I?At.merge(F,{like:L}):F),ae(t))},[n,t,ae]),ye=d.useCallback((I,L)=>{let F=X.serverError,ne,U;if(z.isHttpError(I)){U=I;const ge=Ec({error:I,statusMessages:X});F=ge.errorMessage,ne=ge.errorContext}else U=new z.HttpError({status:z.HTTP_ERROR_CODES.INTERNAL_SERVER_ERROR,message:F});return L&&(L=ve(L,{errorMessage:F})),w?.(U),{assistantMessage:L,errorContext:ne}},[w,X.serverError,X.serverOverloaded,X.contentFilterError,ve]),De=d.useCallback(async(I,L,F)=>{const ne=new AbortController;N(ne);let U=I,ge;return F?(await te.streamChatResponse?.(encodeURI(F.id),L,{model:F.model,signal:ne?.signal,onMessage:pe=>{Ac({error:pe.error,statusMessages:X});const Ee=mc(pe);(Ee.content||Ee.role||Ee.responseId)&&(U=ve(U,Ee))},onError:pe=>{if(!B(pe))throw console.error("Streaming error:",pe),pe}},p,F?.custom_fields).catch(pe=>{const{assistantMessage:Ee,errorContext:He}=ye(pe,U);U=Ee,ge=He}),{assistantMessage:U,errorContext:ge}):{assistantMessage:U,errorContext:ge}},[p,ve,ye,X]),xe=d.useCallback(async(I,L,F,ne)=>{if(!L)return;let U=hs(L,ne);U={...U,messages:[...L.messages],updatedAt:Date.now()},F&&U.messages.push(F),U.messages.push(I),await ae(U)},[ae]),Ae=d.useCallback(I=>{k(L=>L&&hs(L,I))},[k]),Ne=d.useCallback((I,L)=>{k(F=>F?{...F,messages:F.messages.filter(ne=>ne.id!==L.id)}:null)},[k]),je=d.useCallback(()=>{M&&!M.signal.aborted&&M.abort()},[M]),B=I=>I?.name===Mc,W=d.useCallback(async(I,L,F,ne,U,ge=!0)=>{B(U)?await xe(ne??F,I,ge?L:void 0):Ne(U,L)},[xe,Ne]),K=d.useCallback(async(I,L,F)=>{if(!L||!I)return;const ne=yc(I,_,L,F);let U,ge;if(ne){me(ne);try{V(!0),U=we();const pe=bc(ne,L),{assistantMessage:Ee,errorContext:He}=await De(U,pe,L);Ae(He),ge=Ee,await xe(ge,L,ne,He)}catch(pe){W(L,ne,U,ge,pe)}finally{V(!1)}}},[_,V,me,we,De,xe,W,Ae]),le=d.useCallback(async(I,L,F)=>{let ne,U;try{V(!0),ne=we();const{assistantMessage:ge,errorContext:pe}=await De(ne,I,L);U=ge,Ae(pe),await xe(U,L,void 0,pe)}catch(ge){W(L,F,ne,U,ge,!1)}finally{V(!1)}},[V,xe,W,De,we,Ae]),he=d.useCallback(async(I,L)=>{if(!L||!I)return;const F=xc(I,L),ne={...L,messages:L.messages.slice(0,F.length)};k(U=>U?{...U,...ne}:null),le(F,ne,I)},[k,le]),{isLastMessageFailed:Ie,regenerateLastMessage:Fe}=d.useMemo(()=>{const I=t?.messages?.at(-1);return{isLastMessageFailed:!!I?.errorMessage,regenerateLastMessage:I&&(()=>he(I,t))}},[t,he]),_e=d.useCallback(async(I,L)=>{if(!L||!I)return;const F=Sc(I,L),ne={...L,messages:[...L.messages.slice(0,F.length-1),I]};k(U=>U?{...U,...ne}:null),le(F,ne,I)},[k,le]);d.useEffect(()=>{ns();async function I(){try{Z(!0);const{bucket:L}=await n.getBucket(),F=await n.getConversation(decodeURI(e));k(F),P(pc(F)&&wc(F,L)),(F.messages.length===0||F?.messages?.[0]?.role===ie.Role.Assistant&&F?.messages?.length===1)&&K(F.prompt,F)}catch{P(!0)}finally{Z(!1)}}return e&&I(),()=>{ns()}},[e]);const Xe=d.useMemo(()=>({getFile:n.getFile,putOnboardingFile:n.putOnboardingFile,getDataSet:n.getDataSet,getDataSetData:n.getDataSetData,getConstraints:n.getConstraints,updateCurrentDataQuery:n.updateCurrentDataQuery,updateDataQueries:n.updateDataQueries,updateDatasets:n.updateDatasets,downloadDataSet:n.downloadDataSet}),[n]);if(J)return a.jsx(S.Loader,{});const Ve=t?.customViewState?.[te.CUSTOM_VIEW_STATE_KEY],et=()=>{if(Ve?.errorContext?.kind===te.ERROR_CONTEXT_KIND.RATE_LIMIT&&te.isRateLimitStillActive(Ve.errorContext)){const I=te.getRateLimitRestoreDate(Ve.errorContext);if(I){const L=te.formatDateTime(I);return a.jsx(S.InlineAlert,{type:S.InlineAlertType.Info,children:X.getAssistantRestoreMessage(L.date,L.time)})}}return oe?a.jsx(ys,{onSendMessage:I=>K(I,t),onStopStreaming:je,inProcess:_,sendMessageIcon:l.sendMessageIcon,retryIcon:l.retryIcon,placeholder:g?.askAnything??"Ask anything...",containerClasses:"mt-4",inputClasses:"border-neutrals-600 mr-2",isLastFailed:Ie,onRetryFailed:Fe}):a.jsx(S.InlineAlert,{type:S.InlineAlertType.Error,children:X.assistantUnavailable})};return a.jsxs("div",{className:R("h-full flex flex-col bg-white conversation-view-wrapper",$&&!f?"p-4":"pr-2"),children:[$&&!f?null:a.jsx(Fs,{conversation:t,locale:h,isOpenedAdvancedView:$,isShowShareButton:!T&&!ce,shareConversationProps:u}),a.jsx("div",{className:R("flex-1 min-h-0 flex flex-col items-end scroll-hidden-container",s?.messagesWrapperClass),children:a.jsx(fc,{messages:t?.messages||[],actions:Xe,isStreaming:_,isReadOnly:T,messageStyles:s,attachmentsStyles:r,formattingSettings:i,metadataSettings:c,expandStagesIcon:o,dataQuery:x,locale:h,titles:g,regenerateMessage:I=>he(I,t),selectMessageToSend:(I,L)=>K(I,t,L),messageActionsIcons:y,rateResponse:Ce,editMessage:I=>_e(I,t),editMessageTitles:D,scrollBottomIcon:E,isReadOnlyConversation:T||ce,limitMessages:A,attachmentsConfig:O,conversationViewState:Ve})}),ce?null:T?a.jsx("div",{className:"flex items-center justify-center mt-4",children:a.jsx(S.Button,{iconBefore:a.jsx(Me.IconCopy,{width:20,height:20}),title:g?.duplicate??"Duplicate Chat",isSmallButton:!0,onClick:Q,buttonClassName:R("text-button-secondary")})}):a.jsx("div",{className:R(l.inputContainerClass),children:et()}),ce&&j&&a.jsx(S.Button,{iconBefore:a.jsx(Me.IconPlus,{width:24,height:24}),title:g?.onboardingFooterLink,onClick:Y,isSmallButton:!0,buttonClassName:"text-button-secondary self-center mb-3"})]})},Vt=d.createContext(null);function jc({map:e,children:t}){const n=d.useMemo(()=>({map:e,getDimensionsMetadata:l=>e[l],getDimensionMetadata:(l,u)=>e[l]?.[u]}),[e]);return a.jsx(Vt.Provider,{value:n,children:t})}function Tc(){const e=d.useContext(Vt);if(!e)throw new Error("useDatasetDimensionsMetadataMap must be used within DatasetDimensionsMetadataMapProvider");return e}function Lc(){return d.useContext(Vt)}exports.AdvancedView=sc;exports.AdvancedViewProvider=Ha;exports.CUSTOM_CHOICE_ID=ht;exports.ChartingIcon=ot;exports.ChatFooter=Bs;exports.ChatMessagesProvider=Ba;exports.ChatOnboardingFooter=Hs;exports.ConversationView=Nc;exports.ConversationViewMessagesProvider=Wa;exports.ConversationWelcome=dr;exports.CustomContentProperties=it;exports.DatasetDimensionsMetadataMapProvider=jc;exports.OnboardingProvider=Ga;exports.STAGE_STATUS=Cs;exports.useAdvancedView=Oe;exports.useChatMessages=bs;exports.useConversationViewMessages=Et;exports.useDatasetDimensionsMetadataMap=Tc;exports.useDatasetDimensionsMetadataMapOptional=Lc;exports.useOnboarding=Se;
|
package/index.mjs
CHANGED
|
@@ -11988,7 +11988,7 @@ const Fu = (e, t, n, r) => {
|
|
|
11988
11988
|
"div",
|
|
11989
11989
|
{
|
|
11990
11990
|
className: _(
|
|
11991
|
-
"flex-1 min-h-0 flex flex-col items-end
|
|
11991
|
+
"flex-1 min-h-0 flex flex-col items-end scroll-hidden-container",
|
|
11992
11992
|
r?.messagesWrapperClass
|
|
11993
11993
|
),
|
|
11994
11994
|
children: /* @__PURE__ */ c(
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@epam/statgpt-conversation-view",
|
|
3
|
-
"version": "0.3.0-rc.
|
|
3
|
+
"version": "0.3.0-rc.7",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"classnames": "^2.5.1",
|
|
7
7
|
"@epam/ai-dial-shared": "^0.43.3",
|
|
8
8
|
"@tabler/icons-react": "^3.34.1",
|
|
9
|
-
"@epam/statgpt-shared-toolkit": "0.3.0-rc.
|
|
10
|
-
"@epam/statgpt-ui-components": "0.3.0-rc.
|
|
11
|
-
"@epam/statgpt-sdmx-toolkit": "0.3.0-rc.
|
|
9
|
+
"@epam/statgpt-shared-toolkit": "0.3.0-rc.7",
|
|
10
|
+
"@epam/statgpt-ui-components": "0.3.0-rc.7",
|
|
11
|
+
"@epam/statgpt-sdmx-toolkit": "0.3.0-rc.7",
|
|
12
12
|
"react-window": "^1.8.11",
|
|
13
13
|
"react-virtualized-auto-sizer": "^1.0.26",
|
|
14
14
|
"ag-grid-community": "33.3.2",
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
"@floating-ui/react": "^0.27.14",
|
|
17
17
|
"echarts": "^5.6.0",
|
|
18
18
|
"echarts-for-react": "^3.0.2",
|
|
19
|
-
"@epam/statgpt-dial-toolkit": "0.3.0-rc.
|
|
19
|
+
"@epam/statgpt-dial-toolkit": "0.3.0-rc.7",
|
|
20
20
|
"react-markdown": "^10.1.0",
|
|
21
21
|
"remark-gfm": "^4.0.1",
|
|
22
|
-
"@epam/statgpt-conversation-list": "0.3.0-rc.
|
|
22
|
+
"@epam/statgpt-conversation-list": "0.3.0-rc.7",
|
|
23
23
|
"flatpickr": "4.6.13",
|
|
24
24
|
"react-flatpickr": "^4.0.11",
|
|
25
25
|
"date-fns": "^4.1.0",
|