@epam/statgpt-conversation-view 0.3.0-rc.12 → 0.3.0-rc.13

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.
Files changed (3) hide show
  1. package/index.js +1 -1
  2. package/index.mjs +1 -1
  3. 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 o=-1;for(let u=n.length-1;u>0;u--)if(n[u].trim()==="```"){o=u;break}return o===-1?{code:n.slice(1).join(`
9
9
  `),language:r}:{code:n.slice(1,o).join(`
10
- `),language:r}}const gc=["python"];function pc(e,t,n){return e.filter(s=>s.type===te.AttachmentType.MARKDOWN).filter(s=>!t||s.title?.includes(t)).map(s=>{const r=mc(s.data??"");return{title:n??"Code samples",type:te.AttachmentType.CUSTOM_CODE_SAMPLE,language:r.language,data:r.code}}).filter(s=>gc.includes(s.language??""))}const wc="Data Grid",vc="Chart",bc=e=>({title:e||wc,type:te.AttachmentType.CUSTOM_DATA_GRID}),xc=e=>({title:e||vc,type:te.AttachmentType.CUSTOM_CHART});function Ua(e,t,n,s,r,o,u,f,i,d=!1){const[l,h]=c.useState(),[m,p]=c.useState(),[g,C]=c.useState(),[w,y]=c.useState(),[x,b]=c.useState(bc(u?.dataGrid)),[M,D]=c.useState(xc(u?.chart)),[N,k]=c.useState([]),[T,L]=c.useState([]),[E,A]=c.useState([]),[I,H]=c.useState(!1),[$,W]=c.useState({startPeriod:null,endPeriod:null}),{getConstraints:B,getDataSet:_,getDataSetData:q,putOnboardingFile:ae}=e,K=c.useCallback(Y=>{if(!Y)return;const ne=S.getDimensions(Y);p(Y.dataflows?.[0]||void 0),y(Y||void 0),L([...ne?.dimensions||[],...ne?.timeDimensions||[]])},[]),J=c.useCallback(async Y=>{const ne=S.getFiltersDtoFromDataQuery(Y);try{const re=(await Ve(B,_e(Y.urn,ne),()=>B(Y.urn,ne)))?.data?.dataConstraints||[];C(re)}catch{C([])}},[B]),Z=c.useCallback(async Y=>{const ne=i?{data:i}:await Ve(_,_e(Y.urn),()=>_(Y.urn));if(ne?.data){const oe=S.getDimensions(ne.data);K(ne.data);const re=oe?.dimensions==null?null:S.getTimeSeriesFilterKey(oe?.dimensions,Y.filters),fe=na(Y,oe);Ve(q,_e(Y.urn,{filterKey:re,timeFilter:fe}),()=>q(Y.urn,{filterKey:re,timeFilter:fe})).then(pe=>{h(pe||void 0),A(S.getStructureDimensions(pe))}).finally(()=>H(!1))}},[K,_,q,i]);c.useEffect(()=>{K(i)},[K,i]),c.useEffect(()=>{async function Y(ne){H(!0);try{await Promise.all([J(ne),Z(ne)])}catch(oe){console.error("Error loading dataset details",oe)}}n!=null&&!(d&&!i)?Y(n):n!=null&&d&&H(!0)},[n,i,d,J,Z]);const ue=c.useCallback((Y,ne,oe)=>{try{H(!0),C(ne);const re=oe?.find(fe=>fe.id===S.TIME_PERIOD)?.timeRange;re&&W(re),Ve(q,_e(n?.urn||"",Y),()=>q(n?.urn||"",Y)).then(fe=>{h(fe||void 0),A(S.getStructureDimensions(fe))}).finally(()=>H(!1))}catch(re){console.error("Error loading dataset data",re)}},[n,q]);c.useEffect(()=>{w!=null&&l!=null&&g?.length&&b(Y=>({...Y,...hc(w,l,n,t,s,o,r,u,ae,g,$)}))},[w,l,u,t,s,n,o,r,g,$,ae]),c.useEffect(()=>{w!=null&&l!=null&&D(Y=>({...Y,charting_data:rc(w,l,n,t,r)}))},[w,l,n,t,r]),c.useEffect(()=>{f?.length&&k(pc(f,n?.urn,u?.codeSamples))},[f,u,n]);const ce=c.useMemo(()=>[x,M,...N],[x,M,N]);return{dataMessage:l,structures:w,dataset:m,dimensions:T,structureDimensions:E,onFiltersChange:ue,constraints:g,isLoadingGridData:I,dataSetAttachments:ce}}const Cc=async(e,t)=>{const n=new Map,s=S.getFiltersDtoMapFromDataQuery(e);for(const r of e){const o=await t(r.urn,s?.get(r.urn));n?.set(r.urn,o?.data?.dataConstraints||[])}return n},Sc=()=>({datasetsMap:new Map,dataMessagesMap:new Map,structuresMap:new Map,dimensionsMap:new Map,structureDimensionsMap:new Map}),yc=async(e,t,n,s)=>{const r=Sc();for(const o of e)t(o.urn).then(async u=>{if(u?.data){const f=S.getDimensions(u.data);r.datasetsMap?.set(o?.urn,u?.data?.dataflows?.[0]),r.structuresMap?.set(o?.urn,u?.data),r.dimensionsMap?.set(o?.urn,[...f?.dimensions||[],...f?.timeDimensions||[]]);const i=f?.dimensions==null?null:S.getTimeSeriesFilterKey(f?.dimensions,o.filters),d=na(o,f);Mc(o,{filterKey:i,timeFilter:d},n).then(({dataMessage:l,structureDimensions:h})=>{r?.dataMessagesMap?.set(o.urn,l),r?.structureDimensionsMap?.set(o.urn,h||[])}).finally(()=>s(!1))}});return r},Mc=async(e,t,n)=>n(e.urn,t).then(s=>({dataMessage:s,structureDimensions:S.getStructureDimensions(s)}));function Dc(e,t){const[n,s]=c.useState(),[r,o]=c.useState(),[u,f]=c.useState(),[i,d]=c.useState(),[l,h]=c.useState(),[m,p]=c.useState(),[g,C]=c.useState(),[w,y]=c.useState(!1),x=c.useCallback(async N=>{try{const k=await Cc(N,e.getConstraints);f(k)}catch{f(new Map)}},[e,f]),b=c.useCallback(async N=>{const k=await yc(N,e.getDataSet,e.getDataSetData,y);o(k?.datasetsMap),d(k?.structuresMap),h(k?.dimensionsMap),s(k?.dataMessagesMap),p(k?.structureDimensionsMap)},[e]),{getDimensionsScheme:M}=Ja(),D=c.useCallback(N=>{const k=new Map;for(const T of N)k.set(T.urn,M(T.urn));C(k)},[]);return c.useEffect(()=>{async function N(k){y(!0);try{D(k),await Promise.all([x(k),b(k)])}catch(T){console.error("Error loading dataset details",T)}finally{y(!1)}}t?.length&&N(t)},[t,x,b]),{dataMessagesMap:n,structuresMap:i,datasetsMap:r,dimensionsMap:l,structureDimensionsMap:m,constraintsMap:u,datasetDimensionsSchemesMap:g,isLoadingGridData:w}}const kc=({attachmentsProps:e,actions:t,titles:n,shareConversationProps:s,metadataSettings:r,formattingSettings:o,locale:u,advanceViewStyles:f,getDatasetUpdatedTime:i,attachmentsConfig:d,datasetInfoOptions:l,...h})=>{const m=h.filtersProps.conversation?.messages?.at(-1)?.custom_content?.attachments,{dataMessage:p,dataset:g,dimensions:C,structureDimensions:w,structures:y,dataSetAttachments:x,onFiltersChange:b,isLoadingGridData:M,constraints:D}=Ua(t,u,e.currentDataQuery,o,e.styles?.chartingStyles,r,n,m),{dimensionsMap:N,structuresMap:k,structureDimensionsMap:T,constraintsMap:L}=Dc(t,e.dataQueries),[E,A]=c.useState(),[I,H]=c.useState({filterKey:null,timeFilter:null}),$=c.useCallback((_,q,ae)=>{H(_),A(!0),b(_,q,ae)},[b]),W=c.useCallback(_=>{_&&t?.updateCurrentDataQuery(e?.dataQueries?.find(q=>q?.urn===_)||e.currentDataQuery)},[t,e.currentDataQuery,e?.dataQueries]),B=wa(d?.isExternaLinkIncludeFilters,I,e.currentDataQuery||e.dataQueries?.[0],C);return a.jsxs("div",{className:"advanced-view flex flex-col flex-1 h-full min-w-0",children:[a.jsx(Fl,{titles:n,locale:u,shareConversationProps:s,isShowShare:f?.isShowShare}),e?.datasets?.length?a.jsxs(a.Fragment,{children:[e?.datasets?.length>1&&a.jsx(pa,{datasets:e?.datasets,initialSelectedDatasetUrn:e?.currentDataQuery?.urn,locale:u,isHideAdvancedViewButton:!0,selectDataset:W}),M&&!E?a.jsx(v.Loader,{}):a.jsxs(a.Fragment,{children:[a.jsx(Pl,{...l,titles:n,locale:u,dataset:g,data:p?.data,structures:y,metadataSettings:r,getDatasetUpdatedTime:i,externalLink:B}),a.jsx("div",{className:P("flex-1 min-h-0 overflow-auto","advanced-view-filters"),children:a.jsx(zo,{...h,titles:n,actions:t,attachments:x,attachmentsDataQuery:e.currentDataQuery,dataQueries:e?.dataQueries,dimensions:C,attachmentsStyles:e.styles,isDataLoading:M,locale:u,filtersProps:{...h?.filtersProps,structureDimensions:w,structures:y,structureDataMaps:{dimensionsMap:N,structuresMap:k,structureDimensionsMap:T,constraintsMap:L},onFiltersChange:b,initialConstraints:D},setIsFiltering:A,attachmentsConfig:d,filters:I,onFiltersChange:$})})]})]}):a.jsx(v.Loader,{})]})};function Ec(e,t,n,s,r){const[o,u]=c.useState([]),[f,i]=c.useState(),[d,l]=c.useState(!1);return c.useEffect(()=>{let h=!0;async function m(p){l(!0);try{const g=await Promise.all(p.map(w=>Ve(e,_e(w.urn),()=>e(w.urn))));if(!h)return;const C=g?.map(w=>w?.data?.dataflows?.[0])?.filter(w=>!!w)||[];u(C),t(C),n(p),s(p[0]),i(new Map(g?.map(w=>[S.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&&l(!1)}}if(!r?.length){l(!1);return}return m(r),()=>{h=!1}},[r,e,s,n,t]),{datasets:o,datasetStructuresMap:f,isLoading:d}}function hs(e){const t=e?.filter(n=>da(n));if(t?.every(n=>!!n?.data))return t?.map(n=>({title:n?.title,...Tc(Ac(n?.data))}))}function Ac(e){if(e)try{return JSON.parse(e)}catch(t){console.error("Invalid JSON:",t)}return null}function Tc(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 za=(e=>(e.COMPLETED="completed",e))(za||{});const Nc=({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(Ie.IconPointFilled,{className:"message-stage-indicator flex shrink-0 z-10"}),a.jsxs("div",{className:"ml-2 w-full",children:[a.jsxs("div",{className:P("flex gap-2 items-center",e?.content&&"mb-4"),children:[n&&a.jsx(v.Loader,{}),a.jsx("h3",{className:"message-stage-name",children:e?.name})]}),a.jsx("div",{className:"prose max-w-full break-words",children:a.jsx(gs,{remarkPlugins:[ps],components:{strong:s=>a.jsx("strong",{className:"text-neutrals-1000",...s}),a:({href:s,children:r,...o})=>a.jsx("a",{href:s,target:"_blank",...o,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})})]})]}),jc=({stages:e,expandIcon:t,processingTitle:n})=>{const[s,r]=c.useState(),[o,u]=c.useState(),f=c.useRef(null),i=c.useRef(null);c.useEffect(()=>{u(e?.filter(l=>l?.status!==za.COMPLETED)?.at(-1))},[e]),c.useEffect(()=>{s&&i?.current?.scrollIntoView({block:"nearest",behavior:"smooth"})},[s]),c.useEffect(()=>{const l=f.current;let h;if(!l)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(l),()=>m.disconnect()},[]);const d=()=>{r(l=>!l)};return a.jsxs("div",{className:"message-stages",ref:f,children:[a.jsxs("div",{className:P("message-stages-header inline-flex max-w-full items-center cursor-pointer",!o?.name&&"default-header"),onClick:d,children:[a.jsx("p",{className:"message-stages-title truncate",children:o?.name||n||"Processing..."}),a.jsx("i",{className:P("message-stages-expand-icon",s&&"rotated"),children:t})]}),s&&e&&a.jsx("div",{className:"flex flex-col",children:e?.map(l=>a.jsx(Nc,{stage:l,stageRef:o?i:null,isCurrentStage:l?.index===o?.index},l.index))})]})},Lc=({message:e,regenerateMessage:t,messageActionsIcons:n,rateResponse:s,isStreaming:r=!1,isReadOnly:o=!1,isRegenerateAvailable:u=!1})=>{const f=n?.copy,i=n?.regenerate,d=n?.thumbUp,l=n?.thumbDown,h=n?.thumbPressed,[m,p]=c.useState(e.like??de.LikeState.NoState),{isAgentAvailable:g}=v.useAgentAvailability(),C=w=>{e.responseId&&(p(w),s(e.responseId||"",w))};return a.jsxs("div",{className:P("message-actions","flex gap-x-2 pt-2"),children:[f&&a.jsx("p",{onClick:()=>navigator.clipboard.writeText(e.content),children:f}),u&&i&&!o&&!r&&a.jsx("p",{onClick:g?()=>t?.(e):void 0,"aria-disabled":!g,className:P(!g&&"opacity-50 !cursor-not-allowed pointer-events-none"),children:i}),d&&!o&&m!==de.LikeState.Disliked&&(m===de.LikeState.NoState?a.jsx("p",{onClick:()=>C(de.LikeState.Liked),children:d}):a.jsx("p",{children:h})),l&&!o&&m!==de.LikeState.Liked&&(m===de.LikeState.NoState?a.jsx("p",{onClick:()=>C(de.LikeState.Disliked),children:l}):a.jsx("p",{className:"rotate-180",children:h}))]})},Ic=({message:e,onEditClick:t,messageActionsIcons:n,isStreaming:s=!1,isReadOnly:r=!1})=>{const o=n?.copy,u=n?.edit,{isAgentAvailable:f}=v.useAgentAvailability();return a.jsxs("div",{className:P("message-actions","flex gap-x-2 pt-2 ml-12"),children:[o&&a.jsx("p",{onClick:()=>navigator.clipboard.writeText(e.content),children:o}),u&&!s&&!r&&a.jsx("p",{onClick:f?t:void 0,className:P(!f&&"opacity-50 !cursor-not-allowed pointer-events-none"),"aria-disabled":!f,children:u})]})},Oc=({content:e,textColorClass:t,onCancel:n,onEditApply:s,editMessageTitles:r})=>{const{isOpenedAdvancedView:o}=Be(),u=c.useRef(null);c.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:P("max-w-none break-words",o?"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:P("flex gap-x-2 items-center","edit-buttons-wrapper"),children:[a.jsx(v.Button,{buttonClassName:"text-button-secondary small-icon-button",title:r?.cancel,isSmallButton:!0,onClick:n}),a.jsx(v.Button,{buttonClassName:"text-button-primary small-icon-button",title:r?.send,isSmallButton:!0,onClick:()=>s(u.current?.value||"")})]})]})},Rc=({message:e,previousMessage:t,titles:n,actions:s,dataQuery:r,isStreaming:o=!1,isCurrentMessageStreaming:u=!1,messageStyles:f,attachmentsStyles:i,showAdvancedView:d,formattingSettings:l,locale:h,metadataSettings:m,expandStagesIcon:p,onAdvancedViewOpen:g,regenerateMessage:C,selectMessageToSend:w,messageActionsIcons:y,rateResponse:x,editMessage:b,editMessageTitles:M,isReadOnlyConversation:D,isLastNotUserMessage:N,limitMessages:k,attachmentsConfig:T})=>{const[L,E]=c.useState(),[A,I]=c.useState(),[H,$]=c.useState([]),[W,B]=c.useState([]),[_,q]=c.useState(),[ae,K]=c.useState(!1),J=e.role===de.Role.User,Z=e.role===de.Role.System,{datasets:ue,datasetStructuresMap:ce,isLoading:Y}=Ec(s.getDataSet,s.updateDatasets,s.updateDataQueries,s.updateCurrentDataQuery,L),[ne,oe]=c.useState(!1),[re,fe]=c.useState([]);c.useEffect(()=>{I(L?.[0])},[L]);const{dataSetAttachments:pe,dimensions:we,isLoadingGridData:xe}=Ua(s,h,A,l,i?.chartingStyles,m,n,e.custom_content?.attachments,A?ce?.get(A.urn):void 0,Y),{isOpenedAdvancedView:ve}=Be(),De=()=>{J&&oe(!0)},Ce=()=>{oe(!1)},Te=j=>{Ce(),b?.({...e,content:j})},je=c.useCallback(j=>{j&&(I(L?.find(F=>F?.urn===j)),q(void 0))},[L]);c.useEffect(()=>{const j=e.custom_content?.form_schema?.properties,F=N?j?.choice?.oneOf||j?.completion?.oneOf:[];fe(F||[])},[e,N]),c.useEffect(()=>{const j=ss(e),F=hs(j),U=j.filter(ie=>Ot(ie));E(F),B(U)},[e]),c.useEffect(()=>{K(L!=null&&L.length>0)},[L]),c.useEffect(()=>{r&&r.urn&&q(r.urn)},[r]),c.useEffect(()=>{if(e?.role===de.Role.System&&t){const j=ss(t),F=hs(j)||[];L&&F&&ce&&$(_i(F,L,ce,h))}},[L,A,ce,we,h,e?.role,t]);const Le=c.useCallback(()=>!J&&f?.systemMessageIcon&&!(ve&&!u)?a.jsx("div",{className:P("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,[J,f?.systemMessageIcon,ve,u]),G=c.useMemo(()=>a.jsx(Oa,{actions:s,titles:n,attachments:ae?pe:W,onAdvancedViewOpen:g,isDataSetAttachments:ae,datasets:ue,initialSelectedDatasetUrn:_,messageStyles:f,attachmentsStyles:i,showAdvancedView:d,isSystemAttachments:Z,isDataLoading:xe,currentDataQuery:A,dataQueries:L,attachmentInfoList:H,locale:h,dimensions:we,selectDataset:je,limitMessages:k,attachmentsConfig:T}),[s,n,ae,pe,W,ue,_,f,i,d,Z,xe,A,L,H,h,we,je,g,k,T]);return a.jsx(a.Fragment,{children:!(Z&&ve)&&a.jsx("div",{className:P("max-w-full flex",J?"justify-end":"justify-start","message-wrapper"),children:a.jsxs("div",{className:P("flex items-start max-w-full",(Z||ne)&&"w-full"),children:[a.jsxs("div",{className:"mr-2 relative",children:[Le(),u&&a.jsx(v.Loader,{})]}),a.jsxs("div",{className:"flex-1 min-w-0",children:[a.jsxs("div",{className:P(J?"bg-neutrals-300 px-6":"pt-0",J?"user-message":"system-message",J&&(ne?"w-[100%] ml-0":"ml-12")),children:[!J&&!ve&&e?.custom_content?.stages?a.jsx(jc,{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}),ne?a.jsx(Oc,{content:e.content,onCancel:Ce,onEditApply:Te,editMessageTitles:M}):a.jsx(Bs,{content:e.content})]}),G,!u&&(J?!ne&&a.jsx(Ic,{messageActionsIcons:y,message:e,isStreaming:o,onEditClick:De,isReadOnly:D}):a.jsx(Lc,{messageActionsIcons:y,message:e,isStreaming:o,regenerateMessage:C,rateResponse:x,isReadOnly:D,isRegenerateAvailable:N})),!ve&&!xe&&a.jsx(Hs,{choiceButtons:re,onClick:w})]})]})})})},Pc=({messages:e,isStreaming:t=!1,isReadOnly:n,scrollBottomIcon:s,conversationViewState:r,...o})=>{const u=c.useRef(null),f=c.useRef(null),{isOpenedAdvancedView:i}=Be(),[d,l]=c.useState(null),[h,m]=c.useState(!1),p=()=>{const x=f.current?.parentElement,b=u.current;if(x&&b){const M=b.offsetTop-x.offsetTop;x.scrollTo({top:M,behavior:"smooth"})}};c.useEffect(()=>{p()},[e,t]),c.useEffect(()=>{!i&&d!==null&&setTimeout(()=>{f?.current?.parentElement?.scrollTo({top:d,behavior:"smooth"})})},[i,d]);const g=()=>{const x=f.current?.parentElement?.scrollTop||null;l(x)},C=()=>{const x=f.current?.parentElement;if(x){const{scrollTop:b,scrollHeight:M,clientHeight:D}=x;b+D>=M?m(!1):!h&&!i&&m(!0)}};c.useEffect(()=>{i&&m(!1)},[i]);const w=v.useDebounce(C,300);c.useEffect(()=>{const x=f.current?.parentElement;return x?.addEventListener("scroll",w),()=>x?.removeEventListener("scroll",w)},[w]);const y=c.useCallback(x=>{const b=z.linkifyText(x);return a.jsx("div",{className:"whitespace-pre-wrap break-words",children:b.map((M,D)=>M.type==="text"?a.jsx(c.Fragment,{children:M.value},D):a.jsx("a",{href:M.value,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center align-middle",children:a.jsx(Ie.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((x,b)=>{const M=x.id??b;if(x.errorMessage){const T=r?.errorContext?.kind===te.ERROR_CONTEXT_KIND.RATE_LIMIT?v.InlineAlertType.Warning:v.InlineAlertType.Error;return a.jsx(v.InlineAlert,{type:T,children:a.jsx("div",{className:"flex flex-col",children:y(x.errorMessage)})},M)}const D=b===e.length-1,N=xi(e,b),k=Ci(e);return a.jsx(Rc,{message:x,previousMessage:N,onAdvancedViewOpen:g,isStreaming:t,isCurrentMessageStreaming:t&&D&&x.role===de.Role.Assistant,showAdvancedView:b===k&&!n,isLastNotUserMessage:D&&x.role!==de.Role.User,...o},M)}),a.jsx("div",{ref:u,className:"h-4"})]}),a.jsx("div",{onClick:p,className:P("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})})]})},Fc=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},_c="local",Vc=e=>!e.permissions?.includes(de.SharePermission.WRITE)&&!Hc(e),Bc=(e,t)=>$a(e)!==t,Hc=e=>$a(e)===_c,$a=e=>e.id.split("/")[0],Wc=(e,t)=>Wt([...t?.messages||[],e]),Wt=e=>[...e].map(t=>{const n={role:t.role,content:t.content};return(t.role===de.Role.Assistant||t.role===de.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=zc(t.custom_content.attachments)),t.custom_content.form_schema!=null&&(n.custom_content.form_schema=t.custom_content.form_schema)),t.role===de.Role.User&&t.custom_content&&(n.custom_content=t.custom_content),n}),Gc=(e,t)=>{const n=t?.messages,s=n?.findIndex(r=>e.id===r.id);return Wt(n?.slice(0,s)||[])},Uc=(e,t)=>{const n=t?.messages,s=n?.findIndex(r=>e.id===r.id);return Wt([...n?.slice(0,s)||[],e])};function zc(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 $c=(e,t,n,s)=>{if(!n||t)return null;const r={id:`msg-${Date.now()}`,role:de.Role.User,content:e,timestamp:Date.now()};if(s){const o=s===pt.COMPLETE?ot.COMPLETION:ot.CHOICE;r.custom_content={form_value:{[o]:s}}}return r},Jc=(e,t,n)=>`/${t}${n}/${z.getConversationNavPath(e?.folderId,e?.id)}`,Yc=(e,t,n)=>{const s=`${t}/${n}`,r=te.generateConversationId({folderId:s,name:e?.name});return{...e,folderId:s,id:r}},qc=(e,t)=>{const n=e.lastIndexOf(".");return n<=0?`${e}-${t}`:`${e.slice(0,n)}-${t}${e.slice(n)}`},Kc=(e,t,n)=>{const s=e.split("/");if(s[0]!=="files"||s.length<3)return e;const r=s.at(-1)??"file",o=qc(r,n);return["files",t,...s.slice(2,-1),o].join("/")},Zc=async({conversation:e,bucket:t,getFileBlob:n,putFile:s})=>{const r=z.getConversationAttachmentUrls(e),o=Date.now();if(!r.length)return e;const u=await Promise.all(r.map(async f=>{const i=Kc(f,t,`${o}`);if(i===f)return[f,i];const d=await n(f);return await s(i,d),[f,i]}));return z.replaceConversationAttachmentUrls(e,Object.fromEntries(u))},Qc="AbortError",Xc=({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})}},ed=({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}},ms=(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}}}},td=({conversationKey:e,conversation:t,actions:n,messageStyles:s,attachmentsStyles:r,inputMessageStyles:o,shareConversationProps:u,showConversationHeaderAdvancedView:f=!0,formattingSettings:i,metadataSettings:d,expandStagesIcon:l,locale:h,conversationsRoute:m,token:p,titles:g,dataQuery:C,handleInvalidStreaming:w,setConversation:y,setConversations:x,openUrl:b,messageActionsIcons:M,editMessageTitles:D,scrollBottomIcon:N,isFinalMessage:k,limitMessages:T,attachmentsConfig:L})=>{const[E,A]=c.useState(null),[I,H]=c.useState(!1),[$,W]=c.useState(!0),{isStreaming:B,setIsStreaming:_}=Cs(),{isOpenedAdvancedView:q}=Be(),{isAgentAvailable:ae}=v.useAgentAvailability(),{statusMessages:K}=Tt(),{onboardingFileSchema:J,onboardingFilePath:Z,onboardingFileName:ue,isShowOnboarding:ce,setOnboardingFileSchema:Y}=Ae();c.useEffect(()=>{J&&n.putOnboardingFile?.(ue,Z,J)},[n,J,ue,Z]),c.useEffect(()=>{q&&J?.lastDisplayedElement===me.OPEN_ADVANCED_VIEW&&Y?.(la(J))},[n,q,Y,J]);const ne=c.useCallback(()=>{b(`/${h}${m}`)},[h,m,b]),oe=c.useCallback(async()=>{try{const{bucket:O}=await n.getBucket(),R=n.getFileBlob&&n.putFile?await Zc({conversation:t,bucket:O,getFileBlob:n.getFileBlob,putFile:n.putFile}):t,V=Yc(R,O,h);await n.createConversation(V,h);const ee=await n.getConversations(h);x(z.cleanConversationNames(ee)),b(Jc(V,h,m))}catch(O){console.error("Failed to save conversation:",O)}},[n,t,m,h,b,x]),re=c.useCallback(async O=>{try{await n.updateConversation(decodeURI(e),{name:O.name,messages:O.messages,customViewState:O.customViewState})}catch(R){console.error("Failed to save conversation:",R)}},[n,e]),fe=c.useCallback(O=>{y(R=>R?{...R,messages:[...R?.messages||[],O]}:null)},[y]),pe=c.useCallback(()=>{const O={id:`msg-${Date.now()+1}`,role:de.Role.Assistant,content:"",timestamp:Date.now()};return y(R=>R?{...R,messages:[...R.messages,O]}:null),O},[y]),we=c.useCallback((O,R)=>{const V=te.mergeMessages?.(O,[R]);if(V)return y(ee=>ee?{...ee,messages:ee.messages.map(Q=>Q.id===O.id?{...V}:Q)}:null),V},[y]),xe=c.useCallback((O,R)=>{t?.model?.id&&(n.rateResponse(O,R===de.LikeState.Liked,t.model.id),t.messages=t.messages.map(V=>V.responseId===O?At.merge(V,{like:R}):V),re(t))},[n,t,re]),ve=c.useCallback((O,R)=>{let V=K.serverError,ee,Q;if(z.isHttpError(O)){Q=O;const ge=ed({error:O,statusMessages:K});V=ge.errorMessage,ee=ge.errorContext}else Q=new z.HttpError({status:z.HTTP_ERROR_CODES.INTERNAL_SERVER_ERROR,message:V});return R&&(R=we(R,{errorMessage:V})),w?.(Q),{assistantMessage:R,errorContext:ee}},[w,K.serverError,K.serverOverloaded,K.contentFilterError,we]),De=c.useCallback(async(O,R,V)=>{const ee=new AbortController;A(ee);let Q=O,ge;return V?(await te.streamChatResponse?.(encodeURI(V.id),R,{model:V.model,signal:ee?.signal,onMessage:be=>{Xc({error:be.error,statusMessages:K});const Oe=Fc(be);(Oe.content||Oe.role||Oe.responseId)&&(Q=we(Q,Oe))},onError:be=>{if(!G(be))throw console.error("Streaming error:",be),be}},p,V?.custom_fields).catch(be=>{const{assistantMessage:Oe,errorContext:Ge}=ve(be,Q);Q=Oe,ge=Ge}),{assistantMessage:Q,errorContext:ge}):{assistantMessage:Q,errorContext:ge}},[p,we,ve,K]),Ce=c.useCallback(async(O,R,V,ee)=>{if(!R)return;let Q=ms(R,ee);Q={...Q,messages:[...R.messages],updatedAt:Date.now()},V&&Q.messages.push(V),Q.messages.push(O),await re(Q)},[re]),Te=c.useCallback(O=>{y(R=>R&&ms(R,O))},[y]),je=c.useCallback((O,R)=>{y(V=>V?{...V,messages:V.messages.filter(ee=>ee.id!==R.id)}:null)},[y]),Le=c.useCallback(()=>{E&&!E.signal.aborted&&E.abort()},[E]),G=O=>O?.name===Qc,j=c.useCallback(async(O,R,V,ee,Q,ge=!0)=>{G(Q)?await Ce(ee??V,O,ge?R:void 0):je(Q,R)},[Ce,je]),F=c.useCallback(async(O,R,V)=>{if(!R||!O)return;const ee=$c(O,B,R,V);let Q,ge;if(ee){fe(ee);try{_(!0),Q=pe();const be=Wc(ee,R),{assistantMessage:Oe,errorContext:Ge}=await De(Q,be,R);Te(Ge),ge=Oe,await Ce(ge,R,ee,Ge)}catch(be){j(R,ee,Q,ge,be)}finally{_(!1)}}},[B,_,fe,pe,De,Ce,j,Te]),U=c.useCallback(async(O,R,V)=>{let ee,Q;try{_(!0),ee=pe();const{assistantMessage:ge,errorContext:be}=await De(ee,O,R);Q=ge,Te(be),await Ce(Q,R,void 0,be)}catch(ge){j(R,V,ee,Q,ge,!1)}finally{_(!1)}},[_,Ce,j,De,pe,Te]),ie=c.useCallback(async(O,R)=>{if(!R||!O)return;const V=Gc(O,R),ee={...R,messages:R.messages.slice(0,V.length)};y(Q=>Q?{...Q,...ee}:null),U(V,ee,O)},[y,U]),{isLastMessageFailed:Se,regenerateLastMessage:ye}=c.useMemo(()=>{const O=t?.messages?.at(-1);return{isLastMessageFailed:!!O?.errorMessage,regenerateLastMessage:O&&(()=>ie(O,t))}},[t,ie]),ke=c.useCallback(async(O,R)=>{if(!R||!O)return;const V=Uc(O,R),ee={...R,messages:[...R.messages.slice(0,V.length-1),O]};y(Q=>Q?{...Q,...ee}:null),U(V,ee,O)},[y,U]);c.useEffect(()=>{as();async function O(){try{W(!0);const{bucket:R}=await n.getBucket(),V=await n.getConversation(decodeURI(e));y(V),H(Vc(V)&&Bc(V,R)),(V.messages.length===0||V?.messages?.[0]?.role===de.Role.Assistant&&V?.messages?.length===1)&&F(V.prompt,V)}catch{H(!0)}finally{W(!1)}}return e&&O(),()=>{as()}},[e]);const Fe=c.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($)return a.jsx(v.Loader,{});const Ee=t?.customViewState?.[te.CUSTOM_VIEW_STATE_KEY],tt=()=>{if(Ee?.errorContext?.kind===te.ERROR_CONTEXT_KIND.RATE_LIMIT&&te.isRateLimitStillActive(Ee.errorContext)){const O=te.getRateLimitRestoreDate(Ee.errorContext);if(O){const R=te.formatDateTime(O);return a.jsx(v.InlineAlert,{type:v.InlineAlertType.Info,children:K.getAssistantRestoreMessage(R.date,R.time)})}}return ae?a.jsx(Ds,{onSendMessage:O=>F(O,t),onStopStreaming:Le,inProcess:B,sendMessageIcon:o.sendMessageIcon,retryIcon:o.retryIcon,placeholder:g?.askAnything??"Ask anything...",containerClasses:"mt-4",inputClasses:"border-neutrals-600 mr-2",isLastFailed:Se,onRetryFailed:ye}):a.jsx(v.InlineAlert,{type:v.InlineAlertType.Error,children:K.assistantUnavailable})};return a.jsx(La,{titles:g,children:a.jsxs("div",{className:P("h-full flex flex-col bg-white conversation-view-wrapper",q&&!f?"p-4":"pr-2"),children:[q&&!f?null:a.jsx(Vs,{conversation:t,locale:h,isOpenedAdvancedView:q,isShowShareButton:!I&&!ce,shareConversationProps:u}),a.jsx("div",{className:P("flex-1 min-h-0 flex flex-col items-end hover:overflow-y-auto",s?.messagesWrapperClass),children:a.jsx(Pc,{messages:t?.messages||[],actions:Fe,isStreaming:B,isReadOnly:I,messageStyles:s,attachmentsStyles:r,formattingSettings:i,metadataSettings:d,expandStagesIcon:l,dataQuery:C,locale:h,titles:g,regenerateMessage:O=>ie(O,t),selectMessageToSend:(O,R)=>F(O,t,R),messageActionsIcons:M,rateResponse:xe,editMessage:O=>ke(O,t),editMessageTitles:D,scrollBottomIcon:N,isReadOnlyConversation:I||ce,limitMessages:T,attachmentsConfig:L,conversationViewState:Ee})}),ce?null:I?a.jsx("div",{className:"flex items-center justify-center mt-4",children:a.jsx(v.Button,{iconBefore:a.jsx(Ie.IconCopy,{width:20,height:20}),title:g?.duplicate??"Duplicate Chat",isSmallButton:!0,onClick:oe,buttonClassName:P("text-button-secondary")})}):a.jsx("div",{className:P(o.inputContainerClass),children:tt()}),ce&&k&&a.jsx(v.Button,{iconBefore:a.jsx(Ie.IconPlus,{width:24,height:24}),title:g?.onboardingFooterLink,onClick:ne,isSmallButton:!0,buttonClassName:"text-button-secondary self-center mb-3"})]})})},Gt=c.createContext(null);function nd({map:e,children:t}){const n=c.useMemo(()=>{const s={},r={},o={},u=Object.keys(e);for(const f of u){s[f]={},r[f]={};const i=Object.keys(e[f]);for(const d of i){const l=e[f][d];l.subtype&&(s[f][l.subtype]=d),r[f][l.dimensionType]||(r[f][l.dimensionType]=[]),r[f][l.dimensionType].push(d)}o[f]={timePeriod:r[f]?.TIME_PERIOD?.[0]??void 0,frequency:s[f]?.FREQUENCY??void 0,region:s[f]?.REGION??void 0,indicators:r[f]?.INDICATOR??[],other:(r[f]?.NON_INDICATOR??[]).filter(d=>{const l=e[f][d];return l.subtype!=="FREQUENCY"&&l.subtype!=="REGION"})}}return{map:e,getDimensionsMetadata:f=>e[f],getDimensionMetadata:(f,i)=>e[f]?.[i],getRegionDimension:f=>s[f]?.REGION,getFrequencyDimension:f=>s[f]?.FREQUENCY,getIndicatorDimensions:f=>r[f]?.INDICATOR??[],getDimensionsScheme:f=>o[f]}},[e]);return a.jsx(Gt.Provider,{value:n,children:t})}function Ja(){const e=c.useContext(Gt);if(!e)throw new Error("useDatasetDimensionsMetadataMap must be used within DatasetDimensionsMetadataMapProvider");return e}function sd(){return c.useContext(Gt)}exports.AdvancedView=kc;exports.AdvancedViewProvider=ar;exports.CUSTOM_CHOICE_ID=pt;exports.ChartingIcon=lt;exports.ChatFooter=Gs;exports.ChatMessagesProvider=rr;exports.ChatOnboardingFooter=Ws;exports.ConversationView=td;exports.ConversationViewMessagesProvider=ir;exports.ConversationViewTitlesProvider=La;exports.ConversationWelcome=Ar;exports.CustomContentProperties=ot;exports.DatasetDimensionsMetadataMapProvider=nd;exports.OnboardingProvider=or;exports.STAGE_STATUS=Ms;exports.useAdvancedView=Be;exports.useChatMessages=Cs;exports.useConversationViewMessages=Tt;exports.useConversationViewTitles=Ia;exports.useDatasetDimensionsMetadataMap=Ja;exports.useDatasetDimensionsMetadataMapOptional=sd;exports.useOnboarding=Ae;
10
+ `),language:r}}const gc=["python"];function pc(e,t,n){return e.filter(s=>s.type===te.AttachmentType.MARKDOWN).filter(s=>!t||s.title?.includes(t)).map(s=>{const r=mc(s.data??"");return{title:n??"Code samples",type:te.AttachmentType.CUSTOM_CODE_SAMPLE,language:r.language,data:r.code}}).filter(s=>gc.includes(s.language??""))}const wc="Data Grid",vc="Chart",bc=e=>({title:e||wc,type:te.AttachmentType.CUSTOM_DATA_GRID}),xc=e=>({title:e||vc,type:te.AttachmentType.CUSTOM_CHART});function Ua(e,t,n,s,r,o,u,f,i,d=!1){const[l,h]=c.useState(),[m,p]=c.useState(),[g,C]=c.useState(),[w,y]=c.useState(),[x,b]=c.useState(bc(u?.dataGrid)),[M,D]=c.useState(xc(u?.chart)),[N,k]=c.useState([]),[T,L]=c.useState([]),[E,A]=c.useState([]),[I,H]=c.useState(!1),[$,W]=c.useState({startPeriod:null,endPeriod:null}),{getConstraints:B,getDataSet:_,getDataSetData:q,putOnboardingFile:ae}=e,K=c.useCallback(Y=>{if(!Y)return;const ne=S.getDimensions(Y);p(Y.dataflows?.[0]||void 0),y(Y||void 0),L([...ne?.dimensions||[],...ne?.timeDimensions||[]])},[]),J=c.useCallback(async Y=>{const ne=S.getFiltersDtoFromDataQuery(Y);try{const re=(await Ve(B,_e(Y.urn,ne),()=>B(Y.urn,ne)))?.data?.dataConstraints||[];C(re)}catch{C([])}},[B]),Z=c.useCallback(async Y=>{const ne=i?{data:i}:await Ve(_,_e(Y.urn),()=>_(Y.urn));if(ne?.data){const oe=S.getDimensions(ne.data);K(ne.data);const re=oe?.dimensions==null?null:S.getTimeSeriesFilterKey(oe?.dimensions,Y.filters),fe=na(Y,oe);Ve(q,_e(Y.urn,{filterKey:re,timeFilter:fe}),()=>q(Y.urn,{filterKey:re,timeFilter:fe})).then(pe=>{h(pe||void 0),A(S.getStructureDimensions(pe))}).finally(()=>H(!1))}},[K,_,q,i]);c.useEffect(()=>{K(i)},[K,i]),c.useEffect(()=>{async function Y(ne){H(!0);try{await Promise.all([J(ne),Z(ne)])}catch(oe){console.error("Error loading dataset details",oe)}}n!=null&&!(d&&!i)?Y(n):n!=null&&d&&H(!0)},[n,i,d,J,Z]);const ue=c.useCallback((Y,ne,oe)=>{try{H(!0),C(ne);const re=oe?.find(fe=>fe.id===S.TIME_PERIOD)?.timeRange;re&&W(re),Ve(q,_e(n?.urn||"",Y),()=>q(n?.urn||"",Y)).then(fe=>{h(fe||void 0),A(S.getStructureDimensions(fe))}).finally(()=>H(!1))}catch(re){console.error("Error loading dataset data",re)}},[n,q]);c.useEffect(()=>{w!=null&&l!=null&&g?.length&&b(Y=>({...Y,...hc(w,l,n,t,s,o,r,u,ae,g,$)}))},[w,l,u,t,s,n,o,r,g,$,ae]),c.useEffect(()=>{w!=null&&l!=null&&D(Y=>({...Y,charting_data:rc(w,l,n,t,r)}))},[w,l,n,t,r]),c.useEffect(()=>{f?.length&&k(pc(f,n?.urn,u?.codeSamples))},[f,u,n]);const ce=c.useMemo(()=>[x,M,...N],[x,M,N]);return{dataMessage:l,structures:w,dataset:m,dimensions:T,structureDimensions:E,onFiltersChange:ue,constraints:g,isLoadingGridData:I,dataSetAttachments:ce}}const Cc=async(e,t)=>{const n=new Map,s=S.getFiltersDtoMapFromDataQuery(e);for(const r of e){const o=await t(r.urn,s?.get(r.urn));n?.set(r.urn,o?.data?.dataConstraints||[])}return n},Sc=()=>({datasetsMap:new Map,dataMessagesMap:new Map,structuresMap:new Map,dimensionsMap:new Map,structureDimensionsMap:new Map}),yc=async(e,t,n,s)=>{const r=Sc();for(const o of e)t(o.urn).then(async u=>{if(u?.data){const f=S.getDimensions(u.data);r.datasetsMap?.set(o?.urn,u?.data?.dataflows?.[0]),r.structuresMap?.set(o?.urn,u?.data),r.dimensionsMap?.set(o?.urn,[...f?.dimensions||[],...f?.timeDimensions||[]]);const i=f?.dimensions==null?null:S.getTimeSeriesFilterKey(f?.dimensions,o.filters),d=na(o,f);Mc(o,{filterKey:i,timeFilter:d},n).then(({dataMessage:l,structureDimensions:h})=>{r?.dataMessagesMap?.set(o.urn,l),r?.structureDimensionsMap?.set(o.urn,h||[])}).finally(()=>s(!1))}});return r},Mc=async(e,t,n)=>n(e.urn,t).then(s=>({dataMessage:s,structureDimensions:S.getStructureDimensions(s)}));function Dc(e,t){const[n,s]=c.useState(),[r,o]=c.useState(),[u,f]=c.useState(),[i,d]=c.useState(),[l,h]=c.useState(),[m,p]=c.useState(),[g,C]=c.useState(),[w,y]=c.useState(!1),x=c.useCallback(async N=>{try{const k=await Cc(N,e.getConstraints);f(k)}catch{f(new Map)}},[e,f]),b=c.useCallback(async N=>{const k=await yc(N,e.getDataSet,e.getDataSetData,y);o(k?.datasetsMap),d(k?.structuresMap),h(k?.dimensionsMap),s(k?.dataMessagesMap),p(k?.structureDimensionsMap)},[e]),{getDimensionsScheme:M}=Ja(),D=c.useCallback(N=>{const k=new Map;for(const T of N)k.set(T.urn,M(T.urn));C(k)},[]);return c.useEffect(()=>{async function N(k){y(!0);try{D(k),await Promise.all([x(k),b(k)])}catch(T){console.error("Error loading dataset details",T)}finally{y(!1)}}t?.length&&N(t)},[t,x,b]),{dataMessagesMap:n,structuresMap:i,datasetsMap:r,dimensionsMap:l,structureDimensionsMap:m,constraintsMap:u,datasetDimensionsSchemesMap:g,isLoadingGridData:w}}const kc=({attachmentsProps:e,actions:t,titles:n,shareConversationProps:s,metadataSettings:r,formattingSettings:o,locale:u,advanceViewStyles:f,getDatasetUpdatedTime:i,attachmentsConfig:d,datasetInfoOptions:l,...h})=>{const m=h.filtersProps.conversation?.messages?.at(-1)?.custom_content?.attachments,{dataMessage:p,dataset:g,dimensions:C,structureDimensions:w,structures:y,dataSetAttachments:x,onFiltersChange:b,isLoadingGridData:M,constraints:D}=Ua(t,u,e.currentDataQuery,o,e.styles?.chartingStyles,r,n,m),{dimensionsMap:N,structuresMap:k,structureDimensionsMap:T,constraintsMap:L}=Dc(t,e.dataQueries),[E,A]=c.useState(),[I,H]=c.useState({filterKey:null,timeFilter:null}),$=c.useCallback((_,q,ae)=>{H(_),A(!0),b(_,q,ae)},[b]),W=c.useCallback(_=>{_&&t?.updateCurrentDataQuery(e?.dataQueries?.find(q=>q?.urn===_)||e.currentDataQuery)},[t,e.currentDataQuery,e?.dataQueries]),B=wa(d?.isExternaLinkIncludeFilters,I,e.currentDataQuery||e.dataQueries?.[0],C);return a.jsxs("div",{className:"advanced-view flex flex-col flex-1 h-full min-w-0",children:[a.jsx(Fl,{titles:n,locale:u,shareConversationProps:s,isShowShare:f?.isShowShare}),e?.datasets?.length?a.jsxs(a.Fragment,{children:[e?.datasets?.length>1&&a.jsx(pa,{datasets:e?.datasets,initialSelectedDatasetUrn:e?.currentDataQuery?.urn,locale:u,isHideAdvancedViewButton:!0,selectDataset:W}),M&&!E?a.jsx(v.Loader,{}):a.jsxs(a.Fragment,{children:[a.jsx(Pl,{...l,titles:n,locale:u,dataset:g,data:p?.data,structures:y,metadataSettings:r,getDatasetUpdatedTime:i,externalLink:B}),a.jsx("div",{className:P("flex-1 min-h-0 overflow-auto","advanced-view-filters"),children:a.jsx(zo,{...h,titles:n,actions:t,attachments:x,attachmentsDataQuery:e.currentDataQuery,dataQueries:e?.dataQueries,dimensions:C,attachmentsStyles:e.styles,isDataLoading:M,locale:u,filtersProps:{...h?.filtersProps,structureDimensions:w,structures:y,structureDataMaps:{dimensionsMap:N,structuresMap:k,structureDimensionsMap:T,constraintsMap:L},onFiltersChange:b,initialConstraints:D},setIsFiltering:A,attachmentsConfig:d,filters:I,onFiltersChange:$})})]})]}):a.jsx(v.Loader,{})]})};function Ec(e,t,n,s,r){const[o,u]=c.useState([]),[f,i]=c.useState(),[d,l]=c.useState(!1);return c.useEffect(()=>{let h=!0;async function m(p){l(!0);try{const g=await Promise.all(p.map(w=>Ve(e,_e(w.urn),()=>e(w.urn))));if(!h)return;const C=g?.map(w=>w?.data?.dataflows?.[0])?.filter(w=>!!w)||[];u(C),t(C),n(p),s(p[0]),i(new Map(g?.map(w=>[S.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&&l(!1)}}if(!r?.length){l(!1);return}return m(r),()=>{h=!1}},[r,e,s,n,t]),{datasets:o,datasetStructuresMap:f,isLoading:d}}function hs(e){const t=e?.filter(n=>da(n));if(t?.every(n=>!!n?.data))return t?.map(n=>({title:n?.title,...Tc(Ac(n?.data))}))}function Ac(e){if(e)try{return JSON.parse(e)}catch(t){console.error("Invalid JSON:",t)}return null}function Tc(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 za=(e=>(e.COMPLETED="completed",e))(za||{});const Nc=({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(Ie.IconPointFilled,{className:"message-stage-indicator flex shrink-0 z-10"}),a.jsxs("div",{className:"ml-2 w-full",children:[a.jsxs("div",{className:P("flex gap-2 items-center",e?.content&&"mb-4"),children:[n&&a.jsx(v.Loader,{}),a.jsx("h3",{className:"message-stage-name",children:e?.name})]}),a.jsx("div",{className:"prose max-w-full break-words",children:a.jsx(gs,{remarkPlugins:[ps],components:{strong:s=>a.jsx("strong",{className:"text-neutrals-1000",...s}),a:({href:s,children:r,...o})=>a.jsx("a",{href:s,target:"_blank",...o,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})})]})]}),jc=({stages:e,expandIcon:t,processingTitle:n})=>{const[s,r]=c.useState(),[o,u]=c.useState(),f=c.useRef(null),i=c.useRef(null);c.useEffect(()=>{u(e?.filter(l=>l?.status!==za.COMPLETED)?.at(-1))},[e]),c.useEffect(()=>{s&&i?.current?.scrollIntoView({block:"nearest",behavior:"smooth"})},[s]),c.useEffect(()=>{const l=f.current;let h;if(!l)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(l),()=>m.disconnect()},[]);const d=()=>{r(l=>!l)};return a.jsxs("div",{className:"message-stages",ref:f,children:[a.jsxs("div",{className:P("message-stages-header inline-flex max-w-full items-center cursor-pointer",!o?.name&&"default-header"),onClick:d,children:[a.jsx("p",{className:"message-stages-title truncate",children:o?.name||n||"Processing..."}),a.jsx("i",{className:P("message-stages-expand-icon",s&&"rotated"),children:t})]}),s&&e&&a.jsx("div",{className:"flex flex-col",children:e?.map(l=>a.jsx(Nc,{stage:l,stageRef:o?i:null,isCurrentStage:l?.index===o?.index},l.index))})]})},Lc=({message:e,regenerateMessage:t,messageActionsIcons:n,rateResponse:s,isStreaming:r=!1,isReadOnly:o=!1,isRegenerateAvailable:u=!1})=>{const f=n?.copy,i=n?.regenerate,d=n?.thumbUp,l=n?.thumbDown,h=n?.thumbPressed,[m,p]=c.useState(e.like??de.LikeState.NoState),{isAgentAvailable:g}=v.useAgentAvailability(),C=w=>{e.responseId&&(p(w),s(e.responseId||"",w))};return a.jsxs("div",{className:P("message-actions","flex gap-x-2 pt-2"),children:[f&&a.jsx("p",{onClick:()=>navigator.clipboard.writeText(e.content),children:f}),u&&i&&!o&&!r&&a.jsx("p",{onClick:g?()=>t?.(e):void 0,"aria-disabled":!g,className:P(!g&&"opacity-50 !cursor-not-allowed pointer-events-none"),children:i}),d&&!o&&m!==de.LikeState.Disliked&&(m===de.LikeState.NoState?a.jsx("p",{onClick:()=>C(de.LikeState.Liked),children:d}):a.jsx("p",{children:h})),l&&!o&&m!==de.LikeState.Liked&&(m===de.LikeState.NoState?a.jsx("p",{onClick:()=>C(de.LikeState.Disliked),children:l}):a.jsx("p",{className:"rotate-180",children:h}))]})},Ic=({message:e,onEditClick:t,messageActionsIcons:n,isStreaming:s=!1,isReadOnly:r=!1})=>{const o=n?.copy,u=n?.edit,{isAgentAvailable:f}=v.useAgentAvailability();return a.jsxs("div",{className:P("message-actions","flex gap-x-2 pt-2 ml-12"),children:[o&&a.jsx("p",{onClick:()=>navigator.clipboard.writeText(e.content),children:o}),u&&!s&&!r&&a.jsx("p",{onClick:f?t:void 0,className:P(!f&&"opacity-50 !cursor-not-allowed pointer-events-none"),"aria-disabled":!f,children:u})]})},Oc=({content:e,textColorClass:t,onCancel:n,onEditApply:s,editMessageTitles:r})=>{const{isOpenedAdvancedView:o}=Be(),u=c.useRef(null);c.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:P("max-w-none break-words",o?"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:P("flex gap-x-2 items-center","edit-buttons-wrapper"),children:[a.jsx(v.Button,{buttonClassName:"text-button-secondary small-icon-button",title:r?.cancel,isSmallButton:!0,onClick:n}),a.jsx(v.Button,{buttonClassName:"text-button-primary small-icon-button",title:r?.send,isSmallButton:!0,onClick:()=>s(u.current?.value||"")})]})]})},Rc=({message:e,previousMessage:t,titles:n,actions:s,dataQuery:r,isStreaming:o=!1,isCurrentMessageStreaming:u=!1,messageStyles:f,attachmentsStyles:i,showAdvancedView:d,formattingSettings:l,locale:h,metadataSettings:m,expandStagesIcon:p,onAdvancedViewOpen:g,regenerateMessage:C,selectMessageToSend:w,messageActionsIcons:y,rateResponse:x,editMessage:b,editMessageTitles:M,isReadOnlyConversation:D,isLastNotUserMessage:N,limitMessages:k,attachmentsConfig:T})=>{const[L,E]=c.useState(),[A,I]=c.useState(),[H,$]=c.useState([]),[W,B]=c.useState([]),[_,q]=c.useState(),[ae,K]=c.useState(!1),J=e.role===de.Role.User,Z=e.role===de.Role.System,{datasets:ue,datasetStructuresMap:ce,isLoading:Y}=Ec(s.getDataSet,s.updateDatasets,s.updateDataQueries,s.updateCurrentDataQuery,L),[ne,oe]=c.useState(!1),[re,fe]=c.useState([]);c.useEffect(()=>{I(L?.[0])},[L]);const{dataSetAttachments:pe,dimensions:we,isLoadingGridData:xe}=Ua(s,h,A,l,i?.chartingStyles,m,n,e.custom_content?.attachments,A?ce?.get(A.urn):void 0,Y),{isOpenedAdvancedView:ve}=Be(),De=()=>{J&&oe(!0)},Ce=()=>{oe(!1)},Te=j=>{Ce(),b?.({...e,content:j})},je=c.useCallback(j=>{j&&(I(L?.find(F=>F?.urn===j)),q(void 0))},[L]);c.useEffect(()=>{const j=e.custom_content?.form_schema?.properties,F=N?j?.choice?.oneOf||j?.completion?.oneOf:[];fe(F||[])},[e,N]),c.useEffect(()=>{const j=ss(e),F=hs(j),U=j.filter(ie=>Ot(ie));E(F),B(U)},[e]),c.useEffect(()=>{K(L!=null&&L.length>0)},[L]),c.useEffect(()=>{r&&r.urn&&q(r.urn)},[r]),c.useEffect(()=>{if(e?.role===de.Role.System&&t){const j=ss(t),F=hs(j)||[];L&&F&&ce&&$(_i(F,L,ce,h))}},[L,A,ce,we,h,e?.role,t]);const Le=c.useCallback(()=>!J&&f?.systemMessageIcon&&!(ve&&!u)?a.jsx("div",{className:P("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,[J,f?.systemMessageIcon,ve,u]),G=c.useMemo(()=>a.jsx(Oa,{actions:s,titles:n,attachments:ae?pe:W,onAdvancedViewOpen:g,isDataSetAttachments:ae,datasets:ue,initialSelectedDatasetUrn:_,messageStyles:f,attachmentsStyles:i,showAdvancedView:d,isSystemAttachments:Z,isDataLoading:xe,currentDataQuery:A,dataQueries:L,attachmentInfoList:H,locale:h,dimensions:we,selectDataset:je,limitMessages:k,attachmentsConfig:T}),[s,n,ae,pe,W,ue,_,f,i,d,Z,xe,A,L,H,h,we,je,g,k,T]);return a.jsx(a.Fragment,{children:!(Z&&ve)&&a.jsx("div",{className:P("max-w-full flex",J?"justify-end":"justify-start","message-wrapper"),children:a.jsxs("div",{className:P("flex items-start max-w-full",(Z||ne)&&"w-full"),children:[a.jsxs("div",{className:"mr-2 relative",children:[Le(),u&&a.jsx(v.Loader,{})]}),a.jsxs("div",{className:"flex-1 min-w-0",children:[a.jsxs("div",{className:P(J?"bg-neutrals-300 px-6":"pt-0",J?"user-message":"system-message",J&&(ne?"w-[100%] ml-0":"ml-12")),children:[!J&&!ve&&e?.custom_content?.stages?a.jsx(jc,{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}),ne?a.jsx(Oc,{content:e.content,onCancel:Ce,onEditApply:Te,editMessageTitles:M}):a.jsx(Bs,{content:e.content})]}),G,!u&&(J?!ne&&a.jsx(Ic,{messageActionsIcons:y,message:e,isStreaming:o,onEditClick:De,isReadOnly:D}):a.jsx(Lc,{messageActionsIcons:y,message:e,isStreaming:o,regenerateMessage:C,rateResponse:x,isReadOnly:D,isRegenerateAvailable:N})),!ve&&!xe&&a.jsx(Hs,{choiceButtons:re,onClick:w})]})]})})})},Pc=({messages:e,isStreaming:t=!1,isReadOnly:n,scrollBottomIcon:s,conversationViewState:r,...o})=>{const u=c.useRef(null),f=c.useRef(null),{isOpenedAdvancedView:i}=Be(),[d,l]=c.useState(null),[h,m]=c.useState(!1),p=()=>{const x=f.current?.parentElement,b=u.current;if(x&&b){const M=b.offsetTop-x.offsetTop;x.scrollTo({top:M,behavior:"smooth"})}};c.useEffect(()=>{p()},[e,t]),c.useEffect(()=>{!i&&d!==null&&setTimeout(()=>{f?.current?.parentElement?.scrollTo({top:d,behavior:"smooth"})})},[i,d]);const g=()=>{const x=f.current?.parentElement?.scrollTop||null;l(x)},C=()=>{const x=f.current?.parentElement;if(x){const{scrollTop:b,scrollHeight:M,clientHeight:D}=x;b+D>=M?m(!1):!h&&!i&&m(!0)}};c.useEffect(()=>{i&&m(!1)},[i]);const w=v.useDebounce(C,300);c.useEffect(()=>{const x=f.current?.parentElement;return x?.addEventListener("scroll",w),()=>x?.removeEventListener("scroll",w)},[w]);const y=c.useCallback(x=>{const b=z.linkifyText(x);return a.jsx("div",{className:"whitespace-pre-wrap break-words",children:b.map((M,D)=>M.type==="text"?a.jsx(c.Fragment,{children:M.value},D):a.jsx("a",{href:M.value,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center align-middle",children:a.jsx(Ie.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((x,b)=>{const M=x.id??b;if(x.errorMessage){const T=r?.errorContext?.kind===te.ERROR_CONTEXT_KIND.RATE_LIMIT?v.InlineAlertType.Warning:v.InlineAlertType.Error;return a.jsx(v.InlineAlert,{type:T,children:a.jsx("div",{className:"flex flex-col",children:y(x.errorMessage)})},M)}const D=b===e.length-1,N=xi(e,b),k=Ci(e);return a.jsx(Rc,{message:x,previousMessage:N,onAdvancedViewOpen:g,isStreaming:t,isCurrentMessageStreaming:t&&D&&x.role===de.Role.Assistant,showAdvancedView:b===k&&!n,isLastNotUserMessage:D&&x.role!==de.Role.User,...o},M)}),a.jsx("div",{ref:u,className:"h-4"})]}),a.jsx("div",{onClick:p,className:P("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})})]})},Fc=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},_c="local",Vc=e=>!e.permissions?.includes(de.SharePermission.WRITE)&&!Hc(e),Bc=(e,t)=>$a(e)!==t,Hc=e=>$a(e)===_c,$a=e=>e.id.split("/")[0],Wc=(e,t)=>Wt([...t?.messages||[],e]),Wt=e=>[...e].map(t=>{const n={role:t.role,content:t.content};return(t.role===de.Role.Assistant||t.role===de.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=zc(t.custom_content.attachments)),t.custom_content.form_schema!=null&&(n.custom_content.form_schema=t.custom_content.form_schema)),t.role===de.Role.User&&t.custom_content&&(n.custom_content=t.custom_content),n}),Gc=(e,t)=>{const n=t?.messages,s=n?.findIndex(r=>e.id===r.id);return Wt(n?.slice(0,s)||[])},Uc=(e,t)=>{const n=t?.messages,s=n?.findIndex(r=>e.id===r.id);return Wt([...n?.slice(0,s)||[],e])};function zc(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 $c=(e,t,n,s)=>{if(!n||t)return null;const r={id:`msg-${Date.now()}`,role:de.Role.User,content:e,timestamp:Date.now()};if(s){const o=s===pt.COMPLETE?ot.COMPLETION:ot.CHOICE;r.custom_content={form_value:{[o]:s}}}return r},Jc=(e,t,n)=>`/${t}${n}/${z.getConversationNavPath(e?.folderId,e?.id)}`,Yc=(e,t,n)=>{const s=`${t}/${n}`,r=te.generateConversationId({folderId:s,name:e?.name});return{...e,folderId:s,id:r}},qc=(e,t)=>{const n=e.lastIndexOf(".");return n<=0?`${e}-${t}`:`${e.slice(0,n)}-${t}${e.slice(n)}`},Kc=(e,t,n)=>{const s=e.split("/");if(s[0]!=="files"||s.length<3)return e;const r=s.at(-1)??"file",o=qc(r,n);return["files",t,...s.slice(2,-1),o].join("/")},Zc=async({conversation:e,bucket:t,getFileBlob:n,putFile:s})=>{const r=z.getConversationAttachmentUrls(e),o=Date.now();if(!r.length)return e;const u=await Promise.all(r.map(async f=>{const i=Kc(f,t,`${o}`);if(i===f)return[f,i];const d=await n(f);return await s(i,d),[f,i]}));return z.replaceConversationAttachmentUrls(e,Object.fromEntries(u))},Qc="AbortError",Xc=({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})}},ed=({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}},ms=(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}}}},td=({conversationKey:e,conversation:t,actions:n,messageStyles:s,attachmentsStyles:r,inputMessageStyles:o,shareConversationProps:u,showConversationHeaderAdvancedView:f=!0,formattingSettings:i,metadataSettings:d,expandStagesIcon:l,locale:h,conversationsRoute:m,token:p,titles:g,dataQuery:C,handleInvalidStreaming:w,setConversation:y,setConversations:x,openUrl:b,messageActionsIcons:M,editMessageTitles:D,scrollBottomIcon:N,isFinalMessage:k,limitMessages:T,attachmentsConfig:L})=>{const[E,A]=c.useState(null),[I,H]=c.useState(!1),[$,W]=c.useState(!0),{isStreaming:B,setIsStreaming:_}=Cs(),{isOpenedAdvancedView:q}=Be(),{isAgentAvailable:ae}=v.useAgentAvailability(),{statusMessages:K}=Tt(),{onboardingFileSchema:J,onboardingFilePath:Z,onboardingFileName:ue,isShowOnboarding:ce,setOnboardingFileSchema:Y}=Ae();c.useEffect(()=>{J&&n.putOnboardingFile?.(ue,Z,J)},[n,J,ue,Z]),c.useEffect(()=>{q&&J?.lastDisplayedElement===me.OPEN_ADVANCED_VIEW&&Y?.(la(J))},[n,q,Y,J]);const ne=c.useCallback(()=>{b(`/${h}${m}`)},[h,m,b]),oe=c.useCallback(async()=>{try{const{bucket:O}=await n.getBucket(),R=n.getFileBlob&&n.putFile?await Zc({conversation:t,bucket:O,getFileBlob:n.getFileBlob,putFile:n.putFile}):t,V=Yc(R,O,h);await n.createConversation(V,h);const ee=await n.getConversations(h);x(z.cleanConversationNames(ee)),b(Jc(V,h,m))}catch(O){console.error("Failed to save conversation:",O)}},[n,t,m,h,b,x]),re=c.useCallback(async O=>{try{await n.updateConversation(decodeURI(e),{name:O.name,messages:O.messages,customViewState:O.customViewState})}catch(R){console.error("Failed to save conversation:",R)}},[n,e]),fe=c.useCallback(O=>{y(R=>R?{...R,messages:[...R?.messages||[],O]}:null)},[y]),pe=c.useCallback(()=>{const O={id:`msg-${Date.now()+1}`,role:de.Role.Assistant,content:"",timestamp:Date.now()};return y(R=>R?{...R,messages:[...R.messages,O]}:null),O},[y]),we=c.useCallback((O,R)=>{const V=te.mergeMessages?.(O,[R]);if(V)return y(ee=>ee?{...ee,messages:ee.messages.map(Q=>Q.id===O.id?{...V}:Q)}:null),V},[y]),xe=c.useCallback((O,R)=>{t?.model?.id&&(n.rateResponse(O,R===de.LikeState.Liked,t.model.id),t.messages=t.messages.map(V=>V.responseId===O?At.merge(V,{like:R}):V),re(t))},[n,t,re]),ve=c.useCallback((O,R)=>{let V=K.serverError,ee,Q;if(z.isHttpError(O)){Q=O;const ge=ed({error:O,statusMessages:K});V=ge.errorMessage,ee=ge.errorContext}else Q=new z.HttpError({status:z.HTTP_ERROR_CODES.INTERNAL_SERVER_ERROR,message:V});return R&&(R=we(R,{errorMessage:V})),w?.(Q),{assistantMessage:R,errorContext:ee}},[w,K.serverError,K.serverOverloaded,K.contentFilterError,we]),De=c.useCallback(async(O,R,V)=>{const ee=new AbortController;A(ee);let Q=O,ge;return V?(await te.streamChatResponse?.(encodeURI(V.id),R,{model:V.model,signal:ee?.signal,onMessage:be=>{Xc({error:be.error,statusMessages:K});const Oe=Fc(be);(Oe.content||Oe.role||Oe.responseId)&&(Q=we(Q,Oe))},onError:be=>{if(!G(be))throw console.error("Streaming error:",be),be}},p,V?.custom_fields).catch(be=>{const{assistantMessage:Oe,errorContext:Ge}=ve(be,Q);Q=Oe,ge=Ge}),{assistantMessage:Q,errorContext:ge}):{assistantMessage:Q,errorContext:ge}},[p,we,ve,K]),Ce=c.useCallback(async(O,R,V,ee)=>{if(!R)return;let Q=ms(R,ee);Q={...Q,messages:[...R.messages],updatedAt:Date.now()},V&&Q.messages.push(V),Q.messages.push(O),await re(Q)},[re]),Te=c.useCallback(O=>{y(R=>R&&ms(R,O))},[y]),je=c.useCallback((O,R)=>{y(V=>V?{...V,messages:V.messages.filter(ee=>ee.id!==R.id)}:null)},[y]),Le=c.useCallback(()=>{E&&!E.signal.aborted&&E.abort()},[E]),G=O=>O?.name===Qc,j=c.useCallback(async(O,R,V,ee,Q,ge=!0)=>{G(Q)?await Ce(ee??V,O,ge?R:void 0):je(Q,R)},[Ce,je]),F=c.useCallback(async(O,R,V)=>{if(!R||!O)return;const ee=$c(O,B,R,V);let Q,ge;if(ee){fe(ee);try{_(!0),Q=pe();const be=Wc(ee,R),{assistantMessage:Oe,errorContext:Ge}=await De(Q,be,R);Te(Ge),ge=Oe,await Ce(ge,R,ee,Ge)}catch(be){j(R,ee,Q,ge,be)}finally{_(!1)}}},[B,_,fe,pe,De,Ce,j,Te]),U=c.useCallback(async(O,R,V)=>{let ee,Q;try{_(!0),ee=pe();const{assistantMessage:ge,errorContext:be}=await De(ee,O,R);Q=ge,Te(be),await Ce(Q,R,void 0,be)}catch(ge){j(R,V,ee,Q,ge,!1)}finally{_(!1)}},[_,Ce,j,De,pe,Te]),ie=c.useCallback(async(O,R)=>{if(!R||!O)return;const V=Gc(O,R),ee={...R,messages:R.messages.slice(0,V.length)};y(Q=>Q?{...Q,...ee}:null),U(V,ee,O)},[y,U]),{isLastMessageFailed:Se,regenerateLastMessage:ye}=c.useMemo(()=>{const O=t?.messages?.at(-1);return{isLastMessageFailed:!!O?.errorMessage,regenerateLastMessage:O&&(()=>ie(O,t))}},[t,ie]),ke=c.useCallback(async(O,R)=>{if(!R||!O)return;const V=Uc(O,R),ee={...R,messages:[...R.messages.slice(0,V.length-1),O]};y(Q=>Q?{...Q,...ee}:null),U(V,ee,O)},[y,U]);c.useEffect(()=>{as();async function O(){try{W(!0);const{bucket:R}=await n.getBucket(),V=await n.getConversation(decodeURI(e));y(V),H(Vc(V)&&Bc(V,R)),(V.messages.length===0||V?.messages?.[0]?.role===de.Role.Assistant&&V?.messages?.length===1)&&F(V.prompt,V)}catch{H(!0)}finally{W(!1)}}return e&&O(),()=>{as()}},[e]);const Fe=c.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($)return a.jsx(v.Loader,{});const Ee=t?.customViewState?.[te.CUSTOM_VIEW_STATE_KEY],tt=()=>{if(Ee?.errorContext?.kind===te.ERROR_CONTEXT_KIND.RATE_LIMIT&&te.isRateLimitStillActive(Ee.errorContext)){const O=te.getRateLimitRestoreDate(Ee.errorContext);if(O){const R=te.formatDateTime(O);return a.jsx(v.InlineAlert,{type:v.InlineAlertType.Info,children:K.getAssistantRestoreMessage(R.date,R.time)})}}return ae?a.jsx(Ds,{onSendMessage:O=>F(O,t),onStopStreaming:Le,inProcess:B,sendMessageIcon:o.sendMessageIcon,retryIcon:o.retryIcon,placeholder:g?.askAnything??"Ask anything...",containerClasses:"mt-4",inputClasses:"border-neutrals-600 mr-2",isLastFailed:Se,onRetryFailed:ye}):a.jsx(v.InlineAlert,{type:v.InlineAlertType.Error,children:K.assistantUnavailable})};return a.jsx(La,{titles:g,children:a.jsxs("div",{className:P("h-full flex flex-col bg-white conversation-view-wrapper",q&&!f?"p-4":"pr-2"),children:[q&&!f?null:a.jsx(Vs,{conversation:t,locale:h,isOpenedAdvancedView:q,isShowShareButton:!I&&!ce,shareConversationProps:u}),a.jsx("div",{className:P("flex-1 min-h-0 flex flex-col items-end scroll-hidden-container",s?.messagesWrapperClass),children:a.jsx(Pc,{messages:t?.messages||[],actions:Fe,isStreaming:B,isReadOnly:I,messageStyles:s,attachmentsStyles:r,formattingSettings:i,metadataSettings:d,expandStagesIcon:l,dataQuery:C,locale:h,titles:g,regenerateMessage:O=>ie(O,t),selectMessageToSend:(O,R)=>F(O,t,R),messageActionsIcons:M,rateResponse:xe,editMessage:O=>ke(O,t),editMessageTitles:D,scrollBottomIcon:N,isReadOnlyConversation:I||ce,limitMessages:T,attachmentsConfig:L,conversationViewState:Ee})}),ce?null:I?a.jsx("div",{className:"flex items-center justify-center mt-4",children:a.jsx(v.Button,{iconBefore:a.jsx(Ie.IconCopy,{width:20,height:20}),title:g?.duplicate??"Duplicate Chat",isSmallButton:!0,onClick:oe,buttonClassName:P("text-button-secondary")})}):a.jsx("div",{className:P(o.inputContainerClass),children:tt()}),ce&&k&&a.jsx(v.Button,{iconBefore:a.jsx(Ie.IconPlus,{width:24,height:24}),title:g?.onboardingFooterLink,onClick:ne,isSmallButton:!0,buttonClassName:"text-button-secondary self-center mb-3"})]})})},Gt=c.createContext(null);function nd({map:e,children:t}){const n=c.useMemo(()=>{const s={},r={},o={},u=Object.keys(e);for(const f of u){s[f]={},r[f]={};const i=Object.keys(e[f]);for(const d of i){const l=e[f][d];l.subtype&&(s[f][l.subtype]=d),r[f][l.dimensionType]||(r[f][l.dimensionType]=[]),r[f][l.dimensionType].push(d)}o[f]={timePeriod:r[f]?.TIME_PERIOD?.[0]??void 0,frequency:s[f]?.FREQUENCY??void 0,region:s[f]?.REGION??void 0,indicators:r[f]?.INDICATOR??[],other:(r[f]?.NON_INDICATOR??[]).filter(d=>{const l=e[f][d];return l.subtype!=="FREQUENCY"&&l.subtype!=="REGION"})}}return{map:e,getDimensionsMetadata:f=>e[f],getDimensionMetadata:(f,i)=>e[f]?.[i],getRegionDimension:f=>s[f]?.REGION,getFrequencyDimension:f=>s[f]?.FREQUENCY,getIndicatorDimensions:f=>r[f]?.INDICATOR??[],getDimensionsScheme:f=>o[f]}},[e]);return a.jsx(Gt.Provider,{value:n,children:t})}function Ja(){const e=c.useContext(Gt);if(!e)throw new Error("useDatasetDimensionsMetadataMap must be used within DatasetDimensionsMetadataMapProvider");return e}function sd(){return c.useContext(Gt)}exports.AdvancedView=kc;exports.AdvancedViewProvider=ar;exports.CUSTOM_CHOICE_ID=pt;exports.ChartingIcon=lt;exports.ChatFooter=Gs;exports.ChatMessagesProvider=rr;exports.ChatOnboardingFooter=Ws;exports.ConversationView=td;exports.ConversationViewMessagesProvider=ir;exports.ConversationViewTitlesProvider=La;exports.ConversationWelcome=Ar;exports.CustomContentProperties=ot;exports.DatasetDimensionsMetadataMapProvider=nd;exports.OnboardingProvider=or;exports.STAGE_STATUS=Ms;exports.useAdvancedView=Be;exports.useChatMessages=Cs;exports.useConversationViewMessages=Tt;exports.useConversationViewTitles=Ia;exports.useDatasetDimensionsMetadataMap=Ja;exports.useDatasetDimensionsMetadataMapOptional=sd;exports.useOnboarding=Ae;
package/index.mjs CHANGED
@@ -12557,7 +12557,7 @@ const sh = (e, t, n, r) => {
12557
12557
  "div",
12558
12558
  {
12559
12559
  className: _(
12560
- "flex-1 min-h-0 flex flex-col items-end hover:overflow-y-auto",
12560
+ "flex-1 min-h-0 flex flex-col items-end scroll-hidden-container",
12561
12561
  r?.messagesWrapperClass
12562
12562
  ),
12563
12563
  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.12",
3
+ "version": "0.3.0-rc.13",
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.12",
10
- "@epam/statgpt-ui-components": "0.3.0-rc.12",
11
- "@epam/statgpt-sdmx-toolkit": "0.3.0-rc.12",
9
+ "@epam/statgpt-shared-toolkit": "0.3.0-rc.13",
10
+ "@epam/statgpt-ui-components": "0.3.0-rc.13",
11
+ "@epam/statgpt-sdmx-toolkit": "0.3.0-rc.13",
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.12",
19
+ "@epam/statgpt-dial-toolkit": "0.3.0-rc.13",
20
20
  "react-markdown": "^10.1.0",
21
21
  "remark-gfm": "^4.0.1",
22
- "@epam/statgpt-conversation-list": "0.3.0-rc.12",
22
+ "@epam/statgpt-conversation-list": "0.3.0-rc.13",
23
23
  "flatpickr": "4.6.13",
24
24
  "react-flatpickr": "^4.0.11",
25
25
  "date-fns": "^4.1.0",