@peak-ai/canvas 1.4.34-rc.2 → 1.4.34

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.
@@ -1,2 +1,2 @@
1
- import _extends from"@babel/runtime/helpers/extends";/* eslint-disable @typescript-eslint/no-explicit-any */function isPlaceholder(obj){return typeof obj==="object"&&obj!==null&&obj.name==="__peak_placeholder"}function extractPlaceholders(json,mapping,parentId){if(parentId===void 0){parentId=undefined}var updatedParentId=parentId;if(json===null){return}else if(Array.isArray(json)){json.forEach(function(item){return extractPlaceholders(item,mapping,updatedParentId)});return}else if(typeof json==="object"){if(json.id){updatedParentId=json.id}for(var _i=0,_Object$entries=Object.entries(json);_i<_Object$entries.length;_i++){var _Object$entries$_i=_Object$entries[_i],key=_Object$entries$_i[0],value=_Object$entries$_i[1];if(isPlaceholder(value)){if(updatedParentId){mapping[updatedParentId]=mapping[updatedParentId]||{};mapping[updatedParentId][key]=value}}else if(typeof value==="object"){extractPlaceholders(value,mapping,updatedParentId)}}}}function replacePlaceholders(json,mapping){if(json===null){return json}if(Array.isArray(json)){return json.map(function(item){return replacePlaceholders(item,mapping)})}if(typeof json==="object"){var _newJson$componentNam,_newJson$componentNam2,_newJson$componentPro,_newJson$componentNam3,_newJson$componentPro2,_newJson$componentPro3;var newJson=_extends({},json);if(newJson.id&&mapping[newJson.id]){for(var _i2=0,_Object$entries2=Object.entries(mapping[newJson.id]);_i2<_Object$entries2.length;_i2++){var _Object$entries2$_i=_Object$entries2[_i2],key=_Object$entries2$_i[0],placeholderValue=_Object$entries2$_i[1];if(key in newJson){newJson[key]=placeholderValue}}}if(((_newJson$componentNam=newJson.componentName)==null?void 0:_newJson$componentNam.toLowerCase())==="filter"){newJson.componentProps=_extends({},newJson.componentProps,{value:null})}if(((_newJson$componentNam2=newJson.componentName)==null?void 0:_newJson$componentNam2.toLowerCase())==="search"&&(_newJson$componentPro=newJson.componentProps)!=null&&_newJson$componentPro.searchText){newJson.componentProps=_extends({},newJson.componentProps,{searchText:null})}if(((_newJson$componentNam3=newJson.componentName)==null?void 0:_newJson$componentNam3.toLowerCase())==="table"&&((_newJson$componentPro2=newJson.componentProps)!=null&&_newJson$componentPro2.sortColumn||(_newJson$componentPro3=newJson.componentProps)!=null&&_newJson$componentPro3.sortDirection)){newJson.componentProps=_extends({},newJson.componentProps,{sortColumn:null,sortDirection:null})}for(var _i3=0,_Object$entries3=Object.entries(newJson);_i3<_Object$entries3.length;_i3++){var _Object$entries3$_i=_Object$entries3[_i3],_key=_Object$entries3$_i[0],value=_Object$entries3$_i[1];newJson[_key]=replacePlaceholders(value,mapping)}return newJson}return json}export function getUpdatedUiJson(uiJson,finalJson){var placeholderMapping={};extractPlaceholders(uiJson,placeholderMapping);var cloneJson=JSON.parse(JSON.stringify(finalJson));var newFinalJson=replacePlaceholders(cloneJson,placeholderMapping);return _extends({},newFinalJson,{styles:uiJson.styles||[]})}
1
+ import _extends from"@babel/runtime/helpers/extends";/* eslint-disable @typescript-eslint/no-explicit-any */function isPlaceholder(obj){return typeof obj==="object"&&obj!==null&&obj.name==="__peak_placeholder"}function extractPlaceholders(json,mapping,parentId){if(parentId===void 0){parentId=undefined}var updatedParentId=parentId;if(json===null){return}else if(Array.isArray(json)){json.forEach(function(item){return extractPlaceholders(item,mapping,updatedParentId)});return}else if(typeof json==="object"){if(json.id){updatedParentId=json.id}for(var _i=0,_Object$entries=Object.entries(json);_i<_Object$entries.length;_i++){var _Object$entries$_i=_Object$entries[_i],key=_Object$entries$_i[0],value=_Object$entries$_i[1];if(isPlaceholder(value)){if(updatedParentId){mapping[updatedParentId]=mapping[updatedParentId]||{};mapping[updatedParentId][key]=value}}else if(typeof value==="object"){extractPlaceholders(value,mapping,updatedParentId)}}}}function containsPlaceholder(obj,key){var value=obj==null?void 0:obj[key];return value!==null&&value!==""}function replacePlaceholders(json,mapping){if(json===null){return json}if(Array.isArray(json)){return json.map(function(item){return replacePlaceholders(item,mapping)})}if(typeof json==="object"){var _newJson$componentNam,_newJson$componentNam2,_newJson$componentPro,_newJson$componentNam3,_newJson$componentPro2,_newJson$componentPro3;var newJson=_extends({},json);if(newJson.id&&mapping[newJson.id]){var hasFooterContent=containsPlaceholder(newJson,"footerContent");var hasFooterIcon=containsPlaceholder(newJson,"footerIcon");var hasFooterClass=containsPlaceholder(newJson,"footerClass");for(var _i2=0,_Object$entries2=Object.entries(mapping[newJson.id]);_i2<_Object$entries2.length;_i2++){var _Object$entries2$_i=_Object$entries2[_i2],key=_Object$entries2$_i[0],placeholderValue=_Object$entries2$_i[1];if(key in newJson){if(key==="footerContent"&&(!hasFooterContent||newJson.isEmptied)||key==="footerIcon"&&(!hasFooterIcon||newJson.isEmptied)||key==="footerClass"&&(!hasFooterClass||newJson.isEmptied)){continue}newJson[key]=placeholderValue}}}if(((_newJson$componentNam=newJson.componentName)==null?void 0:_newJson$componentNam.toLowerCase())==="filter"){newJson.componentProps=_extends({},newJson.componentProps,{value:null})}if(((_newJson$componentNam2=newJson.componentName)==null?void 0:_newJson$componentNam2.toLowerCase())==="search"&&(_newJson$componentPro=newJson.componentProps)!=null&&_newJson$componentPro.searchText){newJson.componentProps=_extends({},newJson.componentProps,{searchText:null})}if(((_newJson$componentNam3=newJson.componentName)==null?void 0:_newJson$componentNam3.toLowerCase())==="table"&&((_newJson$componentPro2=newJson.componentProps)!=null&&_newJson$componentPro2.sortColumn||(_newJson$componentPro3=newJson.componentProps)!=null&&_newJson$componentPro3.sortDirection)){newJson.componentProps=_extends({},newJson.componentProps,{sortColumn:null,sortDirection:null})}for(var _i3=0,_Object$entries3=Object.entries(newJson);_i3<_Object$entries3.length;_i3++){var _Object$entries3$_i=_Object$entries3[_i3],_key=_Object$entries3$_i[0],value=_Object$entries3$_i[1];newJson[_key]=replacePlaceholders(value,mapping)}return newJson}return json}export function getUpdatedUiJson(uiJson,finalJson){var placeholderMapping={};extractPlaceholders(uiJson,placeholderMapping);var cloneJson=JSON.parse(JSON.stringify(finalJson));var newFinalJson=replacePlaceholders(cloneJson,placeholderMapping);return _extends({},newFinalJson,{styles:uiJson.styles||[]})}
2
2
  //# sourceMappingURL=merge-json.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge-json.js","names":["isPlaceholder","obj","name","extractPlaceholders","json","mapping","parentId","undefined","updatedParentId","Array","isArray","forEach","item","id","_i","_Object$entries","Object","entries","length","_Object$entries$_i","key","value","replacePlaceholders","map","_newJson$componentNam","_newJson$componentNam2","_newJson$componentPro","_newJson$componentNam3","_newJson$componentPro2","_newJson$componentPro3","newJson","_extends","_i2","_Object$entries2","_Object$entries2$_i","placeholderValue","componentName","toLowerCase","componentProps","searchText","sortColumn","sortDirection","_i3","_Object$entries3","_Object$entries3$_i","getUpdatedUiJson","uiJson","finalJson","placeholderMapping","cloneJson","JSON","parse","stringify","newFinalJson","styles"],"sources":["../../src/helpers/merge-json.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nfunction isPlaceholder(obj: Record<string, any>) {\n return typeof obj === 'object' && obj !== null && obj.name === '__peak_placeholder';\n}\n\nfunction extractPlaceholders(\n json: Record<string, any>,\n mapping: Record<string, any>,\n parentId: string | undefined = undefined,\n) {\n let updatedParentId = parentId;\n\n if (json === null) {\n return;\n } else if (Array.isArray(json)) {\n json.forEach((item) => extractPlaceholders(item, mapping, updatedParentId));\n\n return;\n } else if (typeof json === 'object') {\n if (json.id) {\n updatedParentId = json.id;\n }\n\n for (const [key, value] of Object.entries(json)) {\n if (isPlaceholder(value)) {\n if (updatedParentId) {\n mapping[updatedParentId] = mapping[updatedParentId] || {};\n mapping[updatedParentId][key] = value;\n }\n } else if (typeof value === 'object') {\n extractPlaceholders(value, mapping, updatedParentId);\n }\n }\n }\n}\n\nfunction replacePlaceholders(\n json: Record<string, any>,\n mapping: Record<string, any>,\n): Record<string, any> {\n if (json === null) {\n return json;\n }\n\n if (Array.isArray(json)) {\n return json.map((item) => replacePlaceholders(item, mapping));\n }\n\n if (typeof json === 'object') {\n const newJson = { ...json };\n\n if (newJson.id && mapping[newJson.id]) {\n for (const [key, placeholderValue] of Object.entries(mapping[newJson.id])) {\n if (key in newJson) {\n newJson[key] = placeholderValue;\n }\n }\n }\n\n if (newJson.componentName?.toLowerCase() === 'filter') {\n newJson.componentProps = {\n ...newJson.componentProps,\n value: null,\n };\n }\n\n if (newJson.componentName?.toLowerCase() === 'search' && newJson.componentProps?.searchText) {\n newJson.componentProps = {\n ...newJson.componentProps,\n searchText: null,\n };\n }\n\n if (\n newJson.componentName?.toLowerCase() === 'table' &&\n (newJson.componentProps?.sortColumn || newJson.componentProps?.sortDirection)\n ) {\n newJson.componentProps = {\n ...newJson.componentProps,\n sortColumn: null,\n sortDirection: null,\n };\n }\n\n for (const [key, value] of Object.entries(newJson)) {\n newJson[key] = replacePlaceholders(value, mapping);\n }\n\n return newJson;\n }\n\n return json;\n}\n\nexport function getUpdatedUiJson(uiJson: Record<string, any>, finalJson: Record<string, any>) {\n const placeholderMapping = {};\n extractPlaceholders(uiJson, placeholderMapping);\n\n const cloneJson = JSON.parse(JSON.stringify(finalJson));\n const newFinalJson = replacePlaceholders(cloneJson, placeholderMapping);\n\n return {\n ...newFinalJson,\n styles: uiJson.styles || [],\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"merge-json.js","names":["isPlaceholder","obj","name","extractPlaceholders","json","mapping","parentId","undefined","updatedParentId","Array","isArray","forEach","item","id","_i","_Object$entries","Object","entries","length","_Object$entries$_i","key","value","containsPlaceholder","replacePlaceholders","map","_newJson$componentNam","_newJson$componentNam2","_newJson$componentPro","_newJson$componentNam3","_newJson$componentPro2","_newJson$componentPro3","newJson","_extends","hasFooterContent","hasFooterIcon","hasFooterClass","_i2","_Object$entries2","_Object$entries2$_i","placeholderValue","isEmptied","componentName","toLowerCase","componentProps","searchText","sortColumn","sortDirection","_i3","_Object$entries3","_Object$entries3$_i","getUpdatedUiJson","uiJson","finalJson","placeholderMapping","cloneJson","JSON","parse","stringify","newFinalJson","styles"],"sources":["../../src/helpers/merge-json.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nfunction isPlaceholder(obj: Record<string, any>) {\n return typeof obj === 'object' && obj !== null && obj.name === '__peak_placeholder';\n}\n\nfunction extractPlaceholders(\n json: Record<string, any>,\n mapping: Record<string, any>,\n parentId: string | undefined = undefined,\n) {\n let updatedParentId = parentId;\n\n if (json === null) {\n return;\n } else if (Array.isArray(json)) {\n json.forEach((item) => extractPlaceholders(item, mapping, updatedParentId));\n\n return;\n } else if (typeof json === 'object') {\n if (json.id) {\n updatedParentId = json.id;\n }\n\n for (const [key, value] of Object.entries(json)) {\n if (isPlaceholder(value)) {\n if (updatedParentId) {\n mapping[updatedParentId] = mapping[updatedParentId] || {};\n mapping[updatedParentId][key] = value;\n }\n } else if (typeof value === 'object') {\n extractPlaceholders(value, mapping, updatedParentId);\n }\n }\n }\n}\n\nfunction containsPlaceholder(obj: Record<string, any>, key: string) {\n const value = obj?.[key];\n\n return value !== null && value !== '';\n}\n\nfunction replacePlaceholders(\n json: Record<string, any>,\n mapping: Record<string, any>,\n): Record<string, any> {\n if (json === null) {\n return json;\n }\n\n if (Array.isArray(json)) {\n return json.map((item) => replacePlaceholders(item, mapping));\n }\n\n if (typeof json === 'object') {\n const newJson = { ...json };\n\n if (newJson.id && mapping[newJson.id]) {\n const hasFooterContent = containsPlaceholder(newJson, 'footerContent');\n const hasFooterIcon = containsPlaceholder(newJson, 'footerIcon');\n const hasFooterClass = containsPlaceholder(newJson, 'footerClass');\n\n for (const [key, placeholderValue] of Object.entries(mapping[newJson.id])) {\n if (key in newJson) {\n if (\n (key === 'footerContent' && (!hasFooterContent || newJson.isEmptied)) ||\n (key === 'footerIcon' && (!hasFooterIcon || newJson.isEmptied)) ||\n (key === 'footerClass' && (!hasFooterClass || newJson.isEmptied))\n ) {\n continue;\n }\n\n newJson[key] = placeholderValue;\n }\n }\n }\n\n if (newJson.componentName?.toLowerCase() === 'filter') {\n newJson.componentProps = {\n ...newJson.componentProps,\n value: null,\n };\n }\n\n if (newJson.componentName?.toLowerCase() === 'search' && newJson.componentProps?.searchText) {\n newJson.componentProps = {\n ...newJson.componentProps,\n searchText: null,\n };\n }\n\n if (\n newJson.componentName?.toLowerCase() === 'table' &&\n (newJson.componentProps?.sortColumn || newJson.componentProps?.sortDirection)\n ) {\n newJson.componentProps = {\n ...newJson.componentProps,\n sortColumn: null,\n sortDirection: null,\n };\n }\n\n for (const [key, value] of Object.entries(newJson)) {\n newJson[key] = replacePlaceholders(value, mapping);\n }\n\n return newJson;\n }\n\n return json;\n}\n\nexport function getUpdatedUiJson(uiJson: Record<string, any>, finalJson: Record<string, any>) {\n const placeholderMapping = {};\n extractPlaceholders(uiJson, placeholderMapping);\n\n const cloneJson = JSON.parse(JSON.stringify(finalJson));\n const newFinalJson = replacePlaceholders(cloneJson, placeholderMapping);\n\n return {\n ...newFinalJson,\n styles: uiJson.styles || [],\n };\n}\n"],"mappings":"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","ignoreList":[]}
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.4.34-rc.2",
5
+ "version": "1.4.34",
6
6
  "description": "",
7
7
  "dependencies": {
8
8
  "@emotion/react": "^11.11.4",
@@ -59,4 +59,4 @@
59
59
  "types": "index.d.ts",
60
60
  "module": "index.js",
61
61
  "sideEffects": false
62
- }
62
+ }
@@ -1,4 +1,4 @@
1
1
  import _extends from"@babel/runtime/helpers/extends";import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _regeneratorRuntime from"@babel/runtime/regenerator";import React,{useState,useEffect}from"react";import{CustomModal}from"./custom-modal";import{Copy,Check,ChevronDown,ChevronUp}from"lucide-react";import{formatQueryHeading}from"./query-heading-formatter";import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";function CopyButton(_ref){var onClick=_ref.onClick,isCopied=_ref.isCopied,_ref$variant=_ref.variant,variant=_ref$variant===void 0?"default":_ref$variant;var baseClasses="flex items-center gap-1 px-2 py-1 text-xs border rounded transition-colors";var variantClasses=variant==="light"?"bg-gray-50 border-gray-300 hover:bg-gray-100":"bg-gray-100 border-gray-300 hover:bg-gray-200";return/*#__PURE__*/_jsx("button",{onClick:onClick,className:baseClasses+" "+variantClasses,type:"button",children:isCopied?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(Check,{className:"w-3 h-3 text-green-600"}),/*#__PURE__*/_jsx("span",{className:"text-green-600",children:"Copied!"})]}):/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(Copy,{className:"w-3 h-3 text-gray-600"}),/*#__PURE__*/_jsx("span",{className:"text-gray-600",children:"Copy"})]})})}function ContentText(_ref2){var children=_ref2.children,_ref2$hasOverflowHand=_ref2.hasOverflowHandling,hasOverflowHandling=_ref2$hasOverflowHand===void 0?true:_ref2$hasOverflowHand;var overflowClasses=hasOverflowHandling?"overflow-hidden break-words":"";return/*#__PURE__*/_jsx("pre",{className:"whitespace-pre-wrap leading-relaxed text-xs text-gray-700 m-0 p-0 "+overflowClasses,children:children})}function ContentBlock(_ref3){var title=_ref3.title,children=_ref3.children,copyContent=_ref3.copyContent,copyId=_ref3.copyId,copied=_ref3.copied,onCopy=_ref3.onCopy,_ref3$variant=_ref3.variant,variant=_ref3$variant===void 0?"bordered":_ref3$variant,_ref3$copyButtonVaria=_ref3.copyButtonVariant,copyButtonVariant=_ref3$copyButtonVaria===void 0?"default":_ref3$copyButtonVaria;var containerClasses=variant==="bordered"?"rounded-lg p-3":"bg-white border border-gray-200 rounded-lg p-4";var containerStyle=variant==="bordered"?{border:"1px solid #E9EAF5"}:{};var titleClasses=variant==="bordered"?"text-sm font-medium text-gray-600":"font-semibold text-sm text-gray-500 m-0";return/*#__PURE__*/_jsxs("div",{className:containerClasses,style:containerStyle,children:[/*#__PURE__*/_jsxs("div",{className:"flex justify-between items-start mb-2",children:[/*#__PURE__*/_jsx("span",{className:titleClasses,children:title}),copyContent&&/*#__PURE__*/_jsx(CopyButton,{onClick:function onClick(){return onCopy(copyContent,copyId)},isCopied:copied[copyId]||false,variant:copyButtonVariant})]}),children]})}export function QueryDetailsModal(_ref4){var isOpen=_ref4.isOpen,onClose=_ref4.onClose,isLoading=_ref4.isLoading,error=_ref4.error,sqlQuery=_ref4.sqlQuery,_ref4$queryHeadings=_ref4.queryHeadings,queryHeadings=_ref4$queryHeadings===void 0?[]:_ref4$queryHeadings,_ref4$tableButtonExpl=_ref4.tableButtonExplanations,tableButtonExplanations=_ref4$tableButtonExpl===void 0?[]:_ref4$tableButtonExpl,onRetry=_ref4.onRetry;var _useState=useState({}),copied=_useState[0],setCopied=_useState[1];var _useState2=useState({}),expandedButtons=_useState2[0],setExpandedButtons=_useState2[1];// Reset expanded state when modal closes
2
2
  useEffect(function(){if(!isOpen){setExpandedButtons({})}},[isOpen]);function copyToClipboard(_x,_x2){return _copyToClipboard.apply(this,arguments)}function _copyToClipboard(){_copyToClipboard=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(queryToCopy,copyId){var textToCopy,id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:textToCopy=queryToCopy;if(!textToCopy){if(Array.isArray(sqlQuery)){textToCopy=sqlQuery.filter(function(q){return q&&typeof q==="string"}).join("\n\n-- Next Query --\n\n")}else if(typeof sqlQuery==="string"){textToCopy=sqlQuery}else{textToCopy=""}}if(textToCopy){_context.next=4;break}return _context.abrupt("return");case 4:id=copyId||"main";_context.prev=5;_context.next=8;return navigator.clipboard.writeText(textToCopy);case 8:setCopied(function(prev){var _extends3;return _extends({},prev,(_extends3={},_extends3[id]=true,_extends3))});setTimeout(function(){return setCopied(function(prev){var _extends4;return _extends({},prev,(_extends4={},_extends4[id]=false,_extends4))})},2000);_context.next=14;break;case 12:_context.prev=12;_context.t0=_context["catch"](5);case 14:case"end":return _context.stop()}},_callee,null,[[5,12]])}));return _copyToClipboard.apply(this,arguments)}function toggleButtonExpansion(buttonIndex){setExpandedButtons(function(prev){var _extends2;return _extends({},prev,(_extends2={},_extends2[buttonIndex]=!prev[buttonIndex],_extends2))})}function renderTableButtonExplanations(){if(!tableButtonExplanations||tableButtonExplanations.length===0){return null}function hasValidJsonBody(jsonBody){return jsonBody!==null&&jsonBody!==undefined&&jsonBody!==""}function hasValidFormFields(formFields){return formFields!==null&&formFields!==undefined&&Object.keys(formFields||{}).length>0}return/*#__PURE__*/_jsx("div",{className:"mb-6",children:tableButtonExplanations.map(function(button,index){var _button$buttonStyle,_button$buttonStyle2,_button$buttonStyle3;return/*#__PURE__*/_jsxs("div",{className:"mb-3 border border-gray-200 rounded-lg",children:[/*#__PURE__*/_jsxs("div",{className:"w-full px-4 py-3 flex items-center justify-between rounded-lg",children:[/*#__PURE__*/_jsxs("div",{className:"flex items-center",children:[/*#__PURE__*/_jsx("button",{onClick:function onClick(){return toggleButtonExpansion(index)},className:button.buttonClassName||"flex items-center justify-center px-3 rounded text-xs font-medium",style:_extends({height:"35px",width:"fit-content",minWidth:"fit-content",backgroundColor:(_button$buttonStyle=button.buttonStyle)==null?void 0:_button$buttonStyle.backgroundColor,color:(_button$buttonStyle2=button.buttonStyle)==null?void 0:_button$buttonStyle2.color,border:(_button$buttonStyle3=button.buttonStyle)==null?void 0:_button$buttonStyle3.border},button.buttonStyle||{},button.buttonStyle||{},{display:"flex",alignItems:"center",justifyContent:"center"}),children:button.action}),/*#__PURE__*/_jsx("div",{className:"ml-3 flex flex-col",children:button.operationSummary&&/*#__PURE__*/_jsx("span",{className:"text-xs text-gray-700 font-medium",children:button.operationSummary})})]}),expandedButtons[index]?/*#__PURE__*/_jsx(ChevronUp,{className:"w-4 h-4 text-gray-500 transition-transform cursor-pointer",onClick:function onClick(){return toggleButtonExpansion(index)}}):/*#__PURE__*/_jsx(ChevronDown,{className:"w-4 h-4 text-gray-500 transition-transform cursor-pointer",onClick:function onClick(){return toggleButtonExpansion(index)}})]}),expandedButtons[index]&&/*#__PURE__*/_jsx("div",{className:"px-4 pb-3 border-t border-gray-200",children:/*#__PURE__*/_jsxs("div",{className:"mt-2 space-y-3",children:[button.operationDescription&&/*#__PURE__*/_jsx(ContentBlock,{title:"Description",copyId:"description-"+index,copied:copied,onCopy:copyToClipboard,variant:"bordered",children:/*#__PURE__*/_jsx(ContentText,{children:button.operationDescription})}),(button.requestUrl||button.explanation)&&/*#__PURE__*/_jsx(ContentBlock,{title:"URL",copyContent:button.requestUrl||button.explanation,copyId:"url-"+index,copied:copied,onCopy:copyToClipboard,variant:"bordered",children:/*#__PURE__*/_jsx(ContentText,{children:button.requestUrl||button.explanation})}),(hasValidJsonBody(button.jsonBody)||hasValidFormFields(button.formFields))&&/*#__PURE__*/_jsx(ContentBlock,{title:"Payload",copyContent:JSON.stringify(hasValidJsonBody(button.jsonBody)?button.jsonBody:button.formFields,null,2),copyId:"payload-"+index,copied:copied,onCopy:copyToClipboard,variant:"bordered",children:/*#__PURE__*/_jsx(ContentText,{children:hasValidJsonBody(button.jsonBody)?JSON.stringify(button.jsonBody,null,2):JSON.stringify(button.formFields,null,2)})})]})})]},index)})})}function renderModalContent(){if(isLoading){return/*#__PURE__*/_jsxs("div",{className:"flex flex-col items-center justify-center py-12",children:[/*#__PURE__*/_jsx("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-purple-600 mb-4"}),/*#__PURE__*/_jsx("span",{className:"text-xs text-gray-600",children:"Fetching query details from semantic layer..."}),/*#__PURE__*/_jsx("span",{className:"text-xs text-gray-400 mt-2",children:"This may take a few moments"})]})}if(error){return/*#__PURE__*/_jsxs("div",{className:"text-red-600 p-4 bg-red-50 rounded-lg border border-red-200 m-6",children:[/*#__PURE__*/_jsx("p",{className:"font-medium mb-2 text-xs",children:"Unable to fetch query details"}),/*#__PURE__*/_jsx("p",{className:"text-xs mb-3",children:error}),/*#__PURE__*/_jsx("button",{onClick:onRetry,className:"px-4 py-2 bg-red-100 hover:bg-red-200 rounded text-xs font-medium transition-colors",type:"button",children:"Retry"})]})}if(!sqlQuery||Array.isArray(sqlQuery)&&sqlQuery.length===0){return/*#__PURE__*/_jsx("div",{className:"text-gray-600 p-6",children:/*#__PURE__*/_jsx("p",{className:"text-xs",children:"No query details available"})})}// Handle multiple queries
