@peak-ai/canvas 1.6.8 → 1.6.9

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/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@peak-ai/canvas",
3
3
  "author": "squad-builder-experience",
4
4
  "license": "UNLICENSED",
5
- "version": "1.6.8",
5
+ "version": "1.6.9",
6
6
  "description": "",
7
7
  "dependencies": {
8
8
  "@emotion/react": "^11.11.4",
@@ -9,7 +9,7 @@ var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _us
9
9
  var actualChartWidth=Math.max(innerWidth,xScale.range()[1]||0);var bounds={minY:BEESWARM_CONFIG.RADIUS,maxY:innerHeight-BEESWARM_CONFIG.RADIUS,minX:0,maxX:actualChartWidth};var nodes=data.map(function(d){var initialY=yScaleWithPadding(d.value);var clampedY=Math.max(bounds.minY,Math.min(bounds.maxY,initialY));var groupCenterX=(xScale(d.group)||0)+(xScale.bandwidth()||0)/2;var bandwidth=xScale.bandwidth()||0;var maxSpread=bandwidth*BEESWARM_CONFIG.SPREAD_FACTOR;var randomOffset=(Math.random()-0.5)*maxSpread*BEESWARM_CONFIG.RANDOM_FACTOR;return _extends({},d,{groupCenterX:groupCenterX,x:groupCenterX+randomOffset,y:clampedY,radius:BEESWARM_CONFIG.RADIUS,maxSpread:maxSpread})});var simulation=null;try{simulation=forceSimulation(nodes).force("x",forceX(function(d){return d.groupCenterX}).strength(0.15)).force("y",forceY(function(d){var targetY=yScaleWithPadding(d.value);return Math.max(bounds.minY,Math.min(bounds.maxY,targetY))}).strength(1)).force("collide",forceCollide().radius(function(d){return d.radius+BEESWARM_CONFIG.COLLISION_PADDING}).strength(0.9).iterations(3));if(simulation&&typeof simulation.stop==="function"){simulation.stop()}}catch(error){setSimulatedNodes([].concat(nodes));return}var constrainNode=function constrainNode(node,isFinal){if(isFinal===void 0){isFinal=false}var correctY=yScaleWithPadding(node.value);node.y=Math.max(bounds.minY,Math.min(bounds.maxY,correctY));node.vy=0;var nodeMinX=node.groupCenterX-node.maxSpread;var nodeMaxX=node.groupCenterX+node.maxSpread;var constrainedMinX=Math.max(bounds.minX,nodeMinX);var constrainedMaxX=Math.min(bounds.maxX,nodeMaxX);if(isFinal){if(node.x<constrainedMinX){node.x=constrainedMinX}else if(node.x>constrainedMaxX){node.x=constrainedMaxX}}else{var overflowMargin=node.maxSpread*0.1;if(node.x<constrainedMinX-overflowMargin){node.x=constrainedMinX-overflowMargin;node.vx*=0.7}else if(node.x>constrainedMaxX+overflowMargin){node.x=constrainedMaxX+overflowMargin;node.vx*=0.7}}};if(simulation&&typeof simulation.tick==="function"){for(var i=0;i<BEESWARM_CONFIG.SIMULATION_ITERATIONS;i++){try{simulation.tick();nodes.forEach(function(node){return constrainNode(node,false)})}catch(error){break}}}// Final constraint pass
10
10
  nodes.forEach(function(node){constrainNode(node,true);node.vx=0});setSimulatedNodes([].concat(nodes))},[scales,data]);if(simulatedNodes.length===0||dimensions.width===0||!scales){return/*#__PURE__*/_jsx("div",{ref:containerRef,style:{width:"100%",height:"250px"}})}var margin={top:20,right:20,bottom:60,left:60};var xScale=scales.xScale,yScale=scales.yScale,innerWidth=scales.innerWidth,innerHeight=scales.innerHeight;var handleMouseOver=function handleMouseOver(event,node){if(containerRef.current){var containerRect=containerRef.current.getBoundingClientRect();var x=event.clientX-containerRect.left+10;var y=event.clientY-containerRect.top-10;showTooltip({tooltipLeft:x,tooltipTop:y,tooltipData:node})}};var actualChartWidth=Math.max(innerWidth,xScale.range()[1]||0);var actualSvgWidth=actualChartWidth+margin.left+margin.right;return/*#__PURE__*/_jsxs("div",{ref:containerRef,style:{width:"100%",height:"250px",position:"relative"},children:[/*#__PURE__*/_jsx("svg",{ref:svgRef,width:Math.max(dimensions.width,actualSvgWidth),height:dimensions.height,onMouseLeave:hideTooltip,children:/*#__PURE__*/_jsxs(Group,{left:margin.left,top:margin.top,children:[/*#__PURE__*/_jsx(GridRows,{scale:yScale,width:actualChartWidth,strokeDasharray:"3,3",stroke:"#e0e0e0",strokeOpacity:0.5}),/*#__PURE__*/_jsx(AxisLeft,{scale:yScale,tickStroke:"#666",stroke:"#666",tickLabelProps:function tickLabelProps(){return{fill:"#666",fontSize:12,textAnchor:"end",dy:"0.33em"}}}),/*#__PURE__*/_jsx(AxisBottom,{top:innerHeight,scale:xScale,tickStroke:"#666",stroke:"#666",tickLabelProps:function tickLabelProps(){return{fill:"#666",fontSize:12,textAnchor:"middle"}}}),simulatedNodes.map(function(node,i){return/*#__PURE__*/_jsx(Circle,{cx:node.x||0,cy:node.y||0,r:node.radius,fill:color,opacity:0.8,stroke:color,strokeWidth:1,onMouseOver:function onMouseOver(e){return handleMouseOver(e,node)},style:{cursor:"pointer"}},i)})]})}),tooltipOpen&&tooltipData&&tooltipLeft!==null&&tooltipLeft!==undefined&&tooltipTop!==null&&tooltipTop!==undefined&&/*#__PURE__*/_jsx(TooltipWithBounds,{left:tooltipLeft,top:tooltipTop,style:_extends({},defaultStyles,{backgroundColor:"white",border:"1px solid #e0e0e0",borderRadius:"4px",padding:"8px 12px",boxShadow:"0 2px 8px rgba(0,0,0,0.15)",fontSize:"12px",position:"absolute",zIndex:1000,pointerEvents:"none"}),children:/*#__PURE__*/_jsxs("div",{children:[/*#__PURE__*/_jsxs("div",{style:{marginBottom:"4px",fontWeight:600},children:[groupBy,": ",tooltipData.group]}),/*#__PURE__*/_jsxs("div",{children:[valueKey,": ",formatValue(tooltipData.value,decimalPrecision)]})]})})]})}function renderChartComponent(chartType,data,config,decimalPrecision){if(decimalPrecision===void 0){decimalPrecision=2}var safeData=Array.isArray(data)?data:[];if(safeData.length===0){return renderNoDataFallback()}switch(chartType){case"pie":return/*#__PURE__*/_jsxs(PieChart,{children:[safeData.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true,decimalPrecision:decimalPrecision})}),/*#__PURE__*/_jsx(Pie,{data:safeData,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:safeData.length<20?function(_ref3){var name=_ref3.name,percent=_ref3.percent;return name+": "+formatValue(percent*100,decimalPrecision)+"%"}:undefined,labelLine:false})]});case"bar":{config.dataKeys=config.dataKeys||[];var barDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];var angle=config.angle?config.angle:0;var radian=Math.abs(angle)*(Math.PI/180);var maxLabelLength=safeData.reduce(function(max,item){var label=String(item[config.xAxis]||"");return Math.max(max,Math.min(label.length,28))},0);var multiplier=Math.floor(Math.max(Math.sin(radian),0.3)*6);var axisHeight=40+maxLabelLength*multiplier;return/*#__PURE__*/_jsxs(BarChart,_extends({data:safeData},config.chartUi,barDataKeys.length>1&&{barGap:0},{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,_extends({dataKey:config.xAxis},config.angle&&{interval:0,angle:angle,height:axisHeight,textAnchor:"end"},{tickFormatter:function tickFormatter(value){return value.length>25?value.slice(0,25)+"...":value}})),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(Legend,{align:"left",wrapperStyle:{marginLeft:20}}),barDataKeys.map(function(_ref4){var key=_ref4.key,name=_ref4.name,color=_ref4.color;return/*#__PURE__*/_jsx(Bar,{dataKey:key,fill:color!=null?color:"#4caf50",name:name,radius:2},key)}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed",decimalPrecision:decimalPrecision})})]}))}case"line":{config.dataKeys=config.dataKeys||[];var safeDataKeysLine=Array.isArray(config.dataKeys)?config.dataKeys:[];return/*#__PURE__*/_jsxs(LineChart,_extends({data:safeData},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed",decimalPrecision:decimalPrecision})}),safeDataKeysLine.map(function(_ref5){var key=_ref5.key,name=_ref5.name,color=_ref5.color;return/*#__PURE__*/_jsx(Line,{type:"monotone",dataKey:key,stroke:color!=null?color:"#4caf50",name:name},key)}),/*#__PURE__*/_jsx(Legend,{align:"left"})]}))}case"scatter":{config.dataKeys=config.dataKeys||[];var safeDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];var scatterData=transformDataForScatter(safeData,config.xAxis,config.yAxis,safeDataKeys);if(scatterData.length===0){return renderNoDataFallback()}var colors=safeDataKeys.length>0?safeDataKeys.map(function(_ref6){var color=_ref6.color;return color!=null?color:"#2A44D4"}):["#2A44D4"];return/*#__PURE__*/_jsxs(ScatterChart,_extends({data:scatterData},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{type:"number",dataKey:config.xAxis,name:config.xAxis||"X Axis",domain:["auto","auto"]}),/*#__PURE__*/_jsx(YAxis,{type:"number",dataKey:config.yAxis,name:config.yAxis||"Y Axis",domain:["auto","auto"]}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:{strokeDasharray:"3 3"},content:/*#__PURE__*/_jsx(ChartTooltipContent,{decimalPrecision:decimalPrecision})}),safeDataKeys.length>0?safeDataKeys.map(function(_ref7,index){var key=_ref7.key,name=_ref7.name,color=_ref7.color;return/*#__PURE__*/_jsx(Scatter,{name:name||key,dataKey:key||config.yAxis,fill:color!=null?color:colors[index%colors.length]},key)}):/*#__PURE__*/_jsx(Scatter,{name:"Data",dataKey:config.yAxis,fill:colors[0]}),/*#__PURE__*/_jsx(Legend,{align:"left"})]}))}case"histogram":{config.dataKeys=config.dataKeys||[];var _safeDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];var valueKey=_safeDataKeys.length>0?_safeDataKeys[0].key:config.xAxis;var bins=config.bins||10;var binnedData=binDataForHistogram(safeData,valueKey,bins);if(binnedData.length===0){return renderNoDataFallback()}var color=_safeDataKeys.length>0?_safeDataKeys[0].color:"#2A44D4";return/*#__PURE__*/_jsxs(BarChart,_extends({data:binnedData},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:"bin",angle:-45,textAnchor:"end",height:80}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed",decimalPrecision:decimalPrecision})}),/*#__PURE__*/_jsx(Bar,{dataKey:"frequency",fill:color,radius:2,children:binnedData.map(function(entry,index){return/*#__PURE__*/_jsx(Cell,{fill:color},"cell-"+index)})}),/*#__PURE__*/_jsx(Legend,{align:"left"})]}))}case"beeswarm":{var _config$dataKeys$,_config$dataKeys$2;var groupBy=config.groupBy||config.xAxis;var _valueKey=config.valueKey||config.dataKeys&&((_config$dataKeys$=config.dataKeys[0])==null?void 0:_config$dataKeys$.key)||"value";var _transformDataForBees=transformDataForBeeswarm(safeData,groupBy,_valueKey),nodes=_transformDataForBees.nodes,groups=_transformDataForBees.groups;if(nodes.length===0||groups.length===0){return renderNoDataFallback()}var _color=config.dataKeys&&(_config$dataKeys$2=config.dataKeys[0])!=null&&_config$dataKeys$2.color?config.dataKeys[0].color:"#2A44D4";return/*#__PURE__*/_jsx(BeeswarmChart,{data:nodes,groups:groups,color:_color,groupBy:groupBy,valueKey:_valueKey,decimalPrecision:decimalPrecision})}default:return/*#__PURE__*/_jsxs(PieChart,{children:[safeData.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true,decimalPrecision:decimalPrecision})}),/*#__PURE__*/_jsx(Pie,{data:safeData,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:safeData.length<20?function(_ref8){var name=_ref8.name,percent=_ref8.percent;return name+": "+formatValue(percent*100,decimalPrecision)+"%"}:undefined,labelLine:false})]})}}export function renderChart(props){var _attributes$isEditabl2;var gjsModel=props.gjsModel,_props$performInterac2=props.performInteraction,performInteraction=_props$performInterac2===void 0?function(){return Promise.resolve({})}:_props$performInterac2,_props$isTemplateView3=props.isTemplateView,isTemplateView=_props$isTemplateView3===void 0?false:_props$isTemplateView3,rest=_objectWithoutPropertiesLoose(props,_excluded3);// Memoize filtered props to avoid re-filtering on every render
11
11
  var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState8=useState(initialData),allData=_useState8[0],setAllData=_useState8[1];var _useState9=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState9[0],setAttributes=_useState9[1];var isEditable=(_attributes$isEditabl2=attributes.isEditable)!=null?_attributes$isEditabl2:false;var containerRef=useRef(null);var _useState10=useState(0),containerWidth=_useState10[0],setContainerWidth=_useState10[1];useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){var handleAttributesChange=function handleAttributesChange(){var newAttributes=gjsModel.get("attributes");setAttributes(_extends({},newAttributes))};gjsModel.on("change:attributes",handleAttributesChange);return function(){gjsModel.off("change:attributes",handleAttributesChange)}},[gjsModel]);useEffect(function(){var updateContainerWidth=function updateContainerWidth(){if(containerRef.current){setContainerWidth(containerRef.current.offsetWidth||0)}};var resizeObserver=new ResizeObserver(function(entries){for(var _iterator3=_createForOfIteratorHelperLoose(entries),_step3;!(_step3=_iterator3()).done;){var entry=_step3.value;setContainerWidth(entry.contentRect.width||0)}});updateContainerWidth();var timeoutId=setTimeout(updateContainerWidth,50);if(containerRef.current){resizeObserver.observe(containerRef.current)}window.addEventListener("resize",updateContainerWidth);return function(){clearTimeout(timeoutId);resizeObserver.disconnect();window.removeEventListener("resize",updateContainerWidth)}},[]);useEffect(function(){},[containerRef.current]);var _allData$config=allData.config,config=_allData$config===void 0?{}:_allData$config,_allData$chartType=allData.chartType,chartType=_allData$chartType===void 0?"pie":_allData$chartType,_allData$chartData=allData.chartData,chartData=_allData$chartData===void 0?[]:_allData$chartData,className=allData.className,_allData$title=allData.title,title=_allData$title===void 0?"Title":_allData$title,_allData$subTitle=allData.subTitle,subTitle=_allData$subTitle===void 0?"Subtitle":_allData$subTitle,sampleData=allData.sampleData,decimalPrecision=allData.decimalPrecision;var effectiveChartData=isTemplateView&&sampleData!==undefined?sampleData:chartData;var defaultClasses="aspect-auto w-full min-w-[200px] min-h-[200px]";var mergedClasses=className?cn(defaultClasses,className):defaultClasses;var renderChartData=effectiveChartData;if(chartType==="pie"){var safeChartData=Array.isArray(effectiveChartData)?effectiveChartData:[];var colors=getNColors(safeChartData.length);renderChartData=safeChartData.map(function(data,i){return _extends({},data,{fill:data.fill||colors[i]})})}else if(!config.color){var safeBaseColors=Array.isArray(baseColors)?baseColors:[];if(safeBaseColors.length>0){config.color=safeBaseColors[Math.floor(Math.random()*safeBaseColors.length)]}}var totalDataPoints=0;if(chartType==="bar"||chartType==="line"||chartType==="scatter"||chartType==="histogram"||chartType==="beeswarm"){var _safeChartData=Array.isArray(effectiveChartData)?effectiveChartData:[];var safeDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];if(chartType==="bar"){totalDataPoints=_safeChartData.length*Math.max(1,safeDataKeys.length)}else{totalDataPoints=_safeChartData.length}}var getScrollableWidth=function getScrollableWidth(){if(chartType==="line"){return totalDataPoints*20}if(chartType==="bar"){return totalDataPoints*20+(Array.isArray(config.dataKeys)?config.dataKeys.length:0)*8*(Array.isArray(chartData)?chartData.length:0)+(Array.isArray(chartData)?chartData.length:0)*15}return 800};var scrollWidth=getScrollableWidth();var shouldScroll=(chartType==="bar"||chartType==="line"||chartType==="beeswarm"||chartType==="histogram"||chartType==="scatter")&&totalDataPoints>15&&scrollWidth>containerWidth;var adjustedHeight=250;var angle=config.angle?config.angle:0;var radian=Math.abs(angle)*(Math.PI/180);if(chartType==="bar"&&chartData&&Array.isArray(chartData)&&config.angle){var maxLabelLength=chartData.reduce(function(max,item){var label=String(item[config.xAxis]||"");return Math.max(max,Math.min(label.length,28))},0);var multiplier=Math.floor(Math.max(Math.sin(radian),0.3)*5);var axisHeight=40+maxLabelLength*multiplier;adjustedHeight=250+axisHeight}var hasError=attributes.error||allData.error;var hasMissing=attributes.isMissing||allData.isMissing;var hasSampleData=isTemplateView&&sampleData!==undefined;var isLoading=!hasSampleData&&(attributes.interactionApiInProgress||attributes.loading)&&!hasError&&!hasMissing;var ChartWrapper=function ChartWrapper(_ref9){var children=_ref9.children;if(shouldScroll){return/*#__PURE__*/_jsx("div",{className:"w-full overflow-x-auto",children:/*#__PURE__*/_jsx("div",{style:{minWidth:scrollWidth+"px",height:adjustedHeight+"px"},children:children})})}return/*#__PURE__*/_jsx("div",{className:"w-full",style:{height:adjustedHeight+"px"},children:children})};var chartUi=isLoading?/*#__PURE__*/_jsx(ChartLoader,{}):hasError||hasMissing||!effectiveChartData?renderNoDataFallback():/*#__PURE__*/_jsx(ChartWrapper,{children:/*#__PURE__*/_jsx(ChartContainer,_extends({},rest,{config:config,className:mergedClasses,style:{height:adjustedHeight+"px"},children:renderChartComponent(chartType,renderChartData,config,decimalPrecision!=null?decimalPrecision:2)}))});return/*#__PURE__*/_jsxs(Card,{className:"shadow border mt-2 mb-2 relative",children:[/*#__PURE__*/_jsx(CardHeader,{children:/*#__PURE__*/_jsx("div",{className:"flex items-start justify-between",children:/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"title",contentEditable:isEditable,className:"text-2xl",children:title}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"subTitle",contentEditable:isEditable,className:"text-sm",children:subTitle})]})})}),/*#__PURE__*/_jsx(CardContent,{"data-slot":"bodyContent",className:"px-6",style:{minHeight:"250px"},children:/*#__PURE__*/_jsx("div",{ref:containerRef,children:chartUi})}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData}),!isEditable&&/*#__PURE__*/_jsx("div",{className:"absolute bottom-2 right-2 flex items-center gap-1 z-10",children:/*#__PURE__*/_jsx(DownloadButton,{component:"chart",containerRef:containerRef,title:title,subtitle:subTitle,onDownloadCSV:(effectiveChartData==null?void 0:effectiveChartData.length)>0?/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var keys,headers,rows,csv,blob,url,anchor;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:keys=Object.keys(effectiveChartData[0]);headers=keys.map(function(key){var _config$key;return((_config$key=config[key])==null?void 0:_config$key.label)||key});rows=effectiveChartData.map(function(row){return keys.map(function(key){var val=row[key];var str=val===null||val===undefined?"":String(val);return str.includes(",")?"\""+str+"\"":str}).join(",")});csv=[headers.join(",")].concat(rows).join("\n");blob=new Blob([csv],{type:"text/csv"});url=URL.createObjectURL(blob);anchor=document.createElement("a");anchor.href=url;anchor.download=(title||"chart")+".csv";anchor.click();URL.revokeObjectURL(url);case 11:case"end":return _context.stop()}},_callee)})):undefined})})]})}function handleBulkAction(actionId,tableId,selectedValues,performInteraction,setSelectedIndices){return/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(){return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.next=2;return performInteraction({id:actionId,interactionType:"tableBulkButton",payload:{rows:selectedValues,tableId:tableId},affectedComponents:getAffectedComponentsWithLoader([tableId],true)});case 2:setSelectedIndices([]);case 3:case"end":return _context2.stop()}},_callee2)}))}function BulkActionButton(_ref12){var action=_ref12.action,isEditable=_ref12.isEditable,attributes=_ref12.attributes,selectedValues=_ref12.selectedValues,tableId=_ref12.tableId,performInteraction=_ref12.performInteraction,setSelectedIndices=_ref12.setSelectedIndices;var _useState11=useState(false),isLoading=_useState11[0],setIsLoading=_useState11[1];var _ref13=action.action||{},formMapper=_ref13.formMapper,formButtonText=_ref13.formButtonText;var _useButtonForm=useButtonForm({formMapper:formMapper,isSubmitting:isLoading,formButtonText:formButtonText,onSubmit:function(){var _onSubmit=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(formData){var result;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:setIsLoading(true);_context3.prev=1;_context3.next=4;return performInteraction({id:action.id,interactionType:"tableBulkButton",payload:{rows:selectedValues,tableId:tableId,formData:formData},affectedComponents:getAffectedComponentsWithLoader([tableId],true)});case 4:result=_context3.sent;if(!(result&&result.errors)){_context3.next=7;break}throw{detail:result.errorMsg};case 7:setSelectedIndices([]);case 8:_context3.prev=8;setIsLoading(false);return _context3.finish(8);case 11:case"end":return _context3.stop()}},_callee3,null,[[1,,8,11]])}));function onSubmit(_x){return _onSubmit.apply(this,arguments)}return onSubmit}()}),openForm=_useButtonForm.openForm,FormDialog=_useButtonForm.FormDialog;var handleClick=/*#__PURE__*/function(){var _ref14=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(){return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:if(openForm()){_context4.next=8;break}setIsLoading(true);_context4.prev=2;_context4.next=5;return handleBulkAction(action.id,tableId,selectedValues,performInteraction,setSelectedIndices)();case 5:_context4.prev=5;setIsLoading(false);return _context4.finish(5);case 8:case"end":return _context4.stop()}},_callee4,null,[[2,,5,8]])}));return function handleClick(){return _ref14.apply(this,arguments)}}();return/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(TooltipButton,{className:action["class"],isEditable:isEditable,attributes:{interactionApiInProgress:isLoading,disabled:attributes.disabled},variant:action.variant,size:action.size,text:action.text,tooltipContent:action.tooltipContent,interact:handleClick,isDisabled:selectedValues.length===0},action.id),FormDialog]})}export function renderTable(props){var _attributes$isEditabl3;var gjsModel=props.gjsModel,_props$performInterac3=props.performInteraction,performInteraction=_props$performInterac3===void 0?function(){}:_props$performInterac3,navigateToPage=props.navigateToPage,downloadTable=props.downloadTable,_props$isTemplateView4=props.isTemplateView,isTemplateView=_props$isTemplateView4===void 0?false:_props$isTemplateView4,rest=_objectWithoutPropertiesLoose(props,_excluded4);// Memoize filtered props to avoid re-filtering on every render
12
- var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState12=useState(initialData),allData=_useState12[0],setAllData=_useState12[1];var _useState13=useState([]),selectedIndices=_useState13[0],setSelectedIndices=_useState13[1];var cardRef=useRef(null);var _useState14=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState14[0],setAttributes=_useState14[1];var isEditable=(_attributes$isEditabl3=attributes.isEditable)!=null?_attributes$isEditabl3:false;var rawData=allData.data,_allData$headerMapper=allData.headerMapper,rawHeaderMapper=_allData$headerMapper===void 0?{}:_allData$headerMapper,className=allData.className,_allData$title2=allData.title,title=_allData$title2===void 0?"Title":_allData$title2,_allData$subTitle2=allData.subTitle,subTitle=_allData$subTitle2===void 0?"Subtitle":_allData$subTitle2,_allData$actions=allData.actions,actions=_allData$actions===void 0?[]:_allData$actions,_allData$bulkSelector=allData.bulkSelectorActions,bulkSelectorActions=_allData$bulkSelector===void 0?[]:_allData$bulkSelector,pagination=allData.pagination,sampleData=allData.sampleData,decimalPrecision=allData.decimalPrecision,columnWithChipClass=allData.columnWithChipClass,chipStylesMapping=allData.chipStylesMapping,sortableFromProps=allData.sortable;var effectiveRawData=isTemplateView&&sampleData!==undefined?sampleData:rawData;var data=Array.isArray(effectiveRawData)?effectiveRawData:[];var isBulkSelectionEnabled=Array.isArray(bulkSelectorActions)&&bulkSelectorActions.length>0;var headerMapper=function(){var cleaned=_extends({},rawHeaderMapper);if("id"in cleaned){delete cleaned.id}if(data.length>0){var dataKeys=Object.keys(data[0]||{});return Object.fromEntries(Object.entries(cleaned).filter(function(_ref15){var key=_ref15[0];return dataKeys.includes(key)}))}return cleaned}();var sortConfig=function(_gjsModel$get,_ref17){var _ref16=(_gjsModel$get=gjsModel.get("componentProps"))!=null?_gjsModel$get:{},sortColumn=_ref16.sortColumn,sortDirection=_ref16.sortDirection;return sortColumn&&sortDirection?(_ref17={},_ref17[sortColumn]=sortDirection,_ref17):{}}();var _useState15=useState(250),scrollAreaHeight=_useState15[0],setScrollAreaHeight=_useState15[1];var calculateTableHeight=function calculateTableHeight(rowCount){var baseTableHeight=250;var headerHeight=48;var rowHeight=40;var calculatedHeight=headerHeight+rowCount*rowHeight;setScrollAreaHeight(Math.min(calculatedHeight,baseTableHeight))};useEffect(function(){calculateTableHeight(Array.isArray(data)?data.length:0)},[data]);useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){var handleAttributesChange=function handleAttributesChange(){setAttributes(_extends({},gjsModel.get("attributes")))};gjsModel.on("change:attributes",handleAttributesChange);return function(){gjsModel.off("change:attributes",handleAttributesChange)}},[gjsModel]);var parsedData=function(){if(typeof data==="object"&&data!==null&&!Array.isArray(data)&&data.name==="__peak_placeholder"){return[]}if(!Array.isArray(data)){return[]}return data.map(function(datum){var newData=_extends({},datum);delete newData.id;return newData})}();var selectedValues=useMemo(function(){return selectedIndices.map(function(idx){return data==null?void 0:data[idx]}).filter(Boolean)},[selectedIndices,data]);function onRowAction(_x2,_x3,_x4){return _onRowAction.apply(this,arguments)}function _onRowAction(){_onRowAction=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(rowIndex,actionId,formData){var id,result;return _regeneratorRuntime.wrap(function _callee5$(_context5){while(1)switch(_context5.prev=_context5.next){case 0:id=gjsModel.get("id");_context5.next=3;return performInteraction({id:actionId,interactionType:"tableButton",payload:_extends({row:data[rowIndex],tableId:id},formData&&{formData:formData}),affectedComponents:[]});case 3:result=_context5.sent;if(!(result&&result.errors)){_context5.next=6;break}throw{detail:result.errorMsg};case 6:case"end":return _context5.stop()}},_callee5)}));return _onRowAction.apply(this,arguments)}function onPageChange(_x5,_x6){return _onPageChange.apply(this,arguments)}function _onPageChange(){_onPageChange=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6(pageNumber,pageSize){var _gjsModel$get2;var id,_ref18,sortColumn,sortDirection;return _regeneratorRuntime.wrap(function _callee6$(_context6){while(1)switch(_context6.prev=_context6.next){case 0:id=gjsModel.get("id");_ref18=(_gjsModel$get2=gjsModel.get("componentProps"))!=null?_gjsModel$get2:{},sortColumn=_ref18.sortColumn,sortDirection=_ref18.sortDirection;_context6.next=4;return performInteraction({id:id,interactionType:"pagination",payload:_extends({pageNumber:pageNumber,pageSize:pageSize},sortColumn&&sortDirection&&{sortColumn:sortColumn,sortDirection:sortDirection}),affectedComponents:getAffectedComponentsWithLoader([id],true)});case 4:setSelectedIndices([]);case 5:case"end":return _context6.stop()}},_callee6)}));return _onPageChange.apply(this,arguments)}function handleSort(_x7,_x8){return _handleSort.apply(this,arguments)}function _handleSort(){_handleSort=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee7(column,direction){var currentProps,id;return _regeneratorRuntime.wrap(function _callee7$(_context7){while(1)switch(_context7.prev=_context7.next){case 0:currentProps=gjsModel.get("componentProps");id=gjsModel.get("id");gjsModel.set("componentProps",_extends({},currentProps,{sortColumn:direction?column:null,sortDirection:direction}));_context7.next=5;return performInteraction({id:id,interactionType:"tableSort",payload:{sortColumn:direction?column:null,sortDirection:direction,tableId:id},affectedComponents:getAffectedComponentsWithLoader([id],true)});case 5:setSelectedIndices([]);case 6:case"end":return _context7.stop()}},_callee7)}));return _handleSort.apply(this,arguments)}return/*#__PURE__*/_jsxs(Card,{ref:cardRef,className:"shadow border relative flex flex-col h-fit overflow-hidden","data-component-type":"table","data-table-id":gjsModel.get("id"),children:[/*#__PURE__*/_jsx(CardHeader,{children:/*#__PURE__*/_jsxs("div",{className:"flex items-start justify-between",children:[/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"title",contentEditable:isEditable,className:"text-2xl",children:title}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"subTitle",contentEditable:isEditable,className:"text-sm",children:subTitle})]}),isBulkSelectionEnabled&&/*#__PURE__*/_jsx("div",{className:cn("flex gap-2",isEditable&&"pr-8"),children:bulkSelectorActions.map(function(action){return/*#__PURE__*/_jsx(BulkActionButton,{action:action,isEditable:isEditable,attributes:attributes,selectedValues:selectedValues,tableId:gjsModel.get("id"),performInteraction:performInteraction,setSelectedIndices:setSelectedIndices},action.id)})})]})}),/*#__PURE__*/_jsx(CardContent,{"data-slot":"bodyContent",contentEditable:false,className:"flex-1 flex flex-col overflow-hidden",children:attributes.error||allData.error||attributes.isMissing||allData.isMissing?renderNoDataFallback():/*#__PURE__*/_jsx(DataTable,{data:parsedData,headerMapper:headerMapper,className:className,isEditable:isEditable,actions:actions,pagination:pagination,isLoading:!(isTemplateView&&sampleData!==undefined)&&(attributes.interactionApiInProgress||attributes.loading),onRowAction:onRowAction,onPageChange:onPageChange,onSort:handleSort,sortConfig:sortConfig,sortable:sortableFromProps!==false,otherProps:rest,height:scrollAreaHeight,decimalPrecision:decimalPrecision,columnWithChipClass:columnWithChipClass,chipStylesMapping:chipStylesMapping,navigateToPage:navigateToPage,isBulkSelectionEnabled:isBulkSelectionEnabled,selectedIndices:selectedIndices,setSelectedIndices:setSelectedIndices,title:title,onDownload:downloadTable?function(limit){return downloadTable({tableId:gjsModel.get("id"),title:title,limit:limit,headerMapper:headerMapper})}:undefined})}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:performInteraction,position:"top-right",tableActions:actions,firstRowData:Array.isArray(data)&&data.length>0?data[0]:{},isVisible:isEditable,componentProps:allData})]})}export function renderTab(props){var tabsWidth=157;var safeTabs=Array.isArray(props.tabs)?props.tabs:[];var showFallback=safeTabs.length===0;if(safeTabs.length>4){tabsWidth=157}var defaultValue=props.defaultValue||(safeTabs.length>0?safeTabs[0]:undefined);useEffect(function(){if(props.gjsModel){var componentId=props.gjsModel.get("id");var childrenCount=props.gjsModel.components().length;if(safeTabs.length>0&&childrenCount===0){// eslint-disable-next-line no-console
12
+ var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState12=useState(initialData),allData=_useState12[0],setAllData=_useState12[1];var _useState13=useState([]),selectedIndices=_useState13[0],setSelectedIndices=_useState13[1];var cardRef=useRef(null);var _useState14=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState14[0],setAttributes=_useState14[1];var isEditable=(_attributes$isEditabl3=attributes.isEditable)!=null?_attributes$isEditabl3:false;var rawData=allData.data,_allData$headerMapper=allData.headerMapper,rawHeaderMapper=_allData$headerMapper===void 0?{}:_allData$headerMapper,className=allData.className,_allData$title2=allData.title,title=_allData$title2===void 0?"Title":_allData$title2,_allData$subTitle2=allData.subTitle,subTitle=_allData$subTitle2===void 0?"Subtitle":_allData$subTitle2,_allData$actions=allData.actions,actions=_allData$actions===void 0?[]:_allData$actions,_allData$bulkSelector=allData.bulkSelectorActions,bulkSelectorActions=_allData$bulkSelector===void 0?[]:_allData$bulkSelector,pagination=allData.pagination,sampleData=allData.sampleData,decimalPrecision=allData.decimalPrecision,columnWithChipClass=allData.columnWithChipClass,chipStylesMapping=allData.chipStylesMapping,sortableFromProps=allData.sortable;var effectiveRawData=isTemplateView&&sampleData!==undefined?sampleData:rawData;var data=Array.isArray(effectiveRawData)?effectiveRawData:[];var isBulkSelectionEnabled=Array.isArray(bulkSelectorActions)&&bulkSelectorActions.length>0;var headerMapper=function(){var cleaned=_extends({},rawHeaderMapper);if("id"in cleaned){delete cleaned.id}if(data.length>0){var dataKeys=Object.keys(data[0]||{});return Object.fromEntries(Object.entries(cleaned).filter(function(_ref15){var key=_ref15[0];return dataKeys.includes(key)}))}return cleaned}();var sortConfig=function(_gjsModel$get,_ref17){var _ref16=(_gjsModel$get=gjsModel.get("componentProps"))!=null?_gjsModel$get:{},sortColumn=_ref16.sortColumn,sortDirection=_ref16.sortDirection;return sortColumn&&sortDirection?(_ref17={},_ref17[sortColumn]=sortDirection,_ref17):{}}();var _useState15=useState(250),scrollAreaHeight=_useState15[0],setScrollAreaHeight=_useState15[1];var calculateTableHeight=function calculateTableHeight(rowCount){var baseTableHeight=250;var headerHeight=48;var rowHeight=40;var calculatedHeight=headerHeight+rowCount*rowHeight;var total=pagination==null?void 0:pagination.totalCount;var height=Math.min(calculatedHeight,1100);if(total){height=Math.min(calculatedHeight,baseTableHeight)}setScrollAreaHeight(height)};useEffect(function(){calculateTableHeight(Array.isArray(data)?data.length:0)},[data]);useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){var handleAttributesChange=function handleAttributesChange(){setAttributes(_extends({},gjsModel.get("attributes")))};gjsModel.on("change:attributes",handleAttributesChange);return function(){gjsModel.off("change:attributes",handleAttributesChange)}},[gjsModel]);var parsedData=function(){if(typeof data==="object"&&data!==null&&!Array.isArray(data)&&data.name==="__peak_placeholder"){return[]}if(!Array.isArray(data)){return[]}return data.map(function(datum){var newData=_extends({},datum);delete newData.id;return newData})}();var selectedValues=useMemo(function(){return selectedIndices.map(function(idx){return data==null?void 0:data[idx]}).filter(Boolean)},[selectedIndices,data]);function onRowAction(_x2,_x3,_x4){return _onRowAction.apply(this,arguments)}function _onRowAction(){_onRowAction=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(rowIndex,actionId,formData){var id,result;return _regeneratorRuntime.wrap(function _callee5$(_context5){while(1)switch(_context5.prev=_context5.next){case 0:id=gjsModel.get("id");_context5.next=3;return performInteraction({id:actionId,interactionType:"tableButton",payload:_extends({row:data[rowIndex],tableId:id},formData&&{formData:formData}),affectedComponents:[]});case 3:result=_context5.sent;if(!(result&&result.errors)){_context5.next=6;break}throw{detail:result.errorMsg};case 6:case"end":return _context5.stop()}},_callee5)}));return _onRowAction.apply(this,arguments)}function onPageChange(_x5,_x6){return _onPageChange.apply(this,arguments)}function _onPageChange(){_onPageChange=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6(pageNumber,pageSize){var _gjsModel$get2;var id,_ref18,sortColumn,sortDirection;return _regeneratorRuntime.wrap(function _callee6$(_context6){while(1)switch(_context6.prev=_context6.next){case 0:id=gjsModel.get("id");_ref18=(_gjsModel$get2=gjsModel.get("componentProps"))!=null?_gjsModel$get2:{},sortColumn=_ref18.sortColumn,sortDirection=_ref18.sortDirection;_context6.next=4;return performInteraction({id:id,interactionType:"pagination",payload:_extends({pageNumber:pageNumber,pageSize:pageSize},sortColumn&&sortDirection&&{sortColumn:sortColumn,sortDirection:sortDirection}),affectedComponents:getAffectedComponentsWithLoader([id],true)});case 4:setSelectedIndices([]);case 5:case"end":return _context6.stop()}},_callee6)}));return _onPageChange.apply(this,arguments)}function handleSort(_x7,_x8){return _handleSort.apply(this,arguments)}function _handleSort(){_handleSort=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee7(column,direction){var currentProps,id;return _regeneratorRuntime.wrap(function _callee7$(_context7){while(1)switch(_context7.prev=_context7.next){case 0:currentProps=gjsModel.get("componentProps");id=gjsModel.get("id");gjsModel.set("componentProps",_extends({},currentProps,{sortColumn:direction?column:null,sortDirection:direction}));_context7.next=5;return performInteraction({id:id,interactionType:"tableSort",payload:{sortColumn:direction?column:null,sortDirection:direction,tableId:id},affectedComponents:getAffectedComponentsWithLoader([id],true)});case 5:setSelectedIndices([]);case 6:case"end":return _context7.stop()}},_callee7)}));return _handleSort.apply(this,arguments)}return/*#__PURE__*/_jsxs(Card,{ref:cardRef,className:"shadow border relative flex flex-col h-fit overflow-hidden","data-component-type":"table","data-table-id":gjsModel.get("id"),children:[/*#__PURE__*/_jsx(CardHeader,{children:/*#__PURE__*/_jsxs("div",{className:"flex items-start justify-between",children:[/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"title",contentEditable:isEditable,className:"text-2xl",children:title}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"subTitle",contentEditable:isEditable,className:"text-sm",children:subTitle})]}),isBulkSelectionEnabled&&/*#__PURE__*/_jsx("div",{className:cn("flex gap-2",isEditable&&"pr-8"),children:bulkSelectorActions.map(function(action){return/*#__PURE__*/_jsx(BulkActionButton,{action:action,isEditable:isEditable,attributes:attributes,selectedValues:selectedValues,tableId:gjsModel.get("id"),performInteraction:performInteraction,setSelectedIndices:setSelectedIndices},action.id)})})]})}),/*#__PURE__*/_jsx(CardContent,{"data-slot":"bodyContent",contentEditable:false,className:"flex-1 flex flex-col overflow-hidden",children:attributes.error||allData.error||attributes.isMissing||allData.isMissing?renderNoDataFallback():/*#__PURE__*/_jsx(DataTable,{data:parsedData,headerMapper:headerMapper,className:className,isEditable:isEditable,actions:actions,pagination:pagination,isLoading:!(isTemplateView&&sampleData!==undefined)&&(attributes.interactionApiInProgress||attributes.loading),onRowAction:onRowAction,onPageChange:onPageChange,onSort:handleSort,sortConfig:sortConfig,sortable:sortableFromProps!==false,otherProps:rest,height:scrollAreaHeight,decimalPrecision:decimalPrecision,columnWithChipClass:columnWithChipClass,chipStylesMapping:chipStylesMapping,navigateToPage:navigateToPage,isBulkSelectionEnabled:isBulkSelectionEnabled,selectedIndices:selectedIndices,setSelectedIndices:setSelectedIndices,title:title,onDownload:downloadTable?function(limit){return downloadTable({tableId:gjsModel.get("id"),title:title,limit:limit,headerMapper:headerMapper})}:undefined})}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:performInteraction,position:"top-right",tableActions:actions,firstRowData:Array.isArray(data)&&data.length>0?data[0]:{},isVisible:isEditable,componentProps:allData})]})}export function renderTab(props){var tabsWidth=157;var safeTabs=Array.isArray(props.tabs)?props.tabs:[];var showFallback=safeTabs.length===0;if(safeTabs.length>4){tabsWidth=157}var defaultValue=props.defaultValue||(safeTabs.length>0?safeTabs[0]:undefined);useEffect(function(){if(props.gjsModel){var componentId=props.gjsModel.get("id");var childrenCount=props.gjsModel.components().length;if(safeTabs.length>0&&childrenCount===0){// eslint-disable-next-line no-console
13
13
  console.warn("Tab component "+componentId+" has "+safeTabs.length+" tabs but no child components. This may indicate lost tab content.")}}},[safeTabs.length,props.gjsModel]);return/*#__PURE__*/_jsxs(Tabs,{defaultValue:defaultValue,children:[/*#__PURE__*/_jsx("div",{className:"text-center mb-4",children:/*#__PURE__*/_jsx(TabsList,{className:"bg-[#F9F9FE] border border-[#D4D5DE] p-1 rounded-lg h-auto",children:safeTabs.length>0?safeTabs.map(function(tab){return/*#__PURE__*/_jsx(TabsTrigger,{value:tab,className:"\n w-["+tabsWidth+"px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n ",style:{fontFamily:"Helvetica Neue",fontWeight:500,fontSize:"14px",lineHeight:"16px",letterSpacing:"0%"},children:tab},tab)}):/*#__PURE__*/_jsx(TabsTrigger,{value:"no-data",className:"\n w-["+tabsWidth+"px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n ",style:{fontFamily:"Helvetica Neue",fontWeight:500,fontSize:"14px",lineHeight:"16px",letterSpacing:"0%"},disabled:true,children:"No tabs"})})}),showFallback?/*#__PURE__*/_jsx(TabsContent,{value:defaultValue||"no-data",className:"tabs-content","data-fallback":"true",children:renderNoDataFallback()}):safeTabs.map(function(tab){return/*#__PURE__*/_jsx(TabsContent,{value:tab,className:"tabs-content"},tab)})]})}export function renderMarkdown(props){var _attributes$isEditabl4;var gjsModel=props.gjsModel,_props$isTemplateView5=props.isTemplateView,isTemplateView=_props$isTemplateView5===void 0?false:_props$isTemplateView5,rest=_objectWithoutPropertiesLoose(props,_excluded5);// Memoize filtered props to avoid re-filtering on every render
14
14
  var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState16=useState(initialData),allData=_useState16[0],setAllData=_useState16[1];var _useState17=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState17[0],setAttributes=_useState17[1];var isEditable=(_attributes$isEditabl4=attributes.isEditable)!=null?_attributes$isEditabl4:false;useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){var handleAttributesChange=function handleAttributesChange(){setAttributes(_extends({},gjsModel.get("attributes")))};gjsModel.on("change:attributes",handleAttributesChange);return function(){gjsModel.off("change:attributes",handleAttributesChange)}},[gjsModel]);var _useState18=useState(false),isEditing=_useState18[0],setIsEditing=_useState18[1];var _useState19=useState(false),isEditingHeading=_useState19[0],setIsEditingHeading=_useState19[1];var editRef=useRef(null);var headingEditRef=useRef(null);var startEditing=function startEditing(){setIsEditing(true);setTimeout(function(){setupEditor()},0)};var startEditingHeading=function startEditingHeading(){setIsEditingHeading(true);setTimeout(function(){setupHeadingEditor()},0)};var setupEditor=function setupEditor(){if(!editRef.current){return}var editor=editRef.current;editor.innerHTML="";var effectiveText=isTemplateView&&allData.sampleData!==undefined?allData.sampleData:allData.summaryText;editor.textContent=effectiveText;editor.focus()};var setupHeadingEditor=function setupHeadingEditor(){if(!headingEditRef.current){return}var editor=headingEditRef.current;editor.innerHTML="";editor.textContent=allData.summaryHeading||"Insights";editor.focus()};// Save changes and exit editing mode
