@peak-ai/canvas 1.3.7 → 1.3.8-rc.0

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.3.7",
5
+ "version": "1.3.8-rc.0",
6
6
  "description": "",
7
7
  "dependencies": {
8
8
  "@peak-ai/ais-components": "6.41.0",
@@ -1,5 +1,5 @@
1
1
  import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _objectWithoutPropertiesLoose from"@babel/runtime/helpers/objectWithoutPropertiesLoose";var _excluded=["gjsModel"],_excluded2=["isEditable","gjsModel"],_excluded3=["isEditable","gjsModel"],_excluded4=["gjsModel","performInteraction"],_excluded5=["gjsModel"];import _regeneratorRuntime from"@babel/runtime/regenerator";function _createForOfIteratorHelperLoose(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(t)return(t=t.call(r)).next.bind(t);if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var o=0;return function(){return o>=r.length?{done:!0}:{done:!1,value:r[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}/* eslint-disable func-style *//* eslint-disable @typescript-eslint/no-empty-function *//* eslint-disable func-names *//* eslint-disable @typescript-eslint/no-explicit-any */import chroma from"chroma-js";import React,{useEffect,useState,useRef,Fragment}from"react";import{theme}from"@peak-ai/ais-components/theme";import Markdown from"markdown-to-jsx";import{PieChart,Pie,BarChart,Bar,LineChart,Line,XAxis,YAxis,ResponsiveContainer,CartesianGrid,Legend}from"recharts";import{TooltipButton}from"../../shadcn/components/ui/button";import{Card,CardHeader,CardTitle,CardDescription,CardContent,CardFooter}from"../../shadcn/components/ui/card";import{ChartContainer,ChartTooltip,ChartTooltipContent}from"../../shadcn/components/ui/chart";import{renderFilter}from"../../shadcn/components/ui/filter";import{Pagination,PaginationContent,renderPaginationArrows}from"../../shadcn/components/ui/pagination";import{ScrollArea,ScrollBar}from"../../shadcn/components/ui/scroll-area";import{renderSearch}from"../../shadcn/components/ui/search";import{TableLoader,ChartLoader,CardLoader}from"../../shadcn/components/ui/skeleton";import{Table,TableHeader,TableRow,TableHead,TableBody,TableCell}from"../../shadcn/components/ui/table";import{Tabs,TabsList,TabsTrigger,TabsContent}from"../../shadcn/components/ui/tabs";import{cn}from"../../shadcn/utils";import{getAffectedComponentsWithLoader}from"../../helpers";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var baseColors=[[theme.colors.Blue_100,theme.colors.Blue_30],[theme.colors.Purpley_100,theme.colors.Purpley_30],[theme.colors.Light_Bluish_Green,"#06601b"],[theme.colors.Wild_Strawberry,"#4d001c"]];function getNColors(n){var colors=[];for(var _iterator=_createForOfIteratorHelperLoose(baseColors),_step;!(_step=_iterator()).done;){var baseColor=_step.value;// eslint-disable-next-line import/no-named-as-default-member
2
- colors.push(chroma.scale(baseColor).mode("lab").colors(n))}function getOneColor(existing){var color=null;do{var base=colors[Math.floor(Math.random()*colors.length)];var selectedColorIndex=Math.floor(Math.random()*base.length);color=base[selectedColorIndex]}while(existing.includes(color));return color}var selectedColors=[];for(var i=0;i<n;i++){selectedColors.push(getOneColor(selectedColors))}return selectedColors}/* TODO: Loader remains */export function renderActionCard(props){var gjsModel=props.gjsModel,rest=_objectWithoutPropertiesLoose(props,_excluded);var _useState=useState(_extends({},props)),allData=_useState[0],setAllData=_useState[1];var _allData$headerConten=allData.headerContent,headerContent=_allData$headerConten===void 0?"Default Action Card Title":_allData$headerConten,icon=allData.icon,_allData$bodyContent=allData.bodyContent,bodyContent=_allData$bodyContent===void 0?"Default body content. Click to edit.":_allData$bodyContent;var _useState2=useState({interactionApiInProgress:false}),setAttributes=_useState2[1];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 defaultClasses="bg-white text-black p-4 rounded-lg shadow border flex flex-col h-full";return/*#__PURE__*/_jsx(Card,_extends({className:defaultClasses,isEditable:false,contentEditable:false},rest,{children:/*#__PURE__*/_jsx(CardContent,{className:"p-0",isEditable:false,contentEditable:false,children:/*#__PURE__*/_jsx("div",{className:"px-4 py-3",children:/*#__PURE__*/_jsxs("div",{className:"flex items-start",children:[/*#__PURE__*/_jsx("span",{className:"text-5xl mr-2","aria-hidden":"true",children:icon}),/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx("div",{className:"text-xl font-semibold",children:headerContent}),/*#__PURE__*/_jsx("div",{className:"text-base leading-relaxed mt-1",children:bodyContent})]})]})})})}))}export function renderCard(props){var _props$isEditable=props.isEditable,isEditable=_props$isEditable===void 0?false:_props$isEditable,gjsModel=props.gjsModel,rest=_objectWithoutPropertiesLoose(props,_excluded2);var _useState3=useState(_extends({},props)),allData=_useState3[0],setAllData=_useState3[1];var headerContent=allData.headerContent,headerDescription=allData.headerDescription,bodyContent=allData.bodyContent,footerContent=allData.footerContent,footerClass=allData.footerClass,footerIcon=allData.footerIcon,contentMetadata=allData.contentMetadata,contentMetadataClass=allData.contentMetadataClass,className=allData.className;var _useState4=useState({interactionApiInProgress:false}),attributes=_useState4[0],setAttributes=_useState4[1];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 defaultClasses="bg-white text-black p-4 rounded-lg shadow border flex flex-col h-full";var defaultFooterClasses="text-sm";var defaultContentMetadataClasses="text-xs";var mergedCardClassName=className?cn(defaultClasses,className):defaultClasses;var mergedFooterClassName=footerClass?cn(defaultFooterClasses,footerClass):defaultFooterClasses;var mergedContentMetadataClassName=contentMetadataClass?cn(defaultContentMetadataClasses,contentMetadataClass):defaultContentMetadataClasses;function getCardContent(){if(attributes.interactionApiInProgress){return/*#__PURE__*/_jsx(CardContent,{children:/*#__PURE__*/_jsx(CardLoader,{})})}return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsxs(CardHeader,{children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"headerContent",contentEditable:isEditable,className:"text-lg",children:headerContent}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"headerDescription",contentEditable:isEditable,className:"text-sm",children:headerDescription})]}),/*#__PURE__*/_jsxs(CardContent,{"data-slot":"bodyContent",contentEditable:false,className:"flex-grow",children:[/*#__PURE__*/_jsx("div",{className:"text-3xl font-semibold truncate",children:bodyContent}),contentMetadata&&/*#__PURE__*/_jsx("div",{className:mergedContentMetadataClassName,style:{color:"#2A44D4"},children:contentMetadata})]}),/*#__PURE__*/_jsxs(CardFooter,{"data-slot":"footerContent",contentEditable:isEditable,className:cn(mergedFooterClassName),children:[footerIcon&&/*#__PURE__*/_jsx("span",{className:"mr-2","aria-hidden":"true",children:footerIcon}),footerContent]})]})}return/*#__PURE__*/_jsx(Card,_extends({},rest,{className:mergedCardClassName,children:getCardContent()}))}function renderChartComponent(chartType,data,config){switch(chartType){case"pie":return/*#__PURE__*/_jsxs(PieChart,{children:[data.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:data,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:data.length<20?function(_ref){var name=_ref.name,percent=_ref.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]});case"bar":config.dataKeys=config.dataKeys||[];return/*#__PURE__*/_jsxs(BarChart,_extends({data:data},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(Legend,{align:"left",wrapperStyle:{marginLeft:20}}),config.dataKeys.map(function(_ref2){var key=_ref2.key,name=_ref2.name,color=_ref2.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"})})]}));case"line":config.dataKeys=config.dataKeys||[];return/*#__PURE__*/_jsxs(LineChart,{data:data,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"})}),config.dataKeys.map(function(_ref3){var key=_ref3.key,name=_ref3.name,color=_ref3.color;return/*#__PURE__*/_jsx(Line,{type:"monotone",dataKey:key,stroke:color!=null?color:"#4caf50",name:name},key)}),/*#__PURE__*/_jsx(Legend,{align:"left"})]});default:return/*#__PURE__*/_jsxs(PieChart,{children:[data.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:data,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:data.length<20?function(_ref4){var name=_ref4.name,percent=_ref4.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]})}}export function renderChart(props){var _props$isEditable2=props.isEditable,isEditable=_props$isEditable2===void 0?false:_props$isEditable2,gjsModel=props.gjsModel,rest=_objectWithoutPropertiesLoose(props,_excluded3);var _useState5=useState(_extends({},props)),allData=_useState5[0],setAllData=_useState5[1];var _useState6=useState({interactionApiInProgress:false}),attributes=_useState6[0],setAttributes=_useState6[1];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 _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;var defaultClasses="aspect-auto h-[250px] w-full";var mergedClasses=className?cn(defaultClasses,className):defaultClasses;if(chartType==="pie"){var colors=getNColors(chartData.length);for(var i=0;i<chartData.length;i++){var data=chartData[i];if(!data.fill){data.fill=colors[i]}}}else if(!config.color){config.color=baseColors[Math.floor(Math.random()*baseColors.length)]}var width=undefined;if(chartType==="bar"){var totalDataPoints=chartData.length*config.dataKeys.length;config.chartUi={};if(totalDataPoints>15){width=totalDataPoints*15+config.dataKeys.length*3*chartData.length+chartData.length*10;config.chartUi={barSize:15,barGap:3,barCategoryGap:0.5,width:width}}}var chartUi=attributes.interactionApiInProgress?/*#__PURE__*/_jsx(ChartLoader,{}):/*#__PURE__*/_jsx(React.Fragment,{children:chartType==="bar"&&config.chartUi?/*#__PURE__*/_jsx(ResponsiveContainer,{width:"95%",height:250,children:/*#__PURE__*/_jsxs(ScrollArea,{children:[/*#__PURE__*/_jsx("div",{className:width?"min-w-["+width+"px] w-full":"w-full",children:/*#__PURE__*/_jsx(ChartContainer,_extends({},rest,{config:config,className:mergedClasses,children:renderChartComponent(chartType,chartData,config)}))}),/*#__PURE__*/_jsx(ScrollBar,{orientation:"horizontal"})]})}):/*#__PURE__*/_jsx(ResponsiveContainer,{width:"95%",height:250,children:/*#__PURE__*/_jsx(ChartContainer,_extends({},rest,{config:config,className:mergedClasses,children:renderChartComponent(chartType,chartData,config)}))})});return/*#__PURE__*/_jsxs(Card,{className:"shadow border mt-2 mb-2",children:[/*#__PURE__*/_jsxs(CardHeader,{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",contentEditable:false,className:"px-6",children:chartUi})]})}// Creating this separate component to manage loading state easily!
3
- function TableButton(props){var _useState7=useState(false),loading=_useState7[0],setLoading=_useState7[1];function onClick(){return _onClick.apply(this,arguments)}function _onClick(){_onClick=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:setLoading(true);_context.next=3;return props.onClick();case 3:setLoading(false);case 4:case"end":return _context.stop()}},_callee)}));return _onClick.apply(this,arguments)}var defaultClasses="mr-2";var mergedClasses=props.className?cn(defaultClasses,props.className):defaultClasses;return/*#__PURE__*/_jsx(TooltipButton,{className:mergedClasses,isEditable:false,interact:onClick,attributes:{interactionApiInProgress:loading,isDisabled:props.isDisabled},variant:props.variant,size:"sm",text:props.text,tooltipContent:props.tooltipContent})}export function renderTable(props){var _pagination$values$pa,_pagination$values,_pagination$values$pa2,_pagination$values2;var gjsModel=props.gjsModel,_props$performInterac=props.performInteraction,performInteraction=_props$performInterac===void 0?function(){}:_props$performInterac,rest=_objectWithoutPropertiesLoose(props,_excluded4);var _useState8=useState(_extends({},props)),allData=_useState8[0],setAllData=_useState8[1];var _allData$data=allData.data,data=_allData$data===void 0?[]:_allData$data,_allData$headerMapper=allData.headerMapper,headerMapper=_allData$headerMapper===void 0?{}:_allData$headerMapper,className=allData.className,_allData$isEditable=allData.isEditable,isEditable=_allData$isEditable===void 0?false:_allData$isEditable,_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,pagination=allData.pagination;var _useState9=useState({interactionApiInProgress:false}),attributes=_useState9[0],setAttributes=_useState9[1];var _useState10=useState(Number((_pagination$values$pa=pagination==null||(_pagination$values=pagination.values)==null?void 0:_pagination$values.pageNumber)!=null?_pagination$values$pa:pagination==null?void 0:pagination.initialPage)),pageNumber=_useState10[0],setPageNumber=_useState10[1];var _useState11=useState(Number((_pagination$values$pa2=pagination==null||(_pagination$values2=pagination.values)==null?void 0:_pagination$values2.pageSize)!=null?_pagination$values$pa2:pagination==null?void 0:pagination.initialPageSize)),pageSize=_useState11[0],setPageSize=_useState11[1];var totalCount=pagination==null?void 0:pagination.totalCount;var _useState12=useState(Math.ceil(totalCount/pageSize)||1),totalPages=_useState12[0],setTotalPages=_useState12[1];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 parsedData=data.map(function(datum){var newData=_extends({},datum);delete newData.id;return newData});function takeRowAction(_x,_x2){return _takeRowAction.apply(this,arguments)}function _takeRowAction(){_takeRowAction=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(rowIndex,actionId){var id;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:id=gjsModel.get("id");_context2.next=3;return performInteraction({id:actionId,interactionType:"tableButton",payload:{row:data[rowIndex],tableId:id},affectedComponents:[]});case 3:case"end":return _context2.stop()}},_callee2)}));return _takeRowAction.apply(this,arguments)}var headers=Object.keys(parsedData[0]||{}).map(function(header){return headerMapper[header]||header});if(actions.length>0){headers.push("")}var rows=parsedData.map(function(datum){return Object.values(datum)});var defaultClasses="aspect-auto h-[250px] w-full";var mergedClasses=className?cn(defaultClasses,className):defaultClasses;function renderActions(rowIndex,rowActions){if(!actions.length){return null}return/*#__PURE__*/_jsx(TableCell,{className:"sticky right-0 bg-white",children:rowActions.map(function(action){return/*#__PURE__*/_jsx(TableButton,{className:action.className,isEditable:isEditable,onClick:function onClick(){return takeRowAction(rowIndex,action.id)},variant:action.variant,text:action.text,tooltipContent:action.tooltipContent},action.id)})})}var renderTableComponent=attributes.interactionApiInProgress?/*#__PURE__*/_jsx(TableLoader,{}):/*#__PURE__*/_jsxs(Table,_extends({},rest,{className:"caption-bottom text-sm relative "+mergedClasses,"data-slot":"table",children:[/*#__PURE__*/_jsx(TableHeader,{"data-slot":"table-header",className:"sticky top-0 z-2",children:/*#__PURE__*/_jsx(TableRow,{children:headers.map(function(head,idx){return/*#__PURE__*/_jsx(TableHead,{"data-slot":"table-header-"+idx,contentEditable:isEditable,className:actions.length>0&&idx===headers.length-1?"sticky right-0 bg-slate-100":"",children:head},idx)})})}),/*#__PURE__*/_jsx(TableBody,{"data-slot":"table-body",children:rows.map(function(row,rIdx){return/*#__PURE__*/_jsxs(TableRow,{"data-slot":"row-"+rIdx,className:"hover:bg-muted/50 border-b transition-colors",children:[row.map(function(cell,cIdx){return/*#__PURE__*/_jsx(TableCell,{"data-slot":"cell-"+rIdx+"-"+cIdx,className:"p-2 align-middle whitespace-nowrap",contentEditable:false,children:cell},cIdx)}),renderActions(rIdx,actions)]},rIdx)})})]}));useEffect(function(){var _pagination$values$pa3,_pagination$values3,_pagination$values$pa4,_pagination$values4;setPageNumber(Number((_pagination$values$pa3=pagination==null||(_pagination$values3=pagination.values)==null?void 0:_pagination$values3.pageNumber)!=null?_pagination$values$pa3:pagination==null?void 0:pagination.initialPage));setPageSize(Number((_pagination$values$pa4=pagination==null||(_pagination$values4=pagination.values)==null?void 0:_pagination$values4.pageSize)!=null?_pagination$values$pa4:pagination==null?void 0:pagination.initialPageSize))},[pagination]);useEffect(function(){setTotalPages(Math.ceil(totalCount/pageSize)||1)},[totalCount,pageSize]);var pageSizeOptions=pagination==null?void 0:pagination.pageSizeOptions;function handlePageChange(_x3,_x4){return _handlePageChange.apply(this,arguments)}function _handlePageChange(){_handlePageChange=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(newPage,newSize){var id,prevPage,prevSize;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:if(newPage===void 0){newPage=pageNumber}if(newSize===void 0){newSize=pageSize}id=gjsModel.get("id");prevPage=pageNumber;prevSize=pageSize;setPageNumber(newPage);setPageSize(newSize);_context3.prev=7;_context3.next=10;return performInteraction({id:id,interactionType:"pagination",payload:{pageNumber:newPage,pageSize:newSize},affectedComponents:getAffectedComponentsWithLoader([id],true)});case 10:_context3.next=16;break;case 12:_context3.prev=12;_context3.t0=_context3["catch"](7);setPageNumber(prevPage);setPageSize(prevSize);case 16:case"end":return _context3.stop()}},_callee3,null,[[7,12]])}));return _handlePageChange.apply(this,arguments)}var tableData=/*#__PURE__*/_jsxs(Fragment,{children:[/*#__PURE__*/_jsxs(ScrollArea,{"data-slot":"table-container",className:mergedClasses,children:[renderTableComponent,/*#__PURE__*/_jsx(ScrollBar,{orientation:"horizontal"})]}),totalCount&&/*#__PURE__*/_jsxs("div",{className:"flex items-center justify-between mt-4 w-full",children:[/*#__PURE__*/_jsxs("div",{className:"flex items-center gap-2",children:[/*#__PURE__*/_jsx("label",{htmlFor:"page-size-select",className:"text-sm",children:"Rows per page:"}),/*#__PURE__*/_jsx("select",{id:"page-size-select",value:pageSize,onChange:function onChange(e){return handlePageChange(1,Number(e.target.value))},className:"border rounded px-2 py-1 text-sm cursor-pointer",disabled:attributes.interactionApiInProgress,children:pageSizeOptions.map(function(size){return/*#__PURE__*/_jsx("option",{value:size,children:size},size)})})]}),/*#__PURE__*/_jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[/*#__PURE__*/_jsxs("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:[(pageNumber-1)*pageSize+1,"\u2013",Math.min(pageNumber*pageSize,totalCount)," of"," ",totalCount]}),/*#__PURE__*/_jsx(Pagination,{children:/*#__PURE__*/_jsx(PaginationContent,{className:"gap-0.2",children:renderPaginationArrows(pageNumber,totalPages,attributes.interactionApiInProgress,handlePageChange)})})]})]})]});return/*#__PURE__*/_jsxs(Card,{className:"shadow border",children:[/*#__PURE__*/_jsxs(CardHeader,{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",contentEditable:false,children:tableData})]})}export function renderTab(props){var tabsWidth=200;if(props.tabs.length>4){tabsWidth=150}return/*#__PURE__*/_jsxs(Tabs,{defaultValue:props.defaultValue,children:[/*#__PURE__*/_jsx("div",{className:"text-center mb-4",children:/*#__PURE__*/_jsx(TabsList,{className:"bg-gray-300",children:props.tabs.map(function(tab){return/*#__PURE__*/_jsx(TabsTrigger,{value:tab,className:"text-md w-["+tabsWidth+"px]",children:tab},tab)})})}),props.tabs.map(function(tab){return/*#__PURE__*/_jsx(TabsContent,{value:tab,className:"tabs-content"},tab)})]})}export function renderMarkdown(props){var gjsModel=props.gjsModel,rest=_objectWithoutPropertiesLoose(props,_excluded5);var _useState13=useState(_extends({},props)),allData=_useState13[0],setAllData=_useState13[1];var _useState14=useState({interactionApiInProgress:false}),setAttributes=_useState14[1];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 _useState15=useState(false),isEditing=_useState15[0],setIsEditing=_useState15[1];var editRef=useRef(null);var startEditing=function startEditing(){setIsEditing(true);setTimeout(function(){setupEditor()},0)};var setupEditor=function setupEditor(){if(!editRef.current){return}var editor=editRef.current;editor.innerHTML="";editor.textContent=allData.summaryText;editor.focus()};// Save changes and exit editing mode
4
- 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 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]"}}};if(!allData.isEditable){return/*#__PURE__*/_jsx("div",_extends({className:"px-[1em]"},rest,{children:/*#__PURE__*/_jsx("div",{"data-slot":"summaryText",children:/*#__PURE__*/_jsx(Markdown,{options:{overrides:markdownStyles},children:allData.summaryText})})}))}return/*#__PURE__*/_jsx("div",_extends({className:"p-[1em]"},rest,{children: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:allData.summaryText})})}))}export function renderButton(props){var _props$isEditable3=props.isEditable,isEditable=_props$isEditable3===void 0?false:_props$isEditable3,gjsModel=props.gjsModel,_props$performInterac2=props.performInteraction,performInteraction=_props$performInterac2===void 0?function(){}:_props$performInterac2;var _useState16=useState(_extends({},props)),allData=_useState16[0],setAllData=_useState16[1];var _useState17=useState({interactionApiInProgress:false}),attributes=_useState17[0],setAttributes=_useState17[1];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;function interact(){var id=gjsModel.get("id");performInteraction({id:id,interactionType:"button",affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true),payload:payload})}return/*#__PURE__*/_jsx(TooltipButton,{className:className,isEditable:isEditable,interact:interact,attributes:attributes,variant:variant,size:size,text:text,tooltipContent:tooltipContent})}export function getRenderers(){return{ActionCard:renderActionCard,Button:renderButton,Card:renderCard,Chart:renderChart,Filter:renderFilter,Markdown:renderMarkdown,Search:renderSearch,Table:renderTable,Tabs:renderTab}}
2
+ colors.push(chroma.scale(baseColor).mode("lab").colors(n))}function getOneColor(existing){var color=null;do{var base=colors[Math.floor(Math.random()*colors.length)];var selectedColorIndex=Math.floor(Math.random()*base.length);color=base[selectedColorIndex]}while(existing.includes(color));return color}var selectedColors=[];for(var i=0;i<n;i++){selectedColors.push(getOneColor(selectedColors))}return selectedColors}/* TODO: Loader remains */export function renderActionCard(props){var gjsModel=props.gjsModel,rest=_objectWithoutPropertiesLoose(props,_excluded);var _useState=useState(_extends({},props)),allData=_useState[0],setAllData=_useState[1];var _allData$headerConten=allData.headerContent,headerContent=_allData$headerConten===void 0?"Default Action Card Title":_allData$headerConten,icon=allData.icon,_allData$bodyContent=allData.bodyContent,bodyContent=_allData$bodyContent===void 0?"Default body content. Click to edit.":_allData$bodyContent;var _useState2=useState(_extends({},gjsModel.get("attributes"))),setAttributes=_useState2[1];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 defaultClasses="bg-white text-black p-4 rounded-lg shadow border flex flex-col h-full";return/*#__PURE__*/_jsx(Card,_extends({className:defaultClasses,isEditable:false,contentEditable:false},rest,{children:/*#__PURE__*/_jsx(CardContent,{className:"p-0",isEditable:false,contentEditable:false,children:/*#__PURE__*/_jsx("div",{className:"px-4 py-3",children:/*#__PURE__*/_jsxs("div",{className:"flex items-start",children:[/*#__PURE__*/_jsx("span",{className:"text-5xl mr-2","aria-hidden":"true",children:icon}),/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx("div",{className:"text-xl font-semibold",children:headerContent}),/*#__PURE__*/_jsx("div",{className:"text-base leading-relaxed mt-1",children:bodyContent})]})]})})})}))}export function renderCard(props){var _props$isEditable=props.isEditable,isEditable=_props$isEditable===void 0?false:_props$isEditable,gjsModel=props.gjsModel,rest=_objectWithoutPropertiesLoose(props,_excluded2);var _useState3=useState(_extends({},props)),allData=_useState3[0],setAllData=_useState3[1];var headerContent=allData.headerContent,headerDescription=allData.headerDescription,bodyContent=allData.bodyContent,footerContent=allData.footerContent,footerClass=allData.footerClass,footerIcon=allData.footerIcon,contentMetadata=allData.contentMetadata,contentMetadataClass=allData.contentMetadataClass,className=allData.className;var _useState4=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState4[0],setAttributes=_useState4[1];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 defaultClasses="bg-white text-black p-4 rounded-lg shadow border flex flex-col h-full";var defaultFooterClasses="text-sm";var defaultContentMetadataClasses="text-xs";var mergedCardClassName=className?cn(defaultClasses,className):defaultClasses;var mergedFooterClassName=footerClass?cn(defaultFooterClasses,footerClass):defaultFooterClasses;var mergedContentMetadataClassName=contentMetadataClass?cn(defaultContentMetadataClasses,contentMetadataClass):defaultContentMetadataClasses;function getCardContent(){if(attributes.interactionApiInProgress||attributes.loading){return/*#__PURE__*/_jsx(CardContent,{children:/*#__PURE__*/_jsx(CardLoader,{})})}return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsxs(CardHeader,{children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"headerContent",contentEditable:isEditable,className:"text-lg",children:headerContent}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"headerDescription",contentEditable:isEditable,className:"text-sm",children:headerDescription})]}),/*#__PURE__*/_jsxs(CardContent,{"data-slot":"bodyContent",contentEditable:false,className:"flex-grow",children:[/*#__PURE__*/_jsx("div",{className:"text-3xl font-semibold truncate",children:bodyContent}),contentMetadata&&/*#__PURE__*/_jsx("div",{className:mergedContentMetadataClassName,style:{color:"#2A44D4"},children:contentMetadata})]}),/*#__PURE__*/_jsxs(CardFooter,{"data-slot":"footerContent",contentEditable:isEditable,className:cn(mergedFooterClassName),children:[footerIcon&&/*#__PURE__*/_jsx("span",{className:"mr-2","aria-hidden":"true",children:footerIcon}),footerContent]})]})}return/*#__PURE__*/_jsx(Card,_extends({},rest,{className:mergedCardClassName,children:getCardContent()}))}function renderChartComponent(chartType,data,config){switch(chartType){case"pie":return/*#__PURE__*/_jsxs(PieChart,{children:[data.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:data,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:data.length<20?function(_ref){var name=_ref.name,percent=_ref.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]});case"bar":config.dataKeys=config.dataKeys||[];return/*#__PURE__*/_jsxs(BarChart,_extends({data:data},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(Legend,{align:"left",wrapperStyle:{marginLeft:20}}),config.dataKeys.map(function(_ref2){var key=_ref2.key,name=_ref2.name,color=_ref2.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"})})]}));case"line":config.dataKeys=config.dataKeys||[];return/*#__PURE__*/_jsxs(LineChart,{data:data,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"})}),config.dataKeys.map(function(_ref3){var key=_ref3.key,name=_ref3.name,color=_ref3.color;return/*#__PURE__*/_jsx(Line,{type:"monotone",dataKey:key,stroke:color!=null?color:"#4caf50",name:name},key)}),/*#__PURE__*/_jsx(Legend,{align:"left"})]});default:return/*#__PURE__*/_jsxs(PieChart,{children:[data.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:data,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:data.length<20?function(_ref4){var name=_ref4.name,percent=_ref4.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]})}}export function renderChart(props){var _props$isEditable2=props.isEditable,isEditable=_props$isEditable2===void 0?false:_props$isEditable2,gjsModel=props.gjsModel,rest=_objectWithoutPropertiesLoose(props,_excluded3);var _useState5=useState(_extends({},props)),allData=_useState5[0],setAllData=_useState5[1];var _useState6=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState6[0],setAttributes=_useState6[1];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 _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;var defaultClasses="aspect-auto h-[250px] w-full";var mergedClasses=className?cn(defaultClasses,className):defaultClasses;if(chartType==="pie"){var colors=getNColors(chartData.length);for(var i=0;i<chartData.length;i++){var data=chartData[i];if(!data.fill){data.fill=colors[i]}}}else if(!config.color){config.color=baseColors[Math.floor(Math.random()*baseColors.length)]}var width=undefined;if(chartType==="bar"){var totalDataPoints=chartData.length*config.dataKeys.length;config.chartUi={};if(totalDataPoints>15){width=totalDataPoints*15+config.dataKeys.length*3*chartData.length+chartData.length*10;config.chartUi={barSize:15,barGap:3,barCategoryGap:0.5,width:width}}}var chartUi=attributes.interactionApiInProgress||attributes.loading?/*#__PURE__*/_jsx(ChartLoader,{}):/*#__PURE__*/_jsx(React.Fragment,{children:chartType==="bar"&&config.chartUi?/*#__PURE__*/_jsx(ResponsiveContainer,{width:"95%",height:250,children:/*#__PURE__*/_jsxs(ScrollArea,{children:[/*#__PURE__*/_jsx("div",{className:width?"min-w-["+width+"px] w-full":"w-full",children:/*#__PURE__*/_jsx(ChartContainer,_extends({},rest,{config:config,className:mergedClasses,children:renderChartComponent(chartType,chartData,config)}))}),/*#__PURE__*/_jsx(ScrollBar,{orientation:"horizontal"})]})}):/*#__PURE__*/_jsx(ResponsiveContainer,{width:"95%",height:250,children:/*#__PURE__*/_jsx(ChartContainer,_extends({},rest,{config:config,className:mergedClasses,children:renderChartComponent(chartType,chartData,config)}))})});return/*#__PURE__*/_jsxs(Card,{className:"shadow border mt-2 mb-2",children:[/*#__PURE__*/_jsxs(CardHeader,{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",contentEditable:false,className:"px-6",children:chartUi})]})}// Creating this separate component to manage loading state easily!
3
+ function TableButton(props){var _useState7=useState(false),loading=_useState7[0],setLoading=_useState7[1];function onClick(){return _onClick.apply(this,arguments)}function _onClick(){_onClick=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:setLoading(true);_context.next=3;return props.onClick();case 3:setLoading(false);case 4:case"end":return _context.stop()}},_callee)}));return _onClick.apply(this,arguments)}var defaultClasses="mr-2";var mergedClasses=props.className?cn(defaultClasses,props.className):defaultClasses;return/*#__PURE__*/_jsx(TooltipButton,{className:mergedClasses,isEditable:false,interact:onClick,attributes:{interactionApiInProgress:loading,isDisabled:props.isDisabled},variant:props.variant,size:"sm",text:props.text,tooltipContent:props.tooltipContent})}export function renderTable(props){var _pagination$values$pa,_pagination$values,_pagination$values$pa2,_pagination$values2;var gjsModel=props.gjsModel,_props$performInterac=props.performInteraction,performInteraction=_props$performInterac===void 0?function(){}:_props$performInterac,rest=_objectWithoutPropertiesLoose(props,_excluded4);var _useState8=useState(_extends({},props)),allData=_useState8[0],setAllData=_useState8[1];var _allData$data=allData.data,data=_allData$data===void 0?[]:_allData$data,_allData$headerMapper=allData.headerMapper,headerMapper=_allData$headerMapper===void 0?{}:_allData$headerMapper,className=allData.className,_allData$isEditable=allData.isEditable,isEditable=_allData$isEditable===void 0?false:_allData$isEditable,_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,pagination=allData.pagination;var _useState9=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState9[0],setAttributes=_useState9[1];var _useState10=useState(Number((_pagination$values$pa=pagination==null||(_pagination$values=pagination.values)==null?void 0:_pagination$values.pageNumber)!=null?_pagination$values$pa:pagination==null?void 0:pagination.initialPage)),pageNumber=_useState10[0],setPageNumber=_useState10[1];var _useState11=useState(Number((_pagination$values$pa2=pagination==null||(_pagination$values2=pagination.values)==null?void 0:_pagination$values2.pageSize)!=null?_pagination$values$pa2:pagination==null?void 0:pagination.initialPageSize)),pageSize=_useState11[0],setPageSize=_useState11[1];var totalCount=pagination==null?void 0:pagination.totalCount;var _useState12=useState(Math.ceil(totalCount/pageSize)||1),totalPages=_useState12[0],setTotalPages=_useState12[1];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 parsedData=Array.isArray(data)?data.map(function(datum){var newData=_extends({},datum);delete newData.id;return newData}):[];function takeRowAction(_x,_x2){return _takeRowAction.apply(this,arguments)}function _takeRowAction(){_takeRowAction=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(rowIndex,actionId){var id;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:id=gjsModel.get("id");_context2.next=3;return performInteraction({id:actionId,interactionType:"tableButton",payload:{row:data[rowIndex],tableId:id},affectedComponents:[]});case 3:case"end":return _context2.stop()}},_callee2)}));return _takeRowAction.apply(this,arguments)}var headers=Object.keys(parsedData[0]||{}).map(function(header){return headerMapper[header]||header});if(actions.length>0){headers.push("")}var rows=parsedData.map(function(datum){return Object.values(datum)});var defaultClasses="aspect-auto h-[250px] w-full";var mergedClasses=className?cn(defaultClasses,className):defaultClasses;function renderActions(rowIndex,rowActions){if(!actions.length){return null}return/*#__PURE__*/_jsx(TableCell,{className:"sticky right-0 bg-white",children:rowActions.map(function(action){return/*#__PURE__*/_jsx(TableButton,{className:action.className,isEditable:isEditable,onClick:function onClick(){return takeRowAction(rowIndex,action.id)},variant:action.variant,text:action.text,tooltipContent:action.tooltipContent},action.id)})})}var renderTableComponent=attributes.interactionApiInProgress||attributes.loading?/*#__PURE__*/_jsx(TableLoader,{}):/*#__PURE__*/_jsxs(Table,_extends({},rest,{className:"caption-bottom text-sm relative "+mergedClasses,"data-slot":"table",children:[/*#__PURE__*/_jsx(TableHeader,{"data-slot":"table-header",className:"sticky top-0 z-2",children:/*#__PURE__*/_jsx(TableRow,{children:headers.map(function(head,idx){return/*#__PURE__*/_jsx(TableHead,{"data-slot":"table-header-"+idx,contentEditable:isEditable,className:actions.length>0&&idx===headers.length-1?"sticky right-0 bg-slate-100":"",children:head},idx)})})}),/*#__PURE__*/_jsx(TableBody,{"data-slot":"table-body",children:rows.map(function(row,rIdx){return/*#__PURE__*/_jsxs(TableRow,{"data-slot":"row-"+rIdx,className:"hover:bg-muted/50 border-b transition-colors",children:[row.map(function(cell,cIdx){return/*#__PURE__*/_jsx(TableCell,{"data-slot":"cell-"+rIdx+"-"+cIdx,className:"p-2 align-middle whitespace-nowrap",contentEditable:false,children:cell},cIdx)}),renderActions(rIdx,actions)]},rIdx)})})]}));useEffect(function(){var _pagination$values$pa3,_pagination$values3,_pagination$values$pa4,_pagination$values4;setPageNumber(Number((_pagination$values$pa3=pagination==null||(_pagination$values3=pagination.values)==null?void 0:_pagination$values3.pageNumber)!=null?_pagination$values$pa3:pagination==null?void 0:pagination.initialPage));setPageSize(Number((_pagination$values$pa4=pagination==null||(_pagination$values4=pagination.values)==null?void 0:_pagination$values4.pageSize)!=null?_pagination$values$pa4:pagination==null?void 0:pagination.initialPageSize))},[pagination]);useEffect(function(){setTotalPages(Math.ceil(totalCount/pageSize)||1)},[totalCount,pageSize]);var pageSizeOptions=pagination==null?void 0:pagination.pageSizeOptions;function handlePageChange(_x3,_x4){return _handlePageChange.apply(this,arguments)}function _handlePageChange(){_handlePageChange=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(newPage,newSize){var id,prevPage,prevSize;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:if(newPage===void 0){newPage=pageNumber}if(newSize===void 0){newSize=pageSize}id=gjsModel.get("id");prevPage=pageNumber;prevSize=pageSize;setPageNumber(newPage);setPageSize(newSize);_context3.prev=7;_context3.next=10;return performInteraction({id:id,interactionType:"pagination",payload:{pageNumber:newPage,pageSize:newSize},affectedComponents:getAffectedComponentsWithLoader([id],true)});case 10:_context3.next=16;break;case 12:_context3.prev=12;_context3.t0=_context3["catch"](7);setPageNumber(prevPage);setPageSize(prevSize);case 16:case"end":return _context3.stop()}},_callee3,null,[[7,12]])}));return _handlePageChange.apply(this,arguments)}var tableData=/*#__PURE__*/_jsxs(Fragment,{children:[/*#__PURE__*/_jsxs(ScrollArea,{"data-slot":"table-container",className:mergedClasses,children:[renderTableComponent,/*#__PURE__*/_jsx(ScrollBar,{orientation:"horizontal"})]}),totalCount&&/*#__PURE__*/_jsxs("div",{className:"flex items-center justify-between mt-4 w-full",children:[/*#__PURE__*/_jsxs("div",{className:"flex items-center gap-2",children:[/*#__PURE__*/_jsx("label",{htmlFor:"page-size-select",className:"text-sm",children:"Rows per page:"}),/*#__PURE__*/_jsx("select",{id:"page-size-select",value:pageSize,onChange:function onChange(e){return handlePageChange(1,Number(e.target.value))},className:"border rounded px-2 py-1 text-sm cursor-pointer",disabled:attributes.interactionApiInProgress,children:pageSizeOptions.map(function(size){return/*#__PURE__*/_jsx("option",{value:size,children:size},size)})})]}),/*#__PURE__*/_jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[/*#__PURE__*/_jsxs("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:[(pageNumber-1)*pageSize+1,"\u2013",Math.min(pageNumber*pageSize,totalCount)," of"," ",totalCount]}),/*#__PURE__*/_jsx(Pagination,{children:/*#__PURE__*/_jsx(PaginationContent,{className:"gap-0.2",children:renderPaginationArrows(pageNumber,totalPages,attributes.interactionApiInProgress,handlePageChange)})})]})]})]});return/*#__PURE__*/_jsxs(Card,{className:"shadow border",children:[/*#__PURE__*/_jsxs(CardHeader,{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",contentEditable:false,children:tableData})]})}export function renderTab(props){var tabsWidth=200;if(props.tabs.length>4){tabsWidth=150}return/*#__PURE__*/_jsxs(Tabs,{defaultValue:props.defaultValue,children:[/*#__PURE__*/_jsx("div",{className:"text-center mb-4",children:/*#__PURE__*/_jsx(TabsList,{className:"bg-gray-300",children:props.tabs.map(function(tab){return/*#__PURE__*/_jsx(TabsTrigger,{value:tab,className:"text-md w-["+tabsWidth+"px]",children:tab},tab)})})}),props.tabs.map(function(tab){return/*#__PURE__*/_jsx(TabsContent,{value:tab,className:"tabs-content"},tab)})]})}export function renderMarkdown(props){var gjsModel=props.gjsModel,rest=_objectWithoutPropertiesLoose(props,_excluded5);var _useState13=useState(_extends({},props)),allData=_useState13[0],setAllData=_useState13[1];var _useState14=useState(_extends({},gjsModel.get("attributes"))),setAttributes=_useState14[1];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 _useState15=useState(false),isEditing=_useState15[0],setIsEditing=_useState15[1];var editRef=useRef(null);var startEditing=function startEditing(){setIsEditing(true);setTimeout(function(){setupEditor()},0)};var setupEditor=function setupEditor(){if(!editRef.current){return}var editor=editRef.current;editor.innerHTML="";editor.textContent=allData.summaryText;editor.focus()};// Save changes and exit editing mode
4
+ 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 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]"}}};if(!allData.isEditable){return/*#__PURE__*/_jsx("div",_extends({className:"px-[1em]"},rest,{children:/*#__PURE__*/_jsx("div",{"data-slot":"summaryText",children:/*#__PURE__*/_jsx(Markdown,{options:{overrides:markdownStyles},children:allData.summaryText})})}))}return/*#__PURE__*/_jsx("div",_extends({className:"p-[1em]"},rest,{children: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:allData.summaryText})})}))}export function renderButton(props){var _props$isEditable3=props.isEditable,isEditable=_props$isEditable3===void 0?false:_props$isEditable3,gjsModel=props.gjsModel,_props$performInterac2=props.performInteraction,performInteraction=_props$performInterac2===void 0?function(){}:_props$performInterac2;var _useState16=useState(_extends({},props)),allData=_useState16[0],setAllData=_useState16[1];var _useState17=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState17[0],setAttributes=_useState17[1];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;function interact(){var id=gjsModel.get("id");performInteraction({id:id,interactionType:"button",affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true),payload:payload})}return/*#__PURE__*/_jsx(TooltipButton,{className:className,isEditable:isEditable,interact:interact,attributes:attributes,variant:variant,size:size,text:text,tooltipContent:tooltipContent})}export function getRenderers(){return{ActionCard:renderActionCard,Button:renderButton,Card:renderCard,Chart:renderChart,Filter:renderFilter,Markdown:renderMarkdown,Search:renderSearch,Table:renderTable,Tabs:renderTab}}
5
5
  //# sourceMappingURL=render-components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render-components.js","names":["chroma","React","useEffect","useState","useRef","Fragment","theme","Markdown","PieChart","Pie","BarChart","Bar","LineChart","Line","XAxis","YAxis","ResponsiveContainer","CartesianGrid","Legend","TooltipButton","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","ChartContainer","ChartTooltip","ChartTooltipContent","renderFilter","Pagination","PaginationContent","renderPaginationArrows","ScrollArea","ScrollBar","renderSearch","TableLoader","ChartLoader","CardLoader","Table","TableHeader","TableRow","TableHead","TableBody","TableCell","Tabs","TabsList","TabsTrigger","TabsContent","cn","getAffectedComponentsWithLoader","jsx","_jsx","jsxs","_jsxs","baseColors","colors","Blue_100","Blue_30","Purpley_100","Purpley_30","Light_Bluish_Green","Wild_Strawberry","getNColors","n","_iterator","_createForOfIteratorHelperLoose","_step","done","baseColor","value","push","scale","mode","getOneColor","existing","color","base","Math","floor","random","length","selectedColorIndex","includes","selectedColors","i","renderActionCard","props","gjsModel","rest","_objectWithoutPropertiesLoose","_excluded","_useState","_extends","allData","setAllData","_allData$headerConten","headerContent","icon","_allData$bodyContent","bodyContent","_useState2","interactionApiInProgress","setAttributes","on","get","defaultClasses","className","isEditable","contentEditable","children","renderCard","_props$isEditable","_excluded2","_useState3","headerDescription","footerContent","footerClass","footerIcon","contentMetadata","contentMetadataClass","_useState4","attributes","defaultFooterClasses","defaultContentMetadataClasses","mergedCardClassName","mergedFooterClassName","mergedContentMetadataClassName","getCardContent","style","renderChartComponent","chartType","data","config","cursor","content","hideLabel","dataKey","nameKey","innerRadius","strokeWidth","label","_ref","name","percent","toFixed","undefined","labelLine","dataKeys","chartUi","vertical","xAxis","align","wrapperStyle","marginLeft","map","_ref2","key","fill","radius","indicator","_ref3","type","stroke","_ref4","renderChart","_props$isEditable2","_excluded3","_useState5","_useState6","_allData$config","_allData$chartType","_allData$chartData","chartData","_allData$title","title","_allData$subTitle","subTitle","mergedClasses","width","totalDataPoints","barSize","barGap","barCategoryGap","height","orientation","TableButton","_useState7","loading","setLoading","onClick","_onClick","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","stop","interact","isDisabled","variant","size","text","tooltipContent","renderTable","_pagination$values$pa","_pagination$values","_pagination$values$pa2","_pagination$values2","_props$performInterac","performInteraction","_excluded4","_useState8","_allData$data","_allData$headerMapper","headerMapper","_allData$isEditable","_allData$title2","_allData$subTitle2","_allData$actions","actions","pagination","_useState9","_useState10","Number","values","pageNumber","initialPage","setPageNumber","_useState11","pageSize","initialPageSize","setPageSize","totalCount","_useState12","ceil","totalPages","setTotalPages","parsedData","datum","newData","id","takeRowAction","_x","_x2","_takeRowAction","_callee2","rowIndex","actionId","_callee2$","_context2","interactionType","payload","row","tableId","affectedComponents","headers","Object","keys","header","rows","renderActions","rowActions","action","renderTableComponent","head","idx","rIdx","cell","cIdx","_pagination$values$pa3","_pagination$values3","_pagination$values$pa4","_pagination$values4","pageSizeOptions","handlePageChange","_x3","_x4","_handlePageChange","_callee3","newPage","newSize","prevPage","prevSize","_callee3$","_context3","t0","tableData","htmlFor","onChange","e","target","disabled","min","renderTab","tabsWidth","tabs","defaultValue","tab","renderMarkdown","_excluded5","_useState13","_useState14","_useState15","isEditing","setIsEditing","editRef","startEditing","setTimeout","setupEditor","current","editor","innerHTML","textContent","summaryText","focus","saveChanges","innerText","markdownStyles","ul","h1","h2","h3","h4","h5","h6","options","overrides","ref","onBlur","suppressContentEditableWarning","whiteSpace","wordWrap","renderButton","_props$isEditable3","_props$performInterac2","_useState16","_useState17","_allData$variant","_allData$size","concat","getRenderers","ActionCard","Button","Chart","Filter","Search"],"sources":["../../../src/plugins/helpers/render-components.tsx"],"sourcesContent":["/* 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, JSX, useRef, Fragment } from 'react';\n\nimport { theme } from '@peak-ai/ais-components/theme';\n\nimport Markdown from 'markdown-to-jsx';\n\nimport {\n PieChart,\n Pie,\n BarChart,\n Bar,\n LineChart,\n Line,\n XAxis,\n YAxis,\n ResponsiveContainer,\n CartesianGrid,\n Legend,\n} from 'recharts';\n\nimport { TooltipButton } from '../../shadcn/components/ui/button';\nimport {\n Card,\n CardHeader,\n CardTitle,\n CardDescription,\n CardContent,\n CardFooter,\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 {\n Pagination,\n PaginationContent,\n renderPaginationArrows,\n} from '../../shadcn/components/ui/pagination';\nimport { ScrollArea, ScrollBar } from '../../shadcn/components/ui/scroll-area';\nimport { renderSearch } from '../../shadcn/components/ui/search';\nimport { TableLoader, ChartLoader, CardLoader } from '../../shadcn/components/ui/skeleton';\nimport {\n Table,\n TableHeader,\n TableRow,\n TableHead,\n TableBody,\n TableCell,\n} from '../../shadcn/components/ui/table';\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from '../../shadcn/components/ui/tabs';\n\nimport { cn } from '../../shadcn/utils';\nimport { getAffectedComponentsWithLoader } from '../../helpers';\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\nfunction getNColors(n: number) {\n const colors: Array<string[]> = [];\n\n for (const baseColor of baseColors) {\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, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const {\n headerContent = 'Default Action Card Title',\n icon,\n bodyContent = 'Default body content. Click to edit.',\n } = allData;\n\n const [, setAttributes] = useState({\n interactionApiInProgress: false,\n });\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 defaultClasses = 'bg-white text-black p-4 rounded-lg shadow border flex flex-col h-full';\n\n return (\n <Card className={defaultClasses} isEditable={false} contentEditable={false} {...rest}>\n <CardContent className=\"p-0\" isEditable={false} contentEditable={false}>\n <div className=\"px-4 py-3\">\n <div className=\"flex items-start\">\n <span className=\"text-5xl mr-2\" aria-hidden=\"true\">\n {icon}\n </span>\n <div className=\"flex-1\">\n <div className=\"text-xl font-semibold\">{headerContent}</div>\n <div className=\"text-base leading-relaxed mt-1\">{bodyContent}</div>\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n );\n}\n\nexport function renderCard(props: any): JSX.Element {\n const { isEditable = false, gjsModel, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const {\n headerContent,\n headerDescription,\n bodyContent,\n footerContent,\n footerClass,\n footerIcon,\n contentMetadata,\n contentMetadataClass,\n className,\n } = allData;\n\n const [attributes, setAttributes] = useState({\n interactionApiInProgress: false,\n });\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 defaultClasses = 'bg-white text-black p-4 rounded-lg shadow border flex flex-col h-full';\n const defaultFooterClasses = 'text-sm';\n const defaultContentMetadataClasses = 'text-xs';\n const mergedCardClassName = className ? cn(defaultClasses, className) : defaultClasses;\n const mergedFooterClassName = footerClass\n ? cn(defaultFooterClasses, footerClass)\n : defaultFooterClasses;\n const mergedContentMetadataClassName = contentMetadataClass\n ? cn(defaultContentMetadataClasses, contentMetadataClass)\n : defaultContentMetadataClasses;\n\n function getCardContent() {\n if (attributes.interactionApiInProgress) {\n return (\n <CardContent>\n <CardLoader />\n </CardContent>\n );\n }\n\n return (\n <React.Fragment>\n <CardHeader>\n <CardTitle data-slot=\"headerContent\" contentEditable={isEditable} className=\"text-lg\">\n {headerContent}\n </CardTitle>\n <CardDescription\n data-slot=\"headerDescription\"\n contentEditable={isEditable}\n className=\"text-sm\"\n >\n {headerDescription}\n </CardDescription>\n </CardHeader>\n\n <CardContent data-slot=\"bodyContent\" contentEditable={false} className=\"flex-grow\">\n <div className=\"text-3xl font-semibold truncate\">{bodyContent}</div>\n {contentMetadata && (\n <div className={mergedContentMetadataClassName} style={{ color: '#2A44D4' }}>\n {contentMetadata}\n </div>\n )}\n </CardContent>\n\n <CardFooter\n data-slot=\"footerContent\"\n contentEditable={isEditable}\n className={cn(mergedFooterClassName)}\n >\n {footerIcon && (\n <span className=\"mr-2\" aria-hidden=\"true\">\n {footerIcon}\n </span>\n )}\n {footerContent}\n </CardFooter>\n </React.Fragment>\n );\n }\n\n return (\n <Card {...rest} className={mergedCardClassName}>\n {getCardContent()}\n </Card>\n );\n}\n\nfunction renderChartComponent(chartType: string, data: any, config: any): JSX.Element {\n switch (chartType) {\n case 'pie':\n return (\n <PieChart>\n {data.length >= 20 && (\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n )}\n <Pie\n data={data}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n data.length < 20\n ? ({ name, percent }) => `${name}: ${(percent * 100).toFixed(0)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n case 'bar':\n config.dataKeys = config.dataKeys || [];\n\n return (\n <BarChart data={data} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <Legend align=\"left\" wrapperStyle={{ marginLeft: 20 }} />\n {config.dataKeys.map(\n ({ key, name, color }: { key: string; name: string; color: string }) => {\n return (\n <Bar dataKey={key} fill={color ?? '#4caf50'} name={name} key={key} radius={2} />\n );\n },\n )}\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n </BarChart>\n );\n case 'line':\n config.dataKeys = config.dataKeys || [];\n\n return (\n <LineChart data={data}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n {config.dataKeys.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 default:\n return (\n <PieChart>\n {data.length >= 20 && (\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n )}\n <Pie\n data={data}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n data.length < 20\n ? ({ name, percent }) => `${name}: ${(percent * 100).toFixed(0)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n }\n}\n\nexport function renderChart(props: any): JSX.Element {\n const { isEditable = false, gjsModel, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const [attributes, setAttributes] = useState({\n interactionApiInProgress: false,\n });\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 config = {},\n chartType = 'pie',\n chartData = [],\n className,\n title = 'Title',\n subTitle = 'Subtitle',\n } = allData;\n\n const defaultClasses = 'aspect-auto h-[250px] w-full';\n const mergedClasses = className ? cn(defaultClasses, className) : defaultClasses;\n\n if (chartType === 'pie') {\n const colors = getNColors(chartData.length);\n\n for (let i = 0; i < chartData.length; i++) {\n const data = chartData[i];\n\n if (!data.fill) {\n data.fill = colors[i];\n }\n }\n } else if (!config.color) {\n config.color = baseColors[Math.floor(Math.random() * baseColors.length)];\n }\n\n let width: number | undefined = undefined;\n\n if (chartType === 'bar') {\n const totalDataPoints = chartData.length * config.dataKeys.length;\n config.chartUi = {};\n\n if (totalDataPoints > 15) {\n width =\n totalDataPoints * 15 +\n config.dataKeys.length * 3 * chartData.length +\n chartData.length * 10;\n config.chartUi = {\n barSize: 15,\n barGap: 3,\n barCategoryGap: 0.5,\n width,\n };\n }\n }\n\n const chartUi = attributes.interactionApiInProgress ? (\n <ChartLoader />\n ) : (\n <React.Fragment>\n {chartType === 'bar' && config.chartUi ? (\n <ResponsiveContainer width=\"95%\" height={250}>\n <ScrollArea>\n <div className={width ? `min-w-[${width}px] w-full` : 'w-full'}>\n <ChartContainer {...rest} config={config} className={mergedClasses}>\n {renderChartComponent(chartType, chartData, config)}\n </ChartContainer>\n </div>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n </ResponsiveContainer>\n ) : (\n <ResponsiveContainer width=\"95%\" height={250}>\n <ChartContainer {...rest} config={config} className={mergedClasses}>\n {renderChartComponent(chartType, chartData, config)}\n </ChartContainer>\n </ResponsiveContainer>\n )}\n </React.Fragment>\n );\n\n return (\n <Card className=\"shadow border mt-2 mb-2\">\n <CardHeader>\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 </CardHeader>\n <CardContent data-slot=\"bodyContent\" contentEditable={false} className=\"px-6\">\n {chartUi}\n </CardContent>\n </Card>\n );\n}\n\n// Creating this separate component to manage loading state easily!\nfunction TableButton(props: any) {\n const [loading, setLoading] = useState(false);\n\n async function onClick() {\n setLoading(true);\n await props.onClick();\n setLoading(false);\n }\n\n const defaultClasses = 'mr-2';\n const mergedClasses = props.className ? cn(defaultClasses, props.className) : defaultClasses;\n\n return (\n <TooltipButton\n className={mergedClasses}\n isEditable={false}\n interact={onClick}\n attributes={{\n interactionApiInProgress: loading,\n isDisabled: props.isDisabled,\n }}\n variant={props.variant}\n size=\"sm\"\n text={props.text}\n tooltipContent={props.tooltipContent}\n />\n );\n}\n\nexport function renderTable(props: any): JSX.Element {\n const { gjsModel, performInteraction = () => {}, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const {\n data = [],\n headerMapper = {},\n className,\n isEditable = false,\n title = 'Title',\n subTitle = 'Subtitle',\n actions = [],\n pagination,\n } = allData;\n\n const [attributes, setAttributes] = useState({\n interactionApiInProgress: false,\n });\n\n const [pageNumber, setPageNumber] = useState(\n Number(pagination?.values?.pageNumber ?? pagination?.initialPage),\n );\n\n const [pageSize, setPageSize] = useState(\n Number(pagination?.values?.pageSize ?? pagination?.initialPageSize),\n );\n\n const totalCount = pagination?.totalCount;\n\n const [totalPages, setTotalPages] = useState(Math.ceil(totalCount / pageSize) || 1);\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 parsedData = data.map((datum: any) => {\n const newData = {\n ...datum,\n };\n\n delete newData.id;\n\n return newData;\n });\n\n async function takeRowAction(rowIndex: number, actionId: string) {\n const id = gjsModel.get('id');\n\n await performInteraction({\n id: actionId,\n interactionType: 'tableButton',\n payload: {\n row: data[rowIndex],\n tableId: id,\n },\n affectedComponents: [],\n });\n }\n\n const headers = Object.keys(parsedData[0] || {}).map((header) => headerMapper[header] || header);\n\n if (actions.length > 0) {\n headers.push('');\n }\n\n const rows = parsedData.map((datum: any) => Object.values(datum));\n\n const defaultClasses = 'aspect-auto h-[250px] w-full';\n const mergedClasses = className ? cn(defaultClasses, className) : defaultClasses;\n\n function renderActions(rowIndex: number, rowActions: Array<Record<string, any>>) {\n if (!actions.length) {\n return null;\n }\n\n return (\n <TableCell className=\"sticky right-0 bg-white\">\n {rowActions.map((action) => {\n return (\n <TableButton\n className={action.className}\n isEditable={isEditable}\n onClick={() => takeRowAction(rowIndex, action.id)}\n variant={action.variant}\n key={action.id}\n text={action.text}\n tooltipContent={action.tooltipContent}\n />\n );\n })}\n </TableCell>\n );\n }\n\n const renderTableComponent = attributes.interactionApiInProgress ? (\n <TableLoader />\n ) : (\n <Table\n {...rest}\n className={`caption-bottom text-sm relative ${mergedClasses}`}\n data-slot=\"table\"\n >\n <TableHeader data-slot=\"table-header\" className=\"sticky top-0 z-2\">\n <TableRow>\n {headers.map((head: string, idx: number) => (\n <TableHead\n key={idx}\n data-slot={`table-header-${idx}`}\n contentEditable={isEditable}\n className={\n actions.length > 0 && idx === headers.length - 1\n ? 'sticky right-0 bg-slate-100'\n : ''\n }\n >\n {head}\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody data-slot=\"table-body\">\n {rows.map((row: any[], rIdx: number) => (\n <TableRow\n key={rIdx}\n data-slot={`row-${rIdx}`}\n className=\"hover:bg-muted/50 border-b transition-colors\"\n >\n {row.map((cell: string, cIdx: number) => (\n <TableCell\n key={cIdx}\n data-slot={`cell-${rIdx}-${cIdx}`}\n className=\"p-2 align-middle whitespace-nowrap\"\n contentEditable={false}\n >\n {cell}\n </TableCell>\n ))}\n {renderActions(rIdx, actions)}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n );\n\n useEffect(() => {\n setPageNumber(Number(pagination?.values?.pageNumber ?? pagination?.initialPage));\n setPageSize(Number(pagination?.values?.pageSize ?? pagination?.initialPageSize));\n }, [pagination]);\n\n useEffect(() => {\n setTotalPages(Math.ceil(totalCount / pageSize) || 1);\n }, [totalCount, pageSize]);\n\n const pageSizeOptions = pagination?.pageSizeOptions;\n\n async function handlePageChange(newPage = pageNumber, newSize = pageSize) {\n const id = gjsModel.get('id');\n const prevPage = pageNumber;\n const prevSize = pageSize;\n setPageNumber(newPage);\n setPageSize(newSize);\n\n try {\n await performInteraction({\n id,\n interactionType: 'pagination',\n payload: {\n pageNumber: newPage,\n pageSize: newSize,\n },\n affectedComponents: getAffectedComponentsWithLoader([id], true),\n });\n } catch (error) {\n setPageNumber(prevPage);\n setPageSize(prevSize);\n }\n }\n\n const tableData = (\n <Fragment>\n <ScrollArea data-slot=\"table-container\" className={mergedClasses}>\n {renderTableComponent}\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n {totalCount && (\n <div className=\"flex items-center justify-between mt-4 w-full\">\n <div className=\"flex items-center gap-2\">\n <label htmlFor=\"page-size-select\" className=\"text-sm\">\n Rows per page:\n </label>\n <select\n id=\"page-size-select\"\n value={pageSize}\n onChange={(e) => handlePageChange(1, Number(e.target.value))}\n className=\"border rounded px-2 py-1 text-sm cursor-pointer\"\n disabled={attributes.interactionApiInProgress}\n >\n {pageSizeOptions.map((size: any) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </div>\n <div className=\"flex items-center gap-1 flex-shrink-0\">\n <span className=\"text-xs text-muted-foreground whitespace-nowrap\">\n {(pageNumber - 1) * pageSize + 1}–{Math.min(pageNumber * pageSize, totalCount)} of{' '}\n {totalCount}\n </span>\n <Pagination>\n <PaginationContent className=\"gap-0.2\">\n {renderPaginationArrows(\n pageNumber,\n totalPages,\n attributes.interactionApiInProgress,\n handlePageChange,\n )}\n </PaginationContent>\n </Pagination>\n </div>\n </div>\n )}\n </Fragment>\n );\n\n return (\n <Card className=\"shadow border\">\n <CardHeader>\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 </CardHeader>\n <CardContent data-slot=\"bodyContent\" contentEditable={false}>\n {tableData}\n </CardContent>\n </Card>\n );\n}\n\nexport function renderTab(props: any): JSX.Element {\n let tabsWidth = 200;\n\n if (props.tabs.length > 4) {\n tabsWidth = 150;\n }\n\n return (\n <Tabs defaultValue={props.defaultValue}>\n <div className=\"text-center mb-4\">\n <TabsList className=\"bg-gray-300\">\n {props.tabs.map((tab: string) => (\n <TabsTrigger value={tab} key={tab} className={`text-md w-[${tabsWidth}px]`}>\n {tab}\n </TabsTrigger>\n ))}\n </TabsList>\n </div>\n {props.tabs.map((tab: string) => (\n <TabsContent value={tab} className=\"tabs-content\" key={tab} />\n ))}\n </Tabs>\n );\n}\n\nexport function renderMarkdown(props: any): JSX.Element {\n const { gjsModel, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const [, setAttributes] = useState({\n interactionApiInProgress: false,\n });\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 [isEditing, setIsEditing] = useState(false);\n const editRef = useRef<HTMLDivElement>(null);\n\n const startEditing = () => {\n setIsEditing(true);\n setTimeout(() => {\n setupEditor();\n }, 0);\n };\n\n const setupEditor = () => {\n if (!editRef.current) {\n return;\n }\n\n const editor = editRef.current;\n editor.innerHTML = '';\n editor.textContent = allData.summaryText;\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 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 if (!allData.isEditable) {\n return (\n <div className=\"px-[1em]\" {...rest}>\n <div data-slot=\"summaryText\">\n <Markdown options={{ overrides: markdownStyles }}>{allData.summaryText}</Markdown>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"p-[1em]\" {...rest}>\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 }}>{allData.summaryText}</Markdown>\n </div>\n )}\n </div>\n );\n}\n\nexport function renderButton(props: any): JSX.Element {\n const { isEditable = false, gjsModel, performInteraction = () => {} } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const [attributes, setAttributes] = useState({\n interactionApiInProgress: false,\n });\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 } = allData;\n\n function interact() {\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 <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 );\n}\n\nexport function getRenderers(): Record<string, (props: any) => JSX.Element> {\n return {\n ActionCard: renderActionCard,\n Button: renderButton,\n Card: renderCard,\n Chart: renderChart,\n Filter: renderFilter,\n Markdown: renderMarkdown,\n Search: renderSearch,\n Table: renderTable,\n Tabs: renderTab,\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"render-components.js","names":["chroma","React","useEffect","useState","useRef","Fragment","theme","Markdown","PieChart","Pie","BarChart","Bar","LineChart","Line","XAxis","YAxis","ResponsiveContainer","CartesianGrid","Legend","TooltipButton","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","ChartContainer","ChartTooltip","ChartTooltipContent","renderFilter","Pagination","PaginationContent","renderPaginationArrows","ScrollArea","ScrollBar","renderSearch","TableLoader","ChartLoader","CardLoader","Table","TableHeader","TableRow","TableHead","TableBody","TableCell","Tabs","TabsList","TabsTrigger","TabsContent","cn","getAffectedComponentsWithLoader","jsx","_jsx","jsxs","_jsxs","baseColors","colors","Blue_100","Blue_30","Purpley_100","Purpley_30","Light_Bluish_Green","Wild_Strawberry","getNColors","n","_iterator","_createForOfIteratorHelperLoose","_step","done","baseColor","value","push","scale","mode","getOneColor","existing","color","base","Math","floor","random","length","selectedColorIndex","includes","selectedColors","i","renderActionCard","props","gjsModel","rest","_objectWithoutPropertiesLoose","_excluded","_useState","_extends","allData","setAllData","_allData$headerConten","headerContent","icon","_allData$bodyContent","bodyContent","_useState2","get","setAttributes","on","defaultClasses","className","isEditable","contentEditable","children","renderCard","_props$isEditable","_excluded2","_useState3","headerDescription","footerContent","footerClass","footerIcon","contentMetadata","contentMetadataClass","_useState4","attributes","defaultFooterClasses","defaultContentMetadataClasses","mergedCardClassName","mergedFooterClassName","mergedContentMetadataClassName","getCardContent","interactionApiInProgress","loading","style","renderChartComponent","chartType","data","config","cursor","content","hideLabel","dataKey","nameKey","innerRadius","strokeWidth","label","_ref","name","percent","toFixed","undefined","labelLine","dataKeys","chartUi","vertical","xAxis","align","wrapperStyle","marginLeft","map","_ref2","key","fill","radius","indicator","_ref3","type","stroke","_ref4","renderChart","_props$isEditable2","_excluded3","_useState5","_useState6","_allData$config","_allData$chartType","_allData$chartData","chartData","_allData$title","title","_allData$subTitle","subTitle","mergedClasses","width","totalDataPoints","barSize","barGap","barCategoryGap","height","orientation","TableButton","_useState7","setLoading","onClick","_onClick","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","stop","interact","isDisabled","variant","size","text","tooltipContent","renderTable","_pagination$values$pa","_pagination$values","_pagination$values$pa2","_pagination$values2","_props$performInterac","performInteraction","_excluded4","_useState8","_allData$data","_allData$headerMapper","headerMapper","_allData$isEditable","_allData$title2","_allData$subTitle2","_allData$actions","actions","pagination","_useState9","_useState10","Number","values","pageNumber","initialPage","setPageNumber","_useState11","pageSize","initialPageSize","setPageSize","totalCount","_useState12","ceil","totalPages","setTotalPages","parsedData","Array","isArray","datum","newData","id","takeRowAction","_x","_x2","_takeRowAction","_callee2","rowIndex","actionId","_callee2$","_context2","interactionType","payload","row","tableId","affectedComponents","headers","Object","keys","header","rows","renderActions","rowActions","action","renderTableComponent","head","idx","rIdx","cell","cIdx","_pagination$values$pa3","_pagination$values3","_pagination$values$pa4","_pagination$values4","pageSizeOptions","handlePageChange","_x3","_x4","_handlePageChange","_callee3","newPage","newSize","prevPage","prevSize","_callee3$","_context3","t0","tableData","htmlFor","onChange","e","target","disabled","min","renderTab","tabsWidth","tabs","defaultValue","tab","renderMarkdown","_excluded5","_useState13","_useState14","_useState15","isEditing","setIsEditing","editRef","startEditing","setTimeout","setupEditor","current","editor","innerHTML","textContent","summaryText","focus","saveChanges","innerText","markdownStyles","ul","h1","h2","h3","h4","h5","h6","options","overrides","ref","onBlur","suppressContentEditableWarning","whiteSpace","wordWrap","renderButton","_props$isEditable3","_props$performInterac2","_useState16","_useState17","_allData$variant","_allData$size","concat","getRenderers","ActionCard","Button","Chart","Filter","Search"],"sources":["../../../src/plugins/helpers/render-components.tsx"],"sourcesContent":["/* 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, JSX, useRef, Fragment } from 'react';\n\nimport { theme } from '@peak-ai/ais-components/theme';\n\nimport Markdown from 'markdown-to-jsx';\n\nimport {\n PieChart,\n Pie,\n BarChart,\n Bar,\n LineChart,\n Line,\n XAxis,\n YAxis,\n ResponsiveContainer,\n CartesianGrid,\n Legend,\n} from 'recharts';\n\nimport { TooltipButton } from '../../shadcn/components/ui/button';\nimport {\n Card,\n CardHeader,\n CardTitle,\n CardDescription,\n CardContent,\n CardFooter,\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 {\n Pagination,\n PaginationContent,\n renderPaginationArrows,\n} from '../../shadcn/components/ui/pagination';\nimport { ScrollArea, ScrollBar } from '../../shadcn/components/ui/scroll-area';\nimport { renderSearch } from '../../shadcn/components/ui/search';\nimport { TableLoader, ChartLoader, CardLoader } from '../../shadcn/components/ui/skeleton';\nimport {\n Table,\n TableHeader,\n TableRow,\n TableHead,\n TableBody,\n TableCell,\n} from '../../shadcn/components/ui/table';\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from '../../shadcn/components/ui/tabs';\n\nimport { cn } from '../../shadcn/utils';\nimport { getAffectedComponentsWithLoader } from '../../helpers';\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\nfunction getNColors(n: number) {\n const colors: Array<string[]> = [];\n\n for (const baseColor of baseColors) {\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, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const {\n headerContent = 'Default Action Card Title',\n icon,\n bodyContent = 'Default body content. Click to edit.',\n } = allData;\n\n const [, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\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 defaultClasses = 'bg-white text-black p-4 rounded-lg shadow border flex flex-col h-full';\n\n return (\n <Card className={defaultClasses} isEditable={false} contentEditable={false} {...rest}>\n <CardContent className=\"p-0\" isEditable={false} contentEditable={false}>\n <div className=\"px-4 py-3\">\n <div className=\"flex items-start\">\n <span className=\"text-5xl mr-2\" aria-hidden=\"true\">\n {icon}\n </span>\n <div className=\"flex-1\">\n <div className=\"text-xl font-semibold\">{headerContent}</div>\n <div className=\"text-base leading-relaxed mt-1\">{bodyContent}</div>\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n );\n}\n\nexport function renderCard(props: any): JSX.Element {\n const { isEditable = false, gjsModel, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const {\n headerContent,\n headerDescription,\n bodyContent,\n footerContent,\n footerClass,\n footerIcon,\n contentMetadata,\n contentMetadataClass,\n className,\n } = allData;\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\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 defaultClasses = 'bg-white text-black p-4 rounded-lg shadow border flex flex-col h-full';\n const defaultFooterClasses = 'text-sm';\n const defaultContentMetadataClasses = 'text-xs';\n const mergedCardClassName = className ? cn(defaultClasses, className) : defaultClasses;\n const mergedFooterClassName = footerClass\n ? cn(defaultFooterClasses, footerClass)\n : defaultFooterClasses;\n const mergedContentMetadataClassName = contentMetadataClass\n ? cn(defaultContentMetadataClasses, contentMetadataClass)\n : defaultContentMetadataClasses;\n\n function getCardContent() {\n if (attributes.interactionApiInProgress || attributes.loading) {\n return (\n <CardContent>\n <CardLoader />\n </CardContent>\n );\n }\n\n return (\n <React.Fragment>\n <CardHeader>\n <CardTitle data-slot=\"headerContent\" contentEditable={isEditable} className=\"text-lg\">\n {headerContent}\n </CardTitle>\n <CardDescription\n data-slot=\"headerDescription\"\n contentEditable={isEditable}\n className=\"text-sm\"\n >\n {headerDescription}\n </CardDescription>\n </CardHeader>\n\n <CardContent data-slot=\"bodyContent\" contentEditable={false} className=\"flex-grow\">\n <div className=\"text-3xl font-semibold truncate\">{bodyContent}</div>\n {contentMetadata && (\n <div className={mergedContentMetadataClassName} style={{ color: '#2A44D4' }}>\n {contentMetadata}\n </div>\n )}\n </CardContent>\n\n <CardFooter\n data-slot=\"footerContent\"\n contentEditable={isEditable}\n className={cn(mergedFooterClassName)}\n >\n {footerIcon && (\n <span className=\"mr-2\" aria-hidden=\"true\">\n {footerIcon}\n </span>\n )}\n {footerContent}\n </CardFooter>\n </React.Fragment>\n );\n }\n\n return (\n <Card {...rest} className={mergedCardClassName}>\n {getCardContent()}\n </Card>\n );\n}\n\nfunction renderChartComponent(chartType: string, data: any, config: any): JSX.Element {\n switch (chartType) {\n case 'pie':\n return (\n <PieChart>\n {data.length >= 20 && (\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n )}\n <Pie\n data={data}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n data.length < 20\n ? ({ name, percent }) => `${name}: ${(percent * 100).toFixed(0)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n case 'bar':\n config.dataKeys = config.dataKeys || [];\n\n return (\n <BarChart data={data} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <Legend align=\"left\" wrapperStyle={{ marginLeft: 20 }} />\n {config.dataKeys.map(\n ({ key, name, color }: { key: string; name: string; color: string }) => {\n return (\n <Bar dataKey={key} fill={color ?? '#4caf50'} name={name} key={key} radius={2} />\n );\n },\n )}\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n </BarChart>\n );\n case 'line':\n config.dataKeys = config.dataKeys || [];\n\n return (\n <LineChart data={data}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n {config.dataKeys.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 default:\n return (\n <PieChart>\n {data.length >= 20 && (\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n )}\n <Pie\n data={data}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n data.length < 20\n ? ({ name, percent }) => `${name}: ${(percent * 100).toFixed(0)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n }\n}\n\nexport function renderChart(props: any): JSX.Element {\n const { isEditable = false, gjsModel, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\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 config = {},\n chartType = 'pie',\n chartData = [],\n className,\n title = 'Title',\n subTitle = 'Subtitle',\n } = allData;\n\n const defaultClasses = 'aspect-auto h-[250px] w-full';\n const mergedClasses = className ? cn(defaultClasses, className) : defaultClasses;\n\n if (chartType === 'pie') {\n const colors = getNColors(chartData.length);\n\n for (let i = 0; i < chartData.length; i++) {\n const data = chartData[i];\n\n if (!data.fill) {\n data.fill = colors[i];\n }\n }\n } else if (!config.color) {\n config.color = baseColors[Math.floor(Math.random() * baseColors.length)];\n }\n\n let width: number | undefined = undefined;\n\n if (chartType === 'bar') {\n const totalDataPoints = chartData.length * config.dataKeys.length;\n config.chartUi = {};\n\n if (totalDataPoints > 15) {\n width =\n totalDataPoints * 15 +\n config.dataKeys.length * 3 * chartData.length +\n chartData.length * 10;\n config.chartUi = {\n barSize: 15,\n barGap: 3,\n barCategoryGap: 0.5,\n width,\n };\n }\n }\n\n const chartUi = (attributes.interactionApiInProgress || attributes.loading) ? (\n <ChartLoader />\n ) : (\n <React.Fragment>\n {chartType === 'bar' && config.chartUi ? (\n <ResponsiveContainer width=\"95%\" height={250}>\n <ScrollArea>\n <div className={width ? `min-w-[${width}px] w-full` : 'w-full'}>\n <ChartContainer {...rest} config={config} className={mergedClasses}>\n {renderChartComponent(chartType, chartData, config)}\n </ChartContainer>\n </div>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n </ResponsiveContainer>\n ) : (\n <ResponsiveContainer width=\"95%\" height={250}>\n <ChartContainer {...rest} config={config} className={mergedClasses}>\n {renderChartComponent(chartType, chartData, config)}\n </ChartContainer>\n </ResponsiveContainer>\n )}\n </React.Fragment>\n );\n\n return (\n <Card className=\"shadow border mt-2 mb-2\">\n <CardHeader>\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 </CardHeader>\n <CardContent data-slot=\"bodyContent\" contentEditable={false} className=\"px-6\">\n {chartUi}\n </CardContent>\n </Card>\n );\n}\n\n// Creating this separate component to manage loading state easily!\nfunction TableButton(props: any) {\n const [loading, setLoading] = useState(false);\n\n async function onClick() {\n setLoading(true);\n await props.onClick();\n setLoading(false);\n }\n\n const defaultClasses = 'mr-2';\n const mergedClasses = props.className ? cn(defaultClasses, props.className) : defaultClasses;\n\n return (\n <TooltipButton\n className={mergedClasses}\n isEditable={false}\n interact={onClick}\n attributes={{\n interactionApiInProgress: loading,\n isDisabled: props.isDisabled,\n }}\n variant={props.variant}\n size=\"sm\"\n text={props.text}\n tooltipContent={props.tooltipContent}\n />\n );\n}\n\nexport function renderTable(props: any): JSX.Element {\n const { gjsModel, performInteraction = () => {}, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const {\n data = [],\n headerMapper = {},\n className,\n isEditable = false,\n title = 'Title',\n subTitle = 'Subtitle',\n actions = [],\n pagination,\n } = allData;\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n const [pageNumber, setPageNumber] = useState(\n Number(pagination?.values?.pageNumber ?? pagination?.initialPage),\n );\n\n const [pageSize, setPageSize] = useState(\n Number(pagination?.values?.pageSize ?? pagination?.initialPageSize),\n );\n\n const totalCount = pagination?.totalCount;\n\n const [totalPages, setTotalPages] = useState(Math.ceil(totalCount / pageSize) || 1);\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 parsedData = Array.isArray(data) ? data.map((datum: any) => {\n const newData = {\n ...datum,\n };\n\n delete newData.id;\n\n return newData;\n }) : [];\n\n async function takeRowAction(rowIndex: number, actionId: string) {\n const id = gjsModel.get('id');\n\n await performInteraction({\n id: actionId,\n interactionType: 'tableButton',\n payload: {\n row: data[rowIndex],\n tableId: id,\n },\n affectedComponents: [],\n });\n }\n\n const headers = Object.keys(parsedData[0] || {}).map((header) => headerMapper[header] || header);\n\n if (actions.length > 0) {\n headers.push('');\n }\n\n const rows = parsedData.map((datum: any) => Object.values(datum));\n\n const defaultClasses = 'aspect-auto h-[250px] w-full';\n const mergedClasses = className ? cn(defaultClasses, className) : defaultClasses;\n\n function renderActions(rowIndex: number, rowActions: Array<Record<string, any>>) {\n if (!actions.length) {\n return null;\n }\n\n return (\n <TableCell className=\"sticky right-0 bg-white\">\n {rowActions.map((action) => {\n return (\n <TableButton\n className={action.className}\n isEditable={isEditable}\n onClick={() => takeRowAction(rowIndex, action.id)}\n variant={action.variant}\n key={action.id}\n text={action.text}\n tooltipContent={action.tooltipContent}\n />\n );\n })}\n </TableCell>\n );\n }\n\n const renderTableComponent = (attributes.interactionApiInProgress || attributes.loading) ? (\n <TableLoader />\n ) : (\n <Table\n {...rest}\n className={`caption-bottom text-sm relative ${mergedClasses}`}\n data-slot=\"table\"\n >\n <TableHeader data-slot=\"table-header\" className=\"sticky top-0 z-2\">\n <TableRow>\n {headers.map((head: string, idx: number) => (\n <TableHead\n key={idx}\n data-slot={`table-header-${idx}`}\n contentEditable={isEditable}\n className={\n actions.length > 0 && idx === headers.length - 1\n ? 'sticky right-0 bg-slate-100'\n : ''\n }\n >\n {head}\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody data-slot=\"table-body\">\n {rows.map((row: any[], rIdx: number) => (\n <TableRow\n key={rIdx}\n data-slot={`row-${rIdx}`}\n className=\"hover:bg-muted/50 border-b transition-colors\"\n >\n {row.map((cell: string, cIdx: number) => (\n <TableCell\n key={cIdx}\n data-slot={`cell-${rIdx}-${cIdx}`}\n className=\"p-2 align-middle whitespace-nowrap\"\n contentEditable={false}\n >\n {cell}\n </TableCell>\n ))}\n {renderActions(rIdx, actions)}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n );\n\n useEffect(() => {\n setPageNumber(Number(pagination?.values?.pageNumber ?? pagination?.initialPage));\n setPageSize(Number(pagination?.values?.pageSize ?? pagination?.initialPageSize));\n }, [pagination]);\n\n useEffect(() => {\n setTotalPages(Math.ceil(totalCount / pageSize) || 1);\n }, [totalCount, pageSize]);\n\n const pageSizeOptions = pagination?.pageSizeOptions;\n\n async function handlePageChange(newPage = pageNumber, newSize = pageSize) {\n const id = gjsModel.get('id');\n const prevPage = pageNumber;\n const prevSize = pageSize;\n setPageNumber(newPage);\n setPageSize(newSize);\n\n try {\n await performInteraction({\n id,\n interactionType: 'pagination',\n payload: {\n pageNumber: newPage,\n pageSize: newSize,\n },\n affectedComponents: getAffectedComponentsWithLoader([id], true),\n });\n } catch (error) {\n setPageNumber(prevPage);\n setPageSize(prevSize);\n }\n }\n\n const tableData = (\n <Fragment>\n <ScrollArea data-slot=\"table-container\" className={mergedClasses}>\n {renderTableComponent}\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n {totalCount && (\n <div className=\"flex items-center justify-between mt-4 w-full\">\n <div className=\"flex items-center gap-2\">\n <label htmlFor=\"page-size-select\" className=\"text-sm\">\n Rows per page:\n </label>\n <select\n id=\"page-size-select\"\n value={pageSize}\n onChange={(e) => handlePageChange(1, Number(e.target.value))}\n className=\"border rounded px-2 py-1 text-sm cursor-pointer\"\n disabled={attributes.interactionApiInProgress}\n >\n {pageSizeOptions.map((size: any) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </div>\n <div className=\"flex items-center gap-1 flex-shrink-0\">\n <span className=\"text-xs text-muted-foreground whitespace-nowrap\">\n {(pageNumber - 1) * pageSize + 1}–{Math.min(pageNumber * pageSize, totalCount)} of{' '}\n {totalCount}\n </span>\n <Pagination>\n <PaginationContent className=\"gap-0.2\">\n {renderPaginationArrows(\n pageNumber,\n totalPages,\n attributes.interactionApiInProgress,\n handlePageChange,\n )}\n </PaginationContent>\n </Pagination>\n </div>\n </div>\n )}\n </Fragment>\n );\n\n return (\n <Card className=\"shadow border\">\n <CardHeader>\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 </CardHeader>\n <CardContent data-slot=\"bodyContent\" contentEditable={false}>\n {tableData}\n </CardContent>\n </Card>\n );\n}\n\nexport function renderTab(props: any): JSX.Element {\n let tabsWidth = 200;\n\n if (props.tabs.length > 4) {\n tabsWidth = 150;\n }\n\n return (\n <Tabs defaultValue={props.defaultValue}>\n <div className=\"text-center mb-4\">\n <TabsList className=\"bg-gray-300\">\n {props.tabs.map((tab: string) => (\n <TabsTrigger value={tab} key={tab} className={`text-md w-[${tabsWidth}px]`}>\n {tab}\n </TabsTrigger>\n ))}\n </TabsList>\n </div>\n {props.tabs.map((tab: string) => (\n <TabsContent value={tab} className=\"tabs-content\" key={tab} />\n ))}\n </Tabs>\n );\n}\n\nexport function renderMarkdown(props: any): JSX.Element {\n const { gjsModel, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const [, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\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 [isEditing, setIsEditing] = useState(false);\n const editRef = useRef<HTMLDivElement>(null);\n\n const startEditing = () => {\n setIsEditing(true);\n setTimeout(() => {\n setupEditor();\n }, 0);\n };\n\n const setupEditor = () => {\n if (!editRef.current) {\n return;\n }\n\n const editor = editRef.current;\n editor.innerHTML = '';\n editor.textContent = allData.summaryText;\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 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 if (!allData.isEditable) {\n return (\n <div className=\"px-[1em]\" {...rest}>\n <div data-slot=\"summaryText\">\n <Markdown options={{ overrides: markdownStyles }}>{allData.summaryText}</Markdown>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"p-[1em]\" {...rest}>\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 }}>{allData.summaryText}</Markdown>\n </div>\n )}\n </div>\n );\n}\n\nexport function renderButton(props: any): JSX.Element {\n const { isEditable = false, gjsModel, performInteraction = () => {} } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\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 } = allData;\n\n function interact() {\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 <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 );\n}\n\nexport function getRenderers(): Record<string, (props: any) => JSX.Element> {\n return {\n ActionCard: renderActionCard,\n Button: renderButton,\n Card: renderCard,\n Chart: renderChart,\n Filter: renderFilter,\n Markdown: renderMarkdown,\n Search: renderSearch,\n Table: renderTable,\n Tabs: renderTab,\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,3 @@
1
1
  import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _regeneratorRuntime from"@babel/runtime/regenerator";/* eslint-disable @typescript-eslint/no-explicit-any */import{useCallback,useEffect,useRef,useState}from"react";import{ChevronDown,ChevronUp,ListFilter as FilterIcon,Loader2Icon}from"lucide-react";import{Button}from"./button";import{Checkbox}from"./checkbox";import{ScrollArea}from"./scroll-area";import{getAffectedComponentsWithLoader}from"../../../helpers";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";function FilterHeader(_ref){var label=_ref.label,count=_ref.count,isDisabled=_ref.isDisabled,isDropdownOpen=_ref.isDropdownOpen,isLoading=_ref.isLoading,toggleOpen=_ref.toggleOpen;var ChevronIcon=isDropdownOpen?ChevronUp:ChevronDown;return/*#__PURE__*/_jsxs(Button,{variant:"outline",size:"sm",disabled:isDisabled,onClick:toggleOpen,className:"px-2",children:[/*#__PURE__*/_jsx(FilterIcon,{size:16}),count>0?label+" ("+count+")":label,isLoading?/*#__PURE__*/_jsx(Loader2Icon,{className:"ml-2 animate-spin",size:16}):/*#__PURE__*/_jsx(ChevronIcon,{size:16,className:"ml-1"})]})}function FilterActions(_ref2){var selected=_ref2.selected,allSelected=_ref2.allSelected,onClear=_ref2.onClear,onSelectAll=_ref2.onSelectAll,isDisabled=_ref2.isDisabled;return/*#__PURE__*/_jsxs("div",{className:"flex items-center mb-3",children:[/*#__PURE__*/_jsx(Checkbox,{checked:allSelected,onCheckedChange:function onCheckedChange(){return allSelected?onClear():onSelectAll()},disabled:isDisabled}),/*#__PURE__*/_jsx("span",{className:"ml-2 text-sm text-gray-900",children:"Select All"}),selected.length>0&&/*#__PURE__*/_jsx("button",{type:"button",className:"ml-auto text-sm text-blue-600 hover:underline",onMouseDown:function onMouseDown(e){e.stopPropagation();e.preventDefault()},onClick:onClear,disabled:isDisabled,children:"Clear All"})]})}function FilterOptionList(_ref3){var options=_ref3.options,selected=_ref3.selected,onToggle=_ref3.onToggle,isDisabled=_ref3.isDisabled;return/*#__PURE__*/_jsx(ScrollArea,{viewportClassName:"max-h-48 overflow-y-auto mb-4 space-y-2",children:options.length>0?options.map(function(opt){return/*#__PURE__*/_jsxs("label",{className:"flex items-center space-x-2 hover:bg-gray-100 rounded p-1 transition hover:cursor-pointer",onClick:function onClick(e){e.preventDefault();e.stopPropagation();if(!isDisabled){onToggle(opt.value)}},children:[/*#__PURE__*/_jsx(Checkbox,{checked:selected.includes(opt.value),onChange:function onChange(){// Prevent checkbox from toggling when clicking label
2
- },disabled:isDisabled}),/*#__PURE__*/_jsx("span",{className:"text-sm text-gray-900",children:opt.label})]},opt.value)}):/*#__PURE__*/_jsx("div",{className:"text-sm text-gray-500",children:"No results found"})})}export function renderFilter(_ref4){var gjsModel=_ref4.gjsModel,performInteraction=_ref4.performInteraction;var wrapperRef=useRef(null);var _useState=useState(_extends({},gjsModel.get("componentProps"))),componentData=_useState[0],setComponentData=_useState[1];var _useState2=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState2[0],setAttributes=_useState2[1];var _useState3=useState(false),isDropdownOpen=_useState3[0],setIsDropdownOpen=_useState3[1];var _useState4=useState(""),searchQuery=_useState4[0],setSearchQuery=_useState4[1];var _useState5=useState(false),isApplying=_useState5[0],setIsApplying=_useState5[1];var _componentData$option=componentData.options,options=_componentData$option===void 0?[]:_componentData$option,_componentData$value=componentData.value,value=_componentData$value===void 0?[]:_componentData$value,_componentData$classN=componentData.className,className=_componentData$classN===void 0?"":_componentData$classN,_componentData$affect=componentData.affectedComponents,affectedComponents=_componentData$affect===void 0?[]:_componentData$affect,_componentData$text=componentData.text,label=_componentData$text===void 0?"Filter":_componentData$text,_componentData$filter=componentData.filterType,filterType=_componentData$filter===void 0?"multiselect":_componentData$filter;var defaultValue=componentData["default"]||[];var _useState6=useState(function(){return Array.isArray(value)&&value.length>0?value:defaultValue}),selectedValues=_useState6[0],setSelectedValues=_useState6[1];var isMultiSelect=filterType==="multiselect";var isBusy=attributes.interactionApiInProgress||isApplying;var allOptionsSelected=selectedValues.length===options.length&&options.length>0;useEffect(function(){function updateComponentData(){setComponentData(_extends({},gjsModel.get("componentProps")))}function updateAttributes(){setAttributes(_extends({},gjsModel.get("attributes")))}gjsModel.on("change:componentProps",updateComponentData);gjsModel.on("change:attributes",updateAttributes);return function(){gjsModel.off("change:componentProps",updateComponentData);gjsModel.off("change:attributes",updateAttributes)}},[gjsModel]);useEffect(function(){var _wrapperRef$current$o,_wrapperRef$current;var doc=(_wrapperRef$current$o=(_wrapperRef$current=wrapperRef.current)==null?void 0:_wrapperRef$current.ownerDocument)!=null?_wrapperRef$current$o:document;function handleOutsideClick(e){if(isDropdownOpen&&wrapperRef.current&&!wrapperRef.current.contains(e.target)){setIsDropdownOpen(false)}}function handleEscape(e){if(e.key==="Escape"){setIsDropdownOpen(false)}}doc.addEventListener("pointerdown",handleOutsideClick);doc.addEventListener("keydown",handleEscape);return function(){doc.removeEventListener("pointerdown",handleOutsideClick);doc.removeEventListener("keydown",handleEscape)}},[isDropdownOpen]);var filteredOptions=options.filter(function(opt){return opt.label.toLowerCase().includes(searchQuery.toLowerCase())});function updateAndApply(_x){return _updateAndApply.apply(this,arguments)}function _updateAndApply(){_updateAndApply=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(newValues){var id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(newValues===void 0){newValues=selectedValues}setIsApplying(true);_context.prev=2;gjsModel.set("componentProps",_extends({},gjsModel.get("componentProps"),{value:newValues}));id=gjsModel.get("id");_context.next=7;return performInteraction({interactionType:"filter",id:id,affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true)});case 7:_context.prev=7;setIsApplying(false);setIsDropdownOpen(false);return _context.finish(7);case 11:case"end":return _context.stop()}},_callee,null,[[2,,7,11]])}));return _updateAndApply.apply(this,arguments)}var handleOptionToggle=useCallback(function(val){if(isMultiSelect){setSelectedValues(function(prev){return prev.includes(val)?prev.filter(function(v){return v!==val}):[].concat(prev,[val])})}else{if(selectedValues.includes(val)){setSelectedValues([]);updateAndApply([])}else{var singleValue=[val];setSelectedValues(singleValue);updateAndApply(singleValue)}}},[isMultiSelect,selectedValues]);function handleClearAll(){setSelectedValues([])}function handleSelectAll(){setSelectedValues(options.map(function(o){return o.value}))}return/*#__PURE__*/_jsxs("div",{ref:wrapperRef,className:"relative inline-block "+className,style:{color:"#2A44D4",backgroundColor:"rgb(255 255 255)"},children:[/*#__PURE__*/_jsx(FilterHeader,{label:label,count:selectedValues.length,isDisabled:isBusy,isDropdownOpen:isDropdownOpen,isLoading:isBusy,toggleOpen:function toggleOpen(){return setIsDropdownOpen(function(prev){return!prev})}}),isDropdownOpen&&/*#__PURE__*/_jsxs("div",{className:"absolute right-0 top-full mt-2 w-64 bg-white border rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 p-4 z-50",children:[/*#__PURE__*/_jsx("input",{type:"text",placeholder:"Search...",value:searchQuery,onChange:function onChange(e){return setSearchQuery(e.target.value)},className:"w-full mb-3 px-2 py-1 border rounded focus:outline-none",disabled:isBusy}),isMultiSelect&&/*#__PURE__*/_jsx(FilterActions,{selected:selectedValues,allSelected:allOptionsSelected,onClear:handleClearAll,onSelectAll:handleSelectAll,isDisabled:isBusy}),/*#__PURE__*/_jsx(FilterOptionList,{options:filteredOptions,selected:selectedValues,onToggle:handleOptionToggle,isDisabled:isBusy}),isMultiSelect&&/*#__PURE__*/_jsxs("div",{className:"flex justify-end space-x-2",children:[/*#__PURE__*/_jsx(Button,{variant:"ghost",size:"sm",onClick:function onClick(){return setIsDropdownOpen(false)},disabled:isApplying,children:"Cancel"}),/*#__PURE__*/_jsxs(Button,{variant:"default",size:"sm",onClick:function onClick(){return updateAndApply(selectedValues)},disabled:isBusy,children:[isApplying&&/*#__PURE__*/_jsx(Loader2Icon,{className:"animate-spin mr-2",size:16}),"Apply"]})]})]})]})}
2
+ },disabled:isDisabled}),/*#__PURE__*/_jsx("span",{className:"text-sm text-gray-900",children:opt.label})]},opt.value)}):/*#__PURE__*/_jsx("div",{className:"text-sm text-gray-500",children:"No results found"})})}export function renderFilter(_ref4){var gjsModel=_ref4.gjsModel,performInteraction=_ref4.performInteraction;var wrapperRef=useRef(null);var _useState=useState(_extends({},gjsModel.get("componentProps"))),componentData=_useState[0],setComponentData=_useState[1];var _useState2=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState2[0],setAttributes=_useState2[1];var _useState3=useState(false),isDropdownOpen=_useState3[0],setIsDropdownOpen=_useState3[1];var _useState4=useState(""),searchQuery=_useState4[0],setSearchQuery=_useState4[1];var _useState5=useState(false),isApplying=_useState5[0],setIsApplying=_useState5[1];var _componentData$option=componentData.options,options=_componentData$option===void 0?[]:_componentData$option,_componentData$value=componentData.value,value=_componentData$value===void 0?[]:_componentData$value,_componentData$classN=componentData.className,className=_componentData$classN===void 0?"":_componentData$classN,_componentData$affect=componentData.affectedComponents,affectedComponents=_componentData$affect===void 0?[]:_componentData$affect,_componentData$text=componentData.text,label=_componentData$text===void 0?"Filter":_componentData$text,_componentData$filter=componentData.filterType,filterType=_componentData$filter===void 0?"multiselect":_componentData$filter;var defaultValue=componentData["default"]||[];var _useState6=useState(function(){return Array.isArray(value)&&value.length>0?value:defaultValue}),selectedValues=_useState6[0],setSelectedValues=_useState6[1];var isMultiSelect=filterType==="multiselect";var isBusy=attributes.interactionApiInProgress||isApplying||attributes.loading;var allOptionsSelected=selectedValues.length===options.length&&options.length>0;useEffect(function(){function updateComponentData(){setComponentData(_extends({},gjsModel.get("componentProps")))}function updateAttributes(){setAttributes(_extends({},gjsModel.get("attributes")))}gjsModel.on("change:componentProps",updateComponentData);gjsModel.on("change:attributes",updateAttributes);return function(){gjsModel.off("change:componentProps",updateComponentData);gjsModel.off("change:attributes",updateAttributes)}},[gjsModel]);useEffect(function(){var _wrapperRef$current$o,_wrapperRef$current;var doc=(_wrapperRef$current$o=(_wrapperRef$current=wrapperRef.current)==null?void 0:_wrapperRef$current.ownerDocument)!=null?_wrapperRef$current$o:document;function handleOutsideClick(e){if(isDropdownOpen&&wrapperRef.current&&!wrapperRef.current.contains(e.target)){setIsDropdownOpen(false)}}function handleEscape(e){if(e.key==="Escape"){setIsDropdownOpen(false)}}doc.addEventListener("pointerdown",handleOutsideClick);doc.addEventListener("keydown",handleEscape);return function(){doc.removeEventListener("pointerdown",handleOutsideClick);doc.removeEventListener("keydown",handleEscape)}},[isDropdownOpen]);var filteredOptions=options.filter(function(opt){return opt.label.toLowerCase().includes(searchQuery.toLowerCase())});function updateAndApply(_x){return _updateAndApply.apply(this,arguments)}function _updateAndApply(){_updateAndApply=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(newValues){var id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(newValues===void 0){newValues=selectedValues}setIsApplying(true);_context.prev=2;gjsModel.set("componentProps",_extends({},gjsModel.get("componentProps"),{value:newValues}));id=gjsModel.get("id");_context.next=7;return performInteraction({interactionType:"filter",id:id,affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true)});case 7:_context.prev=7;setIsApplying(false);setIsDropdownOpen(false);return _context.finish(7);case 11:case"end":return _context.stop()}},_callee,null,[[2,,7,11]])}));return _updateAndApply.apply(this,arguments)}var handleOptionToggle=useCallback(function(val){if(isMultiSelect){setSelectedValues(function(prev){return prev.includes(val)?prev.filter(function(v){return v!==val}):[].concat(prev,[val])})}else{if(selectedValues.includes(val)){setSelectedValues([]);updateAndApply([])}else{var singleValue=[val];setSelectedValues(singleValue);updateAndApply(singleValue)}}},[isMultiSelect,selectedValues]);function handleClearAll(){setSelectedValues([])}function handleSelectAll(){setSelectedValues(options.map(function(o){return o.value}))}return/*#__PURE__*/_jsxs("div",{ref:wrapperRef,className:"relative inline-block "+className,style:{color:"#2A44D4",backgroundColor:"rgb(255 255 255)"},children:[/*#__PURE__*/_jsx(FilterHeader,{label:label,count:selectedValues.length,isDisabled:isBusy,isDropdownOpen:isDropdownOpen,isLoading:isBusy,toggleOpen:function toggleOpen(){return setIsDropdownOpen(function(prev){return!prev})}}),isDropdownOpen&&/*#__PURE__*/_jsxs("div",{className:"absolute right-0 top-full mt-2 w-64 bg-white border rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 p-4 z-50",children:[/*#__PURE__*/_jsx("input",{type:"text",placeholder:"Search...",value:searchQuery,onChange:function onChange(e){return setSearchQuery(e.target.value)},className:"w-full mb-3 px-2 py-1 border rounded focus:outline-none",disabled:isBusy}),isMultiSelect&&/*#__PURE__*/_jsx(FilterActions,{selected:selectedValues,allSelected:allOptionsSelected,onClear:handleClearAll,onSelectAll:handleSelectAll,isDisabled:isBusy}),/*#__PURE__*/_jsx(FilterOptionList,{options:filteredOptions,selected:selectedValues,onToggle:handleOptionToggle,isDisabled:isBusy}),isMultiSelect&&/*#__PURE__*/_jsxs("div",{className:"flex justify-end space-x-2",children:[/*#__PURE__*/_jsx(Button,{variant:"ghost",size:"sm",onClick:function onClick(){return setIsDropdownOpen(false)},disabled:isApplying,children:"Cancel"}),/*#__PURE__*/_jsxs(Button,{variant:"default",size:"sm",onClick:function onClick(){return updateAndApply(selectedValues)},disabled:isBusy,children:[isApplying&&/*#__PURE__*/_jsx(Loader2Icon,{className:"animate-spin mr-2",size:16}),"Apply"]})]})]})]})}
3
3
  //# sourceMappingURL=filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","names":["useCallback","useEffect","useRef","useState","ChevronDown","ChevronUp","ListFilter","FilterIcon","Loader2Icon","Button","Checkbox","ScrollArea","getAffectedComponentsWithLoader","jsx","_jsx","jsxs","_jsxs","FilterHeader","_ref","label","count","isDisabled","isDropdownOpen","isLoading","toggleOpen","ChevronIcon","variant","size","disabled","onClick","className","children","FilterActions","_ref2","selected","allSelected","onClear","onSelectAll","checked","onCheckedChange","length","type","onMouseDown","e","stopPropagation","preventDefault","FilterOptionList","_ref3","options","onToggle","viewportClassName","map","opt","value","includes","onChange","renderFilter","_ref4","gjsModel","performInteraction","wrapperRef","_useState","_extends","get","componentData","setComponentData","_useState2","attributes","setAttributes","_useState3","setIsDropdownOpen","_useState4","searchQuery","setSearchQuery","_useState5","isApplying","setIsApplying","_componentData$option","_componentData$value","_componentData$classN","_componentData$affect","affectedComponents","_componentData$text","text","_componentData$filter","filterType","defaultValue","_useState6","Array","isArray","selectedValues","setSelectedValues","isMultiSelect","isBusy","interactionApiInProgress","allOptionsSelected","updateComponentData","updateAttributes","on","off","_wrapperRef$current$o","_wrapperRef$current","doc","current","ownerDocument","document","handleOutsideClick","contains","target","handleEscape","key","addEventListener","removeEventListener","filteredOptions","filter","toLowerCase","updateAndApply","_x","_updateAndApply","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","newValues","id","wrap","_callee$","_context","prev","next","set","interactionType","concat","finish","stop","handleOptionToggle","val","v","singleValue","handleClearAll","handleSelectAll","o","ref","style","color","backgroundColor","placeholder"],"sources":["../../../../src/shadcn/components/ui/filter.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { ChevronDown, ChevronUp, ListFilter as FilterIcon, Loader2Icon } from 'lucide-react';\n\nimport { Button } from './button';\nimport { Checkbox } from './checkbox';\nimport { ScrollArea } from './scroll-area';\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\n\ntype FilterOption = {\n label: string;\n value: string;\n};\n\ntype FilterProps = {\n isEditable?: boolean;\n gjsModel: any;\n performInteraction: (payload: Record<string, any>) => Promise<void>;\n};\n\ntype FilterHeaderProps = {\n label: string;\n count: number;\n isDisabled: boolean;\n isDropdownOpen: boolean;\n isLoading: boolean;\n toggleOpen: () => void;\n};\n\ntype FilterActionsProps = {\n selected: string[];\n allSelected: boolean;\n onClear: () => void;\n onSelectAll: () => void;\n isDisabled: boolean;\n};\n\ntype FilterOptionListProps = {\n options: FilterOption[];\n selected: string[];\n onToggle: (value: string) => void;\n isDisabled: boolean;\n};\n\nfunction FilterHeader({\n label,\n count,\n isDisabled,\n isDropdownOpen,\n isLoading,\n toggleOpen,\n}: FilterHeaderProps) {\n const ChevronIcon = isDropdownOpen ? ChevronUp : ChevronDown;\n\n return (\n <Button variant=\"outline\" size=\"sm\" disabled={isDisabled} onClick={toggleOpen} className=\"px-2\">\n <FilterIcon size={16} />\n {count > 0 ? `${label} (${count})` : label}\n {isLoading ? (\n <Loader2Icon className=\"ml-2 animate-spin\" size={16} />\n ) : (\n <ChevronIcon size={16} className=\"ml-1\" />\n )}\n </Button>\n );\n}\n\nfunction FilterActions({\n selected,\n allSelected,\n onClear,\n onSelectAll,\n isDisabled,\n}: FilterActionsProps) {\n return (\n <div className=\"flex items-center mb-3\">\n <Checkbox\n checked={allSelected}\n onCheckedChange={() => (allSelected ? onClear() : onSelectAll())}\n disabled={isDisabled}\n />\n <span className=\"ml-2 text-sm text-gray-900\">Select All</span>\n {selected.length > 0 && (\n <button\n type=\"button\"\n className=\"ml-auto text-sm text-blue-600 hover:underline\"\n onMouseDown={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n onClick={onClear}\n disabled={isDisabled}\n >\n Clear All\n </button>\n )}\n </div>\n );\n}\n\nfunction FilterOptionList({ options, selected, onToggle, isDisabled }: FilterOptionListProps) {\n return (\n <ScrollArea viewportClassName=\"max-h-48 overflow-y-auto mb-4 space-y-2\">\n {options.length > 0 ? (\n options.map((opt) => (\n <label\n key={opt.value}\n className=\"flex items-center space-x-2 hover:bg-gray-100 rounded p-1 transition hover:cursor-pointer\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (!isDisabled) {\n onToggle(opt.value);\n }\n }}\n >\n <Checkbox\n checked={selected.includes(opt.value)}\n onChange={() => {\n // Prevent checkbox from toggling when clicking label\n }}\n disabled={isDisabled}\n />\n <span className=\"text-sm text-gray-900\">{opt.label}</span>\n </label>\n ))\n ) : (\n <div className=\"text-sm text-gray-500\">No results found</div>\n )}\n </ScrollArea>\n );\n}\n\nexport function renderFilter({ gjsModel, performInteraction }: FilterProps) {\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const [componentData, setComponentData] = useState({ ...gjsModel.get('componentProps') });\n const [attributes, setAttributes] = useState({ ...gjsModel.get('attributes') });\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const [isApplying, setIsApplying] = useState(false);\n\n const {\n options = [],\n value = [],\n className = '',\n affectedComponents = [],\n text: label = 'Filter',\n filterType = 'multiselect',\n } = componentData;\n\n const defaultValue = componentData.default || [];\n\n const [selectedValues, setSelectedValues] = useState<string[]>(() => {\n return Array.isArray(value) && value.length > 0 ? value : defaultValue;\n });\n\n const isMultiSelect = filterType === 'multiselect';\n const isBusy = attributes.interactionApiInProgress || isApplying;\n const allOptionsSelected = selectedValues.length === options.length && options.length > 0;\n\n useEffect(() => {\n function updateComponentData() {\n setComponentData({ ...gjsModel.get('componentProps') });\n }\n\n function updateAttributes() {\n setAttributes({ ...gjsModel.get('attributes') });\n }\n\n gjsModel.on('change:componentProps', updateComponentData);\n gjsModel.on('change:attributes', updateAttributes);\n\n return () => {\n gjsModel.off('change:componentProps', updateComponentData);\n gjsModel.off('change:attributes', updateAttributes);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const doc = wrapperRef.current?.ownerDocument ?? document;\n\n function handleOutsideClick(e: PointerEvent) {\n if (isDropdownOpen && wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n setIsDropdownOpen(false);\n }\n }\n\n function handleEscape(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n setIsDropdownOpen(false);\n }\n }\n\n doc.addEventListener('pointerdown', handleOutsideClick);\n doc.addEventListener('keydown', handleEscape);\n\n return () => {\n doc.removeEventListener('pointerdown', handleOutsideClick);\n doc.removeEventListener('keydown', handleEscape);\n };\n }, [isDropdownOpen]);\n\n const filteredOptions = options.filter((opt: FilterOption) =>\n opt.label.toLowerCase().includes(searchQuery.toLowerCase()),\n );\n\n async function updateAndApply(newValues: string[] = selectedValues) {\n setIsApplying(true);\n\n try {\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n value: newValues,\n });\n\n const id = gjsModel.get('id');\n\n await performInteraction({\n interactionType: 'filter',\n id,\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n });\n } finally {\n setIsApplying(false);\n setIsDropdownOpen(false);\n }\n }\n\n const handleOptionToggle = useCallback(\n (val: string) => {\n if (isMultiSelect) {\n setSelectedValues((prev) =>\n prev.includes(val) ? prev.filter((v) => v !== val) : [...prev, val],\n );\n } else {\n if (selectedValues.includes(val)) {\n setSelectedValues([]);\n updateAndApply([]);\n } else {\n const singleValue = [val];\n setSelectedValues(singleValue);\n updateAndApply(singleValue);\n }\n }\n },\n [isMultiSelect, selectedValues],\n );\n\n function handleClearAll() {\n setSelectedValues([]);\n }\n\n function handleSelectAll() {\n setSelectedValues(options.map((o: FilterOption) => o.value));\n }\n\n return (\n <div\n ref={wrapperRef}\n className={`relative inline-block ${className}`}\n style={{ color: '#2A44D4', backgroundColor: 'rgb(255 255 255)' }}\n >\n <FilterHeader\n label={label}\n count={selectedValues.length}\n isDisabled={isBusy}\n isDropdownOpen={isDropdownOpen}\n isLoading={isBusy}\n toggleOpen={() => setIsDropdownOpen((prev) => !prev)}\n />\n\n {isDropdownOpen && (\n <div className=\"absolute right-0 top-full mt-2 w-64 bg-white border rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 p-4 z-50\">\n <input\n type=\"text\"\n placeholder=\"Search...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"w-full mb-3 px-2 py-1 border rounded focus:outline-none\"\n disabled={isBusy}\n />\n\n {isMultiSelect && (\n <FilterActions\n selected={selectedValues}\n allSelected={allOptionsSelected}\n onClear={handleClearAll}\n onSelectAll={handleSelectAll}\n isDisabled={isBusy}\n />\n )}\n\n <FilterOptionList\n options={filteredOptions}\n selected={selectedValues}\n onToggle={handleOptionToggle}\n isDisabled={isBusy}\n />\n\n {isMultiSelect && (\n <div className=\"flex justify-end space-x-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setIsDropdownOpen(false)}\n disabled={isApplying}\n >\n Cancel\n </Button>\n <Button\n variant=\"default\"\n size=\"sm\"\n onClick={() => updateAndApply(selectedValues)}\n disabled={isBusy}\n >\n {isApplying && <Loader2Icon className=\"animate-spin mr-2\" size={16} />}Apply\n </Button>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"wLAAA,uDACA,OAASA,WAAW,CAAEC,SAAS,CAAEC,MAAM,CAAEC,QAAQ,KAAQ,OAAO,CAChE,OAASC,WAAW,CAAEC,SAAS,CAAEC,UAAU,GAAI,CAAAC,UAAU,CAAEC,WAAW,KAAQ,cAAc,CAE5F,OAASC,MAAM,KAAQ,UAAU,CACjC,OAASC,QAAQ,KAAQ,YAAY,CACrC,OAASC,UAAU,KAAQ,eAAe,CAC1C,OAASC,+BAA+B,KAAQ,kBAAkB,CAAC,OAAAC,GAAA,IAAAC,IAAA,CAAAC,IAAA,IAAAC,KAAA,yBAqCnE,QAAS,CAAAC,YAAYA,CAAAC,IAAA,CAOC,IANpB,CAAAC,KAAK,CAAAD,IAAA,CAALC,KAAK,CACLC,KAAK,CAAAF,IAAA,CAALE,KAAK,CACLC,UAAU,CAAAH,IAAA,CAAVG,UAAU,CACVC,cAAc,CAAAJ,IAAA,CAAdI,cAAc,CACdC,SAAS,CAAAL,IAAA,CAATK,SAAS,CACTC,UAAU,CAAAN,IAAA,CAAVM,UAAU,CAEV,GAAM,CAAAC,WAAW,CAAGH,cAAc,CAAGjB,SAAS,CAAGD,WAAW,CAE5D,mBACEY,KAAA,CAACP,MAAM,EAACiB,OAAO,CAAC,SAAS,CAACC,IAAI,CAAC,IAAI,CAACC,QAAQ,CAAEP,UAAW,CAACQ,OAAO,CAAEL,UAAW,CAACM,SAAS,CAAC,MAAM,CAAAC,QAAA,eAC7FjB,IAAA,CAACP,UAAU,EAACoB,IAAI,CAAE,EAAG,CAAE,CAAC,CACvBP,KAAK,CAAG,CAAC,CAAMD,KAAK,MAAKC,KAAK,KAAMD,KAAK,CACzCI,SAAS,cACRT,IAAA,CAACN,WAAW,EAACsB,SAAS,CAAC,mBAAmB,CAACH,IAAI,CAAE,EAAG,CAAE,CAAC,cAEvDb,IAAA,CAACW,WAAW,EAACE,IAAI,CAAE,EAAG,CAACG,SAAS,CAAC,MAAM,CAAE,CAC1C,EACK,CAEZ,CAEA,QAAS,CAAAE,aAAaA,CAAAC,KAAA,CAMC,IALrB,CAAAC,QAAQ,CAAAD,KAAA,CAARC,QAAQ,CACRC,WAAW,CAAAF,KAAA,CAAXE,WAAW,CACXC,OAAO,CAAAH,KAAA,CAAPG,OAAO,CACPC,WAAW,CAAAJ,KAAA,CAAXI,WAAW,CACXhB,UAAU,CAAAY,KAAA,CAAVZ,UAAU,CAEV,mBACEL,KAAA,QAAKc,SAAS,CAAC,wBAAwB,CAAAC,QAAA,eACrCjB,IAAA,CAACJ,QAAQ,EACP4B,OAAO,CAAEH,WAAY,CACrBI,eAAe,CAAE,QAAjB,CAAAA,eAAeA,CAAA,QAAS,CAAAJ,WAAW,CAAGC,OAAO,CAAC,CAAC,CAAGC,WAAW,CAAC,CAAC,CAAE,CACjET,QAAQ,CAAEP,UAAW,CACtB,CAAC,cACFP,IAAA,SAAMgB,SAAS,CAAC,4BAA4B,CAAAC,QAAA,CAAC,YAAU,CAAM,CAAC,CAC7DG,QAAQ,CAACM,MAAM,CAAG,CAAC,eAClB1B,IAAA,WACE2B,IAAI,CAAC,QAAQ,CACbX,SAAS,CAAC,+CAA+C,CACzDY,WAAW,CAAE,QAAb,CAAAA,WAAWA,CAAGC,CAAC,CAAK,CAClBA,CAAC,CAACC,eAAe,CAAC,CAAC,CACnBD,CAAC,CAACE,cAAc,CAAC,CACnB,CAAE,CACFhB,OAAO,CAAEO,OAAQ,CACjBR,QAAQ,CAAEP,UAAW,CAAAU,QAAA,CACtB,WAED,CAAQ,CACT,EACE,CAET,CAEA,QAAS,CAAAe,gBAAgBA,CAAAC,KAAA,CAAqE,IAAlE,CAAAC,OAAO,CAAAD,KAAA,CAAPC,OAAO,CAAEd,QAAQ,CAAAa,KAAA,CAARb,QAAQ,CAAEe,QAAQ,CAAAF,KAAA,CAARE,QAAQ,CAAE5B,UAAU,CAAA0B,KAAA,CAAV1B,UAAU,CACjE,mBACEP,IAAA,CAACH,UAAU,EAACuC,iBAAiB,CAAC,yCAAyC,CAAAnB,QAAA,CACpEiB,OAAO,CAACR,MAAM,CAAG,CAAC,CACjBQ,OAAO,CAACG,GAAG,CAAC,SAACC,GAAG,qBACdpC,KAAA,UAEEc,SAAS,CAAC,2FAA2F,CACrGD,OAAO,CAAE,QAAT,CAAAA,OAAOA,CAAGc,CAAC,CAAK,CACdA,CAAC,CAACE,cAAc,CAAC,CAAC,CAClBF,CAAC,CAACC,eAAe,CAAC,CAAC,CAEnB,GAAI,CAACvB,UAAU,CAAE,CACf4B,QAAQ,CAACG,GAAG,CAACC,KAAK,CACpB,CACF,CAAE,CAAAtB,QAAA,eAEFjB,IAAA,CAACJ,QAAQ,EACP4B,OAAO,CAAEJ,QAAQ,CAACoB,QAAQ,CAACF,GAAG,CAACC,KAAK,CAAE,CACtCE,QAAQ,CAAE,QAAV,CAAAA,QAAQA,CAAA,CAAQ,CACd;AAAA,CACA,CACF3B,QAAQ,CAAEP,UAAW,CACtB,CAAC,cACFP,IAAA,SAAMgB,SAAS,CAAC,uBAAuB,CAAAC,QAAA,CAAEqB,GAAG,CAACjC,KAAK,CAAO,CAAC,GAlBrDiC,GAAG,CAACC,KAmBJ,CAAC,CACT,CAAC,cAEFvC,IAAA,QAAKgB,SAAS,CAAC,uBAAuB,CAAAC,QAAA,CAAC,kBAAgB,CAAK,CAC7D,CACS,CAEhB,CAEA,MAAO,SAAS,CAAAyB,YAAYA,CAAAC,KAAA,CAAgD,IAA7C,CAAAC,QAAQ,CAAAD,KAAA,CAARC,QAAQ,CAAEC,kBAAkB,CAAAF,KAAA,CAAlBE,kBAAkB,CACzD,GAAM,CAAAC,UAAU,CAAG1D,MAAM,CAAiB,IAAI,CAAC,CAE/C,IAAA2D,SAAA,CAA0C1D,QAAQ,CAAA2D,QAAA,IAAMJ,QAAQ,CAACK,GAAG,CAAC,gBAAgB,CAAC,CAAE,CAAC,CAAlFC,aAAa,CAAAH,SAAA,IAAEI,gBAAgB,CAAAJ,SAAA,IACtC,IAAAK,UAAA,CAAoC/D,QAAQ,CAAA2D,QAAA,IAAMJ,QAAQ,CAACK,GAAG,CAAC,YAAY,CAAC,CAAE,CAAC,CAAxEI,UAAU,CAAAD,UAAA,IAAEE,aAAa,CAAAF,UAAA,IAChC,IAAAG,UAAA,CAA4ClE,QAAQ,CAAC,KAAK,CAAC,CAApDmB,cAAc,CAAA+C,UAAA,IAAEC,iBAAiB,CAAAD,UAAA,IACxC,IAAAE,UAAA,CAAsCpE,QAAQ,CAAC,EAAE,CAAC,CAA3CqE,WAAW,CAAAD,UAAA,IAAEE,cAAc,CAAAF,UAAA,IAClC,IAAAG,UAAA,CAAoCvE,QAAQ,CAAC,KAAK,CAAC,CAA5CwE,UAAU,CAAAD,UAAA,IAAEE,aAAa,CAAAF,UAAA,IAEhC,IAAAG,qBAAA,CAOIb,aAAa,CANfhB,OAAO,CAAPA,OAAO,CAAA6B,qBAAA,UAAG,EAAE,CAAAA,qBAAA,CAAAC,oBAAA,CAMVd,aAAa,CALfX,KAAK,CAALA,KAAK,CAAAyB,oBAAA,UAAG,EAAE,CAAAA,oBAAA,CAAAC,qBAAA,CAKRf,aAAa,CAJflC,SAAS,CAATA,SAAS,CAAAiD,qBAAA,UAAG,EAAE,CAAAA,qBAAA,CAAAC,qBAAA,CAIZhB,aAAa,CAHfiB,kBAAkB,CAAlBA,kBAAkB,CAAAD,qBAAA,UAAG,EAAE,CAAAA,qBAAA,CAAAE,mBAAA,CAGrBlB,aAAa,CAFfmB,IAAI,CAAEhE,KAAK,CAAA+D,mBAAA,UAAG,QAAQ,CAAAA,mBAAA,CAAAE,qBAAA,CAEpBpB,aAAa,CADfqB,UAAU,CAAVA,UAAU,CAAAD,qBAAA,UAAG,aAAa,CAAAA,qBAAA,CAG5B,GAAM,CAAAE,YAAY,CAAGtB,aAAa,WAAQ,EAAI,EAAE,CAEhD,IAAAuB,UAAA,CAA4CpF,QAAQ,CAAW,UAAM,CACnE,MAAO,CAAAqF,KAAK,CAACC,OAAO,CAACpC,KAAK,CAAC,EAAIA,KAAK,CAACb,MAAM,CAAG,CAAC,CAAGa,KAAK,CAAGiC,YAC5D,CAAC,CAAC,CAFKI,cAAc,CAAAH,UAAA,IAAEI,iBAAiB,CAAAJ,UAAA,IAIxC,GAAM,CAAAK,aAAa,CAAGP,UAAU,GAAK,aAAa,CAClD,GAAM,CAAAQ,MAAM,CAAG1B,UAAU,CAAC2B,wBAAwB,EAAInB,UAAU,CAChE,GAAM,CAAAoB,kBAAkB,CAAGL,cAAc,CAAClD,MAAM,GAAKQ,OAAO,CAACR,MAAM,EAAIQ,OAAO,CAACR,MAAM,CAAG,CAAC,CAEzFvC,SAAS,CAAC,UAAM,CACd,QAAS,CAAA+F,mBAAmBA,CAAA,CAAG,CAC7B/B,gBAAgB,CAAAH,QAAA,IAAMJ,QAAQ,CAACK,GAAG,CAAC,gBAAgB,CAAC,CAAE,CACxD,CAEA,QAAS,CAAAkC,gBAAgBA,CAAA,CAAG,CAC1B7B,aAAa,CAAAN,QAAA,IAAMJ,QAAQ,CAACK,GAAG,CAAC,YAAY,CAAC,CAAE,CACjD,CAEAL,QAAQ,CAACwC,EAAE,CAAC,uBAAuB,CAAEF,mBAAmB,CAAC,CACzDtC,QAAQ,CAACwC,EAAE,CAAC,mBAAmB,CAAED,gBAAgB,CAAC,CAElD,MAAO,WAAM,CACXvC,QAAQ,CAACyC,GAAG,CAAC,uBAAuB,CAAEH,mBAAmB,CAAC,CAC1DtC,QAAQ,CAACyC,GAAG,CAAC,mBAAmB,CAAEF,gBAAgB,CACpD,CACF,CAAC,CAAE,CAACvC,QAAQ,CAAC,CAAC,CAEdzD,SAAS,CAAC,UAAM,KAAAmG,qBAAA,CAAAC,mBAAA,CACd,GAAM,CAAAC,GAAG,EAAAF,qBAAA,EAAAC,mBAAA,CAAGzC,UAAU,CAAC2C,OAAO,eAAlBF,mBAAA,CAAoBG,aAAa,QAAAJ,qBAAA,CAAIK,QAAQ,CAEzD,QAAS,CAAAC,kBAAkBA,CAAC/D,CAAe,CAAE,CAC3C,GAAIrB,cAAc,EAAIsC,UAAU,CAAC2C,OAAO,EAAI,CAAC3C,UAAU,CAAC2C,OAAO,CAACI,QAAQ,CAAChE,CAAC,CAACiE,MAAc,CAAC,CAAE,CAC1FtC,iBAAiB,CAAC,KAAK,CACzB,CACF,CAEA,QAAS,CAAAuC,YAAYA,CAAClE,CAAgB,CAAE,CACtC,GAAIA,CAAC,CAACmE,GAAG,GAAK,QAAQ,CAAE,CACtBxC,iBAAiB,CAAC,KAAK,CACzB,CACF,CAEAgC,GAAG,CAACS,gBAAgB,CAAC,aAAa,CAAEL,kBAAkB,CAAC,CACvDJ,GAAG,CAACS,gBAAgB,CAAC,SAAS,CAAEF,YAAY,CAAC,CAE7C,MAAO,WAAM,CACXP,GAAG,CAACU,mBAAmB,CAAC,aAAa,CAAEN,kBAAkB,CAAC,CAC1DJ,GAAG,CAACU,mBAAmB,CAAC,SAAS,CAAEH,YAAY,CACjD,CACF,CAAC,CAAE,CAACvF,cAAc,CAAC,CAAC,CAEpB,GAAM,CAAA2F,eAAe,CAAGjE,OAAO,CAACkE,MAAM,CAAC,SAAC9D,GAAiB,QACvD,CAAAA,GAAG,CAACjC,KAAK,CAACgG,WAAW,CAAC,CAAC,CAAC7D,QAAQ,CAACkB,WAAW,CAAC2C,WAAW,CAAC,CAAC,CAAC,CAC7D,CAAC,CAAC,QAEa,CAAAC,cAAcA,CAAAC,EAAA,SAAAC,eAAA,CAAAC,KAAA,MAAAC,SAAA,WAAAF,gBAAA,EAAAA,eAAA,CAAAG,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAA7B,SAAAC,QAA8BC,SAAmB,MAAAC,EAAA,QAAAJ,mBAAA,CAAAK,IAAA,UAAAC,SAAAC,QAAA,iBAAAA,QAAA,CAAAC,IAAA,CAAAD,QAAA,CAAAE,IAAA,YAAnBN,SAAmB,WAAnBA,SAAmB,CAAGnC,cAAc,CAChEd,aAAa,CAAC,IAAI,CAAC,CAACqD,QAAA,CAAAC,IAAA,GAGlBxE,QAAQ,CAAC0E,GAAG,CAAC,gBAAgB,CAAAtE,QAAA,IACxBJ,QAAQ,CAACK,GAAG,CAAC,gBAAgB,CAAC,EACjCV,KAAK,CAAEwE,SAAS,EACjB,CAAC,CAEIC,EAAE,CAAGpE,QAAQ,CAACK,GAAG,CAAC,IAAI,CAAC,CAAAkE,QAAA,CAAAE,IAAA,SAEvB,CAAAxE,kBAAkB,CAAC,CACvB0E,eAAe,CAAE,QAAQ,CACzBP,EAAE,CAAFA,EAAE,CACF7C,kBAAkB,CAAErE,+BAA+B,EAAEkH,EAAE,EAAAQ,MAAA,CAAKrD,kBAAkB,EAAG,IAAI,CACvF,CAAC,CAAC,QAAAgD,QAAA,CAAAC,IAAA,GAEFtD,aAAa,CAAC,KAAK,CAAC,CACpBN,iBAAiB,CAAC,KAAK,CAAC,CAAC,OAAA2D,QAAA,CAAAM,MAAA,6BAAAN,QAAA,CAAAO,IAAA,KAAAZ,OAAA,mBAE5B,UAAAN,eAAA,CAAAC,KAAA,MAAAC,SAAA,EAED,GAAM,CAAAiB,kBAAkB,CAAGzI,WAAW,CACpC,SAAC0I,GAAW,CAAK,CACf,GAAI9C,aAAa,CAAE,CACjBD,iBAAiB,CAAC,SAACuC,IAAI,QACrB,CAAAA,IAAI,CAAC5E,QAAQ,CAACoF,GAAG,CAAC,CAAGR,IAAI,CAAChB,MAAM,CAAC,SAACyB,CAAC,QAAK,CAAAA,CAAC,GAAKD,GAAG,EAAC,IAAAJ,MAAA,CAAOJ,IAAI,EAAEQ,GAAG,EAAC,CACrE,CACF,CAAC,IAAM,CACL,GAAIhD,cAAc,CAACpC,QAAQ,CAACoF,GAAG,CAAC,CAAE,CAChC/C,iBAAiB,CAAC,EAAE,CAAC,CACrByB,cAAc,CAAC,EAAE,CACnB,CAAC,IAAM,CACL,GAAM,CAAAwB,WAAW,CAAG,CAACF,GAAG,CAAC,CACzB/C,iBAAiB,CAACiD,WAAW,CAAC,CAC9BxB,cAAc,CAACwB,WAAW,CAC5B,CACF,CACF,CAAC,CACD,CAAChD,aAAa,CAAEF,cAAc,CAChC,CAAC,CAED,QAAS,CAAAmD,cAAcA,CAAA,CAAG,CACxBlD,iBAAiB,CAAC,EAAE,CACtB,CAEA,QAAS,CAAAmD,eAAeA,CAAA,CAAG,CACzBnD,iBAAiB,CAAC3C,OAAO,CAACG,GAAG,CAAC,SAAC4F,CAAe,QAAK,CAAAA,CAAC,CAAC1F,KAAK,EAAC,CAC7D,CAEA,mBACErC,KAAA,QACEgI,GAAG,CAAEpF,UAAW,CAChB9B,SAAS,0BAA2BA,SAAY,CAChDmH,KAAK,CAAE,CAAEC,KAAK,CAAE,SAAS,CAAEC,eAAe,CAAE,kBAAmB,CAAE,CAAApH,QAAA,eAEjEjB,IAAA,CAACG,YAAY,EACXE,KAAK,CAAEA,KAAM,CACbC,KAAK,CAAEsE,cAAc,CAAClD,MAAO,CAC7BnB,UAAU,CAAEwE,MAAO,CACnBvE,cAAc,CAAEA,cAAe,CAC/BC,SAAS,CAAEsE,MAAO,CAClBrE,UAAU,CAAE,QAAZ,CAAAA,UAAUA,CAAA,QAAQ,CAAA8C,iBAAiB,CAAC,SAAC4D,IAAI,QAAK,CAACA,IAAI,EAAC,CAAC,CACtD,CAAC,CAED5G,cAAc,eACbN,KAAA,QAAKc,SAAS,CAAC,oHAAoH,CAAAC,QAAA,eACjIjB,IAAA,UACE2B,IAAI,CAAC,MAAM,CACX2G,WAAW,CAAC,WAAW,CACvB/F,KAAK,CAAEmB,WAAY,CACnBjB,QAAQ,CAAE,QAAV,CAAAA,QAAQA,CAAGZ,CAAC,QAAK,CAAA8B,cAAc,CAAC9B,CAAC,CAACiE,MAAM,CAACvD,KAAK,CAAC,CAAC,CAChDvB,SAAS,CAAC,yDAAyD,CACnEF,QAAQ,CAAEiE,MAAO,CAClB,CAAC,CAEDD,aAAa,eACZ9E,IAAA,CAACkB,aAAa,EACZE,QAAQ,CAAEwD,cAAe,CACzBvD,WAAW,CAAE4D,kBAAmB,CAChC3D,OAAO,CAAEyG,cAAe,CACxBxG,WAAW,CAAEyG,eAAgB,CAC7BzH,UAAU,CAAEwE,MAAO,CACpB,CACF,cAED/E,IAAA,CAACgC,gBAAgB,EACfE,OAAO,CAAEiE,eAAgB,CACzB/E,QAAQ,CAAEwD,cAAe,CACzBzC,QAAQ,CAAEwF,kBAAmB,CAC7BpH,UAAU,CAAEwE,MAAO,CACpB,CAAC,CAEDD,aAAa,eACZ5E,KAAA,QAAKc,SAAS,CAAC,4BAA4B,CAAAC,QAAA,eACzCjB,IAAA,CAACL,MAAM,EACLiB,OAAO,CAAC,OAAO,CACfC,IAAI,CAAC,IAAI,CACTE,OAAO,CAAE,QAAT,CAAAA,OAAOA,CAAA,QAAQ,CAAAyC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CACxC1C,QAAQ,CAAE+C,UAAW,CAAA5C,QAAA,CACtB,QAED,CAAQ,CAAC,cACTf,KAAA,CAACP,MAAM,EACLiB,OAAO,CAAC,SAAS,CACjBC,IAAI,CAAC,IAAI,CACTE,OAAO,CAAE,QAAT,CAAAA,OAAOA,CAAA,QAAQ,CAAAuF,cAAc,CAAC1B,cAAc,CAAC,CAAC,CAC9C9D,QAAQ,CAAEiE,MAAO,CAAA9D,QAAA,EAEhB4C,UAAU,eAAI7D,IAAA,CAACN,WAAW,EAACsB,SAAS,CAAC,mBAAmB,CAACH,IAAI,CAAE,EAAG,CAAE,CAAC,CAAC,OACzE,EAAQ,CAAC,EACN,CACN,EACE,CACN,EACE,CAET","ignoreList":[]}