3
- if(Array.isArray(sqlQuery)){return/*#__PURE__*/_jsxs("div",{className:"p-6 space-y-4",children:[sqlQuery.filter(function(query){return query&&typeof query==="string"&&query.trim()}).map(function(query,index){var rawHeading=queryHeadings[index]||"Query "+(index+1);var heading=formatQueryHeading(rawHeading);return/*#__PURE__*/_jsx(ContentBlock,{title:heading,copyContent:query,copyId:"query-"+index,copied:copied,onCopy:copyToClipboard,variant:"default",copyButtonVariant:"light",children:/*#__PURE__*/_jsx(ContentText,{hasOverflowHandling:false,children:query})},index)}),renderTableButtonExplanations()]})}return/*#__PURE__*/_jsxs("div",{className:"p-6 space-y-4",children:[/*#__PURE__*/_jsx(ContentBlock,{title:formatQueryHeading(queryHeadings[0]||"Query details"),copyContent:typeof sqlQuery==="string"?sqlQuery:"",copyId:"single",copied:copied,onCopy:copyToClipboard,variant:"default",copyButtonVariant:"light",children:/*#__PURE__*/_jsx(ContentText,{hasOverflowHandling:false,children:sqlQuery})}),renderTableButtonExplanations()]})}return/*#__PURE__*/_jsx(CustomModal,{isOpen:isOpen,onClose:onClose,title:"bla ",children:renderModalContent()})}export default QueryDetailsModal;
3
+ if(Array.isArray(sqlQuery)){return/*#__PURE__*/_jsxs("div",{className:"p-6 space-y-4",children:[sqlQuery.filter(function(query){return query&&typeof query==="string"&&query.trim()}).map(function(query,index){var rawHeading=queryHeadings[index]||"Query "+(index+1);var heading=formatQueryHeading(rawHeading);return/*#__PURE__*/_jsx(ContentBlock,{title:heading,copyContent:query,copyId:"query-"+index,copied:copied,onCopy:copyToClipboard,variant:"default",copyButtonVariant:"light",children:/*#__PURE__*/_jsx(ContentText,{hasOverflowHandling:false,children:query})},index)}),renderTableButtonExplanations()]})}return/*#__PURE__*/_jsxs("div",{className:"p-6 space-y-4",children:[/*#__PURE__*/_jsx(ContentBlock,{title:formatQueryHeading(queryHeadings[0]||"Query details"),copyContent:typeof sqlQuery==="string"?sqlQuery:"",copyId:"single",copied:copied,onCopy:copyToClipboard,variant:"default",copyButtonVariant:"light",children:/*#__PURE__*/_jsx(ContentText,{hasOverflowHandling:false,children:sqlQuery})}),renderTableButtonExplanations()]})}return/*#__PURE__*/_jsx(CustomModal,{isOpen:isOpen,onClose:onClose,title:"How was this metric calculated?",children:renderModalContent()})}export default QueryDetailsModal;
4
4
  //# sourceMappingURL=query-details-modal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-details-modal.js","names":["React","useState","useEffect","CustomModal","Copy","Check","ChevronDown","ChevronUp","formatQueryHeading","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","CopyButton","_ref","onClick","isCopied","_ref$variant","variant","baseClasses","variantClasses","className","type","children","ContentText","_ref2","_ref2$hasOverflowHand","hasOverflowHandling","overflowClasses","ContentBlock","_ref3","title","copyContent","copyId","copied","onCopy","_ref3$variant","_ref3$copyButtonVaria","copyButtonVariant","containerClasses","containerStyle","border","titleClasses","style","QueryDetailsModal","_ref4","isOpen","onClose","isLoading","error","sqlQuery","_ref4$queryHeadings","queryHeadings","_ref4$tableButtonExpl","tableButtonExplanations","onRetry","_useState","setCopied","_useState2","expandedButtons","setExpandedButtons","copyToClipboard","_x","_x2","_copyToClipboard","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","queryToCopy","textToCopy","id","wrap","_callee$","_context","prev","next","Array","isArray","filter","q","join","abrupt","navigator","clipboard","writeText","_extends3","_extends","setTimeout","_extends4","t0","stop","toggleButtonExpansion","buttonIndex","_extends2","renderTableButtonExplanations","length","hasValidJsonBody","jsonBody","undefined","hasValidFormFields","formFields","Object","keys","map","button","index","_button$buttonStyle","_button$buttonStyle2","_button$buttonStyle3","buttonClassName","height","width","minWidth","backgroundColor","buttonStyle","color","display","alignItems","justifyContent","action","operationSummary","operationDescription","requestUrl","explanation","JSON","stringify","renderModalContent","query","trim","rawHeading","heading"],"sources":["../../../src/plugins/helpers/query-details-modal.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { CustomModal } from './custom-modal';\nimport { Copy, Check, ChevronDown, ChevronUp, X } from 'lucide-react';\nimport { formatQueryHeading } from './query-heading-formatter';\n\ntype CopyButtonProps = {\n onClick: () => void;\n isCopied: boolean;\n variant?: 'default' | 'light';\n};\n\nfunction CopyButton({ onClick, isCopied, variant = 'default' }: CopyButtonProps) {\n const baseClasses = \"flex items-center gap-1 px-2 py-1 text-xs border rounded transition-colors\";\n const variantClasses = variant === 'light' \n ? \"bg-gray-50 border-gray-300 hover:bg-gray-100\"\n : \"bg-gray-100 border-gray-300 hover:bg-gray-200\";\n\n return (\n <button\n onClick={onClick}\n className={`${baseClasses} ${variantClasses}`}\n type=\"button\"\n >\n {isCopied ? (\n <>\n <Check className=\"w-3 h-3 text-green-600\" />\n <span className=\"text-green-600\">Copied!</span>\n </>\n ) : (\n <>\n <Copy className=\"w-3 h-3 text-gray-600\" />\n <span className=\"text-gray-600\">Copy</span>\n </>\n )}\n </button>\n );\n}\n\ntype ContentTextProps = {\n children: React.ReactNode;\n hasOverflowHandling?: boolean;\n};\n\nfunction ContentText({ children, hasOverflowHandling = true }: ContentTextProps) {\n const overflowClasses = hasOverflowHandling ? \"overflow-hidden break-words\" : \"\";\n\n return (\n <pre className={`whitespace-pre-wrap leading-relaxed text-xs text-gray-700 m-0 p-0 ${overflowClasses}`}>\n {children}\n </pre>\n );\n}\n\ntype ContentBlockProps = {\n title: string;\n children: React.ReactNode;\n copyContent?: string;\n copyId: string;\n copied: Record<string, boolean>;\n onCopy: (content: string, id: string) => void;\n variant?: 'default' | 'bordered';\n copyButtonVariant?: 'default' | 'light';\n};\n\nfunction ContentBlock({ \n title, \n children, \n copyContent, \n copyId, \n copied, \n onCopy,\n variant = 'bordered',\n copyButtonVariant = 'default'\n}: ContentBlockProps) {\n const containerClasses = variant === 'bordered' \n ? \"rounded-lg p-3\"\n : \"bg-white border border-gray-200 rounded-lg p-4\";\n \n const containerStyle = variant === 'bordered' \n ? { border: '1px solid #E9EAF5' }\n : {};\n\n const titleClasses = variant === 'bordered'\n ? \"text-sm font-medium text-gray-600\"\n : \"font-semibold text-sm text-gray-500 m-0\";\n\n return (\n <div className={containerClasses} style={containerStyle}>\n <div className=\"flex justify-between items-start mb-2\">\n <span className={titleClasses}>{title}</span>\n {copyContent && (\n <CopyButton\n onClick={() => onCopy(copyContent, copyId)}\n isCopied={copied[copyId] || false}\n variant={copyButtonVariant}\n />\n )}\n </div>\n {children}\n </div>\n );\n}\n\ntype QueryDetailsModalProps = {\n isOpen: boolean;\n onClose: () => void;\n isLoading: boolean;\n error: string;\n sqlQuery: string | string[];\n queryHeadings?: string[];\n tableButtonExplanations?: Array<{\n action: string, \n explanation: string, \n operationSummary?: string,\n operationDescription?: string,\n buttonClassName?: string, \n buttonStyle?: Record<string, unknown>,\n formFields?: Record<string, unknown>;\n jsonBody?: unknown;\n requestUrl?: string;\n }>;\n onRetry: () => void;\n};\n\nexport function QueryDetailsModal({\n isOpen,\n onClose,\n isLoading,\n error,\n sqlQuery,\n queryHeadings = [],\n tableButtonExplanations = [],\n onRetry\n}: QueryDetailsModalProps) {\n const [copied, setCopied] = useState<{ [key: string]: boolean }>({});\n const [expandedButtons, setExpandedButtons] = useState<{ [key: string]: boolean }>({});\n\n // Reset expanded state when modal closes\n useEffect(() => {\n if (!isOpen) {\n setExpandedButtons({});\n }\n }, [isOpen]);\n\n async function copyToClipboard(queryToCopy?: string, copyId?: string) {\n let textToCopy = queryToCopy;\n \n if (!textToCopy) {\n if (Array.isArray(sqlQuery)) {\n textToCopy = sqlQuery.filter(q => q && typeof q === 'string').join('\\n\\n-- Next Query --\\n\\n');\n } else if (typeof sqlQuery === 'string') {\n textToCopy = sqlQuery;\n } else {\n textToCopy = '';\n }\n }\n \n if (!textToCopy) {\n return;\n }\n \n const id = copyId || 'main';\n \n try {\n await navigator.clipboard.writeText(textToCopy);\n setCopied(prev => ({ ...prev, [id]: true }));\n setTimeout(() => setCopied(prev => ({ ...prev, [id]: false })), 2000);\n } catch (err) {\n // Silently fail if clipboard API is not available\n }\n }\n\n function toggleButtonExpansion(buttonIndex: number) {\n setExpandedButtons(prev => ({\n ...prev,\n [buttonIndex]: !prev[buttonIndex]\n }));\n }\n\n function renderTableButtonExplanations() {\n if (!tableButtonExplanations || tableButtonExplanations.length === 0) {\n return null;\n }\n\n function hasValidJsonBody(jsonBody: unknown): boolean {\n return jsonBody !== null && jsonBody !== undefined && jsonBody !== '';\n }\n\n function hasValidFormFields(formFields: Record<string, unknown> | undefined): boolean {\n return formFields !== null && formFields !== undefined && Object.keys(formFields || {}).length > 0;\n }\n\n return (\n <div className=\"mb-6\">\n {tableButtonExplanations.map((button, index) => (\n <div key={index} className=\"mb-3 border border-gray-200 rounded-lg\">\n <div className=\"w-full px-4 py-3 flex items-center justify-between rounded-lg\">\n <div className=\"flex items-center\">\n <button\n onClick={() => toggleButtonExpansion(index)}\n className={button.buttonClassName || \"flex items-center justify-center px-3 rounded text-xs font-medium\"}\n style={{\n height: '35px',\n width: 'fit-content',\n minWidth: 'fit-content',\n backgroundColor: (button.buttonStyle?.backgroundColor as string),\n color: (button.buttonStyle?.color as string),\n border: (button.buttonStyle?.border as string),\n ...(button.buttonStyle as React.CSSProperties || {})\n , ...button.buttonStyle as React.CSSProperties || {},\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }}\n >\n {button.action}\n </button>\n <div className=\"ml-3 flex flex-col\">\n {button.operationSummary && (\n <span className=\"text-xs text-gray-700 font-medium\">\n {button.operationSummary}\n </span>\n )}\n </div>\n </div>\n {expandedButtons[index] ? (\n <ChevronUp \n className=\"w-4 h-4 text-gray-500 transition-transform cursor-pointer\"\n onClick={() => toggleButtonExpansion(index)}\n />\n ) : (\n <ChevronDown \n className=\"w-4 h-4 text-gray-500 transition-transform cursor-pointer\"\n onClick={() => toggleButtonExpansion(index)}\n />\n )}\n </div>\n \n {expandedButtons[index] && (\n <div className=\"px-4 pb-3 border-t border-gray-200\">\n <div className=\"mt-2 space-y-3\">\n {/* Description Block */}\n {button.operationDescription && (\n <ContentBlock\n title=\"Description\"\n copyId={`description-${index}`}\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"bordered\"\n >\n <ContentText>\n {button.operationDescription}\n </ContentText>\n </ContentBlock>\n )}\n\n {(button.requestUrl || button.explanation) && (\n <ContentBlock\n title=\"URL\"\n copyContent={button.requestUrl || button.explanation}\n copyId={`url-${index}`}\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"bordered\"\n >\n <ContentText>\n {button.requestUrl || button.explanation}\n </ContentText>\n </ContentBlock>\n )}\n \n {(hasValidJsonBody(button.jsonBody) || hasValidFormFields(button.formFields)) && (\n <ContentBlock\n title=\"Payload\"\n copyContent={JSON.stringify(\n hasValidJsonBody(button.jsonBody) ? button.jsonBody : button.formFields, \n null, \n 2\n )}\n copyId={`payload-${index}`}\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"bordered\"\n >\n <ContentText>\n {hasValidJsonBody(button.jsonBody) \n ? JSON.stringify(button.jsonBody, null, 2)\n : JSON.stringify(button.formFields, null, 2)}\n </ContentText>\n </ContentBlock>\n )}\n </div>\n </div>\n )}\n </div>\n ))}\n </div>\n );\n }\n\n function renderModalContent() {\n if (isLoading) {\n return (\n <div className=\"flex flex-col items-center justify-center py-12\">\n <div className=\"animate-spin rounded-full h-12 w-12 border-b-2 border-purple-600 mb-4\"></div>\n <span className=\"text-xs text-gray-600\">Fetching query details from semantic layer...</span>\n <span className=\"text-xs text-gray-400 mt-2\">This may take a few moments</span>\n </div>\n );\n }\n\n if (error) {\n return (\n <div className=\"text-red-600 p-4 bg-red-50 rounded-lg border border-red-200 m-6\">\n <p className=\"font-medium mb-2 text-xs\">Unable to fetch query details</p>\n <p className=\"text-xs mb-3\">{error}</p>\n <button \n onClick={onRetry}\n className=\"px-4 py-2 bg-red-100 hover:bg-red-200 rounded text-xs font-medium transition-colors\"\n type=\"button\"\n >\n Retry\n </button>\n </div>\n );\n }\n\n if (!sqlQuery || (Array.isArray(sqlQuery) && sqlQuery.length === 0)) {\n return (\n <div className=\"text-gray-600 p-6\">\n <p className=\"text-xs\">No query details available</p>\n </div>\n );\n }\n\n // Handle multiple queries\n if (Array.isArray(sqlQuery)) {\n return (\n <div className=\"p-6 space-y-4\">\n {sqlQuery\n .filter(query => query && typeof query === 'string' && query.trim())\n .map((query, index) => {\n\n const rawHeading = queryHeadings[index] || `Query ${index + 1}`;\n const heading = formatQueryHeading(rawHeading);\n\n return (\n <ContentBlock\n key={index}\n title={heading}\n copyContent={query}\n copyId={`query-${index}`}\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"default\"\n copyButtonVariant=\"light\"\n >\n <ContentText hasOverflowHandling={false}>\n {query}\n </ContentText>\n </ContentBlock>\n );\n })}\n {renderTableButtonExplanations()}\n </div>\n );\n }\n\n return (\n <div className=\"p-6 space-y-4\">\n <ContentBlock\n title={formatQueryHeading(queryHeadings[0] || \"Query details\")}\n copyContent={typeof sqlQuery === 'string' ? sqlQuery : ''}\n copyId=\"single\"\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"default\"\n copyButtonVariant=\"light\"\n >\n <ContentText hasOverflowHandling={false}>\n {sqlQuery}\n </ContentText>\n </ContentBlock>\n {renderTableButtonExplanations()}\n </div>\n );\n }\n\n return (\n <CustomModal\n isOpen={isOpen}\n onClose={onClose}\n title=\"bla \"\n >\n {renderModalContent()}\n </CustomModal>\n );\n}\n\nexport default QueryDetailsModal;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"query-details-modal.js","names":["React","useState","useEffect","CustomModal","Copy","Check","ChevronDown","ChevronUp","formatQueryHeading","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","CopyButton","_ref","onClick","isCopied","_ref$variant","variant","baseClasses","variantClasses","className","type","children","ContentText","_ref2","_ref2$hasOverflowHand","hasOverflowHandling","overflowClasses","ContentBlock","_ref3","title","copyContent","copyId","copied","onCopy","_ref3$variant","_ref3$copyButtonVaria","copyButtonVariant","containerClasses","containerStyle","border","titleClasses","style","QueryDetailsModal","_ref4","isOpen","onClose","isLoading","error","sqlQuery","_ref4$queryHeadings","queryHeadings","_ref4$tableButtonExpl","tableButtonExplanations","onRetry","_useState","setCopied","_useState2","expandedButtons","setExpandedButtons","copyToClipboard","_x","_x2","_copyToClipboard","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","queryToCopy","textToCopy","id","wrap","_callee$","_context","prev","next","Array","isArray","filter","q","join","abrupt","navigator","clipboard","writeText","_extends3","_extends","setTimeout","_extends4","t0","stop","toggleButtonExpansion","buttonIndex","_extends2","renderTableButtonExplanations","length","hasValidJsonBody","jsonBody","undefined","hasValidFormFields","formFields","Object","keys","map","button","index","_button$buttonStyle","_button$buttonStyle2","_button$buttonStyle3","buttonClassName","height","width","minWidth","backgroundColor","buttonStyle","color","display","alignItems","justifyContent","action","operationSummary","operationDescription","requestUrl","explanation","JSON","stringify","renderModalContent","query","trim","rawHeading","heading"],"sources":["../../../src/plugins/helpers/query-details-modal.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { CustomModal } from './custom-modal';\nimport { Copy, Check, ChevronDown, ChevronUp, X } from 'lucide-react';\nimport { formatQueryHeading } from './query-heading-formatter';\n\ntype CopyButtonProps = {\n onClick: () => void;\n isCopied: boolean;\n variant?: 'default' | 'light';\n};\n\nfunction CopyButton({ onClick, isCopied, variant = 'default' }: CopyButtonProps) {\n const baseClasses = \"flex items-center gap-1 px-2 py-1 text-xs border rounded transition-colors\";\n const variantClasses = variant === 'light' \n ? \"bg-gray-50 border-gray-300 hover:bg-gray-100\"\n : \"bg-gray-100 border-gray-300 hover:bg-gray-200\";\n\n return (\n <button\n onClick={onClick}\n className={`${baseClasses} ${variantClasses}`}\n type=\"button\"\n >\n {isCopied ? (\n <>\n <Check className=\"w-3 h-3 text-green-600\" />\n <span className=\"text-green-600\">Copied!</span>\n </>\n ) : (\n <>\n <Copy className=\"w-3 h-3 text-gray-600\" />\n <span className=\"text-gray-600\">Copy</span>\n </>\n )}\n </button>\n );\n}\n\ntype ContentTextProps = {\n children: React.ReactNode;\n hasOverflowHandling?: boolean;\n};\n\nfunction ContentText({ children, hasOverflowHandling = true }: ContentTextProps) {\n const overflowClasses = hasOverflowHandling ? \"overflow-hidden break-words\" : \"\";\n\n return (\n <pre className={`whitespace-pre-wrap leading-relaxed text-xs text-gray-700 m-0 p-0 ${overflowClasses}`}>\n {children}\n </pre>\n );\n}\n\ntype ContentBlockProps = {\n title: string;\n children: React.ReactNode;\n copyContent?: string;\n copyId: string;\n copied: Record<string, boolean>;\n onCopy: (content: string, id: string) => void;\n variant?: 'default' | 'bordered';\n copyButtonVariant?: 'default' | 'light';\n};\n\nfunction ContentBlock({ \n title, \n children, \n copyContent, \n copyId, \n copied, \n onCopy,\n variant = 'bordered',\n copyButtonVariant = 'default'\n}: ContentBlockProps) {\n const containerClasses = variant === 'bordered' \n ? \"rounded-lg p-3\"\n : \"bg-white border border-gray-200 rounded-lg p-4\";\n \n const containerStyle = variant === 'bordered' \n ? { border: '1px solid #E9EAF5' }\n : {};\n\n const titleClasses = variant === 'bordered'\n ? \"text-sm font-medium text-gray-600\"\n : \"font-semibold text-sm text-gray-500 m-0\";\n\n return (\n <div className={containerClasses} style={containerStyle}>\n <div className=\"flex justify-between items-start mb-2\">\n <span className={titleClasses}>{title}</span>\n {copyContent && (\n <CopyButton\n onClick={() => onCopy(copyContent, copyId)}\n isCopied={copied[copyId] || false}\n variant={copyButtonVariant}\n />\n )}\n </div>\n {children}\n </div>\n );\n}\n\ntype QueryDetailsModalProps = {\n isOpen: boolean;\n onClose: () => void;\n isLoading: boolean;\n error: string;\n sqlQuery: string | string[];\n queryHeadings?: string[];\n tableButtonExplanations?: Array<{\n action: string, \n explanation: string, \n operationSummary?: string,\n operationDescription?: string,\n buttonClassName?: string, \n buttonStyle?: Record<string, unknown>,\n formFields?: Record<string, unknown>;\n jsonBody?: unknown;\n requestUrl?: string;\n }>;\n onRetry: () => void;\n};\n\nexport function QueryDetailsModal({\n isOpen,\n onClose,\n isLoading,\n error,\n sqlQuery,\n queryHeadings = [],\n tableButtonExplanations = [],\n onRetry\n}: QueryDetailsModalProps) {\n const [copied, setCopied] = useState<{ [key: string]: boolean }>({});\n const [expandedButtons, setExpandedButtons] = useState<{ [key: string]: boolean }>({});\n\n // Reset expanded state when modal closes\n useEffect(() => {\n if (!isOpen) {\n setExpandedButtons({});\n }\n }, [isOpen]);\n\n async function copyToClipboard(queryToCopy?: string, copyId?: string) {\n let textToCopy = queryToCopy;\n \n if (!textToCopy) {\n if (Array.isArray(sqlQuery)) {\n textToCopy = sqlQuery.filter(q => q && typeof q === 'string').join('\\n\\n-- Next Query --\\n\\n');\n } else if (typeof sqlQuery === 'string') {\n textToCopy = sqlQuery;\n } else {\n textToCopy = '';\n }\n }\n \n if (!textToCopy) {\n return;\n }\n \n const id = copyId || 'main';\n \n try {\n await navigator.clipboard.writeText(textToCopy);\n setCopied(prev => ({ ...prev, [id]: true }));\n setTimeout(() => setCopied(prev => ({ ...prev, [id]: false })), 2000);\n } catch (err) {\n // Silently fail if clipboard API is not available\n }\n }\n\n function toggleButtonExpansion(buttonIndex: number) {\n setExpandedButtons(prev => ({\n ...prev,\n [buttonIndex]: !prev[buttonIndex]\n }));\n }\n\n function renderTableButtonExplanations() {\n if (!tableButtonExplanations || tableButtonExplanations.length === 0) {\n return null;\n }\n\n function hasValidJsonBody(jsonBody: unknown): boolean {\n return jsonBody !== null && jsonBody !== undefined && jsonBody !== '';\n }\n\n function hasValidFormFields(formFields: Record<string, unknown> | undefined): boolean {\n return formFields !== null && formFields !== undefined && Object.keys(formFields || {}).length > 0;\n }\n\n return (\n <div className=\"mb-6\">\n {tableButtonExplanations.map((button, index) => (\n <div key={index} className=\"mb-3 border border-gray-200 rounded-lg\">\n <div className=\"w-full px-4 py-3 flex items-center justify-between rounded-lg\">\n <div className=\"flex items-center\">\n <button\n onClick={() => toggleButtonExpansion(index)}\n className={button.buttonClassName || \"flex items-center justify-center px-3 rounded text-xs font-medium\"}\n style={{\n height: '35px',\n width: 'fit-content',\n minWidth: 'fit-content',\n backgroundColor: (button.buttonStyle?.backgroundColor as string),\n color: (button.buttonStyle?.color as string),\n border: (button.buttonStyle?.border as string),\n ...(button.buttonStyle as React.CSSProperties || {})\n , ...button.buttonStyle as React.CSSProperties || {},\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }}\n >\n {button.action}\n </button>\n <div className=\"ml-3 flex flex-col\">\n {button.operationSummary && (\n <span className=\"text-xs text-gray-700 font-medium\">\n {button.operationSummary}\n </span>\n )}\n </div>\n </div>\n {expandedButtons[index] ? (\n <ChevronUp \n className=\"w-4 h-4 text-gray-500 transition-transform cursor-pointer\"\n onClick={() => toggleButtonExpansion(index)}\n />\n ) : (\n <ChevronDown \n className=\"w-4 h-4 text-gray-500 transition-transform cursor-pointer\"\n onClick={() => toggleButtonExpansion(index)}\n />\n )}\n </div>\n \n {expandedButtons[index] && (\n <div className=\"px-4 pb-3 border-t border-gray-200\">\n <div className=\"mt-2 space-y-3\">\n {/* Description Block */}\n {button.operationDescription && (\n <ContentBlock\n title=\"Description\"\n copyId={`description-${index}`}\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"bordered\"\n >\n <ContentText>\n {button.operationDescription}\n </ContentText>\n </ContentBlock>\n )}\n\n {(button.requestUrl || button.explanation) && (\n <ContentBlock\n title=\"URL\"\n copyContent={button.requestUrl || button.explanation}\n copyId={`url-${index}`}\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"bordered\"\n >\n <ContentText>\n {button.requestUrl || button.explanation}\n </ContentText>\n </ContentBlock>\n )}\n \n {(hasValidJsonBody(button.jsonBody) || hasValidFormFields(button.formFields)) && (\n <ContentBlock\n title=\"Payload\"\n copyContent={JSON.stringify(\n hasValidJsonBody(button.jsonBody) ? button.jsonBody : button.formFields, \n null, \n 2\n )}\n copyId={`payload-${index}`}\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"bordered\"\n >\n <ContentText>\n {hasValidJsonBody(button.jsonBody) \n ? JSON.stringify(button.jsonBody, null, 2)\n : JSON.stringify(button.formFields, null, 2)}\n </ContentText>\n </ContentBlock>\n )}\n </div>\n </div>\n )}\n </div>\n ))}\n </div>\n );\n }\n\n function renderModalContent() {\n if (isLoading) {\n return (\n <div className=\"flex flex-col items-center justify-center py-12\">\n <div className=\"animate-spin rounded-full h-12 w-12 border-b-2 border-purple-600 mb-4\"></div>\n <span className=\"text-xs text-gray-600\">Fetching query details from semantic layer...</span>\n <span className=\"text-xs text-gray-400 mt-2\">This may take a few moments</span>\n </div>\n );\n }\n\n if (error) {\n return (\n <div className=\"text-red-600 p-4 bg-red-50 rounded-lg border border-red-200 m-6\">\n <p className=\"font-medium mb-2 text-xs\">Unable to fetch query details</p>\n <p className=\"text-xs mb-3\">{error}</p>\n <button \n onClick={onRetry}\n className=\"px-4 py-2 bg-red-100 hover:bg-red-200 rounded text-xs font-medium transition-colors\"\n type=\"button\"\n >\n Retry\n </button>\n </div>\n );\n }\n\n if (!sqlQuery || (Array.isArray(sqlQuery) && sqlQuery.length === 0)) {\n return (\n <div className=\"text-gray-600 p-6\">\n <p className=\"text-xs\">No query details available</p>\n </div>\n );\n }\n\n // Handle multiple queries\n if (Array.isArray(sqlQuery)) {\n return (\n <div className=\"p-6 space-y-4\">\n {sqlQuery\n .filter(query => query && typeof query === 'string' && query.trim())\n .map((query, index) => {\n\n const rawHeading = queryHeadings[index] || `Query ${index + 1}`;\n const heading = formatQueryHeading(rawHeading);\n\n return (\n <ContentBlock\n key={index}\n title={heading}\n copyContent={query}\n copyId={`query-${index}`}\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"default\"\n copyButtonVariant=\"light\"\n >\n <ContentText hasOverflowHandling={false}>\n {query}\n </ContentText>\n </ContentBlock>\n );\n })}\n {renderTableButtonExplanations()}\n </div>\n );\n }\n\n return (\n <div className=\"p-6 space-y-4\">\n <ContentBlock\n title={formatQueryHeading(queryHeadings[0] || \"Query details\")}\n copyContent={typeof sqlQuery === 'string' ? sqlQuery : ''}\n copyId=\"single\"\n copied={copied}\n onCopy={copyToClipboard}\n variant=\"default\"\n copyButtonVariant=\"light\"\n >\n <ContentText hasOverflowHandling={false}>\n {sqlQuery}\n </ContentText>\n </ContentBlock>\n {renderTableButtonExplanations()}\n </div>\n );\n }\n\n return (\n <CustomModal\n isOpen={isOpen}\n onClose={onClose}\n title=\"How was this metric calculated?\"\n >\n {renderModalContent()}\n </CustomModal>\n );\n}\n\nexport default QueryDetailsModal;\n"],"mappings":"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","ignoreList":[]}