15
15
  var saveChanges=function saveChanges(){if(!editRef.current){return}var content=editRef.current.innerText||"";setAllData(function(prev){return _extends({},prev,{summaryText:content})});setIsEditing(false);editRef.current.innerHTML=""};var saveHeadingChanges=function saveHeadingChanges(){if(!headingEditRef.current){return}var content=headingEditRef.current.innerText||"Insights";setAllData(function(prev){return _extends({},prev,{summaryHeading:content})});setIsEditingHeading(false);headingEditRef.current.innerHTML=""};var markdownStyles={ul:{props:{className:"list-disc"}},h1:{props:{className:"text-4xl font-bold leading-[4rem]"}},h2:{props:{className:"text-3xl font-bold leading-[3rem]"}},h3:{props:{className:"text-2xl font-bold leading-[2rem]"}},h4:{props:{className:"text-xl font-bold leading-[2.5rem]"}},h5:{props:{className:"text-lg font-bold leading-[2.5rem]"}},h6:{props:{className:"text-base font-bold leading-[2rem]"}}};var summaryText=allData.summaryText,summaryHeading=allData.summaryHeading,sampleData=allData.sampleData;var rawSummaryText=isTemplateView&&sampleData!==undefined?sampleData:summaryText;var effectiveSummaryText=typeof rawSummaryText==="string"?rawSummaryText:"";var hasError=attributes.error||allData.error;var hasMissing=attributes.isMissing||allData.isMissing;var hasSampleData=isTemplateView&&allData.sampleData!==undefined;var isLoading=!hasSampleData&&(attributes.loading&&!hasError&&!hasMissing||attributes.interactionApiInProgress);if(isLoading){return/*#__PURE__*/_jsx(MarkdownLoader,{})}if(hasError||hasMissing){return/*#__PURE__*/_jsxs("div",_extends({className:"px-[1em] relative"},rest,{children:[/*#__PURE__*/_jsx("h3",{className:"text-xl font-semibold text-left",children:summaryHeading||"Insights"}),/*#__PURE__*/_jsxs("div",{className:"w-full py-8 flex flex-col items-center justify-center px-6 text-center",style:{minHeight:"180px"},children:[/*#__PURE__*/_jsx(CircleAlert,{className:"w-12 h-12 text-gray-400 mb-2"}),/*#__PURE__*/_jsx("h3",{className:"text-lg font-medium text-gray-900",children:"No data available"}),/*#__PURE__*/_jsx("p",{className:"mt-2 text-sm text-gray-500 max-w-md",children:"Check your filters or try a different time range."})]}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:props.performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData})]}))}if(!isEditable){return/*#__PURE__*/_jsxs("div",_extends({className:"px-[1em] relative"},rest,{children:[/*#__PURE__*/_jsx("h3",{className:"text-xl font-semibold text-left",children:summaryHeading||"Insights"}),/*#__PURE__*/_jsx("div",{"data-slot":"summaryText",children:/*#__PURE__*/_jsx(Markdown,{options:{overrides:markdownStyles},children:effectiveSummaryText})}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:props.performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData})]}))}return/*#__PURE__*/_jsxs("div",_extends({className:"p-[1em] relative"},rest,{children:[isEditingHeading?/*#__PURE__*/_jsx("div",{ref:headingEditRef,contentEditable:true,onBlur:saveHeadingChanges,"data-slot":"summaryHeading",className:"text-xl font-semibold text-left",suppressContentEditableWarning:true}):/*#__PURE__*/_jsx("h3",{className:"text-xl font-semibold text-left",onClick:startEditingHeading,"data-slot":"summaryHeading",children:allData.summaryHeading||"Insights"}),isEditing?/*#__PURE__*/_jsx("div",{ref:editRef,contentEditable:true,onBlur:saveChanges,"data-slot":"summaryText",className:"p-2 min-h-[100px] whitespace-pre-wrap",suppressContentEditableWarning:true,style:{whiteSpace:"pre-wrap",wordWrap:"break-word"}}):/*#__PURE__*/_jsx("div",{onClick:startEditing,"data-slot":"summaryText",style:{whiteSpace:"pre-wrap",wordWrap:"break-word"},children:/*#__PURE__*/_jsx(Markdown,{options:{overrides:markdownStyles},children:effectiveSummaryText})}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:props.performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData})]}))}export function renderButton(props){var _attributes$isEditabl5;var gjsModel=props.gjsModel,_props$performInterac4=props.performInteraction,performInteraction=_props$performInterac4===void 0?function(){}:_props$performInterac4,navigateToPage=props.navigateToPage;var _useState20=useState(_extends({},props)),allData=_useState20[0],setAllData=_useState20[1];var _useState21=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState21[0],setAttributes=_useState21[1];var isEditable=(_attributes$isEditabl5=attributes.isEditable)!=null?_attributes$isEditabl5:false;useEffect(function(){gjsModel.on("change:componentProps",function(){setAllData(_extends({},gjsModel.get("componentProps")))})},[]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);var text=allData.text,className=allData.className,payload=allData.payload,_allData$variant=allData.variant,variant=_allData$variant===void 0?"default":_allData$variant,_allData$size=allData.size,size=_allData$size===void 0?"sm":_allData$size,affectedComponents=allData.affectedComponents,tooltipContent=allData.tooltipContent,onClick=allData.onClick,action=allData.action;var _ref19=action||{},formMapper=_ref19.formMapper,formButtonText=_ref19.formButtonText;var _useButtonForm2=useButtonForm({formMapper:formMapper,isSubmitting:attributes.interactionApiInProgress||false,onSubmit:function(){var _onSubmit2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee8(formData){var id,result;return _regeneratorRuntime.wrap(function _callee8$(_context8){while(1)switch(_context8.prev=_context8.next){case 0:id=gjsModel.get("id");_context8.next=3;return performInteraction({id:id,interactionType:"button",affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true),payload:_extends({},payload,{formData:formData})});case 3:result=_context8.sent;if(!(result&&result.errors)){_context8.next=6;break}throw{detail:result.errorMsg};case 6:case"end":return _context8.stop()}},_callee8)}));function onSubmit(_x9){return _onSubmit2.apply(this,arguments)}return onSubmit}(),formButtonText:formButtonText}),openForm=_useButtonForm2.openForm,FormDialog=_useButtonForm2.FormDialog;function interact(){if(openForm()){return}if(onClick&&onClick.action==="navigateToPage"){if(navigateToPage){navigateToPage(onClick.targetPageId)}return}var id=gjsModel.get("id");performInteraction({id:id,interactionType:"button",affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true),payload:payload})}return/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(TooltipButton,{className:className,isEditable:isEditable,interact:interact,attributes:attributes,variant:variant,size:size,text:text,tooltipContent:tooltipContent}),FormDialog]})}var renderActionCardWithWrapper=function renderActionCardWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"ActionCard"}),children:renderActionCard(props)})};var renderButtonWithWrapper=function renderButtonWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Button"}),children:renderButton(props)})};var renderCardWithWrapper=function renderCardWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Card"}),children:renderCard(props)})};var renderChartWithWrapper=function renderChartWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Chart"}),children:renderChart(props)})};var renderFilterWithWrapper=function renderFilterWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Filter"}),children:renderFilter(props)})};var renderUnifiedFilterWithWrapper=function renderUnifiedFilterWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"UnifiedFilter"}),children:renderUnifiedFilter(props)})};var renderMarkdownWithWrapper=function renderMarkdownWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Markdown"}),children:renderMarkdown(props)})};var renderSearchWithWrapper=function renderSearchWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Search"}),children:renderSearch(props)})};var renderTableWithWrapper=function renderTableWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Table"}),children:renderTable(props)})};var renderTabWithWrapper=function renderTabWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Tabs"}),children:renderTab(props)})};function renderActions(props){var actions=props.actions,_props$isEditable=props.isEditable,isEditable=_props$isEditable===void 0?false:_props$isEditable,gjsModel=props.gjsModel;if(actions===null){return/*#__PURE__*/_jsx("div",{})}if(!Array.isArray(actions)||actions.length===0){return/*#__PURE__*/_jsx("div",{className:"bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none relative",children:/*#__PURE__*/_jsx(CardLoader,{})})}return/*#__PURE__*/_jsx("div",{className:"dashboard-cards flex flex-wrap gap-4",children:actions.map(function(action,index){var icon=action.icon,title=action.title,description=action.description;return/*#__PURE__*/_jsx("div",{className:"flex-1 min-w-[200px]",children:renderActionCard({icon:icon,headerContent:title,bodyContent:description,isEditable:isEditable,gjsModel:gjsModel})},index)})})}var renderActionsWithWrapper=function renderActionsWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Actions"}),children:renderActions(props)})};export function getRenderers(){return{ActionCard:renderActionCardWithWrapper,Actions:renderActionsWithWrapper,Button:renderButtonWithWrapper,Card:renderCardWithWrapper,Chart:renderChartWithWrapper,Filter:renderFilterWithWrapper,Markdown:renderMarkdownWithWrapper,Search:renderSearchWithWrapper,Table:renderTableWithWrapper,Tabs:renderTabWithWrapper,UnifiedFilter:renderUnifiedFilterWithWrapper}}
