@epam/statgpt-conversation-view 0.7.0-dev.6 → 0.7.0-dev.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.d.ts CHANGED
@@ -21,7 +21,7 @@ export type { DatasetInfoOptions } from './components/AdvancedView/DatasetInfo';
21
21
  export { DatasetDimensionsMetadataMapProvider, useDatasetDimensionsMetadataMap, useDatasetDimensionsMetadataMapOptional, } from './context/DatasetDimensionsMetadataMapContext';
22
22
  export { ConversationViewStylesProvider, useConversationViewStyles, } from './context/ConversationViewStylesContext';
23
23
  export type { ConversationViewStyles } from './context/ConversationViewStylesContext';
24
- export { ConversationViewSidePanelProvider, useConversationViewSidePanelOptional, } from './components/ConversationView/SidePanel/ConversationViewSidePanelContext';
24
+ export { ConversationViewSidePanelProvider, ConversationViewSidePanelOutlet, useConversationViewSidePanelOptional, } from './components/ConversationView/SidePanel/ConversationViewSidePanelContext';
25
25
  export type { ConversationViewSidePanelConfig, ConversationViewSidePanelScope, } from './components/ConversationView/SidePanel/ConversationViewSidePanelContext';
26
26
  export { ConversationViewFeatureTogglesProvider, useConversationViewFeatureToggles, } from './context/ConversationViewFeatureTogglesContext';
27
27
  export type { ConversationViewFeatureToggles } from './context/ConversationViewFeatureTogglesContext';
package/index.js CHANGED
@@ -8,4 +8,4 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
8
8
  `);if(!t.startsWith("```"))return{code:e};let n=t.split(`
9
9
  `),r=n[0].slice(3).trim()||void 0,i=-1;for(let e=n.length-1;e>0;e--)if(n[e].trim()==="```"){i=e;break}return i===-1?{code:n.slice(1).join(`
10
10
  `),language:r}:{code:n.slice(1,i).join(`