1
+ {"version":3,"file":"filter.js","names":["useCallback","useEffect","useRef","useState","ChevronDown","ChevronUp","ListFilter","FilterIcon","Loader2Icon","Button","Checkbox","ScrollArea","getAffectedComponentsWithLoader","jsx","_jsx","jsxs","_jsxs","FilterHeader","_ref","label","count","isDisabled","isDropdownOpen","isLoading","toggleOpen","ChevronIcon","variant","size","disabled","onClick","className","children","FilterActions","_ref2","selected","allSelected","onClear","onSelectAll","checked","onCheckedChange","length","type","onMouseDown","e","stopPropagation","preventDefault","FilterOptionList","_ref3","options","onToggle","viewportClassName","map","opt","value","includes","onChange","renderFilter","_ref4","gjsModel","performInteraction","wrapperRef","_useState","_extends","get","componentData","setComponentData","_useState2","attributes","setAttributes","_useState3","setIsDropdownOpen","_useState4","searchQuery","setSearchQuery","_useState5","isApplying","setIsApplying","_componentData$option","_componentData$value","_componentData$classN","_componentData$affect","affectedComponents","_componentData$text","text","_componentData$filter","filterType","defaultValue","_useState6","Array","isArray","selectedValues","setSelectedValues","isMultiSelect","isBusy","interactionApiInProgress","loading","allOptionsSelected","updateComponentData","updateAttributes","on","off","_wrapperRef$current$o","_wrapperRef$current","doc","current","ownerDocument","document","handleOutsideClick","contains","target","handleEscape","key","addEventListener","removeEventListener","filteredOptions","filter","toLowerCase","updateAndApply","_x","_updateAndApply","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","newValues","id","wrap","_callee$","_context","prev","next","set","interactionType","concat","finish","stop","handleOptionToggle","val","v","singleValue","handleClearAll","handleSelectAll","o","ref","style","color","backgroundColor","placeholder"],"sources":["../../../../src/shadcn/components/ui/filter.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { ChevronDown, ChevronUp, ListFilter as FilterIcon, Loader2Icon } from 'lucide-react';\n\nimport { Button } from './button';\nimport { Checkbox } from './checkbox';\nimport { ScrollArea } from './scroll-area';\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\n\ntype FilterOption = {\n label: string;\n value: string;\n};\n\ntype FilterProps = {\n isEditable?: boolean;\n gjsModel: any;\n performInteraction: (payload: Record<string, any>) => Promise<void>;\n};\n\ntype FilterHeaderProps = {\n label: string;\n count: number;\n isDisabled: boolean;\n isDropdownOpen: boolean;\n isLoading: boolean;\n toggleOpen: () => void;\n};\n\ntype FilterActionsProps = {\n selected: string[];\n allSelected: boolean;\n onClear: () => void;\n onSelectAll: () => void;\n isDisabled: boolean;\n};\n\ntype FilterOptionListProps = {\n options: FilterOption[];\n selected: string[];\n onToggle: (value: string) => void;\n isDisabled: boolean;\n};\n\nfunction FilterHeader({\n label,\n count,\n isDisabled,\n isDropdownOpen,\n isLoading,\n toggleOpen,\n}: FilterHeaderProps) {\n const ChevronIcon = isDropdownOpen ? ChevronUp : ChevronDown;\n\n return (\n <Button variant=\"outline\" size=\"sm\" disabled={isDisabled} onClick={toggleOpen} className=\"px-2\">\n <FilterIcon size={16} />\n {count > 0 ? `${label} (${count})` : label}\n {isLoading ? (\n <Loader2Icon className=\"ml-2 animate-spin\" size={16} />\n ) : (\n <ChevronIcon size={16} className=\"ml-1\" />\n )}\n </Button>\n );\n}\n\nfunction FilterActions({\n selected,\n allSelected,\n onClear,\n onSelectAll,\n isDisabled,\n}: FilterActionsProps) {\n return (\n <div className=\"flex items-center mb-3\">\n <Checkbox\n checked={allSelected}\n onCheckedChange={() => (allSelected ? onClear() : onSelectAll())}\n disabled={isDisabled}\n />\n <span className=\"ml-2 text-sm text-gray-900\">Select All</span>\n {selected.length > 0 && (\n <button\n type=\"button\"\n className=\"ml-auto text-sm text-blue-600 hover:underline\"\n onMouseDown={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n onClick={onClear}\n disabled={isDisabled}\n >\n Clear All\n </button>\n )}\n </div>\n );\n}\n\nfunction FilterOptionList({ options, selected, onToggle, isDisabled }: FilterOptionListProps) {\n return (\n <ScrollArea viewportClassName=\"max-h-48 overflow-y-auto mb-4 space-y-2\">\n {options.length > 0 ? (\n options.map((opt) => (\n <label\n key={opt.value}\n className=\"flex items-center space-x-2 hover:bg-gray-100 rounded p-1 transition hover:cursor-pointer\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (!isDisabled) {\n onToggle(opt.value);\n }\n }}\n >\n <Checkbox\n checked={selected.includes(opt.value)}\n onChange={() => {\n // Prevent checkbox from toggling when clicking label\n }}\n disabled={isDisabled}\n />\n <span className=\"text-sm text-gray-900\">{opt.label}</span>\n </label>\n ))\n ) : (\n <div className=\"text-sm text-gray-500\">No results found</div>\n )}\n </ScrollArea>\n );\n}\n\nexport function renderFilter({ gjsModel, performInteraction }: FilterProps) {\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const [componentData, setComponentData] = useState({ ...gjsModel.get('componentProps') });\n const [attributes, setAttributes] = useState({ ...gjsModel.get('attributes') });\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const [isApplying, setIsApplying] = useState(false);\n\n const {\n options = [],\n value = [],\n className = '',\n affectedComponents = [],\n text: label = 'Filter',\n filterType = 'multiselect',\n } = componentData;\n\n const defaultValue = componentData.default || [];\n\n const [selectedValues, setSelectedValues] = useState<string[]>(() => {\n return Array.isArray(value) && value.length > 0 ? value : defaultValue;\n });\n\n const isMultiSelect = filterType === 'multiselect';\n const isBusy = attributes.interactionApiInProgress || isApplying || attributes.loading;\n const allOptionsSelected = selectedValues.length === options.length && options.length > 0;\n\n useEffect(() => {\n function updateComponentData() {\n setComponentData({ ...gjsModel.get('componentProps') });\n }\n\n function updateAttributes() {\n setAttributes({ ...gjsModel.get('attributes') });\n }\n\n gjsModel.on('change:componentProps', updateComponentData);\n gjsModel.on('change:attributes', updateAttributes);\n\n return () => {\n gjsModel.off('change:componentProps', updateComponentData);\n gjsModel.off('change:attributes', updateAttributes);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const doc = wrapperRef.current?.ownerDocument ?? document;\n\n function handleOutsideClick(e: PointerEvent) {\n if (isDropdownOpen && wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n setIsDropdownOpen(false);\n }\n }\n\n function handleEscape(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n setIsDropdownOpen(false);\n }\n }\n\n doc.addEventListener('pointerdown', handleOutsideClick);\n doc.addEventListener('keydown', handleEscape);\n\n return () => {\n doc.removeEventListener('pointerdown', handleOutsideClick);\n doc.removeEventListener('keydown', handleEscape);\n };\n }, [isDropdownOpen]);\n\n const filteredOptions = options.filter((opt: FilterOption) =>\n opt.label.toLowerCase().includes(searchQuery.toLowerCase()),\n );\n\n async function updateAndApply(newValues: string[] = selectedValues) {\n setIsApplying(true);\n\n try {\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n value: newValues,\n });\n\n const id = gjsModel.get('id');\n\n await performInteraction({\n interactionType: 'filter',\n id,\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n });\n } finally {\n setIsApplying(false);\n setIsDropdownOpen(false);\n }\n }\n\n const handleOptionToggle = useCallback(\n (val: string) => {\n if (isMultiSelect) {\n setSelectedValues((prev) =>\n prev.includes(val) ? prev.filter((v) => v !== val) : [...prev, val],\n );\n } else {\n if (selectedValues.includes(val)) {\n setSelectedValues([]);\n updateAndApply([]);\n } else {\n const singleValue = [val];\n setSelectedValues(singleValue);\n updateAndApply(singleValue);\n }\n }\n },\n [isMultiSelect, selectedValues],\n );\n\n function handleClearAll() {\n setSelectedValues([]);\n }\n\n function handleSelectAll() {\n setSelectedValues(options.map((o: FilterOption) => o.value));\n }\n\n return (\n <div\n ref={wrapperRef}\n className={`relative inline-block ${className}`}\n style={{ color: '#2A44D4', backgroundColor: 'rgb(255 255 255)' }}\n >\n <FilterHeader\n label={label}\n count={selectedValues.length}\n isDisabled={isBusy}\n isDropdownOpen={isDropdownOpen}\n isLoading={isBusy}\n toggleOpen={() => setIsDropdownOpen((prev) => !prev)}\n />\n\n {isDropdownOpen && (\n <div className=\"absolute right-0 top-full mt-2 w-64 bg-white border rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 p-4 z-50\">\n <input\n type=\"text\"\n placeholder=\"Search...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"w-full mb-3 px-2 py-1 border rounded focus:outline-none\"\n disabled={isBusy}\n />\n\n {isMultiSelect && (\n <FilterActions\n selected={selectedValues}\n allSelected={allOptionsSelected}\n onClear={handleClearAll}\n onSelectAll={handleSelectAll}\n isDisabled={isBusy}\n />\n )}\n\n <FilterOptionList\n options={filteredOptions}\n selected={selectedValues}\n onToggle={handleOptionToggle}\n isDisabled={isBusy}\n />\n\n {isMultiSelect && (\n <div className=\"flex justify-end space-x-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setIsDropdownOpen(false)}\n disabled={isApplying}\n >\n Cancel\n </Button>\n <Button\n variant=\"default\"\n size=\"sm\"\n onClick={() => updateAndApply(selectedValues)}\n disabled={isBusy}\n >\n {isApplying && <Loader2Icon className=\"animate-spin mr-2\" size={16} />}Apply\n </Button>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _regeneratorRuntime from"@babel/runtime/regenerator";/* eslint-disable @typescript-eslint/no-explicit-any */import{useEffect,useRef,useState}from"react";import{Loader2Icon,Search as SearchIcon,X as ClearIcon,Info as InfoIcon}from"lucide-react";import{Input}from"./input";import{getAffectedComponentsWithLoader}from"../../../helpers";import{Tooltip,TooltipTrigger,TooltipContent}from"./tooltip";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var MAX_CHAR_LIMIT=140;var MaxCharLimitExceededMessage="Max 140 characters allowed.";export function renderSearch(_ref){var gjsModel=_ref.gjsModel,performInteraction=_ref.performInteraction;var wrapperRef=useRef(null);var _useState=useState(_extends({},gjsModel.get("componentProps"))),componentData=_useState[0],setComponentData=_useState[1];var placeholder=componentData.placeholder,_componentData$affect=componentData.affectedComponents,affectedComponents=_componentData$affect===void 0?[]:_componentData$affect,_componentData$classN=componentData.className,className=_componentData$classN===void 0?"":_componentData$classN;var initialSearchText=componentData.searchText||"";var _useState2=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState2[0],setAttributes=_useState2[1];var _useState3=useState(initialSearchText),searchQuery=_useState3[0],setSearchQuery=_useState3[1];var _useState4=useState(false),isApplying=_useState4[0],setIsApplying=_useState4[1];var isBusy=attributes.interactionApiInProgress||isApplying;var showClear=!!searchQuery&&!isBusy;useEffect(function(){function updateComponentData(){setComponentData(_extends({},gjsModel.get("componentProps")))}function updateAttributes(){setAttributes(_extends({},gjsModel.get("attributes")))}gjsModel.on("change:componentProps",updateComponentData);gjsModel.on("change:attributes",updateAttributes);return function(){gjsModel.off("change:componentProps",updateComponentData);gjsModel.off("change:attributes",updateAttributes)}},[gjsModel]);function applySearch(_x){return _applySearch.apply(this,arguments)}function _applySearch(){_applySearch=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query){var id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(!(query.length>MAX_CHAR_LIMIT)){_context.next=2;break}return _context.abrupt("return");case 2:setIsApplying(true);_context.prev=3;gjsModel.set("componentProps",_extends({},gjsModel.get("componentProps"),{searchText:query}));id=gjsModel.get("id");_context.next=8;return performInteraction({interactionType:"search",id:id,affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true)});case 8:_context.prev=8;setIsApplying(false);return _context.finish(8);case 11:case"end":return _context.stop()}},_callee,null,[[3,,8,11]])}));return _applySearch.apply(this,arguments)}function handleKeyDown(e){if(e.key==="Enter"){applySearch(searchQuery.trim())}}function handleSearchIconClick(){applySearch(searchQuery.trim())}function handleClear(){setSearchQuery("");applySearch("")}return/*#__PURE__*/_jsxs("div",{ref:wrapperRef,className:"flex items-center gap-2 pb-4 "+className,children:[/*#__PURE__*/_jsxs("div",{className:"relative transition-all duration-200 ease-in-out "+(searchQuery?"w-[320px]":"w-[280px]"),style:{backgroundColor:"#fff"},children:[/*#__PURE__*/_jsxs("div",{children:[/*#__PURE__*/_jsx(Input,{type:"text",placeholder:"Search...",value:searchQuery,onChange:function onChange(e){return setSearchQuery(e.target.value)},onKeyDown:handleKeyDown,disabled:isBusy,className:"py-2 text-sm rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all duration-200 pl-4 pr-16 w-full"}),showClear&&/*#__PURE__*/_jsx("button",{type:"button",onClick:handleClear,className:"absolute right-10 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 transition","aria-label":"Clear search",children:/*#__PURE__*/_jsx(ClearIcon,{size:16})}),/*#__PURE__*/_jsx("button",{type:"button",onClick:handleSearchIconClick,disabled:isBusy,className:"absolute right-2 top-1/2 -translate-y-1/2 text-gray-500 hover:text-blue-600 transition-colors","aria-label":"Search",children:isBusy?/*#__PURE__*/_jsx(Loader2Icon,{size:18,className:"animate-spin"}):/*#__PURE__*/_jsx(SearchIcon,{size:18})})]}),searchQuery.length>MAX_CHAR_LIMIT&&/*#__PURE__*/_jsx("p",{className:"absolute left-1 text-xs text-red-600 pl-1 pt-1",children:MaxCharLimitExceededMessage})]}),placeholder&&/*#__PURE__*/_jsxs(Tooltip,{children:[/*#__PURE__*/_jsx(TooltipTrigger,{asChild:true,children:/*#__PURE__*/_jsx("span",{className:"cursor-pointer text-gray-400 hover:text-gray-600",children:/*#__PURE__*/_jsx(InfoIcon,{size:16})})}),/*#__PURE__*/_jsx(TooltipContent,{side:"bottom",children:placeholder})]})]})}
1
+ import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _regeneratorRuntime from"@babel/runtime/regenerator";/* eslint-disable @typescript-eslint/no-explicit-any */import{useEffect,useRef,useState}from"react";import{Loader2Icon,Search as SearchIcon,X as ClearIcon,Info as InfoIcon}from"lucide-react";import{Input}from"./input";import{getAffectedComponentsWithLoader}from"../../../helpers";import{Tooltip,TooltipTrigger,TooltipContent}from"./tooltip";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var MAX_CHAR_LIMIT=140;var MaxCharLimitExceededMessage="Max 140 characters allowed.";export function renderSearch(_ref){var gjsModel=_ref.gjsModel,performInteraction=_ref.performInteraction;var wrapperRef=useRef(null);var _useState=useState(_extends({},gjsModel.get("componentProps"))),componentData=_useState[0],setComponentData=_useState[1];var placeholder=componentData.placeholder,_componentData$affect=componentData.affectedComponents,affectedComponents=_componentData$affect===void 0?[]:_componentData$affect,_componentData$classN=componentData.className,className=_componentData$classN===void 0?"":_componentData$classN;var initialSearchText=componentData.searchText||"";var _useState2=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState2[0],setAttributes=_useState2[1];var _useState3=useState(initialSearchText),searchQuery=_useState3[0],setSearchQuery=_useState3[1];var _useState4=useState(false),isApplying=_useState4[0],setIsApplying=_useState4[1];var isBusy=attributes.interactionApiInProgress||isApplying;var showClear=!!searchQuery&&!isBusy;useEffect(function(){function updateComponentData(){setComponentData(_extends({},gjsModel.get("componentProps")))}function updateAttributes(){setAttributes(_extends({},gjsModel.get("attributes")))}gjsModel.on("change:componentProps",updateComponentData);gjsModel.on("change:attributes",updateAttributes);return function(){gjsModel.off("change:componentProps",updateComponentData);gjsModel.off("change:attributes",updateAttributes)}},[gjsModel]);function applySearch(_x){return _applySearch.apply(this,arguments)}function _applySearch(){_applySearch=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query){var id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(!(query.length>MAX_CHAR_LIMIT)){_context.next=2;break}return _context.abrupt("return");case 2:setIsApplying(true);_context.prev=3;gjsModel.set("componentProps",_extends({},gjsModel.get("componentProps"),{searchText:query}));id=gjsModel.get("id");_context.next=8;return performInteraction({interactionType:"search",id:id,affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true)});case 8:_context.prev=8;setIsApplying(false);return _context.finish(8);case 11:case"end":return _context.stop()}},_callee,null,[[3,,8,11]])}));return _applySearch.apply(this,arguments)}function handleKeyDown(e){if(e.key==="Enter"){applySearch(searchQuery.trim())}}function handleSearchIconClick(){applySearch(searchQuery.trim())}function handleClear(){setSearchQuery("");applySearch("")}if(attributes.loading){return/*#__PURE__*/_jsx("div",{ref:wrapperRef,className:"flex items-center gap-2 pb-4 "+className,children:/*#__PURE__*/_jsx("div",{className:"relative transition-all duration-200 ease-in-out "+(searchQuery?"w-[320px]":"w-[280px]"),style:{backgroundColor:"#fff"},children:/*#__PURE__*/_jsx(Loader2Icon,{size:18,className:"animate-spin"})})})}return/*#__PURE__*/_jsxs("div",{ref:wrapperRef,className:"flex items-center gap-2 pb-4 "+className,children:[/*#__PURE__*/_jsxs("div",{className:"relative transition-all duration-200 ease-in-out "+(searchQuery?"w-[320px]":"w-[280px]"),style:{backgroundColor:"#fff"},children:[/*#__PURE__*/_jsxs("div",{children:[/*#__PURE__*/_jsx(Input,{type:"text",placeholder:"Search...",value:searchQuery,onChange:function onChange(e){return setSearchQuery(e.target.value)},onKeyDown:handleKeyDown,disabled:isBusy,className:"py-2 text-sm rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all duration-200 pl-4 pr-16 w-full"}),showClear&&/*#__PURE__*/_jsx("button",{type:"button",onClick:handleClear,className:"absolute right-10 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 transition","aria-label":"Clear search",children:/*#__PURE__*/_jsx(ClearIcon,{size:16})}),/*#__PURE__*/_jsx("button",{type:"button",onClick:handleSearchIconClick,disabled:isBusy,className:"absolute right-2 top-1/2 -translate-y-1/2 text-gray-500 hover:text-blue-600 transition-colors","aria-label":"Search",children:isBusy?/*#__PURE__*/_jsx(Loader2Icon,{size:18,className:"animate-spin"}):/*#__PURE__*/_jsx(SearchIcon,{size:18})})]}),searchQuery.length>MAX_CHAR_LIMIT&&/*#__PURE__*/_jsx("p",{className:"absolute left-1 text-xs text-red-600 pl-1 pt-1",children:MaxCharLimitExceededMessage})]}),placeholder&&/*#__PURE__*/_jsxs(Tooltip,{children:[/*#__PURE__*/_jsx(TooltipTrigger,{asChild:true,children:/*#__PURE__*/_jsx("span",{className:"cursor-pointer text-gray-400 hover:text-gray-600",children:/*#__PURE__*/_jsx(InfoIcon,{size:16})})}),/*#__PURE__*/_jsx(TooltipContent,{side:"bottom",children:placeholder})]})]})}
2
2
  //# sourceMappingURL=search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","names":["useEffect","useRef","useState","Loader2Icon","Search","SearchIcon","X","ClearIcon","Info","InfoIcon","Input","getAffectedComponentsWithLoader","Tooltip","TooltipTrigger","TooltipContent","jsx","_jsx","jsxs","_jsxs","MAX_CHAR_LIMIT","MaxCharLimitExceededMessage","renderSearch","_ref","gjsModel","performInteraction","wrapperRef","_useState","_extends","get","componentData","setComponentData","placeholder","_componentData$affect","affectedComponents","_componentData$classN","className","initialSearchText","searchText","_useState2","attributes","setAttributes","_useState3","searchQuery","setSearchQuery","_useState4","isApplying","setIsApplying","isBusy","interactionApiInProgress","showClear","updateComponentData","updateAttributes","on","off","applySearch","_x","_applySearch","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","query","id","wrap","_callee$","_context","prev","next","length","abrupt","set","interactionType","concat","finish","stop","handleKeyDown","e","key","trim","handleSearchIconClick","handleClear","ref","children","style","backgroundColor","type","value","onChange","target","onKeyDown","disabled","onClick","size","asChild","side"],"sources":["../../../../src/shadcn/components/ui/search.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef, useState } from 'react';\nimport { Loader2Icon, Search as SearchIcon, X as ClearIcon, Info as InfoIcon } from 'lucide-react';\nimport { Input } from './input';\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\nimport { Tooltip, TooltipTrigger, TooltipContent } from './tooltip';\n\nconst MAX_CHAR_LIMIT = 140;\nconst MaxCharLimitExceededMessage = 'Max 140 characters allowed.';\n\ntype SearchProps = {\n isEditable?: boolean;\n gjsModel: any;\n performInteraction: (payload: Record<string, any>) => Promise<void>;\n};\n\nexport function renderSearch({ gjsModel, performInteraction }: SearchProps) {\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const [componentData, setComponentData] = useState({ ...gjsModel.get('componentProps') });\n const { placeholder, affectedComponents = [], className = '' } = componentData;\n const initialSearchText = componentData.searchText || '';\n\n const [attributes, setAttributes] = useState({ ...gjsModel.get('attributes') });\n const [searchQuery, setSearchQuery] = useState(initialSearchText);\n const [isApplying, setIsApplying] = useState(false);\n\n const isBusy = attributes.interactionApiInProgress || isApplying;\n const showClear = !!searchQuery && !isBusy;\n\n useEffect(() => {\n function updateComponentData() {\n setComponentData({ ...gjsModel.get('componentProps') });\n }\n\n function updateAttributes() {\n setAttributes({ ...gjsModel.get('attributes') });\n }\n\n gjsModel.on('change:componentProps', updateComponentData);\n gjsModel.on('change:attributes', updateAttributes);\n\n return () => {\n gjsModel.off('change:componentProps', updateComponentData);\n gjsModel.off('change:attributes', updateAttributes);\n };\n }, [gjsModel]);\n\n async function applySearch(query: string) {\n if (query.length > MAX_CHAR_LIMIT) {\n return;\n }\n\n setIsApplying(true);\n\n try {\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n searchText: query,\n });\n\n const id = gjsModel.get('id');\n\n await performInteraction({\n interactionType: 'search',\n id,\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n });\n } finally {\n setIsApplying(false);\n }\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === 'Enter') {\n applySearch(searchQuery.trim());\n }\n }\n\n function handleSearchIconClick() {\n applySearch(searchQuery.trim());\n }\n\n function handleClear() {\n setSearchQuery('');\n applySearch('');\n }\n\n return (\n <div ref={wrapperRef} className={`flex items-center gap-2 pb-4 ${className}`}>\n <div\n className={`relative transition-all duration-200 ease-in-out ${\n searchQuery ? 'w-[320px]' : 'w-[280px]'\n }`}\n style={{ backgroundColor: '#fff' }}\n >\n <div>\n <Input\n type=\"text\"\n placeholder={'Search...'}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n onKeyDown={handleKeyDown}\n disabled={isBusy}\n className={`py-2 text-sm rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all duration-200 pl-4 pr-16 w-full`}\n />\n\n {showClear && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute right-10 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 transition\"\n aria-label=\"Clear search\"\n >\n <ClearIcon size={16} />\n </button>\n )}\n\n <button\n type=\"button\"\n onClick={handleSearchIconClick}\n disabled={isBusy}\n className=\"absolute right-2 top-1/2 -translate-y-1/2 text-gray-500 hover:text-blue-600 transition-colors\"\n aria-label=\"Search\"\n >\n {isBusy ? <Loader2Icon size={18} className=\"animate-spin\" /> : <SearchIcon size={18} />}\n </button>\n </div>\n\n {searchQuery.length > MAX_CHAR_LIMIT && (\n <p className=\"absolute left-1 text-xs text-red-600 pl-1 pt-1\">\n {MaxCharLimitExceededMessage}\n </p>\n )}\n </div>\n\n {placeholder && (\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"cursor-pointer text-gray-400 hover:text-gray-600\">\n <InfoIcon size={16} />\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">{placeholder}</TooltipContent>\n </Tooltip>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"search.js","names":["useEffect","useRef","useState","Loader2Icon","Search","SearchIcon","X","ClearIcon","Info","InfoIcon","Input","getAffectedComponentsWithLoader","Tooltip","TooltipTrigger","TooltipContent","jsx","_jsx","jsxs","_jsxs","MAX_CHAR_LIMIT","MaxCharLimitExceededMessage","renderSearch","_ref","gjsModel","performInteraction","wrapperRef","_useState","_extends","get","componentData","setComponentData","placeholder","_componentData$affect","affectedComponents","_componentData$classN","className","initialSearchText","searchText","_useState2","attributes","setAttributes","_useState3","searchQuery","setSearchQuery","_useState4","isApplying","setIsApplying","isBusy","interactionApiInProgress","showClear","updateComponentData","updateAttributes","on","off","applySearch","_x","_applySearch","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","query","id","wrap","_callee$","_context","prev","next","length","abrupt","set","interactionType","concat","finish","stop","handleKeyDown","e","key","trim","handleSearchIconClick","handleClear","loading","ref","children","style","backgroundColor","size","type","value","onChange","target","onKeyDown","disabled","onClick","asChild","side"],"sources":["../../../../src/shadcn/components/ui/search.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef, useState } from 'react';\nimport { Loader2Icon, Search as SearchIcon, X as ClearIcon, Info as InfoIcon } from 'lucide-react';\nimport { Input } from './input';\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\nimport { Tooltip, TooltipTrigger, TooltipContent } from './tooltip';\n\nconst MAX_CHAR_LIMIT = 140;\nconst MaxCharLimitExceededMessage = 'Max 140 characters allowed.';\n\ntype SearchProps = {\n isEditable?: boolean;\n gjsModel: any;\n performInteraction: (payload: Record<string, any>) => Promise<void>;\n};\n\nexport function renderSearch({ gjsModel, performInteraction }: SearchProps) {\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const [componentData, setComponentData] = useState({ ...gjsModel.get('componentProps') });\n const { placeholder, affectedComponents = [], className = '' } = componentData;\n const initialSearchText = componentData.searchText || '';\n\n const [attributes, setAttributes] = useState({ ...gjsModel.get('attributes') });\n const [searchQuery, setSearchQuery] = useState(initialSearchText);\n const [isApplying, setIsApplying] = useState(false);\n\n const isBusy = attributes.interactionApiInProgress || isApplying;\n const showClear = !!searchQuery && !isBusy;\n\n useEffect(() => {\n function updateComponentData() {\n setComponentData({ ...gjsModel.get('componentProps') });\n }\n\n function updateAttributes() {\n setAttributes({ ...gjsModel.get('attributes') });\n }\n\n gjsModel.on('change:componentProps', updateComponentData);\n gjsModel.on('change:attributes', updateAttributes);\n\n return () => {\n gjsModel.off('change:componentProps', updateComponentData);\n gjsModel.off('change:attributes', updateAttributes);\n };\n }, [gjsModel]);\n\n async function applySearch(query: string) {\n if (query.length > MAX_CHAR_LIMIT) {\n return;\n }\n\n setIsApplying(true);\n\n try {\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n searchText: query,\n });\n\n const id = gjsModel.get('id');\n\n await performInteraction({\n interactionType: 'search',\n id,\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n });\n } finally {\n setIsApplying(false);\n }\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === 'Enter') {\n applySearch(searchQuery.trim());\n }\n }\n\n function handleSearchIconClick() {\n applySearch(searchQuery.trim());\n }\n\n function handleClear() {\n setSearchQuery('');\n applySearch('');\n }\n\n if (attributes.loading) {\n return (\n <div ref={wrapperRef} className={`flex items-center gap-2 pb-4 ${className}`}>\n <div\n className={`relative transition-all duration-200 ease-in-out ${\n searchQuery ? 'w-[320px]' : 'w-[280px]'\n }`}\n style={{ backgroundColor: '#fff' }}\n >\n <Loader2Icon size={18} className=\"animate-spin\" />\n </div>\n </div>\n )\n }\n\n return (\n <div ref={wrapperRef} className={`flex items-center gap-2 pb-4 ${className}`}>\n <div\n className={`relative transition-all duration-200 ease-in-out ${\n searchQuery ? 'w-[320px]' : 'w-[280px]'\n }`}\n style={{ backgroundColor: '#fff' }}\n >\n <div>\n <Input\n type=\"text\"\n placeholder={'Search...'}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n onKeyDown={handleKeyDown}\n disabled={isBusy}\n className={`py-2 text-sm rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all duration-200 pl-4 pr-16 w-full`}\n />\n\n {showClear && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute right-10 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 transition\"\n aria-label=\"Clear search\"\n >\n <ClearIcon size={16} />\n </button>\n )}\n\n <button\n type=\"button\"\n onClick={handleSearchIconClick}\n disabled={isBusy}\n className=\"absolute right-2 top-1/2 -translate-y-1/2 text-gray-500 hover:text-blue-600 transition-colors\"\n aria-label=\"Search\"\n >\n {isBusy ? <Loader2Icon size={18} className=\"animate-spin\" /> : <SearchIcon size={18} />}\n </button>\n </div>\n\n {searchQuery.length > MAX_CHAR_LIMIT && (\n <p className=\"absolute left-1 text-xs text-red-600 pl-1 pt-1\">\n {MaxCharLimitExceededMessage}\n </p>\n )}\n </div>\n\n {placeholder && (\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"cursor-pointer text-gray-400 hover:text-gray-600\">\n <InfoIcon size={16} />\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">{placeholder}</TooltipContent>\n </Tooltip>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}