@@ -1 +1 @@
1
- {"version":3,"file":"render-components.js","names":["chroma","React","useEffect","useState","useMemo","useCallback","useRef","renderNoDataFallback","CircleAlert","TrendingDown","TrendingUp","ShoppingCart","ChartBarBig","Tag","MapPin","StyledInfoButton","filterPlaceholders","theme","Markdown","Bar","BarChart","CartesianGrid","Legend","Line","LineChart","Pie","PieChart","Scatter","ScatterChart","XAxis","YAxis","Cell","domutil","Group","scaleBand","scaleLinear","AxisBottom","AxisLeft","GridRows","Circle","useTooltip","TooltipWithBounds","defaultStyles","forceSimulation","forceX","forceY","forceCollide","TooltipButton","Card","CardContent","CardDescription","CardFooter","CardHeader","CardTitle","ChartContainer","ChartTooltip","ChartTooltipContent","renderFilter","renderUnifiedFilter","renderSearch","CardLoader","ChartLoader","MarkdownLoader","Tabs","TabsContent","TabsList","TabsTrigger","cn","getAffectedComponentsWithLoader","formatValue","DataTable","ComponentWrapper","useButtonForm","DownloadButton","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","getOffset","el","html","ownerDocument","documentElement","box","top","left","getBoundingClientRect","iframe","document","querySelector","iframeWindow","contentWindow","pageYOffset","clientTop","pageXOffset","clientLeft","BEESWARM_CONFIG","RADIUS","SPREAD_FACTOR","RANDOM_FACTOR","SIMULATION_ITERATIONS","COLLISION_PADDING","baseColors","colors","Blue_100","Blue_30","Purpley_100","Purpley_30","Light_Bluish_Green","Wild_Strawberry","iconMap","Equalizer","Style","Place","getIconFromString","iconString","lowerIconString","toLowerCase","matchingKey","Object","keys","find","key","getNColors","n","safeBaseColors","Array","isArray","_iterator","_createForOfIteratorHelperLoose","_step","done","baseColor","value","push","scale","mode","getOneColor","existing","color","base","Math","floor","random","length","selectedColorIndex","includes","selectedColors","i","renderActionCard","props","gjsModel","_props$isTemplateView","isTemplateView","rest","_objectWithoutPropertiesLoose","_excluded","initialData","_useState","allData","setAllData","_allData$headerConten","headerContent","icon","_allData$bodyContent","bodyContent","sampleData","effectiveBodyContent","undefined","_useState2","_extends","get","attributes","setAttributes","handlePropsChange","newComponentProps","filteredProps","prevData","on","off","defaultClasses","className","style","backgroundColor","isEditable","contentEditable","children","error","isMissing","renderCard","_attributes$isEditabl","_attributes$error","_attributes$isMissing","_props$performInterac","performInteraction","Promise","resolve","_props$isTemplateView2","_excluded2","_useState3","headerDescription","footerContent","footerClass","footerIcon","contentMetadata","contentMetadataClass","dataClassName","dataError","dataIsMissing","toSafeText","JSON","stringify","safeHeaderContent","safeHeaderDescription","safeBodyContent","effectiveFooterContent","safeFooterContent","safeContentMetadata","_useState4","footerHasContent","setFooterHasContent","_useState5","defaultFooterClasses","defaultContentMetadataClasses","mergedCardClassName","effectiveFooterClass","mergedFooterClassName","mergedContentMetadataClassName","hasError","Boolean","hasMissing","hasSampleData","isLoading","interactionApiInProgress","loading","footerIconText","String","getCardContent","showEmpty","handleFooterInput","event","target","content","textContent","hasContent","trim","currentProps","set","isEmptied","onInput","componentId","position","isVisible","componentProps","transformDataForScatter","data","xAxis","yAxis","dataKeys","scatterData","filter","item","map","_result","result","Number","forEach","_ref","binDataForHistogram","valueKey","bins","values","val","isNaN","min","apply","max","binWidth","binsArray","fill","binLabels","binStart","binEnd","toFixed","binIndex","label","index","bin","frequency","transformDataForBeeswarm","groupBy","nodes","groups","grouped","group","sort","groupIndex","x","y","radius","BeeswarmChart","_ref2","_ref2$decimalPrecisio","decimalPrecision","containerRef","svgRef","_useState6","width","height","dimensions","setDimensions","_useState7","simulatedNodes","setSimulatedNodes","_useTooltip","tooltipData","tooltipLeft","tooltipTop","tooltipOpen","showTooltip","hideTooltip","updateDimensions","current","offsetWidth","resizeObserver","ResizeObserver","entries","_iterator2","_step2","entry","contentRect","observe","window","addEventListener","disconnect","removeEventListener","createXScale","innerWidth","groupDomain","minBandwidth","totalMinWidth","paddingRatio","xScale","domain","range","padding","currentBandwidth","bandwidth","scales","margin","right","bottom","innerHeight","d","minValue","maxValue","yScale","valueRange","yScaleWithPadding","actualChartWidth","bounds","minY","maxY","minX","maxX","initialY","clampedY","groupCenterX","maxSpread","randomOffset","simulation","force","strength","targetY","iterations","stop","concat","constrainNode","node","isFinal","correctY","vy","nodeMinX","nodeMaxX","constrainedMinX","constrainedMaxX","overflowMargin","vx","tick","ref","handleMouseOver","containerRect","clientX","clientY","actualSvgWidth","onMouseLeave","strokeDasharray","stroke","strokeOpacity","tickStroke","tickLabelProps","fontSize","textAnchor","dy","cx","cy","r","opacity","strokeWidth","onMouseOver","e","cursor","border","borderRadius","boxShadow","zIndex","pointerEvents","marginBottom","fontWeight","renderChartComponent","chartType","config","safeData","hideLabel","dataKey","nameKey","innerRadius","_ref3","name","percent","labelLine","barDataKeys","angle","radian","abs","PI","maxLabelLength","reduce","multiplier","sin","axisHeight","chartUi","barGap","vertical","interval","tickFormatter","slice","align","wrapperStyle","marginLeft","_ref4","indicator","safeDataKeysLine","_ref5","type","safeDataKeys","_ref6","_ref7","binnedData","_config$dataKeys$","_config$dataKeys$2","_transformDataForBees","_ref8","renderChart","_attributes$isEditabl2","_props$performInterac2","_props$isTemplateView3","_excluded3","_useState8","_useState9","_useState10","containerWidth","setContainerWidth","handleAttributesChange","newAttributes","updateContainerWidth","_iterator3","_step3","timeoutId","setTimeout","clearTimeout","_allData$config","_allData$chartType","_allData$chartData","chartData","_allData$title","title","_allData$subTitle","subTitle","effectiveChartData","mergedClasses","renderChartData","safeChartData","totalDataPoints","getScrollableWidth","scrollWidth","shouldScroll","adjustedHeight","ChartWrapper","_ref9","minWidth","minHeight","component","subtitle","onDownloadCSV","_asyncToGenerator","_regeneratorRuntime","mark","_callee","headers","rows","csv","blob","url","anchor","wrap","_callee$","_context","prev","next","_config$key","row","str","join","Blob","URL","createObjectURL","createElement","href","download","click","revokeObjectURL","handleBulkAction","actionId","tableId","selectedValues","setSelectedIndices","_callee2","_callee2$","_context2","id","interactionType","payload","affectedComponents","BulkActionButton","_ref12","action","_useState11","setIsLoading","_ref13","formMapper","formButtonText","_useButtonForm","isSubmitting","onSubmit","_onSubmit","_callee3","formData","_callee3$","_context3","sent","errors","detail","errorMsg","finish","_x","arguments","openForm","FormDialog","handleClick","_ref14","_callee4","_callee4$","_context4","disabled","variant","size","text","tooltipContent","interact","isDisabled","renderTable","_attributes$isEditabl3","_props$performInterac3","navigateToPage","downloadTable","_props$isTemplateView4","_excluded4","_useState12","_useState13","selectedIndices","cardRef","_useState14","rawData","_allData$headerMapper","headerMapper","rawHeaderMapper","_allData$title2","_allData$subTitle2","_allData$actions","actions","_allData$bulkSelector","bulkSelectorActions","pagination","columnWithChipClass","chipStylesMapping","sortableFromProps","sortable","effectiveRawData","isBulkSelectionEnabled","cleaned","fromEntries","_ref15","sortConfig","_gjsModel$get","_ref17","_ref16","sortColumn","sortDirection","_useState15","scrollAreaHeight","setScrollAreaHeight","calculateTableHeight","rowCount","baseTableHeight","headerHeight","rowHeight","calculatedHeight","parsedData","datum","newData","idx","onRowAction","_x2","_x3","_x4","_onRowAction","_callee5","rowIndex","_callee5$","_context5","onPageChange","_x5","_x6","_onPageChange","_callee6","pageNumber","pageSize","_gjsModel$get2","_ref18","_callee6$","_context6","handleSort","_x7","_x8","_handleSort","_callee7","column","direction","_callee7$","_context7","onSort","otherProps","onDownload","limit","tableActions","firstRowData","renderTab","tabsWidth","safeTabs","tabs","showFallback","defaultValue","childrenCount","components","console","warn","tab","fontFamily","lineHeight","letterSpacing","renderMarkdown","_attributes$isEditabl4","_props$isTemplateView5","_excluded5","_useState16","_useState17","_useState18","isEditing","setIsEditing","_useState19","isEditingHeading","setIsEditingHeading","editRef","headingEditRef","startEditing","setupEditor","startEditingHeading","setupHeadingEditor","editor","innerHTML","effectiveText","summaryText","focus","summaryHeading","saveChanges","innerText","saveHeadingChanges","markdownStyles","ul","h1","h2","h3","h4","h5","h6","rawSummaryText","effectiveSummaryText","options","overrides","onBlur","suppressContentEditableWarning","onClick","whiteSpace","wordWrap","renderButton","_attributes$isEditabl5","_props$performInterac4","_useState20","_useState21","_allData$variant","_allData$size","_ref19","_useButtonForm2","_onSubmit2","_callee8","_callee8$","_context8","_x9","targetPageId","renderActionCardWithWrapper","componentType","renderButtonWithWrapper","renderCardWithWrapper","renderChartWithWrapper","renderFilterWithWrapper","renderUnifiedFilterWithWrapper","renderMarkdownWithWrapper","renderSearchWithWrapper","renderTableWithWrapper","renderTabWithWrapper","renderActions","_props$isEditable","description","renderActionsWithWrapper","getRenderers","ActionCard","Actions","Button","Chart","Filter","Search","Table","UnifiedFilter"],"sources":["../../../src/plugins/helpers/render-components.tsx"],"sourcesContent":["/* eslint-disable no-nested-ternary */\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable func-style */\n/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable func-names */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport chroma from 'chroma-js';\nimport React, { useEffect, useState, useMemo, useCallback, JSX, useRef } from 'react';\nimport { renderNoDataFallback } from './extra';\nimport {\n CircleAlert,\n TrendingDown,\n TrendingUp,\n ShoppingCart,\n ChartBarBig,\n Tag,\n MapPin,\n} from 'lucide-react';\nimport { StyledInfoButton } from './styled-info-button';\nimport { filterPlaceholders } from '../../helpers/filter-placeholder';\n\nimport { theme } from '@peak-ai/ais-components/theme';\n\nimport Markdown from 'markdown-to-jsx';\n\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n Line,\n LineChart,\n Pie,\n PieChart,\n Scatter,\n ScatterChart,\n XAxis,\n YAxis,\n Cell,\n} from 'recharts/lib';\n\n// @ts-ignore\nimport * as domutil from 'recharts/lib/util/DOMUtils';\n\nimport { Group } from '@visx/group';\nimport { scaleBand, scaleLinear } from '@visx/scale';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { GridRows } from '@visx/grid';\nimport { Circle } from '@visx/shape';\nimport { useTooltip, TooltipWithBounds, defaultStyles } from '@visx/tooltip';\nimport { forceSimulation, forceX, forceY, forceCollide } from 'd3-force';\n\nimport { TooltipButton } from '../../shadcn/components/ui/button';\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from '../../shadcn/components/ui/card';\nimport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n} from '../../shadcn/components/ui/chart';\nimport { renderFilter } from '../../shadcn/components/ui/filter';\nimport { renderUnifiedFilter } from '../../shadcn/components/ui/unified-filter';\nimport { renderSearch } from '../../shadcn/components/ui/search';\nimport { CardLoader, ChartLoader, MarkdownLoader } from '../../shadcn/components/ui/skeleton';\nimport { SortDirection } from '../../shadcn/components/ui/table';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '../../shadcn/components/ui/tabs';\n\nimport { cn } from '../../shadcn/utils';\nimport { getAffectedComponentsWithLoader, formatValue } from '../../helpers';\nimport { DataTable } from './data-table';\nimport { ComponentWrapper } from '../../shadcn/components/ui/error-wrapper';\nimport { useButtonForm } from './button-form';\nimport { DownloadButton } from './download-data-button';\n\n// Monkey-patching the getOffset function to use iframe's window instead of global one\n// REMEMBER TO UDPATE THIS WHEN recharts IS UPGRADED\n// @ts-ignore\ndomutil.getOffset = (\n el: HTMLElement,\n): {\n top: number;\n left: number;\n} => {\n const html = el.ownerDocument.documentElement;\n let box = { top: 0, left: 0 };\n\n if (typeof el.getBoundingClientRect !== 'undefined') {\n box = el.getBoundingClientRect();\n }\n\n const iframe = document.querySelector('.gjs-frame');\n const iframeWindow = (iframe as any)?.contentWindow;\n\n return {\n top: box.top + iframeWindow.pageYOffset - html.clientTop,\n left: box.left + iframeWindow.pageXOffset - html.clientLeft,\n };\n};\n\nconst BEESWARM_CONFIG = {\n RADIUS: 4,\n SPREAD_FACTOR: 0.45,\n RANDOM_FACTOR: 2.0,\n SIMULATION_ITERATIONS: 300,\n COLLISION_PADDING: 3,\n} as const;\n\nconst baseColors = [\n [theme.colors.Blue_100, theme.colors.Blue_30],\n [theme.colors.Purpley_100, theme.colors.Purpley_30],\n [theme.colors.Light_Bluish_Green, '#06601b'],\n [theme.colors.Wild_Strawberry, '#4d001c'],\n];\n\nconst iconMap: Record<string, JSX.Element> = {\n TrendingUp: <TrendingUp />,\n TrendingDown: <TrendingDown />,\n ShoppingCart: <ShoppingCart />,\n Equalizer: <ChartBarBig />,\n Style: <Tag />,\n Place: <MapPin />,\n};\n\nfunction getIconFromString(iconString: string): JSX.Element | null {\n if (!iconString) {\n return null;\n }\n\n if (iconMap[iconString]) {\n return iconMap[iconString];\n }\n\n const lowerIconString = iconString.toLowerCase();\n const matchingKey = Object.keys(iconMap).find((key) => key.toLowerCase() === lowerIconString);\n\n if (matchingKey) {\n return iconMap[matchingKey];\n }\n\n return null;\n}\n\nfunction getNColors(n: number) {\n const colors: Array<string[]> = [];\n const safeBaseColors = Array.isArray(baseColors) ? baseColors : [];\n\n for (const baseColor of safeBaseColors) {\n // eslint-disable-next-line import/no-named-as-default-member\n colors.push(chroma.scale(baseColor).mode('lab').colors(n));\n }\n\n function getOneColor(existing: Array<string>) {\n let color: null | string = null;\n\n do {\n const base = colors[Math.floor(Math.random() * colors.length)];\n const selectedColorIndex = Math.floor(Math.random() * base.length);\n color = base[selectedColorIndex];\n } while (existing.includes(color));\n\n return color as string;\n }\n\n const selectedColors: Array<string> = [];\n\n for (let i = 0; i < n; i++) {\n selectedColors.push(getOneColor(selectedColors));\n }\n\n return selectedColors;\n}\n\n/* TODO: Loader remains */\nexport function renderActionCard(props: any): JSX.Element {\n const { gjsModel, isTemplateView = false, ...rest } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const {\n headerContent = 'Default action card title',\n icon,\n bodyContent = 'Default body content. Click to edit.',\n sampleData,\n } = allData;\n\n const effectiveBodyContent =\n isTemplateView && sampleData !== undefined ? sampleData : bodyContent;\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData,\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const defaultClasses = 'text-black p-4 rounded-lg shadow border flex flex-col h-full';\n\n return (\n <Card\n className={`${defaultClasses} relative`}\n style={{ backgroundColor: '#f9f9fe' }}\n isEditable={false}\n contentEditable={false}\n {...rest}\n >\n <CardContent className=\"p-0\" isEditable={false} contentEditable={false}>\n <div className=\"px-4 py-3\">\n <div className=\"flex items-start flex-col\">\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"text-xl font-semibold\">{headerContent}</div>\n <div className=\"text-5xl ml-2 flex items-center\" aria-hidden=\"true\">\n {getIconFromString(icon)}\n </div>\n </div>\n <div className=\"w-full mt-1\">\n {attributes.error ||\n allData.error ||\n attributes.isMissing ||\n allData.isMissing ||\n !effectiveBodyContent ? (\n <span className=\"flex flex-row items-center px-3 py-2\">\n <CircleAlert className=\"w-3 h-3 text-gray-400 mr-1\" />\n <p className=\"text-sm text-gray-500 max-w-md text-center\">\n No data available for given filters\n </p>\n </span>\n ) : (\n <div className=\"text-base leading-relaxed\">{effectiveBodyContent}</div>\n )}\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n );\n}\n\nexport function renderCard(props: any): JSX.Element {\n const {\n gjsModel,\n performInteraction = () => Promise.resolve({}),\n isTemplateView = false,\n ...rest\n } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const {\n headerContent,\n headerDescription,\n bodyContent,\n footerContent,\n footerClass,\n footerIcon,\n contentMetadata,\n contentMetadataClass,\n className: dataClassName,\n error: dataError,\n isMissing: dataIsMissing,\n sampleData,\n } = allData;\n\n function toSafeText(value: unknown): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n return typeof value === 'string' ? value : JSON.stringify(value);\n }\n\n const safeHeaderContent = toSafeText(headerContent);\n const safeHeaderDescription = toSafeText(headerDescription);\n const effectiveBodyContent =\n isTemplateView && sampleData !== undefined ? sampleData.bodyContent : bodyContent;\n const safeBodyContent = toSafeText(effectiveBodyContent);\n const effectiveFooterContent =\n isTemplateView && sampleData !== undefined ? sampleData.footerContent : footerContent;\n const safeFooterContent = toSafeText(effectiveFooterContent);\n const safeContentMetadata = toSafeText(contentMetadata);\n\n const [footerHasContent, setFooterHasContent] = useState(safeFooterContent?.length > 0);\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData,\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n useEffect(() => {\n setFooterHasContent(safeFooterContent?.length > 0);\n }, [safeFooterContent]);\n\n const defaultClasses =\n 'bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none';\n const defaultFooterClasses = footerHasContent\n ? 'text-sm bg-pink-50 text-pink-900 shadow-sm'\n : 'text-sm';\n const defaultContentMetadataClasses = 'text-xs';\n\n const mergedCardClassName = dataClassName ? cn(defaultClasses, dataClassName) : defaultClasses;\n const effectiveFooterClass =\n isTemplateView && sampleData !== undefined ? sampleData.footerClass : footerClass;\n const mergedFooterClassName = effectiveFooterClass\n ? cn(defaultFooterClasses, effectiveFooterClass)\n : defaultFooterClasses;\n const mergedContentMetadataClassName = contentMetadataClass\n ? cn(defaultContentMetadataClasses, contentMetadataClass)\n : defaultContentMetadataClasses;\n\n const hasError = Boolean(attributes?.error ?? dataError);\n const hasMissing = Boolean(attributes?.isMissing ?? dataIsMissing);\n\n const hasSampleData = isTemplateView && sampleData !== undefined;\n const isLoading = Boolean(\n !hasSampleData &&\n (attributes?.interactionApiInProgress || attributes?.loading) &&\n !hasError &&\n !hasMissing,\n );\n\n const footerIconText =\n typeof footerIcon === 'string'\n ? footerIcon\n : footerIcon && typeof footerIcon === 'object' && 'icon' in (footerIcon as any)\n ? String((footerIcon as any).icon)\n : '';\n\n function getCardContent() {\n if (isLoading) {\n return (\n <CardContent>\n <CardLoader />\n </CardContent>\n );\n }\n\n const showEmpty = hasError || hasMissing;\n\n function handleFooterInput(event: React.FormEvent<HTMLDivElement>) {\n const target = event.target as HTMLDivElement;\n const content = target.textContent || '';\n const hasContent = content.trim().length > 0;\n\n setFooterHasContent(hasContent);\n\n if (!hasContent) {\n const currentProps = gjsModel.get('componentProps');\n gjsModel.set('componentProps', {\n ...currentProps,\n footerContent: null,\n footerIcon: null,\n footerClass: null,\n isEmptied: true,\n });\n }\n }\n\n return (\n <React.Fragment>\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"headerContent\" contentEditable={isEditable} className=\"text-lg\">\n {safeHeaderContent}\n </CardTitle>\n <CardDescription\n data-slot=\"headerDescription\"\n contentEditable={isEditable}\n className=\"text-sm\"\n >\n {safeHeaderDescription}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n\n {showEmpty ? (\n <span className=\"flex flex-row items-center px-3 py-2\">\n <CircleAlert className=\"w-3 h-3 text-gray-400 mr-1\" />\n <p className=\"text-sm text-gray-500 max-w-md text-center\">\n No data available for given filters\n </p>\n </span>\n ) : (\n <CardContent data-slot=\"bodyContent\" contentEditable={false} className=\"flex-grow\">\n <div className=\"text-3xl font-semibold truncate\">{safeBodyContent}</div>\n {safeContentMetadata && (\n <div className={mergedContentMetadataClassName} style={{ color: '#2A44D4' }}>\n {safeContentMetadata}\n </div>\n )}\n </CardContent>\n )}\n\n <CardFooter\n data-slot=\"footerContent\"\n contentEditable={isEditable}\n className={mergedFooterClassName}\n onInput={handleFooterInput}\n >\n {(footerIconText || '').trim() ? (\n <span className=\"mr-2\" aria-hidden=\"true\">\n {footerIconText}\n </span>\n ) : null}\n {safeFooterContent || ''}\n </CardFooter>\n </React.Fragment>\n );\n }\n\n return (\n <Card {...rest} isEditable={false} className={`${mergedCardClassName} relative`}>\n {getCardContent()}\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\nfunction transformDataForScatter(\n data: any[],\n xAxis: string,\n yAxis: string,\n dataKeys: any[],\n): any[] {\n if (!data || data.length === 0) {\n return [];\n }\n\n const scatterData = data\n .filter(\n (item) =>\n item[xAxis] !== null &&\n item[xAxis] !== undefined &&\n item[yAxis] !== null &&\n item[yAxis] !== undefined,\n )\n .map((item) => {\n const result: any = {\n [xAxis]: Number(item[xAxis]),\n [yAxis]: Number(item[yAxis]),\n };\n\n if (dataKeys && dataKeys.length > 0) {\n dataKeys.forEach(({ key }: { key: string }) => {\n if (item[key] !== null && item[key] !== undefined) {\n result[key] = Number(item[key]);\n }\n });\n }\n\n return result;\n });\n\n return scatterData;\n}\n\nfunction binDataForHistogram(data: any[], valueKey: string, bins = 10): any[] {\n if (!data || data.length === 0) {\n return [];\n }\n\n const values = data.map((item) => Number(item[valueKey])).filter((val) => !isNaN(val));\n\n if (values.length === 0) {\n return [];\n }\n\n const min = Math.min(...values);\n const max = Math.max(...values);\n const binWidth = (max - min) / bins;\n\n const binsArray: number[] = new Array(bins).fill(0);\n const binLabels: string[] = [];\n\n for (let i = 0; i < bins; i++) {\n const binStart = min + i * binWidth;\n const binEnd = binStart + binWidth;\n binLabels.push(`${binStart.toFixed(1)}-${binEnd.toFixed(1)}`);\n }\n\n values.forEach((value) => {\n let binIndex = Math.floor((value - min) / binWidth);\n\n if (binIndex >= bins) {\n binIndex = bins - 1;\n }\n\n if (binIndex < 0) {\n binIndex = 0;\n }\n\n binsArray[binIndex] += 1;\n });\n\n return binLabels.map((label, index) => ({\n bin: label,\n frequency: binsArray[index],\n }));\n}\n\nfunction transformDataForBeeswarm(\n data: any[],\n groupBy: string,\n valueKey: string,\n): { nodes: any[]; groups: string[] } {\n if (!data || data.length === 0) {\n return { nodes: [], groups: [] };\n }\n\n const grouped: { [key: string]: number[] } = {};\n\n data.forEach((item) => {\n if (\n item[groupBy] !== null &&\n item[groupBy] !== undefined &&\n item[valueKey] !== null &&\n item[valueKey] !== undefined\n ) {\n const group = String(item[groupBy]);\n const value = Number(item[valueKey]);\n\n if (!isNaN(value)) {\n if (!grouped[group]) {\n grouped[group] = [];\n }\n\n grouped[group].push(value);\n }\n }\n });\n\n const groups = Object.keys(grouped).sort();\n const nodes: any[] = [];\n\n groups.forEach((group, groupIndex) => {\n const values = grouped[group];\n\n values.forEach((value) => {\n nodes.push({\n group: group,\n groupIndex: groupIndex,\n value: value,\n x: groupIndex,\n y: value,\n radius: 4,\n });\n });\n });\n\n return { nodes, groups };\n}\n\nfunction BeeswarmChart({\n data,\n groups,\n color,\n groupBy,\n valueKey,\n decimalPrecision = 2,\n}: {\n data: any[];\n groups: string[];\n color: string;\n groupBy: string;\n valueKey: string;\n decimalPrecision?: number;\n}): JSX.Element {\n const containerRef = useRef<HTMLDivElement>(null);\n const svgRef = useRef<SVGSVGElement>(null);\n const [dimensions, setDimensions] = useState({ width: 800, height: 250 });\n const [simulatedNodes, setSimulatedNodes] = useState<any[]>([]);\n const { tooltipData, tooltipLeft, tooltipTop, tooltipOpen, showTooltip, hideTooltip } =\n useTooltip<any>();\n\n useEffect(() => {\n const updateDimensions = () => {\n if (containerRef.current) {\n setDimensions({\n width: containerRef.current.offsetWidth || 800,\n height: 250,\n });\n }\n };\n\n updateDimensions();\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setDimensions({\n width: entry.contentRect.width || 800,\n height: 250,\n });\n }\n });\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n window.addEventListener('resize', updateDimensions);\n\n return () => {\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateDimensions);\n };\n }, []);\n\n const createXScale = useCallback((innerWidth: number, groupDomain: string[]) => {\n const minBandwidth = 60;\n const totalMinWidth = groupDomain.length * minBandwidth;\n const paddingRatio = 0.3;\n\n let xScale = scaleBand({\n domain: groupDomain,\n range: [0, innerWidth],\n padding: paddingRatio,\n });\n\n if (totalMinWidth > innerWidth) {\n xScale = scaleBand({\n domain: groupDomain,\n range: [0, groupDomain.length * minBandwidth],\n padding: paddingRatio,\n });\n } else {\n xScale = scaleBand({\n domain: groupDomain,\n range: [0, innerWidth],\n padding: paddingRatio,\n });\n\n const currentBandwidth = xScale.bandwidth();\n\n if (currentBandwidth < minBandwidth) {\n xScale = scaleBand({\n domain: groupDomain,\n range: [0, groupDomain.length * minBandwidth],\n padding: paddingRatio,\n });\n }\n }\n\n return xScale;\n }, []);\n\n const scales = useMemo(() => {\n if (data.length === 0 || dimensions.width === 0) {\n return null;\n }\n\n const margin = { top: 20, right: 20, bottom: 60, left: 60 };\n const innerWidth = dimensions.width - margin.left - margin.right;\n const innerHeight = dimensions.height - margin.top - margin.bottom;\n\n const values = data.map((d) => d.value);\n const minValue = Math.min(...values);\n const maxValue = Math.max(...values);\n\n const xScale = createXScale(innerWidth, groups);\n const yScale = scaleLinear({\n domain: [minValue, maxValue],\n range: [innerHeight, 0],\n });\n\n return { xScale, yScale, minValue, maxValue, innerWidth, innerHeight };\n }, [data, groups, dimensions, createXScale]);\n\n useEffect(() => {\n if (!scales) {\n return;\n }\n\n const { xScale, minValue, maxValue, innerWidth, innerHeight } = scales;\n const valueRange = maxValue - minValue;\n const padding = valueRange * 0.1;\n\n const yScaleWithPadding = scaleLinear({\n domain: [minValue - padding, maxValue + padding],\n range: [innerHeight, 0],\n });\n\n // Use the actual chart width from xScale range, not just innerWidth\n const actualChartWidth = Math.max(innerWidth, xScale.range()[1] || 0);\n const bounds = {\n minY: BEESWARM_CONFIG.RADIUS,\n maxY: innerHeight - BEESWARM_CONFIG.RADIUS,\n minX: 0,\n maxX: actualChartWidth,\n };\n\n const nodes = data.map((d) => {\n const initialY = yScaleWithPadding(d.value);\n const clampedY = Math.max(bounds.minY, Math.min(bounds.maxY, initialY));\n const groupCenterX = (xScale(d.group) || 0) + (xScale.bandwidth() || 0) / 2;\n const bandwidth = xScale.bandwidth() || 0;\n const maxSpread = bandwidth * BEESWARM_CONFIG.SPREAD_FACTOR;\n const randomOffset = (Math.random() - 0.5) * maxSpread * BEESWARM_CONFIG.RANDOM_FACTOR;\n\n return {\n ...d,\n groupCenterX,\n x: groupCenterX + randomOffset,\n y: clampedY,\n radius: BEESWARM_CONFIG.RADIUS,\n maxSpread,\n };\n });\n\n let simulation = null;\n\n try {\n simulation = forceSimulation(nodes)\n .force('x', forceX((d: any) => d.groupCenterX).strength(0.15))\n .force(\n 'y',\n forceY((d: any) => {\n const targetY = yScaleWithPadding(d.value);\n\n return Math.max(bounds.minY, Math.min(bounds.maxY, targetY));\n }).strength(1.0),\n )\n .force(\n 'collide',\n forceCollide()\n .radius((d: any) => d.radius + BEESWARM_CONFIG.COLLISION_PADDING)\n .strength(0.9)\n .iterations(3),\n );\n\n if (simulation && typeof simulation.stop === 'function') {\n simulation.stop();\n }\n } catch (error) {\n setSimulatedNodes([...nodes]);\n\n return;\n }\n\n const constrainNode = (node: any, isFinal = false) => {\n const correctY = yScaleWithPadding(node.value);\n node.y = Math.max(bounds.minY, Math.min(bounds.maxY, correctY));\n node.vy = 0;\n\n const nodeMinX = node.groupCenterX - node.maxSpread;\n const nodeMaxX = node.groupCenterX + node.maxSpread;\n const constrainedMinX = Math.max(bounds.minX, nodeMinX);\n const constrainedMaxX = Math.min(bounds.maxX, nodeMaxX);\n\n if (isFinal) {\n if (node.x < constrainedMinX) {\n node.x = constrainedMinX;\n } else if (node.x > constrainedMaxX) {\n node.x = constrainedMaxX;\n }\n } else {\n const overflowMargin = node.maxSpread * 0.1;\n\n if (node.x < constrainedMinX - overflowMargin) {\n node.x = constrainedMinX - overflowMargin;\n node.vx *= 0.7;\n } else if (node.x > constrainedMaxX + overflowMargin) {\n node.x = constrainedMaxX + overflowMargin;\n node.vx *= 0.7;\n }\n }\n };\n\n if (simulation && typeof simulation.tick === 'function') {\n for (let i = 0; i < BEESWARM_CONFIG.SIMULATION_ITERATIONS; i++) {\n try {\n simulation.tick();\n nodes.forEach((node) => constrainNode(node, false));\n } catch (error) {\n break;\n }\n }\n }\n\n // Final constraint pass\n nodes.forEach((node: any) => {\n constrainNode(node, true);\n node.vx = 0;\n });\n\n setSimulatedNodes([...nodes]);\n }, [scales, data]);\n\n if (simulatedNodes.length === 0 || dimensions.width === 0 || !scales) {\n return <div ref={containerRef} style={{ width: '100%', height: '250px' }} />;\n }\n\n const margin = { top: 20, right: 20, bottom: 60, left: 60 };\n const { xScale, yScale, innerWidth, innerHeight } = scales;\n\n const handleMouseOver = (event: React.MouseEvent, node: any) => {\n if (containerRef.current) {\n const containerRect = containerRef.current.getBoundingClientRect();\n const x = event.clientX - containerRect.left + 10;\n const y = event.clientY - containerRect.top - 10;\n\n showTooltip({\n tooltipLeft: x,\n tooltipTop: y,\n tooltipData: node,\n });\n }\n };\n\n const actualChartWidth = Math.max(innerWidth, xScale.range()[1] || 0);\n const actualSvgWidth = actualChartWidth + margin.left + margin.right;\n\n return (\n <div ref={containerRef} style={{ width: '100%', height: '250px', position: 'relative' }}>\n <svg\n ref={svgRef}\n width={Math.max(dimensions.width, actualSvgWidth)}\n height={dimensions.height}\n onMouseLeave={hideTooltip}\n >\n <Group left={margin.left} top={margin.top}>\n <GridRows\n scale={yScale}\n width={actualChartWidth}\n strokeDasharray=\"3,3\"\n stroke=\"#e0e0e0\"\n strokeOpacity={0.5}\n />\n <AxisLeft\n scale={yScale}\n tickStroke=\"#666\"\n stroke=\"#666\"\n tickLabelProps={() => ({\n fill: '#666',\n fontSize: 12,\n textAnchor: 'end',\n dy: '0.33em',\n })}\n />\n <AxisBottom\n top={innerHeight}\n scale={xScale}\n tickStroke=\"#666\"\n stroke=\"#666\"\n tickLabelProps={() => ({\n fill: '#666',\n fontSize: 12,\n textAnchor: 'middle',\n })}\n />\n {simulatedNodes.map((node, i) => (\n <Circle\n key={i}\n cx={node.x || 0}\n cy={node.y || 0}\n r={node.radius}\n fill={color}\n opacity={0.8}\n stroke={color}\n strokeWidth={1}\n onMouseOver={(e) => handleMouseOver(e, node)}\n style={{ cursor: 'pointer' }}\n />\n ))}\n </Group>\n </svg>\n {tooltipOpen &&\n tooltipData &&\n tooltipLeft !== null &&\n tooltipLeft !== undefined &&\n tooltipTop !== null &&\n tooltipTop !== undefined && (\n <TooltipWithBounds\n left={tooltipLeft}\n top={tooltipTop}\n style={{\n ...defaultStyles,\n backgroundColor: 'white',\n border: '1px solid #e0e0e0',\n borderRadius: '4px',\n padding: '8px 12px',\n boxShadow: '0 2px 8px rgba(0,0,0,0.15)',\n fontSize: '12px',\n position: 'absolute',\n zIndex: 1000,\n pointerEvents: 'none',\n }}\n >\n <div>\n <div style={{ marginBottom: '4px', fontWeight: 600 }}>\n {groupBy}: {tooltipData.group}\n </div>\n <div>\n {valueKey}: {formatValue(tooltipData.value, decimalPrecision)}\n </div>\n </div>\n </TooltipWithBounds>\n )}\n </div>\n );\n}\n\nfunction renderChartComponent(\n chartType: string,\n data: any,\n config: any,\n decimalPrecision = 2,\n): JSX.Element {\n const safeData = Array.isArray(data) ? data : [];\n\n if (safeData.length === 0) {\n return renderNoDataFallback();\n }\n\n switch (chartType) {\n case 'pie':\n return (\n <PieChart>\n {safeData.length >= 20 && (\n <ChartTooltip\n cursor={false}\n content={<ChartTooltipContent hideLabel decimalPrecision={decimalPrecision} />}\n />\n )}\n <Pie\n data={safeData}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n safeData.length < 20\n ? ({ name, percent }: { name: string; percent: number }) =>\n `${name}: ${formatValue(percent * 100, decimalPrecision)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n\n case 'bar': {\n config.dataKeys = config.dataKeys || [];\n\n const barDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n const angle = config.angle ? config.angle : 0;\n const radian = Math.abs(angle) * (Math.PI / 180);\n const maxLabelLength = safeData.reduce((max, item) => {\n const label = String(item[config.xAxis] || '');\n\n return Math.max(max, Math.min(label.length, 28));\n }, 0);\n const multiplier = Math.floor(Math.max(Math.sin(radian), 0.3) * 6);\n const axisHeight = 40 + maxLabelLength * multiplier;\n\n return (\n <BarChart\n data={safeData}\n {...config.chartUi}\n {...(barDataKeys.length > 1 && { barGap: 0 })}\n >\n <CartesianGrid vertical={false} />\n <XAxis\n dataKey={config.xAxis}\n {...(config.angle && {\n interval: 0,\n angle: angle,\n height: axisHeight,\n textAnchor: 'end',\n })}\n tickFormatter={(value) => {\n return value.length > 25 ? `${value.slice(0, 25)}...` : value;\n }}\n />\n <YAxis />\n <Legend align=\"left\" wrapperStyle={{ marginLeft: 20 }} />\n {barDataKeys.map(({ key, name, color }: { key: string; name: string; color: string }) => {\n return <Bar dataKey={key} fill={color ?? '#4caf50'} name={name} key={key} radius={2} />;\n })}\n <ChartTooltip\n cursor={false}\n content={<ChartTooltipContent indicator=\"dashed\" decimalPrecision={decimalPrecision} />}\n />\n </BarChart>\n );\n }\n\n case 'line': {\n config.dataKeys = config.dataKeys || [];\n const safeDataKeysLine = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n return (\n <LineChart data={safeData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <ChartTooltip\n cursor={false}\n content={<ChartTooltipContent indicator=\"dashed\" decimalPrecision={decimalPrecision} />}\n />\n {safeDataKeysLine.map(\n ({ key, name, color }: { key: string; name: string; color: string }) => {\n return (\n <Line\n type=\"monotone\"\n dataKey={key}\n stroke={color ?? '#4caf50'}\n name={name}\n key={key}\n />\n );\n },\n )}\n <Legend align=\"left\" />\n </LineChart>\n );\n }\n\n case 'scatter': {\n config.dataKeys = config.dataKeys || [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n const scatterData = transformDataForScatter(\n safeData,\n config.xAxis,\n config.yAxis,\n safeDataKeys,\n );\n\n if (scatterData.length === 0) {\n return renderNoDataFallback();\n }\n\n const colors =\n safeDataKeys.length > 0\n ? safeDataKeys.map(({ color }: { color: string }) => color ?? '#2A44D4')\n : ['#2A44D4'];\n\n return (\n <ScatterChart data={scatterData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis\n type=\"number\"\n dataKey={config.xAxis}\n name={config.xAxis || 'X Axis'}\n domain={['auto', 'auto']}\n />\n <YAxis\n type=\"number\"\n dataKey={config.yAxis}\n name={config.yAxis || 'Y Axis'}\n domain={['auto', 'auto']}\n />\n <ChartTooltip\n cursor={{ strokeDasharray: '3 3' }}\n content={<ChartTooltipContent decimalPrecision={decimalPrecision} />}\n />\n {safeDataKeys.length > 0 ? (\n safeDataKeys.map(\n (\n { key, name, color }: { key: string; name: string; color: string },\n index: number,\n ) => (\n <Scatter\n key={key}\n name={name || key}\n dataKey={key || config.yAxis}\n fill={color ?? colors[index % colors.length]}\n />\n ),\n )\n ) : (\n <Scatter name=\"Data\" dataKey={config.yAxis} fill={colors[0]} />\n )}\n <Legend align=\"left\" />\n </ScatterChart>\n );\n }\n\n case 'histogram': {\n config.dataKeys = config.dataKeys || [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n const valueKey = safeDataKeys.length > 0 ? safeDataKeys[0].key : config.xAxis;\n const bins = config.bins || 10;\n const binnedData = binDataForHistogram(safeData, valueKey, bins);\n\n if (binnedData.length === 0) {\n return renderNoDataFallback();\n }\n\n const color = safeDataKeys.length > 0 ? safeDataKeys[0].color : '#2A44D4';\n\n return (\n <BarChart data={binnedData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey=\"bin\" angle={-45} textAnchor=\"end\" height={80} />\n <YAxis />\n <ChartTooltip\n cursor={false}\n content={<ChartTooltipContent indicator=\"dashed\" decimalPrecision={decimalPrecision} />}\n />\n <Bar dataKey=\"frequency\" fill={color} radius={2}>\n {binnedData.map((entry, index) => (\n <Cell key={`cell-${index}`} fill={color} />\n ))}\n </Bar>\n <Legend align=\"left\" />\n </BarChart>\n );\n }\n\n case 'beeswarm': {\n const groupBy = config.groupBy || config.xAxis;\n const valueKey = config.valueKey || (config.dataKeys && config.dataKeys[0]?.key) || 'value';\n const { nodes, groups } = transformDataForBeeswarm(safeData, groupBy, valueKey);\n\n if (nodes.length === 0 || groups.length === 0) {\n return renderNoDataFallback();\n }\n\n const color =\n config.dataKeys && config.dataKeys[0]?.color ? config.dataKeys[0].color : '#2A44D4';\n\n return (\n <BeeswarmChart\n data={nodes}\n groups={groups}\n color={color}\n groupBy={groupBy}\n valueKey={valueKey}\n decimalPrecision={decimalPrecision}\n />\n );\n }\n\n default:\n return (\n <PieChart>\n {safeData.length >= 20 && (\n <ChartTooltip\n cursor={false}\n content={<ChartTooltipContent hideLabel decimalPrecision={decimalPrecision} />}\n />\n )}\n <Pie\n data={safeData}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n safeData.length < 20\n ? ({ name, percent }: { name: string; percent: number }) =>\n `${name}: ${formatValue(percent * 100, decimalPrecision)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n }\n}\n\nexport function renderChart(props: any): JSX.Element {\n const {\n gjsModel,\n performInteraction = () => Promise.resolve({}),\n isTemplateView = false,\n ...rest\n } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState<number>(0);\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n const newAttributes = gjsModel.get('attributes');\n setAttributes({\n ...newAttributes,\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const updateContainerWidth = () => {\n if (containerRef.current) {\n setContainerWidth(containerRef.current.offsetWidth || 0);\n }\n };\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContainerWidth(entry.contentRect.width || 0);\n }\n });\n\n updateContainerWidth();\n\n const timeoutId = setTimeout(updateContainerWidth, 50);\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n window.addEventListener('resize', updateContainerWidth);\n\n return () => {\n clearTimeout(timeoutId);\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateContainerWidth);\n };\n }, []);\n\n useEffect(() => {\n }, [containerRef.current]);\n\n const {\n config = {},\n chartType = 'pie',\n chartData = [],\n className,\n title = 'Title',\n subTitle = 'Subtitle',\n sampleData,\n decimalPrecision,\n } = allData;\n\n const effectiveChartData = isTemplateView && sampleData !== undefined ? sampleData : chartData;\n\n const defaultClasses = 'aspect-auto w-full min-w-[200px] min-h-[200px]';\n const mergedClasses = className ? cn(defaultClasses, className) : defaultClasses;\n\n let renderChartData = effectiveChartData;\n\n if (chartType === 'pie') {\n const safeChartData = Array.isArray(effectiveChartData) ? effectiveChartData : [];\n const colors = getNColors(safeChartData.length);\n renderChartData = safeChartData.map((data, i) => ({\n ...data,\n fill: data.fill || colors[i],\n }));\n } else if (!config.color) {\n const safeBaseColors = Array.isArray(baseColors) ? baseColors : [];\n\n if (safeBaseColors.length > 0) {\n config.color = safeBaseColors[Math.floor(Math.random() * safeBaseColors.length)];\n }\n }\n\n let totalDataPoints = 0;\n\n if (\n chartType === 'bar' ||\n chartType === 'line' ||\n chartType === 'scatter' ||\n chartType === 'histogram' ||\n chartType === 'beeswarm'\n ) {\n const safeChartData = Array.isArray(effectiveChartData) ? effectiveChartData : [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n if (chartType === 'bar') {\n totalDataPoints = safeChartData.length * Math.max(1, safeDataKeys.length);\n } else {\n totalDataPoints = safeChartData.length;\n }\n }\n\n const getScrollableWidth = () => {\n if (chartType === 'line') {\n return totalDataPoints * 20;\n }\n\n if (chartType === 'bar') {\n return (\n totalDataPoints * 20 +\n (Array.isArray(config.dataKeys) ? config.dataKeys.length : 0) *\n 8 *\n (Array.isArray(chartData) ? chartData.length : 0) +\n (Array.isArray(chartData) ? chartData.length : 0) * 15\n );\n }\n\n return 800;\n };\n\n const scrollWidth = getScrollableWidth();\n const shouldScroll =\n (chartType === 'bar' ||\n chartType === 'line' ||\n chartType === 'beeswarm' ||\n chartType === 'histogram' ||\n chartType === 'scatter') &&\n totalDataPoints > 15 &&\n scrollWidth > containerWidth;\n\n let adjustedHeight = 250;\n const angle = config.angle ? config.angle : 0;\n const radian = Math.abs(angle) * (Math.PI / 180);\n\n if (chartType === 'bar' && chartData && Array.isArray(chartData) && config.angle) {\n const maxLabelLength = chartData.reduce((max, item) => {\n const label = String(item[config.xAxis] || '');\n\n return Math.max(max, Math.min(label.length, 28));\n }, 0);\n const multiplier = Math.floor(Math.max(Math.sin(radian), 0.3) * 5);\n const axisHeight = 40 + maxLabelLength * multiplier;\n adjustedHeight = 250 + axisHeight;\n }\n\n const hasError = attributes.error || allData.error;\n const hasMissing = attributes.isMissing || allData.isMissing;\n\n const hasSampleData = isTemplateView && sampleData !== undefined;\n const isLoading =\n !hasSampleData &&\n (attributes.interactionApiInProgress || attributes.loading) &&\n !hasError &&\n !hasMissing;\n\n const ChartWrapper = ({ children }: { children: React.ReactNode }) => {\n if (shouldScroll) {\n return (\n <div className=\"w-full overflow-x-auto\">\n <div style={{ minWidth: `${scrollWidth}px`, height: `${adjustedHeight}px` }}>\n {children}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"w-full\" style={{ height: `${adjustedHeight}px` }}>\n {children}\n </div>\n );\n };\n\n const chartUi = isLoading ? (\n <ChartLoader />\n ) : hasError || hasMissing || !effectiveChartData ? (\n renderNoDataFallback()\n ) : (\n <ChartWrapper>\n <ChartContainer\n {...rest}\n config={config}\n className={mergedClasses}\n style={{ height: `${adjustedHeight}px` }}\n >\n {renderChartComponent(chartType, renderChartData, config, decimalPrecision ?? 2)}\n </ChartContainer>\n </ChartWrapper>\n );\n\n return (\n <Card className=\"shadow border mt-2 mb-2 relative\">\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"title\" contentEditable={isEditable} className=\"text-2xl\">\n {title}\n </CardTitle>\n <CardDescription data-slot=\"subTitle\" contentEditable={isEditable} className=\"text-sm\">\n {subTitle}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent\n data-slot=\"bodyContent\"\n className=\"px-6\"\n style={{ minHeight: '250px' }}\n >\n <div ref={containerRef}>\n {chartUi}\n </div>\n </CardContent>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n {!isEditable && (\n <div className=\"absolute bottom-2 right-2 flex items-center gap-1 z-10\">\n <DownloadButton\n component=\"chart\"\n containerRef={containerRef}\n title={title}\n subtitle={subTitle}\n onDownloadCSV={effectiveChartData?.length > 0 ? async () => {\n const keys = Object.keys(effectiveChartData[0]);\n const headers = keys.map((key) => config[key]?.label || key);\n const rows = effectiveChartData.map((row: any) =>\n keys.map((key) => {\n const val = row[key];\n const str = val === null || val === undefined ? '' : String(val);\n return str.includes(',') ? `\"${str}\"` : str;\n }).join(',')\n );\n const csv = [headers.join(','), ...rows].join('\\n');\n const blob = new Blob([csv], { type: 'text/csv' });\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = `${title || 'chart'}.csv`;\n anchor.click();\n URL.revokeObjectURL(url);\n } : undefined}\n />\n </div>\n )}\n </Card>\n );\n}\n\nfunction handleBulkAction(\n actionId: string,\n tableId: string,\n selectedValues: string[],\n performInteraction: (config: any) => Promise<any>,\n setSelectedIndices: (indices: number[]) => void,\n) {\n return async () => {\n await performInteraction({\n id: actionId,\n interactionType: 'tableBulkButton',\n payload: {\n rows: selectedValues,\n tableId,\n },\n affectedComponents: getAffectedComponentsWithLoader([tableId], true),\n });\n setSelectedIndices([]);\n };\n}\n\nfunction BulkActionButton({\n action,\n isEditable,\n attributes,\n selectedValues,\n tableId,\n performInteraction,\n setSelectedIndices,\n}: {\n action: any;\n isEditable: boolean;\n attributes: any;\n selectedValues: any[];\n tableId: string;\n performInteraction: (config: any) => Promise<any>;\n setSelectedIndices: (indices: number[]) => void;\n}) {\n const [isLoading, setIsLoading] = useState(false);\n const { formMapper, formButtonText } = action.action || {};\n const { openForm, FormDialog } = useButtonForm({\n formMapper,\n isSubmitting: isLoading,\n formButtonText,\n onSubmit: async (formData) => {\n setIsLoading(true);\n\n try {\n const result = await performInteraction({\n id: action.id,\n interactionType: 'tableBulkButton',\n payload: {\n rows: selectedValues,\n tableId: tableId,\n formData,\n },\n affectedComponents: getAffectedComponentsWithLoader([tableId], true),\n });\n\n if (result && result.errors) {\n throw {\n detail: result.errorMsg,\n };\n }\n\n setSelectedIndices([]);\n } finally {\n setIsLoading(false);\n }\n },\n });\n\n const handleClick = async () => {\n if (!openForm()) {\n setIsLoading(true);\n\n try {\n await handleBulkAction(\n action.id,\n tableId,\n selectedValues,\n performInteraction,\n setSelectedIndices,\n )();\n } finally {\n setIsLoading(false);\n }\n }\n };\n\n return (\n <>\n <TooltipButton\n key={action.id}\n className={action.class}\n isEditable={isEditable}\n attributes={{\n interactionApiInProgress: isLoading,\n disabled: attributes.disabled,\n }}\n variant={action.variant}\n size={action.size}\n text={action.text}\n tooltipContent={action.tooltipContent}\n interact={handleClick}\n isDisabled={selectedValues.length === 0}\n />\n {FormDialog}\n </>\n );\n}\n\nexport function renderTable(props: any): JSX.Element {\n const {\n gjsModel,\n performInteraction = () => {},\n navigateToPage,\n downloadTable,\n isTemplateView = false,\n ...rest\n } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n const [selectedIndices, setSelectedIndices] = useState<number[]>([]);\n\n const cardRef = useRef<HTMLDivElement>(null);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n const {\n data: rawData,\n headerMapper: rawHeaderMapper = {},\n className,\n title = 'Title',\n subTitle = 'Subtitle',\n actions = [],\n bulkSelectorActions = [],\n pagination,\n sampleData,\n decimalPrecision,\n columnWithChipClass,\n chipStylesMapping,\n sortable: sortableFromProps,\n } = allData;\n\n const effectiveRawData = isTemplateView && sampleData !== undefined ? sampleData : rawData;\n const data = Array.isArray(effectiveRawData) ? effectiveRawData : [];\n const isBulkSelectionEnabled =\n Array.isArray(bulkSelectorActions) && bulkSelectorActions.length > 0;\n const headerMapper = (() => {\n const cleaned = { ...rawHeaderMapper };\n\n if ('id' in cleaned) {\n delete cleaned.id;\n }\n\n if (data.length > 0) {\n const dataKeys = Object.keys(data[0] || {});\n\n return Object.fromEntries(Object.entries(cleaned).filter(([key]) => dataKeys.includes(key)));\n }\n\n return cleaned;\n })();\n\n const sortConfig = (() => {\n const { sortColumn, sortDirection } = gjsModel.get('componentProps') ?? {};\n\n return sortColumn && sortDirection ? { [sortColumn]: sortDirection } : {};\n })();\n\n const [scrollAreaHeight, setScrollAreaHeight] = useState<number>(250);\n\n const calculateTableHeight = (rowCount: number) => {\n const baseTableHeight = 250;\n const headerHeight = 48;\n const rowHeight = 40;\n const calculatedHeight = headerHeight + rowCount * rowHeight;\n setScrollAreaHeight(Math.min(calculatedHeight, baseTableHeight));\n };\n\n useEffect(() => {\n calculateTableHeight(Array.isArray(data) ? data.length : 0);\n }, [data]);\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n const parsedData = (() => {\n if (\n typeof data === 'object' &&\n data !== null &&\n !Array.isArray(data) &&\n (data as any).name === '__peak_placeholder'\n ) {\n return [];\n }\n\n if (!Array.isArray(data)) {\n return [];\n }\n\n return data.map((datum: any) => {\n const newData = {\n ...datum,\n };\n\n delete newData.id;\n\n return newData;\n });\n })();\n\n const selectedValues = useMemo(() => {\n return selectedIndices.map((idx) => data?.[idx]).filter(Boolean);\n }, [selectedIndices, data]);\n\n async function onRowAction(rowIndex: number, actionId: string, formData?: any) {\n const id = gjsModel.get('id');\n\n const result = await performInteraction({\n id: actionId,\n interactionType: 'tableButton',\n payload: {\n row: data[rowIndex],\n tableId: id,\n ...(formData && { formData }),\n },\n affectedComponents: [],\n });\n\n if (result && result.errors) {\n throw {\n detail: result.errorMsg,\n };\n }\n }\n\n async function onPageChange(pageNumber: number, pageSize: number) {\n const id = gjsModel.get('id');\n const { sortColumn, sortDirection } = gjsModel.get('componentProps') ?? {};\n\n await performInteraction({\n id,\n interactionType: 'pagination',\n payload: {\n pageNumber,\n pageSize,\n ...(sortColumn && sortDirection && { sortColumn, sortDirection }),\n },\n affectedComponents: getAffectedComponentsWithLoader([id], true),\n });\n\n setSelectedIndices([]);\n }\n\n async function handleSort(column: string, direction: SortDirection) {\n const currentProps = gjsModel.get('componentProps');\n const id = gjsModel.get('id');\n\n gjsModel.set('componentProps', {\n ...currentProps,\n sortColumn: direction ? column : null,\n sortDirection: direction,\n });\n\n await performInteraction({\n id,\n interactionType: 'tableSort',\n payload: {\n sortColumn: direction ? column : null,\n sortDirection: direction,\n tableId: id,\n },\n affectedComponents: getAffectedComponentsWithLoader([id], true),\n });\n\n setSelectedIndices([]);\n }\n\n return (\n <Card\n ref={cardRef}\n className=\"shadow border relative flex flex-col h-fit overflow-hidden\"\n data-component-type=\"table\"\n data-table-id={gjsModel.get('id')}\n >\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"title\" contentEditable={isEditable} className=\"text-2xl\">\n {title}\n </CardTitle>\n <CardDescription data-slot=\"subTitle\" contentEditable={isEditable} className=\"text-sm\">\n {subTitle}\n </CardDescription>\n </div>\n {isBulkSelectionEnabled && (\n <div className={cn('flex gap-2', isEditable && 'pr-8')}>\n {bulkSelectorActions.map((action: any) => (\n <BulkActionButton\n key={action.id}\n action={action}\n isEditable={isEditable}\n attributes={attributes}\n selectedValues={selectedValues}\n tableId={gjsModel.get('id')}\n performInteraction={performInteraction}\n setSelectedIndices={setSelectedIndices}\n />\n ))}\n </div>\n )}\n </div>\n </CardHeader>\n <CardContent\n data-slot=\"bodyContent\"\n contentEditable={false}\n className=\"flex-1 flex flex-col overflow-hidden\"\n >\n {attributes.error || allData.error || attributes.isMissing || allData.isMissing ? (\n renderNoDataFallback()\n ) : (\n <DataTable\n data={parsedData}\n headerMapper={headerMapper}\n className={className}\n isEditable={isEditable}\n actions={actions}\n pagination={pagination}\n isLoading={\n !(isTemplateView && sampleData !== undefined) &&\n (attributes.interactionApiInProgress || attributes.loading)\n }\n onRowAction={onRowAction}\n onPageChange={onPageChange}\n onSort={handleSort}\n sortConfig={sortConfig}\n sortable={sortableFromProps !== false}\n otherProps={rest}\n height={scrollAreaHeight}\n decimalPrecision={decimalPrecision}\n columnWithChipClass={columnWithChipClass}\n chipStylesMapping={chipStylesMapping}\n navigateToPage={navigateToPage}\n isBulkSelectionEnabled={isBulkSelectionEnabled}\n selectedIndices={selectedIndices}\n setSelectedIndices={setSelectedIndices}\n title={title}\n onDownload={downloadTable ? (limit: number) => downloadTable({ tableId: gjsModel.get('id'), title, limit, headerMapper }) : undefined}\n />\n )}\n </CardContent>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n tableActions={actions}\n firstRowData={Array.isArray(data) && data.length > 0 ? data[0] : {}}\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\nexport function renderTab(props: any): JSX.Element {\n let tabsWidth = 157;\n const safeTabs = Array.isArray(props.tabs) ? props.tabs : [];\n const showFallback = safeTabs.length === 0;\n\n if (safeTabs.length > 4) {\n tabsWidth = 157;\n }\n\n const defaultValue = props.defaultValue || (safeTabs.length > 0 ? safeTabs[0] : undefined);\n\n useEffect(() => {\n if (props.gjsModel) {\n const componentId = props.gjsModel.get('id');\n const childrenCount = props.gjsModel.components().length;\n\n if (safeTabs.length > 0 && childrenCount === 0) {\n // eslint-disable-next-line no-console\n console.warn(\n `Tab component ${componentId} has ${safeTabs.length} tabs but no child components. This may indicate lost tab content.`,\n );\n }\n }\n }, [safeTabs.length, props.gjsModel]);\n\n return (\n <Tabs defaultValue={defaultValue}>\n <div className=\"text-center mb-4\">\n <TabsList className=\"bg-[#F9F9FE] border border-[#D4D5DE] p-1 rounded-lg h-auto\">\n {safeTabs.length > 0 ? (\n safeTabs.map((tab: string) => (\n <TabsTrigger\n value={tab}\n key={tab}\n className={`\n w-[${tabsWidth}px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n `}\n style={{\n fontFamily: 'Helvetica Neue',\n fontWeight: 500,\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: '0%',\n }}\n >\n {tab}\n </TabsTrigger>\n ))\n ) : (\n <TabsTrigger\n value=\"no-data\"\n className={`\n w-[${tabsWidth}px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n `}\n style={{\n fontFamily: 'Helvetica Neue',\n fontWeight: 500,\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: '0%',\n }}\n disabled\n >\n No tabs\n </TabsTrigger>\n )}\n </TabsList>\n </div>\n {showFallback ? (\n <TabsContent\n value={defaultValue || 'no-data'}\n className=\"tabs-content\"\n data-fallback=\"true\"\n >\n {renderNoDataFallback()}\n </TabsContent>\n ) : (\n safeTabs.map((tab: string) => (\n <TabsContent value={tab} className=\"tabs-content\" key={tab} />\n ))\n )}\n </Tabs>\n );\n}\n\nexport function renderMarkdown(props: any): JSX.Element {\n const { gjsModel, isTemplateView = false, ...rest } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n const [isEditing, setIsEditing] = useState(false);\n const [isEditingHeading, setIsEditingHeading] = useState(false);\n const editRef = useRef<HTMLDivElement>(null);\n const headingEditRef = useRef<HTMLDivElement>(null);\n\n const startEditing = () => {\n setIsEditing(true);\n setTimeout(() => {\n setupEditor();\n }, 0);\n };\n\n const startEditingHeading = () => {\n setIsEditingHeading(true);\n setTimeout(() => {\n setupHeadingEditor();\n }, 0);\n };\n\n const setupEditor = () => {\n if (!editRef.current) {\n return;\n }\n\n const editor = editRef.current;\n editor.innerHTML = '';\n const effectiveText =\n isTemplateView && allData.sampleData !== undefined ? allData.sampleData : allData.summaryText;\n editor.textContent = effectiveText;\n editor.focus();\n };\n\n const setupHeadingEditor = () => {\n if (!headingEditRef.current) {\n return;\n }\n\n const editor = headingEditRef.current;\n editor.innerHTML = '';\n editor.textContent = allData.summaryHeading || 'Insights';\n editor.focus();\n };\n\n // Save changes and exit editing mode\n const saveChanges = () => {\n if (!editRef.current) {\n return;\n }\n\n const content = editRef.current.innerText || '';\n setAllData((prev: Record<string, any>) => ({\n ...prev,\n summaryText: content,\n }));\n setIsEditing(false);\n editRef.current.innerHTML = '';\n };\n\n const saveHeadingChanges = () => {\n if (!headingEditRef.current) {\n return;\n }\n\n const content = headingEditRef.current.innerText || 'Insights';\n setAllData((prev: Record<string, any>) => ({\n ...prev,\n summaryHeading: content,\n }));\n setIsEditingHeading(false);\n headingEditRef.current.innerHTML = '';\n };\n\n const markdownStyles = {\n ul: { props: { className: 'list-disc' } },\n h1: { props: { className: 'text-4xl font-bold leading-[4rem]' } },\n h2: { props: { className: 'text-3xl font-bold leading-[3rem]' } },\n h3: { props: { className: 'text-2xl font-bold leading-[2rem]' } },\n h4: { props: { className: 'text-xl font-bold leading-[2.5rem]' } },\n h5: { props: { className: 'text-lg font-bold leading-[2.5rem]' } },\n h6: { props: { className: 'text-base font-bold leading-[2rem]' } },\n };\n\n const { summaryText, summaryHeading, sampleData } = allData;\n\n const rawSummaryText = isTemplateView && sampleData !== undefined ? sampleData : summaryText;\n const effectiveSummaryText = typeof rawSummaryText === 'string' ? rawSummaryText : '';\n\n const hasError = attributes.error || allData.error;\n const hasMissing = attributes.isMissing || allData.isMissing;\n\n const hasSampleData = isTemplateView && allData.sampleData !== undefined;\n const isLoading =\n !hasSampleData &&\n ((attributes.loading && !hasError && !hasMissing) || attributes.interactionApiInProgress);\n\n if (isLoading) {\n return <MarkdownLoader />;\n }\n\n if (hasError || hasMissing) {\n return (\n <div className=\"px-[1em] relative\" {...rest}>\n <h3 className=\"text-xl font-semibold text-left\">{summaryHeading || 'Insights'}</h3>\n <div\n className=\"w-full py-8 flex flex-col items-center justify-center px-6 text-center\"\n style={{ minHeight: '180px' }}\n >\n <CircleAlert className=\"w-12 h-12 text-gray-400 mb-2\" />\n <h3 className=\"text-lg font-medium text-gray-900\">No data available</h3>\n <p className=\"mt-2 text-sm text-gray-500 max-w-md\">\n Check your filters or try a different time range.\n </p>\n </div>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n }\n\n if (!isEditable) {\n return (\n <div className=\"px-[1em] relative\" {...rest}>\n <h3 className=\"text-xl font-semibold text-left\">{summaryHeading || 'Insights'}</h3>\n <div data-slot=\"summaryText\">\n <Markdown options={{ overrides: markdownStyles }}>{effectiveSummaryText}</Markdown>\n </div>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n }\n\n return (\n <div className=\"p-[1em] relative\" {...rest}>\n {isEditingHeading ? (\n <div\n ref={headingEditRef}\n contentEditable\n onBlur={saveHeadingChanges}\n data-slot=\"summaryHeading\"\n className=\"text-xl font-semibold text-left\"\n suppressContentEditableWarning={true}\n />\n ) : (\n <h3\n className=\"text-xl font-semibold text-left\"\n onClick={startEditingHeading}\n data-slot=\"summaryHeading\"\n >\n {allData.summaryHeading || 'Insights'}\n </h3>\n )}\n {isEditing ? (\n <div\n ref={editRef}\n contentEditable\n onBlur={saveChanges}\n data-slot=\"summaryText\"\n className=\"p-2 min-h-[100px] whitespace-pre-wrap\"\n suppressContentEditableWarning={true}\n style={{\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n }}\n />\n ) : (\n <div\n onClick={startEditing}\n data-slot=\"summaryText\"\n style={{\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n }}\n >\n <Markdown options={{ overrides: markdownStyles }}>{effectiveSummaryText}</Markdown>\n </div>\n )}\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n}\n\nexport function renderButton(props: any): JSX.Element {\n const { gjsModel, performInteraction = () => {}, navigateToPage } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n useEffect(() => {\n gjsModel.on('change:componentProps', () => {\n setAllData({\n ...gjsModel.get('componentProps'),\n });\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const {\n text,\n className,\n payload,\n variant = 'default',\n size = 'sm',\n affectedComponents,\n tooltipContent,\n onClick,\n action,\n } = allData;\n\n const { formMapper, formButtonText } = action || {};\n\n const { openForm, FormDialog } = useButtonForm({\n formMapper,\n isSubmitting: attributes.interactionApiInProgress || false,\n onSubmit: async (formData) => {\n const id = gjsModel.get('id');\n const result = await performInteraction({\n id,\n interactionType: 'button',\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n payload: {\n ...payload,\n formData,\n },\n });\n\n if (result && result.errors) {\n throw {\n detail: result.errorMsg,\n };\n }\n },\n formButtonText,\n });\n\n function interact() {\n if (openForm()) {\n return;\n }\n\n if (onClick && onClick.action === 'navigateToPage') {\n if (navigateToPage) {\n navigateToPage(onClick.targetPageId);\n }\n\n return;\n }\n\n const id = gjsModel.get('id');\n performInteraction({\n id,\n interactionType: 'button',\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n payload,\n });\n }\n\n return (\n <>\n <TooltipButton\n className={className}\n isEditable={isEditable}\n interact={interact}\n attributes={attributes}\n variant={variant}\n size={size}\n text={text}\n tooltipContent={tooltipContent}\n />\n {FormDialog}\n </>\n );\n}\n\nconst renderActionCardWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'ActionCard' }}>\n {renderActionCard(props)}\n </ComponentWrapper>\n);\n\nconst renderButtonWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Button' }}>\n {renderButton(props)}\n </ComponentWrapper>\n);\n\nconst renderCardWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Card' }}>\n {renderCard(props)}\n </ComponentWrapper>\n);\n\nconst renderChartWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Chart' }}>\n {renderChart(props)}\n </ComponentWrapper>\n);\n\nconst renderFilterWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Filter' }}>\n {renderFilter(props)}\n </ComponentWrapper>\n);\n\nconst renderUnifiedFilterWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'UnifiedFilter' }}>\n {renderUnifiedFilter(props)}\n </ComponentWrapper>\n);\n\nconst renderMarkdownWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Markdown' }}>\n {renderMarkdown(props)}\n </ComponentWrapper>\n);\n\nconst renderSearchWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Search' }}>\n {renderSearch(props)}\n </ComponentWrapper>\n);\n\nconst renderTableWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Table' }}>\n {renderTable(props)}\n </ComponentWrapper>\n);\n\nconst renderTabWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Tabs' }}>\n {renderTab(props)}\n </ComponentWrapper>\n);\n\nfunction renderActions(props: any): JSX.Element {\n const { actions, isEditable = false, gjsModel } = props;\n\n if (actions === null) {\n return <div />;\n }\n\n if (!Array.isArray(actions) || actions.length === 0) {\n return (\n <div className=\"bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none relative\">\n <CardLoader />\n </div>\n );\n }\n\n return (\n <div className=\"dashboard-cards flex flex-wrap gap-4\">\n {actions.map((action: any, index: number) => {\n const { icon, title, description } = action;\n\n return (\n <div key={index} className=\"flex-1 min-w-[200px]\">\n {renderActionCard({\n icon,\n headerContent: title,\n bodyContent: description,\n isEditable,\n gjsModel,\n })}\n </div>\n );\n })}\n </div>\n );\n}\n\nconst renderActionsWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Actions' }}>\n {renderActions(props)}\n </ComponentWrapper>\n);\n\nexport function getRenderers(): Record<string, (props: any) => JSX.Element> {\n return {\n ActionCard: renderActionCardWithWrapper,\n Actions: renderActionsWithWrapper,\n Button: renderButtonWithWrapper,\n Card: renderCardWithWrapper,\n Chart: renderChartWithWrapper,\n Filter: renderFilterWithWrapper,\n Markdown: renderMarkdownWithWrapper,\n Search: renderSearchWithWrapper,\n Table: renderTableWithWrapper,\n Tabs: renderTabWithWrapper,\n UnifiedFilter: renderUnifiedFilterWithWrapper,\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"render-components.js","names":["chroma","React","useEffect","useState","useMemo","useCallback","useRef","renderNoDataFallback","CircleAlert","TrendingDown","TrendingUp","ShoppingCart","ChartBarBig","Tag","MapPin","StyledInfoButton","filterPlaceholders","theme","Markdown","Bar","BarChart","CartesianGrid","Legend","Line","LineChart","Pie","PieChart","Scatter","ScatterChart","XAxis","YAxis","Cell","domutil","Group","scaleBand","scaleLinear","AxisBottom","AxisLeft","GridRows","Circle","useTooltip","TooltipWithBounds","defaultStyles","forceSimulation","forceX","forceY","forceCollide","TooltipButton","Card","CardContent","CardDescription","CardFooter","CardHeader","CardTitle","ChartContainer","ChartTooltip","ChartTooltipContent","renderFilter","renderUnifiedFilter","renderSearch","CardLoader","ChartLoader","MarkdownLoader","Tabs","TabsContent","TabsList","TabsTrigger","cn","getAffectedComponentsWithLoader","formatValue","DataTable","ComponentWrapper","useButtonForm","DownloadButton","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","getOffset","el","html","ownerDocument","documentElement","box","top","left","getBoundingClientRect","iframe","document","querySelector","iframeWindow","contentWindow","pageYOffset","clientTop","pageXOffset","clientLeft","BEESWARM_CONFIG","RADIUS","SPREAD_FACTOR","RANDOM_FACTOR","SIMULATION_ITERATIONS","COLLISION_PADDING","baseColors","colors","Blue_100","Blue_30","Purpley_100","Purpley_30","Light_Bluish_Green","Wild_Strawberry","iconMap","Equalizer","Style","Place","getIconFromString","iconString","lowerIconString","toLowerCase","matchingKey","Object","keys","find","key","getNColors","n","safeBaseColors","Array","isArray","_iterator","_createForOfIteratorHelperLoose","_step","done","baseColor","value","push","scale","mode","getOneColor","existing","color","base","Math","floor","random","length","selectedColorIndex","includes","selectedColors","i","renderActionCard","props","gjsModel","_props$isTemplateView","isTemplateView","rest","_objectWithoutPropertiesLoose","_excluded","initialData","_useState","allData","setAllData","_allData$headerConten","headerContent","icon","_allData$bodyContent","bodyContent","sampleData","effectiveBodyContent","undefined","_useState2","_extends","get","attributes","setAttributes","handlePropsChange","newComponentProps","filteredProps","prevData","on","off","defaultClasses","className","style","backgroundColor","isEditable","contentEditable","children","error","isMissing","renderCard","_attributes$isEditabl","_attributes$error","_attributes$isMissing","_props$performInterac","performInteraction","Promise","resolve","_props$isTemplateView2","_excluded2","_useState3","headerDescription","footerContent","footerClass","footerIcon","contentMetadata","contentMetadataClass","dataClassName","dataError","dataIsMissing","toSafeText","JSON","stringify","safeHeaderContent","safeHeaderDescription","safeBodyContent","effectiveFooterContent","safeFooterContent","safeContentMetadata","_useState4","footerHasContent","setFooterHasContent","_useState5","defaultFooterClasses","defaultContentMetadataClasses","mergedCardClassName","effectiveFooterClass","mergedFooterClassName","mergedContentMetadataClassName","hasError","Boolean","hasMissing","hasSampleData","isLoading","interactionApiInProgress","loading","footerIconText","String","getCardContent","showEmpty","handleFooterInput","event","target","content","textContent","hasContent","trim","currentProps","set","isEmptied","onInput","componentId","position","isVisible","componentProps","transformDataForScatter","data","xAxis","yAxis","dataKeys","scatterData","filter","item","map","_result","result","Number","forEach","_ref","binDataForHistogram","valueKey","bins","values","val","isNaN","min","apply","max","binWidth","binsArray","fill","binLabels","binStart","binEnd","toFixed","binIndex","label","index","bin","frequency","transformDataForBeeswarm","groupBy","nodes","groups","grouped","group","sort","groupIndex","x","y","radius","BeeswarmChart","_ref2","_ref2$decimalPrecisio","decimalPrecision","containerRef","svgRef","_useState6","width","height","dimensions","setDimensions","_useState7","simulatedNodes","setSimulatedNodes","_useTooltip","tooltipData","tooltipLeft","tooltipTop","tooltipOpen","showTooltip","hideTooltip","updateDimensions","current","offsetWidth","resizeObserver","ResizeObserver","entries","_iterator2","_step2","entry","contentRect","observe","window","addEventListener","disconnect","removeEventListener","createXScale","innerWidth","groupDomain","minBandwidth","totalMinWidth","paddingRatio","xScale","domain","range","padding","currentBandwidth","bandwidth","scales","margin","right","bottom","innerHeight","d","minValue","maxValue","yScale","valueRange","yScaleWithPadding","actualChartWidth","bounds","minY","maxY","minX","maxX","initialY","clampedY","groupCenterX","maxSpread","randomOffset","simulation","force","strength","targetY","iterations","stop","concat","constrainNode","node","isFinal","correctY","vy","nodeMinX","nodeMaxX","constrainedMinX","constrainedMaxX","overflowMargin","vx","tick","ref","handleMouseOver","containerRect","clientX","clientY","actualSvgWidth","onMouseLeave","strokeDasharray","stroke","strokeOpacity","tickStroke","tickLabelProps","fontSize","textAnchor","dy","cx","cy","r","opacity","strokeWidth","onMouseOver","e","cursor","border","borderRadius","boxShadow","zIndex","pointerEvents","marginBottom","fontWeight","renderChartComponent","chartType","config","safeData","hideLabel","dataKey","nameKey","innerRadius","_ref3","name","percent","labelLine","barDataKeys","angle","radian","abs","PI","maxLabelLength","reduce","multiplier","sin","axisHeight","chartUi","barGap","vertical","interval","tickFormatter","slice","align","wrapperStyle","marginLeft","_ref4","indicator","safeDataKeysLine","_ref5","type","safeDataKeys","_ref6","_ref7","binnedData","_config$dataKeys$","_config$dataKeys$2","_transformDataForBees","_ref8","renderChart","_attributes$isEditabl2","_props$performInterac2","_props$isTemplateView3","_excluded3","_useState8","_useState9","_useState10","containerWidth","setContainerWidth","handleAttributesChange","newAttributes","updateContainerWidth","_iterator3","_step3","timeoutId","setTimeout","clearTimeout","_allData$config","_allData$chartType","_allData$chartData","chartData","_allData$title","title","_allData$subTitle","subTitle","effectiveChartData","mergedClasses","renderChartData","safeChartData","totalDataPoints","getScrollableWidth","scrollWidth","shouldScroll","adjustedHeight","ChartWrapper","_ref9","minWidth","minHeight","component","subtitle","onDownloadCSV","_asyncToGenerator","_regeneratorRuntime","mark","_callee","headers","rows","csv","blob","url","anchor","wrap","_callee$","_context","prev","next","_config$key","row","str","join","Blob","URL","createObjectURL","createElement","href","download","click","revokeObjectURL","handleBulkAction","actionId","tableId","selectedValues","setSelectedIndices","_callee2","_callee2$","_context2","id","interactionType","payload","affectedComponents","BulkActionButton","_ref12","action","_useState11","setIsLoading","_ref13","formMapper","formButtonText","_useButtonForm","isSubmitting","onSubmit","_onSubmit","_callee3","formData","_callee3$","_context3","sent","errors","detail","errorMsg","finish","_x","arguments","openForm","FormDialog","handleClick","_ref14","_callee4","_callee4$","_context4","disabled","variant","size","text","tooltipContent","interact","isDisabled","renderTable","_attributes$isEditabl3","_props$performInterac3","navigateToPage","downloadTable","_props$isTemplateView4","_excluded4","_useState12","_useState13","selectedIndices","cardRef","_useState14","rawData","_allData$headerMapper","headerMapper","rawHeaderMapper","_allData$title2","_allData$subTitle2","_allData$actions","actions","_allData$bulkSelector","bulkSelectorActions","pagination","columnWithChipClass","chipStylesMapping","sortableFromProps","sortable","effectiveRawData","isBulkSelectionEnabled","cleaned","fromEntries","_ref15","sortConfig","_gjsModel$get","_ref17","_ref16","sortColumn","sortDirection","_useState15","scrollAreaHeight","setScrollAreaHeight","calculateTableHeight","rowCount","baseTableHeight","headerHeight","rowHeight","calculatedHeight","total","totalCount","parsedData","datum","newData","idx","onRowAction","_x2","_x3","_x4","_onRowAction","_callee5","rowIndex","_callee5$","_context5","onPageChange","_x5","_x6","_onPageChange","_callee6","pageNumber","pageSize","_gjsModel$get2","_ref18","_callee6$","_context6","handleSort","_x7","_x8","_handleSort","_callee7","column","direction","_callee7$","_context7","onSort","otherProps","onDownload","limit","tableActions","firstRowData","renderTab","tabsWidth","safeTabs","tabs","showFallback","defaultValue","childrenCount","components","console","warn","tab","fontFamily","lineHeight","letterSpacing","renderMarkdown","_attributes$isEditabl4","_props$isTemplateView5","_excluded5","_useState16","_useState17","_useState18","isEditing","setIsEditing","_useState19","isEditingHeading","setIsEditingHeading","editRef","headingEditRef","startEditing","setupEditor","startEditingHeading","setupHeadingEditor","editor","innerHTML","effectiveText","summaryText","focus","summaryHeading","saveChanges","innerText","saveHeadingChanges","markdownStyles","ul","h1","h2","h3","h4","h5","h6","rawSummaryText","effectiveSummaryText","options","overrides","onBlur","suppressContentEditableWarning","onClick","whiteSpace","wordWrap","renderButton","_attributes$isEditabl5","_props$performInterac4","_useState20","_useState21","_allData$variant","_allData$size","_ref19","_useButtonForm2","_onSubmit2","_callee8","_callee8$","_context8","_x9","targetPageId","renderActionCardWithWrapper","componentType","renderButtonWithWrapper","renderCardWithWrapper","renderChartWithWrapper","renderFilterWithWrapper","renderUnifiedFilterWithWrapper","renderMarkdownWithWrapper","renderSearchWithWrapper","renderTableWithWrapper","renderTabWithWrapper","renderActions","_props$isEditable","description","renderActionsWithWrapper","getRenderers","ActionCard","Actions","Button","Chart","Filter","Search","Table","UnifiedFilter"],"sources":["../../../src/plugins/helpers/render-components.tsx"],"sourcesContent":["/* eslint-disable no-nested-ternary */\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable func-style */\n/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable func-names */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport chroma from 'chroma-js';\nimport React, { useEffect, useState, useMemo, useCallback, JSX, useRef } from 'react';\nimport { renderNoDataFallback } from './extra';\nimport {\n CircleAlert,\n TrendingDown,\n TrendingUp,\n ShoppingCart,\n ChartBarBig,\n Tag,\n MapPin,\n} from 'lucide-react';\nimport { StyledInfoButton } from './styled-info-button';\nimport { filterPlaceholders } from '../../helpers/filter-placeholder';\n\nimport { theme } from '@peak-ai/ais-components/theme';\n\nimport Markdown from 'markdown-to-jsx';\n\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n Line,\n LineChart,\n Pie,\n PieChart,\n Scatter,\n ScatterChart,\n XAxis,\n YAxis,\n Cell,\n} from 'recharts/lib';\n\n// @ts-ignore\nimport * as domutil from 'recharts/lib/util/DOMUtils';\n\nimport { Group } from '@visx/group';\nimport { scaleBand, scaleLinear } from '@visx/scale';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { GridRows } from '@visx/grid';\nimport { Circle } from '@visx/shape';\nimport { useTooltip, TooltipWithBounds, defaultStyles } from '@visx/tooltip';\nimport { forceSimulation, forceX, forceY, forceCollide } from 'd3-force';\n\nimport { TooltipButton } from '../../shadcn/components/ui/button';\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from '../../shadcn/components/ui/card';\nimport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n} from '../../shadcn/components/ui/chart';\nimport { renderFilter } from '../../shadcn/components/ui/filter';\nimport { renderUnifiedFilter } from '../../shadcn/components/ui/unified-filter';\nimport { renderSearch } from '../../shadcn/components/ui/search';\nimport { CardLoader, ChartLoader, MarkdownLoader } from '../../shadcn/components/ui/skeleton';\nimport { SortDirection } from '../../shadcn/components/ui/table';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '../../shadcn/components/ui/tabs';\n\nimport { cn } from '../../shadcn/utils';\nimport { getAffectedComponentsWithLoader, formatValue } from '../../helpers';\nimport { DataTable } from './data-table';\nimport { ComponentWrapper } from '../../shadcn/components/ui/error-wrapper';\nimport { useButtonForm } from './button-form';\nimport { DownloadButton } from './download-data-button';\n\n// Monkey-patching the getOffset function to use iframe's window instead of global one\n// REMEMBER TO UDPATE THIS WHEN recharts IS UPGRADED\n// @ts-ignore\ndomutil.getOffset = (\n el: HTMLElement,\n): {\n top: number;\n left: number;\n} => {\n const html = el.ownerDocument.documentElement;\n let box = { top: 0, left: 0 };\n\n if (typeof el.getBoundingClientRect !== 'undefined') {\n box = el.getBoundingClientRect();\n }\n\n const iframe = document.querySelector('.gjs-frame');\n const iframeWindow = (iframe as any)?.contentWindow;\n\n return {\n top: box.top + iframeWindow.pageYOffset - html.clientTop,\n left: box.left + iframeWindow.pageXOffset - html.clientLeft,\n };\n};\n\nconst BEESWARM_CONFIG = {\n RADIUS: 4,\n SPREAD_FACTOR: 0.45,\n RANDOM_FACTOR: 2.0,\n SIMULATION_ITERATIONS: 300,\n COLLISION_PADDING: 3,\n} as const;\n\nconst baseColors = [\n [theme.colors.Blue_100, theme.colors.Blue_30],\n [theme.colors.Purpley_100, theme.colors.Purpley_30],\n [theme.colors.Light_Bluish_Green, '#06601b'],\n [theme.colors.Wild_Strawberry, '#4d001c'],\n];\n\nconst iconMap: Record<string, JSX.Element> = {\n TrendingUp: <TrendingUp />,\n TrendingDown: <TrendingDown />,\n ShoppingCart: <ShoppingCart />,\n Equalizer: <ChartBarBig />,\n Style: <Tag />,\n Place: <MapPin />,\n};\n\nfunction getIconFromString(iconString: string): JSX.Element | null {\n if (!iconString) {\n return null;\n }\n\n if (iconMap[iconString]) {\n return iconMap[iconString];\n }\n\n const lowerIconString = iconString.toLowerCase();\n const matchingKey = Object.keys(iconMap).find((key) => key.toLowerCase() === lowerIconString);\n\n if (matchingKey) {\n return iconMap[matchingKey];\n }\n\n return null;\n}\n\nfunction getNColors(n: number) {\n const colors: Array<string[]> = [];\n const safeBaseColors = Array.isArray(baseColors) ? baseColors : [];\n\n for (const baseColor of safeBaseColors) {\n // eslint-disable-next-line import/no-named-as-default-member\n colors.push(chroma.scale(baseColor).mode('lab').colors(n));\n }\n\n function getOneColor(existing: Array<string>) {\n let color: null | string = null;\n\n do {\n const base = colors[Math.floor(Math.random() * colors.length)];\n const selectedColorIndex = Math.floor(Math.random() * base.length);\n color = base[selectedColorIndex];\n } while (existing.includes(color));\n\n return color as string;\n }\n\n const selectedColors: Array<string> = [];\n\n for (let i = 0; i < n; i++) {\n selectedColors.push(getOneColor(selectedColors));\n }\n\n return selectedColors;\n}\n\n/* TODO: Loader remains */\nexport function renderActionCard(props: any): JSX.Element {\n const { gjsModel, isTemplateView = false, ...rest } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const {\n headerContent = 'Default action card title',\n icon,\n bodyContent = 'Default body content. Click to edit.',\n sampleData,\n } = allData;\n\n const effectiveBodyContent =\n isTemplateView && sampleData !== undefined ? sampleData : bodyContent;\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData,\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const defaultClasses = 'text-black p-4 rounded-lg shadow border flex flex-col h-full';\n\n return (\n <Card\n className={`${defaultClasses} relative`}\n style={{ backgroundColor: '#f9f9fe' }}\n isEditable={false}\n contentEditable={false}\n {...rest}\n >\n <CardContent className=\"p-0\" isEditable={false} contentEditable={false}>\n <div className=\"px-4 py-3\">\n <div className=\"flex items-start flex-col\">\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"text-xl font-semibold\">{headerContent}</div>\n <div className=\"text-5xl ml-2 flex items-center\" aria-hidden=\"true\">\n {getIconFromString(icon)}\n </div>\n </div>\n <div className=\"w-full mt-1\">\n {attributes.error ||\n allData.error ||\n attributes.isMissing ||\n allData.isMissing ||\n !effectiveBodyContent ? (\n <span className=\"flex flex-row items-center px-3 py-2\">\n <CircleAlert className=\"w-3 h-3 text-gray-400 mr-1\" />\n <p className=\"text-sm text-gray-500 max-w-md text-center\">\n No data available for given filters\n </p>\n </span>\n ) : (\n <div className=\"text-base leading-relaxed\">{effectiveBodyContent}</div>\n )}\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n );\n}\n\nexport function renderCard(props: any): JSX.Element {\n const {\n gjsModel,\n performInteraction = () => Promise.resolve({}),\n isTemplateView = false,\n ...rest\n } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const {\n headerContent,\n headerDescription,\n bodyContent,\n footerContent,\n footerClass,\n footerIcon,\n contentMetadata,\n contentMetadataClass,\n className: dataClassName,\n error: dataError,\n isMissing: dataIsMissing,\n sampleData,\n } = allData;\n\n function toSafeText(value: unknown): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n return typeof value === 'string' ? value : JSON.stringify(value);\n }\n\n const safeHeaderContent = toSafeText(headerContent);\n const safeHeaderDescription = toSafeText(headerDescription);\n const effectiveBodyContent =\n isTemplateView && sampleData !== undefined ? sampleData.bodyContent : bodyContent;\n const safeBodyContent = toSafeText(effectiveBodyContent);\n const effectiveFooterContent =\n isTemplateView && sampleData !== undefined ? sampleData.footerContent : footerContent;\n const safeFooterContent = toSafeText(effectiveFooterContent);\n const safeContentMetadata = toSafeText(contentMetadata);\n\n const [footerHasContent, setFooterHasContent] = useState(safeFooterContent?.length > 0);\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData,\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n useEffect(() => {\n setFooterHasContent(safeFooterContent?.length > 0);\n }, [safeFooterContent]);\n\n const defaultClasses =\n 'bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none';\n const defaultFooterClasses = footerHasContent\n ? 'text-sm bg-pink-50 text-pink-900 shadow-sm'\n : 'text-sm';\n const defaultContentMetadataClasses = 'text-xs';\n\n const mergedCardClassName = dataClassName ? cn(defaultClasses, dataClassName) : defaultClasses;\n const effectiveFooterClass =\n isTemplateView && sampleData !== undefined ? sampleData.footerClass : footerClass;\n const mergedFooterClassName = effectiveFooterClass\n ? cn(defaultFooterClasses, effectiveFooterClass)\n : defaultFooterClasses;\n const mergedContentMetadataClassName = contentMetadataClass\n ? cn(defaultContentMetadataClasses, contentMetadataClass)\n : defaultContentMetadataClasses;\n\n const hasError = Boolean(attributes?.error ?? dataError);\n const hasMissing = Boolean(attributes?.isMissing ?? dataIsMissing);\n\n const hasSampleData = isTemplateView && sampleData !== undefined;\n const isLoading = Boolean(\n !hasSampleData &&\n (attributes?.interactionApiInProgress || attributes?.loading) &&\n !hasError &&\n !hasMissing,\n );\n\n const footerIconText =\n typeof footerIcon === 'string'\n ? footerIcon\n : footerIcon && typeof footerIcon === 'object' && 'icon' in (footerIcon as any)\n ? String((footerIcon as any).icon)\n : '';\n\n function getCardContent() {\n if (isLoading) {\n return (\n <CardContent>\n <CardLoader />\n </CardContent>\n );\n }\n\n const showEmpty = hasError || hasMissing;\n\n function handleFooterInput(event: React.FormEvent<HTMLDivElement>) {\n const target = event.target as HTMLDivElement;\n const content = target.textContent || '';\n const hasContent = content.trim().length > 0;\n\n setFooterHasContent(hasContent);\n\n if (!hasContent) {\n const currentProps = gjsModel.get('componentProps');\n gjsModel.set('componentProps', {\n ...currentProps,\n footerContent: null,\n footerIcon: null,\n footerClass: null,\n isEmptied: true,\n });\n }\n }\n\n return (\n <React.Fragment>\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"headerContent\" contentEditable={isEditable} className=\"text-lg\">\n {safeHeaderContent}\n </CardTitle>\n <CardDescription\n data-slot=\"headerDescription\"\n contentEditable={isEditable}\n className=\"text-sm\"\n >\n {safeHeaderDescription}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n\n {showEmpty ? (\n <span className=\"flex flex-row items-center px-3 py-2\">\n <CircleAlert className=\"w-3 h-3 text-gray-400 mr-1\" />\n <p className=\"text-sm text-gray-500 max-w-md text-center\">\n No data available for given filters\n </p>\n </span>\n ) : (\n <CardContent data-slot=\"bodyContent\" contentEditable={false} className=\"flex-grow\">\n <div className=\"text-3xl font-semibold truncate\">{safeBodyContent}</div>\n {safeContentMetadata && (\n <div className={mergedContentMetadataClassName} style={{ color: '#2A44D4' }}>\n {safeContentMetadata}\n </div>\n )}\n </CardContent>\n )}\n\n <CardFooter\n data-slot=\"footerContent\"\n contentEditable={isEditable}\n className={mergedFooterClassName}\n onInput={handleFooterInput}\n >\n {(footerIconText || '').trim() ? (\n <span className=\"mr-2\" aria-hidden=\"true\">\n {footerIconText}\n </span>\n ) : null}\n {safeFooterContent || ''}\n </CardFooter>\n </React.Fragment>\n );\n }\n\n return (\n <Card {...rest} isEditable={false} className={`${mergedCardClassName} relative`}>\n {getCardContent()}\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\nfunction transformDataForScatter(\n data: any[],\n xAxis: string,\n yAxis: string,\n dataKeys: any[],\n): any[] {\n if (!data || data.length === 0) {\n return [];\n }\n\n const scatterData = data\n .filter(\n (item) =>\n item[xAxis] !== null &&\n item[xAxis] !== undefined &&\n item[yAxis] !== null &&\n item[yAxis] !== undefined,\n )\n .map((item) => {\n const result: any = {\n [xAxis]: Number(item[xAxis]),\n [yAxis]: Number(item[yAxis]),\n };\n\n if (dataKeys && dataKeys.length > 0) {\n dataKeys.forEach(({ key }: { key: string }) => {\n if (item[key] !== null && item[key] !== undefined) {\n result[key] = Number(item[key]);\n }\n });\n }\n\n return result;\n });\n\n return scatterData;\n}\n\nfunction binDataForHistogram(data: any[], valueKey: string, bins = 10): any[] {\n if (!data || data.length === 0) {\n return [];\n }\n\n const values = data.map((item) => Number(item[valueKey])).filter((val) => !isNaN(val));\n\n if (values.length === 0) {\n return [];\n }\n\n const min = Math.min(...values);\n const max = Math.max(...values);\n const binWidth = (max - min) / bins;\n\n const binsArray: number[] = new Array(bins).fill(0);\n const binLabels: string[] = [];\n\n for (let i = 0; i < bins; i++) {\n const binStart = min + i * binWidth;\n const binEnd = binStart + binWidth;\n binLabels.push(`${binStart.toFixed(1)}-${binEnd.toFixed(1)}`);\n }\n\n values.forEach((value) => {\n let binIndex = Math.floor((value - min) / binWidth);\n\n if (binIndex >= bins) {\n binIndex = bins - 1;\n }\n\n if (binIndex < 0) {\n binIndex = 0;\n }\n\n binsArray[binIndex] += 1;\n });\n\n return binLabels.map((label, index) => ({\n bin: label,\n frequency: binsArray[index],\n }));\n}\n\nfunction transformDataForBeeswarm(\n data: any[],\n groupBy: string,\n valueKey: string,\n): { nodes: any[]; groups: string[] } {\n if (!data || data.length === 0) {\n return { nodes: [], groups: [] };\n }\n\n const grouped: { [key: string]: number[] } = {};\n\n data.forEach((item) => {\n if (\n item[groupBy] !== null &&\n item[groupBy] !== undefined &&\n item[valueKey] !== null &&\n item[valueKey] !== undefined\n ) {\n const group = String(item[groupBy]);\n const value = Number(item[valueKey]);\n\n if (!isNaN(value)) {\n if (!grouped[group]) {\n grouped[group] = [];\n }\n\n grouped[group].push(value);\n }\n }\n });\n\n const groups = Object.keys(grouped).sort();\n const nodes: any[] = [];\n\n groups.forEach((group, groupIndex) => {\n const values = grouped[group];\n\n values.forEach((value) => {\n nodes.push({\n group: group,\n groupIndex: groupIndex,\n value: value,\n x: groupIndex,\n y: value,\n radius: 4,\n });\n });\n });\n\n return { nodes, groups };\n}\n\nfunction BeeswarmChart({\n data,\n groups,\n color,\n groupBy,\n valueKey,\n decimalPrecision = 2,\n}: {\n data: any[];\n groups: string[];\n color: string;\n groupBy: string;\n valueKey: string;\n decimalPrecision?: number;\n}): JSX.Element {\n const containerRef = useRef<HTMLDivElement>(null);\n const svgRef = useRef<SVGSVGElement>(null);\n const [dimensions, setDimensions] = useState({ width: 800, height: 250 });\n const [simulatedNodes, setSimulatedNodes] = useState<any[]>([]);\n const { tooltipData, tooltipLeft, tooltipTop, tooltipOpen, showTooltip, hideTooltip } =\n useTooltip<any>();\n\n useEffect(() => {\n const updateDimensions = () => {\n if (containerRef.current) {\n setDimensions({\n width: containerRef.current.offsetWidth || 800,\n height: 250,\n });\n }\n };\n\n updateDimensions();\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setDimensions({\n width: entry.contentRect.width || 800,\n height: 250,\n });\n }\n });\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n window.addEventListener('resize', updateDimensions);\n\n return () => {\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateDimensions);\n };\n }, []);\n\n const createXScale = useCallback((innerWidth: number, groupDomain: string[]) => {\n const minBandwidth = 60;\n const totalMinWidth = groupDomain.length * minBandwidth;\n const paddingRatio = 0.3;\n\n let xScale = scaleBand({\n domain: groupDomain,\n range: [0, innerWidth],\n padding: paddingRatio,\n });\n\n if (totalMinWidth > innerWidth) {\n xScale = scaleBand({\n domain: groupDomain,\n range: [0, groupDomain.length * minBandwidth],\n padding: paddingRatio,\n });\n } else {\n xScale = scaleBand({\n domain: groupDomain,\n range: [0, innerWidth],\n padding: paddingRatio,\n });\n\n const currentBandwidth = xScale.bandwidth();\n\n if (currentBandwidth < minBandwidth) {\n xScale = scaleBand({\n domain: groupDomain,\n range: [0, groupDomain.length * minBandwidth],\n padding: paddingRatio,\n });\n }\n }\n\n return xScale;\n }, []);\n\n const scales = useMemo(() => {\n if (data.length === 0 || dimensions.width === 0) {\n return null;\n }\n\n const margin = { top: 20, right: 20, bottom: 60, left: 60 };\n const innerWidth = dimensions.width - margin.left - margin.right;\n const innerHeight = dimensions.height - margin.top - margin.bottom;\n\n const values = data.map((d) => d.value);\n const minValue = Math.min(...values);\n const maxValue = Math.max(...values);\n\n const xScale = createXScale(innerWidth, groups);\n const yScale = scaleLinear({\n domain: [minValue, maxValue],\n range: [innerHeight, 0],\n });\n\n return { xScale, yScale, minValue, maxValue, innerWidth, innerHeight };\n }, [data, groups, dimensions, createXScale]);\n\n useEffect(() => {\n if (!scales) {\n return;\n }\n\n const { xScale, minValue, maxValue, innerWidth, innerHeight } = scales;\n const valueRange = maxValue - minValue;\n const padding = valueRange * 0.1;\n\n const yScaleWithPadding = scaleLinear({\n domain: [minValue - padding, maxValue + padding],\n range: [innerHeight, 0],\n });\n\n // Use the actual chart width from xScale range, not just innerWidth\n const actualChartWidth = Math.max(innerWidth, xScale.range()[1] || 0);\n const bounds = {\n minY: BEESWARM_CONFIG.RADIUS,\n maxY: innerHeight - BEESWARM_CONFIG.RADIUS,\n minX: 0,\n maxX: actualChartWidth,\n };\n\n const nodes = data.map((d) => {\n const initialY = yScaleWithPadding(d.value);\n const clampedY = Math.max(bounds.minY, Math.min(bounds.maxY, initialY));\n const groupCenterX = (xScale(d.group) || 0) + (xScale.bandwidth() || 0) / 2;\n const bandwidth = xScale.bandwidth() || 0;\n const maxSpread = bandwidth * BEESWARM_CONFIG.SPREAD_FACTOR;\n const randomOffset = (Math.random() - 0.5) * maxSpread * BEESWARM_CONFIG.RANDOM_FACTOR;\n\n return {\n ...d,\n groupCenterX,\n x: groupCenterX + randomOffset,\n y: clampedY,\n radius: BEESWARM_CONFIG.RADIUS,\n maxSpread,\n };\n });\n\n let simulation = null;\n\n try {\n simulation = forceSimulation(nodes)\n .force('x', forceX((d: any) => d.groupCenterX).strength(0.15))\n .force(\n 'y',\n forceY((d: any) => {\n const targetY = yScaleWithPadding(d.value);\n\n return Math.max(bounds.minY, Math.min(bounds.maxY, targetY));\n }).strength(1.0),\n )\n .force(\n 'collide',\n forceCollide()\n .radius((d: any) => d.radius + BEESWARM_CONFIG.COLLISION_PADDING)\n .strength(0.9)\n .iterations(3),\n );\n\n if (simulation && typeof simulation.stop === 'function') {\n simulation.stop();\n }\n } catch (error) {\n setSimulatedNodes([...nodes]);\n\n return;\n }\n\n const constrainNode = (node: any, isFinal = false) => {\n const correctY = yScaleWithPadding(node.value);\n node.y = Math.max(bounds.minY, Math.min(bounds.maxY, correctY));\n node.vy = 0;\n\n const nodeMinX = node.groupCenterX - node.maxSpread;\n const nodeMaxX = node.groupCenterX + node.maxSpread;\n const constrainedMinX = Math.max(bounds.minX, nodeMinX);\n const constrainedMaxX = Math.min(bounds.maxX, nodeMaxX);\n\n if (isFinal) {\n if (node.x < constrainedMinX) {\n node.x = constrainedMinX;\n } else if (node.x > constrainedMaxX) {\n node.x = constrainedMaxX;\n }\n } else {\n const overflowMargin = node.maxSpread * 0.1;\n\n if (node.x < constrainedMinX - overflowMargin) {\n node.x = constrainedMinX - overflowMargin;\n node.vx *= 0.7;\n } else if (node.x > constrainedMaxX + overflowMargin) {\n node.x = constrainedMaxX + overflowMargin;\n node.vx *= 0.7;\n }\n }\n };\n\n if (simulation && typeof simulation.tick === 'function') {\n for (let i = 0; i < BEESWARM_CONFIG.SIMULATION_ITERATIONS; i++) {\n try {\n simulation.tick();\n nodes.forEach((node) => constrainNode(node, false));\n } catch (error) {\n break;\n }\n }\n }\n\n // Final constraint pass\n nodes.forEach((node: any) => {\n constrainNode(node, true);\n node.vx = 0;\n });\n\n setSimulatedNodes([...nodes]);\n }, [scales, data]);\n\n if (simulatedNodes.length === 0 || dimensions.width === 0 || !scales) {\n return <div ref={containerRef} style={{ width: '100%', height: '250px' }} />;\n }\n\n const margin = { top: 20, right: 20, bottom: 60, left: 60 };\n const { xScale, yScale, innerWidth, innerHeight } = scales;\n\n const handleMouseOver = (event: React.MouseEvent, node: any) => {\n if (containerRef.current) {\n const containerRect = containerRef.current.getBoundingClientRect();\n const x = event.clientX - containerRect.left + 10;\n const y = event.clientY - containerRect.top - 10;\n\n showTooltip({\n tooltipLeft: x,\n tooltipTop: y,\n tooltipData: node,\n });\n }\n };\n\n const actualChartWidth = Math.max(innerWidth, xScale.range()[1] || 0);\n const actualSvgWidth = actualChartWidth + margin.left + margin.right;\n\n return (\n <div ref={containerRef} style={{ width: '100%', height: '250px', position: 'relative' }}>\n <svg\n ref={svgRef}\n width={Math.max(dimensions.width, actualSvgWidth)}\n height={dimensions.height}\n onMouseLeave={hideTooltip}\n >\n <Group left={margin.left} top={margin.top}>\n <GridRows\n scale={yScale}\n width={actualChartWidth}\n strokeDasharray=\"3,3\"\n stroke=\"#e0e0e0\"\n strokeOpacity={0.5}\n />\n <AxisLeft\n scale={yScale}\n tickStroke=\"#666\"\n stroke=\"#666\"\n tickLabelProps={() => ({\n fill: '#666',\n fontSize: 12,\n textAnchor: 'end',\n dy: '0.33em',\n })}\n />\n <AxisBottom\n top={innerHeight}\n scale={xScale}\n tickStroke=\"#666\"\n stroke=\"#666\"\n tickLabelProps={() => ({\n fill: '#666',\n fontSize: 12,\n textAnchor: 'middle',\n })}\n />\n {simulatedNodes.map((node, i) => (\n <Circle\n key={i}\n cx={node.x || 0}\n cy={node.y || 0}\n r={node.radius}\n fill={color}\n opacity={0.8}\n stroke={color}\n strokeWidth={1}\n onMouseOver={(e) => handleMouseOver(e, node)}\n style={{ cursor: 'pointer' }}\n />\n ))}\n </Group>\n </svg>\n {tooltipOpen &&\n tooltipData &&\n tooltipLeft !== null &&\n tooltipLeft !== undefined &&\n tooltipTop !== null &&\n tooltipTop !== undefined && (\n <TooltipWithBounds\n left={tooltipLeft}\n top={tooltipTop}\n style={{\n ...defaultStyles,\n backgroundColor: 'white',\n border: '1px solid #e0e0e0',\n borderRadius: '4px',\n padding: '8px 12px',\n boxShadow: '0 2px 8px rgba(0,0,0,0.15)',\n fontSize: '12px',\n position: 'absolute',\n zIndex: 1000,\n pointerEvents: 'none',\n }}\n >\n <div>\n <div style={{ marginBottom: '4px', fontWeight: 600 }}>\n {groupBy}: {tooltipData.group}\n </div>\n <div>\n {valueKey}: {formatValue(tooltipData.value, decimalPrecision)}\n </div>\n </div>\n </TooltipWithBounds>\n )}\n </div>\n );\n}\n\nfunction renderChartComponent(\n chartType: string,\n data: any,\n config: any,\n decimalPrecision = 2,\n): JSX.Element {\n const safeData = Array.isArray(data) ? data : [];\n\n if (safeData.length === 0) {\n return renderNoDataFallback();\n }\n\n switch (chartType) {\n case 'pie':\n return (\n <PieChart>\n {safeData.length >= 20 && (\n <ChartTooltip\n cursor={false}\n content={<ChartTooltipContent hideLabel decimalPrecision={decimalPrecision} />}\n />\n )}\n <Pie\n data={safeData}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n safeData.length < 20\n ? ({ name, percent }: { name: string; percent: number }) =>\n `${name}: ${formatValue(percent * 100, decimalPrecision)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n\n case 'bar': {\n config.dataKeys = config.dataKeys || [];\n\n const barDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n const angle = config.angle ? config.angle : 0;\n const radian = Math.abs(angle) * (Math.PI / 180);\n const maxLabelLength = safeData.reduce((max, item) => {\n const label = String(item[config.xAxis] || '');\n\n return Math.max(max, Math.min(label.length, 28));\n }, 0);\n const multiplier = Math.floor(Math.max(Math.sin(radian), 0.3) * 6);\n const axisHeight = 40 + maxLabelLength * multiplier;\n\n return (\n <BarChart\n data={safeData}\n {...config.chartUi}\n {...(barDataKeys.length > 1 && { barGap: 0 })}\n >\n <CartesianGrid vertical={false} />\n <XAxis\n dataKey={config.xAxis}\n {...(config.angle && {\n interval: 0,\n angle: angle,\n height: axisHeight,\n textAnchor: 'end',\n })}\n tickFormatter={(value) => {\n return value.length > 25 ? `${value.slice(0, 25)}...` : value;\n }}\n />\n <YAxis />\n <Legend align=\"left\" wrapperStyle={{ marginLeft: 20 }} />\n {barDataKeys.map(({ key, name, color }: { key: string; name: string; color: string }) => {\n return <Bar dataKey={key} fill={color ?? '#4caf50'} name={name} key={key} radius={2} />;\n })}\n <ChartTooltip\n cursor={false}\n content={<ChartTooltipContent indicator=\"dashed\" decimalPrecision={decimalPrecision} />}\n />\n </BarChart>\n );\n }\n\n case 'line': {\n config.dataKeys = config.dataKeys || [];\n const safeDataKeysLine = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n return (\n <LineChart data={safeData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <ChartTooltip\n cursor={false}\n content={<ChartTooltipContent indicator=\"dashed\" decimalPrecision={decimalPrecision} />}\n />\n {safeDataKeysLine.map(\n ({ key, name, color }: { key: string; name: string; color: string }) => {\n return (\n <Line\n type=\"monotone\"\n dataKey={key}\n stroke={color ?? '#4caf50'}\n name={name}\n key={key}\n />\n );\n },\n )}\n <Legend align=\"left\" />\n </LineChart>\n );\n }\n\n case 'scatter': {\n config.dataKeys = config.dataKeys || [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n const scatterData = transformDataForScatter(\n safeData,\n config.xAxis,\n config.yAxis,\n safeDataKeys,\n );\n\n if (scatterData.length === 0) {\n return renderNoDataFallback();\n }\n\n const colors =\n safeDataKeys.length > 0\n ? safeDataKeys.map(({ color }: { color: string }) => color ?? '#2A44D4')\n : ['#2A44D4'];\n\n return (\n <ScatterChart data={scatterData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis\n type=\"number\"\n dataKey={config.xAxis}\n name={config.xAxis || 'X Axis'}\n domain={['auto', 'auto']}\n />\n <YAxis\n type=\"number\"\n dataKey={config.yAxis}\n name={config.yAxis || 'Y Axis'}\n domain={['auto', 'auto']}\n />\n <ChartTooltip\n cursor={{ strokeDasharray: '3 3' }}\n content={<ChartTooltipContent decimalPrecision={decimalPrecision} />}\n />\n {safeDataKeys.length > 0 ? (\n safeDataKeys.map(\n (\n { key, name, color }: { key: string; name: string; color: string },\n index: number,\n ) => (\n <Scatter\n key={key}\n name={name || key}\n dataKey={key || config.yAxis}\n fill={color ?? colors[index % colors.length]}\n />\n ),\n )\n ) : (\n <Scatter name=\"Data\" dataKey={config.yAxis} fill={colors[0]} />\n )}\n <Legend align=\"left\" />\n </ScatterChart>\n );\n }\n\n case 'histogram': {\n config.dataKeys = config.dataKeys || [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n const valueKey = safeDataKeys.length > 0 ? safeDataKeys[0].key : config.xAxis;\n const bins = config.bins || 10;\n const binnedData = binDataForHistogram(safeData, valueKey, bins);\n\n if (binnedData.length === 0) {\n return renderNoDataFallback();\n }\n\n const color = safeDataKeys.length > 0 ? safeDataKeys[0].color : '#2A44D4';\n\n return (\n <BarChart data={binnedData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey=\"bin\" angle={-45} textAnchor=\"end\" height={80} />\n <YAxis />\n <ChartTooltip\n cursor={false}\n content={<ChartTooltipContent indicator=\"dashed\" decimalPrecision={decimalPrecision} />}\n />\n <Bar dataKey=\"frequency\" fill={color} radius={2}>\n {binnedData.map((entry, index) => (\n <Cell key={`cell-${index}`} fill={color} />\n ))}\n </Bar>\n <Legend align=\"left\" />\n </BarChart>\n );\n }\n\n case 'beeswarm': {\n const groupBy = config.groupBy || config.xAxis;\n const valueKey = config.valueKey || (config.dataKeys && config.dataKeys[0]?.key) || 'value';\n const { nodes, groups } = transformDataForBeeswarm(safeData, groupBy, valueKey);\n\n if (nodes.length === 0 || groups.length === 0) {\n return renderNoDataFallback();\n }\n\n const color =\n config.dataKeys && config.dataKeys[0]?.color ? config.dataKeys[0].color : '#2A44D4';\n\n return (\n <BeeswarmChart\n data={nodes}\n groups={groups}\n color={color}\n groupBy={groupBy}\n valueKey={valueKey}\n decimalPrecision={decimalPrecision}\n />\n );\n }\n\n default:\n return (\n <PieChart>\n {safeData.length >= 20 && (\n <ChartTooltip\n cursor={false}\n content={<ChartTooltipContent hideLabel decimalPrecision={decimalPrecision} />}\n />\n )}\n <Pie\n data={safeData}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n safeData.length < 20\n ? ({ name, percent }: { name: string; percent: number }) =>\n `${name}: ${formatValue(percent * 100, decimalPrecision)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n }\n}\n\nexport function renderChart(props: any): JSX.Element {\n const {\n gjsModel,\n performInteraction = () => Promise.resolve({}),\n isTemplateView = false,\n ...rest\n } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState<number>(0);\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n const newAttributes = gjsModel.get('attributes');\n setAttributes({\n ...newAttributes,\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const updateContainerWidth = () => {\n if (containerRef.current) {\n setContainerWidth(containerRef.current.offsetWidth || 0);\n }\n };\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContainerWidth(entry.contentRect.width || 0);\n }\n });\n\n updateContainerWidth();\n\n const timeoutId = setTimeout(updateContainerWidth, 50);\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n window.addEventListener('resize', updateContainerWidth);\n\n return () => {\n clearTimeout(timeoutId);\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateContainerWidth);\n };\n }, []);\n\n useEffect(() => {\n }, [containerRef.current]);\n\n const {\n config = {},\n chartType = 'pie',\n chartData = [],\n className,\n title = 'Title',\n subTitle = 'Subtitle',\n sampleData,\n decimalPrecision,\n } = allData;\n\n const effectiveChartData = isTemplateView && sampleData !== undefined ? sampleData : chartData;\n\n const defaultClasses = 'aspect-auto w-full min-w-[200px] min-h-[200px]';\n const mergedClasses = className ? cn(defaultClasses, className) : defaultClasses;\n\n let renderChartData = effectiveChartData;\n\n if (chartType === 'pie') {\n const safeChartData = Array.isArray(effectiveChartData) ? effectiveChartData : [];\n const colors = getNColors(safeChartData.length);\n renderChartData = safeChartData.map((data, i) => ({\n ...data,\n fill: data.fill || colors[i],\n }));\n } else if (!config.color) {\n const safeBaseColors = Array.isArray(baseColors) ? baseColors : [];\n\n if (safeBaseColors.length > 0) {\n config.color = safeBaseColors[Math.floor(Math.random() * safeBaseColors.length)];\n }\n }\n\n let totalDataPoints = 0;\n\n if (\n chartType === 'bar' ||\n chartType === 'line' ||\n chartType === 'scatter' ||\n chartType === 'histogram' ||\n chartType === 'beeswarm'\n ) {\n const safeChartData = Array.isArray(effectiveChartData) ? effectiveChartData : [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n if (chartType === 'bar') {\n totalDataPoints = safeChartData.length * Math.max(1, safeDataKeys.length);\n } else {\n totalDataPoints = safeChartData.length;\n }\n }\n\n const getScrollableWidth = () => {\n if (chartType === 'line') {\n return totalDataPoints * 20;\n }\n\n if (chartType === 'bar') {\n return (\n totalDataPoints * 20 +\n (Array.isArray(config.dataKeys) ? config.dataKeys.length : 0) *\n 8 *\n (Array.isArray(chartData) ? chartData.length : 0) +\n (Array.isArray(chartData) ? chartData.length : 0) * 15\n );\n }\n\n return 800;\n };\n\n const scrollWidth = getScrollableWidth();\n const shouldScroll =\n (chartType === 'bar' ||\n chartType === 'line' ||\n chartType === 'beeswarm' ||\n chartType === 'histogram' ||\n chartType === 'scatter') &&\n totalDataPoints > 15 &&\n scrollWidth > containerWidth;\n\n let adjustedHeight = 250;\n const angle = config.angle ? config.angle : 0;\n const radian = Math.abs(angle) * (Math.PI / 180);\n\n if (chartType === 'bar' && chartData && Array.isArray(chartData) && config.angle) {\n const maxLabelLength = chartData.reduce((max, item) => {\n const label = String(item[config.xAxis] || '');\n\n return Math.max(max, Math.min(label.length, 28));\n }, 0);\n const multiplier = Math.floor(Math.max(Math.sin(radian), 0.3) * 5);\n const axisHeight = 40 + maxLabelLength * multiplier;\n adjustedHeight = 250 + axisHeight;\n }\n\n const hasError = attributes.error || allData.error;\n const hasMissing = attributes.isMissing || allData.isMissing;\n\n const hasSampleData = isTemplateView && sampleData !== undefined;\n const isLoading =\n !hasSampleData &&\n (attributes.interactionApiInProgress || attributes.loading) &&\n !hasError &&\n !hasMissing;\n\n const ChartWrapper = ({ children }: { children: React.ReactNode }) => {\n if (shouldScroll) {\n return (\n <div className=\"w-full overflow-x-auto\">\n <div style={{ minWidth: `${scrollWidth}px`, height: `${adjustedHeight}px` }}>\n {children}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"w-full\" style={{ height: `${adjustedHeight}px` }}>\n {children}\n </div>\n );\n };\n\n const chartUi = isLoading ? (\n <ChartLoader />\n ) : hasError || hasMissing || !effectiveChartData ? (\n renderNoDataFallback()\n ) : (\n <ChartWrapper>\n <ChartContainer\n {...rest}\n config={config}\n className={mergedClasses}\n style={{ height: `${adjustedHeight}px` }}\n >\n {renderChartComponent(chartType, renderChartData, config, decimalPrecision ?? 2)}\n </ChartContainer>\n </ChartWrapper>\n );\n\n return (\n <Card className=\"shadow border mt-2 mb-2 relative\">\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"title\" contentEditable={isEditable} className=\"text-2xl\">\n {title}\n </CardTitle>\n <CardDescription data-slot=\"subTitle\" contentEditable={isEditable} className=\"text-sm\">\n {subTitle}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent\n data-slot=\"bodyContent\"\n className=\"px-6\"\n style={{ minHeight: '250px' }}\n >\n <div ref={containerRef}>\n {chartUi}\n </div>\n </CardContent>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n {!isEditable && (\n <div className=\"absolute bottom-2 right-2 flex items-center gap-1 z-10\">\n <DownloadButton\n component=\"chart\"\n containerRef={containerRef}\n title={title}\n subtitle={subTitle}\n onDownloadCSV={effectiveChartData?.length > 0 ? async () => {\n const keys = Object.keys(effectiveChartData[0]);\n const headers = keys.map((key) => config[key]?.label || key);\n const rows = effectiveChartData.map((row: any) =>\n keys.map((key) => {\n const val = row[key];\n const str = val === null || val === undefined ? '' : String(val);\n return str.includes(',') ? `\"${str}\"` : str;\n }).join(',')\n );\n const csv = [headers.join(','), ...rows].join('\\n');\n const blob = new Blob([csv], { type: 'text/csv' });\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = `${title || 'chart'}.csv`;\n anchor.click();\n URL.revokeObjectURL(url);\n } : undefined}\n />\n </div>\n )}\n </Card>\n );\n}\n\nfunction handleBulkAction(\n actionId: string,\n tableId: string,\n selectedValues: string[],\n performInteraction: (config: any) => Promise<any>,\n setSelectedIndices: (indices: number[]) => void,\n) {\n return async () => {\n await performInteraction({\n id: actionId,\n interactionType: 'tableBulkButton',\n payload: {\n rows: selectedValues,\n tableId,\n },\n affectedComponents: getAffectedComponentsWithLoader([tableId], true),\n });\n setSelectedIndices([]);\n };\n}\n\nfunction BulkActionButton({\n action,\n isEditable,\n attributes,\n selectedValues,\n tableId,\n performInteraction,\n setSelectedIndices,\n}: {\n action: any;\n isEditable: boolean;\n attributes: any;\n selectedValues: any[];\n tableId: string;\n performInteraction: (config: any) => Promise<any>;\n setSelectedIndices: (indices: number[]) => void;\n}) {\n const [isLoading, setIsLoading] = useState(false);\n const { formMapper, formButtonText } = action.action || {};\n const { openForm, FormDialog } = useButtonForm({\n formMapper,\n isSubmitting: isLoading,\n formButtonText,\n onSubmit: async (formData) => {\n setIsLoading(true);\n\n try {\n const result = await performInteraction({\n id: action.id,\n interactionType: 'tableBulkButton',\n payload: {\n rows: selectedValues,\n tableId: tableId,\n formData,\n },\n affectedComponents: getAffectedComponentsWithLoader([tableId], true),\n });\n\n if (result && result.errors) {\n throw {\n detail: result.errorMsg,\n };\n }\n\n setSelectedIndices([]);\n } finally {\n setIsLoading(false);\n }\n },\n });\n\n const handleClick = async () => {\n if (!openForm()) {\n setIsLoading(true);\n\n try {\n await handleBulkAction(\n action.id,\n tableId,\n selectedValues,\n performInteraction,\n setSelectedIndices,\n )();\n } finally {\n setIsLoading(false);\n }\n }\n };\n\n return (\n <>\n <TooltipButton\n key={action.id}\n className={action.class}\n isEditable={isEditable}\n attributes={{\n interactionApiInProgress: isLoading,\n disabled: attributes.disabled,\n }}\n variant={action.variant}\n size={action.size}\n text={action.text}\n tooltipContent={action.tooltipContent}\n interact={handleClick}\n isDisabled={selectedValues.length === 0}\n />\n {FormDialog}\n </>\n );\n}\n\nexport function renderTable(props: any): JSX.Element {\n const {\n gjsModel,\n performInteraction = () => {},\n navigateToPage,\n downloadTable,\n isTemplateView = false,\n ...rest\n } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n const [selectedIndices, setSelectedIndices] = useState<number[]>([]);\n\n const cardRef = useRef<HTMLDivElement>(null);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n const {\n data: rawData,\n headerMapper: rawHeaderMapper = {},\n className,\n title = 'Title',\n subTitle = 'Subtitle',\n actions = [],\n bulkSelectorActions = [],\n pagination,\n sampleData,\n decimalPrecision,\n columnWithChipClass,\n chipStylesMapping,\n sortable: sortableFromProps,\n } = allData;\n\n const effectiveRawData = isTemplateView && sampleData !== undefined ? sampleData : rawData;\n const data = Array.isArray(effectiveRawData) ? effectiveRawData : [];\n const isBulkSelectionEnabled =\n Array.isArray(bulkSelectorActions) && bulkSelectorActions.length > 0;\n const headerMapper = (() => {\n const cleaned = { ...rawHeaderMapper };\n\n if ('id' in cleaned) {\n delete cleaned.id;\n }\n\n if (data.length > 0) {\n const dataKeys = Object.keys(data[0] || {});\n\n return Object.fromEntries(Object.entries(cleaned).filter(([key]) => dataKeys.includes(key)));\n }\n\n return cleaned;\n })();\n\n const sortConfig = (() => {\n const { sortColumn, sortDirection } = gjsModel.get('componentProps') ?? {};\n\n return sortColumn && sortDirection ? { [sortColumn]: sortDirection } : {};\n })();\n\n const [scrollAreaHeight, setScrollAreaHeight] = useState<number>(250);\n\n const calculateTableHeight = (rowCount: number) => {\n const baseTableHeight = 250;\n const headerHeight = 48;\n const rowHeight = 40;\n const calculatedHeight = headerHeight + rowCount * rowHeight;\n const total = pagination?.totalCount;\n let height = Math.min(calculatedHeight, 1100);\n if (total) {\n height = Math.min(calculatedHeight, baseTableHeight);\n }\n setScrollAreaHeight(height);\n };\n\n useEffect(() => {\n calculateTableHeight(Array.isArray(data) ? data.length : 0);\n }, [data]);\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n const parsedData = (() => {\n if (\n typeof data === 'object' &&\n data !== null &&\n !Array.isArray(data) &&\n (data as any).name === '__peak_placeholder'\n ) {\n return [];\n }\n\n if (!Array.isArray(data)) {\n return [];\n }\n\n return data.map((datum: any) => {\n const newData = {\n ...datum,\n };\n\n delete newData.id;\n\n return newData;\n });\n })();\n\n const selectedValues = useMemo(() => {\n return selectedIndices.map((idx) => data?.[idx]).filter(Boolean);\n }, [selectedIndices, data]);\n\n async function onRowAction(rowIndex: number, actionId: string, formData?: any) {\n const id = gjsModel.get('id');\n\n const result = await performInteraction({\n id: actionId,\n interactionType: 'tableButton',\n payload: {\n row: data[rowIndex],\n tableId: id,\n ...(formData && { formData }),\n },\n affectedComponents: [],\n });\n\n if (result && result.errors) {\n throw {\n detail: result.errorMsg,\n };\n }\n }\n\n async function onPageChange(pageNumber: number, pageSize: number) {\n const id = gjsModel.get('id');\n const { sortColumn, sortDirection } = gjsModel.get('componentProps') ?? {};\n\n await performInteraction({\n id,\n interactionType: 'pagination',\n payload: {\n pageNumber,\n pageSize,\n ...(sortColumn && sortDirection && { sortColumn, sortDirection }),\n },\n affectedComponents: getAffectedComponentsWithLoader([id], true),\n });\n\n setSelectedIndices([]);\n }\n\n async function handleSort(column: string, direction: SortDirection) {\n const currentProps = gjsModel.get('componentProps');\n const id = gjsModel.get('id');\n\n gjsModel.set('componentProps', {\n ...currentProps,\n sortColumn: direction ? column : null,\n sortDirection: direction,\n });\n\n await performInteraction({\n id,\n interactionType: 'tableSort',\n payload: {\n sortColumn: direction ? column : null,\n sortDirection: direction,\n tableId: id,\n },\n affectedComponents: getAffectedComponentsWithLoader([id], true),\n });\n\n setSelectedIndices([]);\n }\n\n return (\n <Card\n ref={cardRef}\n className=\"shadow border relative flex flex-col h-fit overflow-hidden\"\n data-component-type=\"table\"\n data-table-id={gjsModel.get('id')}\n >\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"title\" contentEditable={isEditable} className=\"text-2xl\">\n {title}\n </CardTitle>\n <CardDescription data-slot=\"subTitle\" contentEditable={isEditable} className=\"text-sm\">\n {subTitle}\n </CardDescription>\n </div>\n {isBulkSelectionEnabled && (\n <div className={cn('flex gap-2', isEditable && 'pr-8')}>\n {bulkSelectorActions.map((action: any) => (\n <BulkActionButton\n key={action.id}\n action={action}\n isEditable={isEditable}\n attributes={attributes}\n selectedValues={selectedValues}\n tableId={gjsModel.get('id')}\n performInteraction={performInteraction}\n setSelectedIndices={setSelectedIndices}\n />\n ))}\n </div>\n )}\n </div>\n </CardHeader>\n <CardContent\n data-slot=\"bodyContent\"\n contentEditable={false}\n className=\"flex-1 flex flex-col overflow-hidden\"\n >\n {attributes.error || allData.error || attributes.isMissing || allData.isMissing ? (\n renderNoDataFallback()\n ) : (\n <DataTable\n data={parsedData}\n headerMapper={headerMapper}\n className={className}\n isEditable={isEditable}\n actions={actions}\n pagination={pagination}\n isLoading={\n !(isTemplateView && sampleData !== undefined) &&\n (attributes.interactionApiInProgress || attributes.loading)\n }\n onRowAction={onRowAction}\n onPageChange={onPageChange}\n onSort={handleSort}\n sortConfig={sortConfig}\n sortable={sortableFromProps !== false}\n otherProps={rest}\n height={scrollAreaHeight}\n decimalPrecision={decimalPrecision}\n columnWithChipClass={columnWithChipClass}\n chipStylesMapping={chipStylesMapping}\n navigateToPage={navigateToPage}\n isBulkSelectionEnabled={isBulkSelectionEnabled}\n selectedIndices={selectedIndices}\n setSelectedIndices={setSelectedIndices}\n title={title}\n onDownload={downloadTable ? (limit: number) => downloadTable({ tableId: gjsModel.get('id'), title, limit, headerMapper }) : undefined}\n />\n )}\n </CardContent>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n tableActions={actions}\n firstRowData={Array.isArray(data) && data.length > 0 ? data[0] : {}}\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\nexport function renderTab(props: any): JSX.Element {\n let tabsWidth = 157;\n const safeTabs = Array.isArray(props.tabs) ? props.tabs : [];\n const showFallback = safeTabs.length === 0;\n\n if (safeTabs.length > 4) {\n tabsWidth = 157;\n }\n\n const defaultValue = props.defaultValue || (safeTabs.length > 0 ? safeTabs[0] : undefined);\n\n useEffect(() => {\n if (props.gjsModel) {\n const componentId = props.gjsModel.get('id');\n const childrenCount = props.gjsModel.components().length;\n\n if (safeTabs.length > 0 && childrenCount === 0) {\n // eslint-disable-next-line no-console\n console.warn(\n `Tab component ${componentId} has ${safeTabs.length} tabs but no child components. This may indicate lost tab content.`,\n );\n }\n }\n }, [safeTabs.length, props.gjsModel]);\n\n return (\n <Tabs defaultValue={defaultValue}>\n <div className=\"text-center mb-4\">\n <TabsList className=\"bg-[#F9F9FE] border border-[#D4D5DE] p-1 rounded-lg h-auto\">\n {safeTabs.length > 0 ? (\n safeTabs.map((tab: string) => (\n <TabsTrigger\n value={tab}\n key={tab}\n className={`\n w-[${tabsWidth}px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n `}\n style={{\n fontFamily: 'Helvetica Neue',\n fontWeight: 500,\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: '0%',\n }}\n >\n {tab}\n </TabsTrigger>\n ))\n ) : (\n <TabsTrigger\n value=\"no-data\"\n className={`\n w-[${tabsWidth}px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n `}\n style={{\n fontFamily: 'Helvetica Neue',\n fontWeight: 500,\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: '0%',\n }}\n disabled\n >\n No tabs\n </TabsTrigger>\n )}\n </TabsList>\n </div>\n {showFallback ? (\n <TabsContent\n value={defaultValue || 'no-data'}\n className=\"tabs-content\"\n data-fallback=\"true\"\n >\n {renderNoDataFallback()}\n </TabsContent>\n ) : (\n safeTabs.map((tab: string) => (\n <TabsContent value={tab} className=\"tabs-content\" key={tab} />\n ))\n )}\n </Tabs>\n );\n}\n\nexport function renderMarkdown(props: any): JSX.Element {\n const { gjsModel, isTemplateView = false, ...rest } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n const [isEditing, setIsEditing] = useState(false);\n const [isEditingHeading, setIsEditingHeading] = useState(false);\n const editRef = useRef<HTMLDivElement>(null);\n const headingEditRef = useRef<HTMLDivElement>(null);\n\n const startEditing = () => {\n setIsEditing(true);\n setTimeout(() => {\n setupEditor();\n }, 0);\n };\n\n const startEditingHeading = () => {\n setIsEditingHeading(true);\n setTimeout(() => {\n setupHeadingEditor();\n }, 0);\n };\n\n const setupEditor = () => {\n if (!editRef.current) {\n return;\n }\n\n const editor = editRef.current;\n editor.innerHTML = '';\n const effectiveText =\n isTemplateView && allData.sampleData !== undefined ? allData.sampleData : allData.summaryText;\n editor.textContent = effectiveText;\n editor.focus();\n };\n\n const setupHeadingEditor = () => {\n if (!headingEditRef.current) {\n return;\n }\n\n const editor = headingEditRef.current;\n editor.innerHTML = '';\n editor.textContent = allData.summaryHeading || 'Insights';\n editor.focus();\n };\n\n // Save changes and exit editing mode\n const saveChanges = () => {\n if (!editRef.current) {\n return;\n }\n\n const content = editRef.current.innerText || '';\n setAllData((prev: Record<string, any>) => ({\n ...prev,\n summaryText: content,\n }));\n setIsEditing(false);\n editRef.current.innerHTML = '';\n };\n\n const saveHeadingChanges = () => {\n if (!headingEditRef.current) {\n return;\n }\n\n const content = headingEditRef.current.innerText || 'Insights';\n setAllData((prev: Record<string, any>) => ({\n ...prev,\n summaryHeading: content,\n }));\n setIsEditingHeading(false);\n headingEditRef.current.innerHTML = '';\n };\n\n const markdownStyles = {\n ul: { props: { className: 'list-disc' } },\n h1: { props: { className: 'text-4xl font-bold leading-[4rem]' } },\n h2: { props: { className: 'text-3xl font-bold leading-[3rem]' } },\n h3: { props: { className: 'text-2xl font-bold leading-[2rem]' } },\n h4: { props: { className: 'text-xl font-bold leading-[2.5rem]' } },\n h5: { props: { className: 'text-lg font-bold leading-[2.5rem]' } },\n h6: { props: { className: 'text-base font-bold leading-[2rem]' } },\n };\n\n const { summaryText, summaryHeading, sampleData } = allData;\n\n const rawSummaryText = isTemplateView && sampleData !== undefined ? sampleData : summaryText;\n const effectiveSummaryText = typeof rawSummaryText === 'string' ? rawSummaryText : '';\n\n const hasError = attributes.error || allData.error;\n const hasMissing = attributes.isMissing || allData.isMissing;\n\n const hasSampleData = isTemplateView && allData.sampleData !== undefined;\n const isLoading =\n !hasSampleData &&\n ((attributes.loading && !hasError && !hasMissing) || attributes.interactionApiInProgress);\n\n if (isLoading) {\n return <MarkdownLoader />;\n }\n\n if (hasError || hasMissing) {\n return (\n <div className=\"px-[1em] relative\" {...rest}>\n <h3 className=\"text-xl font-semibold text-left\">{summaryHeading || 'Insights'}</h3>\n <div\n className=\"w-full py-8 flex flex-col items-center justify-center px-6 text-center\"\n style={{ minHeight: '180px' }}\n >\n <CircleAlert className=\"w-12 h-12 text-gray-400 mb-2\" />\n <h3 className=\"text-lg font-medium text-gray-900\">No data available</h3>\n <p className=\"mt-2 text-sm text-gray-500 max-w-md\">\n Check your filters or try a different time range.\n </p>\n </div>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n }\n\n if (!isEditable) {\n return (\n <div className=\"px-[1em] relative\" {...rest}>\n <h3 className=\"text-xl font-semibold text-left\">{summaryHeading || 'Insights'}</h3>\n <div data-slot=\"summaryText\">\n <Markdown options={{ overrides: markdownStyles }}>{effectiveSummaryText}</Markdown>\n </div>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n }\n\n return (\n <div className=\"p-[1em] relative\" {...rest}>\n {isEditingHeading ? (\n <div\n ref={headingEditRef}\n contentEditable\n onBlur={saveHeadingChanges}\n data-slot=\"summaryHeading\"\n className=\"text-xl font-semibold text-left\"\n suppressContentEditableWarning={true}\n />\n ) : (\n <h3\n className=\"text-xl font-semibold text-left\"\n onClick={startEditingHeading}\n data-slot=\"summaryHeading\"\n >\n {allData.summaryHeading || 'Insights'}\n </h3>\n )}\n {isEditing ? (\n <div\n ref={editRef}\n contentEditable\n onBlur={saveChanges}\n data-slot=\"summaryText\"\n className=\"p-2 min-h-[100px] whitespace-pre-wrap\"\n suppressContentEditableWarning={true}\n style={{\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n }}\n />\n ) : (\n <div\n onClick={startEditing}\n data-slot=\"summaryText\"\n style={{\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n }}\n >\n <Markdown options={{ overrides: markdownStyles }}>{effectiveSummaryText}</Markdown>\n </div>\n )}\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n}\n\nexport function renderButton(props: any): JSX.Element {\n const { gjsModel, performInteraction = () => {}, navigateToPage } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n useEffect(() => {\n gjsModel.on('change:componentProps', () => {\n setAllData({\n ...gjsModel.get('componentProps'),\n });\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const {\n text,\n className,\n payload,\n variant = 'default',\n size = 'sm',\n affectedComponents,\n tooltipContent,\n onClick,\n action,\n } = allData;\n\n const { formMapper, formButtonText } = action || {};\n\n const { openForm, FormDialog } = useButtonForm({\n formMapper,\n isSubmitting: attributes.interactionApiInProgress || false,\n onSubmit: async (formData) => {\n const id = gjsModel.get('id');\n const result = await performInteraction({\n id,\n interactionType: 'button',\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n payload: {\n ...payload,\n formData,\n },\n });\n\n if (result && result.errors) {\n throw {\n detail: result.errorMsg,\n };\n }\n },\n formButtonText,\n });\n\n function interact() {\n if (openForm()) {\n return;\n }\n\n if (onClick && onClick.action === 'navigateToPage') {\n if (navigateToPage) {\n navigateToPage(onClick.targetPageId);\n }\n\n return;\n }\n\n const id = gjsModel.get('id');\n performInteraction({\n id,\n interactionType: 'button',\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n payload,\n });\n }\n\n return (\n <>\n <TooltipButton\n className={className}\n isEditable={isEditable}\n interact={interact}\n attributes={attributes}\n variant={variant}\n size={size}\n text={text}\n tooltipContent={tooltipContent}\n />\n {FormDialog}\n </>\n );\n}\n\nconst renderActionCardWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'ActionCard' }}>\n {renderActionCard(props)}\n </ComponentWrapper>\n);\n\nconst renderButtonWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Button' }}>\n {renderButton(props)}\n </ComponentWrapper>\n);\n\nconst renderCardWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Card' }}>\n {renderCard(props)}\n </ComponentWrapper>\n);\n\nconst renderChartWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Chart' }}>\n {renderChart(props)}\n </ComponentWrapper>\n);\n\nconst renderFilterWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Filter' }}>\n {renderFilter(props)}\n </ComponentWrapper>\n);\n\nconst renderUnifiedFilterWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'UnifiedFilter' }}>\n {renderUnifiedFilter(props)}\n </ComponentWrapper>\n);\n\nconst renderMarkdownWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Markdown' }}>\n {renderMarkdown(props)}\n </ComponentWrapper>\n);\n\nconst renderSearchWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Search' }}>\n {renderSearch(props)}\n </ComponentWrapper>\n);\n\nconst renderTableWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Table' }}>\n {renderTable(props)}\n </ComponentWrapper>\n);\n\nconst renderTabWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Tabs' }}>\n {renderTab(props)}\n </ComponentWrapper>\n);\n\nfunction renderActions(props: any): JSX.Element {\n const { actions, isEditable = false, gjsModel } = props;\n\n if (actions === null) {\n return <div />;\n }\n\n if (!Array.isArray(actions) || actions.length === 0) {\n return (\n <div className=\"bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none relative\">\n <CardLoader />\n </div>\n );\n }\n\n return (\n <div className=\"dashboard-cards flex flex-wrap gap-4\">\n {actions.map((action: any, index: number) => {\n const { icon, title, description } = action;\n\n return (\n <div key={index} className=\"flex-1 min-w-[200px]\">\n {renderActionCard({\n icon,\n headerContent: title,\n bodyContent: description,\n isEditable,\n gjsModel,\n })}\n </div>\n );\n })}\n </div>\n );\n}\n\nconst renderActionsWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Actions' }}>\n {renderActions(props)}\n </ComponentWrapper>\n);\n\nexport function getRenderers(): Record<string, (props: any) => JSX.Element> {\n return {\n ActionCard: renderActionCardWithWrapper,\n Actions: renderActionsWithWrapper,\n Button: renderButtonWithWrapper,\n Card: renderCardWithWrapper,\n Chart: renderChartWithWrapper,\n Filter: renderFilterWithWrapper,\n Markdown: renderMarkdownWithWrapper,\n Search: renderSearchWithWrapper,\n Table: renderTableWithWrapper,\n Tabs: renderTabWithWrapper,\n UnifiedFilter: renderUnifiedFilterWithWrapper,\n };\n}\n"],"mappings":"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","ignoreList":[]}