11
- `),language:r}}var wu=[`python`];function Tu(e,t,n){return e.filter(e=>e.type===m.AttachmentType.MARKDOWN).filter(e=>!t||e.title?.includes(t)).map(e=>{let t=Cu(e.data??``);return{title:n??`Code samples`,type:m.AttachmentType.CUSTOM_CODE_SAMPLE,language:t.language,data:t.code}}).filter(e=>wu.includes(e.language??``))}function Eu(e,t){return e?.find(e=>e.type===m.AttachmentType.MARKDOWN&&e.data?.includes("```python")&&e.title?.includes(t.urn))?.title??t.urn}function Du(e){let{getPythonAttachment:t,dataQueries:n,requestIdRef:r,codeTitle:i,markdownTitle:a,datasetUrn:o,setCodeAttachments:s,onCodeAttachmentUpdated:c}=e,l=++r.current;t(n).then(e=>{l===r.current&&e?.python_code&&(s([{type:m.AttachmentType.CUSTOM_CODE_SAMPLE,data:e.python_code,language:`python`,title:i}]),c?.({type:m.AttachmentType.MARKDOWN,title:a,data:`\`\`\`python\n${e.python_code}\n\`\`\``},o))}).catch(e=>console.error(`Error refreshing python attachment:`,e))}var Ou=e=>({title:e||`Data Grid`,type:m.AttachmentType.CUSTOM_DATA_GRID}),ku=e=>({title:e||`Chart`,type:m.AttachmentType.CUSTOM_CHART}),Au=e=>({title:e||`Data`,type:m.AttachmentType.CROSS_DATASET_GRID});function ju(e,t,n,r,i,a,o,s,l,u=!1,d,f=!1){let[p,m]=(0,c.useState)(),[h,g]=(0,c.useState)(),[_,v]=(0,c.useState)(),[y,x]=(0,c.useState)(),[S,C]=(0,c.useState)(Ou(o?.dataGrid)),[w,T]=(0,c.useState)(ku(o?.chart)),[E,D]=(0,c.useState)(!1),[O,k]=(0,c.useState)([]),[A,j]=(0,c.useState)([]),[M,N]=(0,c.useState)([]),[P,F]=(0,c.useState)(!1),[I,L]=(0,c.useState)(!1),R=(0,c.useRef)(0),[z,B]=(0,c.useState)({startPeriod:null,endPeriod:null}),{getConstraints:V,getDataSet:H,getDataSetData:U,putOnboardingFile:W,getPythonAttachment:G}=e,K=(0,c.useCallback)(e=>{if(!e)return;let t=(0,b.getDimensions)(e);g(e.dataflows?.[0]||void 0),x(e||void 0),j([...t?.dimensions||[],...t?.timeDimensions||[]])},[]),q=(0,c.useCallback)(async e=>{let t=ln((0,b.getFiltersDtoFromDataQuery)(e));try{v((await mn(V,pn(e.urn,t),()=>V(e.urn,t)))?.data?.dataConstraints||[])}catch{v([])}},[V]),ee=(0,c.useCallback)(async e=>{let t=l?{data:l}:await mn(H,pn(e.urn),()=>H(e.urn));if(t?.data){let n=(0,b.getDimensions)(t.data);K(t.data);let r=n?.dimensions==null?null:(0,b.getTimeSeriesFilterKey)(n?.dimensions,e.filters??[]),i=vn(e,n);mn(U,pn(e.urn,{filterKey:r,timeFilter:i}),()=>U(e.urn,{filterKey:r,timeFilter:i})).then(e=>{L(!0),m(e||void 0),N((0,b.getStructureDimensions)(e))}).finally(()=>F(!1))}},[K,H,U,l]);(0,c.useEffect)(()=>{K(l)},[K,l]),(0,c.useEffect)(()=>{async function e(e){F(!0);try{await Promise.all([...f?[]:[q(e)],ee(e)])}catch(e){console.error(`Error loading dataset details`,e)}}n!=null&&!(u&&!l)?e(n):n!=null&&u&&F(!0)},[n,l,u,q,ee,f]);let J=(0,c.useCallback)((e,t,r)=>{try{F(!0),v(t);let i=r?.find(e=>e.id===b.TIME_PERIOD)?.timeRange;i&&B(i),mn(U,pn(n?.urn||``,e),()=>U(n?.urn||``,e)).then(e=>{L(!0),m(e||void 0),N((0,b.getStructureDimensions)(e))}).finally(()=>F(!1)),G&&n&&r&&Du({getPythonAttachment:G,dataQueries:[Tn(n,r,!1)],requestIdRef:R,codeTitle:o?.codeSamples||`Python Code`,markdownTitle:Eu(s,n),setCodeAttachments:k,onCodeAttachmentUpdated:d,datasetUrn:n.urn})}catch(e){console.error(`Error loading dataset data`,e)}},[n,U,G,o,s,d]);(0,c.useEffect)(()=>{if(y!=null&&p!=null&&_?.length){L(!0);let e=Ms(()=>{C(e=>({...e,...Su(y,p,n,t,r,a,i,o,W,_,z)})),L(!1)});return()=>{e(),L(!1)}}(p==null||_!==void 0)&&L(!1)},[y,p,o,t,r,n,a,i,_,z,W]),(0,c.useEffect)(()=>{if(y==null||p==null)return;let e=uu(y,p,n,t,i);return T(t=>({...t,charting_data:void 0,getChartingData:e})),D(!1),Ms(()=>{try{D(cu(e()))}catch(e){console.error(`Error evaluating chart plottability`,e),D(!1)}})},[y,p,n,t,i]),(0,c.useEffect)(()=>{if(s?.length){let e=Tu(s,n?.urn,o?.codeSamples);e.length>0&&k(e)}},[s,o,n]);let te=(0,c.useMemo)(()=>[S,...E?[w]:[],...O],[S,w,O,E]);return{dataMessage:p,structures:y,dataset:h,dimensions:A,structureDimensions:M,onFiltersChange:J,constraints:_,isLoadingGridData:P||I,dataSetAttachments:te}}function Mu(e,t,n,r){let i=-1;if(n)i=e.findIndex(e=>e.id===n);else for(let t=e.length-1;t>=0;t--)if(e[t].role===u.Role.System){i=t;break}if(i===-1||e[i].role!==u.Role.System)return null;let a=e[i].custom_content?.attachments??[],o=e=>e.type===`text/markdown`&&e.data?.includes("```python"),s=[...a.filter(e=>o(e)?r?!e.title?.includes(r):!1:!0),t];return e.map((e,t)=>t===i?{...e,custom_content:{...e.custom_content,attachments:s}}:e)}var Nu=async(e,t)=>{let n=new Map,r=(0,b.getFiltersDtoMapFromDataQuery)(e);return(await Promise.allSettled(e.map(async e=>{let n=ln(r?.get(e.urn)||[]);return{urn:e.urn,response:await mn(t,pn(e.urn,n),()=>t(e.urn,n))}}))).forEach(e=>{if(e.status===`fulfilled`){let t=e.value.response?.data?.dataConstraints;Array.isArray(t)&&n.set(e.value.urn,t)}}),n},Pu=()=>({datasetsMap:new Map,dataMessagesMap:new Map,structuresMap:new Map,dimensionsMap:new Map,structureDimensionsMap:new Map}),Fu=async(e,t,n,r,i)=>{let a=Pu();await Promise.allSettled(e.map(async e=>{let n=await mn(t,pn(e.urn),()=>t(e.urn));if(n?.data){let t=(0,b.getDimensions)(n.data);a.datasetsMap?.set(e?.urn,n?.data?.dataflows?.[0]),a.structuresMap?.set(e?.urn,n?.data),a.dimensionsMap?.set(e?.urn,[...t?.dimensions||[],...t?.timeDimensions||[]])}}));let o=await i?.(a);return await Promise.allSettled(e.map(async e=>{let t=a.structuresMap?.get(e.urn);if(!t||o&&!o.has(e.urn))return;let i=(0,b.getDimensions)(t),s=i?.dimensions==null?null:(0,b.getTimeSeriesFilterKey)(i?.dimensions,e.filters??[]),c=vn(e,i);await Iu(e,o?.get(e.urn)??{filterKey:s,timeFilter:c},n).then(({dataMessage:t,structureDimensions:n})=>{a?.dataMessagesMap?.set(e.urn,t),a?.structureDimensionsMap?.set(e.urn,n||[])}).catch(()=>{a?.structureDimensionsMap?.set(e.urn,[])}).finally(()=>r(!1))})),a},Iu=async(e,t,n)=>{let r=await mn(n,pn(e.urn,t),()=>n(e.urn,t));return{dataMessage:r,structureDimensions:(0,b.getStructureDimensions)(r)}};function Lu(e,t,n,r){return[zu(e,r),Ru(e,t,n,r)]}function Ru(e,t,n,r){return{headerName:r?.dataset||`Dataset`,field:ec,colId:ec,valueGetter:t=>{let r=t.data?.dataset?.urn;if(r==null)return``;let i=e.get(r)?.dataflows?.[0];return(0,b.getLocalizedName)(i,n)||``},...oo,tooltipValueGetter:e=>e.value,cellClass:ao,cellRenderer:fo,cellRendererParams:{structuresMap:e,attributesDataMap:t,locale:n,titles:r}}}function zu(e,t){return{headerName:t?.agency||`Agency`,field:tc,colId:tc,valueGetter:t=>{let n=t.data?.dataset?.urn;return n==null?``:e.get(n)?.dataflows?.[0]?.agencyID||``},...oo,tooltipValueGetter:e=>e.value}}function Bu(e,t,n,r,i){return Vu(e).sort((e,t)=>(0,b.sortPeriods)(e,t)).map(e=>({...Hu(e,r,i),valueGetter:e=>e.data[e.column.getColId()]?.value?.[0]?.value||null,cellClass:ao,cellRenderer:so,width:200,cellRendererParams:{structuresMap:t,locale:n,titles:i}}))}function Vu(e){let t=new Set;return e.forEach(e=>{e!=null&&(0,b.getTimePeriods)(e).forEach(e=>t.add(e))}),Array.from(t)}function Hu(e,t=h.defaultFormatNumbers,n){return{headerName:xt(e,n),colId:e,field:e,type:`numericColumn`,suppressColumnsToolPanel:!0,sortable:!1,width:200,cellClass:[`justify-end`,`cell-with-meta`],valueFormatter:e=>(0,h.formatNumberBySign)(e.value,t)}}function Uu(e,t,n,r,i,a,o=uc.Compact){let s=new Map([...n.entries()].map(([e,t])=>[e,t?.data])),c=Lu(e,s,r,i),l=vc(e,t,r,i,o),u=Bu(n,e,r,a,i);return[_o(e,s,r,i),...c,...l,...u,ho(void 0,void 0,r,void 0,i)]}function Wu(e,t,n,r,i){let a=[];return n.filter(e=>!e.disabled).forEach(n=>{let o=n.urn,s=t.get(o),c=e.get(o);if(s==null||c==null)return;let l=yu(s,c,n,r,i),u=(0,b.getLocalizedName)(c.dataflows?.[0],r);a.push(...l.map(e=>({...e,dataset:{urn:o},datasetTitle:u})))}),a}function Gu(e,t,n,r,i,a,o,s,c,l,u,d=uc.Compact){let f=Ku(e,t,n,r,i,a,o,s,c,l,u,d);return{title:c?.dataGrid||`Data`,gridContent:f}}function Ku(e,t,n,r,i,a,o,s,c,l,u,d=uc.Compact){return{columns:Uu(e,n,t,i,c,a,d),data:Wu(e,t,r,i,s)}}function qu(e,t,n,r,i){let a;return()=>(a??=Ju(e,t,n,r,i),a)}function Ju(e,t,n,r,i){let a=n.filter(e=>!e.disabled).flatMap(n=>{let a=e.get(n.urn),o=t.get(n.urn);return!a||!o?[]:[{title:(0,b.getLocalizedName)(a.dataflows?.[0],r),units:lu(a,o,n,r,i).units}]});return{units:a.flatMap(e=>e.units),groups:a}}var Yu=5e3;function Xu(e,t,n,r,i,a,o,s,l,u=uc.Compact,d){let f=Array.isArray(s)?s:void 0,[p,m]=(0,c.useState)(),[h,g]=(0,c.useState)(),[_,v]=(0,c.useState)(!1),[y,b]=(0,c.useState)(f?new Set(f):null),[x,S]=(0,c.useState)(!1),C=(0,c.useRef)(0),w=(0,c.useRef)(u),T=(0,c.useRef)(p),E=(0,c.useRef)(0),D=(0,c.useRef)(null),[O,k]=(0,c.useState)(Au(d?.dataGrid)),[A,j]=(0,c.useState)(ku(d?.chart)),[M,N]=(0,c.useState)(!1),[P,F]=(0,c.useState)([]),{getConstraints:I,getDataSet:L,getDataSetData:R,getPythonAttachment:z}=e,B=(0,c.useRef)(n);B.current=n;let V=(0,c.useRef)(f);V.current=f;let H=(0,c.useMemo)(()=>n?.map(e=>e.urn).join(`,`)??``,[n]),U=ys(),{getDimensionsScheme:W}=U,G=(0,c.useCallback)(async e=>{try{let t=await Nu(e.map(e=>({...e,filters:[]})),I),n=yr(e,t,U.map),r=n===e?t:await Nu(n,I);return m(e=>({...e,constraintsMap:r})),r}catch{let e=new Map;return m(t=>({...t,constraintsMap:e})),e}},[U.map,I]),K=(0,c.useCallback)(async(e,n)=>{let r=await Fu(e,L,R,v,async r=>{let i=Pr(e.filter(e=>!e.disabled),r,n,t,U.map);if(i)return b(i.compatibleUrns),i.filterParamsMap});m(e=>({...e,...r,constraintsMap:n??e?.constraintsMap}))},[U.map,L,R,t]),q=(0,c.useCallback)(e=>{let t=new Map;for(let n of e)t.set(n.urn,W(n.urn));g(t)},[W]);(0,c.useEffect)(()=>{async function e(e){let t=V.current;b(t?new Set(t):null),v(!0);try{q(e),await K(e,await G(e))}catch(e){console.error(`Error loading dataset details`,e)}finally{v(!1)}}let t=B.current;t?.length&&e(t)},[H,G,q,K]),(0,c.useEffect)(()=>{if(o?.length){let e=Tu(o,void 0,d?.codeSamples);e.length>0&&F(e)}},[o,d]),(0,c.useEffect)(()=>()=>{D.current!==null&&clearTimeout(D.current)},[]),(0,c.useEffect)(()=>{let e=w.current!==u&&T.current===p;w.current=u,T.current=p;let{structuresMap:o,dataMessagesMap:s,constraintsMap:c}=p??{};if(o!=null&&o.size>0&&s!=null&&c!=null&&h!=null&&!_){e||S(!0);let l=Ms(()=>{let l=n?.filter(e=>!e.disabled),f=y??new Set((l??[]).map(e=>e.urn)),p=hr(l,f),m=gr(o,f),g=gr(s,f),_=gr(h,f);k(e=>({...e,...Gu(m,g,_,p,t,i,a,r,d,c,{startPeriod:null,endPeriod:null},u)})),e||S(!1)});return()=>{l(),e||S(!1)}}e||S(!1)},[p,n,t,i,a,r,d,h,_,y,u]),(0,c.useEffect)(()=>{let{structuresMap:e,dataMessagesMap:i}=p??{};if(e!=null&&e.size>0&&i!=null&&!_){let a=n?.filter(e=>!e.disabled),o=y??new Set((a??[]).map(e=>e.urn)),s=hr(a,o),c=qu(gr(e,o),gr(i,o),s,t,r);return j(e=>({...e,charting_data:void 0,getChartingData:c})),N(!1),Ms(()=>{try{N(cu(c()))}catch(e){console.error(`Error evaluating cross-dataset chart plottability`,e),N(!1)}})}},[p,n,t,r,_,y]);let ee=(0,c.useMemo)(()=>[O,...M?[A]:[],...P],[O,A,P,M]),J=(0,c.useCallback)((e,n,r,i,a)=>{try{v(!0);let o=++E.current;D.current!==null&&(clearTimeout(D.current),D.current=null);let s=r?.filter(e=>!e.disabled)??[];if(b(new Set(s.map(e=>e.urn))),m(e=>({...e,constraintsMap:n})),!s.length){v(!1);return}let c=i?Fr(s,i):void 0,u=c?s.map(e=>({...e,filters:c.get(e.urn)??[]})):s,f=(n&&p?Pr(u,p,n,t,U.map):void 0)?.filterParamsMap??e,h=new Map,g=()=>{if(h.size===0)return;S(!0);let e=[...h.values()];h.clear(),m(t=>{let n=new Map(t?.dataMessagesMap),r=new Map(t?.structureDimensionsMap);return e.forEach(({urn:e,dataMessage:t,structureDimensions:i})=>{n.set(e,t),r.set(e,i||[])}),{...t,dataMessagesMap:n,structureDimensionsMap:r}})};D.current=setTimeout(()=>{D.current=null,o===E.current&&h.size>0&&(g(),v(!1))},Yu);let _=s.map(e=>Iu(e,f?.get(e?.urn),R).then(({dataMessage:t,structureDimensions:n})=>{h.set(e.urn,{urn:e.urn,dataMessage:t,structureDimensions:n})}));Promise.allSettled(_).finally(()=>{o===E.current&&(D.current!==null&&(clearTimeout(D.current),D.current=null),g(),v(!1))}),z&&s.length&&Du({getPythonAttachment:z,dataQueries:s.map(e=>Tn(e,a??i?.get(e.urn)??[])),requestIdRef:C,codeTitle:d?.codeSamples||`Python Code`,markdownTitle:`Python Code`,setCodeAttachments:F,onCodeAttachmentUpdated:l})}catch(e){console.error(`Error loading dataset data`,e)}},[U.map,R,z,t,l,p,d]);return{structureDataMaps:p,datasetDimensionsSchemesMap:h,isLoadingGridData:_||x,crossDatasetAttachments:ee,activeDatasetUrns:y,onMultipleDataFiltersChange:J}}var Zu=(0,c.createContext)(void 0),Qu={setCrossDatasetAttachmentsState:()=>void 0},$u=e=>{if(!e)return``;try{return JSON.stringify({dataQueriesKey:e.dataQueriesKey,activeDatasetUrns:e.activeDatasetUrns,isLoading:!!e.isLoading,attachments:e.attachments})}catch{return JSON.stringify({dataQueriesKey:e.dataQueriesKey,activeDatasetUrns:e.activeDatasetUrns,isLoading:!!e.isLoading,attachmentsLength:e.attachments?.length??0})}},ed=({children:e})=>{let[t,n]=(0,c.useState)({}),r=(0,c.useCallback)(e=>{let t=$u(e);n(n=>n.signature===t?n:{...e,isLoading:!!e?.isLoading,signature:t})},[]),i=(0,c.useMemo)(()=>({...t,setCrossDatasetAttachmentsState:r}),[r,t]);return(0,l.jsx)(Zu.Provider,{value:i,children:e})},td=()=>{let e=(0,c.useContext)(Zu);return e===void 0?Qu:e},nd=({attachmentsProps:e,actions:t,titles:n,shareConversationProps:r,metadataSettings:i,formattingSettings:a,locale:o,advanceViewStyles:s,getDatasetUpdatedTime:u,attachmentsConfig:f,datasetInfoOptions:m,limitMessages:h,...g})=>{let _=(0,c.useMemo)(()=>e.currentDataQuery?.urn??e.dataQueries?.[0]?.urn??`default`,[e.currentDataQuery?.urn,e.dataQueries]),v=(0,c.useMemo)(()=>e?.dataQueries?.filter(e=>!e.disabled),[e?.dataQueries]),[y,b]=(0,c.useState)(uc.Compact),{isOpenedAdvancedView:x}=I(),{activeDatasetUrns:S,dataQueriesKey:C,setCrossDatasetAttachmentsState:w}=td(),{isCrossDatasetModeOn:T,isMetadataInSidePanel:E}=Z(),D=ys(),O=!E,k=e.datasets??[],A=k.length>1&&!T,j=(0,c.useMemo)(()=>{let e=g.filtersProps.conversation?.messages??[],t=oa(e);return t>=0?e[t].custom_content?.attachments:void 0},[g.filtersProps.conversation?.messages]),M=(0,c.useMemo)(()=>br(e.dataQueries),[e.dataQueries]),N=C===M?S:_r(e.dataQueries,D.map),P=T&&!!e.dataQueries?.length,F=(0,c.useRef)(g.filtersProps.conversation);F.current=g.filtersProps.conversation;let L=(0,c.useCallback)((e,t)=>{let n=F.current;if(!n)return;let r=Mu(n.messages,e,void 0,t);if(!r)return;let i={...n,messages:r};g.filtersProps.setConversation?.(i),g.filtersProps.updateConversation(decodeURI(g.filtersProps.conversationKey),{name:i.name,messages:i.messages})},[]),{dataMessage:R,dataset:z,dimensions:B,structureDimensions:V,structures:H,dataSetAttachments:U,onFiltersChange:W,isLoadingGridData:G,constraints:K}=ju(t,o,e.currentDataQuery,a,e.styles?.chartingStyles,i,n,j,void 0,!1,L,P),q=O&&!!z,{structureDataMaps:ee,crossDatasetAttachments:J,activeDatasetUrns:te,isLoadingGridData:ne,onMultipleDataFiltersChange:re}=Xu(t,o,e.dataQueries,e.styles?.chartingStyles,a,i,j,N,L,y,n);(0,c.useEffect)(()=>{if(!T||!e.dataQueries?.length){w();return}ee&&w({attachments:J,dataQueriesKey:M,activeDatasetUrns:te?Array.from(te):void 0,isLoading:ne})},[te,e.dataQueries?.length,J,M,T,ne,w,ee]);let[ie,ae]=(0,c.useState)({filterKey:null,timeFilter:null}),[oe,se]=(0,c.useState)(),Y=T?ne:G,le=T?J:U,ue=(0,c.useCallback)((e,t,n)=>{ae(e),se(!0),W(e,t,n)},[W]),de=(0,c.useCallback)((e,t,n,r,i)=>{se(!0),re(e,t,n,r,i)},[re]),fe=(0,c.useCallback)(n=>{n&&t?.updateCurrentDataQuery(e?.dataQueries?.find(e=>e?.urn===n)||e.currentDataQuery)},[t,e.currentDataQuery,e?.dataQueries]),pe=La(f?.isExternaLinkIncludeFilters,ie,e.currentDataQuery||e.dataQueries?.[0],B);return(0,l.jsx)(ce,{styles:{titles:n,attachmentsStyles:e.styles,formattingSettings:a,limitMessages:h,attachmentsConfig:f},children:(0,l.jsx)(fc,{currentUrn:_,structuresMap:ee?.structuresMap,locale:o,dataQueries:v,gridViewMode:y,onGridViewModeChange:b,texts:{columnsDisplayTitle:e.styles?.columnsDisplayTitle,columnsSearchPlaceholder:e.styles?.columnsSearchPlaceholder,compactViewTitle:e.styles?.compactViewTitle,compactViewDescription:e.styles?.compactViewDescription,extendedViewTitle:e.styles?.extendedViewTitle,extendedViewDescription:e.styles?.extendedViewDescription},resetIcon:e.styles?.tableSettingsResetIcon,children:(0,l.jsx)(vi,{children:(0,l.jsxs)(`div`,{className:`advanced-view flex h-full min-w-0 flex-1 flex-col`,children:[(0,l.jsx)(Al,{locale:o,shareConversationProps:r,isShowShare:s?.isShowShare,conversation:g.filtersProps.conversation}),k.length?(0,l.jsxs)(l.Fragment,{children:[A&&(0,l.jsx)(ja,{datasets:k,initialSelectedDatasetUrn:e?.currentDataQuery?.urn,locale:o,selectDataset:fe}),Y&&!oe?(0,l.jsx)(d.Loader,{}):(0,l.jsxs)(l.Fragment,{children:[q&&(0,l.jsx)(kl,{...m,locale:o,dataset:z,data:R?.data,structures:H,metadataSettings:i,getDatasetUpdatedTime:u,externalLink:pe}),(0,l.jsxs)(`div`,{className:(0,p.default)(`flex flex-1 min-h-0 overflow-auto`,q&&`border-t border-neutrals-500`),children:[(0,l.jsx)(`div`,{className:(0,p.default)(`flex-1 min-h-0 overflow-auto`,`advanced-view-filters`),children:(0,l.jsx)(Ol,{...g,actions:t,attachments:le,attachmentsDataQuery:e.currentDataQuery,dataQueries:e?.dataQueries,dimensions:B,isDataLoading:Y,locale:o,filtersProps:{...g?.filtersProps,structureDimensions:V,structures:H,structureDataMaps:ee,onFiltersChange:W,onMultipleDataFiltersChange:de,initialConstraints:K},setIsFiltering:se,filters:ie,onFiltersChange:ue})}),x&&(0,l.jsx)(ms,{scope:`advanced`})]})]})]}):(0,l.jsx)(d.Loader,{})]})})})})};function rd(e,t,n,r,i,a){let[o,s]=(0,c.useState)([]),[l,u]=(0,c.useState)(),[d,f]=(0,c.useState)(!1),p=(0,c.useRef)(void 0);return(0,c.useEffect)(()=>{p.current=a},[a]),(0,c.useEffect)(()=>{let a=!0;async function o(i){f(!0);try{let o=await Promise.all(i.map(t=>mn(e,pn(t.urn),()=>e(t.urn))));if(!a)return;let c=o?.map(e=>e?.data?.dataflows?.[0])?.filter(e=>!!e)||[];s(c),t(c),n(i),r(i.find(e=>e.urn===p.current?.urn)??i[0]),u(new Map(o?.map(e=>[(0,b.generateShortUrn)(e?.data?.dataflows?.[0]?.id,e?.data?.dataflows?.[0]?.version,e?.data?.dataflows?.[0]?.agencyID),e?.data])))}catch(e){console.error(`Error loading datasets`,e)}finally{a&&f(!1)}}if(!i?.length){f(!1);return}return o(i),()=>{a=!1}},[i,e,r,n,t]),{datasets:o,datasetStructuresMap:l,isLoading:d}}function id(e){let t=e?.filter(e=>Yi(e));if(t?.every(e=>!!e?.data))return t?.map(e=>({title:e?.title,...od(ad(e?.data))}))}function ad(e){if(e)try{return JSON.parse(e)}catch(e){console.error(`Invalid JSON:`,e)}return null}function od(e){return{...e,filters:e?.filters?.map(e=>({...e,componentCode:e?.component_code||e?.componentCode})),metadata:{datasetUrl:e?.metadata?.datasetUrl,countryDimension:e?.metadata?.country_dimension||e?.metadata?.countryDimension,indicatorDimensions:e?.metadata?.indicator_dimensions||e?.metadata?.indicatorDimensions,timePeriodDimension:e?.metadata?.timePeriodDimension,keyDimensionIdsInDsdOrder:e?.metadata?.keyDimensionIdsInDsdOrder}}}var sd=function(e){return e.COMPLETED=`completed`,e}({}),cd=({stage:e,stageRef:t,isCurrentStage:n})=>(0,l.jsxs)(`div`,{ref:t,className:`message-stage relative flex pb-8 last:mb-8 last:pb-0`,children:[(0,l.jsx)(`span`,{className:`message-stage-line absolute h-full border-l`}),(0,l.jsx)(f.IconPointFilled,{className:`message-stage-indicator z-10 flex shrink-0`}),(0,l.jsxs)(`div`,{className:`ml-2 w-full`,children:[(0,l.jsxs)(`div`,{className:(0,p.default)(`flex gap-2 items-center`,e?.content&&`mb-4`),children:[n&&(0,l.jsx)(d.Loader,{}),(0,l.jsx)(`h3`,{className:`message-stage-name`,children:e?.name})]}),(0,l.jsx)(`div`,{className:`prose max-w-full break-words`,children:(0,l.jsx)(_.default,{remarkPlugins:[v.default],components:{strong:e=>(0,l.jsx)(`strong`,{className:`text-neutrals-1000`,...e}),a:({href:e,children:t,...n})=>(0,l.jsx)(`a`,{href:e,target:`_blank`,rel:`noreferrer`,...n,children:t}),h1:({children:e,...t})=>(0,l.jsx)(`h1`,{className:`h1 text-neutrals-1000`,...t,children:e}),h2:({children:e,...t})=>(0,l.jsx)(`h2`,{className:`h2 text-neutrals-1000`,...t,children:e}),h3:({children:e,...t})=>(0,l.jsx)(`h3`,{className:`h3 text-neutrals-1000`,...t,children:e}),h4:({children:e,...t})=>(0,l.jsx)(`h4`,{className:`h4 text-neutrals-1000`,...t,children:e}),h5:({children:e,...t})=>(0,l.jsx)(`h5`,{className:`h5 text-neutrals-1000`,...t,children:e}),code:e=>(0,l.jsx)(`code`,{className:`text-neutrals-900`,...e}),pre:e=>(0,l.jsx)(`pre`,{className:`border border-neutrals-600 bg-neutrals-100`,...e})},children:e?.content})})]})]}),ld=({stages:e,expandIcon:t,processingTitle:n,prefixIcon:r})=>{let[i,a]=(0,c.useState)(),[o,s]=(0,c.useState)(),u=(0,c.useRef)(null),d=(0,c.useRef)(null);return(0,c.useEffect)(()=>{s(e?.filter(e=>e?.status!==sd.COMPLETED)?.at(-1))},[e]),(0,c.useEffect)(()=>{i&&d?.current?.scrollIntoView({block:`nearest`,behavior:`smooth`})},[i]),(0,c.useEffect)(()=>{let e=u.current,t;if(!e)return;let n=new IntersectionObserver(([e])=>{let n=e?.boundingClientRect?.top;t&&!e?.isIntersecting&&n<t&&a(!1),t=n},{threshold:0});return n.observe(e),()=>n.disconnect()},[]),(0,l.jsxs)(`div`,{className:`message-stages`,ref:u,children:[(0,l.jsxs)(`div`,{className:(0,p.default)(`message-stages-header inline-flex max-w-full items-center cursor-pointer`,!!r&&`gap-2`,!o?.name&&`default-header`),onClick:()=>{a(e=>!e)},children:[r,(0,l.jsx)(`p`,{className:`message-stages-title truncate`,children:o?.name||n||`Processing...`}),(0,l.jsx)(`i`,{className:(0,p.default)(`message-stages-expand-icon`,i&&`rotated`),children:t})]}),i&&e&&(0,l.jsx)(`div`,{className:`flex flex-col`,children:e?.map(e=>(0,l.jsx)(cd,{stage:e,stageRef:o?d:null,isCurrentStage:e?.index===o?.index},e.index))})]})},ud=2e3,dd=({message:e,regenerateMessage:t,messageActionsIcons:n,rateResponse:r,isStreaming:i=!1,isReadOnly:a=!1,isRegenerateAvailable:o=!1})=>{let{messageActionsTitles:s}=Y(),f=n?.copy,m=n?.copied,h=n?.regenerate,g=n?.thumbUp,_=n?.thumbDown,v=n?.thumbPressed,[y,b]=(0,c.useState)(e.like??u.LikeState.NoState),[x,S]=(0,c.useState)(!1),C=(0,c.useRef)(null),{isAgentAvailable:w}=(0,d.useAgentAvailability)();(0,c.useEffect)(()=>()=>{C.current&&clearTimeout(C.current)},[]);let T=t=>{e.responseId&&(b(t),r(e.responseId||``,t))};return(0,l.jsxs)(`div`,{className:(0,p.default)(`message-actions`,`flex gap-x-2 pt-2`),children:[f&&(0,l.jsx)(`p`,{onClick:()=>{navigator.clipboard.writeText(e.content),S(!0),C.current&&clearTimeout(C.current),C.current=setTimeout(()=>{S(!1)},ud)},title:s?.copy,children:x&&m?m:f}),o&&h&&!a&&!i&&(0,l.jsx)(`p`,{onClick:w?()=>t?.(e):void 0,"aria-disabled":!w,title:s?.regenerate,className:(0,p.default)(!w&&`opacity-50 !cursor-not-allowed pointer-events-none`),children:h}),g&&!a&&y!==u.LikeState.Disliked&&(y===u.LikeState.NoState?(0,l.jsx)(`p`,{onClick:()=>T(u.LikeState.Liked),title:s?.like,children:g}):(0,l.jsx)(`p`,{title:s?.like,children:v})),_&&!a&&y!==u.LikeState.Liked&&(y===u.LikeState.NoState?(0,l.jsx)(`p`,{onClick:()=>T(u.LikeState.Disliked),title:s?.dislike,children:_}):(0,l.jsx)(`p`,{className:`rotate-180`,title:s?.dislike,children:v}))]})},fd=({message:e,onEditClick:t,messageActionsIcons:n,isStreaming:r=!1,isReadOnly:i=!1})=>{let a=n?.copy,o=n?.edit,{isAgentAvailable:s}=(0,d.useAgentAvailability)();return(0,l.jsxs)(`div`,{className:(0,p.default)(`message-actions`,`flex gap-x-2 pt-2 ml-12`),children:[a&&(0,l.jsx)(`p`,{onClick:()=>navigator.clipboard.writeText(e.content),children:a}),o&&!r&&!i&&(0,l.jsx)(`p`,{onClick:s?t:void 0,className:(0,p.default)(!s&&`opacity-50 !cursor-not-allowed pointer-events-none`),"aria-disabled":!s,children:o})]})},pd=({content:e,textColorClass:t,onCancel:n,onEditApply:r,editMessageTitles:i})=>{let{isOpenedAdvancedView:a}=I(),o=(0,c.useRef)(null);(0,c.useEffect)(()=>{let e=o.current;s(),e&&(e.focus(),e.setSelectionRange(e.value.length,e.value.length))},[]);let s=()=>{let e=o.current;e&&(e.style.height=`auto`,e.style.height=e.scrollHeight+`px`)};return(0,l.jsxs)(`div`,{className:(0,p.default)(`max-w-none break-words`,a?`body-2`:`body-1`,t),children:[(0,l.jsx)(`textarea`,{ref:o,className:`w-full resize-none overflow-hidden bg-neutrals-300 outline-none`,defaultValue:e,onInput:s}),(0,l.jsxs)(`div`,{className:(0,p.default)(`flex gap-x-2 items-center`,`edit-buttons-wrapper`),children:[(0,l.jsx)(d.Button,{buttonClassName:`text-button-secondary small-icon-button`,title:i?.cancel,isSmallButton:!0,onClick:n}),(0,l.jsx)(d.Button,{buttonClassName:`text-button-primary small-icon-button`,title:i?.send,isSmallButton:!0,onClick:()=>r(o.current?.value||``)})]})]})},md=({message:e,previousMessage:t,actions:n,dataQuery:r,isStreaming:i=!1,isCurrentMessageStreaming:a=!1,showAdvancedView:o,locale:s,metadataSettings:f,onAdvancedViewOpen:m,regenerateMessage:h,selectMessageToSend:g,rateResponse:_,editMessage:v,isReadOnlyConversation:y,isLastNotUserMessage:b,onCodeAttachmentUpdated:x})=>{let{messageStyles:S,attachmentsStyles:C,formattingSettings:w,messageActionsIcons:T,editMessageTitles:E,expandStagesIcon:D,titles:O}=Y(),[k,A]=(0,c.useState)(),[j,M]=(0,c.useState)(),[N,P]=(0,c.useState)([]),[F,L]=(0,c.useState)([]),[R,z]=(0,c.useState)(),[B,V]=(0,c.useState)(!1),{isCrossDatasetModeOn:H}=Z(),U=ys(),W=e.role===u.Role.User,G=e.role===u.Role.System,{datasets:K,datasetStructuresMap:q,isLoading:ee}=rd(n.getDataSet,n.updateDatasets,n.updateDataQueries,n.updateCurrentDataQuery,k,r),[J,te]=(0,c.useState)(!1),[ne,re]=(0,c.useState)([]);(0,c.useEffect)(()=>{M(k?.[0])},[k]);let ie=H&&!!k?.length,ae=(0,c.useCallback)(t=>{e.id&&x?.(e.id,t)},[e.id,x]),{dataSetAttachments:oe,dimensions:se,isLoadingGridData:ce}=ju(n,s,j,w,C?.chartingStyles,f,O,e.custom_content?.attachments,j?q?.get(j.urn):void 0,ee,ae,ie),le=(0,c.useMemo)(()=>_r(k,U.map),[k,U.map]),{crossDatasetAttachments:ue,isLoadingGridData:de}=Xu(n,s,k,C?.chartingStyles,w,f,e.custom_content?.attachments,le,ae,void 0,O),{isOpenedAdvancedView:fe}=I(),pe=(0,d.useIsMobile)(d.MOBILE_BREAKPOINT),me=!pe,{attachments:he,dataQueriesKey:ge,isLoading:_e}=td(),ve=(0,c.useMemo)(()=>br(k),[k]),ye=H&&!!o&&he!=null&&ge===ve,be=ye?he:ue,xe=(0,c.useMemo)(()=>H?ye?_e:de:ce,[H,de,ce,_e,ye]),Se=()=>{W&&te(!0)},Ce=()=>{te(!1)},we=t=>{Ce(),v?.({...e,content:t})},Te=(0,c.useCallback)(e=>{e&&(M(k?.find(t=>t?.urn===e)),z(void 0))},[k]);(0,c.useEffect)(()=>{let t=e.custom_content?.form_schema?.properties;re((b?t?.choice?.oneOf||t?.completion?.oneOf:[])||[])},[e,b]),(0,c.useEffect)(()=>{let t=qi(e),n=id(t),r=t.filter(e=>Qi(e));A(n),L(r)},[e]),(0,c.useEffect)(()=>{V(k!=null&&k.length>0)},[k]),(0,c.useEffect)(()=>{r?.urn&&k?.some(e=>e?.urn===r.urn)&&z(r.urn)},[r,k]),(0,c.useEffect)(()=>{if(e?.role===u.Role.System&&t){let e=id(qi(t))||[];k&&e&&q&&P(Na(e,k,q,s,U.map))}},[k,j,q,U.map,se,s,e?.role,t]);let Ee=(0,c.useCallback)((e=`column`)=>{if(!W&&S?.systemMessageIcon&&!(fe&&!a)){let t=e===`inline`;return(0,l.jsx)(`div`,{className:(0,p.default)(`flex-shrink-0 rounded-full flex items-center justify-center`,t?`size-[44px] overflow-visible [&_svg]:size-[44px]`:`w-[44px] h-[44px]`,a&&!t?`text-white absolute`:`text-neutrals-400`),children:S.systemMessageIcon})}return null},[W,S?.systemMessageIcon,fe,a]),De=pe?Ee(`inline`):null,Oe=pe&&(De!=null||a)?(0,l.jsxs)(l.Fragment,{children:[De,a&&(0,l.jsx)(d.Loader,{})]}):null,ke=!W&&!fe&&!!e?.custom_content?.stages,Ae=pe&&!ke&&!a&&!J&&De!=null,je=(0,c.useMemo)(()=>(0,l.jsx)(Zc,{actions:n,attachments:B?H?be:oe:F,onAdvancedViewOpen:m,isDataSetAttachments:B,datasets:K,initialSelectedDatasetUrn:R,showAdvancedView:o,isSystemAttachments:G,isDataLoading:xe,currentDataQuery:j,dataQueries:k,attachmentInfoList:N,locale:s,dimensions:se,selectDataset:Te}),[n,B,oe,F,be,K,R,o,G,xe,j,k,N,s,se,Te,m,H]);if(G&&fe)return null;let Me=a?null:W?J?null:(0,l.jsx)(fd,{messageActionsIcons:T,message:e,isStreaming:i,onEditClick:Se,isReadOnly:y}):G?null:(0,l.jsx)(dd,{messageActionsIcons:T,message:e,isStreaming:i,regenerateMessage:h,rateResponse:_,isReadOnly:y,isRegenerateAvailable:b});return(0,l.jsx)(`div`,{className:(0,p.default)(`max-w-full flex`,W?`justify-end`:`justify-start`,`message-wrapper`),children:(0,l.jsxs)(`div`,{className:(0,p.default)(`flex items-start`,W&&!J?`max-w-full`:`w-full`),children:[me&&(0,l.jsxs)(`div`,{className:`relative mr-2`,children:[Ee(),a&&(0,l.jsx)(d.Loader,{})]}),(0,l.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,l.jsxs)(`div`,{className:(0,p.default)(W?`bg-neutrals-300 px-6`:`pt-0`,W?`user-message`:`system-message`,W&&(J?`w-[100%] ml-0`:`ml-12`)),children:[ke?(0,l.jsx)(ld,{stages:e?.custom_content?.stages,expandIcon:D,processingTitle:S?.processingTitle,prefixIcon:Oe}):a&&(0,l.jsx)(l.Fragment,{children:pe?(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[Oe,(0,l.jsx)(`p`,{className:`body-1 loading-message text-neutrals-700`,children:O?.loading})]}):(0,l.jsx)(`p`,{className:`body-1 loading-message text-neutrals-700`,children:O?.loading})}),J?(0,l.jsx)(pd,{content:e.content,onCancel:Ce,onEditApply:we,editMessageTitles:E}):Ae?(0,l.jsxs)(`div`,{className:`flex items-start gap-2`,children:[De,(0,l.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,l.jsx)(Ue,{content:e.content})})]}):(0,l.jsx)(Ue,{content:e.content})]}),je,Me,!fe&&!xe&&(0,l.jsx)(We,{choiceButtons:ne,onClick:g})]})]})})},hd=({messages:e,isStreaming:t=!1,isReadOnly:n,conversationViewState:r,...i})=>{let{scrollBottomIcon:a}=Y(),o=(0,c.useRef)(null),s=(0,c.useRef)(null),{isOpenedAdvancedView:g}=I(),_=ps(),[v,y]=(0,c.useState)(null),[b,x]=(0,c.useState)(!1),S=_?.isPanelOpen()??!1,C=()=>{let e=s.current?.parentElement,t=o.current;if(e&&t){let n=t.offsetTop-e.offsetTop;e.scrollTo({top:n,behavior:`smooth`})}};(0,c.useEffect)(()=>{C()},[e,t]),(0,c.useEffect)(()=>{!g&&v!==null&&setTimeout(()=>{s?.current?.parentElement?.scrollTo({top:v,behavior:`smooth`})})},[g,v]);let w=()=>{y(s.current?.parentElement?.scrollTop||null)},T=()=>{let e=s.current?.parentElement;if(e){let{scrollTop:t,scrollHeight:n,clientHeight:r}=e;t+r>=n?x(!1):!b&&!g&&x(!0)}};(0,c.useEffect)(()=>{g&&x(!1)},[g]);let E=(0,d.useDebounce)(T,300);(0,c.useEffect)(()=>{let e=s.current?.parentElement;return e?.addEventListener(`scroll`,E),()=>e?.removeEventListener(`scroll`,E)},[E]);let D=(0,c.useCallback)(e=>(0,l.jsx)(`div`,{className:`whitespace-pre-wrap break-words`,children:(0,h.linkifyText)(e).map((e,t)=>e.type===`text`?(0,l.jsx)(c.Fragment,{children:e.value},t):(0,l.jsx)(`a`,{href:e.value,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center align-middle`,children:(0,l.jsx)(f.IconExternalLink,{className:`size-4 shrink-0 cursor-pointer text-primary`})},t))}),[]);return(0,l.jsxs)(`div`,{ref:s,className:`flex size-full justify-center`,children:[(0,l.jsxs)(`div`,{className:`chat-messages-wrapper flex w-full flex-col gap-y-6`,children:[e.map((a,o)=>{let s=a.id??o;if(a.errorMessage)return(0,l.jsx)(d.InlineAlert,{type:r?.errorContext?.kind===m.ERROR_CONTEXT_KIND.RATE_LIMIT?d.InlineAlertType.Warning:d.InlineAlertType.Error,children:(0,l.jsx)(`div`,{className:`flex flex-col`,children:D(a.errorMessage)})},s);if(g&&a.role===u.Role.System)return null;let c=o===e.length-1,f=aa(e,o),p=oa(e);return(0,l.jsx)(md,{message:a,previousMessage:f,onAdvancedViewOpen:w,isStreaming:t,isCurrentMessageStreaming:t&&c&&a.role===u.Role.Assistant,showAdvancedView:o===p&&!n,isLastNotUserMessage:c&&a.role!==u.Role.User,...i},s)}),(0,l.jsx)(`div`,{ref:o,className:`h-4`})]}),(0,l.jsx)(`div`,{onClick:C,className:(0,p.default)(`fixed sm:hidden bottom-[88px] rounded-[50%] border-[2px] w-[40px] h-[40px] border-primary cursor-pointer text-primary bg-white z-10`,S?`right-[402px] lg:right-[386px]`:`right-10 lg:right-6`,`scroll-button-wrapper`,b?`block`:`hidden`),children:(0,l.jsx)(`div`,{className:`flex size-full items-center justify-center`,children:a})})]})},gd=({conversationViewState:e,isAgentAvailable:t,statusMessages:n,isStreaming:r,isLastMessageFailed:i,regenerateLastMessage:a,inputMessageStyles:o,askAnythingTitle:s,onSendMessage:c,onStopStreaming:u})=>{if(e?.errorContext?.kind===m.ERROR_CONTEXT_KIND.RATE_LIMIT&&(0,m.isRateLimitStillActive)(e.errorContext)){let t=(0,m.getRateLimitRestoreDate)(e.errorContext);if(t){let e=(0,m.formatDateTime)(t);return(0,l.jsx)(d.InlineAlert,{type:d.InlineAlertType.Info,children:n.getAssistantRestoreMessage(e.date,e.time)})}}return t?(0,l.jsx)(te,{onSendMessage:c,onStopStreaming:u,inProcess:r,sendMessageIcon:o.sendMessageIcon,retryIcon:o.retryIcon,placeholder:s??`Ask anything...`,containerClasses:`mt-4`,inputClasses:`border-neutrals-600 mr-2`,isLastFailed:i,onRetryFailed:a}):(0,l.jsx)(d.InlineAlert,{type:d.InlineAlertType.Error,children:n.assistantUnavailable})},_d=({conversation:e,locale:t,titles:n,messageStyles:r,attachmentsStyles:i,inputMessageStyles:a,formattingSettings:o,metadataSettings:s,messageActionsIcons:c,messageActionsTitles:u,editMessageTitles:m,expandStagesIcon:h,scrollBottomIcon:g,limitMessages:_,attachmentsConfig:v,shareConversationProps:y,showConversationHeaderAdvancedView:b=!0,headerRightSlot:x,dataQuery:S,isFinalMessage:C,children:w,isReadonlyConversation:T,isStreaming:E,isOpenedAdvancedView:D,isShowOnboarding:O,isAgentAvailable:k,statusMessages:A,conversationViewState:j,messageServerActions:M,sendMessageToConversation:N,regenerateMessage:P,editMessage:F,onStopStreaming:I,isLastMessageFailed:L,regenerateLastMessage:R,rateResponse:z,handleCodeAttachmentUpdated:B,duplicateConversation:V,handleOpeningOfNewConversation:H})=>(0,l.jsx)(ce,{styles:{titles:n,messageStyles:r,attachmentsStyles:i,formattingSettings:o,messageActionsIcons:c,messageActionsTitles:u,editMessageTitles:m,expandStagesIcon:h,scrollBottomIcon:g,limitMessages:_,attachmentsConfig:v},children:(0,l.jsxs)(`div`,{className:(0,p.default)(`h-full flex flex-col bg-white conversation-view-wrapper`,D&&!b&&`p-4`),children:[D&&!b?null:(0,l.jsx)(He,{conversation:e,locale:t,isOpenedAdvancedView:D,isShowShareButton:!T&&!O,shareConversationProps:y,rightSlot:x}),(0,l.jsxs)(`div`,{className:`flex min-h-0 w-full min-w-0 flex-1`,children:[(0,l.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,children:[(0,l.jsx)(`div`,{className:(0,p.default)(`flex-1 min-h-0 flex flex-col items-end scroll-hidden-container`,r?.messagesWrapperClass),children:(0,l.jsx)(hd,{messages:e?.messages||[],actions:M,isStreaming:E,isReadOnly:T,metadataSettings:s,dataQuery:S,locale:t,regenerateMessage:t=>P(t,e),selectMessageToSend:(t,n)=>N(t,e,n),rateResponse:z,editMessage:t=>F(t,e),isReadOnlyConversation:T||O,conversationViewState:j,onCodeAttachmentUpdated:B})}),O?null:T?(0,l.jsx)(`div`,{className:`mt-4 flex items-center justify-center`,children:(0,l.jsx)(d.Button,{iconBefore:(0,l.jsx)(f.IconCopy,{width:20,height:20}),title:n?.duplicate??`Duplicate Chat`,isSmallButton:!0,onClick:V,buttonClassName:(0,p.default)(`text-button-secondary`)})}):(0,l.jsx)(`div`,{className:(0,p.default)(a.inputContainerClass),children:(0,l.jsx)(gd,{conversationViewState:j,isAgentAvailable:k,statusMessages:A,isStreaming:E,isLastMessageFailed:L,regenerateLastMessage:R,inputMessageStyles:a,askAnythingTitle:n?.askAnything,onSendMessage:t=>N(t,e),onStopStreaming:I})}),O&&C&&(0,l.jsx)(d.Button,{iconBefore:(0,l.jsx)(f.IconPlus,{width:24,height:24}),title:n?.onboardingFooterLink,onClick:H,isSmallButton:!0,buttonClassName:`text-button-secondary self-center mb-3`}),w]}),!D&&(0,l.jsx)(ms,{scope:`conversation`})]})]})}),vd=(e,t)=>{let n=e.lastIndexOf(`.`);return n<=0?`${e}-${t}`:`${e.slice(0,n)}-${t}${e.slice(n)}`},yd=(e,t,n)=>{let r=e.split(`/`);if(r[0]!==`files`||r.length<3)return e;let i=vd(r.at(-1)??`file`,n);return[`files`,t,...r.slice(2,-1),i].join(`/`)},bd=async({conversation:e,bucket:t,getFileBlob:n,putFile:r})=>{let i=(0,h.getConversationAttachmentUrls)(e),a=Date.now();if(!i.length)return e;let o=await Promise.all(i.map(async e=>{let i=yd(e,t,`${a}`);return i===e||await r(i,await n(e)),[e,i]}));return(0,h.replaceConversationAttachmentUrls)(e,Object.fromEntries(o))},xd=(e,t,n)=>{let r=`${t}/${n}`,i=(0,m.generateConversationId)({folderId:r,name:e?.name});return{...e,folderId:r,id:i}},Sd=(e,t,n)=>`/${t}${n}/${(0,h.getConversationNavPath)(e?.folderId,e?.id)}`,Cd=({actions:e,conversation:t,locale:n,conversationsRoute:r,openUrl:i,setConversations:a})=>({handleOpeningOfNewConversation:(0,c.useCallback)(()=>{i(`/${n}${r}`)},[n,r,i]),duplicateConversation:(0,c.useCallback)(async()=>{try{let{bucket:o}=await e.getBucket(),s=xd(e.getFileBlob&&e.putFile?await bd({conversation:t,bucket:o,getFileBlob:e.getFileBlob,putFile:e.putFile}):t,o,n);await e.createConversation(s,n),a((0,h.cleanConversationNames)(await e.getConversations(n))),i(Sd(s,n,r))}catch(e){console.error(`Failed to save conversation:`,e)}},[e,t,r,n,i,a])}),wd=`local`,Td=e=>!e.permissions?.includes(u.SharePermission.WRITE)&&!Dd(e),Ed=(e,t)=>Od(e)!==t,Dd=e=>Od(e)===wd,Od=e=>e.id.split(`/`)[0],kd=({conversationKey:e,actions:t,setConversation:n,setCrossDatasetAttachmentsState:r,sendMessageToConversation:i,onConversationNotFound:a})=>{let[o,s]=(0,c.useState)(!1),[l,d]=(0,c.useState)(!0);return(0,c.useEffect)(()=>{gn(),r();async function o(){try{d(!0);let{bucket:r}=await t.getBucket(),a=await t.getConversation(decodeURI(e));n(a),s(Td(a)&&Ed(a,r)),(a.messages.length===0||a?.messages?.[0]?.role===u.Role.Assistant&&a?.messages?.length===1)&&i(a.prompt,a)}catch{s(!0),a?.()}finally{d(!1)}}return e&&o(),()=>{gn()}},[e]),{isLoading:l,isReadonlyConversation:o}},Ad=({actions:e,conversationKey:t})=>(0,c.useCallback)(async n=>{try{await e.updateConversation(decodeURI(t),{name:n.name,messages:n.messages,customViewState:n.customViewState})}catch(e){console.error(`Failed to save conversation:`,e)}},[e,t]),jd=`AbortError`,Md=(e,t)=>{let n=e.customViewState??{},r=n[m.CUSTOM_VIEW_STATE_KEY]??{};return{...e,customViewState:{...n,[m.CUSTOM_VIEW_STATE_KEY]:{...r,errorContext:t}}}},Nd=({error:e,statusMessages:t})=>{if(e){if(e.type===m.DIAL_ERROR_TYPES.RATE_LIMIT_EXCEEDED){let n=e.exceeded_limit?.length?t.getExceededLimitsMessage(e.exceeded_limit):e.display_message??``;throw new h.HttpError({message:e.message,displayMessage:n,code:e.type,status:e.status??h.HTTP_ERROR_CODES.TOO_MANY_REQUESTS,details:{kind:m.ERROR_CONTEXT_KIND.RATE_LIMIT,occurredAt:new Date().toISOString(),retryAfterSeconds:Number(e.retry_after??``)}})}throw new h.HttpError({message:e.message,status:e.status??h.HTTP_ERROR_CODES.BAD_REQUEST,code:e.code})}},Pd=({error:e,statusMessages:t})=>{if(e.code===m.DIAL_ERROR_TYPES.RATE_LIMIT_EXCEEDED){let t=e;return{errorMessage:t.displayMessage??t.message,errorContext:t.details}}return e.code===m.DIAL_ERROR_CODES.CONTENT_FILTER?{errorMessage:t.contentFilterError??e.message}:{errorMessage:e.status===h.HTTP_ERROR_CODES.SERVICE_UNAVAILABLE?t.serverOverloaded:t.serverError}},Fd=e=>{let 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},Id=()=>{try{return Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`}catch{return`UTC`}},Ld=(e,t)=>Rd([...t?.messages||[],e]),Rd=e=>[...e].map(e=>{let t={role:e.role,content:e.content};return(e.role===u.Role.Assistant||e.role===u.Role.System)&&e.custom_content!=null&&(e.custom_content.state!=null||e.custom_content.attachments!=null||e.custom_content.form_schema!=null)&&(t.custom_content={},e.custom_content.state!=null&&(t.custom_content.state=e.custom_content.state),e.custom_content.attachments!=null&&(t.custom_content.attachments=Vd(e.custom_content.attachments)),e.custom_content.form_schema!=null&&(t.custom_content.form_schema=e.custom_content.form_schema)),e.role===u.Role.User&&e.custom_content&&(t.custom_content=e.custom_content),t}),zd=(e,t)=>{let n=t?.messages,r=n?.findIndex(t=>e.id===t.id);return Rd(n?.slice(0,r)||[])},Bd=(e,t)=>{let n=t?.messages,r=n?.findIndex(t=>e.id===t.id);return Rd([...n?.slice(0,r)||[],e])};function Vd(e){return e.map(e=>({type:e.type,title:e.title,data:e.data,url:e.url,reference_type:e.reference_type,reference_url:e.reference_url}))}var Hd=(e,t,n,r)=>{if(!n||t)return null;let i={id:`msg-${Date.now()}`,role:u.Role.User,content:e,timestamp:Date.now()};return r&&(i.custom_content={form_value:{[r===q.COMPLETE?K.COMPLETION:K.CHOICE]:r}}),i},Ud=e=>e?.name===jd,Wd=({conversation:e,setConversation:t,saveConversation:n,updateAssistantMessage:r,addUserMessageToConversation:i,initializeAssistantMessage:a,isStreaming:o,setIsStreaming:s,statusMessages:l,isCrossDatasetModeOn:u,token:d,handleInvalidStreaming:f})=>{let[p,g]=(0,c.useState)(null),_=(0,c.useCallback)((e,t)=>{let n=l.serverError,i,a;if((0,h.isHttpError)(e)){a=e;let t=Pd({error:e,statusMessages:l});n=t.errorMessage,i=t.errorContext}else a=new h.HttpError({status:h.HTTP_ERROR_CODES.INTERNAL_SERVER_ERROR,message:n});return t&&=r(t,{errorMessage:n}),f?.(a),{assistantMessage:t,errorContext:i}},[f,l,r]),v=(0,c.useCallback)(async(e,t,n)=>{let i=new AbortController;g(i);let a=e,o;if(!n)return{assistantMessage:a,errorContext:o};let s=n.custom_fields??{},c={...s,configuration:{...s.configuration,timezone:Id(),...u&&{merge_python_code:!0}}};return await(0,m.streamChatResponse)?.(encodeURI(n.id),t,{model:n.model,signal:i?.signal,onMessage:e=>{Nd({error:e.error,statusMessages:l});let t=Fd(e);(t.content||t.role||t.responseId)&&(a=r(a,t))},onError:e=>{if(!Ud(e))throw console.error(`Streaming error:`,e),e}},d,c).catch(e=>{if(!Ud(e)){let{assistantMessage:t,errorContext:n}=_(e,a);a=t,o=n}}),{assistantMessage:a,errorContext:o}},[d,r,_,l,u]),y=(0,c.useCallback)(async(e,t,r,i)=>{if(!t)return;let a=Md(t,i);a={...a,messages:[...t.messages],updatedAt:Date.now()},r&&a.messages.push(r),a.messages.push(e),await n(a)},[n]),b=(0,c.useCallback)(e=>{t(t=>t&&Md(t,e))},[t]),x=(0,c.useCallback)((e,n)=>{t(e=>e?{...e,messages:e.messages.filter(e=>e.id!==n.id)}:null)},[t]),S=(0,c.useCallback)(()=>{p&&!p.signal.aborted&&p.abort()},[p]),C=(0,c.useCallback)(async(e,t,n,r,i,a=!0)=>{Ud(i)?await y(r??n,e,a?t:void 0):x(i,t)},[y,x]),w=(0,c.useCallback)(async(e,t,n)=>{if(!t||!e)return;let r=Hd(e,o,t,n),c,l;if(r){i(r);try{s(!0),c=a();let e=Ld(r,t),{assistantMessage:n,errorContext:i}=await v(c,e,t);b(i),l=n,await y(l,t,r,i)}catch(e){C(t,r,c,l,e)}finally{s(!1)}}},[o,s,i,a,v,y,C,b]),T=(0,c.useCallback)(async(e,t,n)=>{let r,i;try{s(!0),r=a();let{assistantMessage:n,errorContext:o}=await v(r,e,t);i=n,b(o),await y(i,t,void 0,o)}catch(e){C(t,n,r,i,e,!1)}finally{s(!1)}},[s,y,C,v,a,b]),E=(0,c.useCallback)(async(e,n)=>{if(!n||!e)return;let r=zd(e,n),i={...n,messages:n.messages.slice(0,r.length)};t(e=>e?{...e,...i}:null),T(r,i,e)},[t,T]),D=(0,c.useCallback)(async(e,n)=>{if(!n||!e)return;let r=Bd(e,n),i={...n,messages:[...n.messages.slice(0,r.length-1),e]};t(e=>e?{...e,...i}:null),T(r,i,e)},[t,T]),{isLastMessageFailed:O,regenerateLastMessage:k}=(0,c.useMemo)(()=>{let t=e?.messages?.at(-1);return{isLastMessageFailed:!!t?.errorMessage,regenerateLastMessage:t&&(()=>E(t,e))}},[e,E]);return{sendMessageToConversation:w,regenerateMessage:E,editMessage:D,onStopStreaming:S,isLastMessageFailed:O,regenerateLastMessage:k}},Gd=({actions:e,conversation:t,setConversation:n,saveConversation:r})=>({handleCodeAttachmentUpdated:(0,c.useCallback)((e,i)=>{if(!t)return;let a=Mu(t.messages,i,e);if(!a)return;let o={...t,messages:a};n(o),r(o)},[t,n,r]),rateResponse:(0,c.useCallback)((n,i)=>{t?.model?.id&&(e.rateResponse(n,i===u.LikeState.Liked,t.model.id),t.messages=t.messages.map(e=>e.responseId===n?(0,E.merge)(e,{like:i}):e),r(t))},[e,t,r])}),Kd=({setConversation:e})=>({addUserMessageToConversation:(0,c.useCallback)(t=>{e(e=>e?{...e,messages:[...e?.messages||[],t]}:null)},[e]),initializeAssistantMessage:(0,c.useCallback)(()=>{let t={id:`msg-${Date.now()+1}`,role:u.Role.Assistant,content:``,timestamp:Date.now()};return e(e=>e?{...e,messages:[...e.messages,t]}:null),t},[e]),updateAssistantMessage:(0,c.useCallback)((t,n)=>{let r=m.mergeMessages?.(t,[n]);if(r)return e(e=>e?{...e,messages:e.messages.map(e=>e.id===t.id?{...r}:e)}:null),r},[e])}),qd=({actions:e})=>{let{isOpenedAdvancedView:t}=I(),{onboardingFileSchema:n,onboardingFilePath:r,onboardingFileName:i,setOnboardingFileSchema:a}=G();(0,c.useEffect)(()=>{n&&e.putOnboardingFile?.(i,r,n)},[e,n,i,r]),(0,c.useEffect)(()=>{t&&n?.lastDisplayedElement===X.OPEN_ADVANCED_VIEW&&a?.(rt(n))},[e,t,a,n])},Jd=e=>{let{conversationKey:t,conversation:n,actions:r,locale:i,conversationsRoute:a,token:o,handleInvalidStreaming:s,onConversationNotFound:l,setConversation:u,setConversations:f,openUrl:p}=e,{isStreaming:h,setIsStreaming:g}=z(),{isOpenedAdvancedView:_}=I(),{setCrossDatasetAttachmentsState:v}=td(),{isCrossDatasetModeOn:y}=Z(),{isAgentAvailable:b}=(0,d.useAgentAvailability)(),{statusMessages:x}=H(),{isShowOnboarding:S}=G();qd({actions:r});let C=Ad({actions:r,conversationKey:t}),{addUserMessageToConversation:w,initializeAssistantMessage:T,updateAssistantMessage:E}=Kd({setConversation:u}),{sendMessageToConversation:D,regenerateMessage:O,editMessage:k,onStopStreaming:A,isLastMessageFailed:j,regenerateLastMessage:M}=Wd({conversation:n,setConversation:u,saveConversation:C,updateAssistantMessage:E,addUserMessageToConversation:w,initializeAssistantMessage:T,isStreaming:h,setIsStreaming:g,statusMessages:x,isCrossDatasetModeOn:y,token:o,handleInvalidStreaming:s}),{rateResponse:N,handleCodeAttachmentUpdated:P}=Gd({actions:r,conversation:n,setConversation:u,saveConversation:C}),{duplicateConversation:F,handleOpeningOfNewConversation:L}=Cd({actions:r,conversation:n,locale:i,conversationsRoute:a,openUrl:p,setConversations:f}),{isLoading:R,isReadonlyConversation:B}=kd({conversationKey:t,actions:r,setConversation:u,setCrossDatasetAttachmentsState:v,sendMessageToConversation:D,onConversationNotFound:l}),V=(0,c.useMemo)(()=>({getFile:r.getFile,putOnboardingFile:r.putOnboardingFile,getDataSet:r.getDataSet,getDataSetData:r.getDataSetData,getConstraints:r.getConstraints,updateCurrentDataQuery:r.updateCurrentDataQuery,updateDataQueries:r.updateDataQueries,updateDatasets:r.updateDatasets,downloadDataSet:r.downloadDataSet}),[r]);return{isLoading:R,isReadonlyConversation:B,isStreaming:h,isOpenedAdvancedView:_,isShowOnboarding:S,isAgentAvailable:b,statusMessages:x,conversationViewState:n?.customViewState?.[m.CUSTOM_VIEW_STATE_KEY],messageServerActions:V,sendMessageToConversation:D,regenerateMessage:O,editMessage:k,onStopStreaming:A,isLastMessageFailed:j,regenerateLastMessage:M,rateResponse:N,handleCodeAttachmentUpdated:P,duplicateConversation:F,handleOpeningOfNewConversation:L}},Yd=e=>{let t=Jd(e);return t.isLoading?(0,l.jsx)(d.Loader,{}):(0,l.jsx)(_d,{...e,...t})},Xd=({conversationName:e,expandTitle:t,expandIcon:n,onExpand:r})=>(0,l.jsxs)(`div`,{className:`flex h-full w-[51px] shrink-0 flex-col items-center border border-neutrals-400 bg-white`,children:[(0,l.jsx)(`button`,{type:`button`,className:`mt-[84px] flex size-9 items-center justify-center text-primary`,"aria-label":t,title:t,onClick:r,children:n}),(0,l.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col items-center overflow-hidden pb-[88px] pt-[72px]`,children:(0,l.jsx)(`span`,{className:`h3 min-h-0 flex-1 rotate-180 truncate text-center text-neutrals-1000 [writing-mode:vertical-rl]`,title:e,children:e})})]});exports.AdvancedView=nd,exports.AdvancedViewProvider=F,exports.AttachmentRenderer=Zc,exports.CUSTOM_CHOICE_ID=q,exports.ChartingIcon=J,exports.ChatFooter=qe,exports.ChatMessagesProvider=R,exports.ChatOnboardingFooter=Ke,exports.CollapsedChatPanel=Xd,exports.ConversationView=Yd,exports.ConversationViewFeatureTogglesProvider=Xt,exports.ConversationViewMessagesProvider=V,exports.ConversationViewSidePanelProvider=ds,exports.ConversationViewStylesProvider=ce,exports.ConversationWelcome=Je,exports.CrossDatasetAttachmentsProvider=ed,exports.CrossDatasetGridAttachment=Gc,exports.CrossDatasetGridViewMode=uc,exports.CustomChartAttachment=Qs,exports.CustomContentProperties=K,exports.CustomDataGridAttachment=js,exports.DatasetDimensionsMetadataMapProvider=vs,exports.OnboardingProvider=W,exports.STAGE_STATUS=ee,exports.buildCrossDatasetChartingData=Ju,exports.buildCrossDatasetGridContent=Ku,exports.isChartingDataPlottable=cu,exports.useAdvancedView=I,exports.useChatMessages=z,exports.useConversationViewFeatureToggles=Z,exports.useConversationViewMessages=H,exports.useConversationViewSidePanelOptional=ps,exports.useConversationViewStyles=Y,exports.useCrossDatasetAttachments=td,exports.useDatasetDimensionsMetadataMap=ys,exports.useDatasetDimensionsMetadataMapOptional=bs,exports.useOnboarding=G;
11
+ `),language:r}}var wu=[`python`];function Tu(e,t,n){return e.filter(e=>e.type===m.AttachmentType.MARKDOWN).filter(e=>!t||e.title?.includes(t)).map(e=>{let t=Cu(e.data??``);return{title:n??`Code samples`,type:m.AttachmentType.CUSTOM_CODE_SAMPLE,language:t.language,data:t.code}}).filter(e=>wu.includes(e.language??``))}function Eu(e,t){return e?.find(e=>e.type===m.AttachmentType.MARKDOWN&&e.data?.includes("```python")&&e.title?.includes(t.urn))?.title??t.urn}function Du(e){let{getPythonAttachment:t,dataQueries:n,requestIdRef:r,codeTitle:i,markdownTitle:a,datasetUrn:o,setCodeAttachments:s,onCodeAttachmentUpdated:c}=e,l=++r.current;t(n).then(e=>{l===r.current&&e?.python_code&&(s([{type:m.AttachmentType.CUSTOM_CODE_SAMPLE,data:e.python_code,language:`python`,title:i}]),c?.({type:m.AttachmentType.MARKDOWN,title:a,data:`\`\`\`python\n${e.python_code}\n\`\`\``},o))}).catch(e=>console.error(`Error refreshing python attachment:`,e))}var Ou=e=>({title:e||`Data Grid`,type:m.AttachmentType.CUSTOM_DATA_GRID}),ku=e=>({title:e||`Chart`,type:m.AttachmentType.CUSTOM_CHART}),Au=e=>({title:e||`Data`,type:m.AttachmentType.CROSS_DATASET_GRID});function ju(e,t,n,r,i,a,o,s,l,u=!1,d,f=!1){let[p,m]=(0,c.useState)(),[h,g]=(0,c.useState)(),[_,v]=(0,c.useState)(),[y,x]=(0,c.useState)(),[S,C]=(0,c.useState)(Ou(o?.dataGrid)),[w,T]=(0,c.useState)(ku(o?.chart)),[E,D]=(0,c.useState)(!1),[O,k]=(0,c.useState)([]),[A,j]=(0,c.useState)([]),[M,N]=(0,c.useState)([]),[P,F]=(0,c.useState)(!1),[I,L]=(0,c.useState)(!1),R=(0,c.useRef)(0),[z,B]=(0,c.useState)({startPeriod:null,endPeriod:null}),{getConstraints:V,getDataSet:H,getDataSetData:U,putOnboardingFile:W,getPythonAttachment:G}=e,K=(0,c.useCallback)(e=>{if(!e)return;let t=(0,b.getDimensions)(e);g(e.dataflows?.[0]||void 0),x(e||void 0),j([...t?.dimensions||[],...t?.timeDimensions||[]])},[]),q=(0,c.useCallback)(async e=>{let t=ln((0,b.getFiltersDtoFromDataQuery)(e));try{v((await mn(V,pn(e.urn,t),()=>V(e.urn,t)))?.data?.dataConstraints||[])}catch{v([])}},[V]),ee=(0,c.useCallback)(async e=>{let t=l?{data:l}:await mn(H,pn(e.urn),()=>H(e.urn));if(t?.data){let n=(0,b.getDimensions)(t.data);K(t.data);let r=n?.dimensions==null?null:(0,b.getTimeSeriesFilterKey)(n?.dimensions,e.filters??[]),i=vn(e,n);mn(U,pn(e.urn,{filterKey:r,timeFilter:i}),()=>U(e.urn,{filterKey:r,timeFilter:i})).then(e=>{L(!0),m(e||void 0),N((0,b.getStructureDimensions)(e))}).finally(()=>F(!1))}},[K,H,U,l]);(0,c.useEffect)(()=>{K(l)},[K,l]),(0,c.useEffect)(()=>{async function e(e){F(!0);try{await Promise.all([...f?[]:[q(e)],ee(e)])}catch(e){console.error(`Error loading dataset details`,e)}}n!=null&&!(u&&!l)?e(n):n!=null&&u&&F(!0)},[n,l,u,q,ee,f]);let J=(0,c.useCallback)((e,t,r)=>{try{F(!0),v(t);let i=r?.find(e=>e.id===b.TIME_PERIOD)?.timeRange;i&&B(i),mn(U,pn(n?.urn||``,e),()=>U(n?.urn||``,e)).then(e=>{L(!0),m(e||void 0),N((0,b.getStructureDimensions)(e))}).finally(()=>F(!1)),G&&n&&r&&Du({getPythonAttachment:G,dataQueries:[Tn(n,r,!1)],requestIdRef:R,codeTitle:o?.codeSamples||`Python Code`,markdownTitle:Eu(s,n),setCodeAttachments:k,onCodeAttachmentUpdated:d,datasetUrn:n.urn})}catch(e){console.error(`Error loading dataset data`,e)}},[n,U,G,o,s,d]);(0,c.useEffect)(()=>{if(y!=null&&p!=null&&_?.length){L(!0);let e=Ms(()=>{C(e=>({...e,...Su(y,p,n,t,r,a,i,o,W,_,z)})),L(!1)});return()=>{e(),L(!1)}}(p==null||_!==void 0)&&L(!1)},[y,p,o,t,r,n,a,i,_,z,W]),(0,c.useEffect)(()=>{if(y==null||p==null)return;let e=uu(y,p,n,t,i);return T(t=>({...t,charting_data:void 0,getChartingData:e})),D(!1),Ms(()=>{try{D(cu(e()))}catch(e){console.error(`Error evaluating chart plottability`,e),D(!1)}})},[y,p,n,t,i]),(0,c.useEffect)(()=>{if(s?.length){let e=Tu(s,n?.urn,o?.codeSamples);e.length>0&&k(e)}},[s,o,n]);let te=(0,c.useMemo)(()=>[S,...E?[w]:[],...O],[S,w,O,E]);return{dataMessage:p,structures:y,dataset:h,dimensions:A,structureDimensions:M,onFiltersChange:J,constraints:_,isLoadingGridData:P||I,dataSetAttachments:te}}function Mu(e,t,n,r){let i=-1;if(n)i=e.findIndex(e=>e.id===n);else for(let t=e.length-1;t>=0;t--)if(e[t].role===u.Role.System){i=t;break}if(i===-1||e[i].role!==u.Role.System)return null;let a=e[i].custom_content?.attachments??[],o=e=>e.type===`text/markdown`&&e.data?.includes("```python"),s=[...a.filter(e=>o(e)?r?!e.title?.includes(r):!1:!0),t];return e.map((e,t)=>t===i?{...e,custom_content:{...e.custom_content,attachments:s}}:e)}var Nu=async(e,t)=>{let n=new Map,r=(0,b.getFiltersDtoMapFromDataQuery)(e);return(await Promise.allSettled(e.map(async e=>{let n=ln(r?.get(e.urn)||[]);return{urn:e.urn,response:await mn(t,pn(e.urn,n),()=>t(e.urn,n))}}))).forEach(e=>{if(e.status===`fulfilled`){let t=e.value.response?.data?.dataConstraints;Array.isArray(t)&&n.set(e.value.urn,t)}}),n},Pu=()=>({datasetsMap:new Map,dataMessagesMap:new Map,structuresMap:new Map,dimensionsMap:new Map,structureDimensionsMap:new Map}),Fu=async(e,t,n,r,i)=>{let a=Pu();await Promise.allSettled(e.map(async e=>{let n=await mn(t,pn(e.urn),()=>t(e.urn));if(n?.data){let t=(0,b.getDimensions)(n.data);a.datasetsMap?.set(e?.urn,n?.data?.dataflows?.[0]),a.structuresMap?.set(e?.urn,n?.data),a.dimensionsMap?.set(e?.urn,[...t?.dimensions||[],...t?.timeDimensions||[]])}}));let o=await i?.(a);return await Promise.allSettled(e.map(async e=>{let t=a.structuresMap?.get(e.urn);if(!t||o&&!o.has(e.urn))return;let i=(0,b.getDimensions)(t),s=i?.dimensions==null?null:(0,b.getTimeSeriesFilterKey)(i?.dimensions,e.filters??[]),c=vn(e,i);await Iu(e,o?.get(e.urn)??{filterKey:s,timeFilter:c},n).then(({dataMessage:t,structureDimensions:n})=>{a?.dataMessagesMap?.set(e.urn,t),a?.structureDimensionsMap?.set(e.urn,n||[])}).catch(()=>{a?.structureDimensionsMap?.set(e.urn,[])}).finally(()=>r(!1))})),a},Iu=async(e,t,n)=>{let r=await mn(n,pn(e.urn,t),()=>n(e.urn,t));return{dataMessage:r,structureDimensions:(0,b.getStructureDimensions)(r)}};function Lu(e,t,n,r){return[zu(e,r),Ru(e,t,n,r)]}function Ru(e,t,n,r){return{headerName:r?.dataset||`Dataset`,field:ec,colId:ec,valueGetter:t=>{let r=t.data?.dataset?.urn;if(r==null)return``;let i=e.get(r)?.dataflows?.[0];return(0,b.getLocalizedName)(i,n)||``},...oo,tooltipValueGetter:e=>e.value,cellClass:ao,cellRenderer:fo,cellRendererParams:{structuresMap:e,attributesDataMap:t,locale:n,titles:r}}}function zu(e,t){return{headerName:t?.agency||`Agency`,field:tc,colId:tc,valueGetter:t=>{let n=t.data?.dataset?.urn;return n==null?``:e.get(n)?.dataflows?.[0]?.agencyID||``},...oo,tooltipValueGetter:e=>e.value}}function Bu(e,t,n,r,i){return Vu(e).sort((e,t)=>(0,b.sortPeriods)(e,t)).map(e=>({...Hu(e,r,i),valueGetter:e=>e.data[e.column.getColId()]?.value?.[0]?.value||null,cellClass:ao,cellRenderer:so,width:200,cellRendererParams:{structuresMap:t,locale:n,titles:i}}))}function Vu(e){let t=new Set;return e.forEach(e=>{e!=null&&(0,b.getTimePeriods)(e).forEach(e=>t.add(e))}),Array.from(t)}function Hu(e,t=h.defaultFormatNumbers,n){return{headerName:xt(e,n),colId:e,field:e,type:`numericColumn`,suppressColumnsToolPanel:!0,sortable:!1,width:200,cellClass:[`justify-end`,`cell-with-meta`],valueFormatter:e=>(0,h.formatNumberBySign)(e.value,t)}}function Uu(e,t,n,r,i,a,o=uc.Compact){let s=new Map([...n.entries()].map(([e,t])=>[e,t?.data])),c=Lu(e,s,r,i),l=vc(e,t,r,i,o),u=Bu(n,e,r,a,i);return[_o(e,s,r,i),...c,...l,...u,ho(void 0,void 0,r,void 0,i)]}function Wu(e,t,n,r,i){let a=[];return n.filter(e=>!e.disabled).forEach(n=>{let o=n.urn,s=t.get(o),c=e.get(o);if(s==null||c==null)return;let l=yu(s,c,n,r,i),u=(0,b.getLocalizedName)(c.dataflows?.[0],r);a.push(...l.map(e=>({...e,dataset:{urn:o},datasetTitle:u})))}),a}function Gu(e,t,n,r,i,a,o,s,c,l,u,d=uc.Compact){let f=Ku(e,t,n,r,i,a,o,s,c,l,u,d);return{title:c?.dataGrid||`Data`,gridContent:f}}function Ku(e,t,n,r,i,a,o,s,c,l,u,d=uc.Compact){return{columns:Uu(e,n,t,i,c,a,d),data:Wu(e,t,r,i,s)}}function qu(e,t,n,r,i){let a;return()=>(a??=Ju(e,t,n,r,i),a)}function Ju(e,t,n,r,i){let a=n.filter(e=>!e.disabled).flatMap(n=>{let a=e.get(n.urn),o=t.get(n.urn);return!a||!o?[]:[{title:(0,b.getLocalizedName)(a.dataflows?.[0],r),units:lu(a,o,n,r,i).units}]});return{units:a.flatMap(e=>e.units),groups:a}}var Yu=5e3;function Xu(e,t,n,r,i,a,o,s,l,u=uc.Compact,d){let f=Array.isArray(s)?s:void 0,[p,m]=(0,c.useState)(),[h,g]=(0,c.useState)(),[_,v]=(0,c.useState)(!1),[y,b]=(0,c.useState)(f?new Set(f):null),[x,S]=(0,c.useState)(!1),C=(0,c.useRef)(0),w=(0,c.useRef)(u),T=(0,c.useRef)(p),E=(0,c.useRef)(0),D=(0,c.useRef)(null),[O,k]=(0,c.useState)(Au(d?.dataGrid)),[A,j]=(0,c.useState)(ku(d?.chart)),[M,N]=(0,c.useState)(!1),[P,F]=(0,c.useState)([]),{getConstraints:I,getDataSet:L,getDataSetData:R,getPythonAttachment:z}=e,B=(0,c.useRef)(n);B.current=n;let V=(0,c.useRef)(f);V.current=f;let H=(0,c.useMemo)(()=>n?.map(e=>e.urn).join(`,`)??``,[n]),U=ys(),{getDimensionsScheme:W}=U,G=(0,c.useCallback)(async e=>{try{let t=await Nu(e.map(e=>({...e,filters:[]})),I),n=yr(e,t,U.map),r=n===e?t:await Nu(n,I);return m(e=>({...e,constraintsMap:r})),r}catch{let e=new Map;return m(t=>({...t,constraintsMap:e})),e}},[U.map,I]),K=(0,c.useCallback)(async(e,n)=>{let r=await Fu(e,L,R,v,async r=>{let i=Pr(e.filter(e=>!e.disabled),r,n,t,U.map);if(i)return b(i.compatibleUrns),i.filterParamsMap});m(e=>({...e,...r,constraintsMap:n??e?.constraintsMap}))},[U.map,L,R,t]),q=(0,c.useCallback)(e=>{let t=new Map;for(let n of e)t.set(n.urn,W(n.urn));g(t)},[W]);(0,c.useEffect)(()=>{async function e(e){let t=V.current;b(t?new Set(t):null),v(!0);try{q(e),await K(e,await G(e))}catch(e){console.error(`Error loading dataset details`,e)}finally{v(!1)}}let t=B.current;t?.length&&e(t)},[H,G,q,K]),(0,c.useEffect)(()=>{if(o?.length){let e=Tu(o,void 0,d?.codeSamples);e.length>0&&F(e)}},[o,d]),(0,c.useEffect)(()=>()=>{D.current!==null&&clearTimeout(D.current)},[]),(0,c.useEffect)(()=>{let e=w.current!==u&&T.current===p;w.current=u,T.current=p;let{structuresMap:o,dataMessagesMap:s,constraintsMap:c}=p??{};if(o!=null&&o.size>0&&s!=null&&c!=null&&h!=null&&!_){e||S(!0);let l=Ms(()=>{let l=n?.filter(e=>!e.disabled),f=y??new Set((l??[]).map(e=>e.urn)),p=hr(l,f),m=gr(o,f),g=gr(s,f),_=gr(h,f);k(e=>({...e,...Gu(m,g,_,p,t,i,a,r,d,c,{startPeriod:null,endPeriod:null},u)})),e||S(!1)});return()=>{l(),e||S(!1)}}e||S(!1)},[p,n,t,i,a,r,d,h,_,y,u]),(0,c.useEffect)(()=>{let{structuresMap:e,dataMessagesMap:i}=p??{};if(e!=null&&e.size>0&&i!=null&&!_){let a=n?.filter(e=>!e.disabled),o=y??new Set((a??[]).map(e=>e.urn)),s=hr(a,o),c=qu(gr(e,o),gr(i,o),s,t,r);return j(e=>({...e,charting_data:void 0,getChartingData:c})),N(!1),Ms(()=>{try{N(cu(c()))}catch(e){console.error(`Error evaluating cross-dataset chart plottability`,e),N(!1)}})}},[p,n,t,r,_,y]);let ee=(0,c.useMemo)(()=>[O,...M?[A]:[],...P],[O,A,P,M]),J=(0,c.useCallback)((e,n,r,i,a)=>{try{v(!0);let o=++E.current;D.current!==null&&(clearTimeout(D.current),D.current=null);let s=r?.filter(e=>!e.disabled)??[];if(b(new Set(s.map(e=>e.urn))),m(e=>({...e,constraintsMap:n})),!s.length){v(!1);return}let c=i?Fr(s,i):void 0,u=c?s.map(e=>({...e,filters:c.get(e.urn)??[]})):s,f=(n&&p?Pr(u,p,n,t,U.map):void 0)?.filterParamsMap??e,h=new Map,g=()=>{if(h.size===0)return;S(!0);let e=[...h.values()];h.clear(),m(t=>{let n=new Map(t?.dataMessagesMap),r=new Map(t?.structureDimensionsMap);return e.forEach(({urn:e,dataMessage:t,structureDimensions:i})=>{n.set(e,t),r.set(e,i||[])}),{...t,dataMessagesMap:n,structureDimensionsMap:r}})};D.current=setTimeout(()=>{D.current=null,o===E.current&&h.size>0&&(g(),v(!1))},Yu);let _=s.map(e=>Iu(e,f?.get(e?.urn),R).then(({dataMessage:t,structureDimensions:n})=>{h.set(e.urn,{urn:e.urn,dataMessage:t,structureDimensions:n})}));Promise.allSettled(_).finally(()=>{o===E.current&&(D.current!==null&&(clearTimeout(D.current),D.current=null),g(),v(!1))}),z&&s.length&&Du({getPythonAttachment:z,dataQueries:s.map(e=>Tn(e,a??i?.get(e.urn)??[])),requestIdRef:C,codeTitle:d?.codeSamples||`Python Code`,markdownTitle:`Python Code`,setCodeAttachments:F,onCodeAttachmentUpdated:l})}catch(e){console.error(`Error loading dataset data`,e)}},[U.map,R,z,t,l,p,d]);return{structureDataMaps:p,datasetDimensionsSchemesMap:h,isLoadingGridData:_||x,crossDatasetAttachments:ee,activeDatasetUrns:y,onMultipleDataFiltersChange:J}}var Zu=(0,c.createContext)(void 0),Qu={setCrossDatasetAttachmentsState:()=>void 0},$u=e=>{if(!e)return``;try{return JSON.stringify({dataQueriesKey:e.dataQueriesKey,activeDatasetUrns:e.activeDatasetUrns,isLoading:!!e.isLoading,attachments:e.attachments})}catch{return JSON.stringify({dataQueriesKey:e.dataQueriesKey,activeDatasetUrns:e.activeDatasetUrns,isLoading:!!e.isLoading,attachmentsLength:e.attachments?.length??0})}},ed=({children:e})=>{let[t,n]=(0,c.useState)({}),r=(0,c.useCallback)(e=>{let t=$u(e);n(n=>n.signature===t?n:{...e,isLoading:!!e?.isLoading,signature:t})},[]),i=(0,c.useMemo)(()=>({...t,setCrossDatasetAttachmentsState:r}),[r,t]);return(0,l.jsx)(Zu.Provider,{value:i,children:e})},td=()=>{let e=(0,c.useContext)(Zu);return e===void 0?Qu:e},nd=({attachmentsProps:e,actions:t,titles:n,shareConversationProps:r,metadataSettings:i,formattingSettings:a,locale:o,advanceViewStyles:s,getDatasetUpdatedTime:u,attachmentsConfig:f,datasetInfoOptions:m,limitMessages:h,...g})=>{let _=(0,c.useMemo)(()=>e.currentDataQuery?.urn??e.dataQueries?.[0]?.urn??`default`,[e.currentDataQuery?.urn,e.dataQueries]),v=(0,c.useMemo)(()=>e?.dataQueries?.filter(e=>!e.disabled),[e?.dataQueries]),[y,b]=(0,c.useState)(uc.Compact),{isOpenedAdvancedView:x}=I(),{activeDatasetUrns:S,dataQueriesKey:C,setCrossDatasetAttachmentsState:w}=td(),{isCrossDatasetModeOn:T,isMetadataInSidePanel:E}=Z(),D=ys(),O=!E,k=e.datasets??[],A=k.length>1&&!T,j=(0,c.useMemo)(()=>{let e=g.filtersProps.conversation?.messages??[],t=oa(e);return t>=0?e[t].custom_content?.attachments:void 0},[g.filtersProps.conversation?.messages]),M=(0,c.useMemo)(()=>br(e.dataQueries),[e.dataQueries]),N=C===M?S:_r(e.dataQueries,D.map),P=T&&!!e.dataQueries?.length,F=(0,c.useRef)(g.filtersProps.conversation);F.current=g.filtersProps.conversation;let L=(0,c.useCallback)((e,t)=>{let n=F.current;if(!n)return;let r=Mu(n.messages,e,void 0,t);if(!r)return;let i={...n,messages:r};g.filtersProps.setConversation?.(i),g.filtersProps.updateConversation(decodeURI(g.filtersProps.conversationKey),{name:i.name,messages:i.messages})},[]),{dataMessage:R,dataset:z,dimensions:B,structureDimensions:V,structures:H,dataSetAttachments:U,onFiltersChange:W,isLoadingGridData:G,constraints:K}=ju(t,o,e.currentDataQuery,a,e.styles?.chartingStyles,i,n,j,void 0,!1,L,P),q=O&&!!z,{structureDataMaps:ee,crossDatasetAttachments:J,activeDatasetUrns:te,isLoadingGridData:ne,onMultipleDataFiltersChange:re}=Xu(t,o,e.dataQueries,e.styles?.chartingStyles,a,i,j,N,L,y,n);(0,c.useEffect)(()=>{if(!T||!e.dataQueries?.length){w();return}ee&&w({attachments:J,dataQueriesKey:M,activeDatasetUrns:te?Array.from(te):void 0,isLoading:ne})},[te,e.dataQueries?.length,J,M,T,ne,w,ee]);let[ie,ae]=(0,c.useState)({filterKey:null,timeFilter:null}),[oe,se]=(0,c.useState)(),Y=T?ne:G,le=T?J:U,ue=(0,c.useCallback)((e,t,n)=>{ae(e),se(!0),W(e,t,n)},[W]),de=(0,c.useCallback)((e,t,n,r,i)=>{se(!0),re(e,t,n,r,i)},[re]),fe=(0,c.useCallback)(n=>{n&&t?.updateCurrentDataQuery(e?.dataQueries?.find(e=>e?.urn===n)||e.currentDataQuery)},[t,e.currentDataQuery,e?.dataQueries]),pe=La(f?.isExternaLinkIncludeFilters,ie,e.currentDataQuery||e.dataQueries?.[0],B);return(0,l.jsx)(ce,{styles:{titles:n,attachmentsStyles:e.styles,formattingSettings:a,limitMessages:h,attachmentsConfig:f},children:(0,l.jsx)(fc,{currentUrn:_,structuresMap:ee?.structuresMap,locale:o,dataQueries:v,gridViewMode:y,onGridViewModeChange:b,texts:{columnsDisplayTitle:e.styles?.columnsDisplayTitle,columnsSearchPlaceholder:e.styles?.columnsSearchPlaceholder,compactViewTitle:e.styles?.compactViewTitle,compactViewDescription:e.styles?.compactViewDescription,extendedViewTitle:e.styles?.extendedViewTitle,extendedViewDescription:e.styles?.extendedViewDescription},resetIcon:e.styles?.tableSettingsResetIcon,children:(0,l.jsx)(vi,{children:(0,l.jsxs)(`div`,{className:`advanced-view flex h-full min-w-0 flex-1 flex-col`,children:[(0,l.jsx)(Al,{locale:o,shareConversationProps:r,isShowShare:s?.isShowShare,conversation:g.filtersProps.conversation}),k.length?(0,l.jsxs)(l.Fragment,{children:[A&&(0,l.jsx)(ja,{datasets:k,initialSelectedDatasetUrn:e?.currentDataQuery?.urn,locale:o,selectDataset:fe}),Y&&!oe?(0,l.jsx)(d.Loader,{}):(0,l.jsxs)(l.Fragment,{children:[q&&(0,l.jsx)(kl,{...m,locale:o,dataset:z,data:R?.data,structures:H,metadataSettings:i,getDatasetUpdatedTime:u,externalLink:pe}),(0,l.jsxs)(`div`,{className:(0,p.default)(`flex flex-1 min-h-0 overflow-auto`,q&&`border-t border-neutrals-500`),children:[(0,l.jsx)(`div`,{className:(0,p.default)(`flex-1 min-h-0 overflow-auto`,`advanced-view-filters`),children:(0,l.jsx)(Ol,{...g,actions:t,attachments:le,attachmentsDataQuery:e.currentDataQuery,dataQueries:e?.dataQueries,dimensions:B,isDataLoading:Y,locale:o,filtersProps:{...g?.filtersProps,structureDimensions:V,structures:H,structureDataMaps:ee,onFiltersChange:W,onMultipleDataFiltersChange:de,initialConstraints:K},setIsFiltering:se,filters:ie,onFiltersChange:ue})}),x&&(0,l.jsx)(ms,{scope:`advanced`})]})]})]}):(0,l.jsx)(d.Loader,{})]})})})})};function rd(e,t,n,r,i,a){let[o,s]=(0,c.useState)([]),[l,u]=(0,c.useState)(),[d,f]=(0,c.useState)(!1),p=(0,c.useRef)(void 0);return(0,c.useEffect)(()=>{p.current=a},[a]),(0,c.useEffect)(()=>{let a=!0;async function o(i){f(!0);try{let o=await Promise.all(i.map(t=>mn(e,pn(t.urn),()=>e(t.urn))));if(!a)return;let c=o?.map(e=>e?.data?.dataflows?.[0])?.filter(e=>!!e)||[];s(c),t(c),n(i),r(i.find(e=>e.urn===p.current?.urn)??i[0]),u(new Map(o?.map(e=>[(0,b.generateShortUrn)(e?.data?.dataflows?.[0]?.id,e?.data?.dataflows?.[0]?.version,e?.data?.dataflows?.[0]?.agencyID),e?.data])))}catch(e){console.error(`Error loading datasets`,e)}finally{a&&f(!1)}}if(!i?.length){f(!1);return}return o(i),()=>{a=!1}},[i,e,r,n,t]),{datasets:o,datasetStructuresMap:l,isLoading:d}}function id(e){let t=e?.filter(e=>Yi(e));if(t?.every(e=>!!e?.data))return t?.map(e=>({title:e?.title,...od(ad(e?.data))}))}function ad(e){if(e)try{return JSON.parse(e)}catch(e){console.error(`Invalid JSON:`,e)}return null}function od(e){return{...e,filters:e?.filters?.map(e=>({...e,componentCode:e?.component_code||e?.componentCode})),metadata:{datasetUrl:e?.metadata?.datasetUrl,countryDimension:e?.metadata?.country_dimension||e?.metadata?.countryDimension,indicatorDimensions:e?.metadata?.indicator_dimensions||e?.metadata?.indicatorDimensions,timePeriodDimension:e?.metadata?.timePeriodDimension,keyDimensionIdsInDsdOrder:e?.metadata?.keyDimensionIdsInDsdOrder}}}var sd=function(e){return e.COMPLETED=`completed`,e}({}),cd=({stage:e,stageRef:t,isCurrentStage:n})=>(0,l.jsxs)(`div`,{ref:t,className:`message-stage relative flex pb-8 last:mb-8 last:pb-0`,children:[(0,l.jsx)(`span`,{className:`message-stage-line absolute h-full border-l`}),(0,l.jsx)(f.IconPointFilled,{className:`message-stage-indicator z-10 flex shrink-0`}),(0,l.jsxs)(`div`,{className:`ml-2 w-full`,children:[(0,l.jsxs)(`div`,{className:(0,p.default)(`flex gap-2 items-center`,e?.content&&`mb-4`),children:[n&&(0,l.jsx)(d.Loader,{}),(0,l.jsx)(`h3`,{className:`message-stage-name`,children:e?.name})]}),(0,l.jsx)(`div`,{className:`prose max-w-full break-words`,children:(0,l.jsx)(_.default,{remarkPlugins:[v.default],components:{strong:e=>(0,l.jsx)(`strong`,{className:`text-neutrals-1000`,...e}),a:({href:e,children:t,...n})=>(0,l.jsx)(`a`,{href:e,target:`_blank`,rel:`noreferrer`,...n,children:t}),h1:({children:e,...t})=>(0,l.jsx)(`h1`,{className:`h1 text-neutrals-1000`,...t,children:e}),h2:({children:e,...t})=>(0,l.jsx)(`h2`,{className:`h2 text-neutrals-1000`,...t,children:e}),h3:({children:e,...t})=>(0,l.jsx)(`h3`,{className:`h3 text-neutrals-1000`,...t,children:e}),h4:({children:e,...t})=>(0,l.jsx)(`h4`,{className:`h4 text-neutrals-1000`,...t,children:e}),h5:({children:e,...t})=>(0,l.jsx)(`h5`,{className:`h5 text-neutrals-1000`,...t,children:e}),code:e=>(0,l.jsx)(`code`,{className:`text-neutrals-900`,...e}),pre:e=>(0,l.jsx)(`pre`,{className:`border border-neutrals-600 bg-neutrals-100`,...e})},children:e?.content})})]})]}),ld=({stages:e,expandIcon:t,processingTitle:n,prefixIcon:r})=>{let[i,a]=(0,c.useState)(),[o,s]=(0,c.useState)(),u=(0,c.useRef)(null),d=(0,c.useRef)(null);return(0,c.useEffect)(()=>{s(e?.filter(e=>e?.status!==sd.COMPLETED)?.at(-1))},[e]),(0,c.useEffect)(()=>{i&&d?.current?.scrollIntoView({block:`nearest`,behavior:`smooth`})},[i]),(0,c.useEffect)(()=>{let e=u.current,t;if(!e)return;let n=new IntersectionObserver(([e])=>{let n=e?.boundingClientRect?.top;t&&!e?.isIntersecting&&n<t&&a(!1),t=n},{threshold:0});return n.observe(e),()=>n.disconnect()},[]),(0,l.jsxs)(`div`,{className:`message-stages`,ref:u,children:[(0,l.jsxs)(`div`,{className:(0,p.default)(`message-stages-header inline-flex max-w-full items-center cursor-pointer`,!!r&&`gap-2`,!o?.name&&`default-header`),onClick:()=>{a(e=>!e)},children:[r,(0,l.jsx)(`p`,{className:`message-stages-title truncate`,children:o?.name||n||`Processing...`}),(0,l.jsx)(`i`,{className:(0,p.default)(`message-stages-expand-icon`,i&&`rotated`),children:t})]}),i&&e&&(0,l.jsx)(`div`,{className:`flex flex-col`,children:e?.map(e=>(0,l.jsx)(cd,{stage:e,stageRef:o?d:null,isCurrentStage:e?.index===o?.index},e.index))})]})},ud=2e3,dd=({message:e,regenerateMessage:t,messageActionsIcons:n,rateResponse:r,isStreaming:i=!1,isReadOnly:a=!1,isRegenerateAvailable:o=!1})=>{let{messageActionsTitles:s}=Y(),f=n?.copy,m=n?.copied,h=n?.regenerate,g=n?.thumbUp,_=n?.thumbDown,v=n?.thumbPressed,[y,b]=(0,c.useState)(e.like??u.LikeState.NoState),[x,S]=(0,c.useState)(!1),C=(0,c.useRef)(null),{isAgentAvailable:w}=(0,d.useAgentAvailability)();(0,c.useEffect)(()=>()=>{C.current&&clearTimeout(C.current)},[]);let T=t=>{e.responseId&&(b(t),r(e.responseId||``,t))};return(0,l.jsxs)(`div`,{className:(0,p.default)(`message-actions`,`flex gap-x-2 pt-2`),children:[f&&(0,l.jsx)(`p`,{onClick:()=>{navigator.clipboard.writeText(e.content),S(!0),C.current&&clearTimeout(C.current),C.current=setTimeout(()=>{S(!1)},ud)},title:s?.copy,children:x&&m?m:f}),o&&h&&!a&&!i&&(0,l.jsx)(`p`,{onClick:w?()=>t?.(e):void 0,"aria-disabled":!w,title:s?.regenerate,className:(0,p.default)(!w&&`opacity-50 !cursor-not-allowed pointer-events-none`),children:h}),g&&!a&&y!==u.LikeState.Disliked&&(y===u.LikeState.NoState?(0,l.jsx)(`p`,{onClick:()=>T(u.LikeState.Liked),title:s?.like,children:g}):(0,l.jsx)(`p`,{title:s?.like,children:v})),_&&!a&&y!==u.LikeState.Liked&&(y===u.LikeState.NoState?(0,l.jsx)(`p`,{onClick:()=>T(u.LikeState.Disliked),title:s?.dislike,children:_}):(0,l.jsx)(`p`,{className:`rotate-180`,title:s?.dislike,children:v}))]})},fd=({message:e,onEditClick:t,messageActionsIcons:n,isStreaming:r=!1,isReadOnly:i=!1})=>{let a=n?.copy,o=n?.edit,{isAgentAvailable:s}=(0,d.useAgentAvailability)();return(0,l.jsxs)(`div`,{className:(0,p.default)(`message-actions`,`flex gap-x-2 pt-2 ml-12`),children:[a&&(0,l.jsx)(`p`,{onClick:()=>navigator.clipboard.writeText(e.content),children:a}),o&&!r&&!i&&(0,l.jsx)(`p`,{onClick:s?t:void 0,className:(0,p.default)(!s&&`opacity-50 !cursor-not-allowed pointer-events-none`),"aria-disabled":!s,children:o})]})},pd=({content:e,textColorClass:t,onCancel:n,onEditApply:r,editMessageTitles:i})=>{let{isOpenedAdvancedView:a}=I(),o=(0,c.useRef)(null);(0,c.useEffect)(()=>{let e=o.current;s(),e&&(e.focus(),e.setSelectionRange(e.value.length,e.value.length))},[]);let s=()=>{let e=o.current;e&&(e.style.height=`auto`,e.style.height=e.scrollHeight+`px`)};return(0,l.jsxs)(`div`,{className:(0,p.default)(`max-w-none break-words`,a?`body-2`:`body-1`,t),children:[(0,l.jsx)(`textarea`,{ref:o,className:`w-full resize-none overflow-hidden bg-neutrals-300 outline-none`,defaultValue:e,onInput:s}),(0,l.jsxs)(`div`,{className:(0,p.default)(`flex gap-x-2 items-center`,`edit-buttons-wrapper`),children:[(0,l.jsx)(d.Button,{buttonClassName:`text-button-secondary small-icon-button`,title:i?.cancel,isSmallButton:!0,onClick:n}),(0,l.jsx)(d.Button,{buttonClassName:`text-button-primary small-icon-button`,title:i?.send,isSmallButton:!0,onClick:()=>r(o.current?.value||``)})]})]})},md=({message:e,previousMessage:t,actions:n,dataQuery:r,isStreaming:i=!1,isCurrentMessageStreaming:a=!1,showAdvancedView:o,locale:s,metadataSettings:f,onAdvancedViewOpen:m,regenerateMessage:h,selectMessageToSend:g,rateResponse:_,editMessage:v,isReadOnlyConversation:y,isLastNotUserMessage:b,onCodeAttachmentUpdated:x})=>{let{messageStyles:S,attachmentsStyles:C,formattingSettings:w,messageActionsIcons:T,editMessageTitles:E,expandStagesIcon:D,titles:O}=Y(),[k,A]=(0,c.useState)(),[j,M]=(0,c.useState)(),[N,P]=(0,c.useState)([]),[F,L]=(0,c.useState)([]),[R,z]=(0,c.useState)(),[B,V]=(0,c.useState)(!1),{isCrossDatasetModeOn:H}=Z(),U=ys(),W=e.role===u.Role.User,G=e.role===u.Role.System,{datasets:K,datasetStructuresMap:q,isLoading:ee}=rd(n.getDataSet,n.updateDatasets,n.updateDataQueries,n.updateCurrentDataQuery,k,r),[J,te]=(0,c.useState)(!1),[ne,re]=(0,c.useState)([]);(0,c.useEffect)(()=>{M(k?.[0])},[k]);let ie=H&&!!k?.length,ae=(0,c.useCallback)(t=>{e.id&&x?.(e.id,t)},[e.id,x]),{dataSetAttachments:oe,dimensions:se,isLoadingGridData:ce}=ju(n,s,j,w,C?.chartingStyles,f,O,e.custom_content?.attachments,j?q?.get(j.urn):void 0,ee,ae,ie),le=(0,c.useMemo)(()=>_r(k,U.map),[k,U.map]),{crossDatasetAttachments:ue,isLoadingGridData:de}=Xu(n,s,k,C?.chartingStyles,w,f,e.custom_content?.attachments,le,ae,void 0,O),{isOpenedAdvancedView:fe}=I(),pe=(0,d.useIsMobile)(d.MOBILE_BREAKPOINT),me=!pe,{attachments:he,dataQueriesKey:ge,isLoading:_e}=td(),ve=(0,c.useMemo)(()=>br(k),[k]),ye=H&&!!o&&he!=null&&ge===ve,be=ye?he:ue,xe=(0,c.useMemo)(()=>H?ye?_e:de:ce,[H,de,ce,_e,ye]),Se=()=>{W&&te(!0)},Ce=()=>{te(!1)},we=t=>{Ce(),v?.({...e,content:t})},Te=(0,c.useCallback)(e=>{e&&(M(k?.find(t=>t?.urn===e)),z(void 0))},[k]);(0,c.useEffect)(()=>{let t=e.custom_content?.form_schema?.properties;re((b?t?.choice?.oneOf||t?.completion?.oneOf:[])||[])},[e,b]),(0,c.useEffect)(()=>{let t=qi(e),n=id(t),r=t.filter(e=>Qi(e));A(n),L(r)},[e]),(0,c.useEffect)(()=>{V(k!=null&&k.length>0)},[k]),(0,c.useEffect)(()=>{r?.urn&&k?.some(e=>e?.urn===r.urn)&&z(r.urn)},[r,k]),(0,c.useEffect)(()=>{if(e?.role===u.Role.System&&t){let e=id(qi(t))||[];k&&e&&q&&P(Na(e,k,q,s,U.map))}},[k,j,q,U.map,se,s,e?.role,t]);let Ee=(0,c.useCallback)((e=`column`)=>{if(!W&&S?.systemMessageIcon&&!(fe&&!a)){let t=e===`inline`;return(0,l.jsx)(`div`,{className:(0,p.default)(`flex-shrink-0 rounded-full flex items-center justify-center`,t?`size-[44px] overflow-visible [&_svg]:size-[44px]`:`w-[44px] h-[44px]`,a&&!t?`text-white absolute`:`text-neutrals-400`),children:S.systemMessageIcon})}return null},[W,S?.systemMessageIcon,fe,a]),De=pe?Ee(`inline`):null,Oe=pe&&(De!=null||a)?(0,l.jsxs)(l.Fragment,{children:[De,a&&(0,l.jsx)(d.Loader,{})]}):null,ke=!W&&!fe&&!!e?.custom_content?.stages,Ae=pe&&!ke&&!a&&!J&&De!=null,je=(0,c.useMemo)(()=>(0,l.jsx)(Zc,{actions:n,attachments:B?H?be:oe:F,onAdvancedViewOpen:m,isDataSetAttachments:B,datasets:K,initialSelectedDatasetUrn:R,showAdvancedView:o,isSystemAttachments:G,isDataLoading:xe,currentDataQuery:j,dataQueries:k,attachmentInfoList:N,locale:s,dimensions:se,selectDataset:Te}),[n,B,oe,F,be,K,R,o,G,xe,j,k,N,s,se,Te,m,H]);if(G&&fe)return null;let Me=a?null:W?J?null:(0,l.jsx)(fd,{messageActionsIcons:T,message:e,isStreaming:i,onEditClick:Se,isReadOnly:y}):G?null:(0,l.jsx)(dd,{messageActionsIcons:T,message:e,isStreaming:i,regenerateMessage:h,rateResponse:_,isReadOnly:y,isRegenerateAvailable:b});return(0,l.jsx)(`div`,{className:(0,p.default)(`max-w-full flex`,W?`justify-end`:`justify-start`,`message-wrapper`),children:(0,l.jsxs)(`div`,{className:(0,p.default)(`flex items-start`,W&&!J?`max-w-full`:`w-full`),children:[me&&(0,l.jsxs)(`div`,{className:`relative mr-2`,children:[Ee(),a&&(0,l.jsx)(d.Loader,{})]}),(0,l.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,l.jsxs)(`div`,{className:(0,p.default)(W?`bg-neutrals-300 px-6`:`pt-0`,W?`user-message`:`system-message`,W&&(J?`w-[100%] ml-0`:`ml-12`)),children:[ke?(0,l.jsx)(ld,{stages:e?.custom_content?.stages,expandIcon:D,processingTitle:S?.processingTitle,prefixIcon:Oe}):a&&(0,l.jsx)(l.Fragment,{children:pe?(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[Oe,(0,l.jsx)(`p`,{className:`body-1 loading-message text-neutrals-700`,children:O?.loading})]}):(0,l.jsx)(`p`,{className:`body-1 loading-message text-neutrals-700`,children:O?.loading})}),J?(0,l.jsx)(pd,{content:e.content,onCancel:Ce,onEditApply:we,editMessageTitles:E}):Ae?(0,l.jsxs)(`div`,{className:`flex items-start gap-2`,children:[De,(0,l.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,l.jsx)(Ue,{content:e.content})})]}):(0,l.jsx)(Ue,{content:e.content})]}),je,Me,!fe&&!xe&&(0,l.jsx)(We,{choiceButtons:ne,onClick:g})]})]})})},hd=({messages:e,isStreaming:t=!1,isReadOnly:n,conversationViewState:r,...i})=>{let{scrollBottomIcon:a}=Y(),o=(0,c.useRef)(null),s=(0,c.useRef)(null),{isOpenedAdvancedView:g}=I(),_=ps(),[v,y]=(0,c.useState)(null),[b,x]=(0,c.useState)(!1),S=_?.isPanelOpen()??!1,C=()=>{let e=s.current?.parentElement,t=o.current;if(e&&t){let n=t.offsetTop-e.offsetTop;e.scrollTo({top:n,behavior:`smooth`})}};(0,c.useEffect)(()=>{C()},[e,t]),(0,c.useEffect)(()=>{!g&&v!==null&&setTimeout(()=>{s?.current?.parentElement?.scrollTo({top:v,behavior:`smooth`})})},[g,v]);let w=()=>{y(s.current?.parentElement?.scrollTop||null)},T=()=>{let e=s.current?.parentElement;if(e){let{scrollTop:t,scrollHeight:n,clientHeight:r}=e;t+r>=n?x(!1):!b&&!g&&x(!0)}};(0,c.useEffect)(()=>{g&&x(!1)},[g]);let E=(0,d.useDebounce)(T,300);(0,c.useEffect)(()=>{let e=s.current?.parentElement;return e?.addEventListener(`scroll`,E),()=>e?.removeEventListener(`scroll`,E)},[E]);let D=(0,c.useCallback)(e=>(0,l.jsx)(`div`,{className:`whitespace-pre-wrap break-words`,children:(0,h.linkifyText)(e).map((e,t)=>e.type===`text`?(0,l.jsx)(c.Fragment,{children:e.value},t):(0,l.jsx)(`a`,{href:e.value,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center align-middle`,children:(0,l.jsx)(f.IconExternalLink,{className:`size-4 shrink-0 cursor-pointer text-primary`})},t))}),[]);return(0,l.jsxs)(`div`,{ref:s,className:`flex size-full justify-center`,children:[(0,l.jsxs)(`div`,{className:`chat-messages-wrapper flex w-full flex-col gap-y-6`,children:[e.map((a,o)=>{let s=a.id??o;if(a.errorMessage)return(0,l.jsx)(d.InlineAlert,{type:r?.errorContext?.kind===m.ERROR_CONTEXT_KIND.RATE_LIMIT?d.InlineAlertType.Warning:d.InlineAlertType.Error,children:(0,l.jsx)(`div`,{className:`flex flex-col`,children:D(a.errorMessage)})},s);if(g&&a.role===u.Role.System)return null;let c=o===e.length-1,f=aa(e,o),p=oa(e);return(0,l.jsx)(md,{message:a,previousMessage:f,onAdvancedViewOpen:w,isStreaming:t,isCurrentMessageStreaming:t&&c&&a.role===u.Role.Assistant,showAdvancedView:o===p&&!n,isLastNotUserMessage:c&&a.role!==u.Role.User,...i},s)}),(0,l.jsx)(`div`,{ref:o,className:`h-4`})]}),(0,l.jsx)(`div`,{onClick:C,className:(0,p.default)(`fixed sm:hidden bottom-[88px] rounded-[50%] border-[2px] w-[40px] h-[40px] border-primary cursor-pointer text-primary bg-white z-10`,S?`right-[402px] lg:right-[386px]`:`right-10 lg:right-6`,`scroll-button-wrapper`,b?`block`:`hidden`),children:(0,l.jsx)(`div`,{className:`flex size-full items-center justify-center`,children:a})})]})},gd=({conversationViewState:e,isAgentAvailable:t,statusMessages:n,isStreaming:r,isLastMessageFailed:i,regenerateLastMessage:a,inputMessageStyles:o,askAnythingTitle:s,onSendMessage:c,onStopStreaming:u})=>{if(e?.errorContext?.kind===m.ERROR_CONTEXT_KIND.RATE_LIMIT&&(0,m.isRateLimitStillActive)(e.errorContext)){let t=(0,m.getRateLimitRestoreDate)(e.errorContext);if(t){let e=(0,m.formatDateTime)(t);return(0,l.jsx)(d.InlineAlert,{type:d.InlineAlertType.Info,children:n.getAssistantRestoreMessage(e.date,e.time)})}}return t?(0,l.jsx)(te,{onSendMessage:c,onStopStreaming:u,inProcess:r,sendMessageIcon:o.sendMessageIcon,retryIcon:o.retryIcon,placeholder:s??`Ask anything...`,containerClasses:`mt-4`,inputClasses:`border-neutrals-600 mr-2`,isLastFailed:i,onRetryFailed:a}):(0,l.jsx)(d.InlineAlert,{type:d.InlineAlertType.Error,children:n.assistantUnavailable})},_d=({conversation:e,locale:t,titles:n,messageStyles:r,attachmentsStyles:i,inputMessageStyles:a,formattingSettings:o,metadataSettings:s,messageActionsIcons:c,messageActionsTitles:u,editMessageTitles:m,expandStagesIcon:h,scrollBottomIcon:g,limitMessages:_,attachmentsConfig:v,shareConversationProps:y,showConversationHeaderAdvancedView:b=!0,headerRightSlot:x,dataQuery:S,isFinalMessage:C,children:w,isReadonlyConversation:T,isStreaming:E,isOpenedAdvancedView:D,isShowOnboarding:O,isAgentAvailable:k,statusMessages:A,conversationViewState:j,messageServerActions:M,sendMessageToConversation:N,regenerateMessage:P,editMessage:F,onStopStreaming:I,isLastMessageFailed:L,regenerateLastMessage:R,rateResponse:z,handleCodeAttachmentUpdated:B,duplicateConversation:V,handleOpeningOfNewConversation:H})=>(0,l.jsx)(ce,{styles:{titles:n,messageStyles:r,attachmentsStyles:i,formattingSettings:o,messageActionsIcons:c,messageActionsTitles:u,editMessageTitles:m,expandStagesIcon:h,scrollBottomIcon:g,limitMessages:_,attachmentsConfig:v},children:(0,l.jsxs)(`div`,{className:(0,p.default)(`h-full flex flex-col bg-white conversation-view-wrapper`,D&&!b&&`p-4`),children:[D&&!b?null:(0,l.jsx)(He,{conversation:e,locale:t,isOpenedAdvancedView:D,isShowShareButton:!T&&!O,shareConversationProps:y,rightSlot:x}),(0,l.jsxs)(`div`,{className:`flex min-h-0 w-full min-w-0 flex-1`,children:[(0,l.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,children:[(0,l.jsx)(`div`,{className:(0,p.default)(`flex-1 min-h-0 flex flex-col items-end scroll-hidden-container`,r?.messagesWrapperClass),children:(0,l.jsx)(hd,{messages:e?.messages||[],actions:M,isStreaming:E,isReadOnly:T,metadataSettings:s,dataQuery:S,locale:t,regenerateMessage:t=>P(t,e),selectMessageToSend:(t,n)=>N(t,e,n),rateResponse:z,editMessage:t=>F(t,e),isReadOnlyConversation:T||O,conversationViewState:j,onCodeAttachmentUpdated:B})}),O?null:T?(0,l.jsx)(`div`,{className:`mt-4 flex items-center justify-center`,children:(0,l.jsx)(d.Button,{iconBefore:(0,l.jsx)(f.IconCopy,{width:20,height:20}),title:n?.duplicate??`Duplicate Chat`,isSmallButton:!0,onClick:V,buttonClassName:(0,p.default)(`text-button-secondary`)})}):(0,l.jsx)(`div`,{className:(0,p.default)(a.inputContainerClass),children:(0,l.jsx)(gd,{conversationViewState:j,isAgentAvailable:k,statusMessages:A,isStreaming:E,isLastMessageFailed:L,regenerateLastMessage:R,inputMessageStyles:a,askAnythingTitle:n?.askAnything,onSendMessage:t=>N(t,e),onStopStreaming:I})}),O&&C&&(0,l.jsx)(d.Button,{iconBefore:(0,l.jsx)(f.IconPlus,{width:24,height:24}),title:n?.onboardingFooterLink,onClick:H,isSmallButton:!0,buttonClassName:`text-button-secondary self-center mb-3`}),w]}),!D&&(0,l.jsx)(ms,{scope:`conversation`})]})]})}),vd=(e,t)=>{let n=e.lastIndexOf(`.`);return n<=0?`${e}-${t}`:`${e.slice(0,n)}-${t}${e.slice(n)}`},yd=(e,t,n)=>{let r=e.split(`/`);if(r[0]!==`files`||r.length<3)return e;let i=vd(r.at(-1)??`file`,n);return[`files`,t,...r.slice(2,-1),i].join(`/`)},bd=async({conversation:e,bucket:t,getFileBlob:n,putFile:r})=>{let i=(0,h.getConversationAttachmentUrls)(e),a=Date.now();if(!i.length)return e;let o=await Promise.all(i.map(async e=>{let i=yd(e,t,`${a}`);return i===e||await r(i,await n(e)),[e,i]}));return(0,h.replaceConversationAttachmentUrls)(e,Object.fromEntries(o))},xd=(e,t,n)=>{let r=`${t}/${n}`,i=(0,m.generateConversationId)({folderId:r,name:e?.name});return{...e,folderId:r,id:i}},Sd=(e,t,n)=>`/${t}${n}/${(0,h.getConversationNavPath)(e?.folderId,e?.id)}`,Cd=({actions:e,conversation:t,locale:n,conversationsRoute:r,openUrl:i,setConversations:a})=>({handleOpeningOfNewConversation:(0,c.useCallback)(()=>{i(`/${n}${r}`)},[n,r,i]),duplicateConversation:(0,c.useCallback)(async()=>{try{let{bucket:o}=await e.getBucket(),s=xd(e.getFileBlob&&e.putFile?await bd({conversation:t,bucket:o,getFileBlob:e.getFileBlob,putFile:e.putFile}):t,o,n);await e.createConversation(s,n),a((0,h.cleanConversationNames)(await e.getConversations(n))),i(Sd(s,n,r))}catch(e){console.error(`Failed to save conversation:`,e)}},[e,t,r,n,i,a])}),wd=`local`,Td=e=>!e.permissions?.includes(u.SharePermission.WRITE)&&!Dd(e),Ed=(e,t)=>Od(e)!==t,Dd=e=>Od(e)===wd,Od=e=>e.id.split(`/`)[0],kd=({conversationKey:e,actions:t,setConversation:n,setCrossDatasetAttachmentsState:r,sendMessageToConversation:i,onConversationNotFound:a})=>{let[o,s]=(0,c.useState)(!1),[l,d]=(0,c.useState)(!0);return(0,c.useEffect)(()=>{gn(),r();async function o(){try{d(!0);let{bucket:r}=await t.getBucket(),a=await t.getConversation(decodeURI(e));n(a),s(Td(a)&&Ed(a,r)),(a.messages.length===0||a?.messages?.[0]?.role===u.Role.Assistant&&a?.messages?.length===1)&&i(a.prompt,a)}catch{s(!0),a?.()}finally{d(!1)}}return e&&o(),()=>{gn()}},[e]),{isLoading:l,isReadonlyConversation:o}},Ad=({actions:e,conversationKey:t})=>(0,c.useCallback)(async n=>{try{await e.updateConversation(decodeURI(t),{name:n.name,messages:n.messages,customViewState:n.customViewState})}catch(e){console.error(`Failed to save conversation:`,e)}},[e,t]),jd=`AbortError`,Md=(e,t)=>{let n=e.customViewState??{},r=n[m.CUSTOM_VIEW_STATE_KEY]??{};return{...e,customViewState:{...n,[m.CUSTOM_VIEW_STATE_KEY]:{...r,errorContext:t}}}},Nd=({error:e,statusMessages:t})=>{if(e){if(e.type===m.DIAL_ERROR_TYPES.RATE_LIMIT_EXCEEDED){let n=e.exceeded_limit?.length?t.getExceededLimitsMessage(e.exceeded_limit):e.display_message??``;throw new h.HttpError({message:e.message,displayMessage:n,code:e.type,status:e.status??h.HTTP_ERROR_CODES.TOO_MANY_REQUESTS,details:{kind:m.ERROR_CONTEXT_KIND.RATE_LIMIT,occurredAt:new Date().toISOString(),retryAfterSeconds:Number(e.retry_after??``)}})}throw new h.HttpError({message:e.message,status:e.status??h.HTTP_ERROR_CODES.BAD_REQUEST,code:e.code})}},Pd=({error:e,statusMessages:t})=>{if(e.code===m.DIAL_ERROR_TYPES.RATE_LIMIT_EXCEEDED){let t=e;return{errorMessage:t.displayMessage??t.message,errorContext:t.details}}return e.code===m.DIAL_ERROR_CODES.CONTENT_FILTER?{errorMessage:t.contentFilterError??e.message}:{errorMessage:e.status===h.HTTP_ERROR_CODES.SERVICE_UNAVAILABLE?t.serverOverloaded:t.serverError}},Fd=e=>{let 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},Id=()=>{try{return Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`}catch{return`UTC`}},Ld=(e,t)=>Rd([...t?.messages||[],e]),Rd=e=>[...e].map(e=>{let t={role:e.role,content:e.content};return(e.role===u.Role.Assistant||e.role===u.Role.System)&&e.custom_content!=null&&(e.custom_content.state!=null||e.custom_content.attachments!=null||e.custom_content.form_schema!=null)&&(t.custom_content={},e.custom_content.state!=null&&(t.custom_content.state=e.custom_content.state),e.custom_content.attachments!=null&&(t.custom_content.attachments=Vd(e.custom_content.attachments)),e.custom_content.form_schema!=null&&(t.custom_content.form_schema=e.custom_content.form_schema)),e.role===u.Role.User&&e.custom_content&&(t.custom_content=e.custom_content),t}),zd=(e,t)=>{let n=t?.messages,r=n?.findIndex(t=>e.id===t.id);return Rd(n?.slice(0,r)||[])},Bd=(e,t)=>{let n=t?.messages,r=n?.findIndex(t=>e.id===t.id);return Rd([...n?.slice(0,r)||[],e])};function Vd(e){return e.map(e=>({type:e.type,title:e.title,data:e.data,url:e.url,reference_type:e.reference_type,reference_url:e.reference_url}))}var Hd=(e,t,n,r)=>{if(!n||t)return null;let i={id:`msg-${Date.now()}`,role:u.Role.User,content:e,timestamp:Date.now()};return r&&(i.custom_content={form_value:{[r===q.COMPLETE?K.COMPLETION:K.CHOICE]:r}}),i},Ud=e=>e?.name===jd,Wd=({conversation:e,setConversation:t,saveConversation:n,updateAssistantMessage:r,addUserMessageToConversation:i,initializeAssistantMessage:a,isStreaming:o,setIsStreaming:s,statusMessages:l,isCrossDatasetModeOn:u,token:d,handleInvalidStreaming:f})=>{let[p,g]=(0,c.useState)(null),_=(0,c.useCallback)((e,t)=>{let n=l.serverError,i,a;if((0,h.isHttpError)(e)){a=e;let t=Pd({error:e,statusMessages:l});n=t.errorMessage,i=t.errorContext}else a=new h.HttpError({status:h.HTTP_ERROR_CODES.INTERNAL_SERVER_ERROR,message:n});return t&&=r(t,{errorMessage:n}),f?.(a),{assistantMessage:t,errorContext:i}},[f,l,r]),v=(0,c.useCallback)(async(e,t,n)=>{let i=new AbortController;g(i);let a=e,o;if(!n)return{assistantMessage:a,errorContext:o};let s=n.custom_fields??{},c={...s,configuration:{...s.configuration,timezone:Id(),...u&&{merge_python_code:!0}}};return await(0,m.streamChatResponse)?.(encodeURI(n.id),t,{model:n.model,signal:i?.signal,onMessage:e=>{Nd({error:e.error,statusMessages:l});let t=Fd(e);(t.content||t.role||t.responseId)&&(a=r(a,t))},onError:e=>{if(!Ud(e))throw console.error(`Streaming error:`,e),e}},d,c).catch(e=>{if(!Ud(e)){let{assistantMessage:t,errorContext:n}=_(e,a);a=t,o=n}}),{assistantMessage:a,errorContext:o}},[d,r,_,l,u]),y=(0,c.useCallback)(async(e,t,r,i)=>{if(!t)return;let a=Md(t,i);a={...a,messages:[...t.messages],updatedAt:Date.now()},r&&a.messages.push(r),a.messages.push(e),await n(a)},[n]),b=(0,c.useCallback)(e=>{t(t=>t&&Md(t,e))},[t]),x=(0,c.useCallback)((e,n)=>{t(e=>e?{...e,messages:e.messages.filter(e=>e.id!==n.id)}:null)},[t]),S=(0,c.useCallback)(()=>{p&&!p.signal.aborted&&p.abort()},[p]),C=(0,c.useCallback)(async(e,t,n,r,i,a=!0)=>{Ud(i)?await y(r??n,e,a?t:void 0):x(i,t)},[y,x]),w=(0,c.useCallback)(async(e,t,n)=>{if(!t||!e)return;let r=Hd(e,o,t,n),c,l;if(r){i(r);try{s(!0),c=a();let e=Ld(r,t),{assistantMessage:n,errorContext:i}=await v(c,e,t);b(i),l=n,await y(l,t,r,i)}catch(e){C(t,r,c,l,e)}finally{s(!1)}}},[o,s,i,a,v,y,C,b]),T=(0,c.useCallback)(async(e,t,n)=>{let r,i;try{s(!0),r=a();let{assistantMessage:n,errorContext:o}=await v(r,e,t);i=n,b(o),await y(i,t,void 0,o)}catch(e){C(t,n,r,i,e,!1)}finally{s(!1)}},[s,y,C,v,a,b]),E=(0,c.useCallback)(async(e,n)=>{if(!n||!e)return;let r=zd(e,n),i={...n,messages:n.messages.slice(0,r.length)};t(e=>e?{...e,...i}:null),T(r,i,e)},[t,T]),D=(0,c.useCallback)(async(e,n)=>{if(!n||!e)return;let r=Bd(e,n),i={...n,messages:[...n.messages.slice(0,r.length-1),e]};t(e=>e?{...e,...i}:null),T(r,i,e)},[t,T]),{isLastMessageFailed:O,regenerateLastMessage:k}=(0,c.useMemo)(()=>{let t=e?.messages?.at(-1);return{isLastMessageFailed:!!t?.errorMessage,regenerateLastMessage:t&&(()=>E(t,e))}},[e,E]);return{sendMessageToConversation:w,regenerateMessage:E,editMessage:D,onStopStreaming:S,isLastMessageFailed:O,regenerateLastMessage:k}},Gd=({actions:e,conversation:t,setConversation:n,saveConversation:r})=>({handleCodeAttachmentUpdated:(0,c.useCallback)((e,i)=>{if(!t)return;let a=Mu(t.messages,i,e);if(!a)return;let o={...t,messages:a};n(o),r(o)},[t,n,r]),rateResponse:(0,c.useCallback)((n,i)=>{t?.model?.id&&(e.rateResponse(n,i===u.LikeState.Liked,t.model.id),t.messages=t.messages.map(e=>e.responseId===n?(0,E.merge)(e,{like:i}):e),r(t))},[e,t,r])}),Kd=({setConversation:e})=>({addUserMessageToConversation:(0,c.useCallback)(t=>{e(e=>e?{...e,messages:[...e?.messages||[],t]}:null)},[e]),initializeAssistantMessage:(0,c.useCallback)(()=>{let t={id:`msg-${Date.now()+1}`,role:u.Role.Assistant,content:``,timestamp:Date.now()};return e(e=>e?{...e,messages:[...e.messages,t]}:null),t},[e]),updateAssistantMessage:(0,c.useCallback)((t,n)=>{let r=m.mergeMessages?.(t,[n]);if(r)return e(e=>e?{...e,messages:e.messages.map(e=>e.id===t.id?{...r}:e)}:null),r},[e])}),qd=({actions:e})=>{let{isOpenedAdvancedView:t}=I(),{onboardingFileSchema:n,onboardingFilePath:r,onboardingFileName:i,setOnboardingFileSchema:a}=G();(0,c.useEffect)(()=>{n&&e.putOnboardingFile?.(i,r,n)},[e,n,i,r]),(0,c.useEffect)(()=>{t&&n?.lastDisplayedElement===X.OPEN_ADVANCED_VIEW&&a?.(rt(n))},[e,t,a,n])},Jd=e=>{let{conversationKey:t,conversation:n,actions:r,locale:i,conversationsRoute:a,token:o,handleInvalidStreaming:s,onConversationNotFound:l,setConversation:u,setConversations:f,openUrl:p}=e,{isStreaming:h,setIsStreaming:g}=z(),{isOpenedAdvancedView:_}=I(),{setCrossDatasetAttachmentsState:v}=td(),{isCrossDatasetModeOn:y}=Z(),{isAgentAvailable:b}=(0,d.useAgentAvailability)(),{statusMessages:x}=H(),{isShowOnboarding:S}=G();qd({actions:r});let C=Ad({actions:r,conversationKey:t}),{addUserMessageToConversation:w,initializeAssistantMessage:T,updateAssistantMessage:E}=Kd({setConversation:u}),{sendMessageToConversation:D,regenerateMessage:O,editMessage:k,onStopStreaming:A,isLastMessageFailed:j,regenerateLastMessage:M}=Wd({conversation:n,setConversation:u,saveConversation:C,updateAssistantMessage:E,addUserMessageToConversation:w,initializeAssistantMessage:T,isStreaming:h,setIsStreaming:g,statusMessages:x,isCrossDatasetModeOn:y,token:o,handleInvalidStreaming:s}),{rateResponse:N,handleCodeAttachmentUpdated:P}=Gd({actions:r,conversation:n,setConversation:u,saveConversation:C}),{duplicateConversation:F,handleOpeningOfNewConversation:L}=Cd({actions:r,conversation:n,locale:i,conversationsRoute:a,openUrl:p,setConversations:f}),{isLoading:R,isReadonlyConversation:B}=kd({conversationKey:t,actions:r,setConversation:u,setCrossDatasetAttachmentsState:v,sendMessageToConversation:D,onConversationNotFound:l}),V=(0,c.useMemo)(()=>({getFile:r.getFile,putOnboardingFile:r.putOnboardingFile,getDataSet:r.getDataSet,getDataSetData:r.getDataSetData,getConstraints:r.getConstraints,updateCurrentDataQuery:r.updateCurrentDataQuery,updateDataQueries:r.updateDataQueries,updateDatasets:r.updateDatasets,downloadDataSet:r.downloadDataSet}),[r]);return{isLoading:R,isReadonlyConversation:B,isStreaming:h,isOpenedAdvancedView:_,isShowOnboarding:S,isAgentAvailable:b,statusMessages:x,conversationViewState:n?.customViewState?.[m.CUSTOM_VIEW_STATE_KEY],messageServerActions:V,sendMessageToConversation:D,regenerateMessage:O,editMessage:k,onStopStreaming:A,isLastMessageFailed:j,regenerateLastMessage:M,rateResponse:N,handleCodeAttachmentUpdated:P,duplicateConversation:F,handleOpeningOfNewConversation:L}},Yd=e=>{let t=Jd(e);return t.isLoading?(0,l.jsx)(d.Loader,{}):(0,l.jsx)(_d,{...e,...t})},Xd=({conversationName:e,expandTitle:t,expandIcon:n,onExpand:r})=>(0,l.jsxs)(`div`,{className:`flex h-full w-[51px] shrink-0 flex-col items-center border border-neutrals-400 bg-white`,children:[(0,l.jsx)(`button`,{type:`button`,className:`mt-[84px] flex size-9 items-center justify-center text-primary`,"aria-label":t,title:t,onClick:r,children:n}),(0,l.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col items-center overflow-hidden pb-[88px] pt-[72px]`,children:(0,l.jsx)(`span`,{className:`h3 min-h-0 flex-1 rotate-180 truncate text-center text-neutrals-1000 [writing-mode:vertical-rl]`,title:e,children:e})})]});exports.AdvancedView=nd,exports.AdvancedViewProvider=F,exports.AttachmentRenderer=Zc,exports.CUSTOM_CHOICE_ID=q,exports.ChartingIcon=J,exports.ChatFooter=qe,exports.ChatMessagesProvider=R,exports.ChatOnboardingFooter=Ke,exports.CollapsedChatPanel=Xd,exports.ConversationView=Yd,exports.ConversationViewFeatureTogglesProvider=Xt,exports.ConversationViewMessagesProvider=V,exports.ConversationViewSidePanelOutlet=ms,exports.ConversationViewSidePanelProvider=ds,exports.ConversationViewStylesProvider=ce,exports.ConversationWelcome=Je,exports.CrossDatasetAttachmentsProvider=ed,exports.CrossDatasetGridAttachment=Gc,exports.CrossDatasetGridViewMode=uc,exports.CustomChartAttachment=Qs,exports.CustomContentProperties=K,exports.CustomDataGridAttachment=js,exports.DatasetDimensionsMetadataMapProvider=vs,exports.OnboardingProvider=W,exports.STAGE_STATUS=ee,exports.buildCrossDatasetChartingData=Ju,exports.buildCrossDatasetGridContent=Ku,exports.isChartingDataPlottable=cu,exports.useAdvancedView=I,exports.useChatMessages=z,exports.useConversationViewFeatureToggles=Z,exports.useConversationViewMessages=H,exports.useConversationViewSidePanelOptional=ps,exports.useConversationViewStyles=Y,exports.useCrossDatasetAttachments=td,exports.useDatasetDimensionsMetadataMap=ys,exports.useDatasetDimensionsMetadataMapOptional=bs,exports.useOnboarding=G;
package/index.mjs CHANGED
@@ -10624,4 +10624,4 @@ var Mm = (e, t, n, r) => {
10624
10624
  })]
