@peak-ai/canvas 1.4.14 → 1.4.15-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/GrapesjsCanvas.js
CHANGED
|
@@ -3,5 +3,7 @@ import grapesjs from"grapesjs";import"grapesjs/dist/css/grapes.min.css";import t
|
|
|
3
3
|
}:_ref2$newDataNotifier;var editorRef=useRef(null);var editorInstance=useRef(null);var renderedComponents={};function notificationHandler(props){if(!props){return true}var componentId=props.componentId,newProps=props.newProps,newAttributes=props.newAttributes;var model=renderedComponents[componentId];if(!model){return false}var parsedNewProps=_extends({},newProps);if(newProps.pagination){parsedNewProps.pagination=_extends({},model.get("componentProps").pagination||{},newProps.pagination)}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 _callee(payload){var _editorInstance$curre;var updatedJson,apiResponse,componentUpdates;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.next=2;return(_editorInstance$curre=editorInstance.current)==null?void 0:_editorInstance$curre.store();case 2:updatedJson=_context.sent;setInteracting(renderedComponents,payload.affectedComponents,true);_context.prev=4;_context.next=7;return performInteraction(_extends({},payload,{json:updatedJson}));case 7:apiResponse=_context.sent;componentUpdates=apiResponse||{};Object.entries(componentUpdates).forEach(function(_ref4){var key=_ref4[0],value=_ref4[1];var model=renderedComponents[key];if(model){model.set("componentProps",_extends({},model.get("componentProps"),value))}});return _context.abrupt("return",componentUpdates);case 11:_context.prev=11;setInteracting(renderedComponents,payload.affectedComponents,false);return _context.finish(11);case 14:case"end":return _context.stop()}},_callee,null,[[4,,11,14]])}));return _performInteractionWrapper.apply(this,arguments)}useEffect(function(){var _json$pages,_json$pages$0$frames;if(!editorRef.current){return function cleanup(){// Cleanup if editorRef is not available
|
|
4
4
|
}}if(editorInstance.current){editorInstance.current.destroy();editorInstance.current=null}var currentMode=mode;var editor=grapesjs.init({container:editorRef.current,height:"100%",plugins:[tailwind,createGrapesjsShadcnGenericPlugin(currentMode,performInteractionWrapper,renderedComponents)],storageManager:{type:"none"},richTextEditor:{actions:["bold","italic","underline","strikethrough"]},canvas:{customBadgeLabel:function customBadgeLabel(component){var tagName=component.get("tagName");return tagName==="body"?"":tagName||""}}});// Tailwind CSS rules aren't fully added to our component
|
|
5
5
|
// So, adding them from here!
|
|
6
|
-
editor.on("load",function(){var canvasHead=editor.Canvas.getDocument().head;var style=document.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\n ";style.innerHTML=fullCss;style.setAttribute("type","text/css");canvasHead.appendChild(style)});editorInstance.current=editor;if(setEditor){setEditor(editor)}TypesToRegister.forEach(function(_ref3){var type=_ref3.type,tagName=_ref3.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){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",function(){setComponentProperties(editor,mode==="preview")
|
|
6
|
+
editor.on("load",function(){var canvasHead=editor.Canvas.getDocument().head;var style=document.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\n ";style.innerHTML=fullCss;style.setAttribute("type","text/css");canvasHead.appendChild(style)});editorInstance.current=editor;if(setEditor){setEditor(editor)}TypesToRegister.forEach(function(_ref3){var type=_ref3.type,tagName=_ref3.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){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",function(){setComponentProperties(editor,mode==="preview");// Force re-render of any Actions components that might still be showing loaders
|
|
7
|
+
setTimeout(function(){var wrapper=editor.getWrapper();if(wrapper){wrapper.find("[data-gjs-type=\"shadcn-generic\"]").forEach(function(comp){if(comp.get("componentName")==="Actions"){// eslint-disable-next-line no-console
|
|
8
|
+
console.log("\uD83D\uDD04 Force re-rendering Actions component after load");comp.view.render()}})}},100)});return function cleanup(){editor.destroy()}},[json,mode]);return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(StyledEditor,{}),/*#__PURE__*/_jsx("div",{ref:editorRef,id:"grapesjs-editor"})]})}export default GrapesjsCanvas;
|
|
7
9
|
//# 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","expandActions","node","_node$componentProps","type","componentName","componentProps","actions","_extends","classes","concat","undefined","action","i","icon","title","description","id","headerContent","bodyContent","setInteracting","renderedComponents","inProgress","component","componentId","showLoader","gjsModel","get","interactionApiInProgress","GrapesjsCanvas","_ref2","json","_ref2$mode","mode","setEditor","performInteraction","_ref2$newDataNotifier","newDataNotifier","editorRef","editorInstance","notificationHandler","props","newProps","newAttributes","model","parsedNewProps","pagination","performInteractionWrapper","_x","_performInteractionWrapper","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","payload","_editorInstance$curre","updatedJson","apiResponse","componentUpdates","wrap","_callee$","_context","prev","next","current","store","sent","affectedComponents","_ref4","key","abrupt","finish","stop","_json$pages","_json$pages$0$frames","cleanup","destroy","currentMode","init","container","height","plugins","storageManager","richTextEditor","canvas","customBadgeLabel","tagName","on","canvasHead","Canvas","getDocument","head","document","createElement","fullCss","innerHTML","setAttribute","appendChild","_ref3","DomComponents","getType","addType","defaults","view","pages","length","frames","raw","processed","setComponents","cssText","styles","setStyle","Fragment","children","ref"],"sources":["../src/GrapesjsCanvas.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useRef, useState } 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\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};\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 expandActions(node: any): any {\n if (\n node.type === 'shadcn-generic' &&\n node.componentName === 'Actions' &&\n Array.isArray(node.componentProps?.actions)\n ) {\n const { actions } = node.componentProps;\n\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 const { icon, title, description } = action;\n\n return {\n id: `${node.id}--action-card-${i}`,\n type: 'shadcn-generic',\n componentName: 'ActionCard',\n badgable: false,\n copyable: false,\n componentProps: {\n icon,\n headerContent: title,\n bodyContent: description,\n },\n };\n }),\n };\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 GrapesjsCanvas({\n json,\n mode = 'preview',\n setEditor,\n performInteraction,\n newDataNotifier = () => {\n // Default empty handler\n },\n}: GrapesjsCanvasProps) {\n const editorRef = useRef<HTMLDivElement>(null);\n const editorInstance = useRef<any>(null);\n const renderedComponents: Record<string, Component> = {};\n\n function notificationHandler(props: Parameters<NotificationHandler>[0]): ReturnType<NotificationHandler> {\n if (!props) {\n return true;\n }\n\n const {\n componentId,\n newProps,\n newAttributes,\n } = props;\n \n const model = renderedComponents[componentId];\n\n if (!model) {\n return false;\n }\n\n const parsedNewProps = {\n ...newProps,\n };\n\n if (newProps.pagination) {\n parsedNewProps.pagination = {\n ...(model.get('componentProps').pagination || {}),\n ...newProps.pagination,\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 return true;\n }\n\n\n\n useEffect(() => {\n newDataNotifier(notificationHandler);\n }, []);\n\n\n async function performInteractionWrapper(payload: Record<string, any>) {\n const updatedJson = await editorInstance.current?.store();\n setInteracting(renderedComponents, 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[key];\n\n if (model) {\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...value,\n });\n }\n });\n\n return componentUpdates;\n } finally {\n setInteracting(renderedComponents, payload.affectedComponents, false);\n }\n }\n\n\n useEffect(() => {\n if (!editorRef.current) {\n return function cleanup() {\n // Cleanup if editorRef is not available\n };\n }\n\n if (editorInstance.current) {\n editorInstance.current.destroy();\n editorInstance.current = null;\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,\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 // Tailwind CSS rules aren't fully added to our component\n // So, adding them from here!\n editor.on('load', () => {\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\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 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\n editor.on('load', () => {\n setComponentProperties(editor, mode === 'preview');\n });\n\n return function cleanup() {\n editor.destroy();\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","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","expandActions","node","_node$componentProps","type","componentName","componentProps","actions","_extends","classes","concat","undefined","action","i","icon","title","description","id","headerContent","bodyContent","setInteracting","renderedComponents","inProgress","component","componentId","showLoader","gjsModel","get","interactionApiInProgress","GrapesjsCanvas","_ref2","json","_ref2$mode","mode","setEditor","performInteraction","_ref2$newDataNotifier","newDataNotifier","editorRef","editorInstance","notificationHandler","props","newProps","newAttributes","model","parsedNewProps","pagination","performInteractionWrapper","_x","_performInteractionWrapper","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","payload","_editorInstance$curre","updatedJson","apiResponse","componentUpdates","wrap","_callee$","_context","prev","next","current","store","sent","affectedComponents","_ref4","key","abrupt","finish","stop","_json$pages","_json$pages$0$frames","cleanup","destroy","currentMode","init","container","height","plugins","storageManager","richTextEditor","canvas","customBadgeLabel","tagName","on","canvasHead","Canvas","getDocument","head","document","createElement","fullCss","innerHTML","setAttribute","appendChild","_ref3","DomComponents","getType","addType","defaults","view","pages","length","frames","raw","processed","setComponents","cssText","styles","setStyle","setTimeout","console","log","render","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\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};\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 expandActions(node: any): any {\n if (\n node.type === 'shadcn-generic' &&\n node.componentName === 'Actions' &&\n Array.isArray(node.componentProps?.actions)\n ) {\n const { actions } = node.componentProps;\n\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 const { icon, title, description } = action;\n\n return {\n id: `${node.id}--action-card-${i}`,\n type: 'shadcn-generic',\n componentName: 'ActionCard',\n badgable: false,\n copyable: false,\n componentProps: {\n icon,\n headerContent: title,\n bodyContent: description,\n },\n };\n }),\n };\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 GrapesjsCanvas({\n json,\n mode = 'preview',\n setEditor,\n performInteraction,\n newDataNotifier = () => {\n // Default empty handler\n },\n}: GrapesjsCanvasProps) {\n const editorRef = useRef<HTMLDivElement>(null);\n const editorInstance = useRef<any>(null);\n const renderedComponents: Record<string, Component> = {};\n\n function notificationHandler(props: Parameters<NotificationHandler>[0]): ReturnType<NotificationHandler> {\n if (!props) {\n return true;\n }\n\n const {\n componentId,\n newProps,\n newAttributes,\n } = props;\n \n const model = renderedComponents[componentId];\n\n if (!model) {\n return false;\n }\n\n const parsedNewProps = {\n ...newProps,\n };\n\n if (newProps.pagination) {\n parsedNewProps.pagination = {\n ...(model.get('componentProps').pagination || {}),\n ...newProps.pagination,\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\n\n useEffect(() => {\n newDataNotifier(notificationHandler);\n }, []);\n\n\n async function performInteractionWrapper(payload: Record<string, any>) {\n const updatedJson = await editorInstance.current?.store();\n setInteracting(renderedComponents, 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[key];\n\n if (model) {\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...value,\n });\n }\n });\n\n return componentUpdates;\n } finally {\n setInteracting(renderedComponents, payload.affectedComponents, false);\n }\n }\n\n\n useEffect(() => {\n if (!editorRef.current) {\n return function cleanup() {\n // Cleanup if editorRef is not available\n };\n }\n\n if (editorInstance.current) {\n editorInstance.current.destroy();\n editorInstance.current = null;\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,\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 // Tailwind CSS rules aren't fully added to our component\n // So, adding them from here!\n editor.on('load', () => {\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\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 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\n editor.on('load', () => {\n setComponentProperties(editor, mode === 'preview');\n \n // Force re-render of any Actions components that might still be showing loaders\n setTimeout(() => {\n const wrapper = editor.getWrapper();\n\n if (wrapper) {\n wrapper.find('[data-gjs-type=\"shadcn-generic\"]').forEach((comp: any) => {\n if (comp.get('componentName') === 'Actions') {\n // eslint-disable-next-line no-console\n console.log('🔄 Force re-rendering Actions component after load');\n comp.view.render();\n }\n });\n }\n }, 100);\n });\n\n return function cleanup() {\n editor.destroy();\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.15-rc.0",
|
|
6
6
|
"description": "",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"@emotion/react": "^11.11.4",
|
|
@@ -59,4 +59,4 @@
|
|
|
59
59
|
"types": "index.d.ts",
|
|
60
60
|
"module": "index.js",
|
|
61
61
|
"sideEffects": false
|
|
62
|
-
}
|
|
62
|
+
}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
|
-
import _extends from"@babel/runtime/helpers/extends";/* eslint-disable import/no-named-as-default-member *//* eslint-disable func-names *//* eslint-disable @typescript-eslint/no-explicit-any */import ReactDOM from"react-dom";import{getRenderers}from"./helpers/render-components";import{jsx as _jsx}from"react/jsx-runtime";export function createGrapesjsShadcnGenericPlugin(mode,performInteraction,renderedComponents){if(renderedComponents===void 0){renderedComponents={}}return function grapesjsShadcnGenericPlugin(editor){editor.DomComponents.addType("shadcn-generic",{model:{defaults:{tagName:"div",droppable:false,componentName:"Card",componentProps:{},traits:[]}},view:{events:{"input [data-slot]":"handleSlotInput"},handleSlotInput:function handleSlotInput(e){var target=e.target;var slot=target.dataset.slot;var text=target.innerText;var props=this.model.get("componentProps")||{};if(!slot){return}if(slot.startsWith("table-header-")){var _props$data;var idx=parseInt(slot.split("-")[2],10);var dataKeys=Object.keys(((_props$data=props.data)==null?void 0:_props$data[0])||{});if(!props.headerMapper){props.headerMapper={}}var key=dataKeys[idx];if(key){props.headerMapper[key]=text}}else{props[slot]=text}this.model.set("componentProps",_extends({},props))},render:function render(){var _this=this;var compName=this.model.get("componentName");var compProps=this.model.get("componentProps");if(typeof compProps==="string"){try{compProps=JSON.parse(compProps)}catch(err){// eslint-disable-next-line no-console
|
|
2
|
-
console.error("Invalid JSON in componentProps",err);compProps={}}}compProps.isEditable=mode==="editor";compProps.performInteraction=performInteraction;compProps.onChange=function(data){_this.model.set("componentProps",_extends({},_this.model.get("componentProps"),data))};var renderers=getRenderers();var Renderer=renderers[compName];if(Renderer){if(compName==="Tabs"){ReactDOM.render(/*#__PURE__*/_jsx(Renderer,_extends({},compProps,{gjsModel:this.model})),this.el);var children=this.model.components();var tabsContent=this.el.querySelectorAll(".tabs-content");children.each(function(childModel,i){var childView=_this.createView(childModel);if(childView){childView.render();tabsContent[i].appendChild(childView.el)}})}else{ReactDOM.render(/*#__PURE__*/_jsx(Renderer,_extends({},compProps,{gjsModel:this.model})),this.el)}}else{
|
|
1
|
+
import _extends from"@babel/runtime/helpers/extends";/* eslint-disable import/no-named-as-default-member *//* eslint-disable func-names *//* eslint-disable @typescript-eslint/no-explicit-any */import ReactDOM from"react-dom";import React from"react";import{getRenderers}from"./helpers/render-components";import{CardLoader}from"../shadcn/components/ui/skeleton";import{Card,CardContent}from"../shadcn/components/ui/card";import{jsx as _jsx}from"react/jsx-runtime";export function createGrapesjsShadcnGenericPlugin(mode,performInteraction,renderedComponents){if(renderedComponents===void 0){renderedComponents={}}return function grapesjsShadcnGenericPlugin(editor){editor.DomComponents.addType("shadcn-generic",{model:{defaults:{tagName:"div",droppable:false,componentName:"Card",componentProps:{},traits:[]}},view:{events:{"input [data-slot]":"handleSlotInput"},handleSlotInput:function handleSlotInput(e){var target=e.target;var slot=target.dataset.slot;var text=target.innerText;var props=this.model.get("componentProps")||{};if(!slot){return}if(slot.startsWith("table-header-")){var _props$data;var idx=parseInt(slot.split("-")[2],10);var dataKeys=Object.keys(((_props$data=props.data)==null?void 0:_props$data[0])||{});if(!props.headerMapper){props.headerMapper={}}var key=dataKeys[idx];if(key){props.headerMapper[key]=text}}else{props[slot]=text}this.model.set("componentProps",_extends({},props))},render:function render(){var _this=this;var compName=this.model.get("componentName");var compProps=this.model.get("componentProps");if(typeof compProps==="string"){try{compProps=JSON.parse(compProps)}catch(err){// eslint-disable-next-line no-console
|
|
2
|
+
console.error("Invalid JSON in componentProps",err);compProps={}}}compProps.isEditable=mode==="editor";compProps.performInteraction=performInteraction;compProps.onChange=function(data){_this.model.set("componentProps",_extends({},_this.model.get("componentProps"),data))};var renderers=getRenderers();var Renderer=renderers[compName];if(Renderer){if(compName==="Tabs"){ReactDOM.render(/*#__PURE__*/_jsx(Renderer,_extends({},compProps,{gjsModel:this.model})),this.el);var children=this.model.components();var tabsContent=this.el.querySelectorAll(".tabs-content");children.each(function(childModel,i){var childView=_this.createView(childModel);if(childView){childView.render();tabsContent[i].appendChild(childView.el)}})}else{ReactDOM.render(/*#__PURE__*/_jsx(Renderer,_extends({},compProps,{gjsModel:this.model})),this.el)}}else{// eslint-disable-next-line no-console
|
|
3
|
+
console.warn("\u274C No renderer found for component:",compName);// Special handling for Actions component
|
|
4
|
+
if(compName==="Actions"){var _compProps;var actions=(_compProps=compProps)==null?void 0:_compProps.actions;// eslint-disable-next-line no-console
|
|
5
|
+
console.log("\uD83C\uDFAC Actions component - checking data:",{hasActions:Array.isArray(actions),actionsLength:actions==null?void 0:actions.length,actions:actions,componentProps:compProps});// Always show loader for Actions since expandActions should handle it
|
|
6
|
+
// The data might come later via props updates
|
|
7
|
+
ReactDOM.render(/*#__PURE__*/_jsx(Card,{className:"shadow border mt-2 mb-2",children:/*#__PURE__*/_jsx(CardContent,{className:"p-4",children:/*#__PURE__*/_jsx(CardLoader,{})})}),this.el);// Set a timeout to check if this component should have been expanded
|
|
8
|
+
setTimeout(function(){// If this component still exists after expansion should have happened,
|
|
9
|
+
// it means expandActions didn't process it (no actions data)
|
|
10
|
+
if(_this.el&&_this.el.innerHTML.includes("CardLoader")){var _this$model$get;var currentActions=(_this$model$get=_this.model.get("componentProps"))==null?void 0:_this$model$get.actions;if(!Array.isArray(currentActions)||currentActions.length===0){// No actions data found, remove the loader
|
|
11
|
+
_this.el.innerHTML="<div></div>";// eslint-disable-next-line no-console
|
|
12
|
+
console.log("\uD83D\uDEAB Actions component - no data found, removing loader")}}},1000);// Wait 1 second for expandActions to process
|
|
13
|
+
}else{// For other unsupported components, show a loader
|
|
14
|
+
ReactDOM.render(/*#__PURE__*/_jsx(Card,{className:"shadow border mt-2 mb-2",children:/*#__PURE__*/_jsx(CardContent,{className:"p-4",children:/*#__PURE__*/_jsx(CardLoader,{})})}),this.el)}}renderedComponents[this.model.get("id")]=this.model;return this},createView:function createView(model){var _this$em$get$getType;var ComponentView=(_this$em$get$getType=this.em.get("DomComponents").getType(model.get("type")))==null?void 0:_this$em$get$getType.view;if(!ComponentView){// eslint-disable-next-line no-console
|
|
3
15
|
console.warn("No view found for component type:",model.get("type"));return null}var view=new ComponentView({model:model,config:this.config,componentTypes:this.componentTypes});return view},remove:function remove(){// eslint-disable-next-line import/no-named-as-default-member
|
|
4
16
|
ReactDOM.unmountComponentAtNode(this.el);return this}}})}}
|
|
5
17
|
//# sourceMappingURL=grapejs-plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grapejs-plugin.js","names":["ReactDOM","getRenderers","jsx","_jsx","createGrapesjsShadcnGenericPlugin","mode","performInteraction","renderedComponents","grapesjsShadcnGenericPlugin","editor","DomComponents","addType","model","defaults","tagName","droppable","componentName","componentProps","traits","view","events","handleSlotInput","e","target","slot","dataset","text","innerText","props","get","startsWith","_props$data","idx","parseInt","split","dataKeys","Object","keys","data","headerMapper","key","set","_extends","render","_this","compName","compProps","JSON","parse","err","console","error","isEditable","onChange","renderers","Renderer","gjsModel","el","children","components","tabsContent","querySelectorAll","each","childModel","i","childView","createView","appendChild","innerHTML","_this$em$get$getType","ComponentView","em","getType","warn","config","componentTypes","remove","unmountComponentAtNode"],"sources":["../../src/plugins/grapejs-plugin.tsx"],"sourcesContent":["/* eslint-disable import/no-named-as-default-member */\n/* eslint-disable func-names */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport ReactDOM from 'react-dom';\nimport { Editor, Component } from 'grapesjs';\nimport { getRenderers } from './helpers/render-components';\n\nexport function createGrapesjsShadcnGenericPlugin(\n mode: 'editor' | 'preview',\n performInteraction: (payload: Record<string, any>) => void,\n renderedComponents: Record<string, Component> = {},\n) {\n return function grapesjsShadcnGenericPlugin(editor: Editor): void {\n editor.DomComponents.addType('shadcn-generic', {\n model: {\n defaults: {\n tagName: 'div',\n droppable: false,\n componentName: 'Card',\n componentProps: {},\n traits: [],\n },\n },\n view: {\n events: {\n 'input [data-slot]': 'handleSlotInput',\n } as any,\n handleSlotInput(e: Event) {\n const target = e.target as HTMLElement;\n const slot = target.dataset.slot;\n const text = target.innerText;\n\n const props = this.model.get('componentProps') || {};\n\n if (!slot) {\n return;\n }\n\n if (slot.startsWith('table-header-')) {\n const idx = parseInt(slot.split('-')[2], 10);\n const dataKeys = Object.keys(props.data?.[0] || {});\n\n if (!props.headerMapper) {\n props.headerMapper = {};\n }\n\n const key = dataKeys[idx];\n\n if (key) {\n props.headerMapper[key] = text;\n }\n } else {\n props[slot] = text;\n }\n\n this.model.set('componentProps', {\n ...props,\n });\n },\n render: function () {\n const compName: string = this.model.get('componentName');\n let compProps: any = this.model.get('componentProps');\n\n if (typeof compProps === 'string') {\n try {\n compProps = JSON.parse(compProps);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Invalid JSON in componentProps', err);\n compProps = {};\n }\n }\n\n compProps.isEditable = mode === 'editor';\n compProps.performInteraction = performInteraction;\n\n compProps.onChange = (data: Record<string, any>) => {\n this.model.set('componentProps', {\n ...this.model.get('componentProps'),\n ...data,\n });\n };\n\n const renderers = getRenderers();\n const Renderer = renderers[compName];\n\n if (Renderer) {\n if (compName === 'Tabs') {\n ReactDOM.render(<Renderer {...compProps} gjsModel={this.model} />, this.el);\n\n const children = this.model.components();\n const tabsContent = this.el.querySelectorAll('.tabs-content');\n children.each((childModel, i) => {\n const childView = this.createView(childModel);\n\n if (childView) {\n childView.render();\n tabsContent[i].appendChild(childView.el);\n }\n });\n } else {\n ReactDOM.render(<Renderer {...compProps} gjsModel={this.model} />, this.el);\n }\n } else {\n this.el.innerHTML = `<div>Unsupported component: ${compName}</div>`;\n }\n\n renderedComponents[this.model.get('id')] = this.model;\n\n return this;\n },\n createView(model: any) {\n const ComponentView = this.em.get('DomComponents').getType(model.get('type'))?.view;\n\n if (!ComponentView) {\n // eslint-disable-next-line no-console\n console.warn('No view found for component type:', model.get('type'));\n\n return null;\n }\n\n const view = new ComponentView({\n model,\n config: this.config,\n componentTypes: this.componentTypes,\n });\n\n return view;\n },\n remove: function () {\n // eslint-disable-next-line import/no-named-as-default-member\n ReactDOM.unmountComponentAtNode(this.el);\n\n return this;\n },\n },\n });\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"grapejs-plugin.js","names":["ReactDOM","React","getRenderers","CardLoader","Card","CardContent","jsx","_jsx","createGrapesjsShadcnGenericPlugin","mode","performInteraction","renderedComponents","grapesjsShadcnGenericPlugin","editor","DomComponents","addType","model","defaults","tagName","droppable","componentName","componentProps","traits","view","events","handleSlotInput","e","target","slot","dataset","text","innerText","props","get","startsWith","_props$data","idx","parseInt","split","dataKeys","Object","keys","data","headerMapper","key","set","_extends","render","_this","compName","compProps","JSON","parse","err","console","error","isEditable","onChange","renderers","Renderer","gjsModel","el","children","components","tabsContent","querySelectorAll","each","childModel","i","childView","createView","appendChild","warn","_compProps","actions","log","hasActions","Array","isArray","actionsLength","length","className","setTimeout","innerHTML","includes","_this$model$get","currentActions","_this$em$get$getType","ComponentView","em","getType","config","componentTypes","remove","unmountComponentAtNode"],"sources":["../../src/plugins/grapejs-plugin.tsx"],"sourcesContent":["/* eslint-disable import/no-named-as-default-member */\n/* eslint-disable func-names */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport ReactDOM from 'react-dom';\nimport React from 'react';\nimport { Editor, Component } from 'grapesjs';\nimport { getRenderers } from './helpers/render-components';\nimport { CardLoader } from '../shadcn/components/ui/skeleton';\nimport { Card, CardContent } from '../shadcn/components/ui/card';\n\nexport function createGrapesjsShadcnGenericPlugin(\n mode: 'editor' | 'preview',\n performInteraction: (payload: Record<string, any>) => void,\n renderedComponents: Record<string, Component> = {},\n) {\n return function grapesjsShadcnGenericPlugin(editor: Editor): void {\n editor.DomComponents.addType('shadcn-generic', {\n model: {\n defaults: {\n tagName: 'div',\n droppable: false,\n componentName: 'Card',\n componentProps: {},\n traits: [],\n },\n },\n view: {\n events: {\n 'input [data-slot]': 'handleSlotInput',\n } as any,\n handleSlotInput(e: Event) {\n const target = e.target as HTMLElement;\n const slot = target.dataset.slot;\n const text = target.innerText;\n\n const props = this.model.get('componentProps') || {};\n\n if (!slot) {\n return;\n }\n\n if (slot.startsWith('table-header-')) {\n const idx = parseInt(slot.split('-')[2], 10);\n const dataKeys = Object.keys(props.data?.[0] || {});\n\n if (!props.headerMapper) {\n props.headerMapper = {};\n }\n\n const key = dataKeys[idx];\n\n if (key) {\n props.headerMapper[key] = text;\n }\n } else {\n props[slot] = text;\n }\n\n this.model.set('componentProps', {\n ...props,\n });\n },\n render: function () {\n const compName: string = this.model.get('componentName');\n let compProps: any = this.model.get('componentProps');\n\n if (typeof compProps === 'string') {\n try {\n compProps = JSON.parse(compProps);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Invalid JSON in componentProps', err);\n compProps = {};\n }\n }\n\n compProps.isEditable = mode === 'editor';\n compProps.performInteraction = performInteraction;\n\n compProps.onChange = (data: Record<string, any>) => {\n this.model.set('componentProps', {\n ...this.model.get('componentProps'),\n ...data,\n });\n };\n\n const renderers = getRenderers();\n const Renderer = renderers[compName];\n\n if (Renderer) {\n if (compName === 'Tabs') {\n ReactDOM.render(<Renderer {...compProps} gjsModel={this.model} />, this.el);\n\n const children = this.model.components();\n const tabsContent = this.el.querySelectorAll('.tabs-content');\n children.each((childModel, i) => {\n const childView = this.createView(childModel);\n\n if (childView) {\n childView.render();\n tabsContent[i].appendChild(childView.el);\n }\n });\n } else {\n ReactDOM.render(<Renderer {...compProps} gjsModel={this.model} />, this.el);\n }\n } else {\n // eslint-disable-next-line no-console\n console.warn('❌ No renderer found for component:', compName);\n \n // Special handling for Actions component\n if (compName === 'Actions') {\n const actions = compProps?.actions;\n \n // eslint-disable-next-line no-console\n console.log('🎬 Actions component - checking data:', {\n hasActions: Array.isArray(actions),\n actionsLength: actions?.length,\n actions: actions,\n componentProps: compProps\n });\n \n // Always show loader for Actions since expandActions should handle it\n // The data might come later via props updates\n ReactDOM.render(\n <Card className=\"shadow border mt-2 mb-2\">\n <CardContent className=\"p-4\">\n <CardLoader />\n </CardContent>\n </Card>, \n this.el\n );\n \n // Set a timeout to check if this component should have been expanded\n setTimeout(() => {\n // If this component still exists after expansion should have happened,\n // it means expandActions didn't process it (no actions data)\n if (this.el && this.el.innerHTML.includes('CardLoader')) {\n const currentActions = this.model.get('componentProps')?.actions;\n\n if (!Array.isArray(currentActions) || currentActions.length === 0) {\n // No actions data found, remove the loader\n this.el.innerHTML = '<div></div>';\n // eslint-disable-next-line no-console\n console.log('🚫 Actions component - no data found, removing loader');\n }\n }\n }, 1000); // Wait 1 second for expandActions to process\n \n } else {\n // For other unsupported components, show a loader\n ReactDOM.render(\n <Card className=\"shadow border mt-2 mb-2\">\n <CardContent className=\"p-4\">\n <CardLoader />\n </CardContent>\n </Card>, \n this.el\n );\n }\n }\n\n renderedComponents[this.model.get('id')] = this.model;\n\n return this;\n },\n createView(model: any) {\n const ComponentView = this.em.get('DomComponents').getType(model.get('type'))?.view;\n\n if (!ComponentView) {\n // eslint-disable-next-line no-console\n console.warn('No view found for component type:', model.get('type'));\n\n return null;\n }\n\n const view = new ComponentView({\n model,\n config: this.config,\n componentTypes: this.componentTypes,\n });\n\n return view;\n },\n remove: function () {\n // eslint-disable-next-line import/no-named-as-default-member\n ReactDOM.unmountComponentAtNode(this.el);\n\n return this;\n },\n },\n });\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _objectWithoutPropertiesLoose from"@babel/runtime/helpers/objectWithoutPropertiesLoose";var _excluded=["
|
|
1
|
+
import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _objectWithoutPropertiesLoose from"@babel/runtime/helpers/objectWithoutPropertiesLoose";var _excluded=["gjsModel"],_excluded2=["isEditable","gjsModel","performInteraction"],_excluded3=["isEditable","gjsModel","performInteraction"],_excluded4=["isEditable","gjsModel","performInteraction"],_excluded5=["isEditable","gjsModel"];import _regeneratorRuntime from"@babel/runtime/regenerator";function _createForOfIteratorHelperLoose(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(t)return(t=t.call(r)).next.bind(t);if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var o=0;return function(){return o>=r.length?{done:!0}:{done:!1,value:r[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}/* eslint-disable no-nested-ternary *//* eslint-disable @typescript-eslint/ban-ts-comment *//* eslint-disable func-style *//* eslint-disable @typescript-eslint/no-empty-function *//* eslint-disable func-names *//* eslint-disable @typescript-eslint/no-explicit-any */import chroma from"chroma-js";import React,{useEffect,useState,useRef}from"react";import{renderNoDataFallback}from"./extra";import{CircleAlert,TrendingDown,TrendingUp,ShoppingCart,ChartBarBig,Tag,MapPin}from"lucide-react";import{StyledInfoButton}from"./styled-info-button";import{theme}from"@peak-ai/ais-components/theme";import Markdown from"markdown-to-jsx";import{Bar,BarChart,CartesianGrid,Legend,Line,LineChart,Pie,PieChart,ResponsiveContainer,XAxis,YAxis}from"recharts/lib";// @ts-ignore
|
|
2
2
|
import*as domutil from"recharts/lib/util/DOMUtils";import{TooltipButton}from"../../shadcn/components/ui/button";import{Card,CardContent,CardDescription,CardFooter,CardHeader,CardTitle}from"../../shadcn/components/ui/card";import{ChartContainer,ChartTooltip,ChartTooltipContent}from"../../shadcn/components/ui/chart";import{renderFilter}from"../../shadcn/components/ui/filter";import{ScrollArea,ScrollBar}from"../../shadcn/components/ui/scroll-area";import{renderSearch}from"../../shadcn/components/ui/search";import{CardLoader,ChartLoader,MarkdownLoader}from"../../shadcn/components/ui/skeleton";import{Tabs,TabsContent,TabsList,TabsTrigger}from"../../shadcn/components/ui/tabs";import{cn}from"../../shadcn/utils";import{getAffectedComponentsWithLoader}from"../../helpers";import{DataTable}from"./data-table";import{ComponentWrapper}from"../../shadcn/components/ui/error-wrapper";// Monkey-patching the getOffset function to use iframe's window instead of global one
|
|
3
3
|
// REMEMBER TO UDPATE THIS WHEN recharts IS UPGRADED
|
|
4
4
|
// @ts-ignore
|
|
5
5
|
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";domutil.getOffset=function(el){var html=el.ownerDocument.documentElement;var box={top:0,left:0};if(typeof el.getBoundingClientRect!=="undefined"){box=el.getBoundingClientRect()}var iframe=document.querySelector(".gjs-frame");var iframeWindow=iframe==null?void 0:iframe.contentWindow;return{top:box.top+iframeWindow.pageYOffset-html.clientTop,left:box.left+iframeWindow.pageXOffset-html.clientLeft}};var baseColors=[[theme.colors.Blue_100,theme.colors.Blue_30],[theme.colors.Purpley_100,theme.colors.Purpley_30],[theme.colors.Light_Bluish_Green,"#06601b"],[theme.colors.Wild_Strawberry,"#4d001c"]];var iconMap={"TrendingUp":/*#__PURE__*/_jsx(TrendingUp,{}),"TrendingDown":/*#__PURE__*/_jsx(TrendingDown,{}),"ShoppingCart":/*#__PURE__*/_jsx(ShoppingCart,{}),"Equalizer":/*#__PURE__*/_jsx(ChartBarBig,{}),"Style":/*#__PURE__*/_jsx(Tag,{}),"Place":/*#__PURE__*/_jsx(MapPin,{})};function getIconFromString(iconString){if(!iconString){return null}if(iconMap[iconString]){return iconMap[iconString]}var lowerIconString=iconString.toLowerCase();var matchingKey=Object.keys(iconMap).find(function(key){return key.toLowerCase()===lowerIconString});if(matchingKey){return iconMap[matchingKey]}return null}function getNColors(n){var colors=[];for(var _iterator=_createForOfIteratorHelperLoose(baseColors),_step;!(_step=_iterator()).done;){var baseColor=_step.value;// eslint-disable-next-line import/no-named-as-default-member
|
|
6
|
-
colors.push(chroma.scale(baseColor).mode("lab").colors(n))}function getOneColor(existing){var color=null;do{var base=colors[Math.floor(Math.random()*colors.length)];var selectedColorIndex=Math.floor(Math.random()*base.length);color=base[selectedColorIndex]}while(existing.includes(color));return color}var selectedColors=[];for(var i=0;i<n;i++){selectedColors.push(getOneColor(selectedColors))}return selectedColors}/* TODO: Loader remains */export function renderActionCard(props){var _props$isEditable=props.isEditable,isEditable=_props$isEditable===void 0?false:_props$isEditable,gjsModel=props.gjsModel,rest=_objectWithoutPropertiesLoose(props,_excluded);var _useState=useState(_extends({},props)),allData=_useState[0],setAllData=_useState[1];var _allData$headerConten=allData.headerContent,headerContent=_allData$headerConten===void 0?"Default action card title":_allData$headerConten,icon=allData.icon,_allData$bodyContent=allData.bodyContent,bodyContent=_allData$bodyContent===void 0?"Default body content. Click to edit.":_allData$bodyContent;var _useState2=useState(_extends({},gjsModel.get("attributes"))),setAttributes=_useState2[1];useEffect(function(){gjsModel.on("change:componentProps",function(){setAllData(function(prevData){return _extends({},prevData,gjsModel.get("componentProps"))})})},[]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);var defaultClasses="text-black p-4 rounded-lg shadow border flex flex-col h-full";return/*#__PURE__*/_jsx(Card,_extends({className:defaultClasses+" relative",style:{backgroundColor:"#f9f9fe"},isEditable:false,contentEditable:false},rest,{children:/*#__PURE__*/_jsx(CardContent,{className:"p-0",isEditable:false,contentEditable:false,children:/*#__PURE__*/_jsx("div",{className:"px-4 py-3",children:/*#__PURE__*/_jsxs("div",{className:"flex items-start flex-col",children:[/*#__PURE__*/_jsxs("div",{className:"flex items-center justify-between w-full",children:[/*#__PURE__*/_jsx("div",{className:"text-xl font-semibold",children:headerContent}),/*#__PURE__*/_jsx("div",{className:"text-5xl ml-2 flex items-center","aria-hidden":"true",children:getIconFromString(icon)})]}),/*#__PURE__*/_jsx("div",{className:"w-full mt-1",children:!bodyContent?/*#__PURE__*/_jsxs("span",{className:"flex flex-row items-center px-3 py-2",children:[/*#__PURE__*/_jsx(CircleAlert,{className:"w-3 h-3 text-gray-400 mr-1"}),/*#__PURE__*/_jsx("p",{className:"text-sm text-gray-500 max-w-md text-center",children:"No data available for given filters"})]}):/*#__PURE__*/_jsx("div",{className:"text-base leading-relaxed",children:bodyContent})})]})})})}))}export function renderCard(props){var _props$isEditable2=props.isEditable,isEditable=_props$isEditable2===void 0?false:_props$isEditable2,gjsModel=props.gjsModel,_props$performInterac=props.performInteraction,performInteraction=_props$performInterac===void 0?function(){return Promise.resolve({})}:_props$performInterac,rest=_objectWithoutPropertiesLoose(props,_excluded2);var _useState3=useState(_extends({},props)),allData=_useState3[0],setAllData=_useState3[1];var headerContent=allData.headerContent,headerDescription=allData.headerDescription,bodyContent=allData.bodyContent,footerContent=allData.footerContent,footerClass=allData.footerClass,footerIcon=allData.footerIcon,contentMetadata=allData.contentMetadata,contentMetadataClass=allData.contentMetadataClass,className=allData.className;var _useState4=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState4[0],setAttributes=_useState4[1];useEffect(function(){gjsModel.on("change:componentProps",function(){setAllData(function(prevData){return _extends({},prevData,gjsModel.get("componentProps"))})})},[]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);var defaultClasses="bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none";var defaultFooterClasses=footerContent?"text-sm bg-pink-50 text-pink-900 shadow-sm":"text-sm";var defaultContentMetadataClasses="text-xs";var mergedCardClassName=className?cn(defaultClasses,className):defaultClasses;var mergedFooterClassName=footerClass?cn(defaultFooterClasses,footerClass):defaultFooterClasses;var mergedContentMetadataClassName=contentMetadataClass?cn(defaultContentMetadataClasses,contentMetadataClass):defaultContentMetadataClasses;function getCardContent(){if(attributes.interactionApiInProgress||attributes.loading){return/*#__PURE__*/_jsx(CardContent,{children:/*#__PURE__*/_jsx(CardLoader,{})})}return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(CardHeader,{children:/*#__PURE__*/_jsx("div",{className:"flex items-start justify-between",children:/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"headerContent",contentEditable:isEditable,className:"text-lg",children:headerContent}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"headerDescription",contentEditable:isEditable,className:"text-sm",children:headerDescription})]})})}),!bodyContent?/*#__PURE__*/_jsxs("span",{className:"flex flex-row items-center px-3 py-2",children:[/*#__PURE__*/_jsx(CircleAlert,{className:"w-3 h-3 text-gray-400 mr-1"}),/*#__PURE__*/_jsx("p",{className:"text-sm text-gray-500 max-w-md text-center",children:"No data available for given filters"})]}):/*#__PURE__*/_jsxs(CardContent,{"data-slot":"bodyContent",contentEditable:false,className:"flex-grow",children:[/*#__PURE__*/_jsx("div",{className:"text-3xl font-semibold truncate",children:bodyContent}),contentMetadata&&/*#__PURE__*/_jsx("div",{className:mergedContentMetadataClassName,style:{color:"#2A44D4"},children:contentMetadata})]}),/*#__PURE__*/_jsxs(CardFooter,{"data-slot":"footerContent",contentEditable:isEditable,className:cn(mergedFooterClassName),children:[footerIcon&&/*#__PURE__*/_jsx("span",{className:"mr-2","aria-hidden":"true",children:footerIcon}),footerContent]})]})}return/*#__PURE__*/_jsxs(Card,_extends({},rest,{className:mergedCardClassName+" relative",children:[getCardContent(),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:performInteraction,position:"top-right",isVisible:isEditable})]}))}function renderChartComponent(chartType,data,config){if(!data||data.length===0){return renderNoDataFallback()}switch(chartType){case"pie":return/*#__PURE__*/_jsxs(PieChart,{children:[data.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:data,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:data.length<20?function(_ref){var name=_ref.name,percent=_ref.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]});case"bar":config.dataKeys=config.dataKeys||[];return/*#__PURE__*/_jsxs(BarChart,_extends({data:data},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(Legend,{align:"left",wrapperStyle:{marginLeft:20}}),config.dataKeys.map(function(_ref2){var key=_ref2.key,name=_ref2.name,color=_ref2.color;return/*#__PURE__*/_jsx(Bar,{dataKey:key,fill:color!=null?color:"#4caf50",name:name,radius:2},key)}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})})]}));case"line":config.dataKeys=config.dataKeys||[];return/*#__PURE__*/_jsxs(LineChart,_extends({data:data},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})}),config.dataKeys.map(function(_ref3){var key=_ref3.key,name=_ref3.name,color=_ref3.color;return/*#__PURE__*/_jsx(Line,{type:"monotone",dataKey:key,stroke:color!=null?color:"#4caf50",name:name},key)}),/*#__PURE__*/_jsx(Legend,{align:"left"})]}));default:return/*#__PURE__*/_jsxs(PieChart,{children:[data.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:data,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:data.length<20?function(_ref4){var name=_ref4.name,percent=_ref4.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]})}}export function renderChart(props){var _props$isEditable3=props.isEditable,isEditable=_props$isEditable3===void 0?false:_props$isEditable3,gjsModel=props.gjsModel,_props$performInterac2=props.performInteraction,performInteraction=_props$performInterac2===void 0?function(){return Promise.resolve({})}:_props$performInterac2,rest=_objectWithoutPropertiesLoose(props,_excluded3);var _useState5=useState(_extends({},props)),allData=_useState5[0],setAllData=_useState5[1];var _useState6=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState6[0],setAttributes=_useState6[1];var containerRef=useRef(null);var _useState7=useState(0),containerWidth=_useState7[0],setContainerWidth=_useState7[1];useEffect(function(){gjsModel.on("change:componentProps",function(){setAllData(function(prevData){return _extends({},prevData,gjsModel.get("componentProps"))})})},[]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);useEffect(function(){var updateContainerWidth=function updateContainerWidth(){if(containerRef.current){setContainerWidth(containerRef.current.offsetWidth)}};updateContainerWidth();window.addEventListener("resize",updateContainerWidth);return function(){return window.removeEventListener("resize",updateContainerWidth)}},[]);var _allData$config=allData.config,config=_allData$config===void 0?{}:_allData$config,_allData$chartType=allData.chartType,chartType=_allData$chartType===void 0?"pie":_allData$chartType,_allData$chartData=allData.chartData,chartData=_allData$chartData===void 0?[]:_allData$chartData,className=allData.className,_allData$title=allData.title,title=_allData$title===void 0?"Title":_allData$title,_allData$subTitle=allData.subTitle,subTitle=_allData$subTitle===void 0?"Subtitle":_allData$subTitle;var defaultClasses="aspect-auto h-[250px] w-full";var mergedClasses=className?cn(defaultClasses,className):defaultClasses;if(chartType==="pie"){var colors=getNColors(chartData.length);for(var i=0;i<chartData.length;i++){var data=chartData[i];if(!data.fill){data.fill=colors[i]}}}else if(!config.color){config.color=baseColors[Math.floor(Math.random()*baseColors.length)]}var width=undefined;var totalDataPoints=0;// Helper function to get responsive config
|
|
6
|
+
colors.push(chroma.scale(baseColor).mode("lab").colors(n))}function getOneColor(existing){var color=null;do{var base=colors[Math.floor(Math.random()*colors.length)];var selectedColorIndex=Math.floor(Math.random()*base.length);color=base[selectedColorIndex]}while(existing.includes(color));return color}var selectedColors=[];for(var i=0;i<n;i++){selectedColors.push(getOneColor(selectedColors))}return selectedColors}/* TODO: Loader remains */export function renderActionCard(props){var gjsModel=props.gjsModel,rest=_objectWithoutPropertiesLoose(props,_excluded);var _useState=useState(_extends({},props)),allData=_useState[0],setAllData=_useState[1];var _allData$headerConten=allData.headerContent,headerContent=_allData$headerConten===void 0?"Default action card title":_allData$headerConten,icon=allData.icon,_allData$bodyContent=allData.bodyContent,bodyContent=_allData$bodyContent===void 0?"Default body content. Click to edit.":_allData$bodyContent;var _useState2=useState(_extends({},gjsModel.get("attributes"))),setAttributes=_useState2[1];useEffect(function(){gjsModel.on("change:componentProps",function(){setAllData(function(prevData){return _extends({},prevData,gjsModel.get("componentProps"))})})},[]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);var defaultClasses="text-black p-4 rounded-lg shadow border flex flex-col h-full";return/*#__PURE__*/_jsx(Card,_extends({className:defaultClasses+" relative",style:{backgroundColor:"#f9f9fe"},isEditable:false,contentEditable:false},rest,{children:/*#__PURE__*/_jsx(CardContent,{className:"p-0",isEditable:false,contentEditable:false,children:/*#__PURE__*/_jsx("div",{className:"px-4 py-3",children:/*#__PURE__*/_jsxs("div",{className:"flex items-start flex-col",children:[/*#__PURE__*/_jsxs("div",{className:"flex items-center justify-between w-full",children:[/*#__PURE__*/_jsx("div",{className:"text-xl font-semibold",children:headerContent}),/*#__PURE__*/_jsx("div",{className:"text-5xl ml-2 flex items-center","aria-hidden":"true",children:getIconFromString(icon)})]}),/*#__PURE__*/_jsx("div",{className:"w-full mt-1",children:!bodyContent?/*#__PURE__*/_jsxs("span",{className:"flex flex-row items-center px-3 py-2",children:[/*#__PURE__*/_jsx(CircleAlert,{className:"w-3 h-3 text-gray-400 mr-1"}),/*#__PURE__*/_jsx("p",{className:"text-sm text-gray-500 max-w-md text-center",children:"No data available for given filters"})]}):/*#__PURE__*/_jsx("div",{className:"text-base leading-relaxed",children:bodyContent})})]})})})}))}export function renderCard(props){var _props$isEditable=props.isEditable,isEditable=_props$isEditable===void 0?false:_props$isEditable,gjsModel=props.gjsModel,_props$performInterac=props.performInteraction,performInteraction=_props$performInterac===void 0?function(){return Promise.resolve({})}:_props$performInterac,rest=_objectWithoutPropertiesLoose(props,_excluded2);var _useState3=useState(_extends({},props)),allData=_useState3[0],setAllData=_useState3[1];var headerContent=allData.headerContent,headerDescription=allData.headerDescription,bodyContent=allData.bodyContent,footerContent=allData.footerContent,footerClass=allData.footerClass,footerIcon=allData.footerIcon,contentMetadata=allData.contentMetadata,contentMetadataClass=allData.contentMetadataClass,className=allData.className;var _useState4=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState4[0],setAttributes=_useState4[1];useEffect(function(){gjsModel.on("change:componentProps",function(){setAllData(function(prevData){return _extends({},prevData,gjsModel.get("componentProps"))})})},[]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);var defaultClasses="bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none";var defaultFooterClasses=footerContent?"text-sm bg-pink-50 text-pink-900 shadow-sm":"text-sm";var defaultContentMetadataClasses="text-xs";var mergedCardClassName=className?cn(defaultClasses,className):defaultClasses;var mergedFooterClassName=footerClass?cn(defaultFooterClasses,footerClass):defaultFooterClasses;var mergedContentMetadataClassName=contentMetadataClass?cn(defaultContentMetadataClasses,contentMetadataClass):defaultContentMetadataClasses;function getCardContent(){if(attributes.interactionApiInProgress||attributes.loading){return/*#__PURE__*/_jsx(CardContent,{children:/*#__PURE__*/_jsx(CardLoader,{})})}return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(CardHeader,{children:/*#__PURE__*/_jsx("div",{className:"flex items-start justify-between",children:/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"headerContent",contentEditable:isEditable,className:"text-lg",children:headerContent}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"headerDescription",contentEditable:isEditable,className:"text-sm",children:headerDescription})]})})}),!bodyContent?/*#__PURE__*/_jsxs("span",{className:"flex flex-row items-center px-3 py-2",children:[/*#__PURE__*/_jsx(CircleAlert,{className:"w-3 h-3 text-gray-400 mr-1"}),/*#__PURE__*/_jsx("p",{className:"text-sm text-gray-500 max-w-md text-center",children:"No data available for given filters"})]}):/*#__PURE__*/_jsxs(CardContent,{"data-slot":"bodyContent",contentEditable:false,className:"flex-grow",children:[/*#__PURE__*/_jsx("div",{className:"text-3xl font-semibold truncate",children:bodyContent}),contentMetadata&&/*#__PURE__*/_jsx("div",{className:mergedContentMetadataClassName,style:{color:"#2A44D4"},children:contentMetadata})]}),/*#__PURE__*/_jsxs(CardFooter,{"data-slot":"footerContent",contentEditable:isEditable,className:cn(mergedFooterClassName),children:[footerIcon&&/*#__PURE__*/_jsx("span",{className:"mr-2","aria-hidden":"true",children:footerIcon}),footerContent]})]})}return/*#__PURE__*/_jsxs(Card,_extends({},rest,{className:mergedCardClassName+" relative",children:[getCardContent(),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:performInteraction,position:"top-right",isVisible:isEditable})]}))}function renderChartComponent(chartType,data,config){if(!data||data.length===0){return renderNoDataFallback()}switch(chartType){case"pie":return/*#__PURE__*/_jsxs(PieChart,{children:[data.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:data,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:data.length<20?function(_ref){var name=_ref.name,percent=_ref.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]});case"bar":config.dataKeys=config.dataKeys||[];return/*#__PURE__*/_jsxs(BarChart,_extends({data:data},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(Legend,{align:"left",wrapperStyle:{marginLeft:20}}),config.dataKeys.map(function(_ref2){var key=_ref2.key,name=_ref2.name,color=_ref2.color;return/*#__PURE__*/_jsx(Bar,{dataKey:key,fill:color!=null?color:"#4caf50",name:name,radius:2},key)}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})})]}));case"line":config.dataKeys=config.dataKeys||[];return/*#__PURE__*/_jsxs(LineChart,_extends({data:data},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})}),config.dataKeys.map(function(_ref3){var key=_ref3.key,name=_ref3.name,color=_ref3.color;return/*#__PURE__*/_jsx(Line,{type:"monotone",dataKey:key,stroke:color!=null?color:"#4caf50",name:name},key)}),/*#__PURE__*/_jsx(Legend,{align:"left"})]}));default:return/*#__PURE__*/_jsxs(PieChart,{children:[data.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:data,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:data.length<20?function(_ref4){var name=_ref4.name,percent=_ref4.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]})}}export function renderChart(props){var _props$isEditable2=props.isEditable,isEditable=_props$isEditable2===void 0?false:_props$isEditable2,gjsModel=props.gjsModel,_props$performInterac2=props.performInteraction,performInteraction=_props$performInterac2===void 0?function(){return Promise.resolve({})}:_props$performInterac2,rest=_objectWithoutPropertiesLoose(props,_excluded3);var _useState5=useState(_extends({},props)),allData=_useState5[0],setAllData=_useState5[1];var _useState6=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState6[0],setAttributes=_useState6[1];var containerRef=useRef(null);var _useState7=useState(0),containerWidth=_useState7[0],setContainerWidth=_useState7[1];useEffect(function(){gjsModel.on("change:componentProps",function(){setAllData(function(prevData){return _extends({},prevData,gjsModel.get("componentProps"))})})},[]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);useEffect(function(){var updateContainerWidth=function updateContainerWidth(){if(containerRef.current){setContainerWidth(containerRef.current.offsetWidth)}};updateContainerWidth();window.addEventListener("resize",updateContainerWidth);return function(){return window.removeEventListener("resize",updateContainerWidth)}},[]);var _allData$config=allData.config,config=_allData$config===void 0?{}:_allData$config,_allData$chartType=allData.chartType,chartType=_allData$chartType===void 0?"pie":_allData$chartType,_allData$chartData=allData.chartData,chartData=_allData$chartData===void 0?[]:_allData$chartData,className=allData.className,_allData$title=allData.title,title=_allData$title===void 0?"Title":_allData$title,_allData$subTitle=allData.subTitle,subTitle=_allData$subTitle===void 0?"Subtitle":_allData$subTitle;var defaultClasses="aspect-auto h-[250px] w-full";var mergedClasses=className?cn(defaultClasses,className):defaultClasses;if(chartType==="pie"){var colors=getNColors(chartData.length);for(var i=0;i<chartData.length;i++){var data=chartData[i];if(!data.fill){data.fill=colors[i]}}}else if(!config.color){config.color=baseColors[Math.floor(Math.random()*baseColors.length)]}var width=undefined;var totalDataPoints=0;// Helper function to get responsive config
|
|
7
7
|
var getResponsiveConfig=function getResponsiveConfig(){if(chartType==="bar"&&totalDataPoints>15&&containerWidth>0&&width&&width<=containerWidth){// If chart fits in container, use responsive behavior
|
|
8
|
-
return _extends({},config,{chartUi:{}})}return config};if(chartType==="bar"){config.dataKeys=config.dataKeys||[];totalDataPoints=chartData.length*Math.max(1,config.dataKeys.length);if(totalDataPoints>15){width=totalDataPoints*20+config.dataKeys.length*8*chartData.length+chartData.length*15;config.chartUi={barCategoryGap:"10%",width:width}}else{config.chartUi={}}}else if(chartType==="line"){config.dataKeys=config.dataKeys||[];totalDataPoints=chartData.length;if(totalDataPoints>15){width=Math.max(800,totalDataPoints*20);config.chartUi={width:width}}else{config.chartUi={}}}var chartUi=attributes.interactionApiInProgress||attributes.loading?/*#__PURE__*/_jsx(ChartLoader,{}):!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})]})}export function renderTable(props){var _props$isEditable4=props.isEditable,isEditable=_props$isEditable4===void 0?false:_props$isEditable4,gjsModel=props.gjsModel,_props$performInterac3=props.performInteraction,performInteraction=_props$performInterac3===void 0?function(){}:_props$performInterac3,rest=_objectWithoutPropertiesLoose(props,_excluded4);var _useState8=useState(_extends({},props)),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,data.length)}};var timeoutId=setTimeout(updateTableWidthAndApplyCSS,150);window.addEventListener("resize",updateTableWidthAndApplyCSS);return function(){clearTimeout(timeoutId);window.removeEventListener("resize",updateTableWidthAndApplyCSS)}},[allData,gjsModel,viewportWidth,data,calculateTableHeight]);useEffect(function(){gjsModel.on("change:componentProps",function(){setAllData(function(prevData){return _extends({},prevData,gjsModel.get("componentProps"))})})},[]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);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:/*#__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:data&&data.length>0?data[0]:{},isVisible:isEditable})]})}export function renderTab(props){var tabsWidth=157;if(props.tabs.length>4){tabsWidth=157}return/*#__PURE__*/_jsxs(Tabs,{defaultValue:props.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:props.tabs.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)})})}),props.tabs.map(function(tab){return/*#__PURE__*/_jsx(TabsContent,{value:tab,className:"tabs-content"},tab)})]})}export function renderMarkdown(props){var _props$isEditable5=props.isEditable,isEditable=_props$isEditable5===void 0?false:_props$isEditable5,gjsModel=props.gjsModel,rest=_objectWithoutPropertiesLoose(props,_excluded5);var _useState12=useState(_extends({},props)),allData=_useState12[0],setAllData=_useState12[1];var _useState13=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState13[0],setAttributes=_useState13[1];useEffect(function(){gjsModel.on("change:componentProps",function(){setAllData(function(prevData){return _extends({},prevData,gjsModel.get("componentProps"))})})},[]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);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
|
|
9
|
-
var saveChanges=function saveChanges(){if(!editRef.current){return}var content=editRef.current.innerText||"";setAllData(function(prev){return _extends({},prev,{summaryText:content})});setIsEditing(false);editRef.current.innerHTML=""};var markdownStyles={ul:{props:{className:"list-disc"}},h1:{props:{className:"text-4xl font-bold leading-[4rem]"}},h2:{props:{className:"text-3xl font-bold leading-[3rem]"}},h3:{props:{className:"text-2xl font-bold leading-[2rem]"}},h4:{props:{className:"text-xl font-bold leading-[2.5rem]"}},h5:{props:{className:"text-lg font-bold leading-[2.5rem]"}},h6:{props:{className:"text-base font-bold leading-[2rem]"}}};if(attributes.loading){return/*#__PURE__*/_jsx(MarkdownLoader,{})}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})]}))}return/*#__PURE__*/_jsxs("div",_extends({className:"p-[1em] relative"},rest,{children:[/*#__PURE__*/_jsx("h3",{className:"text-xl font-semibold text-left",children:"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})]}))}export function renderButton(props){var _props$
|
|
8
|
+
return _extends({},config,{chartUi:{}})}return config};if(chartType==="bar"){config.dataKeys=config.dataKeys||[];totalDataPoints=chartData.length*Math.max(1,config.dataKeys.length);if(totalDataPoints>15){width=totalDataPoints*20+config.dataKeys.length*8*chartData.length+chartData.length*15;config.chartUi={barCategoryGap:"10%",width:width}}else{config.chartUi={}}}else if(chartType==="line"){config.dataKeys=config.dataKeys||[];totalDataPoints=chartData.length;if(totalDataPoints>15){width=Math.max(800,totalDataPoints*20);config.chartUi={width:width}}else{config.chartUi={}}}var chartUi=attributes.interactionApiInProgress||attributes.loading?/*#__PURE__*/_jsx(ChartLoader,{}):!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})]})}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);var _useState8=useState(_extends({},props)),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,data.length)}};var timeoutId=setTimeout(updateTableWidthAndApplyCSS,150);window.addEventListener("resize",updateTableWidthAndApplyCSS);return function(){clearTimeout(timeoutId);window.removeEventListener("resize",updateTableWidthAndApplyCSS)}},[allData,gjsModel,viewportWidth,data,calculateTableHeight]);useEffect(function(){gjsModel.on("change:componentProps",function(){setAllData(function(prevData){return _extends({},prevData,gjsModel.get("componentProps"))})})},[]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);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:/*#__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:data&&data.length>0?data[0]:{},isVisible:isEditable})]})}export function renderTab(props){var tabsWidth=157;if(props.tabs.length>4){tabsWidth=157}return/*#__PURE__*/_jsxs(Tabs,{defaultValue:props.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:props.tabs.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)})})}),props.tabs.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);var _useState12=useState(_extends({},props)),allData=_useState12[0],setAllData=_useState12[1];var _useState13=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState13[0],setAttributes=_useState13[1];useEffect(function(){gjsModel.on("change:componentProps",function(){setAllData(function(prevData){return _extends({},prevData,gjsModel.get("componentProps"))})})},[]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);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
|
|
9
|
+
var saveChanges=function saveChanges(){if(!editRef.current){return}var content=editRef.current.innerText||"";setAllData(function(prev){return _extends({},prev,{summaryText:content})});setIsEditing(false);editRef.current.innerHTML=""};var markdownStyles={ul:{props:{className:"list-disc"}},h1:{props:{className:"text-4xl font-bold leading-[4rem]"}},h2:{props:{className:"text-3xl font-bold leading-[3rem]"}},h3:{props:{className:"text-2xl font-bold leading-[2rem]"}},h4:{props:{className:"text-xl font-bold leading-[2.5rem]"}},h5:{props:{className:"text-lg font-bold leading-[2.5rem]"}},h6:{props:{className:"text-base font-bold leading-[2rem]"}}};if(attributes.loading){return/*#__PURE__*/_jsx(MarkdownLoader,{})}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})]}))}return/*#__PURE__*/_jsxs("div",_extends({className:"p-[1em] relative"},rest,{children:[/*#__PURE__*/_jsx("h3",{className:"text-xl font-semibold text-left",children:"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})]}))}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 _useState15=useState(_extends({},props)),allData=_useState15[0],setAllData=_useState15[1];var _useState16=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState16[0],setAttributes=_useState16[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:props,children:renderActionCard(props)})};var renderButtonWithWrapper=function renderButtonWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:props,children:renderButton(props)})};var renderCardWithWrapper=function renderCardWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:props,children:renderCard(props)})};var renderChartWithWrapper=function renderChartWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:props,children:renderChart(props)})};var renderFilterWithWrapper=function renderFilterWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:props,children:renderFilter(props)})};var renderMarkdownWithWrapper=function renderMarkdownWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:props,children:renderMarkdown(props)})};var renderSearchWithWrapper=function renderSearchWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:props,children:renderSearch(props)})};var renderTableWithWrapper=function renderTableWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:props,children:renderTable(props)})};var renderTabWithWrapper=function renderTabWithWrapper(props){return/*#__PURE__*/_jsx(ComponentWrapper,{componentProps:props,children:renderTab(props)})};export function getRenderers(){return{ActionCard:renderActionCardWithWrapper,Button:renderButtonWithWrapper,Card:renderCardWithWrapper,Chart:renderChartWithWrapper,Filter:renderFilterWithWrapper,Markdown:renderMarkdownWithWrapper,Search:renderSearchWithWrapper,Table:renderTableWithWrapper,Tabs:renderTabWithWrapper}}
|
|
10
10
|
//# sourceMappingURL=render-components.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-components.js","names":["chroma","React","useEffect","useState","useRef","renderNoDataFallback","CircleAlert","TrendingDown","TrendingUp","ShoppingCart","ChartBarBig","Tag","MapPin","StyledInfoButton","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","getIconFromString","iconString","lowerIconString","toLowerCase","matchingKey","Object","keys","find","key","getNColors","n","_iterator","_createForOfIteratorHelperLoose","_step","done","baseColor","value","push","scale","mode","getOneColor","existing","color","base","Math","floor","random","length","selectedColorIndex","includes","selectedColors","i","renderActionCard","props","_props$isEditable","isEditable","gjsModel","rest","_objectWithoutPropertiesLoose","_excluded","_useState","_extends","allData","setAllData","_allData$headerConten","headerContent","icon","_allData$bodyContent","bodyContent","_useState2","get","setAttributes","on","prevData","defaultClasses","className","style","backgroundColor","contentEditable","children","renderCard","_props$isEditable2","_props$performInterac","performInteraction","Promise","resolve","_excluded2","_useState3","headerDescription","footerContent","footerClass","footerIcon","contentMetadata","contentMetadataClass","_useState4","attributes","defaultFooterClasses","defaultContentMetadataClasses","mergedCardClassName","mergedFooterClassName","mergedContentMetadataClassName","getCardContent","interactionApiInProgress","loading","Fragment","componentId","position","isVisible","renderChartComponent","chartType","data","config","cursor","content","hideLabel","dataKey","nameKey","innerRadius","strokeWidth","label","_ref","name","percent","toFixed","undefined","labelLine","dataKeys","chartUi","vertical","xAxis","align","wrapperStyle","marginLeft","map","_ref2","fill","radius","indicator","_ref3","type","stroke","_ref4","renderChart","_props$isEditable3","_props$performInterac2","_excluded3","_useState5","_useState6","containerRef","_useState7","containerWidth","setContainerWidth","updateContainerWidth","current","offsetWidth","window","addEventListener","removeEventListener","_allData$config","_allData$chartType","_allData$chartData","chartData","_allData$title","title","_allData$subTitle","subTitle","mergedClasses","width","totalDataPoints","getResponsiveConfig","max","barCategoryGap","minWidth","height","orientation","ref","renderTable","_props$isEditable4","_props$performInterac3","_excluded4","_useState8","cardRef","_useState9","rawData","_allData$headerMapper","headerMapper","rawHeaderMapper","_allData$title2","_allData$subTitle2","_allData$actions","actions","pagination","Array","isArray","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","isLoading","onSort","otherProps","tableActions","firstRowData","renderTab","tabsWidth","tabs","defaultValue","tab","fontFamily","fontWeight","fontSize","lineHeight","letterSpacing","renderMarkdown","_props$isEditable5","_excluded5","_useState12","_useState13","_useState14","isEditing","setIsEditing","editRef","startEditing","setupEditor","innerHTML","textContent","summaryText","focus","saveChanges","innerText","markdownStyles","ul","h1","h2","h3","h4","h5","h6","options","overrides","onBlur","suppressContentEditableWarning","whiteSpace","wordWrap","onClick","renderButton","_props$isEditable6","_props$performInterac4","_useState15","_useState16","text","_allData$variant","variant","_allData$size","size","tooltipContent","interact","concat","renderActionCardWithWrapper","componentProps","renderButtonWithWrapper","renderCardWithWrapper","renderChartWithWrapper","renderFilterWithWrapper","renderMarkdownWithWrapper","renderSearchWithWrapper","renderTableWithWrapper","renderTabWithWrapper","getRenderers","ActionCard","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, JSX, useRef } from 'react';\nimport { renderNoDataFallback } from './extra'\nimport { CircleAlert, TrendingDown, TrendingUp, ShoppingCart, ChartBarBig, Tag,MapPin } from 'lucide-react';\nimport { StyledInfoButton } from './styled-info-button';\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 {ChartContainer, ChartTooltip, ChartTooltipContent,} 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 = (el: HTMLElement): {\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\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\n for (const baseColor of baseColors) {\n // eslint-disable-next-line import/no-named-as-default-member\n colors.push(chroma.scale(baseColor).mode('lab').colors(n));\n }\n\n function getOneColor(existing: Array<string>) {\n let color: null | string = null;\n\n do {\n const base = colors[Math.floor(Math.random() * colors.length)];\n const selectedColorIndex = Math.floor(Math.random() * base.length);\n color = base[selectedColorIndex];\n } while (existing.includes(color));\n\n return color as string;\n }\n\n const selectedColors: Array<string> = [];\n\n for (let i = 0; i < n; i++) {\n selectedColors.push(getOneColor(selectedColors));\n }\n\n return selectedColors;\n}\n\n/* TODO: Loader remains */\nexport function renderActionCard(props: any): JSX.Element {\n const { isEditable = false, gjsModel, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const {\n headerContent = 'Default action card title',\n icon,\n bodyContent = 'Default body content. Click to edit.',\n } = allData;\n\n const [, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n gjsModel.on('change:componentProps', () => {\n setAllData((prevData: any) => ({\n ...prevData, \n ...gjsModel.get('componentProps'),\n }));\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const defaultClasses = '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 {!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 { isEditable = false, gjsModel, performInteraction = () => Promise.resolve({}), ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const {\n headerContent,\n headerDescription,\n bodyContent,\n footerContent,\n footerClass,\n footerIcon,\n contentMetadata,\n contentMetadataClass,\n className,\n } = allData;\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n gjsModel.on('change:componentProps', () => {\n setAllData((prevData: any) => ({\n ...prevData,\n ...gjsModel.get('componentProps'),\n }));\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const defaultClasses = 'bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none';\n const defaultFooterClasses = footerContent ? 'text-sm bg-pink-50 text-pink-900 shadow-sm' : 'text-sm';\n const defaultContentMetadataClasses = 'text-xs';\n const mergedCardClassName = className ? cn(defaultClasses, className) : defaultClasses;\n const mergedFooterClassName = footerClass\n ? cn(defaultFooterClasses, footerClass)\n : defaultFooterClasses;\n const mergedContentMetadataClassName = contentMetadataClass\n ? cn(defaultContentMetadataClasses, contentMetadataClass)\n : defaultContentMetadataClasses;\n\n function getCardContent() {\n if (attributes.interactionApiInProgress || attributes.loading) {\n return (\n <CardContent>\n <CardLoader />\n </CardContent>\n );\n }\n\n return (\n <React.Fragment>\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"headerContent\" contentEditable={isEditable} className=\"text-lg\">\n {headerContent}\n </CardTitle>\n <CardDescription\n data-slot=\"headerDescription\"\n contentEditable={isEditable}\n className=\"text-sm\"\n >\n {headerDescription}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n\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 <CardContent data-slot=\"bodyContent\" contentEditable={false} className=\"flex-grow\">\n <div className=\"text-3xl font-semibold truncate\">{bodyContent}</div>\n {contentMetadata && (\n <div className={mergedContentMetadataClassName} style={{ color: '#2A44D4' }}>\n {contentMetadata}\n </div>\n )}\n </CardContent>\n )}\n\n <CardFooter\n data-slot=\"footerContent\"\n contentEditable={isEditable}\n className={cn(mergedFooterClassName)}\n >\n {footerIcon && (\n <span className=\"mr-2\" aria-hidden=\"true\">\n {footerIcon}\n </span>\n )}\n {footerContent}\n </CardFooter>\n </React.Fragment>\n );\n }\n\n return (\n <Card {...rest} className={`${mergedCardClassName} relative`}>\n {getCardContent()}\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n />\n </Card>\n );\n}\n\nfunction renderChartComponent(chartType: string, data: any, config: any): JSX.Element {\n if (!data || data.length === 0) {\n return renderNoDataFallback();\n }\n\n switch (chartType) {\n case 'pie':\n return (\n <PieChart>\n {data.length >= 20 && (\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n )}\n <Pie\n data={data}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n data.length < 20\n ? ({ name, percent }: { name: string; percent: number; }) => `${name}: ${(percent * 100).toFixed(0)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n case 'bar':\n config.dataKeys = config.dataKeys || [];\n\n return (\n <BarChart data={data} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <Legend align=\"left\" wrapperStyle={{ marginLeft: 20 }} />\n {config.dataKeys.map(\n ({ key, name, color }: { key: string; name: string; color: string }) => {\n return (\n <Bar dataKey={key} fill={color ?? '#4caf50'} name={name} key={key} radius={2} />\n );\n },\n )}\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n </BarChart>\n );\n case 'line':\n config.dataKeys = config.dataKeys || [];\n\n return (\n <LineChart data={data} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n {config.dataKeys.map(\n ({ key, name, color }: { key: string; name: string; color: string }) => {\n return (\n <Line\n type=\"monotone\"\n dataKey={key}\n stroke={color ?? '#4caf50'}\n name={name}\n key={key}\n />\n );\n },\n )}\n <Legend align=\"left\" />\n </LineChart>\n );\n default:\n return (\n <PieChart>\n {data.length >= 20 && (\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n )}\n <Pie\n data={data}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n data.length < 20\n ? ({ name, percent }: { name: string; percent: number; }) => `${name}: ${(percent * 100).toFixed(0)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n }\n}\n\nexport function renderChart(props: any): JSX.Element {\n const { isEditable = false, gjsModel, performInteraction = () => Promise.resolve({}), ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\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 gjsModel.on('change:componentProps', () => {\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...gjsModel.get('componentProps'), // Merge in new componentProps\n }));\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\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 colors = getNColors(chartData.length);\n\n for (let i = 0; i < chartData.length; i++) {\n const data = chartData[i];\n\n if (!data.fill) {\n data.fill = colors[i];\n }\n }\n } else if (!config.color) {\n config.color = baseColors[Math.floor(Math.random() * baseColors.length)];\n }\n\n let width: number | undefined = undefined;\n 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 totalDataPoints = chartData.length * Math.max(1, config.dataKeys.length);\n \n if (totalDataPoints > 15) {\n width =\n totalDataPoints * 20 +\n config.dataKeys.length * 8 * chartData.length +\n chartData.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 totalDataPoints = chartData.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 chartUi = (attributes.interactionApiInProgress || attributes.loading) ? (\n <ChartLoader />\n ) : !chartData ? (\n renderNoDataFallback()\n ) : (\n <React.Fragment>\n {(chartType === 'bar' || chartType === 'line') && totalDataPoints > 15 && width && (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 />\n </Card>\n );\n}\n\nexport function renderTable(props: any): JSX.Element {\n const { isEditable = false, gjsModel, performInteraction = () => {}, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\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(\n Object.entries(cleaned).filter(([key]) => dataKeys.includes(key))\n );\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(`[data-table-id=\"${tableId}\"]`) as HTMLElement;\n \n if (tableElement) {\n const headerElement = tableElement.querySelector('[data-slot=\"card-header\"]') 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 = 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(`[data-table-id=\"${tableId}\"]`) as HTMLElement;\n\n if (!tableElement && window.parent !== window) {\n tableElement = window.parent.document.querySelector(`[data-table-id=\"${tableId}\"]`) 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, data.length);\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 gjsModel.on('change:componentProps', () => {\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...gjsModel.get('componentProps'), // Merge in new componentProps\n }));\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const parsedData = (() => {\n if (typeof data === 'object' && data !== null && !Array.isArray(data) && (data as any).name === '__peak_placeholder') {\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 data-slot=\"bodyContent\" contentEditable={false} className=\"flex-1 flex flex-col overflow-hidden\">\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 </CardContent>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n tableActions={actions}\n firstRowData={data && data.length > 0 ? data[0] : {}}\n isVisible={isEditable}\n />\n </Card>\n );\n}\n\nexport function renderTab(props: any): JSX.Element {\n let tabsWidth = 157;\n\n if (props.tabs.length > 4) {\n tabsWidth = 157;\n }\n\n return (\n <Tabs defaultValue={props.defaultValue}>\n <div className=\"text-center mb-4\">\n <TabsList className=\"bg-[#F9F9FE] border border-[#D4D5DE] p-1 rounded-lg h-auto\">\n {props.tabs.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 </TabsList>\n </div>\n {props.tabs.map((tab: string) => (\n <TabsContent value={tab} className=\"tabs-content\" key={tab} />\n ))}\n </Tabs>\n );\n}\n\nexport function renderMarkdown(props: any): JSX.Element {\n const { isEditable = false, gjsModel, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n gjsModel.on('change:componentProps', () => {\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...gjsModel.get('componentProps'), // Merge in new componentProps\n }));\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const [isEditing, setIsEditing] = useState(false);\n const editRef = useRef<HTMLDivElement>(null);\n\n const startEditing = () => {\n setIsEditing(true);\n setTimeout(() => {\n setupEditor();\n }, 0);\n };\n\n const setupEditor = () => {\n if (!editRef.current) {\n return;\n }\n\n const editor = editRef.current;\n editor.innerHTML = '';\n editor.textContent = allData.summaryText;\n editor.focus();\n };\n\n // Save changes and exit editing mode\n const saveChanges = () => {\n if (!editRef.current) {\n return;\n }\n\n const content = editRef.current.innerText || '';\n setAllData((prev: Record<string, any>) => ({\n ...prev,\n summaryText: content,\n }));\n setIsEditing(false);\n editRef.current.innerHTML = '';\n };\n\n const markdownStyles = {\n ul: { props: { className: 'list-disc' } },\n h1: { props: { className: 'text-4xl font-bold leading-[4rem]' } },\n h2: { props: { className: 'text-3xl font-bold leading-[3rem]' } },\n h3: { props: { className: 'text-2xl font-bold leading-[2rem]' } },\n h4: { props: { className: 'text-xl font-bold leading-[2.5rem]' } },\n h5: { props: { className: 'text-lg font-bold leading-[2.5rem]' } },\n h6: { props: { className: 'text-base font-bold leading-[2rem]' } },\n };\n\n if (attributes.loading) {\n return <MarkdownLoader />\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 />\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 />\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}>\n {renderActionCard(props)}\n </ComponentWrapper>\n);\n\nconst renderButtonWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={props}>\n {renderButton(props)}\n </ComponentWrapper>\n);\n\nconst renderCardWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={props}>\n {renderCard(props)}\n </ComponentWrapper>\n);\n\nconst renderChartWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={props}>\n {renderChart(props)}\n </ComponentWrapper>\n);\n\nconst renderFilterWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={props}>\n {renderFilter(props)}\n </ComponentWrapper>\n);\n\nconst renderMarkdownWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={props}>\n {renderMarkdown(props)}\n </ComponentWrapper>\n);\n\nconst renderSearchWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={props}>\n {renderSearch(props)}\n </ComponentWrapper>\n);\n\nconst renderTableWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={props}>\n {renderTable(props)}\n </ComponentWrapper>\n);\n\nconst renderTabWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={props}>\n {renderTab(props)}\n </ComponentWrapper>\n);\n\n\nexport function getRenderers(): Record<string, (props: any) => JSX.Element> {\n return {\n ActionCard: renderActionCardWithWrapper,\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","useRef","renderNoDataFallback","CircleAlert","TrendingDown","TrendingUp","ShoppingCart","ChartBarBig","Tag","MapPin","StyledInfoButton","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","getIconFromString","iconString","lowerIconString","toLowerCase","matchingKey","Object","keys","find","key","getNColors","n","_iterator","_createForOfIteratorHelperLoose","_step","done","baseColor","value","push","scale","mode","getOneColor","existing","color","base","Math","floor","random","length","selectedColorIndex","includes","selectedColors","i","renderActionCard","props","gjsModel","rest","_objectWithoutPropertiesLoose","_excluded","_useState","_extends","allData","setAllData","_allData$headerConten","headerContent","icon","_allData$bodyContent","bodyContent","_useState2","get","setAttributes","on","prevData","defaultClasses","className","style","backgroundColor","isEditable","contentEditable","children","renderCard","_props$isEditable","_props$performInterac","performInteraction","Promise","resolve","_excluded2","_useState3","headerDescription","footerContent","footerClass","footerIcon","contentMetadata","contentMetadataClass","_useState4","attributes","defaultFooterClasses","defaultContentMetadataClasses","mergedCardClassName","mergedFooterClassName","mergedContentMetadataClassName","getCardContent","interactionApiInProgress","loading","Fragment","componentId","position","isVisible","renderChartComponent","chartType","data","config","cursor","content","hideLabel","dataKey","nameKey","innerRadius","strokeWidth","label","_ref","name","percent","toFixed","undefined","labelLine","dataKeys","chartUi","vertical","xAxis","align","wrapperStyle","marginLeft","map","_ref2","fill","radius","indicator","_ref3","type","stroke","_ref4","renderChart","_props$isEditable2","_props$performInterac2","_excluded3","_useState5","_useState6","containerRef","_useState7","containerWidth","setContainerWidth","updateContainerWidth","current","offsetWidth","window","addEventListener","removeEventListener","_allData$config","_allData$chartType","_allData$chartData","chartData","_allData$title","title","_allData$subTitle","subTitle","mergedClasses","width","totalDataPoints","getResponsiveConfig","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","Array","isArray","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","isLoading","onSort","otherProps","tableActions","firstRowData","renderTab","tabsWidth","tabs","defaultValue","tab","fontFamily","fontWeight","fontSize","lineHeight","letterSpacing","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","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","componentProps","renderButtonWithWrapper","renderCardWithWrapper","renderChartWithWrapper","renderFilterWithWrapper","renderMarkdownWithWrapper","renderSearchWithWrapper","renderTableWithWrapper","renderTabWithWrapper","getRenderers","ActionCard","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, JSX, useRef } from 'react';\nimport { renderNoDataFallback } from './extra'\nimport { CircleAlert, TrendingDown, TrendingUp, ShoppingCart, ChartBarBig, Tag,MapPin } from 'lucide-react';\nimport { StyledInfoButton } from './styled-info-button';\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 {ChartContainer, ChartTooltip, ChartTooltipContent,} 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 = (el: HTMLElement): {\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\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\n for (const baseColor of baseColors) {\n // eslint-disable-next-line import/no-named-as-default-member\n colors.push(chroma.scale(baseColor).mode('lab').colors(n));\n }\n\n function getOneColor(existing: Array<string>) {\n let color: null | string = null;\n\n do {\n const base = colors[Math.floor(Math.random() * colors.length)];\n const selectedColorIndex = Math.floor(Math.random() * base.length);\n color = base[selectedColorIndex];\n } while (existing.includes(color));\n\n return color as string;\n }\n\n const selectedColors: Array<string> = [];\n\n for (let i = 0; i < n; i++) {\n selectedColors.push(getOneColor(selectedColors));\n }\n\n return selectedColors;\n}\n\n/* TODO: Loader remains */\nexport function renderActionCard(props: any): JSX.Element {\n const { gjsModel, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const {\n headerContent = 'Default action card title',\n icon,\n bodyContent = 'Default body content. Click to edit.',\n } = allData;\n\n const [, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n gjsModel.on('change:componentProps', () => {\n setAllData((prevData: any) => ({\n ...prevData, \n ...gjsModel.get('componentProps'),\n }));\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const defaultClasses = '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 {!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 { isEditable = false, gjsModel, performInteraction = () => Promise.resolve({}), ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const {\n headerContent,\n headerDescription,\n bodyContent,\n footerContent,\n footerClass,\n footerIcon,\n contentMetadata,\n contentMetadataClass,\n className,\n } = allData;\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n gjsModel.on('change:componentProps', () => {\n setAllData((prevData: any) => ({\n ...prevData,\n ...gjsModel.get('componentProps'),\n }));\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const defaultClasses = 'bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none';\n const defaultFooterClasses = footerContent ? 'text-sm bg-pink-50 text-pink-900 shadow-sm' : 'text-sm';\n const defaultContentMetadataClasses = 'text-xs';\n const mergedCardClassName = className ? cn(defaultClasses, className) : defaultClasses;\n const mergedFooterClassName = footerClass\n ? cn(defaultFooterClasses, footerClass)\n : defaultFooterClasses;\n const mergedContentMetadataClassName = contentMetadataClass\n ? cn(defaultContentMetadataClasses, contentMetadataClass)\n : defaultContentMetadataClasses;\n\n function getCardContent() {\n if (attributes.interactionApiInProgress || attributes.loading) {\n return (\n <CardContent>\n <CardLoader />\n </CardContent>\n );\n }\n\n return (\n <React.Fragment>\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"headerContent\" contentEditable={isEditable} className=\"text-lg\">\n {headerContent}\n </CardTitle>\n <CardDescription\n data-slot=\"headerDescription\"\n contentEditable={isEditable}\n className=\"text-sm\"\n >\n {headerDescription}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n\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 <CardContent data-slot=\"bodyContent\" contentEditable={false} className=\"flex-grow\">\n <div className=\"text-3xl font-semibold truncate\">{bodyContent}</div>\n {contentMetadata && (\n <div className={mergedContentMetadataClassName} style={{ color: '#2A44D4' }}>\n {contentMetadata}\n </div>\n )}\n </CardContent>\n )}\n\n <CardFooter\n data-slot=\"footerContent\"\n contentEditable={isEditable}\n className={cn(mergedFooterClassName)}\n >\n {footerIcon && (\n <span className=\"mr-2\" aria-hidden=\"true\">\n {footerIcon}\n </span>\n )}\n {footerContent}\n </CardFooter>\n </React.Fragment>\n );\n }\n\n return (\n <Card {...rest} className={`${mergedCardClassName} relative`}>\n {getCardContent()}\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n />\n </Card>\n );\n}\n\nfunction renderChartComponent(chartType: string, data: any, config: any): JSX.Element {\n if (!data || data.length === 0) {\n return renderNoDataFallback();\n }\n\n switch (chartType) {\n case 'pie':\n return (\n <PieChart>\n {data.length >= 20 && (\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n )}\n <Pie\n data={data}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n data.length < 20\n ? ({ name, percent }: { name: string; percent: number; }) => `${name}: ${(percent * 100).toFixed(0)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n case 'bar':\n config.dataKeys = config.dataKeys || [];\n\n return (\n <BarChart data={data} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <Legend align=\"left\" wrapperStyle={{ marginLeft: 20 }} />\n {config.dataKeys.map(\n ({ key, name, color }: { key: string; name: string; color: string }) => {\n return (\n <Bar dataKey={key} fill={color ?? '#4caf50'} name={name} key={key} radius={2} />\n );\n },\n )}\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n </BarChart>\n );\n case 'line':\n config.dataKeys = config.dataKeys || [];\n\n return (\n <LineChart data={data} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n {config.dataKeys.map(\n ({ key, name, color }: { key: string; name: string; color: string }) => {\n return (\n <Line\n type=\"monotone\"\n dataKey={key}\n stroke={color ?? '#4caf50'}\n name={name}\n key={key}\n />\n );\n },\n )}\n <Legend align=\"left\" />\n </LineChart>\n );\n default:\n return (\n <PieChart>\n {data.length >= 20 && (\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n )}\n <Pie\n data={data}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n data.length < 20\n ? ({ name, percent }: { name: string; percent: number; }) => `${name}: ${(percent * 100).toFixed(0)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n }\n}\n\nexport function renderChart(props: any): JSX.Element {\n const { isEditable = false, gjsModel, performInteraction = () => Promise.resolve({}), ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\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 gjsModel.on('change:componentProps', () => {\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...gjsModel.get('componentProps'), // Merge in new componentProps\n }));\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\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 colors = getNColors(chartData.length);\n\n for (let i = 0; i < chartData.length; i++) {\n const data = chartData[i];\n\n if (!data.fill) {\n data.fill = colors[i];\n }\n }\n } else if (!config.color) {\n config.color = baseColors[Math.floor(Math.random() * baseColors.length)];\n }\n\n let width: number | undefined = undefined;\n 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 totalDataPoints = chartData.length * Math.max(1, config.dataKeys.length);\n \n if (totalDataPoints > 15) {\n width =\n totalDataPoints * 20 +\n config.dataKeys.length * 8 * chartData.length +\n chartData.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 totalDataPoints = chartData.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 chartUi = (attributes.interactionApiInProgress || attributes.loading) ? (\n <ChartLoader />\n ) : !chartData ? (\n renderNoDataFallback()\n ) : (\n <React.Fragment>\n {(chartType === 'bar' || chartType === 'line') && totalDataPoints > 15 && width && (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 />\n </Card>\n );\n}\n\nexport function renderTable(props: any): JSX.Element {\n const { isEditable = false, gjsModel, performInteraction = () => {}, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\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(\n Object.entries(cleaned).filter(([key]) => dataKeys.includes(key))\n );\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(`[data-table-id=\"${tableId}\"]`) as HTMLElement;\n \n if (tableElement) {\n const headerElement = tableElement.querySelector('[data-slot=\"card-header\"]') 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 = 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(`[data-table-id=\"${tableId}\"]`) as HTMLElement;\n\n if (!tableElement && window.parent !== window) {\n tableElement = window.parent.document.querySelector(`[data-table-id=\"${tableId}\"]`) 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, data.length);\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 gjsModel.on('change:componentProps', () => {\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...gjsModel.get('componentProps'), // Merge in new componentProps\n }));\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const parsedData = (() => {\n if (typeof data === 'object' && data !== null && !Array.isArray(data) && (data as any).name === '__peak_placeholder') {\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 data-slot=\"bodyContent\" contentEditable={false} className=\"flex-1 flex flex-col overflow-hidden\">\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 </CardContent>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n tableActions={actions}\n firstRowData={data && data.length > 0 ? data[0] : {}}\n isVisible={isEditable}\n />\n </Card>\n );\n}\n\nexport function renderTab(props: any): JSX.Element {\n let tabsWidth = 157;\n\n if (props.tabs.length > 4) {\n tabsWidth = 157;\n }\n\n return (\n <Tabs defaultValue={props.defaultValue}>\n <div className=\"text-center mb-4\">\n <TabsList className=\"bg-[#F9F9FE] border border-[#D4D5DE] p-1 rounded-lg h-auto\">\n {props.tabs.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 </TabsList>\n </div>\n {props.tabs.map((tab: string) => (\n <TabsContent value={tab} className=\"tabs-content\" key={tab} />\n ))}\n </Tabs>\n );\n}\n\nexport function renderMarkdown(props: any): JSX.Element {\n const { isEditable = false, gjsModel, ...rest } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n gjsModel.on('change:componentProps', () => {\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...gjsModel.get('componentProps'), // Merge in new componentProps\n }));\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const [isEditing, setIsEditing] = useState(false);\n const editRef = useRef<HTMLDivElement>(null);\n\n const startEditing = () => {\n setIsEditing(true);\n setTimeout(() => {\n setupEditor();\n }, 0);\n };\n\n const setupEditor = () => {\n if (!editRef.current) {\n return;\n }\n\n const editor = editRef.current;\n editor.innerHTML = '';\n editor.textContent = allData.summaryText;\n editor.focus();\n };\n\n // Save changes and exit editing mode\n const saveChanges = () => {\n if (!editRef.current) {\n return;\n }\n\n const content = editRef.current.innerText || '';\n setAllData((prev: Record<string, any>) => ({\n ...prev,\n summaryText: content,\n }));\n setIsEditing(false);\n editRef.current.innerHTML = '';\n };\n\n const markdownStyles = {\n ul: { props: { className: 'list-disc' } },\n h1: { props: { className: 'text-4xl font-bold leading-[4rem]' } },\n h2: { props: { className: 'text-3xl font-bold leading-[3rem]' } },\n h3: { props: { className: 'text-2xl font-bold leading-[2rem]' } },\n h4: { props: { className: 'text-xl font-bold leading-[2.5rem]' } },\n h5: { props: { className: 'text-lg font-bold leading-[2.5rem]' } },\n h6: { props: { className: 'text-base font-bold leading-[2rem]' } },\n };\n\n if (attributes.loading) {\n return <MarkdownLoader />\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 />\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 />\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}>\n {renderActionCard(props)}\n </ComponentWrapper>\n);\n\nconst renderButtonWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={props}>\n {renderButton(props)}\n </ComponentWrapper>\n);\n\nconst renderCardWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={props}>\n {renderCard(props)}\n </ComponentWrapper>\n);\n\nconst renderChartWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={props}>\n {renderChart(props)}\n </ComponentWrapper>\n);\n\nconst renderFilterWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={props}>\n {renderFilter(props)}\n </ComponentWrapper>\n);\n\nconst renderMarkdownWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={props}>\n {renderMarkdown(props)}\n </ComponentWrapper>\n);\n\nconst renderSearchWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={props}>\n {renderSearch(props)}\n </ComponentWrapper>\n);\n\nconst renderTableWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={props}>\n {renderTable(props)}\n </ComponentWrapper>\n);\n\nconst renderTabWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={props}>\n {renderTab(props)}\n </ComponentWrapper>\n);\n\n\nexport function getRenderers(): Record<string, (props: any) => JSX.Element> {\n return {\n ActionCard: renderActionCardWithWrapper,\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":[]}
|