@peak-ai/canvas 1.4.26 → 1.4.27-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/GrapesjsCanvas.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _regeneratorRuntime from"@babel/runtime/regenerator";/* eslint-disable @typescript-eslint/no-explicit-any */import React,{useEffect,useRef}from"react";// eslint-disable-next-line import/no-named-as-default
|
|
2
|
-
import grapesjs from"grapesjs";import"grapesjs/dist/css/grapes.min.css";import tailwind from"grapesjs-tailwind";import{TypesToRegister}from"./constants";import{toKebabCase}from"./helpers";import{
|
|
3
|
-
}:_ref2$newDataNotifier,setHasChanged=_ref2.setHasChanged,
|
|
2
|
+
import grapesjs from"grapesjs";import"grapesjs/dist/css/grapes.min.css";import tailwind from"grapesjs-tailwind";import{TypesToRegister}from"./constants";import{toKebabCase}from"./helpers";import{tailwindCompiledCss}from"./helpers/css";import{datePickerCss}from"./helpers/date-picker";import{createGrapesjsShadcnGenericPlugin}from"./plugins/grapejs-plugin";import{StyledEditor}from"./index.styles";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";function setComponentProperties(editor,isPreview){function setPropertiesRecursively(comp){comp.set({editable:!isPreview,draggable:!isPreview,droppable:!isPreview&&comp.getName()!=="Shadcn-generic",selectable:!isPreview,hoverable:!isPreview,highlightable:!isPreview,copyable:false,resizable:false,removable:!isPreview,badgable:false});if(!isPreview){comp.set("toolbar",[{attributes:{"class":"fa fa-arrows"},command:"tlb-move"},{attributes:{"class":"fa fa-trash"},command:"tlb-delete"}])}comp.components().forEach(setPropertiesRecursively)}if(isPreview){editor.runCommand("core:preview")}else{editor.stopCommand("core:preview")}var wrapper=editor.getWrapper();wrapper==null||wrapper.find("*").forEach(setPropertiesRecursively)}function convertStyles(stylesArray){return stylesArray.map(function(block){var selectors=Array.isArray(block.selectors)?block.selectors.join(", "):block.selectors;var declarations=Object.entries(block.style).map(function(_ref){var prop=_ref[0],value=_ref[1];return toKebabCase(prop)+": "+value+";"}).join(" ");return selectors+" { "+declarations+" }"}).join("\n")}function createActionCardConfig(action){var icon=action.icon,title=action.title,description=action.description;return{type:"shadcn-generic",componentName:"ActionCard",badgable:false,copyable:false,removable:true,draggable:true,componentProps:{icon:icon,headerContent:title,bodyContent:description}}}function expandActions(node){if(node.type==="shadcn-generic"&&node.componentName==="Actions"){var _node$componentProps;var actions=(_node$componentProps=node.componentProps)==null?void 0:_node$componentProps.actions;if(Array.isArray(actions)&&actions.length>0){return _extends({},node,{type:"div",classes:["dashboard-cards"].concat(node.classes||[]),componentName:undefined,componentProps:undefined,components:actions.map(function(action,i){return _extends({},createActionCardConfig(action),{id:node.id+"--action-card-"+i})})})}return node}if(Array.isArray(node.components)){return _extends({},node,{components:node.components.map(expandActions)})}return node}function setInteracting(renderedComponents,components,inProgress){components.forEach(function(component){var componentId=component.componentId,showLoader=component.showLoader;if(!showLoader){return}var gjsModel=renderedComponents[componentId];if(gjsModel){gjsModel.set("attributes",_extends({},gjsModel.get("attributes"),{interactionApiInProgress:inProgress}))}})}function expandActionsComponent(model,actions){model.components("");actions.forEach(function(action){model.append(createActionCardConfig(action))});model.set("type","div");model.addClass("dashboard-cards");model.set("componentName",undefined);model.set("componentProps",{})}function GrapesjsCanvas(_ref2){var json=_ref2.json,_ref2$mode=_ref2.mode,mode=_ref2$mode===void 0?"preview":_ref2$mode,setEditor=_ref2.setEditor,performInteraction=_ref2.performInteraction,_ref2$newDataNotifier=_ref2.newDataNotifier,newDataNotifier=_ref2$newDataNotifier===void 0?function(){// no op
|
|
3
|
+
}:_ref2$newDataNotifier,_ref2$setHasChanged=_ref2.setHasChanged,setHasChanged=_ref2$setHasChanged===void 0?function(){// no op
|
|
4
|
+
}:_ref2$setHasChanged,isStreaming=_ref2.isStreaming;var editorRef=useRef(null);var editorInstance=useRef(null);var renderedComponents=useRef({});var isStreamingRef=useRef(isStreaming);var isSystemUpdateRef=useRef(false);var lastJsonRef=useRef("");var isEditorAliveRef=useRef(false);useEffect(function(){isStreamingRef.current=isStreaming},[isStreaming]);function notificationHandler(props){if(!props){return true}var componentId=props.componentId,_props$newProps=props.newProps,newProps=_props$newProps===void 0?{}:_props$newProps,_props$newAttributes=props.newAttributes,newAttributes=_props$newAttributes===void 0?{}:_props$newAttributes;var model=renderedComponents.current[componentId];if(!model){return false}// Filter out complex placeholder objects by setting them to null
|
|
4
5
|
// This ensures placeholder values are properly cleared and don't cause stale data issues
|
|
5
6
|
var filteredProps=_extends({},newProps);Object.keys(filteredProps).forEach(function(key){var value=filteredProps[key];if(value&&typeof value==="object"&&value.name==="__peak_placeholder"){filteredProps[key]=null}});var parsedNewProps=_extends({},filteredProps);if(filteredProps.pagination){parsedNewProps.pagination=_extends({},model.get("componentProps").pagination||{},filteredProps.pagination)}// Handle Actions component: expand into ActionCards when data arrives via streaming
|
|
6
7
|
var isActionsComponent=model.get("componentName")==="Actions";var hasValidActionsData=parsedNewProps.actions&&parsedNewProps.actions!==null&&Array.isArray(parsedNewProps.actions)&&parsedNewProps.actions.length>0;if(isActionsComponent&&hasValidActionsData){var _model$components$at;var isAlreadyExpanded=model.components().length>0&&((_model$components$at=model.components().at(0))==null?void 0:_model$components$at.get("componentName"))==="ActionCard";if(!isAlreadyExpanded){expandActionsComponent(model,parsedNewProps.actions);return true}}model.set("componentProps",_extends({},model.get("componentProps"),parsedNewProps));model.set("attributes",_extends({},model.get("attributes"),newAttributes));return true}useEffect(function(){newDataNotifier(notificationHandler)},[]);function performInteractionWrapper(_x){return _performInteractionWrapper.apply(this,arguments)}function _performInteractionWrapper(){_performInteractionWrapper=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(payload){var _editorInstance$curre;var updatedJson,apiResponse,componentUpdates;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:_context4.next=2;return(_editorInstance$curre=editorInstance.current)==null?void 0:_editorInstance$curre.store();case 2:updatedJson=_context4.sent;setInteracting(renderedComponents.current,payload.affectedComponents,true);_context4.prev=4;_context4.next=7;return performInteraction(_extends({},payload,{json:updatedJson}));case 7:apiResponse=_context4.sent;componentUpdates=apiResponse||{};Object.entries(componentUpdates).forEach(function(_ref6){var key=_ref6[0],value=_ref6[1];var model=renderedComponents.current[key];if(model){model.set("attributes",_extends({},model.get("attributes"),{error:undefined}));model.set("componentProps",_extends({},model.get("componentProps"),value,{error:undefined,isMissing:undefined}))}});return _context4.abrupt("return",componentUpdates);case 13:_context4.prev=13;_context4.t0=_context4["catch"](4);payload.affectedComponents.forEach(function(componentId){var model=renderedComponents.current[componentId];if(model){var errorMessage=_context4.t0 instanceof Error?_context4.t0.message:"Something went wrong. Please try again.";model.set("attributes",_extends({},model.get("attributes"),{error:errorMessage}));model.set("componentProps",_extends({},model.get("componentProps"),{error:errorMessage,isMissing:undefined}))}});throw _context4.t0;case 17:_context4.prev=17;setInteracting(renderedComponents.current,payload.affectedComponents,false);return _context4.finish(17);case 20:case"end":return _context4.stop()}},_callee4,null,[[4,13,17,20]])}));return _performInteractionWrapper.apply(this,arguments)}useEffect(function(){var _json$pages,_json$pages$0$frames;if(!editorRef.current){return function(){// no op
|
|
7
|
-
}}if(editorInstance.current){editorInstance.current.destroy();editorInstance.current=null;isEditorAliveRef.current=false}var currentMode=mode;var editor=grapesjs.init({container:editorRef.current,height:"100%",plugins:[tailwind,createGrapesjsShadcnGenericPlugin(currentMode,performInteractionWrapper,renderedComponents.current,setHasChanged)],storageManager:{type:"none"},richTextEditor:{actions:["bold","italic","underline","strikethrough"]},canvas:{customBadgeLabel:function customBadgeLabel(component){var tagName=component.get("tagName");return tagName==="body"?"":tagName||""}}});isEditorAliveRef.current=true;function checkDirty(){return _checkDirty.apply(this,arguments)}function _checkDirty(){_checkDirty=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(){var stored,newJson;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:if(!(isStreamingRef.current||isSystemUpdateRef.current)){_context3.next=2;break}return _context3.abrupt("return");case 2:if(!(!isEditorAliveRef.current||!editorInstance.current)){_context3.next=4;break}return _context3.abrupt("return");case 4:stored=null;_context3.prev=5;_context3.next=8;return editorInstance.current.store();case 8:stored=_context3.sent;_context3.next=14;break;case 11:_context3.prev=11;_context3.t0=_context3["catch"](5);return _context3.abrupt("return");case 14:if(stored){_context3.next=16;break}return _context3.abrupt("return");case 16:newJson=JSON.stringify(stored);if(newJson!==lastJsonRef.current){setHasChanged(true);lastJsonRef.current=newJson}case 18:case"end":return _context3.stop()}},_callee3,null,[[5,11]])}));return _checkDirty.apply(this,arguments)}var debouncedCheckDirty=function(){var timeout=null;return function(){if(timeout){clearTimeout(timeout)}timeout=setTimeout(checkDirty,200)}}();["component:add","component:remove","component:update:content","style:update","component:drag:end","rte:change"].forEach(function(evt){editor.on(evt,debouncedCheckDirty)});editor.on("component:update",function(model,prop){if(["attributes","componentProps","content"].includes(prop)){debouncedCheckDirty()}});// Tailwind CSS rules aren't fully added to our component
|
|
8
|
+
}}if(editorInstance.current){editorInstance.current.destroy();editorInstance.current=null;isEditorAliveRef.current=false}var currentMode=mode;var editor=grapesjs.init({container:editorRef.current,height:"100%",plugins:[tailwind,createGrapesjsShadcnGenericPlugin(currentMode,performInteractionWrapper,renderedComponents.current,setHasChanged)],storageManager:{type:"none"},richTextEditor:{actions:["bold","italic","underline","strikethrough"]},canvas:{customBadgeLabel:function customBadgeLabel(component){var tagName=component.get("tagName");return tagName==="body"?"":tagName||""}}});isEditorAliveRef.current=true;var injectionAttempts=0;function injectStylesEarly(){var _editor$Canvas;var iframeDoc=(_editor$Canvas=editor.Canvas)==null||_editor$Canvas.getDocument==null?void 0:_editor$Canvas.getDocument();if(iframeDoc&&iframeDoc.head){if(!iframeDoc.head.querySelector("[data-grapesjs-styles]")){var style=iframeDoc.createElement("style");var fullCss="\n "+tailwindCompiledCss+"\n "+datePickerCss+"\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n ";style.innerHTML=fullCss;style.setAttribute("type","text/css");style.setAttribute("data-grapesjs-styles","true");iframeDoc.head.appendChild(style)}}else if(injectionAttempts<50){injectionAttempts+=1;requestAnimationFrame(injectStylesEarly)}}requestAnimationFrame(injectStylesEarly);function checkDirty(){return _checkDirty.apply(this,arguments)}function _checkDirty(){_checkDirty=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(){var stored,newJson;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:if(!(isStreamingRef.current||isSystemUpdateRef.current)){_context3.next=2;break}return _context3.abrupt("return");case 2:if(!(!isEditorAliveRef.current||!editorInstance.current)){_context3.next=4;break}return _context3.abrupt("return");case 4:stored=null;_context3.prev=5;_context3.next=8;return editorInstance.current.store();case 8:stored=_context3.sent;_context3.next=14;break;case 11:_context3.prev=11;_context3.t0=_context3["catch"](5);return _context3.abrupt("return");case 14:if(stored){_context3.next=16;break}return _context3.abrupt("return");case 16:newJson=JSON.stringify(stored);if(newJson!==lastJsonRef.current){setHasChanged(true);lastJsonRef.current=newJson}case 18:case"end":return _context3.stop()}},_callee3,null,[[5,11]])}));return _checkDirty.apply(this,arguments)}var debouncedCheckDirty=function(){var timeout=null;return function(){if(timeout){clearTimeout(timeout)}timeout=setTimeout(checkDirty,200)}}();["component:add","component:remove","component:update:content","style:update","component:drag:end","rte:change"].forEach(function(evt){editor.on(evt,debouncedCheckDirty)});editor.on("component:update",function(model,prop){if(["attributes","componentProps","content"].includes(prop)){debouncedCheckDirty()}});// Tailwind CSS rules aren't fully added to our component
|
|
8
9
|
// So, adding them from here!
|
|
9
|
-
editor.on("load",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var canvasHead,style,fullCss;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:
|
|
10
|
+
editor.on("load",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var canvasDoc,canvasHead,style,fullCss;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:canvasDoc=editor.Canvas.getDocument();canvasHead=canvasDoc.head;if(!canvasHead.querySelector("[data-grapesjs-styles]")){style=canvasDoc.createElement("style");fullCss="\n "+tailwindCompiledCss+"\n "+datePickerCss+"\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n ";style.innerHTML=fullCss;style.setAttribute("type","text/css");style.setAttribute("data-grapesjs-styles","true");canvasHead.appendChild(style)}isSystemUpdateRef.current=true;setComponentProperties(editor,mode==="preview");_context.t0=JSON;_context.next=8;return editor.store();case 8:_context.t1=_context.sent;lastJsonRef.current=_context.t0.stringify.call(_context.t0,_context.t1);isSystemUpdateRef.current=false;case 11:case"end":return _context.stop()}},_callee)})));editorInstance.current=editor;if(setEditor){setEditor(editor)}TypesToRegister.forEach(function(_ref4){var type=_ref4.type,tagName=_ref4.tagName;if(!editor.DomComponents.getType(type)){editor.DomComponents.addType(type,{model:{defaults:{tagName:tagName}},view:{}})}});if(json&&((_json$pages=json.pages)==null?void 0:_json$pages.length)>0&&((_json$pages$0$frames=json.pages[0].frames)==null?void 0:_json$pages$0$frames.length)>0){isSystemUpdateRef.current=true;var raw=json.pages[0].frames[0].component;var processed=expandActions(raw);editor.setComponents(processed);var cssText=convertStyles(json.styles||[]);editor.setStyle(cssText);editor.on("load",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(){return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.t0=JSON;_context2.next=3;return editor.store();case 3:_context2.t1=_context2.sent;lastJsonRef.current=_context2.t0.stringify.call(_context2.t0,_context2.t1);isSystemUpdateRef.current=false;case 6:case"end":return _context2.stop()}},_callee2)})))}return function cleanup(){editor.destroy();isEditorAliveRef.current=false}},[json,mode]);return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(StyledEditor,{}),/*#__PURE__*/_jsx("div",{ref:editorRef,id:"grapesjs-editor"})]})}export default GrapesjsCanvas;
|
|
10
11
|
//# sourceMappingURL=GrapesjsCanvas.js.map
|
package/GrapesjsCanvas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GrapesjsCanvas.js","names":["React","useEffect","useRef","grapesjs","tailwind","TypesToRegister","toKebabCase","createGrapesjsShadcnGenericPlugin","StyledEditor","tailwindCompiledCss","datePickerCss","jsx","_jsx","jsxs","_jsxs","setComponentProperties","editor","isPreview","setPropertiesRecursively","comp","set","editable","draggable","droppable","getName","selectable","hoverable","highlightable","copyable","resizable","removable","badgable","attributes","command","components","forEach","runCommand","stopCommand","wrapper","getWrapper","find","convertStyles","stylesArray","map","block","selectors","Array","isArray","join","declarations","Object","entries","style","_ref","prop","value","createActionCardConfig","action","index","icon","title","description","type","componentName","componentProps","headerContent","bodyContent","expandActions","node","_node$componentProps","actions","length","_extends","classes","concat","undefined","i","id","setInteracting","renderedComponents","inProgress","component","componentId","showLoader","gjsModel","get","interactionApiInProgress","expandActionsComponent","model","append","addClass","GrapesjsCanvas","_ref2","json","_ref2$mode","mode","setEditor","performInteraction","_ref2$newDataNotifier","newDataNotifier","setHasChanged","isStreaming","editorRef","editorInstance","isStreamingRef","isSystemUpdateRef","lastJsonRef","isEditorAliveRef","current","notificationHandler","props","_props$newProps","newProps","_props$newAttributes","newAttributes","filteredProps","keys","key","name","parsedNewProps","pagination","isActionsComponent","hasValidActionsData","_model$components$at","isAlreadyExpanded","at","performInteractionWrapper","_x","_performInteractionWrapper","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee4","payload","_editorInstance$curre","updatedJson","apiResponse","componentUpdates","wrap","_callee4$","_context4","prev","next","store","sent","affectedComponents","_ref6","error","isMissing","abrupt","t0","errorMessage","Error","message","finish","stop","_json$pages","_json$pages$0$frames","destroy","currentMode","init","container","height","plugins","storageManager","richTextEditor","canvas","customBadgeLabel","tagName","checkDirty","_checkDirty","_callee3","stored","newJson","_callee3$","_context3","JSON","stringify","debouncedCheckDirty","timeout","clearTimeout","setTimeout","evt","on","includes","_callee","canvasHead","fullCss","_callee$","_context","Canvas","getDocument","head","document","createElement","innerHTML","setAttribute","appendChild","t1","call","_ref4","DomComponents","getType","addType","defaults","view","pages","frames","raw","processed","setComponents","cssText","styles","setStyle","_callee2","_callee2$","_context2","cleanup","Fragment","children","ref"],"sources":["../src/GrapesjsCanvas.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useRef } from 'react';\n// eslint-disable-next-line import/no-named-as-default\nimport grapesjs, { Component, Editor } from 'grapesjs';\nimport 'grapesjs/dist/css/grapes.min.css';\nimport tailwind from 'grapesjs-tailwind';\nimport { TypesToRegister } from './constants';\nimport { toKebabCase } from './helpers';\nimport { createGrapesjsShadcnGenericPlugin } from './plugins/grapejs-plugin';\nimport { StyledEditor } from './index.styles';\nimport { tailwindCompiledCss } from './helpers/css';\nimport { datePickerCss } from './helpers/date-picker';\n\ntype NotificationHandler = (newData: {\n componentId: string;\n newProps: Record<string, any>;\n newAttributes: Record<string, any>;\n}) => boolean;\n\ntype GrapesjsCanvasProps = {\n json: any;\n mode?: 'editor' | 'preview';\n setEditor: (editor: Editor) => void;\n performInteraction: (payload: Record<string, any>) => Promise<Record<string, any> | undefined>;\n newDataNotifier: (notifHandler: NotificationHandler) => void;\n setHasChanged: (hasChanged: boolean) => void;\n isStreaming: boolean;\n};\n\nfunction setComponentProperties(editor: Editor, isPreview: boolean) {\n function setPropertiesRecursively(comp: Component) {\n comp.set({\n editable: !isPreview,\n draggable: !isPreview,\n droppable: !isPreview && comp.getName() !== 'Shadcn-generic',\n selectable: !isPreview,\n hoverable: !isPreview,\n highlightable: !isPreview,\n copyable: false,\n resizable: false,\n removable: !isPreview,\n badgable: false,\n });\n\n if (!isPreview) {\n comp.set('toolbar', [\n { attributes: { class: 'fa fa-arrows' }, command: 'tlb-move' },\n { attributes: { class: 'fa fa-trash' }, command: 'tlb-delete' },\n ]);\n }\n\n comp.components().forEach(setPropertiesRecursively);\n }\n\n if (isPreview) {\n editor.runCommand('core:preview');\n } else {\n editor.stopCommand('core:preview');\n }\n\n const wrapper = editor.getWrapper();\n wrapper?.find('*').forEach(setPropertiesRecursively);\n}\n\nfunction convertStyles(stylesArray: any[]): string {\n return stylesArray\n .map((block) => {\n const selectors = Array.isArray(block.selectors)\n ? block.selectors.join(', ')\n : block.selectors;\n const declarations = Object.entries(block.style)\n .map(([prop, value]) => `${toKebabCase(prop)}: ${value};`)\n .join(' ');\n\n return `${selectors} { ${declarations} }`;\n })\n .join('\\n');\n}\n\nfunction createActionCardConfig(action: any, index?: number): any {\n const { icon, title, description } = action;\n \n return {\n type: 'shadcn-generic',\n componentName: 'ActionCard',\n badgable: false,\n copyable: false,\n removable: true,\n draggable: true,\n componentProps: {\n icon,\n headerContent: title,\n bodyContent: description,\n },\n };\n}\n\nfunction expandActions(node: any): any {\n if (\n node.type === 'shadcn-generic' &&\n node.componentName === 'Actions'\n ) {\n const actions = node.componentProps?.actions;\n\n if (Array.isArray(actions) && actions.length > 0) {\n return {\n ...node,\n type: 'div',\n classes: ['dashboard-cards', ...(node.classes || [])],\n componentName: undefined,\n componentProps: undefined,\n components: actions.map((action: any, i: number) => ({\n ...createActionCardConfig(action, i),\n id: `${node.id}--action-card-${i}`,\n })),\n };\n }\n\n return node;\n }\n\n if (Array.isArray(node.components)) {\n return {\n ...node,\n components: node.components.map(expandActions),\n };\n }\n\n return node;\n}\n\nfunction setInteracting(\n renderedComponents: Record<string, Component>,\n components: { componentId: string; showLoader: boolean }[],\n inProgress: boolean,\n) {\n components.forEach((component) => {\n const { componentId, showLoader } = component;\n\n if (!showLoader) {\n return;\n }\n\n const gjsModel = renderedComponents[componentId];\n\n if (gjsModel) {\n gjsModel.set('attributes', {\n ...gjsModel.get('attributes'),\n interactionApiInProgress: inProgress,\n });\n }\n });\n}\n\nfunction expandActionsComponent(model: Component, actions: any[]): void {\n model.components('');\n \n actions.forEach((action: any) => {\n model.append(createActionCardConfig(action));\n });\n\n model.set('type', 'div');\n model.addClass('dashboard-cards');\n model.set('componentName', undefined);\n model.set('componentProps', {});\n}\n\nfunction GrapesjsCanvas({\n json,\n mode = 'preview',\n setEditor,\n performInteraction,\n newDataNotifier = () => {\n // no op\n },\n setHasChanged,\n isStreaming,\n}: GrapesjsCanvasProps) {\n const editorRef = useRef<HTMLDivElement>(null);\n const editorInstance = useRef<Editor | null>(null);\n const renderedComponents = useRef<Record<string, Component>>({});\n const isStreamingRef = useRef(isStreaming);\n const isSystemUpdateRef = useRef(false);\n const lastJsonRef = useRef<string>('');\n const isEditorAliveRef = useRef(false);\n\n useEffect(() => {\n isStreamingRef.current = isStreaming;\n }, [isStreaming]);\n\n function notificationHandler(\n props: Parameters<NotificationHandler>[0],\n ): ReturnType<NotificationHandler> {\n if (!props) {\n return true;\n }\n\n const { componentId, newProps = {}, newAttributes = {} } = props;\n\n const model = renderedComponents.current[componentId];\n\n if (!model) {\n return false;\n }\n\n // Filter out complex placeholder objects by setting them to null\n // This ensures placeholder values are properly cleared and don't cause stale data issues\n const filteredProps = { ...newProps };\n\n Object.keys(filteredProps).forEach((key) => {\n const value = filteredProps[key];\n\n if (value && typeof value === 'object' && value.name === '__peak_placeholder') {\n filteredProps[key] = null;\n }\n });\n\n const parsedNewProps = {\n ...filteredProps,\n };\n\n if (filteredProps.pagination) {\n parsedNewProps.pagination = {\n ...(model.get('componentProps').pagination || {}),\n ...filteredProps.pagination,\n };\n }\n\n // Handle Actions component: expand into ActionCards when data arrives via streaming\n const isActionsComponent = model.get('componentName') === 'Actions';\n const hasValidActionsData = parsedNewProps.actions && \n parsedNewProps.actions !== null && \n Array.isArray(parsedNewProps.actions) && \n parsedNewProps.actions.length > 0;\n \n if (isActionsComponent && hasValidActionsData) {\n const isAlreadyExpanded = model.components().length > 0 && \n model.components().at(0)?.get('componentName') === 'ActionCard';\n\n if (!isAlreadyExpanded) {\n expandActionsComponent(model, parsedNewProps.actions);\n\n return true;\n }\n }\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...parsedNewProps,\n });\n\n model.set('attributes', {\n ...model.get('attributes'),\n ...newAttributes,\n });\n\n return true;\n }\n\n useEffect(() => {\n newDataNotifier(notificationHandler);\n }, []);\n\n async function performInteractionWrapper(payload: Record<string, any>) {\n const updatedJson = await editorInstance.current?.store();\n setInteracting(renderedComponents.current, payload.affectedComponents, true);\n\n try {\n const apiResponse = await performInteraction({\n ...payload,\n json: updatedJson,\n });\n\n const componentUpdates = apiResponse || {};\n\n Object.entries(componentUpdates).forEach(([key, value]) => {\n const model = renderedComponents.current[key];\n\n if (model) {\n model.set('attributes', {\n ...model.get('attributes'),\n error: undefined,\n });\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...value,\n error: undefined,\n isMissing: undefined,\n });\n }\n });\n\n return componentUpdates;\n } catch (error) {\n payload.affectedComponents.forEach((componentId: string) => {\n const model = renderedComponents.current[componentId];\n\n if (model) {\n const errorMessage =\n error instanceof Error ? error.message : 'Something went wrong. Please try again.';\n\n model.set('attributes', {\n ...model.get('attributes'),\n error: errorMessage,\n });\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n error: errorMessage,\n isMissing: undefined,\n });\n }\n });\n\n throw error;\n } finally {\n setInteracting(renderedComponents.current, payload.affectedComponents, false);\n }\n }\n\n useEffect(() => {\n if (!editorRef.current) {\n return () => {\n // no op\n };\n }\n\n if (editorInstance.current) {\n editorInstance.current.destroy();\n editorInstance.current = null;\n isEditorAliveRef.current = false;\n }\n\n const currentMode = mode;\n\n const editor = grapesjs.init({\n container: editorRef.current,\n height: '100%',\n plugins: [\n tailwind,\n createGrapesjsShadcnGenericPlugin(\n currentMode,\n performInteractionWrapper,\n renderedComponents.current,\n setHasChanged,\n ),\n ],\n storageManager: { type: 'none' },\n richTextEditor: {\n actions: ['bold', 'italic', 'underline', 'strikethrough'],\n },\n canvas: {\n customBadgeLabel: (component) => {\n const tagName = component.get('tagName');\n\n return tagName === 'body' ? '' : tagName || '';\n },\n },\n });\n\n isEditorAliveRef.current = true;\n\n async function checkDirty() {\n if (isStreamingRef.current || isSystemUpdateRef.current) {\n return;\n }\n\n if (!isEditorAliveRef.current || !editorInstance.current) {\n return;\n }\n\n let stored = null;\n\n try {\n stored = await editorInstance.current.store();\n } catch (err) {\n return;\n }\n\n if (!stored) {\n return;\n }\n\n const newJson = JSON.stringify(stored);\n\n if (newJson !== lastJsonRef.current) {\n setHasChanged(true);\n lastJsonRef.current = newJson;\n }\n }\n\n const debouncedCheckDirty = (() => {\n let timeout: NodeJS.Timeout | null = null;\n\n return () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n timeout = setTimeout(checkDirty, 200);\n };\n })();\n\n [\n 'component:add',\n 'component:remove',\n 'component:update:content',\n 'style:update',\n 'component:drag:end',\n 'rte:change',\n ].forEach((evt) => {\n editor.on(evt, debouncedCheckDirty);\n });\n\n editor.on('component:update', (model, prop) => {\n if (['attributes', 'componentProps', 'content'].includes(prop)) {\n debouncedCheckDirty();\n }\n });\n\n // Tailwind CSS rules aren't fully added to our component\n // So, adding them from here!\n editor.on('load', async () => {\n const canvasHead = editor.Canvas.getDocument().head;\n const style = document.createElement('style');\n const fullCss = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n\n `;\n style.innerHTML = fullCss;\n style.setAttribute('type', 'text/css');\n canvasHead.appendChild(style);\n\n isSystemUpdateRef.current = true;\n setComponentProperties(editor, mode === 'preview');\n lastJsonRef.current = JSON.stringify(await editor.store());\n isSystemUpdateRef.current = false;\n });\n\n editorInstance.current = editor;\n\n if (setEditor) {\n setEditor(editor);\n }\n\n TypesToRegister.forEach(({ type, tagName }) => {\n if (!editor.DomComponents.getType(type)) {\n editor.DomComponents.addType(type, {\n model: {\n defaults: { tagName },\n },\n view: {},\n });\n }\n });\n\n if (json && json.pages?.length > 0 && json.pages[0].frames?.length > 0) {\n isSystemUpdateRef.current = true;\n const raw = json.pages[0].frames[0].component;\n const processed = expandActions(raw);\n editor.setComponents(processed);\n\n const cssText = convertStyles(json.styles || []);\n editor.setStyle(cssText);\n\n editor.on('load', async () => {\n lastJsonRef.current = JSON.stringify(await editor.store());\n isSystemUpdateRef.current = false;\n });\n }\n\n return function cleanup() {\n editor.destroy();\n isEditorAliveRef.current = false;\n };\n }, [json, mode]);\n\n return (\n <React.Fragment>\n <StyledEditor />\n <div ref={editorRef} id=\"grapesjs-editor\" />\n </React.Fragment>\n );\n}\n\nexport default GrapesjsCanvas;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"GrapesjsCanvas.js","names":["React","useEffect","useRef","grapesjs","tailwind","TypesToRegister","toKebabCase","tailwindCompiledCss","datePickerCss","createGrapesjsShadcnGenericPlugin","StyledEditor","jsx","_jsx","jsxs","_jsxs","setComponentProperties","editor","isPreview","setPropertiesRecursively","comp","set","editable","draggable","droppable","getName","selectable","hoverable","highlightable","copyable","resizable","removable","badgable","attributes","command","components","forEach","runCommand","stopCommand","wrapper","getWrapper","find","convertStyles","stylesArray","map","block","selectors","Array","isArray","join","declarations","Object","entries","style","_ref","prop","value","createActionCardConfig","action","icon","title","description","type","componentName","componentProps","headerContent","bodyContent","expandActions","node","_node$componentProps","actions","length","_extends","classes","concat","undefined","i","id","setInteracting","renderedComponents","inProgress","component","componentId","showLoader","gjsModel","get","interactionApiInProgress","expandActionsComponent","model","append","addClass","GrapesjsCanvas","_ref2","json","_ref2$mode","mode","setEditor","performInteraction","_ref2$newDataNotifier","newDataNotifier","_ref2$setHasChanged","setHasChanged","isStreaming","editorRef","editorInstance","isStreamingRef","isSystemUpdateRef","lastJsonRef","isEditorAliveRef","current","notificationHandler","props","_props$newProps","newProps","_props$newAttributes","newAttributes","filteredProps","keys","key","name","parsedNewProps","pagination","isActionsComponent","hasValidActionsData","_model$components$at","isAlreadyExpanded","at","performInteractionWrapper","_x","_performInteractionWrapper","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee4","payload","_editorInstance$curre","updatedJson","apiResponse","componentUpdates","wrap","_callee4$","_context4","prev","next","store","sent","affectedComponents","_ref6","error","isMissing","abrupt","t0","errorMessage","Error","message","finish","stop","_json$pages","_json$pages$0$frames","destroy","currentMode","init","container","height","plugins","storageManager","richTextEditor","canvas","customBadgeLabel","tagName","injectionAttempts","injectStylesEarly","_editor$Canvas","iframeDoc","Canvas","getDocument","head","querySelector","createElement","fullCss","innerHTML","setAttribute","appendChild","requestAnimationFrame","checkDirty","_checkDirty","_callee3","stored","newJson","_callee3$","_context3","JSON","stringify","debouncedCheckDirty","timeout","clearTimeout","setTimeout","evt","on","includes","_callee","canvasDoc","canvasHead","_callee$","_context","t1","call","_ref4","DomComponents","getType","addType","defaults","view","pages","frames","raw","processed","setComponents","cssText","styles","setStyle","_callee2","_callee2$","_context2","cleanup","Fragment","children","ref"],"sources":["../src/GrapesjsCanvas.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useRef } from 'react';\n// eslint-disable-next-line import/no-named-as-default\nimport grapesjs, { Component, Editor } from 'grapesjs';\nimport 'grapesjs/dist/css/grapes.min.css';\nimport tailwind from 'grapesjs-tailwind';\n\nimport { TypesToRegister } from './constants';\nimport { toKebabCase } from './helpers';\nimport { tailwindCompiledCss } from './helpers/css';\nimport { datePickerCss } from './helpers/date-picker';\nimport { createGrapesjsShadcnGenericPlugin } from './plugins/grapejs-plugin';\nimport { StyledEditor } from './index.styles';\n\ntype NotificationHandler = (newData: {\n componentId: string;\n newProps: Record<string, any>;\n newAttributes: Record<string, any>;\n}) => boolean;\n\ntype GrapesjsCanvasProps = {\n json: any;\n mode?: 'editor' | 'preview';\n setEditor: (editor: Editor) => void;\n performInteraction: (payload: Record<string, any>) => Promise<Record<string, any> | undefined>;\n newDataNotifier: (notifHandler: NotificationHandler) => void;\n setHasChanged: (hasChanged: boolean) => void;\n isStreaming: boolean;\n};\n\nfunction setComponentProperties(editor: Editor, isPreview: boolean) {\n function setPropertiesRecursively(comp: Component) {\n comp.set({\n editable: !isPreview,\n draggable: !isPreview,\n droppable: !isPreview && comp.getName() !== 'Shadcn-generic',\n selectable: !isPreview,\n hoverable: !isPreview,\n highlightable: !isPreview,\n copyable: false,\n resizable: false,\n removable: !isPreview,\n badgable: false,\n });\n\n if (!isPreview) {\n comp.set('toolbar', [\n { attributes: { class: 'fa fa-arrows' }, command: 'tlb-move' },\n { attributes: { class: 'fa fa-trash' }, command: 'tlb-delete' },\n ]);\n }\n\n comp.components().forEach(setPropertiesRecursively);\n }\n\n if (isPreview) {\n editor.runCommand('core:preview');\n } else {\n editor.stopCommand('core:preview');\n }\n\n const wrapper = editor.getWrapper();\n wrapper?.find('*').forEach(setPropertiesRecursively);\n}\n\nfunction convertStyles(stylesArray: any[]): string {\n return stylesArray\n .map((block) => {\n const selectors = Array.isArray(block.selectors)\n ? block.selectors.join(', ')\n : block.selectors;\n const declarations = Object.entries(block.style)\n .map(([prop, value]) => `${toKebabCase(prop)}: ${value};`)\n .join(' ');\n\n return `${selectors} { ${declarations} }`;\n })\n .join('\\n');\n}\n\nfunction createActionCardConfig(action: any): any {\n const { icon, title, description } = action;\n\n return {\n type: 'shadcn-generic',\n componentName: 'ActionCard',\n badgable: false,\n copyable: false,\n removable: true,\n draggable: true,\n componentProps: {\n icon,\n headerContent: title,\n bodyContent: description,\n },\n };\n}\n\nfunction expandActions(node: any): any {\n if (node.type === 'shadcn-generic' && node.componentName === 'Actions') {\n const actions = node.componentProps?.actions;\n\n if (Array.isArray(actions) && actions.length > 0) {\n return {\n ...node,\n type: 'div',\n classes: ['dashboard-cards', ...(node.classes || [])],\n componentName: undefined,\n componentProps: undefined,\n components: actions.map((action: any, i: number) => ({\n ...createActionCardConfig(action),\n id: `${node.id}--action-card-${i}`,\n })),\n };\n }\n\n return node;\n }\n\n if (Array.isArray(node.components)) {\n return {\n ...node,\n components: node.components.map(expandActions),\n };\n }\n\n return node;\n}\n\nfunction setInteracting(\n renderedComponents: Record<string, Component>,\n components: { componentId: string; showLoader: boolean }[],\n inProgress: boolean,\n) {\n components.forEach((component) => {\n const { componentId, showLoader } = component;\n\n if (!showLoader) {\n return;\n }\n\n const gjsModel = renderedComponents[componentId];\n\n if (gjsModel) {\n gjsModel.set('attributes', {\n ...gjsModel.get('attributes'),\n interactionApiInProgress: inProgress,\n });\n }\n });\n}\n\nfunction expandActionsComponent(model: Component, actions: any[]): void {\n model.components('');\n\n actions.forEach((action: any) => {\n model.append(createActionCardConfig(action));\n });\n\n model.set('type', 'div');\n model.addClass('dashboard-cards');\n model.set('componentName', undefined);\n model.set('componentProps', {});\n}\n\nfunction GrapesjsCanvas({\n json,\n mode = 'preview',\n setEditor,\n performInteraction,\n newDataNotifier = () => {\n // no op\n },\n setHasChanged = () => {\n // no op\n },\n isStreaming,\n}: GrapesjsCanvasProps) {\n const editorRef = useRef<HTMLDivElement>(null);\n const editorInstance = useRef<Editor | null>(null);\n const renderedComponents = useRef<Record<string, Component>>({});\n const isStreamingRef = useRef(isStreaming);\n const isSystemUpdateRef = useRef(false);\n const lastJsonRef = useRef<string>('');\n const isEditorAliveRef = useRef(false);\n\n useEffect(() => {\n isStreamingRef.current = isStreaming;\n }, [isStreaming]);\n\n function notificationHandler(\n props: Parameters<NotificationHandler>[0],\n ): ReturnType<NotificationHandler> {\n if (!props) {\n return true;\n }\n\n const { componentId, newProps = {}, newAttributes = {} } = props;\n\n const model = renderedComponents.current[componentId];\n\n if (!model) {\n return false;\n }\n\n // Filter out complex placeholder objects by setting them to null\n // This ensures placeholder values are properly cleared and don't cause stale data issues\n const filteredProps = { ...newProps };\n\n Object.keys(filteredProps).forEach((key) => {\n const value = filteredProps[key];\n\n if (value && typeof value === 'object' && value.name === '__peak_placeholder') {\n filteredProps[key] = null;\n }\n });\n\n const parsedNewProps = {\n ...filteredProps,\n };\n\n if (filteredProps.pagination) {\n parsedNewProps.pagination = {\n ...(model.get('componentProps').pagination || {}),\n ...filteredProps.pagination,\n };\n }\n\n // Handle Actions component: expand into ActionCards when data arrives via streaming\n const isActionsComponent = model.get('componentName') === 'Actions';\n const hasValidActionsData =\n parsedNewProps.actions &&\n parsedNewProps.actions !== null &&\n Array.isArray(parsedNewProps.actions) &&\n parsedNewProps.actions.length > 0;\n\n if (isActionsComponent && hasValidActionsData) {\n const isAlreadyExpanded =\n model.components().length > 0 &&\n model.components().at(0)?.get('componentName') === 'ActionCard';\n\n if (!isAlreadyExpanded) {\n expandActionsComponent(model, parsedNewProps.actions);\n\n return true;\n }\n }\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...parsedNewProps,\n });\n\n model.set('attributes', {\n ...model.get('attributes'),\n ...newAttributes,\n });\n\n return true;\n }\n\n useEffect(() => {\n newDataNotifier(notificationHandler);\n }, []);\n\n async function performInteractionWrapper(payload: Record<string, any>) {\n const updatedJson = await editorInstance.current?.store();\n setInteracting(renderedComponents.current, payload.affectedComponents, true);\n\n try {\n const apiResponse = await performInteraction({\n ...payload,\n json: updatedJson,\n });\n\n const componentUpdates = apiResponse || {};\n\n Object.entries(componentUpdates).forEach(([key, value]) => {\n const model = renderedComponents.current[key];\n\n if (model) {\n model.set('attributes', {\n ...model.get('attributes'),\n error: undefined,\n });\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...value,\n error: undefined,\n isMissing: undefined,\n });\n }\n });\n\n return componentUpdates;\n } catch (error) {\n payload.affectedComponents.forEach((componentId: string) => {\n const model = renderedComponents.current[componentId];\n\n if (model) {\n const errorMessage =\n error instanceof Error ? error.message : 'Something went wrong. Please try again.';\n\n model.set('attributes', {\n ...model.get('attributes'),\n error: errorMessage,\n });\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n error: errorMessage,\n isMissing: undefined,\n });\n }\n });\n\n throw error;\n } finally {\n setInteracting(renderedComponents.current, payload.affectedComponents, false);\n }\n }\n\n useEffect(() => {\n if (!editorRef.current) {\n return () => {\n // no op\n };\n }\n\n if (editorInstance.current) {\n editorInstance.current.destroy();\n editorInstance.current = null;\n isEditorAliveRef.current = false;\n }\n\n const currentMode = mode;\n\n const editor = grapesjs.init({\n container: editorRef.current,\n height: '100%',\n plugins: [\n tailwind,\n createGrapesjsShadcnGenericPlugin(\n currentMode,\n performInteractionWrapper,\n renderedComponents.current,\n setHasChanged,\n ),\n ],\n storageManager: { type: 'none' },\n richTextEditor: {\n actions: ['bold', 'italic', 'underline', 'strikethrough'],\n },\n canvas: {\n customBadgeLabel: (component) => {\n const tagName = component.get('tagName');\n\n return tagName === 'body' ? '' : tagName || '';\n },\n },\n });\n\n isEditorAliveRef.current = true;\n\n let injectionAttempts = 0;\n\n function injectStylesEarly() {\n const iframeDoc = editor.Canvas?.getDocument?.();\n\n if (iframeDoc && iframeDoc.head) {\n if (!iframeDoc.head.querySelector('[data-grapesjs-styles]')) {\n const style = iframeDoc.createElement('style');\n const fullCss = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n `;\n style.innerHTML = fullCss;\n style.setAttribute('type', 'text/css');\n style.setAttribute('data-grapesjs-styles', 'true');\n iframeDoc.head.appendChild(style);\n }\n } else if (injectionAttempts < 50) {\n injectionAttempts += 1;\n requestAnimationFrame(injectStylesEarly);\n }\n }\n\n requestAnimationFrame(injectStylesEarly);\n\n async function checkDirty() {\n if (isStreamingRef.current || isSystemUpdateRef.current) {\n return;\n }\n\n if (!isEditorAliveRef.current || !editorInstance.current) {\n return;\n }\n\n let stored = null;\n\n try {\n stored = await editorInstance.current.store();\n } catch (err) {\n return;\n }\n\n if (!stored) {\n return;\n }\n\n const newJson = JSON.stringify(stored);\n\n if (newJson !== lastJsonRef.current) {\n setHasChanged(true);\n lastJsonRef.current = newJson;\n }\n }\n\n const debouncedCheckDirty = (() => {\n let timeout: NodeJS.Timeout | null = null;\n\n return () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n timeout = setTimeout(checkDirty, 200);\n };\n })();\n\n [\n 'component:add',\n 'component:remove',\n 'component:update:content',\n 'style:update',\n 'component:drag:end',\n 'rte:change',\n ].forEach((evt) => {\n editor.on(evt, debouncedCheckDirty);\n });\n\n editor.on('component:update', (model, prop) => {\n if (['attributes', 'componentProps', 'content'].includes(prop)) {\n debouncedCheckDirty();\n }\n });\n\n // Tailwind CSS rules aren't fully added to our component\n // So, adding them from here!\n editor.on('load', async () => {\n const canvasDoc = editor.Canvas.getDocument();\n const canvasHead = canvasDoc.head;\n\n if (!canvasHead.querySelector('[data-grapesjs-styles]')) {\n const style = canvasDoc.createElement('style');\n const fullCss = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n `;\n style.innerHTML = fullCss;\n style.setAttribute('type', 'text/css');\n style.setAttribute('data-grapesjs-styles', 'true');\n canvasHead.appendChild(style);\n }\n\n isSystemUpdateRef.current = true;\n setComponentProperties(editor, mode === 'preview');\n lastJsonRef.current = JSON.stringify(await editor.store());\n isSystemUpdateRef.current = false;\n });\n\n editorInstance.current = editor;\n\n if (setEditor) {\n setEditor(editor);\n }\n\n TypesToRegister.forEach(({ type, tagName }) => {\n if (!editor.DomComponents.getType(type)) {\n editor.DomComponents.addType(type, {\n model: {\n defaults: { tagName },\n },\n view: {},\n });\n }\n });\n\n if (json && json.pages?.length > 0 && json.pages[0].frames?.length > 0) {\n isSystemUpdateRef.current = true;\n const raw = json.pages[0].frames[0].component;\n const processed = expandActions(raw);\n editor.setComponents(processed);\n\n const cssText = convertStyles(json.styles || []);\n editor.setStyle(cssText);\n\n editor.on('load', async () => {\n lastJsonRef.current = JSON.stringify(await editor.store());\n isSystemUpdateRef.current = false;\n });\n }\n\n return function cleanup() {\n editor.destroy();\n isEditorAliveRef.current = false;\n };\n }, [json, mode]);\n\n return (\n <React.Fragment>\n <StyledEditor />\n <div ref={editorRef} id=\"grapesjs-editor\" />\n </React.Fragment>\n );\n}\n\nexport default GrapesjsCanvas;\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.
|
|
5
|
+
"version": "1.4.27-rc.3",
|
|
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
|
+
}
|
|
@@ -10,6 +10,6 @@ var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _us
|
|
|
10
10
|
var getResponsiveConfig=function getResponsiveConfig(){if(chartType==="bar"&&totalDataPoints>15&&containerWidth>0&&width&&width<=containerWidth){// If chart fits in container, use responsive behavior
|
|
11
11
|
return _extends({},config,{chartUi:{}})}return config};if(chartType==="bar"){config.dataKeys=config.dataKeys||[];var _safeChartData=Array.isArray(chartData)?chartData:[];var safeDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];totalDataPoints=_safeChartData.length*Math.max(1,safeDataKeys.length);if(totalDataPoints>15){width=totalDataPoints*20+safeDataKeys.length*8*_safeChartData.length+_safeChartData.length*15;config.chartUi={barCategoryGap:"10%",width:width}}else{config.chartUi={}}}else if(chartType==="line"){config.dataKeys=config.dataKeys||[];var _safeChartData2=Array.isArray(chartData)?chartData:[];totalDataPoints=_safeChartData2.length;if(totalDataPoints>15){width=Math.max(800,totalDataPoints*20);config.chartUi={width:width}}else{config.chartUi={}}}var hasError=attributes.error||allData.error;var hasMissing=attributes.isMissing||allData.isMissing;var isLoading=(attributes.interactionApiInProgress||attributes.loading)&&!hasError&&!hasMissing;var chartUi=isLoading?/*#__PURE__*/_jsx(ChartLoader,{}):hasError||hasMissing||!chartData?renderNoDataFallback():/*#__PURE__*/_jsx(React.Fragment,{children:(chartType==="bar"||chartType==="line")&&totalDataPoints>15&&width&&(containerWidth===0||width>containerWidth)?/*#__PURE__*/_jsx("div",{className:"w-full h-[250px]",children:/*#__PURE__*/_jsxs(ScrollArea,{className:"w-full h-full",children:[/*#__PURE__*/_jsx("div",{style:{minWidth:width+"px",width:"max-content",height:"250px"},children:/*#__PURE__*/_jsx(ResponsiveContainer,{width:width,height:250,children:/*#__PURE__*/_jsx(ChartContainer,_extends({},rest,{config:config,className:mergedClasses,children:renderChartComponent(chartType,chartData,config)}))})}),/*#__PURE__*/_jsx(ScrollBar,{orientation:"horizontal"})]})}):/*#__PURE__*/_jsx(ResponsiveContainer,{width:"100%",height:250,children:/*#__PURE__*/_jsx(ChartContainer,_extends({},rest,{config:getResponsiveConfig(),className:mergedClasses,children:renderChartComponent(chartType,chartData,getResponsiveConfig())}))})});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",contentEditable:false,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
|
|
12
12
|
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(_ref5){var key=_ref5[0];return dataKeys.includes(key)}))}return cleaned}();var sortConfig=function(_gjsModel$get,_ref7){var _ref6=(_gjsModel$get=gjsModel.get("componentProps"))!=null?_gjsModel$get:{},sortColumn=_ref6.sortColumn,sortDirection=_ref6.sortDirection;return sortColumn&&sortDirection?(_ref7={},_ref7[sortColumn]=sortDirection,_ref7):{}}();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,_ref8,sortColumn,sortDirection;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:id=gjsModel.get("id");_ref8=(_gjsModel$get2=gjsModel.get("componentProps"))!=null?_gjsModel$get2:{},sortColumn=_ref8.sortColumn,sortDirection=_ref8.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,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
|
|
13
|
-
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 editRef=useRef(null);var startEditing=function startEditing(){setIsEditing(true);setTimeout(function(){setupEditor()},0)};var setupEditor=function setupEditor(){if(!editRef.current){return}var editor=editRef.current;editor.innerHTML="";editor.textContent=allData.summaryText;editor.focus()};// Save changes and exit editing mode
|
|
14
|
-
var saveChanges=function saveChanges(){if(!editRef.current){return}var content=editRef.current.innerText||"";setAllData(function(prev){return _extends({},prev,{summaryText:content})});setIsEditing(false);editRef.current.innerHTML=""};var markdownStyles={ul:{props:{className:"list-disc"}},h1:{props:{className:"text-4xl font-bold leading-[4rem]"}},h2:{props:{className:"text-3xl font-bold leading-[3rem]"}},h3:{props:{className:"text-2xl font-bold leading-[2rem]"}},h4:{props:{className:"text-xl font-bold leading-[2.5rem]"}},h5:{props:{className:"text-lg font-bold leading-[2.5rem]"}},h6:{props:{className:"text-base font-bold leading-[2rem]"}}};var hasError=attributes.error||allData.error;var hasMissing=attributes.isMissing||allData.isMissing;var isLoading=attributes.loading&&!hasError&&!hasMissing;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:"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:"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:[
|
|
13
|
+
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
|
|
14
|
+
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;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}}
|
|
15
15
|
//# 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","XAxis","YAxis","domutil","TooltipButton","Card","CardContent","CardDescription","CardFooter","CardHeader","CardTitle","ChartContainer","ChartTooltip","ChartTooltipContent","renderFilter","ScrollArea","ScrollBar","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","renderChartComponent","chartType","data","config","safeData","cursor","content","hideLabel","dataKey","nameKey","innerRadius","strokeWidth","label","_ref","name","percent","toFixed","undefined","labelLine","dataKeys","barDataKeys","chartUi","vertical","xAxis","align","wrapperStyle","marginLeft","map","_ref2","fill","radius","indicator","safeDataKeysLine","_ref3","type","stroke","_ref4","renderChart","_props$isEditable2","_props$performInterac2","_excluded3","_useState5","_useState6","containerRef","_useState7","containerWidth","setContainerWidth","handleAttributesChange","newAttributes","updateContainerWidth","current","offsetWidth","window","addEventListener","removeEventListener","_allData$config","_allData$chartType","_allData$chartData","chartData","_allData$title","title","_allData$subTitle","subTitle","mergedClasses","safeChartData","width","totalDataPoints","getResponsiveConfig","safeDataKeys","max","barCategoryGap","minWidth","height","orientation","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","entries","filter","_ref5","sortConfig","_gjsModel$get","_ref7","_ref6","sortColumn","sortDirection","_useState10","viewportWidth","setViewportWidth","_useState11","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","timeoutId","setTimeout","clearTimeout","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","_ref8","_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","editRef","startEditing","setupEditor","innerHTML","textContent","summaryText","focus","saveChanges","innerText","markdownStyles","ul","h1","h2","h3","h4","h5","h6","minHeight","options","overrides","onBlur","suppressContentEditableWarning","whiteSpace","wordWrap","onClick","renderButton","_props$isEditable5","_props$performInterac4","_useState15","_useState16","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 { ScrollArea, ScrollBar } from '../../shadcn/components/ui/scroll-area';\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\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}>\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);\n }\n };\n\n updateContainerWidth();\n window.addEventListener('resize', updateContainerWidth);\n\n return () => window.removeEventListener('resize', updateContainerWidth);\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\n for (let i = 0; i < safeChartData.length; i++) {\n const data = safeChartData[i];\n\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 width: number | undefined = undefined;\n let totalDataPoints = 0;\n\n // Helper function to get responsive config\n const getResponsiveConfig = () => {\n if (\n chartType === 'bar' &&\n totalDataPoints > 15 &&\n containerWidth > 0 &&\n width &&\n width <= containerWidth\n ) {\n // If chart fits in container, use responsive behavior\n return { ...config, chartUi: {} };\n }\n\n return config;\n };\n\n if (chartType === 'bar') {\n config.dataKeys = config.dataKeys || [];\n const safeChartData = Array.isArray(chartData) ? chartData : [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n totalDataPoints = safeChartData.length * Math.max(1, safeDataKeys.length);\n\n if (totalDataPoints > 15) {\n width =\n totalDataPoints * 20 +\n safeDataKeys.length * 8 * safeChartData.length +\n safeChartData.length * 15;\n config.chartUi = {\n barCategoryGap: '10%',\n width,\n };\n } else {\n config.chartUi = {};\n }\n } else if (chartType === 'line') {\n config.dataKeys = config.dataKeys || [];\n const safeChartData = Array.isArray(chartData) ? chartData : [];\n totalDataPoints = safeChartData.length;\n\n if (totalDataPoints > 15) {\n width = Math.max(800, totalDataPoints * 20);\n config.chartUi = {\n width,\n };\n } else {\n config.chartUi = {};\n }\n }\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 chartUi = isLoading ? (\n <ChartLoader />\n ) : hasError || hasMissing || !chartData ? (\n renderNoDataFallback()\n ) : (\n <React.Fragment>\n {(chartType === 'bar' || chartType === 'line') &&\n totalDataPoints > 15 &&\n width &&\n (containerWidth === 0 || width > containerWidth) ? (\n <div className=\"w-full h-[250px]\">\n <ScrollArea className=\"w-full h-full\">\n <div style={{ minWidth: `${width}px`, width: 'max-content', height: '250px' }}>\n <ResponsiveContainer width={width} height={250}>\n <ChartContainer {...rest} config={config} className={mergedClasses}>\n {renderChartComponent(chartType, chartData, config)}\n </ChartContainer>\n </ResponsiveContainer>\n </div>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n </div>\n ) : (\n <ResponsiveContainer width=\"100%\" height={250}>\n <ChartContainer {...rest} config={getResponsiveConfig()} className={mergedClasses}>\n {renderChartComponent(chartType, chartData, getResponsiveConfig())}\n </ChartContainer>\n </ResponsiveContainer>\n )}\n </React.Fragment>\n );\n\n return (\n <Card className=\"shadow border mt-2 mb-2 relative\">\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"title\" contentEditable={isEditable} className=\"text-2xl\">\n {title}\n </CardTitle>\n <CardDescription data-slot=\"subTitle\" contentEditable={isEditable} className=\"text-sm\">\n {subTitle}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent\n ref={containerRef}\n data-slot=\"bodyContent\"\n contentEditable={false}\n className=\"px-6\"\n >\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}\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 editRef = useRef<HTMLDivElement>(null);\n\n const startEditing = () => {\n setIsEditing(true);\n setTimeout(() => {\n setupEditor();\n }, 0);\n };\n\n const setupEditor = () => {\n if (!editRef.current) {\n return;\n }\n\n const editor = editRef.current;\n editor.innerHTML = '';\n editor.textContent = allData.summaryText;\n editor.focus();\n };\n\n // Save changes and exit editing mode\n const saveChanges = () => {\n if (!editRef.current) {\n return;\n }\n\n const content = editRef.current.innerText || '';\n setAllData((prev: Record<string, any>) => ({\n ...prev,\n summaryText: content,\n }));\n setIsEditing(false);\n editRef.current.innerHTML = '';\n };\n\n const markdownStyles = {\n ul: { props: { className: 'list-disc' } },\n h1: { props: { className: 'text-4xl font-bold leading-[4rem]' } },\n h2: { props: { className: 'text-3xl font-bold leading-[3rem]' } },\n h3: { props: { className: 'text-2xl font-bold leading-[2rem]' } },\n h4: { props: { className: 'text-xl font-bold leading-[2.5rem]' } },\n h5: { props: { className: 'text-lg font-bold leading-[2.5rem]' } },\n h6: { props: { className: 'text-base font-bold leading-[2rem]' } },\n };\n\n const hasError = attributes.error || allData.error;\n const hasMissing = attributes.isMissing || allData.isMissing;\n const isLoading = attributes.loading && !hasError && !hasMissing;\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\">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\">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 <h3 className=\"text-xl font-semibold text-left\">Insights</h3>\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","ScrollArea","ScrollBar","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","renderChartComponent","chartType","data","config","safeData","cursor","content","hideLabel","dataKey","nameKey","innerRadius","strokeWidth","label","_ref","name","percent","toFixed","undefined","labelLine","dataKeys","barDataKeys","chartUi","vertical","xAxis","align","wrapperStyle","marginLeft","map","_ref2","fill","radius","indicator","safeDataKeysLine","_ref3","type","stroke","_ref4","renderChart","_props$isEditable2","_props$performInterac2","_excluded3","_useState5","_useState6","containerRef","_useState7","containerWidth","setContainerWidth","handleAttributesChange","newAttributes","updateContainerWidth","current","offsetWidth","window","addEventListener","removeEventListener","_allData$config","_allData$chartType","_allData$chartData","chartData","_allData$title","title","_allData$subTitle","subTitle","mergedClasses","safeChartData","width","totalDataPoints","getResponsiveConfig","safeDataKeys","max","barCategoryGap","minWidth","height","orientation","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","entries","filter","_ref5","sortConfig","_gjsModel$get","_ref7","_ref6","sortColumn","sortDirection","_useState10","viewportWidth","setViewportWidth","_useState11","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","timeoutId","setTimeout","clearTimeout","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","_ref8","_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","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 { ScrollArea, ScrollBar } from '../../shadcn/components/ui/scroll-area';\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\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}>\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);\n }\n };\n\n updateContainerWidth();\n window.addEventListener('resize', updateContainerWidth);\n\n return () => window.removeEventListener('resize', updateContainerWidth);\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\n for (let i = 0; i < safeChartData.length; i++) {\n const data = safeChartData[i];\n\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 width: number | undefined = undefined;\n let totalDataPoints = 0;\n\n // Helper function to get responsive config\n const getResponsiveConfig = () => {\n if (\n chartType === 'bar' &&\n totalDataPoints > 15 &&\n containerWidth > 0 &&\n width &&\n width <= containerWidth\n ) {\n // If chart fits in container, use responsive behavior\n return { ...config, chartUi: {} };\n }\n\n return config;\n };\n\n if (chartType === 'bar') {\n config.dataKeys = config.dataKeys || [];\n const safeChartData = Array.isArray(chartData) ? chartData : [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n totalDataPoints = safeChartData.length * Math.max(1, safeDataKeys.length);\n\n if (totalDataPoints > 15) {\n width =\n totalDataPoints * 20 +\n safeDataKeys.length * 8 * safeChartData.length +\n safeChartData.length * 15;\n config.chartUi = {\n barCategoryGap: '10%',\n width,\n };\n } else {\n config.chartUi = {};\n }\n } else if (chartType === 'line') {\n config.dataKeys = config.dataKeys || [];\n const safeChartData = Array.isArray(chartData) ? chartData : [];\n totalDataPoints = safeChartData.length;\n\n if (totalDataPoints > 15) {\n width = Math.max(800, totalDataPoints * 20);\n config.chartUi = {\n width,\n };\n } else {\n config.chartUi = {};\n }\n }\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 chartUi = isLoading ? (\n <ChartLoader />\n ) : hasError || hasMissing || !chartData ? (\n renderNoDataFallback()\n ) : (\n <React.Fragment>\n {(chartType === 'bar' || chartType === 'line') &&\n totalDataPoints > 15 &&\n width &&\n (containerWidth === 0 || width > containerWidth) ? (\n <div className=\"w-full h-[250px]\">\n <ScrollArea className=\"w-full h-full\">\n <div style={{ minWidth: `${width}px`, width: 'max-content', height: '250px' }}>\n <ResponsiveContainer width={width} height={250}>\n <ChartContainer {...rest} config={config} className={mergedClasses}>\n {renderChartComponent(chartType, chartData, config)}\n </ChartContainer>\n </ResponsiveContainer>\n </div>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n </div>\n ) : (\n <ResponsiveContainer width=\"100%\" height={250}>\n <ChartContainer {...rest} config={getResponsiveConfig()} className={mergedClasses}>\n {renderChartComponent(chartType, chartData, getResponsiveConfig())}\n </ChartContainer>\n </ResponsiveContainer>\n )}\n </React.Fragment>\n );\n\n return (\n <Card className=\"shadow border mt-2 mb-2 relative\">\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"title\" contentEditable={isEditable} className=\"text-2xl\">\n {title}\n </CardTitle>\n <CardDescription data-slot=\"subTitle\" contentEditable={isEditable} className=\"text-sm\">\n {subTitle}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent\n ref={containerRef}\n data-slot=\"bodyContent\"\n contentEditable={false}\n className=\"px-6\"\n >\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}\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 = attributes.loading && !hasError && !hasMissing;\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":[]}
|