10625
10625
  });
10626
10626
  //#endregion
10627
- export { Kp as AdvancedView, On as AdvancedViewProvider, Bd as AttachmentRenderer, Bn as CUSTOM_CHOICE_ID, Hn as ChartingIcon, Fr as ChatFooter, jn as ChatMessagesProvider, Pr as ChatOnboardingFooter, Bm as CollapsedChatPanel, zm as ConversationView, zi as ConversationViewFeatureTogglesProvider, Pn as ConversationViewMessagesProvider, eu as ConversationViewSidePanelProvider, Xn as ConversationViewStylesProvider, Ir as ConversationWelcome, Wp as CrossDatasetAttachmentsProvider, Pd as CrossDatasetGridAttachment, $u as CrossDatasetGridViewMode, Vu as CustomChartAttachment, zn as CustomContentProperties, bu as CustomDataGridAttachment, su as DatasetDimensionsMetadataMapProvider, Ln as OnboardingProvider, Vn as STAGE_STATUS, Rp as buildCrossDatasetChartingData, Ip as buildCrossDatasetGridContent, Qf as isChartingDataPlottable, kn as useAdvancedView, Mn as useChatMessages, Bi as useConversationViewFeatureToggles, Fn as useConversationViewMessages, nu as useConversationViewSidePanelOptional, Z as useConversationViewStyles, Gp as useCrossDatasetAttachments, cu as useDatasetDimensionsMetadataMap, lu as useDatasetDimensionsMetadataMapOptional, Rn as useOnboarding };
10627
+ export { Kp as AdvancedView, On as AdvancedViewProvider, Bd as AttachmentRenderer, Bn as CUSTOM_CHOICE_ID, Hn as ChartingIcon, Fr as ChatFooter, jn as ChatMessagesProvider, Pr as ChatOnboardingFooter, Bm as CollapsedChatPanel, zm as ConversationView, zi as ConversationViewFeatureTogglesProvider, Pn as ConversationViewMessagesProvider, ru as ConversationViewSidePanelOutlet, eu as ConversationViewSidePanelProvider, Xn as ConversationViewStylesProvider, Ir as ConversationWelcome, Wp as CrossDatasetAttachmentsProvider, Pd as CrossDatasetGridAttachment, $u as CrossDatasetGridViewMode, Vu as CustomChartAttachment, zn as CustomContentProperties, bu as CustomDataGridAttachment, su as DatasetDimensionsMetadataMapProvider, Ln as OnboardingProvider, Vn as STAGE_STATUS, Rp as buildCrossDatasetChartingData, Ip as buildCrossDatasetGridContent, Qf as isChartingDataPlottable, kn as useAdvancedView, Mn as useChatMessages, Bi as useConversationViewFeatureToggles, Fn as useConversationViewMessages, nu as useConversationViewSidePanelOptional, Z as useConversationViewStyles, Gp as useCrossDatasetAttachments, cu as useDatasetDimensionsMetadataMap, lu as useDatasetDimensionsMetadataMapOptional, Rn as useOnboarding };
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@epam/statgpt-conversation-view",
3
- "version": "0.7.0-dev.6",
3
+ "version": "0.7.0-dev.7",
4
4
  "license": "MIT",
5
5
  "dependencies": {
6
- "@epam/statgpt-conversation-list": "0.7.0-dev.6",
7
- "@epam/statgpt-dial-toolkit": "0.7.0-dev.6",
8
- "@epam/statgpt-sdmx-toolkit": "0.7.0-dev.6",
9
- "@epam/statgpt-shared-toolkit": "0.7.0-dev.6",
10
- "@epam/statgpt-ui-components": "0.7.0-dev.6"
6
+ "@epam/statgpt-conversation-list": "0.7.0-dev.7",
7
+ "@epam/statgpt-dial-toolkit": "0.7.0-dev.7",
8
+ "@epam/statgpt-sdmx-toolkit": "0.7.0-dev.7",
9
+ "@epam/statgpt-shared-toolkit": "0.7.0-dev.7",
10
+ "@epam/statgpt-ui-components": "0.7.0-dev.7"
11
11
  },
12
12
  "peerDependencies": {
13
13
  "@epam/ai-dial-shared": "^0.43.3",