@@ -1,27 +1,13 @@
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","performInteraction"],_excluded3=["isEditable","gjsModel","performInteraction"],_excluded4=["isEditable","gjsModel","performInteraction"],_excluded5=["isEditable","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 no-nested-ternary *//* eslint-disable @typescript-eslint/ban-ts-comment *//* 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,useMemo,useRef}from"react";import{renderNoDataFallback}from"./extra";import{CircleAlert,TrendingDown,TrendingUp,ShoppingCart,ChartBarBig,Tag,MapPin}from"lucide-react";import{StyledInfoButton}from"./styled-info-button";import{filterPlaceholders}from"../../helpers/filter-placeholder";import{theme}from"@peak-ai/ais-components/theme";import Markdown from"markdown-to-jsx";import{Bar,BarChart,CartesianGrid,Legend,Line,LineChart,Pie,PieChart,ResponsiveContainer,Scatter,ScatterChart,XAxis,YAxis,Cell}from"recharts/lib";// @ts-ignore
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","performInteraction"],_excluded3=["isEditable","gjsModel","performInteraction"],_excluded4=["isEditable","gjsModel","performInteraction"],_excluded5=["isEditable","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 no-nested-ternary *//* eslint-disable @typescript-eslint/ban-ts-comment *//* 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,useMemo,useRef}from"react";import{renderNoDataFallback}from"./extra";import{CircleAlert,TrendingDown,TrendingUp,ShoppingCart,ChartBarBig,Tag,MapPin}from"lucide-react";import{StyledInfoButton}from"./styled-info-button";import{filterPlaceholders}from"../../helpers/filter-placeholder";import{theme}from"@peak-ai/ais-components/theme";import Markdown from"markdown-to-jsx";import{Bar,BarChart,CartesianGrid,Legend,Line,LineChart,Pie,PieChart,ResponsiveContainer,XAxis,YAxis}from"recharts/lib";// @ts-ignore
2
2
  import*as domutil from"recharts/lib/util/DOMUtils";import{TooltipButton}from"../../shadcn/components/ui/button";import{Card,CardContent,CardDescription,CardFooter,CardHeader,CardTitle}from"../../shadcn/components/ui/card";import{ChartContainer,ChartTooltip,ChartTooltipContent}from"../../shadcn/components/ui/chart";import{renderFilter}from"../../shadcn/components/ui/filter";import{renderSearch}from"../../shadcn/components/ui/search";import{CardLoader,ChartLoader,MarkdownLoader}from"../../shadcn/components/ui/skeleton";import{Tabs,TabsContent,TabsList,TabsTrigger}from"../../shadcn/components/ui/tabs";import{cn}from"../../shadcn/utils";import{getAffectedComponentsWithLoader}from"../../helpers";import{DataTable}from"./data-table";import{ComponentWrapper}from"../../shadcn/components/ui/error-wrapper";// Monkey-patching the getOffset function to use iframe's window instead of global one
3
3
  // REMEMBER TO UDPATE THIS WHEN recharts IS UPGRADED
4
4
  // @ts-ignore
5
5
  import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";domutil.getOffset=function(el){var html=el.ownerDocument.documentElement;var box={top:0,left:0};if(typeof el.getBoundingClientRect!=="undefined"){box=el.getBoundingClientRect()}var iframe=document.querySelector(".gjs-frame");var iframeWindow=iframe==null?void 0:iframe.contentWindow;return{top:box.top+iframeWindow.pageYOffset-html.clientTop,left:box.left+iframeWindow.pageXOffset-html.clientLeft}};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"]];var iconMap={TrendingUp:/*#__PURE__*/_jsx(TrendingUp,{}),TrendingDown:/*#__PURE__*/_jsx(TrendingDown,{}),ShoppingCart:/*#__PURE__*/_jsx(ShoppingCart,{}),Equalizer:/*#__PURE__*/_jsx(ChartBarBig,{}),Style:/*#__PURE__*/_jsx(Tag,{}),Place:/*#__PURE__*/_jsx(MapPin,{})};function getIconFromString(iconString){if(!iconString){return null}if(iconMap[iconString]){return iconMap[iconString]}var lowerIconString=iconString.toLowerCase();var matchingKey=Object.keys(iconMap).find(function(key){return key.toLowerCase()===lowerIconString});if(matchingKey){return iconMap[matchingKey]}return null}function getNColors(n){var colors=[];var safeBaseColors=Array.isArray(baseColors)?baseColors:[];for(var _iterator=_createForOfIteratorHelperLoose(safeBaseColors),_step;!(_step=_iterator()).done;){var baseColor=_step.value;// eslint-disable-next-line import/no-named-as-default-member
6
6
  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);// Memoize filtered props to avoid re-filtering on every render
7
7
  var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState=useState(initialData),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"))),attributes=_useState2[0],setAttributes=_useState2[1];useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);var defaultClasses="text-black p-4 rounded-lg shadow border flex flex-col h-full";return/*#__PURE__*/_jsx(Card,_extends({className:defaultClasses+" relative",style:{backgroundColor:"#f9f9fe"},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 flex-col",children:[/*#__PURE__*/_jsxs("div",{className:"flex items-center justify-between w-full",children:[/*#__PURE__*/_jsx("div",{className:"text-xl font-semibold",children:headerContent}),/*#__PURE__*/_jsx("div",{className:"text-5xl ml-2 flex items-center","aria-hidden":"true",children:getIconFromString(icon)})]}),/*#__PURE__*/_jsx("div",{className:"w-full mt-1",children:attributes.error||allData.error||attributes.isMissing||allData.isMissing||!bodyContent?/*#__PURE__*/_jsxs("span",{className:"flex flex-row items-center px-3 py-2",children:[/*#__PURE__*/_jsx(CircleAlert,{className:"w-3 h-3 text-gray-400 mr-1"}),/*#__PURE__*/_jsx("p",{className:"text-sm text-gray-500 max-w-md text-center",children:"No data available for given filters"})]}):/*#__PURE__*/_jsx("div",{className:"text-base leading-relaxed",children:bodyContent})})]})})})}))}export function renderCard(props){var _attributes$error,_attributes$isMissing;var _props$isEditable=props.isEditable,isEditable=_props$isEditable===void 0?false:_props$isEditable,gjsModel=props.gjsModel,_props$performInterac=props.performInteraction,performInteraction=_props$performInterac===void 0?function(){return Promise.resolve({})}:_props$performInterac,rest=_objectWithoutPropertiesLoose(props,_excluded2);// Memoize filtered props to avoid re-filtering on every render
8
- var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState3=useState(initialData),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,dataClassName=allData.className,dataError=allData.error,dataIsMissing=allData.isMissing;function toSafeText(value){if(value===null){return""}return typeof value==="string"?value:JSON.stringify(value)}var safeHeaderContent=toSafeText(headerContent);var safeHeaderDescription=toSafeText(headerDescription);var safeBodyContent=toSafeText(bodyContent);var safeFooterContent=toSafeText(footerContent);var safeContentMetadata=toSafeText(contentMetadata);var _useState4=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState4[0],setAttributes=_useState4[1];useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);var defaultClasses="bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none";var defaultFooterClasses=safeFooterContent?"text-sm bg-pink-50 text-pink-900 shadow-sm":"text-sm";var defaultContentMetadataClasses="text-xs";var mergedCardClassName=dataClassName?cn(defaultClasses,dataClassName):defaultClasses;var mergedFooterClassName=footerClass?cn(defaultFooterClasses,footerClass):defaultFooterClasses;var mergedContentMetadataClassName=contentMetadataClass?cn(defaultContentMetadataClasses,contentMetadataClass):defaultContentMetadataClasses;var hasError=Boolean((_attributes$error=attributes==null?void 0:attributes.error)!=null?_attributes$error:dataError);var hasMissing=Boolean((_attributes$isMissing=attributes==null?void 0:attributes.isMissing)!=null?_attributes$isMissing:dataIsMissing);var isLoading=Boolean(((attributes==null?void 0:attributes.interactionApiInProgress)||(attributes==null?void 0:attributes.loading))&&!hasError&&!hasMissing);var footerIconText=typeof footerIcon==="string"?footerIcon:footerIcon&&typeof footerIcon==="object"&&"icon"in footerIcon?String(footerIcon.icon):"";function getCardContent(){if(isLoading){return/*#__PURE__*/_jsx(CardContent,{children:/*#__PURE__*/_jsx(CardLoader,{})})}var showEmpty=hasError||hasMissing||!safeBodyContent;return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(CardHeader,{children:/*#__PURE__*/_jsx("div",{className:"flex items-start justify-between",children:/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"headerContent",contentEditable:isEditable,className:"text-lg",children:safeHeaderContent}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"headerDescription",contentEditable:isEditable,className:"text-sm",children:safeHeaderDescription})]})})}),showEmpty?/*#__PURE__*/_jsxs("span",{className:"flex flex-row items-center px-3 py-2",children:[/*#__PURE__*/_jsx(CircleAlert,{className:"w-3 h-3 text-gray-400 mr-1"}),/*#__PURE__*/_jsx("p",{className:"text-sm text-gray-500 max-w-md text-center",children:"No data available for given filters"})]}):/*#__PURE__*/_jsxs(CardContent,{"data-slot":"bodyContent",contentEditable:false,className:"flex-grow",children:[/*#__PURE__*/_jsx("div",{className:"text-3xl font-semibold truncate",children:safeBodyContent}),safeContentMetadata&&/*#__PURE__*/_jsx("div",{className:mergedContentMetadataClassName,style:{color:"#2A44D4"},children:safeContentMetadata})]}),/*#__PURE__*/_jsxs(CardFooter,{"data-slot":"footerContent",contentEditable:isEditable,className:cn(mergedFooterClassName),children:[(footerIconText||"").trim()&&/*#__PURE__*/_jsx("span",{className:"mr-2","aria-hidden":"true",children:footerIconText}),safeFooterContent||""]})]})}return/*#__PURE__*/_jsxs(Card,_extends({},rest,{className:mergedCardClassName+" relative",children:[getCardContent(),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData})]}))}// Helper function to transform data for scatter plot (Recharts format)
9
- function transformDataForScatter(data,xAxis,yAxis,dataKeys){if(!data||data.length===0){return[]}// Recharts ScatterChart expects array of objects with x and y properties
10
- var scatterData=data.filter(function(item){return item[xAxis]!==null&&item[xAxis]!==undefined&&item[yAxis]!==null&&item[yAxis]!==undefined}).map(function(item){var _result;var result=(_result={},_result[xAxis]=Number(item[xAxis]),_result[yAxis]=Number(item[yAxis]),_result);// Add any additional dataKeys as separate properties
11
- if(dataKeys&&dataKeys.length>0){dataKeys.forEach(function(_ref){var key=_ref.key;if(item[key]!==null&&item[key]!==undefined){result[key]=Number(item[key])}})}return result});return scatterData}// Helper function to bin data for histogram
12
- function binDataForHistogram(data,valueKey,bins){if(bins===void 0){bins=10}if(!data||data.length===0){return[]}var values=data.map(function(item){return Number(item[valueKey])}).filter(function(val){return!isNaN(val)});if(values.length===0){return[]}var min=Math.min.apply(Math,values);var max=Math.max.apply(Math,values);var binWidth=(max-min)/bins;var binsArray=new Array(bins).fill(0);var binLabels=[];for(var i=0;i<bins;i++){var binStart=min+i*binWidth;var binEnd=binStart+binWidth;binLabels.push(binStart.toFixed(1)+"-"+binEnd.toFixed(1))}values.forEach(function(value){var binIndex=Math.floor((value-min)/binWidth);if(binIndex>=bins){binIndex=bins-1}if(binIndex<0){binIndex=0}binsArray[binIndex]+=1});return binLabels.map(function(label,index){return{bin:label,frequency:binsArray[index]}})}// Helper function to transform data for beeswarm plot (Recharts ScatterChart format)
13
- // Beeswarm uses x-axis for groups and y-axis for values, with jitter on x-axis
14
- function transformDataForBeeswarm(data,groupBy,valueKey){if(!data||data.length===0){return[]}// Group data by groupBy field
15
- var grouped={};data.forEach(function(item){if(item[groupBy]!==null&&item[groupBy]!==undefined&&item[valueKey]!==null&&item[valueKey]!==undefined){var group=String(item[groupBy]);var value=Number(item[valueKey]);if(!grouped[group]){grouped[group]=[]}grouped[group].push(value)}});var groups=Object.keys(grouped).sort();var result=[];// Create scatter points with jitter on x-axis
16
- groups.forEach(function(group,groupIndex){var values=grouped[group];var jitterRadius=0.3;// Jitter radius for positioning points
17
- values.forEach(function(value,valueIndex){// Calculate jitter position within the group
18
- var angle=valueIndex/values.length*2*Math.PI;var radius=valueIndex%10/10*jitterRadius;// Distribute points in a circle
19
- var jitterX=groupIndex+radius*Math.cos(angle);result.push({group:group,groupIndex:groupIndex,value:value,x:jitterX,y:value})})});return result}function renderChartComponent(chartType,data,config){var safeData=Array.isArray(data)?data:[];if(safeData.length===0){return renderNoDataFallback()}switch(chartType){case"pie":return/*#__PURE__*/_jsxs(PieChart,{children:[safeData.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:safeData,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:safeData.length<20?function(_ref2){var name=_ref2.name,percent=_ref2.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]});case"bar":{config.dataKeys=config.dataKeys||[];var barDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];return/*#__PURE__*/_jsxs(BarChart,_extends({data:safeData},config.chartUi,barDataKeys.length>1&&{barGap:0},{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(Legend,{align:"left",wrapperStyle:{marginLeft:20}}),barDataKeys.map(function(_ref3){var key=_ref3.key,name=_ref3.name,color=_ref3.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||[];var safeDataKeysLine=Array.isArray(config.dataKeys)?config.dataKeys:[];return/*#__PURE__*/_jsxs(LineChart,_extends({data:safeData},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})}),safeDataKeysLine.map(function(_ref4){var key=_ref4.key,name=_ref4.name,color=_ref4.color;return/*#__PURE__*/_jsx(Line,{type:"monotone",dataKey:key,stroke:color!=null?color:"#4caf50",name:name},key)}),/*#__PURE__*/_jsx(Legend,{align:"left"})]}))}case"scatter":{config.dataKeys=config.dataKeys||[];var safeDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];var scatterData=transformDataForScatter(safeData,config.xAxis,config.yAxis,safeDataKeys);if(scatterData.length===0){return renderNoDataFallback()}var colors=safeDataKeys.length>0?safeDataKeys.map(function(_ref5){var color=_ref5.color;return color!=null?color:"#2A44D4"}):["#2A44D4"];return/*#__PURE__*/_jsxs(ScatterChart,_extends({data:scatterData},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{type:"number",dataKey:config.xAxis,name:config.xAxis||"X Axis",domain:["auto","auto"]}),/*#__PURE__*/_jsx(YAxis,{type:"number",dataKey:config.yAxis,name:config.yAxis||"Y Axis",domain:["auto","auto"]}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:{strokeDasharray:"3 3"},content:/*#__PURE__*/_jsx(ChartTooltipContent,{})}),safeDataKeys.length>0?safeDataKeys.map(function(_ref6,index){var key=_ref6.key,name=_ref6.name,color=_ref6.color;return/*#__PURE__*/_jsx(Scatter,{name:name||key,dataKey:key||config.yAxis,fill:color!=null?color:colors[index%colors.length]},key)}):/*#__PURE__*/_jsx(Scatter,{name:"Data",dataKey:config.yAxis,fill:colors[0]}),/*#__PURE__*/_jsx(Legend,{align:"left"})]}))}case"histogram":{config.dataKeys=config.dataKeys||[];var _safeDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];var valueKey=_safeDataKeys.length>0?_safeDataKeys[0].key:config.xAxis;var bins=config.bins||10;var binnedData=binDataForHistogram(safeData,valueKey,bins);if(binnedData.length===0){return renderNoDataFallback()}var color=_safeDataKeys.length>0?_safeDataKeys[0].color:"#2A44D4";return/*#__PURE__*/_jsxs(BarChart,_extends({data:binnedData},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:"bin",angle:-45,textAnchor:"end",height:80}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})}),/*#__PURE__*/_jsx(Bar,{dataKey:"frequency",fill:color,radius:2,children:binnedData.map(function(entry,index){return/*#__PURE__*/_jsx(Cell,{fill:color},"cell-"+index)})}),/*#__PURE__*/_jsx(Legend,{align:"left"})]}))}case"beeswarm":{var _config$dataKeys$,_config$dataKeys$2;var groupBy=config.groupBy||config.xAxis;var _valueKey=config.valueKey||config.dataKeys&&((_config$dataKeys$=config.dataKeys[0])==null?void 0:_config$dataKeys$.key)||"value";var swarmData=transformDataForBeeswarm(safeData,groupBy,_valueKey);if(swarmData.length===0){return renderNoDataFallback()}// Get unique groups for x-axis labels
20
- var groups=Array.from(new Set(swarmData.map(function(item){return item.group}))).sort();var _color=config.dataKeys&&(_config$dataKeys$2=config.dataKeys[0])!=null&&_config$dataKeys$2.color?config.dataKeys[0].color:"#2A44D4";return/*#__PURE__*/_jsxs(ScatterChart,_extends({data:swarmData},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{type:"number",dataKey:"x",domain:[-0.5,groups.length-0.5],ticks:groups.map(function(_,index){return index}),tickFormatter:function tickFormatter(value){var groupIndex=Math.round(value);return groups[groupIndex]||""},label:{value:groupBy||"Group",position:"insideBottom",offset:-5}}),/*#__PURE__*/_jsx(YAxis,{type:"number",dataKey:"y",name:_valueKey||"Value",label:{value:_valueKey||"Value",angle:-90,position:"insideLeft"}}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:{strokeDasharray:"3 3"},content:function content(_ref7){var active=_ref7.active,payload=_ref7.payload;if(active&&payload&&payload.length){var pointData=payload[0].payload;return/*#__PURE__*/_jsxs("div",{className:"bg-white p-2 border rounded shadow",children:[/*#__PURE__*/_jsx("p",{children:groupBy+": "+pointData.group}),/*#__PURE__*/_jsx("p",{children:_valueKey+": "+pointData.value})]})}return null}}),/*#__PURE__*/_jsx(Scatter,{name:"Beeswarm",dataKey:"y",fill:_color})]}))}default:return/*#__PURE__*/_jsxs(PieChart,{children:[safeData.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:safeData,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:safeData.length<20?function(_ref8){var name=_ref8.name,percent=_ref8.percent;return name+": "+(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,_props$performInterac2=props.performInteraction,performInteraction=_props$performInterac2===void 0?function(){return Promise.resolve({})}:_props$performInterac2,rest=_objectWithoutPropertiesLoose(props,_excluded3);// Memoize filtered props to avoid re-filtering on every render
21
- var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState5=useState(initialData),allData=_useState5[0],setAllData=_useState5[1];var _useState6=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState6[0],setAttributes=_useState6[1];var containerRef=useRef(null);var _useState7=useState(0),containerWidth=_useState7[0],setContainerWidth=_useState7[1];useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){var handleAttributesChange=function handleAttributesChange(){var newAttributes=gjsModel.get("attributes");setAttributes(_extends({},newAttributes))};gjsModel.on("change:attributes",handleAttributesChange);return function(){gjsModel.off("change:attributes",handleAttributesChange)}},[gjsModel]);useEffect(function(){var updateContainerWidth=function updateContainerWidth(){if(containerRef.current){setContainerWidth(containerRef.current.offsetWidth||0)}};var resizeObserver=new ResizeObserver(function(entries){for(var _iterator2=_createForOfIteratorHelperLoose(entries),_step2;!(_step2=_iterator2()).done;){var entry=_step2.value;setContainerWidth(entry.contentRect.width||0)}});updateContainerWidth();var timeoutId=setTimeout(updateContainerWidth,50);if(containerRef.current){resizeObserver.observe(containerRef.current)}window.addEventListener("resize",updateContainerWidth);return function(){clearTimeout(timeoutId);resizeObserver.disconnect();window.removeEventListener("resize",updateContainerWidth)}},[]);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 safeChartData=Array.isArray(chartData)?chartData:[];var colors=getNColors(safeChartData.length);safeChartData.forEach(function(data,i){if(!data.fill){data.fill=colors[i]}})}else if(!config.color){var safeBaseColors=Array.isArray(baseColors)?baseColors:[];if(safeBaseColors.length>0){config.color=safeBaseColors[Math.floor(Math.random()*safeBaseColors.length)]}}var totalDataPoints=0;if(chartType==="bar"||chartType==="line"||chartType==="scatter"||chartType==="histogram"||chartType==="beeswarm"){var _safeChartData=Array.isArray(chartData)?chartData:[];var safeDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];if(chartType==="bar"){totalDataPoints=_safeChartData.length*Math.max(1,safeDataKeys.length)}else if(chartType==="line"){totalDataPoints=_safeChartData.length}else if(chartType==="scatter"||chartType==="histogram"||chartType==="beeswarm"){totalDataPoints=_safeChartData.length}}var getScrollableWidth=function getScrollableWidth(){if(chartType==="line"){return totalDataPoints*20}if(chartType==="bar"){return totalDataPoints*20+(Array.isArray(config.dataKeys)?config.dataKeys.length:0)*8*(Array.isArray(chartData)?chartData.length:0)+(Array.isArray(chartData)?chartData.length:0)*15}// Scatter, histogram, and beeswarm charts typically don't need horizontal scrolling
22
- // but we'll set a reasonable default width
23
- if(chartType==="scatter"||chartType==="histogram"||chartType==="beeswarm"){return 800}return 800};var scrollWidth=getScrollableWidth();var shouldScroll=(chartType==="bar"||chartType==="line")&&totalDataPoints>15&&scrollWidth>containerWidth;var hasError=attributes.error||allData.error;var hasMissing=attributes.isMissing||allData.isMissing;var isLoading=(attributes.interactionApiInProgress||attributes.loading)&&!hasError&&!hasMissing;var ChartWrapper=function ChartWrapper(_ref9){var children=_ref9.children;if(shouldScroll){return/*#__PURE__*/_jsx("div",{className:"w-full h-[250px] overflow-x-auto",children:/*#__PURE__*/_jsx("div",{style:{minWidth:scrollWidth+"px",height:"250px"},children:children})})}return/*#__PURE__*/_jsx("div",{className:"w-full h-[250px]",children:children})};var chartUi=isLoading?/*#__PURE__*/_jsx(ChartLoader,{}):hasError||hasMissing||!chartData?renderNoDataFallback():/*#__PURE__*/_jsx(ChartWrapper,{children:/*#__PURE__*/_jsx(ResponsiveContainer,{width:"100%",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 relative",children:[/*#__PURE__*/_jsx(CardHeader,{children:/*#__PURE__*/_jsx("div",{className:"flex items-start justify-between",children:/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"title",contentEditable:isEditable,className:"text-2xl",children:title}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"subTitle",contentEditable:isEditable,className:"text-sm",children:subTitle})]})})}),/*#__PURE__*/_jsx(CardContent,{ref:containerRef,"data-slot":"bodyContent",className:"px-6",children:chartUi}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData})]})}export function renderTable(props){var _props$isEditable3=props.isEditable,isEditable=_props$isEditable3===void 0?false:_props$isEditable3,gjsModel=props.gjsModel,_props$performInterac3=props.performInteraction,performInteraction=_props$performInterac3===void 0?function(){}:_props$performInterac3,rest=_objectWithoutPropertiesLoose(props,_excluded4);// Memoize filtered props to avoid re-filtering on every render
24
- var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState8=useState(initialData),allData=_useState8[0],setAllData=_useState8[1];var cardRef=useRef(null);var _useState9=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState9[0],setAttributes=_useState9[1];var rawData=allData.data,_allData$headerMapper=allData.headerMapper,rawHeaderMapper=_allData$headerMapper===void 0?{}:_allData$headerMapper,className=allData.className,_allData$title2=allData.title,title=_allData$title2===void 0?"Title":_allData$title2,_allData$subTitle2=allData.subTitle,subTitle=_allData$subTitle2===void 0?"Subtitle":_allData$subTitle2,_allData$actions=allData.actions,actions=_allData$actions===void 0?[]:_allData$actions,pagination=allData.pagination;var data=Array.isArray(rawData)?rawData:[];var headerMapper=function(){var cleaned=_extends({},rawHeaderMapper);if("id"in cleaned){delete cleaned.id}if(data.length>0){var dataKeys=Object.keys(data[0]||{});return Object.fromEntries(Object.entries(cleaned).filter(function(_ref10){var key=_ref10[0];return dataKeys.includes(key)}))}return cleaned}();var sortConfig=function(_gjsModel$get,_ref12){var _ref11=(_gjsModel$get=gjsModel.get("componentProps"))!=null?_gjsModel$get:{},sortColumn=_ref11.sortColumn,sortDirection=_ref11.sortDirection;return sortColumn&&sortDirection?(_ref12={},_ref12[sortColumn]=sortDirection,_ref12):{}}();var _useState10=useState(0),viewportWidth=_useState10[0],setViewportWidth=_useState10[1];var _useState11=useState(250),scrollAreaHeight=_useState11[0],setScrollAreaHeight=_useState11[1];var calculateTableHeight=function calculateTableHeight(tableWidth,rowCount){if(viewportWidth>0){var _gjsModel$collection;var widthRatio=tableWidth/viewportWidth;var baseTableHeight=250;var targetScrollAreaHeight=baseTableHeight;if(widthRatio>=0.8){var headerHeight=48;var rowHeight=40;var calculatedHeight=headerHeight+rowCount*rowHeight;targetScrollAreaHeight=Math.min(calculatedHeight,baseTableHeight)}var tableId=gjsModel.get("id");var editor=gjsModel.em||((_gjsModel$collection=gjsModel.collection)==null?void 0:_gjsModel$collection.em);var canvasDocument=editor.Canvas.getDocument()||document;var tableElement=canvasDocument.querySelector("[data-table-id=\""+tableId+"\"]");if(tableElement){var headerElement=tableElement.querySelector("[data-slot=\"card-header\"]");if(headerElement&&headerElement.offsetHeight>0){var actualHeaderHeight=headerElement.offsetHeight;var standardHeaderHeight=58;var heightDifference=actualHeaderHeight-standardHeaderHeight;if(heightDifference>0){targetScrollAreaHeight=targetScrollAreaHeight-heightDifference}}}setScrollAreaHeight(targetScrollAreaHeight)}};useEffect(function(){var updateViewportWidth=function updateViewportWidth(){var iframe=document.querySelector(".gjs-frame");var iframeWindow=iframe==null?void 0:iframe.contentWindow;var iframeDocument=iframeWindow==null?void 0:iframeWindow.document;if(iframeDocument){var dashboardRoot=iframeDocument.getElementById("dashboard-root");var effectiveViewportWidth=(dashboardRoot==null?void 0:dashboardRoot.clientWidth)||iframeDocument.documentElement.clientWidth;setViewportWidth(effectiveViewportWidth)}};updateViewportWidth();window.addEventListener("resize",updateViewportWidth);var iframe=document.querySelector(".gjs-frame");var iframeWindow=iframe==null?void 0:iframe.contentWindow;if(iframeWindow){iframeWindow.addEventListener("resize",updateViewportWidth)}return function(){window.removeEventListener("resize",updateViewportWidth);if(iframeWindow){iframeWindow.removeEventListener("resize",updateViewportWidth)}}},[]);useEffect(function(){var updateTableWidthAndApplyCSS=function updateTableWidthAndApplyCSS(){var _gjsModel$collection2;var tableId=gjsModel.get("id");var editor=gjsModel.em||((_gjsModel$collection2=gjsModel.collection)==null?void 0:_gjsModel$collection2.em);var canvasDocument=editor.Canvas.getDocument()||document;var tableElement=canvasDocument.querySelector("[data-table-id=\""+tableId+"\"]");if(!tableElement&&window.parent!==window){tableElement=window.parent.document.querySelector("[data-table-id=\""+tableId+"\"]")}if(!tableElement){return}var tableActualWidth=tableElement.getBoundingClientRect().width;if(tableActualWidth>0){calculateTableHeight(tableActualWidth,Array.isArray(data)?data.length:0)}};var timeoutId=setTimeout(updateTableWidthAndApplyCSS,150);window.addEventListener("resize",updateTableWidthAndApplyCSS);return function(){clearTimeout(timeoutId);window.removeEventListener("resize",updateTableWidthAndApplyCSS)}},[allData,gjsModel,viewportWidth,data,calculateTableHeight]);useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){var handleAttributesChange=function handleAttributesChange(){setAttributes(_extends({},gjsModel.get("attributes")))};gjsModel.on("change:attributes",handleAttributesChange);return function(){gjsModel.off("change:attributes",handleAttributesChange)}},[gjsModel]);var parsedData=function(){if(typeof data==="object"&&data!==null&&!Array.isArray(data)&&data.name==="__peak_placeholder"){return[]}if(!Array.isArray(data)){return[]}return data.map(function(datum){var newData=_extends({},datum);delete newData.id;return newData})}();function onRowAction(_x,_x2){return _onRowAction.apply(this,arguments)}function _onRowAction(){_onRowAction=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(rowIndex,actionId){var id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:id=gjsModel.get("id");_context.next=3;return performInteraction({id:actionId,interactionType:"tableButton",payload:{row:data[rowIndex],tableId:id},affectedComponents:[]});case 3:case"end":return _context.stop()}},_callee)}));return _onRowAction.apply(this,arguments)}function onPageChange(_x3,_x4){return _onPageChange.apply(this,arguments)}function _onPageChange(){_onPageChange=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(pageNumber,pageSize){var _gjsModel$get2;var id,_ref13,sortColumn,sortDirection;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:id=gjsModel.get("id");_ref13=(_gjsModel$get2=gjsModel.get("componentProps"))!=null?_gjsModel$get2:{},sortColumn=_ref13.sortColumn,sortDirection=_ref13.sortDirection;_context2.next=4;return performInteraction({id:id,interactionType:"pagination",payload:_extends({pageNumber:pageNumber,pageSize:pageSize},sortColumn&&sortDirection&&{sortColumn:sortColumn,sortDirection:sortDirection}),affectedComponents:getAffectedComponentsWithLoader([id],true)});case 4:case"end":return _context2.stop()}},_callee2)}));return _onPageChange.apply(this,arguments)}function handleSort(_x5,_x6){return _handleSort.apply(this,arguments)}function _handleSort(){_handleSort=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(column,direction){var currentProps,id;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:currentProps=gjsModel.get("componentProps");id=gjsModel.get("id");gjsModel.set("componentProps",_extends({},currentProps,{sortColumn:direction?column:null,sortDirection:direction}));_context3.next=5;return performInteraction({id:id,interactionType:"tableSort",payload:{sortColumn:direction?column:null,sortDirection:direction,tableId:id},affectedComponents:getAffectedComponentsWithLoader([id],true)});case 5:case"end":return _context3.stop()}},_callee3)}));return _handleSort.apply(this,arguments)}return/*#__PURE__*/_jsxs(Card,{ref:cardRef,className:"shadow border relative flex flex-col h-fit overflow-hidden","data-component-type":"table","data-table-id":gjsModel.get("id"),children:[/*#__PURE__*/_jsx(CardHeader,{children:/*#__PURE__*/_jsx("div",{className:"flex items-start justify-between",children:/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"title",contentEditable:isEditable,className:"text-2xl",children:title}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"subTitle",contentEditable:isEditable,className:"text-sm",children:subTitle})]})})}),/*#__PURE__*/_jsx(CardContent,{"data-slot":"bodyContent",contentEditable:false,className:"flex-1 flex flex-col overflow-hidden",children:attributes.error||allData.error||attributes.isMissing||allData.isMissing?renderNoDataFallback():/*#__PURE__*/_jsx(DataTable,{data:parsedData,headerMapper:headerMapper,className:className,isEditable:isEditable,actions:actions,pagination:pagination,isLoading:attributes.interactionApiInProgress||attributes.loading,onRowAction:onRowAction,onPageChange:onPageChange,onSort:handleSort,sortConfig:sortConfig,otherProps:rest,height:scrollAreaHeight})}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:performInteraction,position:"top-right",tableActions:actions,firstRowData:Array.isArray(data)&&data.length>0?data[0]:{},isVisible:isEditable,componentProps:allData})]})}export function renderTab(props){var tabsWidth=157;var safeTabs=Array.isArray(props.tabs)?props.tabs:[];var showFallback=safeTabs.length===0;if(safeTabs.length>4){tabsWidth=157}var defaultValue=props.defaultValue||(safeTabs.length>0?safeTabs[0]:undefined);return/*#__PURE__*/_jsxs(Tabs,{defaultValue:defaultValue,children:[/*#__PURE__*/_jsx("div",{className:"text-center mb-4",children:/*#__PURE__*/_jsx(TabsList,{className:"bg-[#F9F9FE] border border-[#D4D5DE] p-1 rounded-lg h-auto",children:safeTabs.length>0?safeTabs.map(function(tab){return/*#__PURE__*/_jsx(TabsTrigger,{value:tab,className:"\n w-["+tabsWidth+"px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n ",style:{fontFamily:"Helvetica Neue",fontWeight:500,fontSize:"14px",lineHeight:"16px",letterSpacing:"0%"},children:tab},tab)}):/*#__PURE__*/_jsx(TabsTrigger,{value:"no-data",className:"\n w-["+tabsWidth+"px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n ",style:{fontFamily:"Helvetica Neue",fontWeight:500,fontSize:"14px",lineHeight:"16px",letterSpacing:"0%"},disabled:true,children:"No tabs"})})}),showFallback?/*#__PURE__*/_jsx(TabsContent,{value:defaultValue||"no-data",className:"tabs-content","data-fallback":"true",children:renderNoDataFallback()}):safeTabs.map(function(tab){return/*#__PURE__*/_jsx(TabsContent,{value:tab,className:"tabs-content"},tab)})]})}export function renderMarkdown(props){var _props$isEditable4=props.isEditable,isEditable=_props$isEditable4===void 0?false:_props$isEditable4,gjsModel=props.gjsModel,rest=_objectWithoutPropertiesLoose(props,_excluded5);// Memoize filtered props to avoid re-filtering on every render
25
- var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState12=useState(initialData),allData=_useState12[0],setAllData=_useState12[1];var _useState13=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState13[0],setAttributes=_useState13[1];useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){var handleAttributesChange=function handleAttributesChange(){setAttributes(_extends({},gjsModel.get("attributes")))};gjsModel.on("change:attributes",handleAttributesChange);return function(){gjsModel.off("change:attributes",handleAttributesChange)}},[gjsModel]);var _useState14=useState(false),isEditing=_useState14[0],setIsEditing=_useState14[1];var _useState15=useState(false),isEditingHeading=_useState15[0],setIsEditingHeading=_useState15[1];var editRef=useRef(null);var headingEditRef=useRef(null);var startEditing=function startEditing(){setIsEditing(true);setTimeout(function(){setupEditor()},0)};var startEditingHeading=function startEditingHeading(){setIsEditingHeading(true);setTimeout(function(){setupHeadingEditor()},0)};var setupEditor=function setupEditor(){if(!editRef.current){return}var editor=editRef.current;editor.innerHTML="";editor.textContent=allData.summaryText;editor.focus()};var setupHeadingEditor=function setupHeadingEditor(){if(!headingEditRef.current){return}var editor=headingEditRef.current;editor.innerHTML="";editor.textContent=allData.summaryHeading||"Insights";editor.focus()};// Save changes and exit editing mode
26
- var saveChanges=function saveChanges(){if(!editRef.current){return}var content=editRef.current.innerText||"";setAllData(function(prev){return _extends({},prev,{summaryText:content})});setIsEditing(false);editRef.current.innerHTML=""};var saveHeadingChanges=function saveHeadingChanges(){if(!headingEditRef.current){return}var content=headingEditRef.current.innerText||"Insights";setAllData(function(prev){return _extends({},prev,{summaryHeading:content})});setIsEditingHeading(false);headingEditRef.current.innerHTML=""};var markdownStyles={ul:{props:{className:"list-disc"}},h1:{props:{className:"text-4xl font-bold leading-[4rem]"}},h2:{props:{className:"text-3xl font-bold leading-[3rem]"}},h3:{props:{className:"text-2xl font-bold leading-[2rem]"}},h4:{props:{className:"text-xl font-bold leading-[2.5rem]"}},h5:{props:{className:"text-lg font-bold leading-[2.5rem]"}},h6:{props:{className:"text-base font-bold leading-[2rem]"}}};var hasError=attributes.error||allData.error;var hasMissing=attributes.isMissing||allData.isMissing;var isLoading=attributes.loading&&!hasError&&!hasMissing||attributes.interactionApiInProgress;if(isLoading){return/*#__PURE__*/_jsx(MarkdownLoader,{})}if(hasError||hasMissing){return/*#__PURE__*/_jsxs("div",_extends({className:"px-[1em] relative"},rest,{children:[/*#__PURE__*/_jsx("h3",{className:"text-xl font-semibold text-left",children:allData.summaryHeading||"Insights"}),/*#__PURE__*/_jsxs("div",{className:"w-full py-8 flex flex-col items-center justify-center px-6 text-center",style:{minHeight:"180px"},children:[/*#__PURE__*/_jsx(CircleAlert,{className:"w-12 h-12 text-gray-400 mb-2"}),/*#__PURE__*/_jsx("h3",{className:"text-lg font-medium text-gray-900",children:"No data available"}),/*#__PURE__*/_jsx("p",{className:"mt-2 text-sm text-gray-500 max-w-md",children:"Check your filters or try a different time range."})]}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:props.performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData})]}))}if(!allData.isEditable){return/*#__PURE__*/_jsxs("div",_extends({className:"px-[1em] relative"},rest,{children:[/*#__PURE__*/_jsx("h3",{className:"text-xl font-semibold text-left",children:allData.summaryHeading||"Insights"}),/*#__PURE__*/_jsx("div",{"data-slot":"summaryText",children:/*#__PURE__*/_jsx(Markdown,{options:{overrides:markdownStyles},children:allData.summaryText})}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:props.performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData})]}))}return/*#__PURE__*/_jsxs("div",_extends({className:"p-[1em] relative"},rest,{children:[isEditingHeading?/*#__PURE__*/_jsx("div",{ref:headingEditRef,contentEditable:true,onBlur:saveHeadingChanges,"data-slot":"summaryHeading",className:"text-xl font-semibold text-left",suppressContentEditableWarning:true}):/*#__PURE__*/_jsx("h3",{className:"text-xl font-semibold text-left",onClick:startEditingHeading,"data-slot":"summaryHeading",children:allData.summaryHeading||"Insights"}),isEditing?/*#__PURE__*/_jsx("div",{ref:editRef,contentEditable:true,onBlur:saveChanges,"data-slot":"summaryText",className:"p-2 min-h-[100px] whitespace-pre-wrap",suppressContentEditableWarning:true,style:{whiteSpace:"pre-wrap",wordWrap:"break-word"}}):/*#__PURE__*/_jsx("div",{onClick:startEditing,"data-slot":"summaryText",style:{whiteSpace:"pre-wrap",wordWrap:"break-word"},children:/*#__PURE__*/_jsx(Markdown,{options:{overrides:markdownStyles},children:allData.summaryText})}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:props.performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData})]}))}export function renderButton(props){var _props$isEditable5=props.isEditable,isEditable=_props$isEditable5===void 0?false:_props$isEditable5,gjsModel=props.gjsModel,_props$performInterac4=props.performInteraction,performInteraction=_props$performInterac4===void 0?function(){}:_props$performInterac4;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})}var renderActionCardWithWrapper=function renderActionCardWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"ActionCard"}),children:renderActionCard(props)})};var renderButtonWithWrapper=function renderButtonWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Button"}),children:renderButton(props)})};var renderCardWithWrapper=function renderCardWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Card"}),children:renderCard(props)})};var renderChartWithWrapper=function renderChartWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Chart"}),children:renderChart(props)})};var renderFilterWithWrapper=function renderFilterWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Filter"}),children:renderFilter(props)})};var renderMarkdownWithWrapper=function renderMarkdownWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Markdown"}),children:renderMarkdown(props)})};var renderSearchWithWrapper=function renderSearchWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Search"}),children:renderSearch(props)})};var renderTableWithWrapper=function renderTableWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Table"}),children:renderTable(props)})};var renderTabWithWrapper=function renderTabWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Tabs"}),children:renderTab(props)})};function renderActions(props){var actions=props.actions,_props$isEditable6=props.isEditable,isEditable=_props$isEditable6===void 0?false:_props$isEditable6,gjsModel=props.gjsModel;if(actions===null){return/*#__PURE__*/_jsx("div",{})}if(!Array.isArray(actions)||actions.length===0){return/*#__PURE__*/_jsx("div",{className:"bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none relative",children:/*#__PURE__*/_jsx(CardLoader,{})})}return/*#__PURE__*/_jsx("div",{className:"dashboard-cards flex flex-wrap gap-4",children:actions.map(function(action,index){var icon=action.icon,title=action.title,description=action.description;return/*#__PURE__*/_jsx("div",{className:"flex-1 min-w-[200px]",children:renderActionCard({icon:icon,headerContent:title,bodyContent:description,isEditable:isEditable,gjsModel:gjsModel})},index)})})}var renderActionsWithWrapper=function renderActionsWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Actions"}),children:renderActions(props)})};export function getRenderers(){return{ActionCard:renderActionCardWithWrapper,Actions:renderActionsWithWrapper,Button:renderButtonWithWrapper,Card:renderCardWithWrapper,Chart:renderChartWithWrapper,Filter:renderFilterWithWrapper,Markdown:renderMarkdownWithWrapper,Search:renderSearchWithWrapper,Table:renderTableWithWrapper,Tabs:renderTabWithWrapper}}
8
+ var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState3=useState(initialData),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,dataClassName=allData.className,dataError=allData.error,dataIsMissing=allData.isMissing;function toSafeText(value){if(value===null){return""}return typeof value==="string"?value:JSON.stringify(value)}var safeHeaderContent=toSafeText(headerContent);var safeHeaderDescription=toSafeText(headerDescription);var safeBodyContent=toSafeText(bodyContent);var safeFooterContent=toSafeText(footerContent);var safeContentMetadata=toSafeText(contentMetadata);var _useState4=useState(safeFooterContent.length>0),footerHasContent=_useState4[0],setFooterHasContent=_useState4[1];var _useState5=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState5[0],setAttributes=_useState5[1];useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);useEffect(function(){setFooterHasContent(safeFooterContent.length>0)},[safeFooterContent]);var defaultClasses="bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none";var defaultFooterClasses=footerHasContent?"text-sm bg-pink-50 text-pink-900 shadow-sm":"text-sm";var defaultContentMetadataClasses="text-xs";var mergedCardClassName=dataClassName?cn(defaultClasses,dataClassName):defaultClasses;var mergedFooterClassName=footerClass?cn(defaultFooterClasses,footerClass):defaultFooterClasses;var mergedContentMetadataClassName=contentMetadataClass?cn(defaultContentMetadataClasses,contentMetadataClass):defaultContentMetadataClasses;var hasError=Boolean((_attributes$error=attributes==null?void 0:attributes.error)!=null?_attributes$error:dataError);var hasMissing=Boolean((_attributes$isMissing=attributes==null?void 0:attributes.isMissing)!=null?_attributes$isMissing:dataIsMissing);var isLoading=Boolean(((attributes==null?void 0:attributes.interactionApiInProgress)||(attributes==null?void 0:attributes.loading))&&!hasError&&!hasMissing);var footerIconText=typeof footerIcon==="string"?footerIcon:footerIcon&&typeof footerIcon==="object"&&"icon"in footerIcon?String(footerIcon.icon):"";function getCardContent(){if(isLoading){return/*#__PURE__*/_jsx(CardContent,{children:/*#__PURE__*/_jsx(CardLoader,{})})}var showEmpty=hasError||hasMissing||!safeBodyContent;function handleFooterInput(event){var target=event.target;var content=target.textContent||"";var hasContent=content.trim().length>0;setFooterHasContent(hasContent);if(!hasContent){var currentProps=gjsModel.get("componentProps");gjsModel.set("componentProps",_extends({},currentProps,{footerContent:null,footerIcon:null,footerClass:null,isEmptied:true}))}}return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(CardHeader,{children:/*#__PURE__*/_jsx("div",{className:"flex items-start justify-between",children:/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"headerContent",contentEditable:isEditable,className:"text-lg",children:safeHeaderContent}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"headerDescription",contentEditable:isEditable,className:"text-sm",children:safeHeaderDescription})]})})}),showEmpty?/*#__PURE__*/_jsxs("span",{className:"flex flex-row items-center px-3 py-2",children:[/*#__PURE__*/_jsx(CircleAlert,{className:"w-3 h-3 text-gray-400 mr-1"}),/*#__PURE__*/_jsx("p",{className:"text-sm text-gray-500 max-w-md text-center",children:"No data available for given filters"})]}):/*#__PURE__*/_jsxs(CardContent,{"data-slot":"bodyContent",contentEditable:false,className:"flex-grow",children:[/*#__PURE__*/_jsx("div",{className:"text-3xl font-semibold truncate",children:safeBodyContent}),safeContentMetadata&&/*#__PURE__*/_jsx("div",{className:mergedContentMetadataClassName,style:{color:"#2A44D4"},children:safeContentMetadata})]}),/*#__PURE__*/_jsxs(CardFooter,{"data-slot":"footerContent",contentEditable:isEditable,className:mergedFooterClassName,onInput:handleFooterInput,children:[(footerIconText||"").trim()?/*#__PURE__*/_jsx("span",{className:"mr-2","aria-hidden":"true",children:footerIconText}):null,safeFooterContent||""]})]})}return/*#__PURE__*/_jsxs(Card,_extends({},rest,{className:mergedCardClassName+" relative",children:[getCardContent(),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData})]}))}function renderChartComponent(chartType,data,config){var safeData=Array.isArray(data)?data:[];if(safeData.length===0){return renderNoDataFallback()}switch(chartType){case"pie":return/*#__PURE__*/_jsxs(PieChart,{children:[safeData.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:safeData,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:safeData.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||[];var barDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];return/*#__PURE__*/_jsxs(BarChart,_extends({data:safeData},config.chartUi,barDataKeys.length>1&&{barGap:0},{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(Legend,{align:"left",wrapperStyle:{marginLeft:20}}),barDataKeys.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||[];var safeDataKeysLine=Array.isArray(config.dataKeys)?config.dataKeys:[];return/*#__PURE__*/_jsxs(LineChart,_extends({data:safeData},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})}),safeDataKeysLine.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:[safeData.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:safeData,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:safeData.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,_props$performInterac2=props.performInteraction,performInteraction=_props$performInterac2===void 0?function(){return Promise.resolve({})}:_props$performInterac2,rest=_objectWithoutPropertiesLoose(props,_excluded3);// Memoize filtered props to avoid re-filtering on every render
9
+ var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState6=useState(initialData),allData=_useState6[0],setAllData=_useState6[1];var _useState7=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState7[0],setAttributes=_useState7[1];var containerRef=useRef(null);var _useState8=useState(0),containerWidth=_useState8[0],setContainerWidth=_useState8[1];useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){var handleAttributesChange=function handleAttributesChange(){var newAttributes=gjsModel.get("attributes");setAttributes(_extends({},newAttributes))};gjsModel.on("change:attributes",handleAttributesChange);return function(){gjsModel.off("change:attributes",handleAttributesChange)}},[gjsModel]);useEffect(function(){var updateContainerWidth=function updateContainerWidth(){if(containerRef.current){setContainerWidth(containerRef.current.offsetWidth||0)}};var resizeObserver=new ResizeObserver(function(entries){for(var _iterator2=_createForOfIteratorHelperLoose(entries),_step2;!(_step2=_iterator2()).done;){var entry=_step2.value;setContainerWidth(entry.contentRect.width||0)}});updateContainerWidth();var timeoutId=setTimeout(updateContainerWidth,50);if(containerRef.current){resizeObserver.observe(containerRef.current)}window.addEventListener("resize",updateContainerWidth);return function(){clearTimeout(timeoutId);resizeObserver.disconnect();window.removeEventListener("resize",updateContainerWidth)}},[]);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 safeChartData=Array.isArray(chartData)?chartData:[];var colors=getNColors(safeChartData.length);safeChartData.forEach(function(data,i){if(!data.fill){data.fill=colors[i]}})}else if(!config.color){var safeBaseColors=Array.isArray(baseColors)?baseColors:[];if(safeBaseColors.length>0){config.color=safeBaseColors[Math.floor(Math.random()*safeBaseColors.length)]}}var totalDataPoints=0;if(chartType==="bar"||chartType==="line"){var _safeChartData=Array.isArray(chartData)?chartData:[];var safeDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];totalDataPoints=chartType==="bar"?_safeChartData.length*Math.max(1,safeDataKeys.length):_safeChartData.length}var getScrollableWidth=function getScrollableWidth(){if(chartType==="line"){return totalDataPoints*20}if(chartType==="bar"){return totalDataPoints*20+(Array.isArray(config.dataKeys)?config.dataKeys.length:0)*8*(Array.isArray(chartData)?chartData.length:0)+(Array.isArray(chartData)?chartData.length:0)*15}return 800};var scrollWidth=getScrollableWidth();var shouldScroll=(chartType==="bar"||chartType==="line")&&totalDataPoints>15&&scrollWidth>containerWidth;var hasError=attributes.error||allData.error;var hasMissing=attributes.isMissing||allData.isMissing;var isLoading=(attributes.interactionApiInProgress||attributes.loading)&&!hasError&&!hasMissing;var ChartWrapper=function ChartWrapper(_ref5){var children=_ref5.children;if(shouldScroll){return/*#__PURE__*/_jsx("div",{className:"w-full h-[250px] overflow-x-auto",children:/*#__PURE__*/_jsx("div",{style:{minWidth:scrollWidth+"px",height:"250px"},children:children})})}return/*#__PURE__*/_jsx("div",{className:"w-full h-[250px]",children:children})};var chartUi=isLoading?/*#__PURE__*/_jsx(ChartLoader,{}):hasError||hasMissing||!chartData?renderNoDataFallback():/*#__PURE__*/_jsx(ChartWrapper,{children:/*#__PURE__*/_jsx(ResponsiveContainer,{width:"100%",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 relative",children:[/*#__PURE__*/_jsx(CardHeader,{children:/*#__PURE__*/_jsx("div",{className:"flex items-start justify-between",children:/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"title",contentEditable:isEditable,className:"text-2xl",children:title}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"subTitle",contentEditable:isEditable,className:"text-sm",children:subTitle})]})})}),/*#__PURE__*/_jsx(CardContent,{ref:containerRef,"data-slot":"bodyContent",className:"px-6",children:chartUi}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData})]})}export function renderTable(props){var _props$isEditable3=props.isEditable,isEditable=_props$isEditable3===void 0?false:_props$isEditable3,gjsModel=props.gjsModel,_props$performInterac3=props.performInteraction,performInteraction=_props$performInterac3===void 0?function(){}:_props$performInterac3,rest=_objectWithoutPropertiesLoose(props,_excluded4);// Memoize filtered props to avoid re-filtering on every render
10
+ var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState9=useState(initialData),allData=_useState9[0],setAllData=_useState9[1];var cardRef=useRef(null);var _useState10=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState10[0],setAttributes=_useState10[1];var rawData=allData.data,_allData$headerMapper=allData.headerMapper,rawHeaderMapper=_allData$headerMapper===void 0?{}:_allData$headerMapper,className=allData.className,_allData$title2=allData.title,title=_allData$title2===void 0?"Title":_allData$title2,_allData$subTitle2=allData.subTitle,subTitle=_allData$subTitle2===void 0?"Subtitle":_allData$subTitle2,_allData$actions=allData.actions,actions=_allData$actions===void 0?[]:_allData$actions,pagination=allData.pagination;var data=Array.isArray(rawData)?rawData:[];var headerMapper=function(){var cleaned=_extends({},rawHeaderMapper);if("id"in cleaned){delete cleaned.id}if(data.length>0){var dataKeys=Object.keys(data[0]||{});return Object.fromEntries(Object.entries(cleaned).filter(function(_ref6){var key=_ref6[0];return dataKeys.includes(key)}))}return cleaned}();var sortConfig=function(_gjsModel$get,_ref8){var _ref7=(_gjsModel$get=gjsModel.get("componentProps"))!=null?_gjsModel$get:{},sortColumn=_ref7.sortColumn,sortDirection=_ref7.sortDirection;return sortColumn&&sortDirection?(_ref8={},_ref8[sortColumn]=sortDirection,_ref8):{}}();var _useState11=useState(0),viewportWidth=_useState11[0],setViewportWidth=_useState11[1];var _useState12=useState(250),scrollAreaHeight=_useState12[0],setScrollAreaHeight=_useState12[1];var calculateTableHeight=function calculateTableHeight(tableWidth,rowCount){if(viewportWidth>0){var _gjsModel$collection;var widthRatio=tableWidth/viewportWidth;var baseTableHeight=250;var targetScrollAreaHeight=baseTableHeight;if(widthRatio>=0.8){var headerHeight=48;var rowHeight=40;var calculatedHeight=headerHeight+rowCount*rowHeight;targetScrollAreaHeight=Math.min(calculatedHeight,baseTableHeight)}var tableId=gjsModel.get("id");var editor=gjsModel.em||((_gjsModel$collection=gjsModel.collection)==null?void 0:_gjsModel$collection.em);var canvasDocument=editor.Canvas.getDocument()||document;var tableElement=canvasDocument.querySelector("[data-table-id=\""+tableId+"\"]");if(tableElement){var headerElement=tableElement.querySelector("[data-slot=\"card-header\"]");if(headerElement&&headerElement.offsetHeight>0){var actualHeaderHeight=headerElement.offsetHeight;var standardHeaderHeight=58;var heightDifference=actualHeaderHeight-standardHeaderHeight;if(heightDifference>0){targetScrollAreaHeight=targetScrollAreaHeight-heightDifference}}}setScrollAreaHeight(targetScrollAreaHeight)}};useEffect(function(){var updateViewportWidth=function updateViewportWidth(){var iframe=document.querySelector(".gjs-frame");var iframeWindow=iframe==null?void 0:iframe.contentWindow;var iframeDocument=iframeWindow==null?void 0:iframeWindow.document;if(iframeDocument){var dashboardRoot=iframeDocument.getElementById("dashboard-root");var effectiveViewportWidth=(dashboardRoot==null?void 0:dashboardRoot.clientWidth)||iframeDocument.documentElement.clientWidth;setViewportWidth(effectiveViewportWidth)}};updateViewportWidth();window.addEventListener("resize",updateViewportWidth);var iframe=document.querySelector(".gjs-frame");var iframeWindow=iframe==null?void 0:iframe.contentWindow;if(iframeWindow){iframeWindow.addEventListener("resize",updateViewportWidth)}return function(){window.removeEventListener("resize",updateViewportWidth);if(iframeWindow){iframeWindow.removeEventListener("resize",updateViewportWidth)}}},[]);useEffect(function(){var updateTableWidthAndApplyCSS=function updateTableWidthAndApplyCSS(){var _gjsModel$collection2;var tableId=gjsModel.get("id");var editor=gjsModel.em||((_gjsModel$collection2=gjsModel.collection)==null?void 0:_gjsModel$collection2.em);var canvasDocument=editor.Canvas.getDocument()||document;var tableElement=canvasDocument.querySelector("[data-table-id=\""+tableId+"\"]");if(!tableElement&&window.parent!==window){tableElement=window.parent.document.querySelector("[data-table-id=\""+tableId+"\"]")}if(!tableElement){return}var tableActualWidth=tableElement.getBoundingClientRect().width;if(tableActualWidth>0){calculateTableHeight(tableActualWidth,Array.isArray(data)?data.length:0)}};var timeoutId=setTimeout(updateTableWidthAndApplyCSS,150);window.addEventListener("resize",updateTableWidthAndApplyCSS);return function(){clearTimeout(timeoutId);window.removeEventListener("resize",updateTableWidthAndApplyCSS)}},[allData,gjsModel,viewportWidth,data,calculateTableHeight]);useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){var handleAttributesChange=function handleAttributesChange(){setAttributes(_extends({},gjsModel.get("attributes")))};gjsModel.on("change:attributes",handleAttributesChange);return function(){gjsModel.off("change:attributes",handleAttributesChange)}},[gjsModel]);var parsedData=function(){if(typeof data==="object"&&data!==null&&!Array.isArray(data)&&data.name==="__peak_placeholder"){return[]}if(!Array.isArray(data)){return[]}return data.map(function(datum){var newData=_extends({},datum);delete newData.id;return newData})}();function onRowAction(_x,_x2){return _onRowAction.apply(this,arguments)}function _onRowAction(){_onRowAction=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(rowIndex,actionId){var id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:id=gjsModel.get("id");_context.next=3;return performInteraction({id:actionId,interactionType:"tableButton",payload:{row:data[rowIndex],tableId:id},affectedComponents:[]});case 3:case"end":return _context.stop()}},_callee)}));return _onRowAction.apply(this,arguments)}function onPageChange(_x3,_x4){return _onPageChange.apply(this,arguments)}function _onPageChange(){_onPageChange=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(pageNumber,pageSize){var _gjsModel$get2;var id,_ref9,sortColumn,sortDirection;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:id=gjsModel.get("id");_ref9=(_gjsModel$get2=gjsModel.get("componentProps"))!=null?_gjsModel$get2:{},sortColumn=_ref9.sortColumn,sortDirection=_ref9.sortDirection;_context2.next=4;return performInteraction({id:id,interactionType:"pagination",payload:_extends({pageNumber:pageNumber,pageSize:pageSize},sortColumn&&sortDirection&&{sortColumn:sortColumn,sortDirection:sortDirection}),affectedComponents:getAffectedComponentsWithLoader([id],true)});case 4:case"end":return _context2.stop()}},_callee2)}));return _onPageChange.apply(this,arguments)}function handleSort(_x5,_x6){return _handleSort.apply(this,arguments)}function _handleSort(){_handleSort=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(column,direction){var currentProps,id;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:currentProps=gjsModel.get("componentProps");id=gjsModel.get("id");gjsModel.set("componentProps",_extends({},currentProps,{sortColumn:direction?column:null,sortDirection:direction}));_context3.next=5;return performInteraction({id:id,interactionType:"tableSort",payload:{sortColumn:direction?column:null,sortDirection:direction,tableId:id},affectedComponents:getAffectedComponentsWithLoader([id],true)});case 5:case"end":return _context3.stop()}},_callee3)}));return _handleSort.apply(this,arguments)}return/*#__PURE__*/_jsxs(Card,{ref:cardRef,className:"shadow border relative flex flex-col h-fit overflow-hidden","data-component-type":"table","data-table-id":gjsModel.get("id"),children:[/*#__PURE__*/_jsx(CardHeader,{children:/*#__PURE__*/_jsx("div",{className:"flex items-start justify-between",children:/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"title",contentEditable:isEditable,className:"text-2xl",children:title}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"subTitle",contentEditable:isEditable,className:"text-sm",children:subTitle})]})})}),/*#__PURE__*/_jsx(CardContent,{"data-slot":"bodyContent",contentEditable:false,className:"flex-1 flex flex-col overflow-hidden",children:attributes.error||allData.error||attributes.isMissing||allData.isMissing?renderNoDataFallback():/*#__PURE__*/_jsx(DataTable,{data:parsedData,headerMapper:headerMapper,className:className,isEditable:isEditable,actions:actions,pagination:pagination,isLoading:attributes.interactionApiInProgress||attributes.loading,onRowAction:onRowAction,onPageChange:onPageChange,onSort:handleSort,sortConfig:sortConfig,otherProps:rest,height:scrollAreaHeight})}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:performInteraction,position:"top-right",tableActions:actions,firstRowData:Array.isArray(data)&&data.length>0?data[0]:{},isVisible:isEditable,componentProps:allData})]})}export function renderTab(props){var tabsWidth=157;var safeTabs=Array.isArray(props.tabs)?props.tabs:[];var showFallback=safeTabs.length===0;if(safeTabs.length>4){tabsWidth=157}var defaultValue=props.defaultValue||(safeTabs.length>0?safeTabs[0]:undefined);return/*#__PURE__*/_jsxs(Tabs,{defaultValue:defaultValue,children:[/*#__PURE__*/_jsx("div",{className:"text-center mb-4",children:/*#__PURE__*/_jsx(TabsList,{className:"bg-[#F9F9FE] border border-[#D4D5DE] p-1 rounded-lg h-auto",children:safeTabs.length>0?safeTabs.map(function(tab){return/*#__PURE__*/_jsx(TabsTrigger,{value:tab,className:"\n w-["+tabsWidth+"px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n ",style:{fontFamily:"Helvetica Neue",fontWeight:500,fontSize:"14px",lineHeight:"16px",letterSpacing:"0%"},children:tab},tab)}):/*#__PURE__*/_jsx(TabsTrigger,{value:"no-data",className:"\n w-["+tabsWidth+"px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n ",style:{fontFamily:"Helvetica Neue",fontWeight:500,fontSize:"14px",lineHeight:"16px",letterSpacing:"0%"},disabled:true,children:"No tabs"})})}),showFallback?/*#__PURE__*/_jsx(TabsContent,{value:defaultValue||"no-data",className:"tabs-content","data-fallback":"true",children:renderNoDataFallback()}):safeTabs.map(function(tab){return/*#__PURE__*/_jsx(TabsContent,{value:tab,className:"tabs-content"},tab)})]})}export function renderMarkdown(props){var _props$isEditable4=props.isEditable,isEditable=_props$isEditable4===void 0?false:_props$isEditable4,gjsModel=props.gjsModel,rest=_objectWithoutPropertiesLoose(props,_excluded5);// Memoize filtered props to avoid re-filtering on every render
11
+ var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState13=useState(initialData),allData=_useState13[0],setAllData=_useState13[1];var _useState14=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState14[0],setAttributes=_useState14[1];useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){var handleAttributesChange=function handleAttributesChange(){setAttributes(_extends({},gjsModel.get("attributes")))};gjsModel.on("change:attributes",handleAttributesChange);return function(){gjsModel.off("change:attributes",handleAttributesChange)}},[gjsModel]);var _useState15=useState(false),isEditing=_useState15[0],setIsEditing=_useState15[1];var _useState16=useState(false),isEditingHeading=_useState16[0],setIsEditingHeading=_useState16[1];var editRef=useRef(null);var headingEditRef=useRef(null);var startEditing=function startEditing(){setIsEditing(true);setTimeout(function(){setupEditor()},0)};var startEditingHeading=function startEditingHeading(){setIsEditingHeading(true);setTimeout(function(){setupHeadingEditor()},0)};var setupEditor=function setupEditor(){if(!editRef.current){return}var editor=editRef.current;editor.innerHTML="";editor.textContent=allData.summaryText;editor.focus()};var setupHeadingEditor=function setupHeadingEditor(){if(!headingEditRef.current){return}var editor=headingEditRef.current;editor.innerHTML="";editor.textContent=allData.summaryHeading||"Insights";editor.focus()};// Save changes and exit editing mode
12
+ var saveChanges=function saveChanges(){if(!editRef.current){return}var content=editRef.current.innerText||"";setAllData(function(prev){return _extends({},prev,{summaryText:content})});setIsEditing(false);editRef.current.innerHTML=""};var saveHeadingChanges=function saveHeadingChanges(){if(!headingEditRef.current){return}var content=headingEditRef.current.innerText||"Insights";setAllData(function(prev){return _extends({},prev,{summaryHeading:content})});setIsEditingHeading(false);headingEditRef.current.innerHTML=""};var markdownStyles={ul:{props:{className:"list-disc"}},h1:{props:{className:"text-4xl font-bold leading-[4rem]"}},h2:{props:{className:"text-3xl font-bold leading-[3rem]"}},h3:{props:{className:"text-2xl font-bold leading-[2rem]"}},h4:{props:{className:"text-xl font-bold leading-[2.5rem]"}},h5:{props:{className:"text-lg font-bold leading-[2.5rem]"}},h6:{props:{className:"text-base font-bold leading-[2rem]"}}};var hasError=attributes.error||allData.error;var hasMissing=attributes.isMissing||allData.isMissing;var isLoading=attributes.loading&&!hasError&&!hasMissing||attributes.interactionApiInProgress;if(isLoading){return/*#__PURE__*/_jsx(MarkdownLoader,{})}if(hasError||hasMissing){return/*#__PURE__*/_jsxs("div",_extends({className:"px-[1em] relative"},rest,{children:[/*#__PURE__*/_jsx("h3",{className:"text-xl font-semibold text-left",children:allData.summaryHeading||"Insights"}),/*#__PURE__*/_jsxs("div",{className:"w-full py-8 flex flex-col items-center justify-center px-6 text-center",style:{minHeight:"180px"},children:[/*#__PURE__*/_jsx(CircleAlert,{className:"w-12 h-12 text-gray-400 mb-2"}),/*#__PURE__*/_jsx("h3",{className:"text-lg font-medium text-gray-900",children:"No data available"}),/*#__PURE__*/_jsx("p",{className:"mt-2 text-sm text-gray-500 max-w-md",children:"Check your filters or try a different time range."})]}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:props.performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData})]}))}if(!allData.isEditable){return/*#__PURE__*/_jsxs("div",_extends({className:"px-[1em] relative"},rest,{children:[/*#__PURE__*/_jsx("h3",{className:"text-xl font-semibold text-left",children:allData.summaryHeading||"Insights"}),/*#__PURE__*/_jsx("div",{"data-slot":"summaryText",children:/*#__PURE__*/_jsx(Markdown,{options:{overrides:markdownStyles},children:allData.summaryText})}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:props.performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData})]}))}return/*#__PURE__*/_jsxs("div",_extends({className:"p-[1em] relative"},rest,{children:[isEditingHeading?/*#__PURE__*/_jsx("div",{ref:headingEditRef,contentEditable:true,onBlur:saveHeadingChanges,"data-slot":"summaryHeading",className:"text-xl font-semibold text-left",suppressContentEditableWarning:true}):/*#__PURE__*/_jsx("h3",{className:"text-xl font-semibold text-left",onClick:startEditingHeading,"data-slot":"summaryHeading",children:allData.summaryHeading||"Insights"}),isEditing?/*#__PURE__*/_jsx("div",{ref:editRef,contentEditable:true,onBlur:saveChanges,"data-slot":"summaryText",className:"p-2 min-h-[100px] whitespace-pre-wrap",suppressContentEditableWarning:true,style:{whiteSpace:"pre-wrap",wordWrap:"break-word"}}):/*#__PURE__*/_jsx("div",{onClick:startEditing,"data-slot":"summaryText",style:{whiteSpace:"pre-wrap",wordWrap:"break-word"},children:/*#__PURE__*/_jsx(Markdown,{options:{overrides:markdownStyles},children:allData.summaryText})}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:props.performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData})]}))}export function renderButton(props){var _props$isEditable5=props.isEditable,isEditable=_props$isEditable5===void 0?false:_props$isEditable5,gjsModel=props.gjsModel,_props$performInterac4=props.performInteraction,performInteraction=_props$performInterac4===void 0?function(){}:_props$performInterac4;var _useState17=useState(_extends({},props)),allData=_useState17[0],setAllData=_useState17[1];var _useState18=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState18[0],setAttributes=_useState18[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})}var renderActionCardWithWrapper=function renderActionCardWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"ActionCard"}),children:renderActionCard(props)})};var renderButtonWithWrapper=function renderButtonWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Button"}),children:renderButton(props)})};var renderCardWithWrapper=function renderCardWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Card"}),children:renderCard(props)})};var renderChartWithWrapper=function renderChartWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Chart"}),children:renderChart(props)})};var renderFilterWithWrapper=function renderFilterWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Filter"}),children:renderFilter(props)})};var renderMarkdownWithWrapper=function renderMarkdownWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Markdown"}),children:renderMarkdown(props)})};var renderSearchWithWrapper=function renderSearchWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Search"}),children:renderSearch(props)})};var renderTableWithWrapper=function renderTableWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Table"}),children:renderTable(props)})};var renderTabWithWrapper=function renderTabWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Tabs"}),children:renderTab(props)})};function renderActions(props){var actions=props.actions,_props$isEditable6=props.isEditable,isEditable=_props$isEditable6===void 0?false:_props$isEditable6,gjsModel=props.gjsModel;if(actions===null){return/*#__PURE__*/_jsx("div",{})}if(!Array.isArray(actions)||actions.length===0){return/*#__PURE__*/_jsx("div",{className:"bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none relative",children:/*#__PURE__*/_jsx(CardLoader,{})})}return/*#__PURE__*/_jsx("div",{className:"dashboard-cards flex flex-wrap gap-4",children:actions.map(function(action,index){var icon=action.icon,title=action.title,description=action.description;return/*#__PURE__*/_jsx("div",{className:"flex-1 min-w-[200px]",children:renderActionCard({icon:icon,headerContent:title,bodyContent:description,isEditable:isEditable,gjsModel:gjsModel})},index)})})}var renderActionsWithWrapper=function renderActionsWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:_extends({},props,{componentType:"Actions"}),children:renderActions(props)})};export function getRenderers(){return{ActionCard:renderActionCardWithWrapper,Actions:renderActionsWithWrapper,Button:renderButtonWithWrapper,Card:renderCardWithWrapper,Chart:renderChartWithWrapper,Filter:renderFilterWithWrapper,Markdown:renderMarkdownWithWrapper,Search:renderSearchWithWrapper,Table:renderTableWithWrapper,Tabs:renderTabWithWrapper}}
27
13
  //# sourceMappingURL=render-components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render-components.js","names":["chroma","React","useEffect","useState","useMemo","useRef","renderNoDataFallback","CircleAlert","TrendingDown","TrendingUp","ShoppingCart","ChartBarBig","Tag","MapPin","StyledInfoButton","filterPlaceholders","theme","Markdown","Bar","BarChart","CartesianGrid","Legend","Line","LineChart","Pie","PieChart","ResponsiveContainer","Scatter","ScatterChart","XAxis","YAxis","Cell","domutil","TooltipButton","Card","CardContent","CardDescription","CardFooter","CardHeader","CardTitle","ChartContainer","ChartTooltip","ChartTooltipContent","renderFilter","renderSearch","CardLoader","ChartLoader","MarkdownLoader","Tabs","TabsContent","TabsList","TabsTrigger","cn","getAffectedComponentsWithLoader","DataTable","ComponentWrapper","jsx","_jsx","jsxs","_jsxs","getOffset","el","html","ownerDocument","documentElement","box","top","left","getBoundingClientRect","iframe","document","querySelector","iframeWindow","contentWindow","pageYOffset","clientTop","pageXOffset","clientLeft","baseColors","colors","Blue_100","Blue_30","Purpley_100","Purpley_30","Light_Bluish_Green","Wild_Strawberry","iconMap","Equalizer","Style","Place","getIconFromString","iconString","lowerIconString","toLowerCase","matchingKey","Object","keys","find","key","getNColors","n","safeBaseColors","Array","isArray","_iterator","_createForOfIteratorHelperLoose","_step","done","baseColor","value","push","scale","mode","getOneColor","existing","color","base","Math","floor","random","length","selectedColorIndex","includes","selectedColors","i","renderActionCard","props","gjsModel","rest","_objectWithoutPropertiesLoose","_excluded","initialData","_useState","allData","setAllData","_allData$headerConten","headerContent","icon","_allData$bodyContent","bodyContent","_useState2","_extends","get","attributes","setAttributes","handlePropsChange","newComponentProps","filteredProps","prevData","on","off","defaultClasses","className","style","backgroundColor","isEditable","contentEditable","children","error","isMissing","renderCard","_attributes$error","_attributes$isMissing","_props$isEditable","_props$performInterac","performInteraction","Promise","resolve","_excluded2","_useState3","headerDescription","footerContent","footerClass","footerIcon","contentMetadata","contentMetadataClass","dataClassName","dataError","dataIsMissing","toSafeText","JSON","stringify","safeHeaderContent","safeHeaderDescription","safeBodyContent","safeFooterContent","safeContentMetadata","_useState4","defaultFooterClasses","defaultContentMetadataClasses","mergedCardClassName","mergedFooterClassName","mergedContentMetadataClassName","hasError","Boolean","hasMissing","isLoading","interactionApiInProgress","loading","footerIconText","String","getCardContent","showEmpty","Fragment","trim","componentId","position","isVisible","componentProps","transformDataForScatter","data","xAxis","yAxis","dataKeys","scatterData","filter","item","undefined","map","_result","result","Number","forEach","_ref","binDataForHistogram","valueKey","bins","values","val","isNaN","min","apply","max","binWidth","binsArray","fill","binLabels","binStart","binEnd","toFixed","binIndex","label","index","bin","frequency","transformDataForBeeswarm","groupBy","grouped","group","groups","sort","groupIndex","jitterRadius","valueIndex","angle","PI","radius","jitterX","cos","x","y","renderChartComponent","chartType","config","safeData","cursor","content","hideLabel","dataKey","nameKey","innerRadius","strokeWidth","_ref2","name","percent","labelLine","barDataKeys","chartUi","barGap","vertical","align","wrapperStyle","marginLeft","_ref3","indicator","safeDataKeysLine","_ref4","type","stroke","safeDataKeys","_ref5","domain","strokeDasharray","_ref6","binnedData","textAnchor","height","entry","_config$dataKeys$","_config$dataKeys$2","swarmData","from","Set","ticks","_","tickFormatter","round","offset","_ref7","active","payload","pointData","_ref8","renderChart","_props$isEditable2","_props$performInterac2","_excluded3","_useState5","_useState6","containerRef","_useState7","containerWidth","setContainerWidth","handleAttributesChange","newAttributes","updateContainerWidth","current","offsetWidth","resizeObserver","ResizeObserver","entries","_iterator2","_step2","contentRect","width","timeoutId","setTimeout","observe","window","addEventListener","clearTimeout","disconnect","removeEventListener","_allData$config","_allData$chartType","_allData$chartData","chartData","_allData$title","title","_allData$subTitle","subTitle","mergedClasses","safeChartData","totalDataPoints","getScrollableWidth","scrollWidth","shouldScroll","ChartWrapper","_ref9","minWidth","ref","renderTable","_props$isEditable3","_props$performInterac3","_excluded4","_useState8","cardRef","_useState9","rawData","_allData$headerMapper","headerMapper","rawHeaderMapper","_allData$title2","_allData$subTitle2","_allData$actions","actions","pagination","cleaned","id","fromEntries","_ref10","sortConfig","_gjsModel$get","_ref12","_ref11","sortColumn","sortDirection","_useState10","viewportWidth","setViewportWidth","_useState11","scrollAreaHeight","setScrollAreaHeight","calculateTableHeight","tableWidth","rowCount","_gjsModel$collection","widthRatio","baseTableHeight","targetScrollAreaHeight","headerHeight","rowHeight","calculatedHeight","tableId","editor","em","collection","canvasDocument","Canvas","getDocument","tableElement","headerElement","offsetHeight","actualHeaderHeight","standardHeaderHeight","heightDifference","updateViewportWidth","iframeDocument","dashboardRoot","getElementById","effectiveViewportWidth","clientWidth","updateTableWidthAndApplyCSS","_gjsModel$collection2","parent","tableActualWidth","parsedData","datum","newData","onRowAction","_x","_x2","_onRowAction","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","rowIndex","actionId","wrap","_callee$","_context","prev","next","interactionType","row","affectedComponents","stop","onPageChange","_x3","_x4","_onPageChange","_callee2","pageNumber","pageSize","_gjsModel$get2","_ref13","_callee2$","_context2","handleSort","_x5","_x6","_handleSort","_callee3","column","direction","currentProps","_callee3$","_context3","set","onSort","otherProps","tableActions","firstRowData","renderTab","tabsWidth","safeTabs","tabs","showFallback","defaultValue","tab","fontFamily","fontWeight","fontSize","lineHeight","letterSpacing","disabled","renderMarkdown","_props$isEditable4","_excluded5","_useState12","_useState13","_useState14","isEditing","setIsEditing","_useState15","isEditingHeading","setIsEditingHeading","editRef","headingEditRef","startEditing","setupEditor","startEditingHeading","setupHeadingEditor","innerHTML","textContent","summaryText","focus","summaryHeading","saveChanges","innerText","saveHeadingChanges","markdownStyles","ul","h1","h2","h3","h4","h5","h6","minHeight","options","overrides","onBlur","suppressContentEditableWarning","onClick","whiteSpace","wordWrap","renderButton","_props$isEditable5","_props$performInterac4","_useState16","_useState17","text","_allData$variant","variant","_allData$size","size","tooltipContent","interact","concat","renderActionCardWithWrapper","componentType","renderButtonWithWrapper","renderCardWithWrapper","renderChartWithWrapper","renderFilterWithWrapper","renderMarkdownWithWrapper","renderSearchWithWrapper","renderTableWithWrapper","renderTabWithWrapper","renderActions","_props$isEditable6","action","description","renderActionsWithWrapper","getRenderers","ActionCard","Actions","Button","Chart","Filter","Search","Table"],"sources":["../../../src/plugins/helpers/render-components.tsx"],"sourcesContent":["/* eslint-disable no-nested-ternary */\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable func-style */\n/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable func-names */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport chroma from 'chroma-js';\nimport React, { useEffect, useState, useMemo, JSX, useRef } from 'react';\nimport { renderNoDataFallback } from './extra';\nimport {\n CircleAlert,\n TrendingDown,\n TrendingUp,\n ShoppingCart,\n ChartBarBig,\n Tag,\n MapPin,\n} from 'lucide-react';\nimport { StyledInfoButton } from './styled-info-button';\nimport { filterPlaceholders } from '../../helpers/filter-placeholder';\n\nimport { theme } from '@peak-ai/ais-components/theme';\n\nimport Markdown from 'markdown-to-jsx';\n\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n Line,\n LineChart,\n Pie,\n PieChart,\n ResponsiveContainer,\n Scatter,\n ScatterChart,\n XAxis,\n YAxis,\n Cell,\n} from 'recharts/lib';\n\n// @ts-ignore\nimport * as domutil from 'recharts/lib/util/DOMUtils';\n\nimport { TooltipButton } from '../../shadcn/components/ui/button';\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from '../../shadcn/components/ui/card';\nimport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n} from '../../shadcn/components/ui/chart';\nimport { renderFilter } from '../../shadcn/components/ui/filter';\nimport { renderSearch } from '../../shadcn/components/ui/search';\nimport { CardLoader, ChartLoader, MarkdownLoader } from '../../shadcn/components/ui/skeleton';\nimport { SortDirection } from '../../shadcn/components/ui/table';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '../../shadcn/components/ui/tabs';\n\nimport { cn } from '../../shadcn/utils';\nimport { getAffectedComponentsWithLoader } from '../../helpers';\nimport { DataTable } from './data-table';\nimport { ComponentWrapper } from '../../shadcn/components/ui/error-wrapper';\n\n// Monkey-patching the getOffset function to use iframe's window instead of global one\n// REMEMBER TO UDPATE THIS WHEN recharts IS UPGRADED\n// @ts-ignore\ndomutil.getOffset = (\n el: HTMLElement,\n): {\n top: number;\n left: number;\n} => {\n const html = el.ownerDocument.documentElement;\n let box = { top: 0, left: 0 };\n\n if (typeof el.getBoundingClientRect !== 'undefined') {\n box = el.getBoundingClientRect();\n }\n\n const iframe = document.querySelector('.gjs-frame');\n const iframeWindow = (iframe as any)?.contentWindow;\n\n return {\n top: box.top + iframeWindow.pageYOffset - html.clientTop,\n left: box.left + iframeWindow.pageXOffset - html.clientLeft,\n };\n};\n\nconst baseColors = [\n [theme.colors.Blue_100, theme.colors.Blue_30],\n [theme.colors.Purpley_100, theme.colors.Purpley_30],\n [theme.colors.Light_Bluish_Green, '#06601b'],\n [theme.colors.Wild_Strawberry, '#4d001c'],\n];\n\nconst iconMap: Record<string, JSX.Element> = {\n TrendingUp: <TrendingUp />,\n TrendingDown: <TrendingDown />,\n ShoppingCart: <ShoppingCart />,\n Equalizer: <ChartBarBig />,\n Style: <Tag />,\n Place: <MapPin />,\n};\n\nfunction getIconFromString(iconString: string): JSX.Element | null {\n if (!iconString) {\n return null;\n }\n\n if (iconMap[iconString]) {\n return iconMap[iconString];\n }\n\n const lowerIconString = iconString.toLowerCase();\n const matchingKey = Object.keys(iconMap).find((key) => key.toLowerCase() === lowerIconString);\n\n if (matchingKey) {\n return iconMap[matchingKey];\n }\n\n return null;\n}\n\nfunction getNColors(n: number) {\n const colors: Array<string[]> = [];\n const safeBaseColors = Array.isArray(baseColors) ? baseColors : [];\n\n for (const baseColor of safeBaseColors) {\n // eslint-disable-next-line import/no-named-as-default-member\n colors.push(chroma.scale(baseColor).mode('lab').colors(n));\n }\n\n function getOneColor(existing: Array<string>) {\n let color: null | string = null;\n\n do {\n const base = colors[Math.floor(Math.random() * colors.length)];\n const selectedColorIndex = Math.floor(Math.random() * base.length);\n color = base[selectedColorIndex];\n } while (existing.includes(color));\n\n return color as string;\n }\n\n const selectedColors: Array<string> = [];\n\n for (let i = 0; i < n; i++) {\n selectedColors.push(getOneColor(selectedColors));\n }\n\n return selectedColors;\n}\n\n/* TODO: Loader remains */\nexport function renderActionCard(props: any): JSX.Element {\n const { gjsModel, ...rest } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const {\n headerContent = 'Default action card title',\n icon,\n bodyContent = 'Default body content. Click to edit.',\n } = allData;\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData,\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const defaultClasses = 'text-black p-4 rounded-lg shadow border flex flex-col h-full';\n\n return (\n <Card\n className={`${defaultClasses} relative`}\n style={{ backgroundColor: '#f9f9fe' }}\n isEditable={false}\n contentEditable={false}\n {...rest}\n >\n <CardContent className=\"p-0\" isEditable={false} contentEditable={false}>\n <div className=\"px-4 py-3\">\n <div className=\"flex items-start flex-col\">\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"text-xl font-semibold\">{headerContent}</div>\n <div className=\"text-5xl ml-2 flex items-center\" aria-hidden=\"true\">\n {getIconFromString(icon)}\n </div>\n </div>\n <div className=\"w-full mt-1\">\n {attributes.error ||\n allData.error ||\n attributes.isMissing ||\n allData.isMissing ||\n !bodyContent ? (\n <span className=\"flex flex-row items-center px-3 py-2\">\n <CircleAlert className=\"w-3 h-3 text-gray-400 mr-1\" />\n <p className=\"text-sm text-gray-500 max-w-md text-center\">\n No data available for given filters\n </p>\n </span>\n ) : (\n <div className=\"text-base leading-relaxed\">{bodyContent}</div>\n )}\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n );\n}\n\nexport function renderCard(props: any): JSX.Element {\n const {\n isEditable = false,\n gjsModel,\n performInteraction = () => Promise.resolve({}),\n ...rest\n } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const {\n headerContent,\n headerDescription,\n bodyContent,\n footerContent,\n footerClass,\n footerIcon,\n contentMetadata,\n contentMetadataClass,\n className: dataClassName,\n error: dataError,\n isMissing: dataIsMissing,\n } = allData;\n\n function toSafeText(value: unknown): string {\n if (value === null) {\n return '';\n }\n\n return typeof value === 'string' ? value : JSON.stringify(value);\n }\n\n const safeHeaderContent = toSafeText(headerContent);\n const safeHeaderDescription = toSafeText(headerDescription);\n const safeBodyContent = toSafeText(bodyContent);\n const safeFooterContent = toSafeText(footerContent);\n const safeContentMetadata = toSafeText(contentMetadata);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData,\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const defaultClasses =\n 'bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none';\n const defaultFooterClasses = safeFooterContent\n ? 'text-sm bg-pink-50 text-pink-900 shadow-sm'\n : 'text-sm';\n const defaultContentMetadataClasses = 'text-xs';\n\n const mergedCardClassName = dataClassName ? cn(defaultClasses, dataClassName) : defaultClasses;\n const mergedFooterClassName = footerClass\n ? cn(defaultFooterClasses, footerClass)\n : defaultFooterClasses;\n const mergedContentMetadataClassName = contentMetadataClass\n ? cn(defaultContentMetadataClasses, contentMetadataClass)\n : defaultContentMetadataClasses;\n\n const hasError = Boolean(attributes?.error ?? dataError);\n const hasMissing = Boolean(attributes?.isMissing ?? dataIsMissing);\n const isLoading = Boolean(\n (attributes?.interactionApiInProgress || attributes?.loading) && !hasError && !hasMissing,\n );\n\n const footerIconText =\n typeof footerIcon === 'string'\n ? footerIcon\n : footerIcon && typeof footerIcon === 'object' && 'icon' in (footerIcon as any)\n ? String((footerIcon as any).icon)\n : '';\n\n function getCardContent() {\n if (isLoading) {\n return (\n <CardContent>\n <CardLoader />\n </CardContent>\n );\n }\n\n const showEmpty = hasError || hasMissing || !safeBodyContent;\n\n return (\n <React.Fragment>\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"headerContent\" contentEditable={isEditable} className=\"text-lg\">\n {safeHeaderContent}\n </CardTitle>\n <CardDescription\n data-slot=\"headerDescription\"\n contentEditable={isEditable}\n className=\"text-sm\"\n >\n {safeHeaderDescription}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n\n {showEmpty ? (\n <span className=\"flex flex-row items-center px-3 py-2\">\n <CircleAlert className=\"w-3 h-3 text-gray-400 mr-1\" />\n <p className=\"text-sm text-gray-500 max-w-md text-center\">\n No data available for given filters\n </p>\n </span>\n ) : (\n <CardContent data-slot=\"bodyContent\" contentEditable={false} className=\"flex-grow\">\n <div className=\"text-3xl font-semibold truncate\">{safeBodyContent}</div>\n {safeContentMetadata && (\n <div className={mergedContentMetadataClassName} style={{ color: '#2A44D4' }}>\n {safeContentMetadata}\n </div>\n )}\n </CardContent>\n )}\n\n <CardFooter\n data-slot=\"footerContent\"\n contentEditable={isEditable}\n className={cn(mergedFooterClassName)}\n >\n {(footerIconText || '').trim() && (\n <span className=\"mr-2\" aria-hidden=\"true\">\n {footerIconText}\n </span>\n )}\n {safeFooterContent || ''}\n </CardFooter>\n </React.Fragment>\n );\n }\n\n return (\n <Card {...rest} className={`${mergedCardClassName} relative`}>\n {getCardContent()}\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\n// Helper function to transform data for scatter plot (Recharts format)\nfunction transformDataForScatter(data: any[], xAxis: string, yAxis: string, dataKeys: any[]): any[] {\n if (!data || data.length === 0) {\n return [];\n }\n \n // Recharts ScatterChart expects array of objects with x and y properties\n const scatterData = data\n .filter((item) => item[xAxis] !== null && item[xAxis] !== undefined && item[yAxis] !== null && item[yAxis] !== undefined)\n .map((item) => {\n const result: any = {\n [xAxis]: Number(item[xAxis]),\n [yAxis]: Number(item[yAxis]),\n };\n \n // Add any additional dataKeys as separate properties\n if (dataKeys && dataKeys.length > 0) {\n dataKeys.forEach(({ key }: { key: string }) => {\n if (item[key] !== null && item[key] !== undefined) {\n result[key] = Number(item[key]);\n }\n });\n }\n \n return result;\n });\n \n return scatterData;\n}\n\n// Helper function to bin data for histogram\nfunction binDataForHistogram(data: any[], valueKey: string, bins = 10): any[] {\n if (!data || data.length === 0) {\n return [];\n }\n \n const values = data\n .map((item) => Number(item[valueKey]))\n .filter((val) => !isNaN(val));\n \n if (values.length === 0) {\n return [];\n }\n \n const min = Math.min(...values);\n const max = Math.max(...values);\n const binWidth = (max - min) / bins;\n \n const binsArray: number[] = new Array(bins).fill(0);\n const binLabels: string[] = [];\n \n for (let i = 0; i < bins; i++) {\n const binStart = min + i * binWidth;\n const binEnd = binStart + binWidth;\n binLabels.push(`${binStart.toFixed(1)}-${binEnd.toFixed(1)}`);\n }\n \n values.forEach((value) => {\n let binIndex = Math.floor((value - min) / binWidth);\n\n if (binIndex >= bins) {\n binIndex = bins - 1;\n }\n\n if (binIndex < 0) {\n binIndex = 0;\n }\n\n binsArray[binIndex] += 1;\n });\n \n return binLabels.map((label, index) => ({\n bin: label,\n frequency: binsArray[index],\n }));\n}\n\n// Helper function to transform data for beeswarm plot (Recharts ScatterChart format)\n// Beeswarm uses x-axis for groups and y-axis for values, with jitter on x-axis\nfunction transformDataForBeeswarm(data: any[], groupBy: string, valueKey: string): any[] {\n if (!data || data.length === 0) {\n return [];\n }\n \n // Group data by groupBy field\n const grouped: { [key: string]: number[] } = {};\n \n data.forEach((item) => {\n if (item[groupBy] !== null && item[groupBy] !== undefined && item[valueKey] !== null && item[valueKey] !== undefined) {\n const group = String(item[groupBy]);\n const value = Number(item[valueKey]);\n \n if (!grouped[group]) {\n grouped[group] = [];\n }\n\n grouped[group].push(value);\n }\n });\n\n const groups = Object.keys(grouped).sort();\n const result: any[] = [];\n \n // Create scatter points with jitter on x-axis\n groups.forEach((group, groupIndex) => {\n const values = grouped[group];\n const jitterRadius = 0.3; // Jitter radius for positioning points\n \n values.forEach((value, valueIndex) => {\n // Calculate jitter position within the group\n const angle = (valueIndex / values.length) * 2 * Math.PI;\n const radius = (valueIndex % 10) / 10 * jitterRadius; // Distribute points in a circle\n const jitterX = groupIndex + radius * Math.cos(angle);\n \n result.push({\n group: group,\n groupIndex: groupIndex,\n value: value,\n x: jitterX,\n y: value,\n });\n });\n });\n \n return result;\n}\n\nfunction renderChartComponent(chartType: string, data: any, config: any): JSX.Element {\n const safeData = Array.isArray(data) ? data : [];\n\n if (safeData.length === 0) {\n return renderNoDataFallback();\n }\n\n switch (chartType) {\n case 'pie':\n return (\n <PieChart>\n {safeData.length >= 20 && (\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n )}\n <Pie\n data={safeData}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n safeData.length < 20\n ? ({ name, percent }: { name: string; percent: number }) =>\n `${name}: ${(percent * 100).toFixed(0)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n\n case 'bar': {\n config.dataKeys = config.dataKeys || [];\n\n const barDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n return (\n <BarChart data={safeData} {...config.chartUi} {...(barDataKeys.length > 1 && { barGap: 0 })}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <Legend align=\"left\" wrapperStyle={{ marginLeft: 20 }} />\n {barDataKeys.map(({ key, name, color }: { key: string; name: string; color: string }) => {\n return <Bar dataKey={key} fill={color ?? '#4caf50'} name={name} key={key} radius={2} />;\n })}\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n </BarChart>\n );\n }\n\n case 'line': {\n config.dataKeys = config.dataKeys || [];\n const safeDataKeysLine = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n return (\n <LineChart data={safeData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n {safeDataKeysLine.map(\n ({ key, name, color }: { key: string; name: string; color: string }) => {\n return (\n <Line\n type=\"monotone\"\n dataKey={key}\n stroke={color ?? '#4caf50'}\n name={name}\n key={key}\n />\n );\n },\n )}\n <Legend align=\"left\" />\n </LineChart>\n );\n }\n\n case 'scatter': {\n config.dataKeys = config.dataKeys || [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n const scatterData = transformDataForScatter(safeData, config.xAxis, config.yAxis, safeDataKeys);\n \n if (scatterData.length === 0) {\n return renderNoDataFallback();\n }\n\n const colors = safeDataKeys.length > 0 \n ? safeDataKeys.map(({ color }: { color: string }) => color ?? '#2A44D4')\n : ['#2A44D4'];\n \n return (\n <ScatterChart data={scatterData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis \n type=\"number\" \n dataKey={config.xAxis} \n name={config.xAxis || 'X Axis'}\n domain={['auto', 'auto']}\n />\n <YAxis \n type=\"number\" \n dataKey={config.yAxis} \n name={config.yAxis || 'Y Axis'}\n domain={['auto', 'auto']}\n />\n <ChartTooltip cursor={{ strokeDasharray: '3 3' }} content={<ChartTooltipContent />} />\n {safeDataKeys.length > 0 ? (\n safeDataKeys.map(({ key, name, color }: { key: string; name: string; color: string }, index: number) => (\n <Scatter\n key={key}\n name={name || key}\n dataKey={key || config.yAxis}\n fill={color ?? colors[index % colors.length]}\n />\n ))\n ) : (\n <Scatter\n name=\"Data\"\n dataKey={config.yAxis}\n fill={colors[0]}\n />\n )}\n <Legend align=\"left\" />\n </ScatterChart>\n );\n }\n\n case 'histogram': {\n config.dataKeys = config.dataKeys || [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n const valueKey = safeDataKeys.length > 0 ? safeDataKeys[0].key : config.xAxis;\n const bins = config.bins || 10;\n const binnedData = binDataForHistogram(safeData, valueKey, bins);\n \n if (binnedData.length === 0) {\n return renderNoDataFallback();\n }\n\n const color = safeDataKeys.length > 0 ? safeDataKeys[0].color : '#2A44D4';\n \n return (\n <BarChart data={binnedData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis \n dataKey=\"bin\" \n angle={-45}\n textAnchor=\"end\"\n height={80}\n />\n <YAxis />\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n <Bar dataKey=\"frequency\" fill={color} radius={2}>\n {binnedData.map((entry, index) => (\n <Cell key={`cell-${index}`} fill={color} />\n ))}\n </Bar>\n <Legend align=\"left\" />\n </BarChart>\n );\n }\n\n case 'beeswarm': {\n const groupBy = config.groupBy || config.xAxis;\n const valueKey = config.valueKey || (config.dataKeys && config.dataKeys[0]?.key) || 'value';\n const swarmData = transformDataForBeeswarm(safeData, groupBy, valueKey);\n \n if (swarmData.length === 0) {\n return renderNoDataFallback();\n }\n\n // Get unique groups for x-axis labels\n const groups = Array.from(new Set(swarmData.map((item: any) => item.group))).sort();\n const color = config.dataKeys && config.dataKeys[0]?.color ? config.dataKeys[0].color : '#2A44D4';\n \n return (\n <ScatterChart data={swarmData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis \n type=\"number\"\n dataKey=\"x\"\n domain={[-0.5, groups.length - 0.5]}\n ticks={groups.map((_, index) => index)}\n tickFormatter={(value) => {\n const groupIndex = Math.round(value);\n\n return groups[groupIndex] || '';\n }}\n label={{ value: groupBy || 'Group', position: 'insideBottom', offset: -5 }}\n />\n <YAxis \n type=\"number\"\n dataKey=\"y\"\n name={valueKey || 'Value'}\n label={{ value: valueKey || 'Value', angle: -90, position: 'insideLeft' }}\n />\n <ChartTooltip \n cursor={{ strokeDasharray: '3 3' }} \n content={({ active, payload }) => {\n if (active && payload && payload.length) {\n const pointData = payload[0].payload;\n\n return (\n <div className=\"bg-white p-2 border rounded shadow\">\n <p>{`${groupBy}: ${pointData.group}`}</p>\n <p>{`${valueKey}: ${pointData.value}`}</p>\n </div>\n );\n }\n\n return null;\n }}\n />\n <Scatter\n name=\"Beeswarm\"\n dataKey=\"y\"\n fill={color}\n />\n </ScatterChart>\n );\n }\n\n default:\n return (\n <PieChart>\n {safeData.length >= 20 && (\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n )}\n <Pie\n data={safeData}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n safeData.length < 20\n ? ({ name, percent }: { name: string; percent: number }) =>\n `${name}: ${(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 {\n isEditable = false,\n gjsModel,\n performInteraction = () => Promise.resolve({}),\n ...rest\n } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState<number>(0);\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n const newAttributes = gjsModel.get('attributes');\n setAttributes({\n ...newAttributes,\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const updateContainerWidth = () => {\n if (containerRef.current) {\n setContainerWidth(containerRef.current.offsetWidth || 0);\n }\n };\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContainerWidth(entry.contentRect.width || 0);\n }\n });\n\n updateContainerWidth();\n\n const timeoutId = setTimeout(updateContainerWidth, 50);\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n window.addEventListener('resize', updateContainerWidth);\n\n return () => {\n clearTimeout(timeoutId);\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateContainerWidth);\n };\n }, []);\n\n 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 safeChartData = Array.isArray(chartData) ? chartData : [];\n const colors = getNColors(safeChartData.length);\n safeChartData.forEach((data, i) => {\n if (!data.fill) {\n data.fill = colors[i];\n }\n });\n } else if (!config.color) {\n const safeBaseColors = Array.isArray(baseColors) ? baseColors : [];\n\n if (safeBaseColors.length > 0) {\n config.color = safeBaseColors[Math.floor(Math.random() * safeBaseColors.length)];\n }\n }\n\n let totalDataPoints = 0;\n\n if (chartType === 'bar' || chartType === 'line' || chartType === 'scatter' || chartType === 'histogram' || chartType === 'beeswarm') {\n const safeChartData = Array.isArray(chartData) ? chartData : [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n if (chartType === 'bar') {\n totalDataPoints = safeChartData.length * Math.max(1, safeDataKeys.length);\n } else if (chartType === 'line') {\n totalDataPoints = safeChartData.length;\n } else if (chartType === 'scatter' || chartType === 'histogram' || chartType === 'beeswarm') {\n totalDataPoints = safeChartData.length;\n }\n }\n\n const getScrollableWidth = () => {\n if (chartType === 'line') {\n return totalDataPoints * 20;\n }\n\n if (chartType === 'bar') {\n return (\n totalDataPoints * 20 +\n (Array.isArray(config.dataKeys) ? config.dataKeys.length : 0) *\n 8 *\n (Array.isArray(chartData) ? chartData.length : 0) +\n (Array.isArray(chartData) ? chartData.length : 0) * 15\n );\n }\n\n // Scatter, histogram, and beeswarm charts typically don't need horizontal scrolling\n // but we'll set a reasonable default width\n if (chartType === 'scatter' || chartType === 'histogram' || chartType === 'beeswarm') {\n return 800;\n }\n\n return 800;\n };\n\n const scrollWidth = getScrollableWidth();\n const shouldScroll =\n (chartType === 'bar' || chartType === 'line') &&\n totalDataPoints > 15 &&\n scrollWidth > containerWidth;\n\n const hasError = attributes.error || allData.error;\n const hasMissing = attributes.isMissing || allData.isMissing;\n const isLoading =\n (attributes.interactionApiInProgress || attributes.loading) && !hasError && !hasMissing;\n\n const ChartWrapper = ({ children }: { children: React.ReactNode }) => {\n if (shouldScroll) {\n return (\n <div className=\"w-full h-[250px] overflow-x-auto\">\n <div style={{ minWidth: `${scrollWidth}px`, height: '250px' }}>{children}</div>\n </div>\n );\n }\n\n return <div className=\"w-full h-[250px]\">{children}</div>;\n };\n\n const chartUi = isLoading ? (\n <ChartLoader />\n ) : hasError || hasMissing || !chartData ? (\n renderNoDataFallback()\n ) : (\n <ChartWrapper>\n <ResponsiveContainer width=\"100%\" height={250}>\n <ChartContainer {...rest} config={config} className={mergedClasses}>\n {renderChartComponent(chartType, chartData, config)}\n </ChartContainer>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n\n return (\n <Card className=\"shadow border mt-2 mb-2 relative\">\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"title\" contentEditable={isEditable} className=\"text-2xl\">\n {title}\n </CardTitle>\n <CardDescription data-slot=\"subTitle\" contentEditable={isEditable} className=\"text-sm\">\n {subTitle}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent ref={containerRef} data-slot=\"bodyContent\" className=\"px-6\">\n {chartUi}\n </CardContent>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\nexport function renderTable(props: any): JSX.Element {\n const { isEditable = false, gjsModel, performInteraction = () => {}, ...rest } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const cardRef = useRef<HTMLDivElement>(null);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n const {\n data: rawData,\n headerMapper: rawHeaderMapper = {},\n className,\n title = 'Title',\n subTitle = 'Subtitle',\n actions = [],\n pagination,\n } = allData;\n\n const data = Array.isArray(rawData) ? rawData : [];\n const headerMapper = (() => {\n const cleaned = { ...rawHeaderMapper };\n\n if ('id' in cleaned) {\n delete cleaned.id;\n }\n\n if (data.length > 0) {\n const dataKeys = Object.keys(data[0] || {});\n\n return Object.fromEntries(Object.entries(cleaned).filter(([key]) => dataKeys.includes(key)));\n }\n\n return cleaned;\n })();\n\n const sortConfig = (() => {\n const { sortColumn, sortDirection } = gjsModel.get('componentProps') ?? {};\n\n return sortColumn && sortDirection ? { [sortColumn]: sortDirection } : {};\n })();\n\n const [viewportWidth, setViewportWidth] = useState<number>(0);\n const [scrollAreaHeight, setScrollAreaHeight] = useState<number>(250);\n\n const calculateTableHeight = (tableWidth: number, rowCount: number) => {\n if (viewportWidth > 0) {\n const widthRatio = tableWidth / viewportWidth;\n const baseTableHeight = 250;\n let targetScrollAreaHeight = baseTableHeight;\n\n if (widthRatio >= 0.8) {\n const headerHeight = 48;\n const rowHeight = 40;\n const calculatedHeight = headerHeight + rowCount * rowHeight;\n targetScrollAreaHeight = Math.min(calculatedHeight, baseTableHeight);\n }\n\n const tableId = gjsModel.get('id');\n const editor = gjsModel.em || gjsModel.collection?.em;\n const canvasDocument = editor.Canvas.getDocument() || document;\n const tableElement = canvasDocument.querySelector(\n `[data-table-id=\"${tableId}\"]`,\n ) as HTMLElement;\n\n if (tableElement) {\n const headerElement = tableElement.querySelector(\n '[data-slot=\"card-header\"]',\n ) as HTMLElement;\n\n if (headerElement && headerElement.offsetHeight > 0) {\n const actualHeaderHeight = headerElement.offsetHeight;\n const standardHeaderHeight = 58;\n const heightDifference = actualHeaderHeight - standardHeaderHeight;\n\n if (heightDifference > 0) {\n targetScrollAreaHeight = targetScrollAreaHeight - heightDifference;\n }\n }\n }\n\n setScrollAreaHeight(targetScrollAreaHeight);\n }\n };\n\n useEffect(() => {\n const updateViewportWidth = () => {\n const iframe = document.querySelector('.gjs-frame');\n const iframeWindow = (iframe as any)?.contentWindow;\n const iframeDocument = iframeWindow?.document;\n\n if (iframeDocument) {\n const dashboardRoot = iframeDocument.getElementById('dashboard-root');\n const effectiveViewportWidth =\n dashboardRoot?.clientWidth || iframeDocument.documentElement.clientWidth;\n setViewportWidth(effectiveViewportWidth);\n }\n };\n\n updateViewportWidth();\n window.addEventListener('resize', updateViewportWidth);\n\n const iframe = document.querySelector('.gjs-frame');\n const iframeWindow = (iframe as any)?.contentWindow;\n\n if (iframeWindow) {\n iframeWindow.addEventListener('resize', updateViewportWidth);\n }\n\n return () => {\n window.removeEventListener('resize', updateViewportWidth);\n\n if (iframeWindow) {\n iframeWindow.removeEventListener('resize', updateViewportWidth);\n }\n };\n }, []);\n\n useEffect(() => {\n const updateTableWidthAndApplyCSS = () => {\n const tableId = gjsModel.get('id');\n const editor = gjsModel.em || gjsModel.collection?.em;\n const canvasDocument = editor.Canvas.getDocument() || document;\n\n let tableElement = canvasDocument.querySelector(\n `[data-table-id=\"${tableId}\"]`,\n ) as HTMLElement;\n\n if (!tableElement && window.parent !== window) {\n tableElement = window.parent.document.querySelector(\n `[data-table-id=\"${tableId}\"]`,\n ) as HTMLElement;\n }\n\n if (!tableElement) {\n return;\n }\n\n const tableActualWidth = tableElement.getBoundingClientRect().width;\n\n if (tableActualWidth > 0) {\n calculateTableHeight(tableActualWidth, Array.isArray(data) ? data.length : 0);\n }\n };\n\n const timeoutId = setTimeout(updateTableWidthAndApplyCSS, 150);\n window.addEventListener('resize', updateTableWidthAndApplyCSS);\n\n return () => {\n clearTimeout(timeoutId);\n window.removeEventListener('resize', updateTableWidthAndApplyCSS);\n };\n }, [allData, gjsModel, viewportWidth, data, calculateTableHeight]);\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n const parsedData = (() => {\n if (\n typeof data === 'object' &&\n data !== null &&\n !Array.isArray(data) &&\n (data as any).name === '__peak_placeholder'\n ) {\n return [];\n }\n\n if (!Array.isArray(data)) {\n return [];\n }\n\n return data.map((datum: any) => {\n const newData = {\n ...datum,\n };\n\n delete newData.id;\n\n return newData;\n });\n })();\n\n async function onRowAction(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 async function onPageChange(pageNumber: number, pageSize: number) {\n const id = gjsModel.get('id');\n const { sortColumn, sortDirection } = gjsModel.get('componentProps') ?? {};\n\n await performInteraction({\n id,\n interactionType: 'pagination',\n payload: {\n pageNumber,\n pageSize,\n ...(sortColumn && sortDirection && { sortColumn, sortDirection }),\n },\n affectedComponents: getAffectedComponentsWithLoader([id], true),\n });\n }\n\n async function handleSort(column: string, direction: SortDirection) {\n const currentProps = gjsModel.get('componentProps');\n const id = gjsModel.get('id');\n\n gjsModel.set('componentProps', {\n ...currentProps,\n sortColumn: direction ? column : null,\n sortDirection: direction,\n });\n\n await performInteraction({\n id,\n interactionType: 'tableSort',\n payload: {\n sortColumn: direction ? column : null,\n sortDirection: direction,\n tableId: id,\n },\n affectedComponents: getAffectedComponentsWithLoader([id], true),\n });\n }\n\n return (\n <Card\n ref={cardRef}\n className=\"shadow border relative flex flex-col h-fit overflow-hidden\"\n data-component-type=\"table\"\n data-table-id={gjsModel.get('id')}\n >\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"title\" contentEditable={isEditable} className=\"text-2xl\">\n {title}\n </CardTitle>\n <CardDescription data-slot=\"subTitle\" contentEditable={isEditable} className=\"text-sm\">\n {subTitle}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent\n data-slot=\"bodyContent\"\n contentEditable={false}\n className=\"flex-1 flex flex-col overflow-hidden\"\n >\n {attributes.error || allData.error || attributes.isMissing || allData.isMissing ? (\n renderNoDataFallback()\n ) : (\n <DataTable\n data={parsedData}\n headerMapper={headerMapper}\n className={className}\n isEditable={isEditable}\n actions={actions}\n pagination={pagination}\n isLoading={attributes.interactionApiInProgress || attributes.loading}\n onRowAction={onRowAction}\n onPageChange={onPageChange}\n onSort={handleSort}\n sortConfig={sortConfig}\n otherProps={rest}\n height={scrollAreaHeight}\n />\n )}\n </CardContent>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n tableActions={actions}\n firstRowData={Array.isArray(data) && data.length > 0 ? data[0] : {}}\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\nexport function renderTab(props: any): JSX.Element {\n let tabsWidth = 157;\n const safeTabs = Array.isArray(props.tabs) ? props.tabs : [];\n const showFallback = safeTabs.length === 0;\n\n if (safeTabs.length > 4) {\n tabsWidth = 157;\n }\n\n const defaultValue = props.defaultValue || (safeTabs.length > 0 ? safeTabs[0] : undefined);\n\n return (\n <Tabs defaultValue={defaultValue}>\n <div className=\"text-center mb-4\">\n <TabsList className=\"bg-[#F9F9FE] border border-[#D4D5DE] p-1 rounded-lg h-auto\">\n {safeTabs.length > 0 ? (\n safeTabs.map((tab: string) => (\n <TabsTrigger\n value={tab}\n key={tab}\n className={`\n w-[${tabsWidth}px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n `}\n style={{\n fontFamily: 'Helvetica Neue',\n fontWeight: 500,\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: '0%',\n }}\n >\n {tab}\n </TabsTrigger>\n ))\n ) : (\n <TabsTrigger\n value=\"no-data\"\n className={`\n w-[${tabsWidth}px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n `}\n style={{\n fontFamily: 'Helvetica Neue',\n fontWeight: 500,\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: '0%',\n }}\n disabled\n >\n No tabs\n </TabsTrigger>\n )}\n </TabsList>\n </div>\n {showFallback ? (\n <TabsContent\n value={defaultValue || 'no-data'}\n className=\"tabs-content\"\n data-fallback=\"true\"\n >\n {renderNoDataFallback()}\n </TabsContent>\n ) : (\n safeTabs.map((tab: string) => (\n <TabsContent value={tab} className=\"tabs-content\" key={tab} />\n ))\n )}\n </Tabs>\n );\n}\n\nexport function renderMarkdown(props: any): JSX.Element {\n const { isEditable = false, gjsModel, ...rest } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n const [isEditing, setIsEditing] = useState(false);\n const [isEditingHeading, setIsEditingHeading] = useState(false);\n const editRef = useRef<HTMLDivElement>(null);\n const headingEditRef = useRef<HTMLDivElement>(null);\n\n const startEditing = () => {\n setIsEditing(true);\n setTimeout(() => {\n setupEditor();\n }, 0);\n };\n\n const startEditingHeading = () => {\n setIsEditingHeading(true);\n setTimeout(() => {\n setupHeadingEditor();\n }, 0);\n };\n\n const setupEditor = () => {\n if (!editRef.current) {\n return;\n }\n\n const editor = editRef.current;\n editor.innerHTML = '';\n editor.textContent = allData.summaryText;\n editor.focus();\n };\n\n const setupHeadingEditor = () => {\n if (!headingEditRef.current) {\n return;\n }\n\n const editor = headingEditRef.current;\n editor.innerHTML = '';\n editor.textContent = allData.summaryHeading || 'Insights';\n editor.focus();\n };\n\n // Save changes and exit editing mode\n const saveChanges = () => {\n if (!editRef.current) {\n return;\n }\n\n const content = editRef.current.innerText || '';\n setAllData((prev: Record<string, any>) => ({\n ...prev,\n summaryText: content,\n }));\n setIsEditing(false);\n editRef.current.innerHTML = '';\n };\n\n const saveHeadingChanges = () => {\n if (!headingEditRef.current) {\n return;\n }\n\n const content = headingEditRef.current.innerText || 'Insights';\n setAllData((prev: Record<string, any>) => ({\n ...prev,\n summaryHeading: content,\n }));\n setIsEditingHeading(false);\n headingEditRef.current.innerHTML = '';\n };\n\n const markdownStyles = {\n ul: { props: { className: 'list-disc' } },\n h1: { props: { className: 'text-4xl font-bold leading-[4rem]' } },\n h2: { props: { className: 'text-3xl font-bold leading-[3rem]' } },\n h3: { props: { className: 'text-2xl font-bold leading-[2rem]' } },\n h4: { props: { className: 'text-xl font-bold leading-[2.5rem]' } },\n h5: { props: { className: 'text-lg font-bold leading-[2.5rem]' } },\n h6: { props: { className: 'text-base font-bold leading-[2rem]' } },\n };\n\n const hasError = attributes.error || allData.error;\n const hasMissing = attributes.isMissing || allData.isMissing;\n const isLoading =\n (attributes.loading && !hasError && !hasMissing) || attributes.interactionApiInProgress;\n\n if (isLoading) {\n return <MarkdownLoader />;\n }\n\n if (hasError || hasMissing) {\n return (\n <div className=\"px-[1em] relative\" {...rest}>\n <h3 className=\"text-xl font-semibold text-left\">{allData.summaryHeading || 'Insights'}</h3>\n <div\n className=\"w-full py-8 flex flex-col items-center justify-center px-6 text-center\"\n style={{ minHeight: '180px' }}\n >\n <CircleAlert className=\"w-12 h-12 text-gray-400 mb-2\" />\n <h3 className=\"text-lg font-medium text-gray-900\">No data available</h3>\n <p className=\"mt-2 text-sm text-gray-500 max-w-md\">\n Check your filters or try a different time range.\n </p>\n </div>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n }\n\n if (!allData.isEditable) {\n return (\n <div className=\"px-[1em] relative\" {...rest}>\n <h3 className=\"text-xl font-semibold text-left\">{allData.summaryHeading || 'Insights'}</h3>\n <div data-slot=\"summaryText\">\n <Markdown options={{ overrides: markdownStyles }}>{allData.summaryText}</Markdown>\n </div>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n }\n\n return (\n <div className=\"p-[1em] relative\" {...rest}>\n {isEditingHeading ? (\n <div\n ref={headingEditRef}\n contentEditable\n onBlur={saveHeadingChanges}\n data-slot=\"summaryHeading\"\n className=\"text-xl font-semibold text-left\"\n suppressContentEditableWarning={true}\n />\n ) : (\n <h3\n className=\"text-xl font-semibold text-left\"\n onClick={startEditingHeading}\n data-slot=\"summaryHeading\"\n >\n {allData.summaryHeading || 'Insights'}\n </h3>\n )}\n {isEditing ? (\n <div\n ref={editRef}\n contentEditable\n onBlur={saveChanges}\n data-slot=\"summaryText\"\n className=\"p-2 min-h-[100px] whitespace-pre-wrap\"\n suppressContentEditableWarning={true}\n style={{\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n }}\n />\n ) : (\n <div\n onClick={startEditing}\n data-slot=\"summaryText\"\n style={{\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n }}\n >\n <Markdown options={{ overrides: markdownStyles }}>{allData.summaryText}</Markdown>\n </div>\n )}\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n}\n\nexport function renderButton(props: any): JSX.Element {\n const { 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\nconst renderActionCardWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'ActionCard' }}>\n {renderActionCard(props)}\n </ComponentWrapper>\n);\n\nconst renderButtonWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Button' }}>\n {renderButton(props)}\n </ComponentWrapper>\n);\n\nconst renderCardWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Card' }}>\n {renderCard(props)}\n </ComponentWrapper>\n);\n\nconst renderChartWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Chart' }}>\n {renderChart(props)}\n </ComponentWrapper>\n);\n\nconst renderFilterWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Filter' }}>\n {renderFilter(props)}\n </ComponentWrapper>\n);\n\nconst renderMarkdownWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Markdown' }}>\n {renderMarkdown(props)}\n </ComponentWrapper>\n);\n\nconst renderSearchWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Search' }}>\n {renderSearch(props)}\n </ComponentWrapper>\n);\n\nconst renderTableWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Table' }}>\n {renderTable(props)}\n </ComponentWrapper>\n);\n\nconst renderTabWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Tabs' }}>\n {renderTab(props)}\n </ComponentWrapper>\n);\n\nfunction renderActions(props: any): JSX.Element {\n const { actions, isEditable = false, gjsModel } = props;\n\n if (actions === null) {\n return <div />;\n }\n\n if (!Array.isArray(actions) || actions.length === 0) {\n return (\n <div className=\"bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none relative\">\n <CardLoader />\n </div>\n );\n }\n\n return (\n <div className=\"dashboard-cards flex flex-wrap gap-4\">\n {actions.map((action: any, index: number) => {\n const { icon, title, description } = action;\n\n return (\n <div key={index} className=\"flex-1 min-w-[200px]\">\n {renderActionCard({\n icon,\n headerContent: title,\n bodyContent: description,\n isEditable,\n gjsModel,\n })}\n </div>\n );\n })}\n </div>\n );\n}\n\nconst renderActionsWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Actions' }}>\n {renderActions(props)}\n </ComponentWrapper>\n);\n\nexport function getRenderers(): Record<string, (props: any) => JSX.Element> {\n return {\n ActionCard: renderActionCardWithWrapper,\n Actions: renderActionsWithWrapper,\n Button: renderButtonWithWrapper,\n Card: renderCardWithWrapper,\n Chart: renderChartWithWrapper,\n Filter: renderFilterWithWrapper,\n Markdown: renderMarkdownWithWrapper,\n Search: renderSearchWithWrapper,\n Table: renderTableWithWrapper,\n Tabs: renderTabWithWrapper,\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"render-components.js","names":["chroma","React","useEffect","useState","useMemo","useRef","renderNoDataFallback","CircleAlert","TrendingDown","TrendingUp","ShoppingCart","ChartBarBig","Tag","MapPin","StyledInfoButton","filterPlaceholders","theme","Markdown","Bar","BarChart","CartesianGrid","Legend","Line","LineChart","Pie","PieChart","ResponsiveContainer","XAxis","YAxis","domutil","TooltipButton","Card","CardContent","CardDescription","CardFooter","CardHeader","CardTitle","ChartContainer","ChartTooltip","ChartTooltipContent","renderFilter","renderSearch","CardLoader","ChartLoader","MarkdownLoader","Tabs","TabsContent","TabsList","TabsTrigger","cn","getAffectedComponentsWithLoader","DataTable","ComponentWrapper","jsx","_jsx","jsxs","_jsxs","getOffset","el","html","ownerDocument","documentElement","box","top","left","getBoundingClientRect","iframe","document","querySelector","iframeWindow","contentWindow","pageYOffset","clientTop","pageXOffset","clientLeft","baseColors","colors","Blue_100","Blue_30","Purpley_100","Purpley_30","Light_Bluish_Green","Wild_Strawberry","iconMap","Equalizer","Style","Place","getIconFromString","iconString","lowerIconString","toLowerCase","matchingKey","Object","keys","find","key","getNColors","n","safeBaseColors","Array","isArray","_iterator","_createForOfIteratorHelperLoose","_step","done","baseColor","value","push","scale","mode","getOneColor","existing","color","base","Math","floor","random","length","selectedColorIndex","includes","selectedColors","i","renderActionCard","props","gjsModel","rest","_objectWithoutPropertiesLoose","_excluded","initialData","_useState","allData","setAllData","_allData$headerConten","headerContent","icon","_allData$bodyContent","bodyContent","_useState2","_extends","get","attributes","setAttributes","handlePropsChange","newComponentProps","filteredProps","prevData","on","off","defaultClasses","className","style","backgroundColor","isEditable","contentEditable","children","error","isMissing","renderCard","_attributes$error","_attributes$isMissing","_props$isEditable","_props$performInterac","performInteraction","Promise","resolve","_excluded2","_useState3","headerDescription","footerContent","footerClass","footerIcon","contentMetadata","contentMetadataClass","dataClassName","dataError","dataIsMissing","toSafeText","JSON","stringify","safeHeaderContent","safeHeaderDescription","safeBodyContent","safeFooterContent","safeContentMetadata","_useState4","footerHasContent","setFooterHasContent","_useState5","defaultFooterClasses","defaultContentMetadataClasses","mergedCardClassName","mergedFooterClassName","mergedContentMetadataClassName","hasError","Boolean","hasMissing","isLoading","interactionApiInProgress","loading","footerIconText","String","getCardContent","showEmpty","handleFooterInput","event","target","content","textContent","hasContent","trim","currentProps","set","isEmptied","Fragment","onInput","componentId","position","isVisible","componentProps","renderChartComponent","chartType","data","config","safeData","cursor","hideLabel","dataKey","nameKey","innerRadius","strokeWidth","label","_ref","name","percent","toFixed","undefined","labelLine","dataKeys","barDataKeys","chartUi","barGap","vertical","xAxis","align","wrapperStyle","marginLeft","map","_ref2","fill","radius","indicator","safeDataKeysLine","_ref3","type","stroke","_ref4","renderChart","_props$isEditable2","_props$performInterac2","_excluded3","_useState6","_useState7","containerRef","_useState8","containerWidth","setContainerWidth","handleAttributesChange","newAttributes","updateContainerWidth","current","offsetWidth","resizeObserver","ResizeObserver","entries","_iterator2","_step2","entry","contentRect","width","timeoutId","setTimeout","observe","window","addEventListener","clearTimeout","disconnect","removeEventListener","_allData$config","_allData$chartType","_allData$chartData","chartData","_allData$title","title","_allData$subTitle","subTitle","mergedClasses","safeChartData","forEach","totalDataPoints","safeDataKeys","max","getScrollableWidth","scrollWidth","shouldScroll","ChartWrapper","_ref5","minWidth","height","ref","renderTable","_props$isEditable3","_props$performInterac3","_excluded4","_useState9","cardRef","_useState10","rawData","_allData$headerMapper","headerMapper","rawHeaderMapper","_allData$title2","_allData$subTitle2","_allData$actions","actions","pagination","cleaned","id","fromEntries","filter","_ref6","sortConfig","_gjsModel$get","_ref8","_ref7","sortColumn","sortDirection","_useState11","viewportWidth","setViewportWidth","_useState12","scrollAreaHeight","setScrollAreaHeight","calculateTableHeight","tableWidth","rowCount","_gjsModel$collection","widthRatio","baseTableHeight","targetScrollAreaHeight","headerHeight","rowHeight","calculatedHeight","min","tableId","editor","em","collection","canvasDocument","Canvas","getDocument","tableElement","headerElement","offsetHeight","actualHeaderHeight","standardHeaderHeight","heightDifference","updateViewportWidth","iframeDocument","dashboardRoot","getElementById","effectiveViewportWidth","clientWidth","updateTableWidthAndApplyCSS","_gjsModel$collection2","parent","tableActualWidth","parsedData","datum","newData","onRowAction","_x","_x2","_onRowAction","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","rowIndex","actionId","wrap","_callee$","_context","prev","next","interactionType","payload","row","affectedComponents","stop","onPageChange","_x3","_x4","_onPageChange","_callee2","pageNumber","pageSize","_gjsModel$get2","_ref9","_callee2$","_context2","handleSort","_x5","_x6","_handleSort","_callee3","column","direction","_callee3$","_context3","onSort","otherProps","tableActions","firstRowData","renderTab","tabsWidth","safeTabs","tabs","showFallback","defaultValue","tab","fontFamily","fontWeight","fontSize","lineHeight","letterSpacing","disabled","renderMarkdown","_props$isEditable4","_excluded5","_useState13","_useState14","_useState15","isEditing","setIsEditing","_useState16","isEditingHeading","setIsEditingHeading","editRef","headingEditRef","startEditing","setupEditor","startEditingHeading","setupHeadingEditor","innerHTML","summaryText","focus","summaryHeading","saveChanges","innerText","saveHeadingChanges","markdownStyles","ul","h1","h2","h3","h4","h5","h6","minHeight","options","overrides","onBlur","suppressContentEditableWarning","onClick","whiteSpace","wordWrap","renderButton","_props$isEditable5","_props$performInterac4","_useState17","_useState18","text","_allData$variant","variant","_allData$size","size","tooltipContent","interact","concat","renderActionCardWithWrapper","componentType","renderButtonWithWrapper","renderCardWithWrapper","renderChartWithWrapper","renderFilterWithWrapper","renderMarkdownWithWrapper","renderSearchWithWrapper","renderTableWithWrapper","renderTabWithWrapper","renderActions","_props$isEditable6","action","index","description","renderActionsWithWrapper","getRenderers","ActionCard","Actions","Button","Chart","Filter","Search","Table"],"sources":["../../../src/plugins/helpers/render-components.tsx"],"sourcesContent":["/* eslint-disable no-nested-ternary */\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable func-style */\n/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable func-names */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport chroma from 'chroma-js';\nimport React, { useEffect, useState, useMemo, JSX, useRef } from 'react';\nimport { renderNoDataFallback } from './extra';\nimport {\n CircleAlert,\n TrendingDown,\n TrendingUp,\n ShoppingCart,\n ChartBarBig,\n Tag,\n MapPin,\n} from 'lucide-react';\nimport { StyledInfoButton } from './styled-info-button';\nimport { filterPlaceholders } from '../../helpers/filter-placeholder';\n\nimport { theme } from '@peak-ai/ais-components/theme';\n\nimport Markdown from 'markdown-to-jsx';\n\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n Line,\n LineChart,\n Pie,\n PieChart,\n ResponsiveContainer,\n XAxis,\n YAxis,\n} from 'recharts/lib';\n\n// @ts-ignore\nimport * as domutil from 'recharts/lib/util/DOMUtils';\n\nimport { TooltipButton } from '../../shadcn/components/ui/button';\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from '../../shadcn/components/ui/card';\nimport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n} from '../../shadcn/components/ui/chart';\nimport { renderFilter } from '../../shadcn/components/ui/filter';\nimport { renderSearch } from '../../shadcn/components/ui/search';\nimport { CardLoader, ChartLoader, MarkdownLoader } from '../../shadcn/components/ui/skeleton';\nimport { SortDirection } from '../../shadcn/components/ui/table';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '../../shadcn/components/ui/tabs';\n\nimport { cn } from '../../shadcn/utils';\nimport { getAffectedComponentsWithLoader } from '../../helpers';\nimport { DataTable } from './data-table';\nimport { ComponentWrapper } from '../../shadcn/components/ui/error-wrapper';\n\n// Monkey-patching the getOffset function to use iframe's window instead of global one\n// REMEMBER TO UDPATE THIS WHEN recharts IS UPGRADED\n// @ts-ignore\ndomutil.getOffset = (\n el: HTMLElement,\n): {\n top: number;\n left: number;\n} => {\n const html = el.ownerDocument.documentElement;\n let box = { top: 0, left: 0 };\n\n if (typeof el.getBoundingClientRect !== 'undefined') {\n box = el.getBoundingClientRect();\n }\n\n const iframe = document.querySelector('.gjs-frame');\n const iframeWindow = (iframe as any)?.contentWindow;\n\n return {\n top: box.top + iframeWindow.pageYOffset - html.clientTop,\n left: box.left + iframeWindow.pageXOffset - html.clientLeft,\n };\n};\n\nconst baseColors = [\n [theme.colors.Blue_100, theme.colors.Blue_30],\n [theme.colors.Purpley_100, theme.colors.Purpley_30],\n [theme.colors.Light_Bluish_Green, '#06601b'],\n [theme.colors.Wild_Strawberry, '#4d001c'],\n];\n\nconst iconMap: Record<string, JSX.Element> = {\n TrendingUp: <TrendingUp />,\n TrendingDown: <TrendingDown />,\n ShoppingCart: <ShoppingCart />,\n Equalizer: <ChartBarBig />,\n Style: <Tag />,\n Place: <MapPin />,\n};\n\nfunction getIconFromString(iconString: string): JSX.Element | null {\n if (!iconString) {\n return null;\n }\n\n if (iconMap[iconString]) {\n return iconMap[iconString];\n }\n\n const lowerIconString = iconString.toLowerCase();\n const matchingKey = Object.keys(iconMap).find((key) => key.toLowerCase() === lowerIconString);\n\n if (matchingKey) {\n return iconMap[matchingKey];\n }\n\n return null;\n}\n\nfunction getNColors(n: number) {\n const colors: Array<string[]> = [];\n const safeBaseColors = Array.isArray(baseColors) ? baseColors : [];\n\n for (const baseColor of safeBaseColors) {\n // eslint-disable-next-line import/no-named-as-default-member\n colors.push(chroma.scale(baseColor).mode('lab').colors(n));\n }\n\n function getOneColor(existing: Array<string>) {\n let color: null | string = null;\n\n do {\n const base = colors[Math.floor(Math.random() * colors.length)];\n const selectedColorIndex = Math.floor(Math.random() * base.length);\n color = base[selectedColorIndex];\n } while (existing.includes(color));\n\n return color as string;\n }\n\n const selectedColors: Array<string> = [];\n\n for (let i = 0; i < n; i++) {\n selectedColors.push(getOneColor(selectedColors));\n }\n\n return selectedColors;\n}\n\n/* TODO: Loader remains */\nexport function renderActionCard(props: any): JSX.Element {\n const { gjsModel, ...rest } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const {\n headerContent = 'Default action card title',\n icon,\n bodyContent = 'Default body content. Click to edit.',\n } = allData;\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData,\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const defaultClasses = 'text-black p-4 rounded-lg shadow border flex flex-col h-full';\n\n return (\n <Card\n className={`${defaultClasses} relative`}\n style={{ backgroundColor: '#f9f9fe' }}\n isEditable={false}\n contentEditable={false}\n {...rest}\n >\n <CardContent className=\"p-0\" isEditable={false} contentEditable={false}>\n <div className=\"px-4 py-3\">\n <div className=\"flex items-start flex-col\">\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"text-xl font-semibold\">{headerContent}</div>\n <div className=\"text-5xl ml-2 flex items-center\" aria-hidden=\"true\">\n {getIconFromString(icon)}\n </div>\n </div>\n <div className=\"w-full mt-1\">\n {attributes.error ||\n allData.error ||\n attributes.isMissing ||\n allData.isMissing ||\n !bodyContent ? (\n <span className=\"flex flex-row items-center px-3 py-2\">\n <CircleAlert className=\"w-3 h-3 text-gray-400 mr-1\" />\n <p className=\"text-sm text-gray-500 max-w-md text-center\">\n No data available for given filters\n </p>\n </span>\n ) : (\n <div className=\"text-base leading-relaxed\">{bodyContent}</div>\n )}\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n );\n}\n\nexport function renderCard(props: any): JSX.Element {\n const {\n isEditable = false,\n gjsModel,\n performInteraction = () => Promise.resolve({}),\n ...rest\n } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const {\n headerContent,\n headerDescription,\n bodyContent,\n footerContent,\n footerClass,\n footerIcon,\n contentMetadata,\n contentMetadataClass,\n className: dataClassName,\n error: dataError,\n isMissing: dataIsMissing,\n } = allData;\n\n function toSafeText(value: unknown): string {\n if (value === null) {\n return '';\n }\n\n return typeof value === 'string' ? value : JSON.stringify(value);\n }\n\n const safeHeaderContent = toSafeText(headerContent);\n const safeHeaderDescription = toSafeText(headerDescription);\n const safeBodyContent = toSafeText(bodyContent);\n const safeFooterContent = toSafeText(footerContent);\n const safeContentMetadata = toSafeText(contentMetadata);\n\n const [footerHasContent, setFooterHasContent] = useState(safeFooterContent.length > 0);\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData,\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n useEffect(() => {\n setFooterHasContent(safeFooterContent.length > 0);\n }, [safeFooterContent]);\n\n const defaultClasses =\n 'bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none';\n const defaultFooterClasses = footerHasContent\n ? 'text-sm bg-pink-50 text-pink-900 shadow-sm'\n : 'text-sm';\n const defaultContentMetadataClasses = 'text-xs';\n\n const mergedCardClassName = dataClassName ? cn(defaultClasses, dataClassName) : defaultClasses;\n const mergedFooterClassName = footerClass\n ? cn(defaultFooterClasses, footerClass)\n : defaultFooterClasses;\n const mergedContentMetadataClassName = contentMetadataClass\n ? cn(defaultContentMetadataClasses, contentMetadataClass)\n : defaultContentMetadataClasses;\n\n const hasError = Boolean(attributes?.error ?? dataError);\n const hasMissing = Boolean(attributes?.isMissing ?? dataIsMissing);\n const isLoading = Boolean(\n (attributes?.interactionApiInProgress || attributes?.loading) && !hasError && !hasMissing,\n );\n\n const footerIconText =\n typeof footerIcon === 'string'\n ? footerIcon\n : footerIcon && typeof footerIcon === 'object' && 'icon' in (footerIcon as any)\n ? String((footerIcon as any).icon)\n : '';\n\n function getCardContent() {\n if (isLoading) {\n return (\n <CardContent>\n <CardLoader />\n </CardContent>\n );\n }\n\n const showEmpty = hasError || hasMissing || !safeBodyContent;\n\n function handleFooterInput(event: React.FormEvent<HTMLDivElement>) {\n const target = event.target as HTMLDivElement;\n const content = target.textContent || '';\n const hasContent = content.trim().length > 0;\n\n setFooterHasContent(hasContent);\n\n if (!hasContent) {\n const currentProps = gjsModel.get('componentProps');\n gjsModel.set('componentProps', {\n ...currentProps,\n footerContent: null,\n footerIcon: null,\n footerClass: null,\n isEmptied: true,\n });\n }\n }\n\n return (\n <React.Fragment>\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"headerContent\" contentEditable={isEditable} className=\"text-lg\">\n {safeHeaderContent}\n </CardTitle>\n <CardDescription\n data-slot=\"headerDescription\"\n contentEditable={isEditable}\n className=\"text-sm\"\n >\n {safeHeaderDescription}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n\n {showEmpty ? (\n <span className=\"flex flex-row items-center px-3 py-2\">\n <CircleAlert className=\"w-3 h-3 text-gray-400 mr-1\" />\n <p className=\"text-sm text-gray-500 max-w-md text-center\">\n No data available for given filters\n </p>\n </span>\n ) : (\n <CardContent data-slot=\"bodyContent\" contentEditable={false} className=\"flex-grow\">\n <div className=\"text-3xl font-semibold truncate\">{safeBodyContent}</div>\n {safeContentMetadata && (\n <div className={mergedContentMetadataClassName} style={{ color: '#2A44D4' }}>\n {safeContentMetadata}\n </div>\n )}\n </CardContent>\n )}\n\n <CardFooter\n data-slot=\"footerContent\"\n contentEditable={isEditable}\n className={mergedFooterClassName}\n onInput={handleFooterInput}\n >\n {(footerIconText || '').trim() ? (\n <span className=\"mr-2\" aria-hidden=\"true\">\n {footerIconText}\n </span>\n ) : null}\n {safeFooterContent || ''}\n </CardFooter>\n </React.Fragment>\n );\n }\n\n return (\n <Card {...rest} className={`${mergedCardClassName} relative`}>\n {getCardContent()}\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\nfunction renderChartComponent(chartType: string, data: any, config: any): JSX.Element {\n const safeData = Array.isArray(data) ? data : [];\n\n if (safeData.length === 0) {\n return renderNoDataFallback();\n }\n\n switch (chartType) {\n case 'pie':\n return (\n <PieChart>\n {safeData.length >= 20 && (\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n )}\n <Pie\n data={safeData}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n safeData.length < 20\n ? ({ name, percent }: { name: string; percent: number }) =>\n `${name}: ${(percent * 100).toFixed(0)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n\n case 'bar': {\n config.dataKeys = config.dataKeys || [];\n\n const barDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n return (\n <BarChart data={safeData} {...config.chartUi} {...(barDataKeys.length > 1 && { barGap: 0 })}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <Legend align=\"left\" wrapperStyle={{ marginLeft: 20 }} />\n {barDataKeys.map(({ key, name, color }: { key: string; name: string; color: string }) => {\n return <Bar dataKey={key} fill={color ?? '#4caf50'} name={name} key={key} radius={2} />;\n })}\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n </BarChart>\n );\n }\n\n case 'line': {\n config.dataKeys = config.dataKeys || [];\n const safeDataKeysLine = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n return (\n <LineChart data={safeData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n {safeDataKeysLine.map(\n ({ key, name, color }: { key: string; name: string; color: string }) => {\n return (\n <Line\n type=\"monotone\"\n dataKey={key}\n stroke={color ?? '#4caf50'}\n name={name}\n key={key}\n />\n );\n },\n )}\n <Legend align=\"left\" />\n </LineChart>\n );\n }\n\n default:\n return (\n <PieChart>\n {safeData.length >= 20 && (\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n )}\n <Pie\n data={safeData}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n safeData.length < 20\n ? ({ name, percent }: { name: string; percent: number }) =>\n `${name}: ${(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 {\n isEditable = false,\n gjsModel,\n performInteraction = () => Promise.resolve({}),\n ...rest\n } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState<number>(0);\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n const newAttributes = gjsModel.get('attributes');\n setAttributes({\n ...newAttributes,\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const updateContainerWidth = () => {\n if (containerRef.current) {\n setContainerWidth(containerRef.current.offsetWidth || 0);\n }\n };\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContainerWidth(entry.contentRect.width || 0);\n }\n });\n\n updateContainerWidth();\n\n const timeoutId = setTimeout(updateContainerWidth, 50);\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n window.addEventListener('resize', updateContainerWidth);\n\n return () => {\n clearTimeout(timeoutId);\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateContainerWidth);\n };\n }, []);\n\n 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 safeChartData = Array.isArray(chartData) ? chartData : [];\n const colors = getNColors(safeChartData.length);\n safeChartData.forEach((data, i) => {\n if (!data.fill) {\n data.fill = colors[i];\n }\n });\n } else if (!config.color) {\n const safeBaseColors = Array.isArray(baseColors) ? baseColors : [];\n\n if (safeBaseColors.length > 0) {\n config.color = safeBaseColors[Math.floor(Math.random() * safeBaseColors.length)];\n }\n }\n\n let totalDataPoints = 0;\n\n if (chartType === 'bar' || chartType === 'line') {\n const safeChartData = Array.isArray(chartData) ? chartData : [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n totalDataPoints =\n chartType === 'bar'\n ? safeChartData.length * Math.max(1, safeDataKeys.length)\n : safeChartData.length;\n }\n\n const getScrollableWidth = () => {\n if (chartType === 'line') {\n return totalDataPoints * 20;\n }\n\n if (chartType === 'bar') {\n return (\n totalDataPoints * 20 +\n (Array.isArray(config.dataKeys) ? config.dataKeys.length : 0) *\n 8 *\n (Array.isArray(chartData) ? chartData.length : 0) +\n (Array.isArray(chartData) ? chartData.length : 0) * 15\n );\n }\n\n return 800;\n };\n\n const scrollWidth = getScrollableWidth();\n const shouldScroll =\n (chartType === 'bar' || chartType === 'line') &&\n totalDataPoints > 15 &&\n scrollWidth > containerWidth;\n\n const hasError = attributes.error || allData.error;\n const hasMissing = attributes.isMissing || allData.isMissing;\n const isLoading =\n (attributes.interactionApiInProgress || attributes.loading) && !hasError && !hasMissing;\n\n const ChartWrapper = ({ children }: { children: React.ReactNode }) => {\n if (shouldScroll) {\n return (\n <div className=\"w-full h-[250px] overflow-x-auto\">\n <div style={{ minWidth: `${scrollWidth}px`, height: '250px' }}>{children}</div>\n </div>\n );\n }\n\n return <div className=\"w-full h-[250px]\">{children}</div>;\n };\n\n const chartUi = isLoading ? (\n <ChartLoader />\n ) : hasError || hasMissing || !chartData ? (\n renderNoDataFallback()\n ) : (\n <ChartWrapper>\n <ResponsiveContainer width=\"100%\" height={250}>\n <ChartContainer {...rest} config={config} className={mergedClasses}>\n {renderChartComponent(chartType, chartData, config)}\n </ChartContainer>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n\n return (\n <Card className=\"shadow border mt-2 mb-2 relative\">\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"title\" contentEditable={isEditable} className=\"text-2xl\">\n {title}\n </CardTitle>\n <CardDescription data-slot=\"subTitle\" contentEditable={isEditable} className=\"text-sm\">\n {subTitle}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent ref={containerRef} data-slot=\"bodyContent\" className=\"px-6\">\n {chartUi}\n </CardContent>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\nexport function renderTable(props: any): JSX.Element {\n const { isEditable = false, gjsModel, performInteraction = () => {}, ...rest } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const cardRef = useRef<HTMLDivElement>(null);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n const {\n data: rawData,\n headerMapper: rawHeaderMapper = {},\n className,\n title = 'Title',\n subTitle = 'Subtitle',\n actions = [],\n pagination,\n } = allData;\n\n const data = Array.isArray(rawData) ? rawData : [];\n const headerMapper = (() => {\n const cleaned = { ...rawHeaderMapper };\n\n if ('id' in cleaned) {\n delete cleaned.id;\n }\n\n if (data.length > 0) {\n const dataKeys = Object.keys(data[0] || {});\n\n return Object.fromEntries(Object.entries(cleaned).filter(([key]) => dataKeys.includes(key)));\n }\n\n return cleaned;\n })();\n\n const sortConfig = (() => {\n const { sortColumn, sortDirection } = gjsModel.get('componentProps') ?? {};\n\n return sortColumn && sortDirection ? { [sortColumn]: sortDirection } : {};\n })();\n\n const [viewportWidth, setViewportWidth] = useState<number>(0);\n const [scrollAreaHeight, setScrollAreaHeight] = useState<number>(250);\n\n const calculateTableHeight = (tableWidth: number, rowCount: number) => {\n if (viewportWidth > 0) {\n const widthRatio = tableWidth / viewportWidth;\n const baseTableHeight = 250;\n let targetScrollAreaHeight = baseTableHeight;\n\n if (widthRatio >= 0.8) {\n const headerHeight = 48;\n const rowHeight = 40;\n const calculatedHeight = headerHeight + rowCount * rowHeight;\n targetScrollAreaHeight = Math.min(calculatedHeight, baseTableHeight);\n }\n\n const tableId = gjsModel.get('id');\n const editor = gjsModel.em || gjsModel.collection?.em;\n const canvasDocument = editor.Canvas.getDocument() || document;\n const tableElement = canvasDocument.querySelector(\n `[data-table-id=\"${tableId}\"]`,\n ) as HTMLElement;\n\n if (tableElement) {\n const headerElement = tableElement.querySelector(\n '[data-slot=\"card-header\"]',\n ) as HTMLElement;\n\n if (headerElement && headerElement.offsetHeight > 0) {\n const actualHeaderHeight = headerElement.offsetHeight;\n const standardHeaderHeight = 58;\n const heightDifference = actualHeaderHeight - standardHeaderHeight;\n\n if (heightDifference > 0) {\n targetScrollAreaHeight = targetScrollAreaHeight - heightDifference;\n }\n }\n }\n\n setScrollAreaHeight(targetScrollAreaHeight);\n }\n };\n\n useEffect(() => {\n const updateViewportWidth = () => {\n const iframe = document.querySelector('.gjs-frame');\n const iframeWindow = (iframe as any)?.contentWindow;\n const iframeDocument = iframeWindow?.document;\n\n if (iframeDocument) {\n const dashboardRoot = iframeDocument.getElementById('dashboard-root');\n const effectiveViewportWidth =\n dashboardRoot?.clientWidth || iframeDocument.documentElement.clientWidth;\n setViewportWidth(effectiveViewportWidth);\n }\n };\n\n updateViewportWidth();\n window.addEventListener('resize', updateViewportWidth);\n\n const iframe = document.querySelector('.gjs-frame');\n const iframeWindow = (iframe as any)?.contentWindow;\n\n if (iframeWindow) {\n iframeWindow.addEventListener('resize', updateViewportWidth);\n }\n\n return () => {\n window.removeEventListener('resize', updateViewportWidth);\n\n if (iframeWindow) {\n iframeWindow.removeEventListener('resize', updateViewportWidth);\n }\n };\n }, []);\n\n useEffect(() => {\n const updateTableWidthAndApplyCSS = () => {\n const tableId = gjsModel.get('id');\n const editor = gjsModel.em || gjsModel.collection?.em;\n const canvasDocument = editor.Canvas.getDocument() || document;\n\n let tableElement = canvasDocument.querySelector(\n `[data-table-id=\"${tableId}\"]`,\n ) as HTMLElement;\n\n if (!tableElement && window.parent !== window) {\n tableElement = window.parent.document.querySelector(\n `[data-table-id=\"${tableId}\"]`,\n ) as HTMLElement;\n }\n\n if (!tableElement) {\n return;\n }\n\n const tableActualWidth = tableElement.getBoundingClientRect().width;\n\n if (tableActualWidth > 0) {\n calculateTableHeight(tableActualWidth, Array.isArray(data) ? data.length : 0);\n }\n };\n\n const timeoutId = setTimeout(updateTableWidthAndApplyCSS, 150);\n window.addEventListener('resize', updateTableWidthAndApplyCSS);\n\n return () => {\n clearTimeout(timeoutId);\n window.removeEventListener('resize', updateTableWidthAndApplyCSS);\n };\n }, [allData, gjsModel, viewportWidth, data, calculateTableHeight]);\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n const parsedData = (() => {\n if (\n typeof data === 'object' &&\n data !== null &&\n !Array.isArray(data) &&\n (data as any).name === '__peak_placeholder'\n ) {\n return [];\n }\n\n if (!Array.isArray(data)) {\n return [];\n }\n\n return data.map((datum: any) => {\n const newData = {\n ...datum,\n };\n\n delete newData.id;\n\n return newData;\n });\n })();\n\n async function onRowAction(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 async function onPageChange(pageNumber: number, pageSize: number) {\n const id = gjsModel.get('id');\n const { sortColumn, sortDirection } = gjsModel.get('componentProps') ?? {};\n\n await performInteraction({\n id,\n interactionType: 'pagination',\n payload: {\n pageNumber,\n pageSize,\n ...(sortColumn && sortDirection && { sortColumn, sortDirection }),\n },\n affectedComponents: getAffectedComponentsWithLoader([id], true),\n });\n }\n\n async function handleSort(column: string, direction: SortDirection) {\n const currentProps = gjsModel.get('componentProps');\n const id = gjsModel.get('id');\n\n gjsModel.set('componentProps', {\n ...currentProps,\n sortColumn: direction ? column : null,\n sortDirection: direction,\n });\n\n await performInteraction({\n id,\n interactionType: 'tableSort',\n payload: {\n sortColumn: direction ? column : null,\n sortDirection: direction,\n tableId: id,\n },\n affectedComponents: getAffectedComponentsWithLoader([id], true),\n });\n }\n\n return (\n <Card\n ref={cardRef}\n className=\"shadow border relative flex flex-col h-fit overflow-hidden\"\n data-component-type=\"table\"\n data-table-id={gjsModel.get('id')}\n >\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"title\" contentEditable={isEditable} className=\"text-2xl\">\n {title}\n </CardTitle>\n <CardDescription data-slot=\"subTitle\" contentEditable={isEditable} className=\"text-sm\">\n {subTitle}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent\n data-slot=\"bodyContent\"\n contentEditable={false}\n className=\"flex-1 flex flex-col overflow-hidden\"\n >\n {attributes.error || allData.error || attributes.isMissing || allData.isMissing ? (\n renderNoDataFallback()\n ) : (\n <DataTable\n data={parsedData}\n headerMapper={headerMapper}\n className={className}\n isEditable={isEditable}\n actions={actions}\n pagination={pagination}\n isLoading={attributes.interactionApiInProgress || attributes.loading}\n onRowAction={onRowAction}\n onPageChange={onPageChange}\n onSort={handleSort}\n sortConfig={sortConfig}\n otherProps={rest}\n height={scrollAreaHeight}\n />\n )}\n </CardContent>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n tableActions={actions}\n firstRowData={Array.isArray(data) && data.length > 0 ? data[0] : {}}\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\nexport function renderTab(props: any): JSX.Element {\n let tabsWidth = 157;\n const safeTabs = Array.isArray(props.tabs) ? props.tabs : [];\n const showFallback = safeTabs.length === 0;\n\n if (safeTabs.length > 4) {\n tabsWidth = 157;\n }\n\n const defaultValue = props.defaultValue || (safeTabs.length > 0 ? safeTabs[0] : undefined);\n\n return (\n <Tabs defaultValue={defaultValue}>\n <div className=\"text-center mb-4\">\n <TabsList className=\"bg-[#F9F9FE] border border-[#D4D5DE] p-1 rounded-lg h-auto\">\n {safeTabs.length > 0 ? (\n safeTabs.map((tab: string) => (\n <TabsTrigger\n value={tab}\n key={tab}\n className={`\n w-[${tabsWidth}px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n `}\n style={{\n fontFamily: 'Helvetica Neue',\n fontWeight: 500,\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: '0%',\n }}\n >\n {tab}\n </TabsTrigger>\n ))\n ) : (\n <TabsTrigger\n value=\"no-data\"\n className={`\n w-[${tabsWidth}px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n `}\n style={{\n fontFamily: 'Helvetica Neue',\n fontWeight: 500,\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: '0%',\n }}\n disabled\n >\n No tabs\n </TabsTrigger>\n )}\n </TabsList>\n </div>\n {showFallback ? (\n <TabsContent\n value={defaultValue || 'no-data'}\n className=\"tabs-content\"\n data-fallback=\"true\"\n >\n {renderNoDataFallback()}\n </TabsContent>\n ) : (\n safeTabs.map((tab: string) => (\n <TabsContent value={tab} className=\"tabs-content\" key={tab} />\n ))\n )}\n </Tabs>\n );\n}\n\nexport function renderMarkdown(props: any): JSX.Element {\n const { isEditable = false, gjsModel, ...rest } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n const [isEditing, setIsEditing] = useState(false);\n const [isEditingHeading, setIsEditingHeading] = useState(false);\n const editRef = useRef<HTMLDivElement>(null);\n const headingEditRef = useRef<HTMLDivElement>(null);\n\n const startEditing = () => {\n setIsEditing(true);\n setTimeout(() => {\n setupEditor();\n }, 0);\n };\n\n const startEditingHeading = () => {\n setIsEditingHeading(true);\n setTimeout(() => {\n setupHeadingEditor();\n }, 0);\n };\n\n const setupEditor = () => {\n if (!editRef.current) {\n return;\n }\n\n const editor = editRef.current;\n editor.innerHTML = '';\n editor.textContent = allData.summaryText;\n editor.focus();\n };\n\n const setupHeadingEditor = () => {\n if (!headingEditRef.current) {\n return;\n }\n\n const editor = headingEditRef.current;\n editor.innerHTML = '';\n editor.textContent = allData.summaryHeading || 'Insights';\n editor.focus();\n };\n\n // Save changes and exit editing mode\n const saveChanges = () => {\n if (!editRef.current) {\n return;\n }\n\n const content = editRef.current.innerText || '';\n setAllData((prev: Record<string, any>) => ({\n ...prev,\n summaryText: content,\n }));\n setIsEditing(false);\n editRef.current.innerHTML = '';\n };\n\n const saveHeadingChanges = () => {\n if (!headingEditRef.current) {\n return;\n }\n\n const content = headingEditRef.current.innerText || 'Insights';\n setAllData((prev: Record<string, any>) => ({\n ...prev,\n summaryHeading: content,\n }));\n setIsEditingHeading(false);\n headingEditRef.current.innerHTML = '';\n };\n\n const markdownStyles = {\n ul: { props: { className: 'list-disc' } },\n h1: { props: { className: 'text-4xl font-bold leading-[4rem]' } },\n h2: { props: { className: 'text-3xl font-bold leading-[3rem]' } },\n h3: { props: { className: 'text-2xl font-bold leading-[2rem]' } },\n h4: { props: { className: 'text-xl font-bold leading-[2.5rem]' } },\n h5: { props: { className: 'text-lg font-bold leading-[2.5rem]' } },\n h6: { props: { className: 'text-base font-bold leading-[2rem]' } },\n };\n\n const hasError = attributes.error || allData.error;\n const hasMissing = attributes.isMissing || allData.isMissing;\n const isLoading =\n (attributes.loading && !hasError && !hasMissing) || attributes.interactionApiInProgress;\n\n if (isLoading) {\n return <MarkdownLoader />;\n }\n\n if (hasError || hasMissing) {\n return (\n <div className=\"px-[1em] relative\" {...rest}>\n <h3 className=\"text-xl font-semibold text-left\">{allData.summaryHeading || 'Insights'}</h3>\n <div\n className=\"w-full py-8 flex flex-col items-center justify-center px-6 text-center\"\n style={{ minHeight: '180px' }}\n >\n <CircleAlert className=\"w-12 h-12 text-gray-400 mb-2\" />\n <h3 className=\"text-lg font-medium text-gray-900\">No data available</h3>\n <p className=\"mt-2 text-sm text-gray-500 max-w-md\">\n Check your filters or try a different time range.\n </p>\n </div>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n }\n\n if (!allData.isEditable) {\n return (\n <div className=\"px-[1em] relative\" {...rest}>\n <h3 className=\"text-xl font-semibold text-left\">{allData.summaryHeading || 'Insights'}</h3>\n <div data-slot=\"summaryText\">\n <Markdown options={{ overrides: markdownStyles }}>{allData.summaryText}</Markdown>\n </div>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n }\n\n return (\n <div className=\"p-[1em] relative\" {...rest}>\n {isEditingHeading ? (\n <div\n ref={headingEditRef}\n contentEditable\n onBlur={saveHeadingChanges}\n data-slot=\"summaryHeading\"\n className=\"text-xl font-semibold text-left\"\n suppressContentEditableWarning={true}\n />\n ) : (\n <h3\n className=\"text-xl font-semibold text-left\"\n onClick={startEditingHeading}\n data-slot=\"summaryHeading\"\n >\n {allData.summaryHeading || 'Insights'}\n </h3>\n )}\n {isEditing ? (\n <div\n ref={editRef}\n contentEditable\n onBlur={saveChanges}\n data-slot=\"summaryText\"\n className=\"p-2 min-h-[100px] whitespace-pre-wrap\"\n suppressContentEditableWarning={true}\n style={{\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n }}\n />\n ) : (\n <div\n onClick={startEditing}\n data-slot=\"summaryText\"\n style={{\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n }}\n >\n <Markdown options={{ overrides: markdownStyles }}>{allData.summaryText}</Markdown>\n </div>\n )}\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n}\n\nexport function renderButton(props: any): JSX.Element {\n const { 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\nconst renderActionCardWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'ActionCard' }}>\n {renderActionCard(props)}\n </ComponentWrapper>\n);\n\nconst renderButtonWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Button' }}>\n {renderButton(props)}\n </ComponentWrapper>\n);\n\nconst renderCardWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Card' }}>\n {renderCard(props)}\n </ComponentWrapper>\n);\n\nconst renderChartWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Chart' }}>\n {renderChart(props)}\n </ComponentWrapper>\n);\n\nconst renderFilterWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Filter' }}>\n {renderFilter(props)}\n </ComponentWrapper>\n);\n\nconst renderMarkdownWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Markdown' }}>\n {renderMarkdown(props)}\n </ComponentWrapper>\n);\n\nconst renderSearchWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Search' }}>\n {renderSearch(props)}\n </ComponentWrapper>\n);\n\nconst renderTableWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Table' }}>\n {renderTable(props)}\n </ComponentWrapper>\n);\n\nconst renderTabWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Tabs' }}>\n {renderTab(props)}\n </ComponentWrapper>\n);\n\nfunction renderActions(props: any): JSX.Element {\n const { actions, isEditable = false, gjsModel } = props;\n\n if (actions === null) {\n return <div />;\n }\n\n if (!Array.isArray(actions) || actions.length === 0) {\n return (\n <div className=\"bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none relative\">\n <CardLoader />\n </div>\n );\n }\n\n return (\n <div className=\"dashboard-cards flex flex-wrap gap-4\">\n {actions.map((action: any, index: number) => {\n const { icon, title, description } = action;\n\n return (\n <div key={index} className=\"flex-1 min-w-[200px]\">\n {renderActionCard({\n icon,\n headerContent: title,\n bodyContent: description,\n isEditable,\n gjsModel,\n })}\n </div>\n );\n })}\n </div>\n );\n}\n\nconst renderActionsWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Actions' }}>\n {renderActions(props)}\n </ComponentWrapper>\n);\n\nexport function getRenderers(): Record<string, (props: any) => JSX.Element> {\n return {\n ActionCard: renderActionCardWithWrapper,\n Actions: renderActionsWithWrapper,\n Button: renderButtonWithWrapper,\n Card: renderCardWithWrapper,\n Chart: renderChartWithWrapper,\n Filter: renderFilterWithWrapper,\n Markdown: renderMarkdownWithWrapper,\n Search: renderSearchWithWrapper,\n Table: renderTableWithWrapper,\n Tabs: renderTabWithWrapper,\n };\n}\n"],"mappings":"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","ignoreList":[]}