@peak-ai/canvas 1.4.37-rc.1 → 1.4.37-rc.2
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 +1 -3
- package/GrapesjsCanvas.js.map +1 -1
- package/package.json +1 -1
- package/plugins/helpers/render-components.js +1 -1
- package/plugins/helpers/render-components.js.map +1 -1
- package/plugins/helpers/styled-info-button.js +4 -4
- package/plugins/helpers/styled-info-button.js.map +1 -1
- package/types/grapesjs-tailwind.d.js.map +1 -1
package/GrapesjsCanvas.js
CHANGED
|
@@ -7,7 +7,5 @@ var filteredProps=_extends({},newProps);Object.keys(filteredProps).forEach(funct
|
|
|
7
7
|
var isActionsComponent=model.get("componentName")==="Actions";var hasValidActionsData=parsedNewProps.actions&&parsedNewProps.actions!==null&&Array.isArray(parsedNewProps.actions)&&parsedNewProps.actions.length>0;if(isActionsComponent&&hasValidActionsData){var _model$components$at;var isAlreadyExpanded=model.components().length>0&&((_model$components$at=model.components().at(0))==null?void 0:_model$components$at.get("componentName"))==="ActionCard";if(!isAlreadyExpanded){expandActionsComponent(model,parsedNewProps.actions);return true}}model.set("componentProps",_extends({},model.get("componentProps"),parsedNewProps));model.set("attributes",_extends({},model.get("attributes"),newAttributes));return true}useEffect(function(){newDataNotifier(notificationHandler)},[]);function performInteractionWrapper(_x){return _performInteractionWrapper.apply(this,arguments)}function _performInteractionWrapper(){_performInteractionWrapper=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(payload){var _editorInstance$curre3;var updatedJson,apiResponse,componentUpdates;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:_context4.next=2;return(_editorInstance$curre3=editorInstance.current)==null?void 0:_editorInstance$curre3.store();case 2:updatedJson=_context4.sent;setInteracting(renderedComponents.current,payload.affectedComponents,true);_context4.prev=4;_context4.next=7;return performInteraction(_extends({},payload,{json:updatedJson}));case 7:apiResponse=_context4.sent;componentUpdates=apiResponse||{};Object.entries(componentUpdates).forEach(function(_ref6){var key=_ref6[0],value=_ref6[1];var model=renderedComponents.current[key];if(model){model.set("attributes",_extends({},model.get("attributes"),{error:undefined}));model.set("componentProps",_extends({},model.get("componentProps"),value,{error:undefined,isMissing:undefined}))}});return _context4.abrupt("return",componentUpdates);case 13:_context4.prev=13;_context4.t0=_context4["catch"](4);payload.affectedComponents.forEach(function(componentId){var model=renderedComponents.current[componentId];if(model){var errorMessage=_context4.t0 instanceof Error?_context4.t0.message:"Something went wrong. Please try again.";model.set("attributes",_extends({},model.get("attributes"),{error:errorMessage}));model.set("componentProps",_extends({},model.get("componentProps"),{error:errorMessage,isMissing:undefined}))}});throw _context4.t0;case 17:_context4.prev=17;setInteracting(renderedComponents.current,payload.affectedComponents,false);return _context4.finish(17);case 20:case"end":return _context4.stop()}},_callee4,null,[[4,13,17,20]])}));return _performInteractionWrapper.apply(this,arguments)}useEffect(function(){if(!editorRef.current){return function(){// no op
|
|
8
8
|
}}if(editorInstance.current){editorInstance.current.destroy();editorInstance.current=null;isEditorAliveRef.current=false}var currentMode=mode;var editor=grapesjs.init({container:editorRef.current,height:"100%",plugins:[tailwind,createGrapesjsShadcnGenericPlugin(currentMode,performInteractionWrapper,renderedComponents.current,setHasChanged)],storageManager:{type:"none"},richTextEditor:{actions:["bold","italic","underline","strikethrough"]},canvas:{customBadgeLabel:function customBadgeLabel(component){var tagName=component.get("tagName");return tagName==="body"?"":tagName||""}}});isEditorAliveRef.current=true;var injectionAttempts=0;function injectStylesEarly(){var _editor$Canvas;var iframeDoc=(_editor$Canvas=editor.Canvas)==null||_editor$Canvas.getDocument==null?void 0:_editor$Canvas.getDocument();if(iframeDoc&&iframeDoc.head){if(!iframeDoc.head.querySelector("[data-grapesjs-styles]")){var style=iframeDoc.createElement("style");var fullCss="\n "+tailwindCompiledCss+"\n "+datePickerCss+"\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n ";style.innerHTML=fullCss;style.setAttribute("type","text/css");style.setAttribute("data-grapesjs-styles","true");iframeDoc.head.appendChild(style)}}else if(injectionAttempts<50){injectionAttempts+=1;requestAnimationFrame(injectStylesEarly)}}requestAnimationFrame(injectStylesEarly);function checkDirty(){return _checkDirty.apply(this,arguments)}function _checkDirty(){_checkDirty=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(){var stored,newJson;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:if(!(isStreamingRef.current||isSystemUpdateRef.current)){_context2.next=2;break}return _context2.abrupt("return");case 2:if(!(!isEditorAliveRef.current||!editorInstance.current)){_context2.next=4;break}return _context2.abrupt("return");case 4:stored=null;_context2.prev=5;_context2.next=8;return editorInstance.current.store();case 8:stored=_context2.sent;_context2.next=14;break;case 11:_context2.prev=11;_context2.t0=_context2["catch"](5);return _context2.abrupt("return");case 14:if(stored){_context2.next=16;break}return _context2.abrupt("return");case 16:newJson=JSON.stringify(stored);if(newJson!==lastJsonRef.current){setHasChanged(true);lastJsonRef.current=newJson}case 18:case"end":return _context2.stop()}},_callee2,null,[[5,11]])}));return _checkDirty.apply(this,arguments)}var debouncedCheckDirty=function(){var timeout=null;return function(){if(timeout){clearTimeout(timeout)}timeout=setTimeout(checkDirty,200)}}();["component:add","component:remove","component:update:content","style:update","component:drag:end","rte:change"].forEach(function(evt){editor.on(evt,debouncedCheckDirty)});editor.on("component:update",function(model,prop){if(["attributes","componentProps","content"].includes(prop)){debouncedCheckDirty()}});// Tailwind CSS rules aren't fully added to our component
|
|
9
9
|
// So, adding them from here!
|
|
10
|
-
editor.on("load",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var canvasDoc,canvasHead,style,fullCss;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:canvasDoc=editor.Canvas.getDocument();canvasHead=canvasDoc.head;if(!canvasHead.querySelector("[data-grapesjs-styles]")){style=canvasDoc.createElement("style");fullCss="\n "+tailwindCompiledCss+"\n "+datePickerCss+"\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n ";style.innerHTML=fullCss;style.setAttribute("type","text/css");style.setAttribute("data-grapesjs-styles","true");canvasHead.appendChild(style)}isSystemUpdateRef.current=true;_context.t0=JSON;_context.next=7;return editor.store();case 7:_context.t1=_context.sent;lastJsonRef.current=_context.t0.stringify.call(_context.t0,_context.t1);isSystemUpdateRef.current=false;case 10:case"end":return _context.stop()}},_callee)})));editorInstance.current=editor;if(setEditor){setEditor(editor)}TypesToRegister.forEach(function(_ref4){var type=_ref4.type,tagName=_ref4.tagName;if(!editor.DomComponents.getType(type)){editor.DomComponents.addType(type,{model:{defaults:{tagName:tagName}},view:{}})}});return function cleanup(){editor.destroy();isEditorAliveRef.current=false}},[]);useEffect(function(){var _json$pages,_json$pages$0$frames;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 _editorInstance$curre,_editorInstance$curre2;isSystemUpdateRef.current=true;var raw=json.pages[0].frames[0].component;var processed=expandActions(raw);(_editorInstance$curre=editorInstance.current)==null||_editorInstance$curre.setComponents(processed);var cssText=convertStyles(json.styles||[]);(_editorInstance$curre2=editorInstance.current)==null||_editorInstance$curre2.setStyle(cssText);setTimeout(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(){return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:if(!editorInstance.current){_context3.next=7;break}_context3.t0=JSON;_context3.next=4;return editorInstance.current.store();case 4:_context3.t1=_context3.sent;lastJsonRef.current=_context3.t0.stringify.call(_context3.t0,_context3.t1);isSystemUpdateRef.current=false;case 7:case"end":return _context3.stop()}},_callee3)})),100)}},[json]);useEffect(function(){if(mode&&editorInstance.current){isSystemUpdateRef.current=true;setTimeout(function(){setComponentProperties(editorInstance.current,mode==="preview")
|
|
11
|
-
setTimeout(function(){isSystemUpdateRef.current=false},50);// Short delay to ensure the operation completes
|
|
12
|
-
},0)}},[mode]);return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(StyledEditor,{}),/*#__PURE__*/_jsx("div",{ref:editorRef,id:"grapesjs-editor"})]})}export default GrapesjsCanvas;
|
|
10
|
+
editor.on("load",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var canvasDoc,canvasHead,style,fullCss;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:canvasDoc=editor.Canvas.getDocument();canvasHead=canvasDoc.head;if(!canvasHead.querySelector("[data-grapesjs-styles]")){style=canvasDoc.createElement("style");fullCss="\n "+tailwindCompiledCss+"\n "+datePickerCss+"\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n ";style.innerHTML=fullCss;style.setAttribute("type","text/css");style.setAttribute("data-grapesjs-styles","true");canvasHead.appendChild(style)}isSystemUpdateRef.current=true;_context.t0=JSON;_context.next=7;return editor.store();case 7:_context.t1=_context.sent;lastJsonRef.current=_context.t0.stringify.call(_context.t0,_context.t1);isSystemUpdateRef.current=false;case 10:case"end":return _context.stop()}},_callee)})));editorInstance.current=editor;if(setEditor){setEditor(editor)}TypesToRegister.forEach(function(_ref4){var type=_ref4.type,tagName=_ref4.tagName;if(!editor.DomComponents.getType(type)){editor.DomComponents.addType(type,{model:{defaults:{tagName:tagName}},view:{}})}});return function cleanup(){editor.destroy();isEditorAliveRef.current=false}},[]);useEffect(function(){var _json$pages,_json$pages$0$frames;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 _editorInstance$curre,_editorInstance$curre2;isSystemUpdateRef.current=true;var raw=json.pages[0].frames[0].component;var processed=expandActions(raw);(_editorInstance$curre=editorInstance.current)==null||_editorInstance$curre.setComponents(processed);var cssText=convertStyles(json.styles||[]);(_editorInstance$curre2=editorInstance.current)==null||_editorInstance$curre2.setStyle(cssText);setTimeout(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(){return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:if(!editorInstance.current){_context3.next=7;break}_context3.t0=JSON;_context3.next=4;return editorInstance.current.store();case 4:_context3.t1=_context3.sent;lastJsonRef.current=_context3.t0.stringify.call(_context3.t0,_context3.t1);isSystemUpdateRef.current=false;case 7:case"end":return _context3.stop()}},_callee3)})),100)}},[json]);useEffect(function(){if(mode&&editorInstance.current){isSystemUpdateRef.current=true;setTimeout(function(){setComponentProperties(editorInstance.current,mode==="preview");setTimeout(function(){isSystemUpdateRef.current=false},50)},0)}},[mode]);return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(StyledEditor,{}),/*#__PURE__*/_jsx("div",{ref:editorRef,id:"grapesjs-editor"})]})}export default GrapesjsCanvas;
|
|
13
11
|
//# sourceMappingURL=GrapesjsCanvas.js.map
|
package/GrapesjsCanvas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GrapesjsCanvas.js","names":["React","useEffect","useRef","grapesjs","tailwind","TypesToRegister","toKebabCase","tailwindCompiledCss","datePickerCss","createGrapesjsShadcnGenericPlugin","StyledEditor","jsx","_jsx","jsxs","_jsxs","setComponentProperties","editor","isPreview","setPropertiesRecursively","comp","set","editable","draggable","droppable","getName","selectable","hoverable","highlightable","copyable","resizable","removable","badgable","_extends","get","isEditable","attributes","command","components","forEach","runCommand","stopCommand","wrapper","getWrapper","find","convertStyles","stylesArray","map","block","selectors","Array","isArray","join","declarations","Object","entries","style","_ref","prop","value","createActionCardConfig","action","icon","title","description","type","componentName","componentProps","headerContent","bodyContent","expandActions","node","_node$componentProps","actions","length","classes","concat","undefined","i","id","setInteracting","renderedComponents","inProgress","component","componentId","showLoader","gjsModel","interactionApiInProgress","expandActionsComponent","model","append","addClass","GrapesjsCanvas","_ref2","json","_ref2$mode","mode","setEditor","performInteraction","_ref2$newDataNotifier","newDataNotifier","_ref2$setHasChanged","setHasChanged","isStreaming","editorRef","editorInstance","isStreamingRef","isSystemUpdateRef","lastJsonRef","isEditorAliveRef","current","notificationHandler","props","_props$newProps","newProps","_props$newAttributes","newAttributes","filteredProps","keys","key","name","parsedNewProps","pagination","isActionsComponent","hasValidActionsData","_model$components$at","isAlreadyExpanded","at","performInteractionWrapper","_x","_performInteractionWrapper","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee4","payload","_editorInstance$curre3","updatedJson","apiResponse","componentUpdates","wrap","_callee4$","_context4","prev","next","store","sent","affectedComponents","_ref6","error","isMissing","abrupt","t0","errorMessage","Error","message","finish","stop","destroy","currentMode","init","container","height","plugins","storageManager","richTextEditor","canvas","customBadgeLabel","tagName","injectionAttempts","injectStylesEarly","_editor$Canvas","iframeDoc","Canvas","getDocument","head","querySelector","createElement","fullCss","innerHTML","setAttribute","appendChild","requestAnimationFrame","checkDirty","_checkDirty","_callee2","stored","newJson","_callee2$","_context2","JSON","stringify","debouncedCheckDirty","timeout","clearTimeout","setTimeout","evt","on","includes","_callee","canvasDoc","canvasHead","_callee$","_context","t1","call","_ref4","DomComponents","getType","addType","defaults","view","cleanup","_json$pages","_json$pages$0$frames","pages","frames","_editorInstance$curre","_editorInstance$curre2","raw","processed","setComponents","cssText","styles","setStyle","_callee3","_callee3$","_context3","Fragment","children","ref"],"sources":["../src/GrapesjsCanvas.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useRef } from 'react';\n// eslint-disable-next-line import/no-named-as-default\nimport grapesjs, { Component, Editor } from 'grapesjs';\nimport 'grapesjs/dist/css/grapes.min.css';\nimport tailwind from 'grapesjs-tailwind';\n\nimport { TypesToRegister } from './constants';\nimport { toKebabCase } from './helpers';\nimport { tailwindCompiledCss } from './helpers/css';\nimport { datePickerCss } from './helpers/date-picker';\nimport { createGrapesjsShadcnGenericPlugin } from './plugins/grapejs-plugin';\nimport { StyledEditor } from './index.styles';\n\ntype NotificationHandler = (newData: {\n componentId: string;\n newProps: Record<string, any>;\n newAttributes: Record<string, any>;\n}) => boolean;\n\ntype GrapesjsCanvasProps = {\n json: any;\n mode?: 'editor' | 'preview';\n setEditor: (editor: Editor) => void;\n performInteraction: (payload: Record<string, any>) => Promise<Record<string, any> | undefined>;\n newDataNotifier: (notifHandler: NotificationHandler) => void;\n setHasChanged: (hasChanged: boolean) => void;\n isStreaming: boolean;\n};\n\nfunction setComponentProperties(editor: Editor, isPreview: boolean) {\n function setPropertiesRecursively(comp: Component) {\n comp.set({\n editable: !isPreview,\n draggable: !isPreview,\n droppable: !isPreview && comp.getName() !== 'Shadcn-generic',\n selectable: !isPreview,\n hoverable: !isPreview,\n highlightable: !isPreview,\n copyable: false,\n resizable: false,\n removable: !isPreview,\n badgable: false,\n });\n\n comp.set('attributes', {\n ...(comp.get('attributes') || {}),\n isEditable: !isPreview,\n });\n\n if (!isPreview) {\n comp.set('toolbar', [\n { attributes: { class: 'fa fa-arrows' }, command: 'tlb-move' },\n { attributes: { class: 'fa fa-trash' }, command: 'tlb-delete' },\n ]);\n }\n\n comp.components().forEach(setPropertiesRecursively);\n }\n\n if (isPreview) {\n editor.runCommand('core:preview');\n } else {\n editor.stopCommand('core:preview');\n }\n\n const wrapper = editor.getWrapper();\n wrapper?.find('*').forEach(setPropertiesRecursively);\n}\n\nfunction convertStyles(stylesArray: any[]): string {\n return stylesArray\n .map((block) => {\n const selectors = Array.isArray(block.selectors)\n ? block.selectors.join(', ')\n : block.selectors;\n const declarations = Object.entries(block.style)\n .map(([prop, value]) => `${toKebabCase(prop)}: ${value};`)\n .join(' ');\n\n return `${selectors} { ${declarations} }`;\n })\n .join('\\n');\n}\n\nfunction createActionCardConfig(action: any): any {\n const { icon, title, description } = action;\n\n return {\n type: 'shadcn-generic',\n componentName: 'ActionCard',\n badgable: false,\n copyable: false,\n removable: true,\n draggable: true,\n componentProps: {\n icon,\n headerContent: title,\n bodyContent: description,\n },\n };\n}\n\nfunction expandActions(node: any): any {\n if (node.type === 'shadcn-generic' && node.componentName === 'Actions') {\n const actions = node.componentProps?.actions;\n\n if (Array.isArray(actions) && actions.length > 0) {\n return {\n ...node,\n type: 'div',\n classes: ['dashboard-cards', ...(node.classes || [])],\n componentName: undefined,\n componentProps: undefined,\n components: actions.map((action: any, i: number) => ({\n ...createActionCardConfig(action),\n id: `${node.id}--action-card-${i}`,\n })),\n };\n }\n\n return node;\n }\n\n if (Array.isArray(node.components)) {\n return {\n ...node,\n components: node.components.map(expandActions),\n };\n }\n\n return node;\n}\n\nfunction setInteracting(\n renderedComponents: Record<string, Component>,\n components: { componentId: string; showLoader: boolean }[],\n inProgress: boolean,\n) {\n components.forEach((component) => {\n const { componentId, showLoader } = component;\n\n if (!showLoader) {\n return;\n }\n\n const gjsModel = renderedComponents[componentId];\n\n if (gjsModel) {\n gjsModel.set('attributes', {\n ...gjsModel.get('attributes'),\n interactionApiInProgress: inProgress,\n });\n }\n });\n}\n\nfunction expandActionsComponent(model: Component, actions: any[]): void {\n model.components('');\n\n actions.forEach((action: any) => {\n model.append(createActionCardConfig(action));\n });\n\n model.set('type', 'div');\n model.addClass('dashboard-cards');\n model.set('componentName', undefined);\n model.set('componentProps', {});\n}\n\nfunction GrapesjsCanvas({\n json,\n mode = 'preview',\n setEditor,\n performInteraction,\n newDataNotifier = () => {\n // no op\n },\n setHasChanged = () => {\n // no op\n },\n isStreaming,\n}: GrapesjsCanvasProps) {\n const editorRef = useRef<HTMLDivElement>(null);\n const editorInstance = useRef<Editor | null>(null);\n const renderedComponents = useRef<Record<string, Component>>({});\n const isStreamingRef = useRef(isStreaming);\n const isSystemUpdateRef = useRef(false);\n const lastJsonRef = useRef<string>('');\n const isEditorAliveRef = useRef(false);\n\n useEffect(() => {\n isStreamingRef.current = isStreaming;\n }, [isStreaming]);\n\n function notificationHandler(\n props: Parameters<NotificationHandler>[0],\n ): ReturnType<NotificationHandler> {\n if (!props) {\n return true;\n }\n\n const { componentId, newProps = {}, newAttributes = {} } = props;\n\n const model = renderedComponents.current[componentId];\n\n if (!model) {\n return false;\n }\n\n // Filter out complex placeholder objects by setting them to null\n // This ensures placeholder values are properly cleared and don't cause stale data issues\n const filteredProps = { ...newProps };\n\n Object.keys(filteredProps).forEach((key) => {\n const value = filteredProps[key];\n\n if (value && typeof value === 'object' && value.name === '__peak_placeholder') {\n filteredProps[key] = null;\n }\n });\n\n const parsedNewProps = {\n ...filteredProps,\n };\n\n if (filteredProps.pagination) {\n parsedNewProps.pagination = {\n ...(model.get('componentProps').pagination || {}),\n ...filteredProps.pagination,\n };\n }\n\n // Handle Actions component: expand into ActionCards when data arrives via streaming\n const isActionsComponent = model.get('componentName') === 'Actions';\n const hasValidActionsData =\n parsedNewProps.actions &&\n parsedNewProps.actions !== null &&\n Array.isArray(parsedNewProps.actions) &&\n parsedNewProps.actions.length > 0;\n\n if (isActionsComponent && hasValidActionsData) {\n const isAlreadyExpanded =\n model.components().length > 0 &&\n model.components().at(0)?.get('componentName') === 'ActionCard';\n\n if (!isAlreadyExpanded) {\n expandActionsComponent(model, parsedNewProps.actions);\n\n return true;\n }\n }\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...parsedNewProps,\n });\n\n model.set('attributes', {\n ...model.get('attributes'),\n ...newAttributes,\n });\n\n return true;\n }\n\n useEffect(() => {\n newDataNotifier(notificationHandler);\n }, []);\n\n async function performInteractionWrapper(payload: Record<string, any>) {\n const updatedJson = await editorInstance.current?.store();\n setInteracting(renderedComponents.current, payload.affectedComponents, true);\n\n try {\n const apiResponse = await performInteraction({\n ...payload,\n json: updatedJson,\n });\n\n const componentUpdates = apiResponse || {};\n\n Object.entries(componentUpdates).forEach(([key, value]) => {\n const model = renderedComponents.current[key];\n\n if (model) {\n model.set('attributes', {\n ...model.get('attributes'),\n error: undefined,\n });\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...value,\n error: undefined,\n isMissing: undefined,\n });\n }\n });\n\n return componentUpdates;\n } catch (error) {\n payload.affectedComponents.forEach((componentId: string) => {\n const model = renderedComponents.current[componentId];\n\n if (model) {\n const errorMessage =\n error instanceof Error ? error.message : 'Something went wrong. Please try again.';\n\n model.set('attributes', {\n ...model.get('attributes'),\n error: errorMessage,\n });\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n error: errorMessage,\n isMissing: undefined,\n });\n }\n });\n\n throw error;\n } finally {\n setInteracting(renderedComponents.current, payload.affectedComponents, false);\n }\n }\n\n useEffect(() => {\n if (!editorRef.current) {\n return () => {\n // no op\n };\n }\n\n if (editorInstance.current) {\n editorInstance.current.destroy();\n editorInstance.current = null;\n isEditorAliveRef.current = false;\n }\n\n const currentMode = mode;\n\n const editor = grapesjs.init({\n container: editorRef.current,\n height: '100%',\n plugins: [\n tailwind,\n createGrapesjsShadcnGenericPlugin(\n currentMode,\n performInteractionWrapper,\n renderedComponents.current,\n setHasChanged,\n ),\n ],\n storageManager: { type: 'none' },\n richTextEditor: {\n actions: ['bold', 'italic', 'underline', 'strikethrough'],\n },\n canvas: {\n customBadgeLabel: (component) => {\n const tagName = component.get('tagName');\n\n return tagName === 'body' ? '' : tagName || '';\n },\n },\n });\n\n isEditorAliveRef.current = true;\n\n let injectionAttempts = 0;\n\n function injectStylesEarly() {\n const iframeDoc = editor.Canvas?.getDocument?.();\n\n if (iframeDoc && iframeDoc.head) {\n if (!iframeDoc.head.querySelector('[data-grapesjs-styles]')) {\n const style = iframeDoc.createElement('style');\n const fullCss = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n `;\n style.innerHTML = fullCss;\n style.setAttribute('type', 'text/css');\n style.setAttribute('data-grapesjs-styles', 'true');\n iframeDoc.head.appendChild(style);\n }\n } else if (injectionAttempts < 50) {\n injectionAttempts += 1;\n requestAnimationFrame(injectStylesEarly);\n }\n }\n\n requestAnimationFrame(injectStylesEarly);\n\n async function checkDirty() {\n if (isStreamingRef.current || isSystemUpdateRef.current) {\n return;\n }\n\n if (!isEditorAliveRef.current || !editorInstance.current) {\n return;\n }\n\n let stored = null;\n\n try {\n stored = await editorInstance.current.store();\n } catch (err) {\n return;\n }\n\n if (!stored) {\n return;\n }\n\n const newJson = JSON.stringify(stored);\n\n if (newJson !== lastJsonRef.current) {\n setHasChanged(true);\n lastJsonRef.current = newJson;\n }\n }\n\n const debouncedCheckDirty = (() => {\n let timeout: NodeJS.Timeout | null = null;\n\n return () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n timeout = setTimeout(checkDirty, 200);\n };\n })();\n\n [\n 'component:add',\n 'component:remove',\n 'component:update:content',\n 'style:update',\n 'component:drag:end',\n 'rte:change',\n ].forEach((evt) => {\n editor.on(evt, debouncedCheckDirty);\n });\n\n editor.on('component:update', (model, prop) => {\n if (['attributes', 'componentProps', 'content'].includes(prop)) {\n debouncedCheckDirty();\n }\n });\n\n // Tailwind CSS rules aren't fully added to our component\n // So, adding them from here!\n editor.on('load', async () => {\n const canvasDoc = editor.Canvas.getDocument();\n const canvasHead = canvasDoc.head;\n\n if (!canvasHead.querySelector('[data-grapesjs-styles]')) {\n const style = canvasDoc.createElement('style');\n const fullCss = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n `;\n style.innerHTML = fullCss;\n style.setAttribute('type', 'text/css');\n style.setAttribute('data-grapesjs-styles', 'true');\n canvasHead.appendChild(style);\n }\n\n isSystemUpdateRef.current = true;\n lastJsonRef.current = JSON.stringify(await editor.store());\n isSystemUpdateRef.current = false;\n });\n\n editorInstance.current = editor;\n\n if (setEditor) {\n setEditor(editor);\n }\n\n TypesToRegister.forEach(({ type, tagName }) => {\n if (!editor.DomComponents.getType(type)) {\n editor.DomComponents.addType(type, {\n model: {\n defaults: { tagName },\n },\n view: {},\n });\n }\n });\n\n return function cleanup() {\n editor.destroy();\n isEditorAliveRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (json && json.pages?.length > 0 && json.pages[0].frames?.length > 0) {\n isSystemUpdateRef.current = true;\n const raw = json.pages[0].frames[0].component;\n const processed = expandActions(raw);\n editorInstance.current?.setComponents(processed);\n\n const cssText = convertStyles(json.styles || []);\n editorInstance.current?.setStyle(cssText);\n\n setTimeout(async () => {\n if (editorInstance.current) {\n lastJsonRef.current = JSON.stringify(await editorInstance.current.store());\n isSystemUpdateRef.current = false;\n }\n }, 100);\n }\n }, [json]);\n\n useEffect(() => {\n if (mode && editorInstance.current) {\n isSystemUpdateRef.current = true;\n\n setTimeout(() => {\n setComponentProperties(editorInstance.current as Editor, mode === 'preview');\n // Reset the flag after the operation completes\n setTimeout(() => {\n isSystemUpdateRef.current = false;\n }, 50); // Short delay to ensure the operation completes\n }, 0);\n }\n }, [mode]);\n\n return (\n <React.Fragment>\n <StyledEditor />\n <div ref={editorRef} id=\"grapesjs-editor\" />\n </React.Fragment>\n );\n}\n\nexport default GrapesjsCanvas;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"GrapesjsCanvas.js","names":["React","useEffect","useRef","grapesjs","tailwind","TypesToRegister","toKebabCase","tailwindCompiledCss","datePickerCss","createGrapesjsShadcnGenericPlugin","StyledEditor","jsx","_jsx","jsxs","_jsxs","setComponentProperties","editor","isPreview","setPropertiesRecursively","comp","set","editable","draggable","droppable","getName","selectable","hoverable","highlightable","copyable","resizable","removable","badgable","_extends","get","isEditable","attributes","command","components","forEach","runCommand","stopCommand","wrapper","getWrapper","find","convertStyles","stylesArray","map","block","selectors","Array","isArray","join","declarations","Object","entries","style","_ref","prop","value","createActionCardConfig","action","icon","title","description","type","componentName","componentProps","headerContent","bodyContent","expandActions","node","_node$componentProps","actions","length","classes","concat","undefined","i","id","setInteracting","renderedComponents","inProgress","component","componentId","showLoader","gjsModel","interactionApiInProgress","expandActionsComponent","model","append","addClass","GrapesjsCanvas","_ref2","json","_ref2$mode","mode","setEditor","performInteraction","_ref2$newDataNotifier","newDataNotifier","_ref2$setHasChanged","setHasChanged","isStreaming","editorRef","editorInstance","isStreamingRef","isSystemUpdateRef","lastJsonRef","isEditorAliveRef","current","notificationHandler","props","_props$newProps","newProps","_props$newAttributes","newAttributes","filteredProps","keys","key","name","parsedNewProps","pagination","isActionsComponent","hasValidActionsData","_model$components$at","isAlreadyExpanded","at","performInteractionWrapper","_x","_performInteractionWrapper","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee4","payload","_editorInstance$curre3","updatedJson","apiResponse","componentUpdates","wrap","_callee4$","_context4","prev","next","store","sent","affectedComponents","_ref6","error","isMissing","abrupt","t0","errorMessage","Error","message","finish","stop","destroy","currentMode","init","container","height","plugins","storageManager","richTextEditor","canvas","customBadgeLabel","tagName","injectionAttempts","injectStylesEarly","_editor$Canvas","iframeDoc","Canvas","getDocument","head","querySelector","createElement","fullCss","innerHTML","setAttribute","appendChild","requestAnimationFrame","checkDirty","_checkDirty","_callee2","stored","newJson","_callee2$","_context2","JSON","stringify","debouncedCheckDirty","timeout","clearTimeout","setTimeout","evt","on","includes","_callee","canvasDoc","canvasHead","_callee$","_context","t1","call","_ref4","DomComponents","getType","addType","defaults","view","cleanup","_json$pages","_json$pages$0$frames","pages","frames","_editorInstance$curre","_editorInstance$curre2","raw","processed","setComponents","cssText","styles","setStyle","_callee3","_callee3$","_context3","Fragment","children","ref"],"sources":["../src/GrapesjsCanvas.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useRef } from 'react';\n// eslint-disable-next-line import/no-named-as-default\nimport grapesjs, { Component, Editor } from 'grapesjs';\nimport 'grapesjs/dist/css/grapes.min.css';\nimport tailwind from 'grapesjs-tailwind';\n\nimport { TypesToRegister } from './constants';\nimport { toKebabCase } from './helpers';\nimport { tailwindCompiledCss } from './helpers/css';\nimport { datePickerCss } from './helpers/date-picker';\nimport { createGrapesjsShadcnGenericPlugin } from './plugins/grapejs-plugin';\nimport { StyledEditor } from './index.styles';\n\ntype NotificationHandler = (newData: {\n componentId: string;\n newProps: Record<string, any>;\n newAttributes: Record<string, any>;\n}) => boolean;\n\ntype GrapesjsCanvasProps = {\n json: any;\n mode?: 'editor' | 'preview';\n setEditor: (editor: Editor) => void;\n performInteraction: (payload: Record<string, any>) => Promise<Record<string, any> | undefined>;\n newDataNotifier: (notifHandler: NotificationHandler) => void;\n setHasChanged: (hasChanged: boolean) => void;\n isStreaming: boolean;\n};\n\nfunction setComponentProperties(editor: Editor, isPreview: boolean) {\n function setPropertiesRecursively(comp: Component) {\n comp.set({\n editable: !isPreview,\n draggable: !isPreview,\n droppable: !isPreview && comp.getName() !== 'Shadcn-generic',\n selectable: !isPreview,\n hoverable: !isPreview,\n highlightable: !isPreview,\n copyable: false,\n resizable: false,\n removable: !isPreview,\n badgable: false,\n });\n\n comp.set('attributes', {\n ...(comp.get('attributes') || {}),\n isEditable: !isPreview,\n });\n\n if (!isPreview) {\n comp.set('toolbar', [\n { attributes: { class: 'fa fa-arrows' }, command: 'tlb-move' },\n { attributes: { class: 'fa fa-trash' }, command: 'tlb-delete' },\n ]);\n }\n\n comp.components().forEach(setPropertiesRecursively);\n }\n\n if (isPreview) {\n editor.runCommand('core:preview');\n } else {\n editor.stopCommand('core:preview');\n }\n\n const wrapper = editor.getWrapper();\n wrapper?.find('*').forEach(setPropertiesRecursively);\n}\n\nfunction convertStyles(stylesArray: any[]): string {\n return stylesArray\n .map((block) => {\n const selectors = Array.isArray(block.selectors)\n ? block.selectors.join(', ')\n : block.selectors;\n const declarations = Object.entries(block.style)\n .map(([prop, value]) => `${toKebabCase(prop)}: ${value};`)\n .join(' ');\n\n return `${selectors} { ${declarations} }`;\n })\n .join('\\n');\n}\n\nfunction createActionCardConfig(action: any): any {\n const { icon, title, description } = action;\n\n return {\n type: 'shadcn-generic',\n componentName: 'ActionCard',\n badgable: false,\n copyable: false,\n removable: true,\n draggable: true,\n componentProps: {\n icon,\n headerContent: title,\n bodyContent: description,\n },\n };\n}\n\nfunction expandActions(node: any): any {\n if (node.type === 'shadcn-generic' && node.componentName === 'Actions') {\n const actions = node.componentProps?.actions;\n\n if (Array.isArray(actions) && actions.length > 0) {\n return {\n ...node,\n type: 'div',\n classes: ['dashboard-cards', ...(node.classes || [])],\n componentName: undefined,\n componentProps: undefined,\n components: actions.map((action: any, i: number) => ({\n ...createActionCardConfig(action),\n id: `${node.id}--action-card-${i}`,\n })),\n };\n }\n\n return node;\n }\n\n if (Array.isArray(node.components)) {\n return {\n ...node,\n components: node.components.map(expandActions),\n };\n }\n\n return node;\n}\n\nfunction setInteracting(\n renderedComponents: Record<string, Component>,\n components: { componentId: string; showLoader: boolean }[],\n inProgress: boolean,\n) {\n components.forEach((component) => {\n const { componentId, showLoader } = component;\n\n if (!showLoader) {\n return;\n }\n\n const gjsModel = renderedComponents[componentId];\n\n if (gjsModel) {\n gjsModel.set('attributes', {\n ...gjsModel.get('attributes'),\n interactionApiInProgress: inProgress,\n });\n }\n });\n}\n\nfunction expandActionsComponent(model: Component, actions: any[]): void {\n model.components('');\n\n actions.forEach((action: any) => {\n model.append(createActionCardConfig(action));\n });\n\n model.set('type', 'div');\n model.addClass('dashboard-cards');\n model.set('componentName', undefined);\n model.set('componentProps', {});\n}\n\nfunction GrapesjsCanvas({\n json,\n mode = 'preview',\n setEditor,\n performInteraction,\n newDataNotifier = () => {\n // no op\n },\n setHasChanged = () => {\n // no op\n },\n isStreaming,\n}: GrapesjsCanvasProps) {\n const editorRef = useRef<HTMLDivElement>(null);\n const editorInstance = useRef<Editor | null>(null);\n const renderedComponents = useRef<Record<string, Component>>({});\n const isStreamingRef = useRef(isStreaming);\n const isSystemUpdateRef = useRef(false);\n const lastJsonRef = useRef<string>('');\n const isEditorAliveRef = useRef(false);\n\n useEffect(() => {\n isStreamingRef.current = isStreaming;\n }, [isStreaming]);\n\n function notificationHandler(\n props: Parameters<NotificationHandler>[0],\n ): ReturnType<NotificationHandler> {\n if (!props) {\n return true;\n }\n\n const { componentId, newProps = {}, newAttributes = {} } = props;\n\n const model = renderedComponents.current[componentId];\n\n if (!model) {\n return false;\n }\n\n // Filter out complex placeholder objects by setting them to null\n // This ensures placeholder values are properly cleared and don't cause stale data issues\n const filteredProps = { ...newProps };\n\n Object.keys(filteredProps).forEach((key) => {\n const value = filteredProps[key];\n\n if (value && typeof value === 'object' && value.name === '__peak_placeholder') {\n filteredProps[key] = null;\n }\n });\n\n const parsedNewProps = {\n ...filteredProps,\n };\n\n if (filteredProps.pagination) {\n parsedNewProps.pagination = {\n ...(model.get('componentProps').pagination || {}),\n ...filteredProps.pagination,\n };\n }\n\n // Handle Actions component: expand into ActionCards when data arrives via streaming\n const isActionsComponent = model.get('componentName') === 'Actions';\n const hasValidActionsData =\n parsedNewProps.actions &&\n parsedNewProps.actions !== null &&\n Array.isArray(parsedNewProps.actions) &&\n parsedNewProps.actions.length > 0;\n\n if (isActionsComponent && hasValidActionsData) {\n const isAlreadyExpanded =\n model.components().length > 0 &&\n model.components().at(0)?.get('componentName') === 'ActionCard';\n\n if (!isAlreadyExpanded) {\n expandActionsComponent(model, parsedNewProps.actions);\n\n return true;\n }\n }\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...parsedNewProps,\n });\n\n model.set('attributes', {\n ...model.get('attributes'),\n ...newAttributes,\n });\n\n return true;\n }\n\n useEffect(() => {\n newDataNotifier(notificationHandler);\n }, []);\n\n async function performInteractionWrapper(payload: Record<string, any>) {\n const updatedJson = await editorInstance.current?.store();\n setInteracting(renderedComponents.current, payload.affectedComponents, true);\n\n try {\n const apiResponse = await performInteraction({\n ...payload,\n json: updatedJson,\n });\n\n const componentUpdates = apiResponse || {};\n\n Object.entries(componentUpdates).forEach(([key, value]) => {\n const model = renderedComponents.current[key];\n\n if (model) {\n model.set('attributes', {\n ...model.get('attributes'),\n error: undefined,\n });\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...value,\n error: undefined,\n isMissing: undefined,\n });\n }\n });\n\n return componentUpdates;\n } catch (error) {\n payload.affectedComponents.forEach((componentId: string) => {\n const model = renderedComponents.current[componentId];\n\n if (model) {\n const errorMessage =\n error instanceof Error ? error.message : 'Something went wrong. Please try again.';\n\n model.set('attributes', {\n ...model.get('attributes'),\n error: errorMessage,\n });\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n error: errorMessage,\n isMissing: undefined,\n });\n }\n });\n\n throw error;\n } finally {\n setInteracting(renderedComponents.current, payload.affectedComponents, false);\n }\n }\n\n useEffect(() => {\n if (!editorRef.current) {\n return () => {\n // no op\n };\n }\n\n if (editorInstance.current) {\n editorInstance.current.destroy();\n editorInstance.current = null;\n isEditorAliveRef.current = false;\n }\n\n const currentMode = mode;\n\n const editor = grapesjs.init({\n container: editorRef.current,\n height: '100%',\n plugins: [\n tailwind,\n createGrapesjsShadcnGenericPlugin(\n currentMode,\n performInteractionWrapper,\n renderedComponents.current,\n setHasChanged,\n ),\n ],\n storageManager: { type: 'none' },\n richTextEditor: {\n actions: ['bold', 'italic', 'underline', 'strikethrough'],\n },\n canvas: {\n customBadgeLabel: (component) => {\n const tagName = component.get('tagName');\n\n return tagName === 'body' ? '' : tagName || '';\n },\n },\n });\n\n isEditorAliveRef.current = true;\n\n let injectionAttempts = 0;\n\n function injectStylesEarly() {\n const iframeDoc = editor.Canvas?.getDocument?.();\n\n if (iframeDoc && iframeDoc.head) {\n if (!iframeDoc.head.querySelector('[data-grapesjs-styles]')) {\n const style = iframeDoc.createElement('style');\n const fullCss = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n `;\n style.innerHTML = fullCss;\n style.setAttribute('type', 'text/css');\n style.setAttribute('data-grapesjs-styles', 'true');\n iframeDoc.head.appendChild(style);\n }\n } else if (injectionAttempts < 50) {\n injectionAttempts += 1;\n requestAnimationFrame(injectStylesEarly);\n }\n }\n\n requestAnimationFrame(injectStylesEarly);\n\n async function checkDirty() {\n if (isStreamingRef.current || isSystemUpdateRef.current) {\n return;\n }\n\n if (!isEditorAliveRef.current || !editorInstance.current) {\n return;\n }\n\n let stored = null;\n\n try {\n stored = await editorInstance.current.store();\n } catch (err) {\n return;\n }\n\n if (!stored) {\n return;\n }\n\n const newJson = JSON.stringify(stored);\n\n if (newJson !== lastJsonRef.current) {\n setHasChanged(true);\n lastJsonRef.current = newJson;\n }\n }\n\n const debouncedCheckDirty = (() => {\n let timeout: NodeJS.Timeout | null = null;\n\n return () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n timeout = setTimeout(checkDirty, 200);\n };\n })();\n\n [\n 'component:add',\n 'component:remove',\n 'component:update:content',\n 'style:update',\n 'component:drag:end',\n 'rte:change',\n ].forEach((evt) => {\n editor.on(evt, debouncedCheckDirty);\n });\n\n editor.on('component:update', (model, prop) => {\n if (['attributes', 'componentProps', 'content'].includes(prop)) {\n debouncedCheckDirty();\n }\n });\n\n // Tailwind CSS rules aren't fully added to our component\n // So, adding them from here!\n editor.on('load', async () => {\n const canvasDoc = editor.Canvas.getDocument();\n const canvasHead = canvasDoc.head;\n\n if (!canvasHead.querySelector('[data-grapesjs-styles]')) {\n const style = canvasDoc.createElement('style');\n const fullCss = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n `;\n style.innerHTML = fullCss;\n style.setAttribute('type', 'text/css');\n style.setAttribute('data-grapesjs-styles', 'true');\n canvasHead.appendChild(style);\n }\n\n isSystemUpdateRef.current = true;\n lastJsonRef.current = JSON.stringify(await editor.store());\n isSystemUpdateRef.current = false;\n });\n\n editorInstance.current = editor;\n\n if (setEditor) {\n setEditor(editor);\n }\n\n TypesToRegister.forEach(({ type, tagName }) => {\n if (!editor.DomComponents.getType(type)) {\n editor.DomComponents.addType(type, {\n model: {\n defaults: { tagName },\n },\n view: {},\n });\n }\n });\n\n return function cleanup() {\n editor.destroy();\n isEditorAliveRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (json && json.pages?.length > 0 && json.pages[0].frames?.length > 0) {\n isSystemUpdateRef.current = true;\n const raw = json.pages[0].frames[0].component;\n const processed = expandActions(raw);\n editorInstance.current?.setComponents(processed);\n\n const cssText = convertStyles(json.styles || []);\n editorInstance.current?.setStyle(cssText);\n\n setTimeout(async () => {\n if (editorInstance.current) {\n lastJsonRef.current = JSON.stringify(await editorInstance.current.store());\n isSystemUpdateRef.current = false;\n }\n }, 100);\n }\n }, [json]);\n\n useEffect(() => {\n if (mode && editorInstance.current) {\n isSystemUpdateRef.current = true;\n\n setTimeout(() => {\n setComponentProperties(editorInstance.current as Editor, mode === 'preview');\n\n setTimeout(() => {\n isSystemUpdateRef.current = false;\n }, 50);\n }, 0);\n }\n }, [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
|
@@ -5,7 +5,7 @@ import*as domutil from"recharts/lib/util/DOMUtils";import{TooltipButton}from"../
|
|
|
5
5
|
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";domutil.getOffset=function(el){var html=el.ownerDocument.documentElement;var box={top:0,left:0};if(typeof el.getBoundingClientRect!=="undefined"){box=el.getBoundingClientRect()}var iframe=document.querySelector(".gjs-frame");var iframeWindow=iframe==null?void 0:iframe.contentWindow;return{top:box.top+iframeWindow.pageYOffset-html.clientTop,left:box.left+iframeWindow.pageXOffset-html.clientLeft}};var baseColors=[[theme.colors.Blue_100,theme.colors.Blue_30],[theme.colors.Purpley_100,theme.colors.Purpley_30],[theme.colors.Light_Bluish_Green,"#06601b"],[theme.colors.Wild_Strawberry,"#4d001c"]];var iconMap={TrendingUp:/*#__PURE__*/_jsx(TrendingUp,{}),TrendingDown:/*#__PURE__*/_jsx(TrendingDown,{}),ShoppingCart:/*#__PURE__*/_jsx(ShoppingCart,{}),Equalizer:/*#__PURE__*/_jsx(ChartBarBig,{}),Style:/*#__PURE__*/_jsx(Tag,{}),Place:/*#__PURE__*/_jsx(MapPin,{})};function getIconFromString(iconString){if(!iconString){return null}if(iconMap[iconString]){return iconMap[iconString]}var lowerIconString=iconString.toLowerCase();var matchingKey=Object.keys(iconMap).find(function(key){return key.toLowerCase()===lowerIconString});if(matchingKey){return iconMap[matchingKey]}return null}function getNColors(n){var colors=[];var safeBaseColors=Array.isArray(baseColors)?baseColors:[];for(var _iterator=_createForOfIteratorHelperLoose(safeBaseColors),_step;!(_step=_iterator()).done;){var baseColor=_step.value;// eslint-disable-next-line import/no-named-as-default-member
|
|
6
6
|
colors.push(chroma.scale(baseColor).mode("lab").colors(n))}function getOneColor(existing){var color=null;do{var base=colors[Math.floor(Math.random()*colors.length)];var selectedColorIndex=Math.floor(Math.random()*base.length);color=base[selectedColorIndex]}while(existing.includes(color));return color}var selectedColors=[];for(var i=0;i<n;i++){selectedColors.push(getOneColor(selectedColors))}return selectedColors}/* TODO: Loader remains */export function renderActionCard(props){var gjsModel=props.gjsModel,rest=_objectWithoutPropertiesLoose(props,_excluded);// Memoize filtered props to avoid re-filtering on every render
|
|
7
7
|
var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState=useState(initialData),allData=_useState[0],setAllData=_useState[1];var _allData$headerConten=allData.headerContent,headerContent=_allData$headerConten===void 0?"Default action card title":_allData$headerConten,icon=allData.icon,_allData$bodyContent=allData.bodyContent,bodyContent=_allData$bodyContent===void 0?"Default body content. Click to edit.":_allData$bodyContent;var _useState2=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState2[0],setAttributes=_useState2[1];useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);var defaultClasses="text-black p-4 rounded-lg shadow border flex flex-col h-full";return/*#__PURE__*/_jsx(Card,_extends({className:defaultClasses+" relative",style:{backgroundColor:"#f9f9fe"},isEditable:false,contentEditable:false},rest,{children:/*#__PURE__*/_jsx(CardContent,{className:"p-0",isEditable:false,contentEditable:false,children:/*#__PURE__*/_jsx("div",{className:"px-4 py-3",children:/*#__PURE__*/_jsxs("div",{className:"flex items-start flex-col",children:[/*#__PURE__*/_jsxs("div",{className:"flex items-center justify-between w-full",children:[/*#__PURE__*/_jsx("div",{className:"text-xl font-semibold",children:headerContent}),/*#__PURE__*/_jsx("div",{className:"text-5xl ml-2 flex items-center","aria-hidden":"true",children:getIconFromString(icon)})]}),/*#__PURE__*/_jsx("div",{className:"w-full mt-1",children:attributes.error||allData.error||attributes.isMissing||allData.isMissing||!bodyContent?/*#__PURE__*/_jsxs("span",{className:"flex flex-row items-center px-3 py-2",children:[/*#__PURE__*/_jsx(CircleAlert,{className:"w-3 h-3 text-gray-400 mr-1"}),/*#__PURE__*/_jsx("p",{className:"text-sm text-gray-500 max-w-md text-center",children:"No data available for given filters"})]}):/*#__PURE__*/_jsx("div",{className:"text-base leading-relaxed",children:bodyContent})})]})})})}))}export function renderCard(props){var _attributes$isEditabl,_attributes$error,_attributes$isMissing;var gjsModel=props.gjsModel,_props$performInterac=props.performInteraction,performInteraction=_props$performInterac===void 0?function(){return Promise.resolve({})}:_props$performInterac,rest=_objectWithoutPropertiesLoose(props,_excluded2);// Memoize filtered props to avoid re-filtering on every render
|
|
8
|
-
var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState3=useState(initialData),allData=_useState3[0],setAllData=_useState3[1];var headerContent=allData.headerContent,headerDescription=allData.headerDescription,bodyContent=allData.bodyContent,footerContent=allData.footerContent,footerClass=allData.footerClass,footerIcon=allData.footerIcon,contentMetadata=allData.contentMetadata,contentMetadataClass=allData.contentMetadataClass,dataClassName=allData.className,dataError=allData.error,dataIsMissing=allData.isMissing;function toSafeText(value){if(value
|
|
8
|
+
var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState3=useState(initialData),allData=_useState3[0],setAllData=_useState3[1];var headerContent=allData.headerContent,headerDescription=allData.headerDescription,bodyContent=allData.bodyContent,footerContent=allData.footerContent,footerClass=allData.footerClass,footerIcon=allData.footerIcon,contentMetadata=allData.contentMetadata,contentMetadataClass=allData.contentMetadataClass,dataClassName=allData.className,dataError=allData.error,dataIsMissing=allData.isMissing;function toSafeText(value){if(!value){return""}return typeof value==="string"?value:JSON.stringify(value)}var safeHeaderContent=toSafeText(headerContent);var safeHeaderDescription=toSafeText(headerDescription);var safeBodyContent=toSafeText(bodyContent);var safeFooterContent=toSafeText(footerContent);var safeContentMetadata=toSafeText(contentMetadata);var _useState4=useState((safeFooterContent==null?void 0:safeFooterContent.length)>0),footerHasContent=_useState4[0],setFooterHasContent=_useState4[1];var _useState5=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState5[0],setAttributes=_useState5[1];var isEditable=(_attributes$isEditabl=attributes.isEditable)!=null?_attributes$isEditabl:false;useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){gjsModel.on("change:attributes",function(){setAttributes(_extends({},gjsModel.get("attributes")))})},[]);useEffect(function(){setFooterHasContent((safeFooterContent==null?void 0:safeFooterContent.length)>0)},[safeFooterContent]);var defaultClasses="bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none";var defaultFooterClasses=footerHasContent?"text-sm bg-pink-50 text-pink-900 shadow-sm":"text-sm";var defaultContentMetadataClasses="text-xs";var mergedCardClassName=dataClassName?cn(defaultClasses,dataClassName):defaultClasses;var mergedFooterClassName=footerClass?cn(defaultFooterClasses,footerClass):defaultFooterClasses;var mergedContentMetadataClassName=contentMetadataClass?cn(defaultContentMetadataClasses,contentMetadataClass):defaultContentMetadataClasses;var hasError=Boolean((_attributes$error=attributes==null?void 0:attributes.error)!=null?_attributes$error:dataError);var hasMissing=Boolean((_attributes$isMissing=attributes==null?void 0:attributes.isMissing)!=null?_attributes$isMissing:dataIsMissing);var isLoading=Boolean(((attributes==null?void 0:attributes.interactionApiInProgress)||(attributes==null?void 0:attributes.loading))&&!hasError&&!hasMissing);var footerIconText=typeof footerIcon==="string"?footerIcon:footerIcon&&typeof footerIcon==="object"&&"icon"in footerIcon?String(footerIcon.icon):"";function getCardContent(){if(isLoading){return/*#__PURE__*/_jsx(CardContent,{children:/*#__PURE__*/_jsx(CardLoader,{})})}var showEmpty=hasError||hasMissing||!safeBodyContent;function handleFooterInput(event){var target=event.target;var content=target.textContent||"";var hasContent=content.trim().length>0;setFooterHasContent(hasContent);if(!hasContent){var currentProps=gjsModel.get("componentProps");gjsModel.set("componentProps",_extends({},currentProps,{footerContent:null,footerIcon:null,footerClass:null,isEmptied:true}))}}return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(CardHeader,{children:/*#__PURE__*/_jsx("div",{className:"flex items-start justify-between",children:/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"headerContent",contentEditable:isEditable,className:"text-lg",children:safeHeaderContent}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"headerDescription",contentEditable:isEditable,className:"text-sm",children:safeHeaderDescription})]})})}),showEmpty?/*#__PURE__*/_jsxs("span",{className:"flex flex-row items-center px-3 py-2",children:[/*#__PURE__*/_jsx(CircleAlert,{className:"w-3 h-3 text-gray-400 mr-1"}),/*#__PURE__*/_jsx("p",{className:"text-sm text-gray-500 max-w-md text-center",children:"No data available for given filters"})]}):/*#__PURE__*/_jsxs(CardContent,{"data-slot":"bodyContent",contentEditable:false,className:"flex-grow",children:[/*#__PURE__*/_jsx("div",{className:"text-3xl font-semibold truncate",children:safeBodyContent}),safeContentMetadata&&/*#__PURE__*/_jsx("div",{className:mergedContentMetadataClassName,style:{color:"#2A44D4"},children:safeContentMetadata})]}),/*#__PURE__*/_jsxs(CardFooter,{"data-slot":"footerContent",contentEditable:isEditable,className:mergedFooterClassName,onInput:handleFooterInput,children:[(footerIconText||"").trim()?/*#__PURE__*/_jsx("span",{className:"mr-2","aria-hidden":"true",children:footerIconText}):null,safeFooterContent||""]})]})}return/*#__PURE__*/_jsxs(Card,_extends({},rest,{isEditable:false,className:mergedCardClassName+" relative",children:[getCardContent(),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData})]}))}function renderChartComponent(chartType,data,config){var safeData=Array.isArray(data)?data:[];if(safeData.length===0){return renderNoDataFallback()}switch(chartType){case"pie":return/*#__PURE__*/_jsxs(PieChart,{children:[safeData.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:safeData,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:safeData.length<20?function(_ref){var name=_ref.name,percent=_ref.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]});case"bar":{config.dataKeys=config.dataKeys||[];var barDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];return/*#__PURE__*/_jsxs(BarChart,_extends({data:safeData},config.chartUi,barDataKeys.length>1&&{barGap:0},{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(Legend,{align:"left",wrapperStyle:{marginLeft:20}}),barDataKeys.map(function(_ref2){var key=_ref2.key,name=_ref2.name,color=_ref2.color;return/*#__PURE__*/_jsx(Bar,{dataKey:key,fill:color!=null?color:"#4caf50",name:name,radius:2},key)}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})})]}))}case"line":{config.dataKeys=config.dataKeys||[];var safeDataKeysLine=Array.isArray(config.dataKeys)?config.dataKeys:[];return/*#__PURE__*/_jsxs(LineChart,_extends({data:safeData},config.chartUi,{children:[/*#__PURE__*/_jsx(CartesianGrid,{vertical:false}),/*#__PURE__*/_jsx(XAxis,{dataKey:config.xAxis}),/*#__PURE__*/_jsx(YAxis,{}),/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{indicator:"dashed"})}),safeDataKeysLine.map(function(_ref3){var key=_ref3.key,name=_ref3.name,color=_ref3.color;return/*#__PURE__*/_jsx(Line,{type:"monotone",dataKey:key,stroke:color!=null?color:"#4caf50",name:name},key)}),/*#__PURE__*/_jsx(Legend,{align:"left"})]}))}default:return/*#__PURE__*/_jsxs(PieChart,{children:[safeData.length>=20&&/*#__PURE__*/_jsx(ChartTooltip,{cursor:false,content:/*#__PURE__*/_jsx(ChartTooltipContent,{hideLabel:true})}),/*#__PURE__*/_jsx(Pie,{data:safeData,dataKey:config.dataKey,nameKey:config.nameKey,innerRadius:60,strokeWidth:10,label:safeData.length<20?function(_ref4){var name=_ref4.name,percent=_ref4.percent;return name+": "+(percent*100).toFixed(0)+"%"}:undefined,labelLine:false})]})}}export function renderChart(props){var _attributes$isEditabl2;var gjsModel=props.gjsModel,_props$performInterac2=props.performInteraction,performInteraction=_props$performInterac2===void 0?function(){return Promise.resolve({})}:_props$performInterac2,rest=_objectWithoutPropertiesLoose(props,_excluded3);// Memoize filtered props to avoid re-filtering on every render
|
|
9
9
|
var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState6=useState(initialData),allData=_useState6[0],setAllData=_useState6[1];var _useState7=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState7[0],setAttributes=_useState7[1];var isEditable=(_attributes$isEditabl2=attributes.isEditable)!=null?_attributes$isEditabl2:false;var containerRef=useRef(null);var _useState8=useState(0),containerWidth=_useState8[0],setContainerWidth=_useState8[1];useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){var handleAttributesChange=function handleAttributesChange(){var newAttributes=gjsModel.get("attributes");setAttributes(_extends({},newAttributes))};gjsModel.on("change:attributes",handleAttributesChange);return function(){gjsModel.off("change:attributes",handleAttributesChange)}},[gjsModel]);useEffect(function(){var updateContainerWidth=function updateContainerWidth(){if(containerRef.current){setContainerWidth(containerRef.current.offsetWidth||0)}};var resizeObserver=new ResizeObserver(function(entries){for(var _iterator2=_createForOfIteratorHelperLoose(entries),_step2;!(_step2=_iterator2()).done;){var entry=_step2.value;setContainerWidth(entry.contentRect.width||0)}});updateContainerWidth();var timeoutId=setTimeout(updateContainerWidth,50);if(containerRef.current){resizeObserver.observe(containerRef.current)}window.addEventListener("resize",updateContainerWidth);return function(){clearTimeout(timeoutId);resizeObserver.disconnect();window.removeEventListener("resize",updateContainerWidth)}},[]);var _allData$config=allData.config,config=_allData$config===void 0?{}:_allData$config,_allData$chartType=allData.chartType,chartType=_allData$chartType===void 0?"pie":_allData$chartType,_allData$chartData=allData.chartData,chartData=_allData$chartData===void 0?[]:_allData$chartData,className=allData.className,_allData$title=allData.title,title=_allData$title===void 0?"Title":_allData$title,_allData$subTitle=allData.subTitle,subTitle=_allData$subTitle===void 0?"Subtitle":_allData$subTitle;var defaultClasses="aspect-auto h-[250px] w-full";var mergedClasses=className?cn(defaultClasses,className):defaultClasses;if(chartType==="pie"){var safeChartData=Array.isArray(chartData)?chartData:[];var colors=getNColors(safeChartData.length);safeChartData.forEach(function(data,i){if(!data.fill){data.fill=colors[i]}})}else if(!config.color){var safeBaseColors=Array.isArray(baseColors)?baseColors:[];if(safeBaseColors.length>0){config.color=safeBaseColors[Math.floor(Math.random()*safeBaseColors.length)]}}var totalDataPoints=0;if(chartType==="bar"||chartType==="line"){var _safeChartData=Array.isArray(chartData)?chartData:[];var safeDataKeys=Array.isArray(config.dataKeys)?config.dataKeys:[];totalDataPoints=chartType==="bar"?_safeChartData.length*Math.max(1,safeDataKeys.length):_safeChartData.length}var getScrollableWidth=function getScrollableWidth(){if(chartType==="line"){return totalDataPoints*20}if(chartType==="bar"){return totalDataPoints*20+(Array.isArray(config.dataKeys)?config.dataKeys.length:0)*8*(Array.isArray(chartData)?chartData.length:0)+(Array.isArray(chartData)?chartData.length:0)*15}return 800};var scrollWidth=getScrollableWidth();var shouldScroll=(chartType==="bar"||chartType==="line")&&totalDataPoints>15&&scrollWidth>containerWidth;var hasError=attributes.error||allData.error;var hasMissing=attributes.isMissing||allData.isMissing;var isLoading=(attributes.interactionApiInProgress||attributes.loading)&&!hasError&&!hasMissing;var ChartWrapper=function ChartWrapper(_ref5){var children=_ref5.children;if(shouldScroll){return/*#__PURE__*/_jsx("div",{className:"w-full h-[250px] overflow-x-auto",children:/*#__PURE__*/_jsx("div",{style:{minWidth:scrollWidth+"px",height:"250px"},children:children})})}return/*#__PURE__*/_jsx("div",{className:"w-full h-[250px]",children:children})};var chartUi=isLoading?/*#__PURE__*/_jsx(ChartLoader,{}):hasError||hasMissing||!chartData?renderNoDataFallback():/*#__PURE__*/_jsx(ChartWrapper,{children:/*#__PURE__*/_jsx(ResponsiveContainer,{width:"100%",height:250,children:/*#__PURE__*/_jsx(ChartContainer,_extends({},rest,{config:config,className:mergedClasses,children:renderChartComponent(chartType,chartData,config)}))})});return/*#__PURE__*/_jsxs(Card,{className:"shadow border mt-2 mb-2 relative",children:[/*#__PURE__*/_jsx(CardHeader,{children:/*#__PURE__*/_jsx("div",{className:"flex items-start justify-between",children:/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"title",contentEditable:isEditable,className:"text-2xl",children:title}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"subTitle",contentEditable:isEditable,className:"text-sm",children:subTitle})]})})}),/*#__PURE__*/_jsx(CardContent,{ref:containerRef,"data-slot":"bodyContent",className:"px-6",children:chartUi}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:performInteraction,position:"top-right",isVisible:isEditable,componentProps:allData})]})}export function renderTable(props){var _attributes$isEditabl3;var gjsModel=props.gjsModel,_props$performInterac3=props.performInteraction,performInteraction=_props$performInterac3===void 0?function(){}:_props$performInterac3,rest=_objectWithoutPropertiesLoose(props,_excluded4);// Memoize filtered props to avoid re-filtering on every render
|
|
10
10
|
var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState9=useState(initialData),allData=_useState9[0],setAllData=_useState9[1];var cardRef=useRef(null);var _useState10=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState10[0],setAttributes=_useState10[1];var isEditable=(_attributes$isEditabl3=attributes.isEditable)!=null?_attributes$isEditabl3:false;var rawData=allData.data,_allData$headerMapper=allData.headerMapper,rawHeaderMapper=_allData$headerMapper===void 0?{}:_allData$headerMapper,className=allData.className,_allData$title2=allData.title,title=_allData$title2===void 0?"Title":_allData$title2,_allData$subTitle2=allData.subTitle,subTitle=_allData$subTitle2===void 0?"Subtitle":_allData$subTitle2,_allData$actions=allData.actions,actions=_allData$actions===void 0?[]:_allData$actions,pagination=allData.pagination;var data=Array.isArray(rawData)?rawData:[];var headerMapper=function(){var cleaned=_extends({},rawHeaderMapper);if("id"in cleaned){delete cleaned.id}if(data.length>0){var dataKeys=Object.keys(data[0]||{});return Object.fromEntries(Object.entries(cleaned).filter(function(_ref6){var key=_ref6[0];return dataKeys.includes(key)}))}return cleaned}();var sortConfig=function(_gjsModel$get,_ref8){var _ref7=(_gjsModel$get=gjsModel.get("componentProps"))!=null?_gjsModel$get:{},sortColumn=_ref7.sortColumn,sortDirection=_ref7.sortDirection;return sortColumn&&sortDirection?(_ref8={},_ref8[sortColumn]=sortDirection,_ref8):{}}();var _useState11=useState(0),viewportWidth=_useState11[0],setViewportWidth=_useState11[1];var _useState12=useState(250),scrollAreaHeight=_useState12[0],setScrollAreaHeight=_useState12[1];var calculateTableHeight=function calculateTableHeight(tableWidth,rowCount){if(viewportWidth>0){var _gjsModel$collection;var widthRatio=tableWidth/viewportWidth;var baseTableHeight=250;var targetScrollAreaHeight=baseTableHeight;if(widthRatio>=0.8){var headerHeight=48;var rowHeight=40;var calculatedHeight=headerHeight+rowCount*rowHeight;targetScrollAreaHeight=Math.min(calculatedHeight,baseTableHeight)}var tableId=gjsModel.get("id");var editor=gjsModel.em||((_gjsModel$collection=gjsModel.collection)==null?void 0:_gjsModel$collection.em);var canvasDocument=editor.Canvas.getDocument()||document;var tableElement=canvasDocument.querySelector("[data-table-id=\""+tableId+"\"]");if(tableElement){var headerElement=tableElement.querySelector("[data-slot=\"card-header\"]");if(headerElement&&headerElement.offsetHeight>0){var actualHeaderHeight=headerElement.offsetHeight;var standardHeaderHeight=58;var heightDifference=actualHeaderHeight-standardHeaderHeight;if(heightDifference>0){targetScrollAreaHeight=targetScrollAreaHeight-heightDifference}}}setScrollAreaHeight(targetScrollAreaHeight)}};useEffect(function(){var updateViewportWidth=function updateViewportWidth(){var iframe=document.querySelector(".gjs-frame");var iframeWindow=iframe==null?void 0:iframe.contentWindow;var iframeDocument=iframeWindow==null?void 0:iframeWindow.document;if(iframeDocument){var dashboardRoot=iframeDocument.getElementById("dashboard-root");var effectiveViewportWidth=(dashboardRoot==null?void 0:dashboardRoot.clientWidth)||iframeDocument.documentElement.clientWidth;setViewportWidth(effectiveViewportWidth)}};updateViewportWidth();window.addEventListener("resize",updateViewportWidth);var iframe=document.querySelector(".gjs-frame");var iframeWindow=iframe==null?void 0:iframe.contentWindow;if(iframeWindow){iframeWindow.addEventListener("resize",updateViewportWidth)}return function(){window.removeEventListener("resize",updateViewportWidth);if(iframeWindow){iframeWindow.removeEventListener("resize",updateViewportWidth)}}},[]);useEffect(function(){var updateTableWidthAndApplyCSS=function updateTableWidthAndApplyCSS(){var _gjsModel$collection2;var tableId=gjsModel.get("id");var editor=gjsModel.em||((_gjsModel$collection2=gjsModel.collection)==null?void 0:_gjsModel$collection2.em);var canvasDocument=editor.Canvas.getDocument()||document;var tableElement=canvasDocument.querySelector("[data-table-id=\""+tableId+"\"]");if(!tableElement&&window.parent!==window){tableElement=window.parent.document.querySelector("[data-table-id=\""+tableId+"\"]")}if(!tableElement){return}var tableActualWidth=tableElement.getBoundingClientRect().width;if(tableActualWidth>0){calculateTableHeight(tableActualWidth,Array.isArray(data)?data.length:0)}};var timeoutId=setTimeout(updateTableWidthAndApplyCSS,150);window.addEventListener("resize",updateTableWidthAndApplyCSS);return function(){clearTimeout(timeoutId);window.removeEventListener("resize",updateTableWidthAndApplyCSS)}},[allData,gjsModel,viewportWidth,data,calculateTableHeight]);useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){var handleAttributesChange=function handleAttributesChange(){setAttributes(_extends({},gjsModel.get("attributes")))};gjsModel.on("change:attributes",handleAttributesChange);return function(){gjsModel.off("change:attributes",handleAttributesChange)}},[gjsModel]);var parsedData=function(){if(typeof data==="object"&&data!==null&&!Array.isArray(data)&&data.name==="__peak_placeholder"){return[]}if(!Array.isArray(data)){return[]}return data.map(function(datum){var newData=_extends({},datum);delete newData.id;return newData})}();function onRowAction(_x,_x2){return _onRowAction.apply(this,arguments)}function _onRowAction(){_onRowAction=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(rowIndex,actionId){var id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:id=gjsModel.get("id");_context.next=3;return performInteraction({id:actionId,interactionType:"tableButton",payload:{row:data[rowIndex],tableId:id},affectedComponents:[]});case 3:case"end":return _context.stop()}},_callee)}));return _onRowAction.apply(this,arguments)}function onPageChange(_x3,_x4){return _onPageChange.apply(this,arguments)}function _onPageChange(){_onPageChange=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(pageNumber,pageSize){var _gjsModel$get2;var id,_ref9,sortColumn,sortDirection;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:id=gjsModel.get("id");_ref9=(_gjsModel$get2=gjsModel.get("componentProps"))!=null?_gjsModel$get2:{},sortColumn=_ref9.sortColumn,sortDirection=_ref9.sortDirection;_context2.next=4;return performInteraction({id:id,interactionType:"pagination",payload:_extends({pageNumber:pageNumber,pageSize:pageSize},sortColumn&&sortDirection&&{sortColumn:sortColumn,sortDirection:sortDirection}),affectedComponents:getAffectedComponentsWithLoader([id],true)});case 4:case"end":return _context2.stop()}},_callee2)}));return _onPageChange.apply(this,arguments)}function handleSort(_x5,_x6){return _handleSort.apply(this,arguments)}function _handleSort(){_handleSort=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(column,direction){var currentProps,id;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:currentProps=gjsModel.get("componentProps");id=gjsModel.get("id");gjsModel.set("componentProps",_extends({},currentProps,{sortColumn:direction?column:null,sortDirection:direction}));_context3.next=5;return performInteraction({id:id,interactionType:"tableSort",payload:{sortColumn:direction?column:null,sortDirection:direction,tableId:id},affectedComponents:getAffectedComponentsWithLoader([id],true)});case 5:case"end":return _context3.stop()}},_callee3)}));return _handleSort.apply(this,arguments)}return/*#__PURE__*/_jsxs(Card,{ref:cardRef,className:"shadow border relative flex flex-col h-fit overflow-hidden","data-component-type":"table","data-table-id":gjsModel.get("id"),children:[/*#__PURE__*/_jsx(CardHeader,{children:/*#__PURE__*/_jsx("div",{className:"flex items-start justify-between",children:/*#__PURE__*/_jsxs("div",{className:"flex-1",children:[/*#__PURE__*/_jsx(CardTitle,{"data-slot":"title",contentEditable:isEditable,className:"text-2xl",children:title}),/*#__PURE__*/_jsx(CardDescription,{"data-slot":"subTitle",contentEditable:isEditable,className:"text-sm",children:subTitle})]})})}),/*#__PURE__*/_jsx(CardContent,{"data-slot":"bodyContent",contentEditable:false,className:"flex-1 flex flex-col overflow-hidden",children:attributes.error||allData.error||attributes.isMissing||allData.isMissing?renderNoDataFallback():/*#__PURE__*/_jsx(DataTable,{data:parsedData,headerMapper:headerMapper,className:className,isEditable:isEditable,actions:actions,pagination:pagination,isLoading:attributes.interactionApiInProgress||attributes.loading,onRowAction:onRowAction,onPageChange:onPageChange,onSort:handleSort,sortConfig:sortConfig,otherProps:rest,height:scrollAreaHeight})}),/*#__PURE__*/_jsx(StyledInfoButton,{componentId:gjsModel.get("id"),performInteraction:performInteraction,position:"top-right",tableActions:actions,firstRowData:Array.isArray(data)&&data.length>0?data[0]:{},isVisible:isEditable,componentProps:allData})]})}export function renderTab(props){var tabsWidth=157;var safeTabs=Array.isArray(props.tabs)?props.tabs:[];var showFallback=safeTabs.length===0;if(safeTabs.length>4){tabsWidth=157}var defaultValue=props.defaultValue||(safeTabs.length>0?safeTabs[0]:undefined);return/*#__PURE__*/_jsxs(Tabs,{defaultValue:defaultValue,children:[/*#__PURE__*/_jsx("div",{className:"text-center mb-4",children:/*#__PURE__*/_jsx(TabsList,{className:"bg-[#F9F9FE] border border-[#D4D5DE] p-1 rounded-lg h-auto",children:safeTabs.length>0?safeTabs.map(function(tab){return/*#__PURE__*/_jsx(TabsTrigger,{value:tab,className:"\n w-["+tabsWidth+"px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n ",style:{fontFamily:"Helvetica Neue",fontWeight:500,fontSize:"14px",lineHeight:"16px",letterSpacing:"0%"},children:tab},tab)}):/*#__PURE__*/_jsx(TabsTrigger,{value:"no-data",className:"\n w-["+tabsWidth+"px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n ",style:{fontFamily:"Helvetica Neue",fontWeight:500,fontSize:"14px",lineHeight:"16px",letterSpacing:"0%"},disabled:true,children:"No tabs"})})}),showFallback?/*#__PURE__*/_jsx(TabsContent,{value:defaultValue||"no-data",className:"tabs-content","data-fallback":"true",children:renderNoDataFallback()}):safeTabs.map(function(tab){return/*#__PURE__*/_jsx(TabsContent,{value:tab,className:"tabs-content"},tab)})]})}export function renderMarkdown(props){var _attributes$isEditabl4;var gjsModel=props.gjsModel,rest=_objectWithoutPropertiesLoose(props,_excluded5);// Memoize filtered props to avoid re-filtering on every render
|
|
11
11
|
var initialData=useMemo(function(){return filterPlaceholders(props)},[]);var _useState13=useState(initialData),allData=_useState13[0],setAllData=_useState13[1];var _useState14=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState14[0],setAttributes=_useState14[1];var isEditable=(_attributes$isEditabl4=attributes.isEditable)!=null?_attributes$isEditabl4:false;useEffect(function(){var handlePropsChange=function handlePropsChange(){var newComponentProps=gjsModel.get("componentProps");var filteredProps=filterPlaceholders(newComponentProps);setAllData(function(prevData){return _extends({},prevData,filteredProps)})};gjsModel.on("change:componentProps",handlePropsChange);return function(){gjsModel.off("change:componentProps",handlePropsChange)}},[gjsModel]);useEffect(function(){var handleAttributesChange=function handleAttributesChange(){setAttributes(_extends({},gjsModel.get("attributes")))};gjsModel.on("change:attributes",handleAttributesChange);return function(){gjsModel.off("change:attributes",handleAttributesChange)}},[gjsModel]);var _useState15=useState(false),isEditing=_useState15[0],setIsEditing=_useState15[1];var _useState16=useState(false),isEditingHeading=_useState16[0],setIsEditingHeading=_useState16[1];var editRef=useRef(null);var headingEditRef=useRef(null);var startEditing=function startEditing(){setIsEditing(true);setTimeout(function(){setupEditor()},0)};var startEditingHeading=function startEditingHeading(){setIsEditingHeading(true);setTimeout(function(){setupHeadingEditor()},0)};var setupEditor=function setupEditor(){if(!editRef.current){return}var editor=editRef.current;editor.innerHTML="";editor.textContent=allData.summaryText;editor.focus()};var setupHeadingEditor=function setupHeadingEditor(){if(!headingEditRef.current){return}var editor=headingEditRef.current;editor.innerHTML="";editor.textContent=allData.summaryHeading||"Insights";editor.focus()};// Save changes and exit editing mode
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-components.js","names":["chroma","React","useEffect","useState","useMemo","useRef","renderNoDataFallback","CircleAlert","TrendingDown","TrendingUp","ShoppingCart","ChartBarBig","Tag","MapPin","StyledInfoButton","filterPlaceholders","theme","Markdown","Bar","BarChart","CartesianGrid","Legend","Line","LineChart","Pie","PieChart","ResponsiveContainer","XAxis","YAxis","domutil","TooltipButton","Card","CardContent","CardDescription","CardFooter","CardHeader","CardTitle","ChartContainer","ChartTooltip","ChartTooltipContent","renderFilter","renderSearch","CardLoader","ChartLoader","MarkdownLoader","Tabs","TabsContent","TabsList","TabsTrigger","cn","getAffectedComponentsWithLoader","DataTable","ComponentWrapper","jsx","_jsx","jsxs","_jsxs","getOffset","el","html","ownerDocument","documentElement","box","top","left","getBoundingClientRect","iframe","document","querySelector","iframeWindow","contentWindow","pageYOffset","clientTop","pageXOffset","clientLeft","baseColors","colors","Blue_100","Blue_30","Purpley_100","Purpley_30","Light_Bluish_Green","Wild_Strawberry","iconMap","Equalizer","Style","Place","getIconFromString","iconString","lowerIconString","toLowerCase","matchingKey","Object","keys","find","key","getNColors","n","safeBaseColors","Array","isArray","_iterator","_createForOfIteratorHelperLoose","_step","done","baseColor","value","push","scale","mode","getOneColor","existing","color","base","Math","floor","random","length","selectedColorIndex","includes","selectedColors","i","renderActionCard","props","gjsModel","rest","_objectWithoutPropertiesLoose","_excluded","initialData","_useState","allData","setAllData","_allData$headerConten","headerContent","icon","_allData$bodyContent","bodyContent","_useState2","_extends","get","attributes","setAttributes","handlePropsChange","newComponentProps","filteredProps","prevData","on","off","defaultClasses","className","style","backgroundColor","isEditable","contentEditable","children","error","isMissing","renderCard","_attributes$isEditabl","_attributes$error","_attributes$isMissing","_props$performInterac","performInteraction","Promise","resolve","_excluded2","_useState3","headerDescription","footerContent","footerClass","footerIcon","contentMetadata","contentMetadataClass","dataClassName","dataError","dataIsMissing","toSafeText","JSON","stringify","safeHeaderContent","safeHeaderDescription","safeBodyContent","safeFooterContent","safeContentMetadata","_useState4","footerHasContent","setFooterHasContent","_useState5","defaultFooterClasses","defaultContentMetadataClasses","mergedCardClassName","mergedFooterClassName","mergedContentMetadataClassName","hasError","Boolean","hasMissing","isLoading","interactionApiInProgress","loading","footerIconText","String","getCardContent","showEmpty","handleFooterInput","event","target","content","textContent","hasContent","trim","currentProps","set","isEmptied","Fragment","onInput","componentId","position","isVisible","componentProps","renderChartComponent","chartType","data","config","safeData","cursor","hideLabel","dataKey","nameKey","innerRadius","strokeWidth","label","_ref","name","percent","toFixed","undefined","labelLine","dataKeys","barDataKeys","chartUi","barGap","vertical","xAxis","align","wrapperStyle","marginLeft","map","_ref2","fill","radius","indicator","safeDataKeysLine","_ref3","type","stroke","_ref4","renderChart","_attributes$isEditabl2","_props$performInterac2","_excluded3","_useState6","_useState7","containerRef","_useState8","containerWidth","setContainerWidth","handleAttributesChange","newAttributes","updateContainerWidth","current","offsetWidth","resizeObserver","ResizeObserver","entries","_iterator2","_step2","entry","contentRect","width","timeoutId","setTimeout","observe","window","addEventListener","clearTimeout","disconnect","removeEventListener","_allData$config","_allData$chartType","_allData$chartData","chartData","_allData$title","title","_allData$subTitle","subTitle","mergedClasses","safeChartData","forEach","totalDataPoints","safeDataKeys","max","getScrollableWidth","scrollWidth","shouldScroll","ChartWrapper","_ref5","minWidth","height","ref","renderTable","_attributes$isEditabl3","_props$performInterac3","_excluded4","_useState9","cardRef","_useState10","rawData","_allData$headerMapper","headerMapper","rawHeaderMapper","_allData$title2","_allData$subTitle2","_allData$actions","actions","pagination","cleaned","id","fromEntries","filter","_ref6","sortConfig","_gjsModel$get","_ref8","_ref7","sortColumn","sortDirection","_useState11","viewportWidth","setViewportWidth","_useState12","scrollAreaHeight","setScrollAreaHeight","calculateTableHeight","tableWidth","rowCount","_gjsModel$collection","widthRatio","baseTableHeight","targetScrollAreaHeight","headerHeight","rowHeight","calculatedHeight","min","tableId","editor","em","collection","canvasDocument","Canvas","getDocument","tableElement","headerElement","offsetHeight","actualHeaderHeight","standardHeaderHeight","heightDifference","updateViewportWidth","iframeDocument","dashboardRoot","getElementById","effectiveViewportWidth","clientWidth","updateTableWidthAndApplyCSS","_gjsModel$collection2","parent","tableActualWidth","parsedData","datum","newData","onRowAction","_x","_x2","_onRowAction","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","rowIndex","actionId","wrap","_callee$","_context","prev","next","interactionType","payload","row","affectedComponents","stop","onPageChange","_x3","_x4","_onPageChange","_callee2","pageNumber","pageSize","_gjsModel$get2","_ref9","_callee2$","_context2","handleSort","_x5","_x6","_handleSort","_callee3","column","direction","_callee3$","_context3","onSort","otherProps","tableActions","firstRowData","renderTab","tabsWidth","safeTabs","tabs","showFallback","defaultValue","tab","fontFamily","fontWeight","fontSize","lineHeight","letterSpacing","disabled","renderMarkdown","_attributes$isEditabl4","_excluded5","_useState13","_useState14","_useState15","isEditing","setIsEditing","_useState16","isEditingHeading","setIsEditingHeading","editRef","headingEditRef","startEditing","setupEditor","startEditingHeading","setupHeadingEditor","innerHTML","summaryText","focus","summaryHeading","saveChanges","innerText","saveHeadingChanges","markdownStyles","ul","h1","h2","h3","h4","h5","h6","minHeight","options","overrides","onBlur","suppressContentEditableWarning","onClick","whiteSpace","wordWrap","renderButton","_attributes$isEditabl5","_props$performInterac4","_useState17","_useState18","text","_allData$variant","variant","_allData$size","size","tooltipContent","interact","concat","renderActionCardWithWrapper","componentType","renderButtonWithWrapper","renderCardWithWrapper","renderChartWithWrapper","renderFilterWithWrapper","renderMarkdownWithWrapper","renderSearchWithWrapper","renderTableWithWrapper","renderTabWithWrapper","renderActions","_props$isEditable","action","index","description","renderActionsWithWrapper","getRenderers","ActionCard","Actions","Button","Chart","Filter","Search","Table"],"sources":["../../../src/plugins/helpers/render-components.tsx"],"sourcesContent":["/* eslint-disable no-nested-ternary */\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable func-style */\n/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable func-names */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport chroma from 'chroma-js';\nimport React, { useEffect, useState, useMemo, JSX, useRef } from 'react';\nimport { renderNoDataFallback } from './extra';\nimport {\n CircleAlert,\n TrendingDown,\n TrendingUp,\n ShoppingCart,\n ChartBarBig,\n Tag,\n MapPin,\n} from 'lucide-react';\nimport { StyledInfoButton } from './styled-info-button';\nimport { filterPlaceholders } from '../../helpers/filter-placeholder';\n\nimport { theme } from '@peak-ai/ais-components/theme';\n\nimport Markdown from 'markdown-to-jsx';\n\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n Line,\n LineChart,\n Pie,\n PieChart,\n ResponsiveContainer,\n XAxis,\n YAxis,\n} from 'recharts/lib';\n\n// @ts-ignore\nimport * as domutil from 'recharts/lib/util/DOMUtils';\n\nimport { TooltipButton } from '../../shadcn/components/ui/button';\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from '../../shadcn/components/ui/card';\nimport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n} from '../../shadcn/components/ui/chart';\nimport { renderFilter } from '../../shadcn/components/ui/filter';\nimport { renderSearch } from '../../shadcn/components/ui/search';\nimport { CardLoader, ChartLoader, MarkdownLoader } from '../../shadcn/components/ui/skeleton';\nimport { SortDirection } from '../../shadcn/components/ui/table';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '../../shadcn/components/ui/tabs';\n\nimport { cn } from '../../shadcn/utils';\nimport { getAffectedComponentsWithLoader } from '../../helpers';\nimport { DataTable } from './data-table';\nimport { ComponentWrapper } from '../../shadcn/components/ui/error-wrapper';\n\n// Monkey-patching the getOffset function to use iframe's window instead of global one\n// REMEMBER TO UDPATE THIS WHEN recharts IS UPGRADED\n// @ts-ignore\ndomutil.getOffset = (\n el: HTMLElement,\n): {\n top: number;\n left: number;\n} => {\n const html = el.ownerDocument.documentElement;\n let box = { top: 0, left: 0 };\n\n if (typeof el.getBoundingClientRect !== 'undefined') {\n box = el.getBoundingClientRect();\n }\n\n const iframe = document.querySelector('.gjs-frame');\n const iframeWindow = (iframe as any)?.contentWindow;\n\n return {\n top: box.top + iframeWindow.pageYOffset - html.clientTop,\n left: box.left + iframeWindow.pageXOffset - html.clientLeft,\n };\n};\n\nconst baseColors = [\n [theme.colors.Blue_100, theme.colors.Blue_30],\n [theme.colors.Purpley_100, theme.colors.Purpley_30],\n [theme.colors.Light_Bluish_Green, '#06601b'],\n [theme.colors.Wild_Strawberry, '#4d001c'],\n];\n\nconst iconMap: Record<string, JSX.Element> = {\n TrendingUp: <TrendingUp />,\n TrendingDown: <TrendingDown />,\n ShoppingCart: <ShoppingCart />,\n Equalizer: <ChartBarBig />,\n Style: <Tag />,\n Place: <MapPin />,\n};\n\nfunction getIconFromString(iconString: string): JSX.Element | null {\n if (!iconString) {\n return null;\n }\n\n if (iconMap[iconString]) {\n return iconMap[iconString];\n }\n\n const lowerIconString = iconString.toLowerCase();\n const matchingKey = Object.keys(iconMap).find((key) => key.toLowerCase() === lowerIconString);\n\n if (matchingKey) {\n return iconMap[matchingKey];\n }\n\n return null;\n}\n\nfunction getNColors(n: number) {\n const colors: Array<string[]> = [];\n const safeBaseColors = Array.isArray(baseColors) ? baseColors : [];\n\n for (const baseColor of safeBaseColors) {\n // eslint-disable-next-line import/no-named-as-default-member\n colors.push(chroma.scale(baseColor).mode('lab').colors(n));\n }\n\n function getOneColor(existing: Array<string>) {\n let color: null | string = null;\n\n do {\n const base = colors[Math.floor(Math.random() * colors.length)];\n const selectedColorIndex = Math.floor(Math.random() * base.length);\n color = base[selectedColorIndex];\n } while (existing.includes(color));\n\n return color as string;\n }\n\n const selectedColors: Array<string> = [];\n\n for (let i = 0; i < n; i++) {\n selectedColors.push(getOneColor(selectedColors));\n }\n\n return selectedColors;\n}\n\n/* TODO: Loader remains */\nexport function renderActionCard(props: any): JSX.Element {\n const { gjsModel, ...rest } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const {\n headerContent = 'Default action card title',\n icon,\n bodyContent = 'Default body content. Click to edit.',\n } = allData;\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData,\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const defaultClasses = 'text-black p-4 rounded-lg shadow border flex flex-col h-full';\n\n return (\n <Card\n className={`${defaultClasses} relative`}\n style={{ backgroundColor: '#f9f9fe' }}\n isEditable={false}\n contentEditable={false}\n {...rest}\n >\n <CardContent className=\"p-0\" isEditable={false} contentEditable={false}>\n <div className=\"px-4 py-3\">\n <div className=\"flex items-start flex-col\">\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"text-xl font-semibold\">{headerContent}</div>\n <div className=\"text-5xl ml-2 flex items-center\" aria-hidden=\"true\">\n {getIconFromString(icon)}\n </div>\n </div>\n <div className=\"w-full mt-1\">\n {attributes.error ||\n allData.error ||\n attributes.isMissing ||\n allData.isMissing ||\n !bodyContent ? (\n <span className=\"flex flex-row items-center px-3 py-2\">\n <CircleAlert className=\"w-3 h-3 text-gray-400 mr-1\" />\n <p className=\"text-sm text-gray-500 max-w-md text-center\">\n No data available for given filters\n </p>\n </span>\n ) : (\n <div className=\"text-base leading-relaxed\">{bodyContent}</div>\n )}\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n );\n}\n\nexport function renderCard(props: any): JSX.Element {\n const {\n gjsModel,\n performInteraction = () => Promise.resolve({}),\n ...rest\n } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const {\n headerContent,\n headerDescription,\n bodyContent,\n footerContent,\n footerClass,\n footerIcon,\n contentMetadata,\n contentMetadataClass,\n className: dataClassName,\n error: dataError,\n isMissing: dataIsMissing,\n } = allData;\n\n function toSafeText(value: unknown): string {\n if (value === null) {\n return '';\n }\n\n return typeof value === 'string' ? value : JSON.stringify(value);\n }\n\n const safeHeaderContent = toSafeText(headerContent);\n const safeHeaderDescription = toSafeText(headerDescription);\n const safeBodyContent = toSafeText(bodyContent);\n const safeFooterContent = toSafeText(footerContent);\n const safeContentMetadata = toSafeText(contentMetadata);\n\n const [footerHasContent, setFooterHasContent] = useState(safeFooterContent.length > 0);\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData,\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n useEffect(() => {\n setFooterHasContent(safeFooterContent.length > 0);\n }, [safeFooterContent]);\n\n const defaultClasses =\n 'bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none';\n const defaultFooterClasses = footerHasContent\n ? 'text-sm bg-pink-50 text-pink-900 shadow-sm'\n : 'text-sm';\n const defaultContentMetadataClasses = 'text-xs';\n\n const mergedCardClassName = dataClassName ? cn(defaultClasses, dataClassName) : defaultClasses;\n const mergedFooterClassName = footerClass\n ? cn(defaultFooterClasses, footerClass)\n : defaultFooterClasses;\n const mergedContentMetadataClassName = contentMetadataClass\n ? cn(defaultContentMetadataClasses, contentMetadataClass)\n : defaultContentMetadataClasses;\n\n const hasError = Boolean(attributes?.error ?? dataError);\n const hasMissing = Boolean(attributes?.isMissing ?? dataIsMissing);\n const isLoading = Boolean(\n (attributes?.interactionApiInProgress || attributes?.loading) && !hasError && !hasMissing,\n );\n\n const footerIconText =\n typeof footerIcon === 'string'\n ? footerIcon\n : footerIcon && typeof footerIcon === 'object' && 'icon' in (footerIcon as any)\n ? String((footerIcon as any).icon)\n : '';\n\n function getCardContent() {\n if (isLoading) {\n return (\n <CardContent>\n <CardLoader />\n </CardContent>\n );\n }\n\n const showEmpty = hasError || hasMissing || !safeBodyContent;\n\n function handleFooterInput(event: React.FormEvent<HTMLDivElement>) {\n const target = event.target as HTMLDivElement;\n const content = target.textContent || '';\n const hasContent = content.trim().length > 0;\n\n setFooterHasContent(hasContent);\n\n if (!hasContent) {\n const currentProps = gjsModel.get('componentProps');\n gjsModel.set('componentProps', {\n ...currentProps,\n footerContent: null,\n footerIcon: null,\n footerClass: null,\n isEmptied: true,\n });\n }\n }\n\n return (\n <React.Fragment>\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"headerContent\" contentEditable={isEditable} className=\"text-lg\">\n {safeHeaderContent}\n </CardTitle>\n <CardDescription\n data-slot=\"headerDescription\"\n contentEditable={isEditable}\n className=\"text-sm\"\n >\n {safeHeaderDescription}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n\n {showEmpty ? (\n <span className=\"flex flex-row items-center px-3 py-2\">\n <CircleAlert className=\"w-3 h-3 text-gray-400 mr-1\" />\n <p className=\"text-sm text-gray-500 max-w-md text-center\">\n No data available for given filters\n </p>\n </span>\n ) : (\n <CardContent data-slot=\"bodyContent\" contentEditable={false} className=\"flex-grow\">\n <div className=\"text-3xl font-semibold truncate\">{safeBodyContent}</div>\n {safeContentMetadata && (\n <div className={mergedContentMetadataClassName} style={{ color: '#2A44D4' }}>\n {safeContentMetadata}\n </div>\n )}\n </CardContent>\n )}\n\n <CardFooter\n data-slot=\"footerContent\"\n contentEditable={isEditable}\n className={mergedFooterClassName}\n onInput={handleFooterInput}\n >\n {(footerIconText || '').trim() ? (\n <span className=\"mr-2\" aria-hidden=\"true\">\n {footerIconText}\n </span>\n ) : null}\n {safeFooterContent || ''}\n </CardFooter>\n </React.Fragment>\n );\n }\n\n return (\n <Card {...rest} isEditable={false} className={`${mergedCardClassName} relative`}>\n {getCardContent()}\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\nfunction renderChartComponent(chartType: string, data: any, config: any): JSX.Element {\n const safeData = Array.isArray(data) ? data : [];\n\n if (safeData.length === 0) {\n return renderNoDataFallback();\n }\n\n switch (chartType) {\n case 'pie':\n return (\n <PieChart>\n {safeData.length >= 20 && (\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n )}\n <Pie\n data={safeData}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n safeData.length < 20\n ? ({ name, percent }: { name: string; percent: number }) =>\n `${name}: ${(percent * 100).toFixed(0)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n\n case 'bar': {\n config.dataKeys = config.dataKeys || [];\n\n const barDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n return (\n <BarChart data={safeData} {...config.chartUi} {...(barDataKeys.length > 1 && { barGap: 0 })}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <Legend align=\"left\" wrapperStyle={{ marginLeft: 20 }} />\n {barDataKeys.map(({ key, name, color }: { key: string; name: string; color: string }) => {\n return <Bar dataKey={key} fill={color ?? '#4caf50'} name={name} key={key} radius={2} />;\n })}\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n </BarChart>\n );\n }\n\n case 'line': {\n config.dataKeys = config.dataKeys || [];\n const safeDataKeysLine = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n return (\n <LineChart data={safeData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n {safeDataKeysLine.map(\n ({ key, name, color }: { key: string; name: string; color: string }) => {\n return (\n <Line\n type=\"monotone\"\n dataKey={key}\n stroke={color ?? '#4caf50'}\n name={name}\n key={key}\n />\n );\n },\n )}\n <Legend align=\"left\" />\n </LineChart>\n );\n }\n\n default:\n return (\n <PieChart>\n {safeData.length >= 20 && (\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n )}\n <Pie\n data={safeData}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n safeData.length < 20\n ? ({ name, percent }: { name: string; percent: number }) =>\n `${name}: ${(percent * 100).toFixed(0)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n }\n}\n\nexport function renderChart(props: any): JSX.Element {\n const {\n gjsModel,\n performInteraction = () => Promise.resolve({}),\n ...rest\n } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState<number>(0);\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n const newAttributes = gjsModel.get('attributes');\n setAttributes({\n ...newAttributes,\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const updateContainerWidth = () => {\n if (containerRef.current) {\n setContainerWidth(containerRef.current.offsetWidth || 0);\n }\n };\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContainerWidth(entry.contentRect.width || 0);\n }\n });\n\n updateContainerWidth();\n\n const timeoutId = setTimeout(updateContainerWidth, 50);\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n window.addEventListener('resize', updateContainerWidth);\n\n return () => {\n clearTimeout(timeoutId);\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateContainerWidth);\n };\n }, []);\n\n const {\n config = {},\n chartType = 'pie',\n chartData = [],\n className,\n title = 'Title',\n subTitle = 'Subtitle',\n } = allData;\n\n const defaultClasses = 'aspect-auto h-[250px] w-full';\n const mergedClasses = className ? cn(defaultClasses, className) : defaultClasses;\n\n if (chartType === 'pie') {\n const safeChartData = Array.isArray(chartData) ? chartData : [];\n const colors = getNColors(safeChartData.length);\n safeChartData.forEach((data, i) => {\n if (!data.fill) {\n data.fill = colors[i];\n }\n });\n } else if (!config.color) {\n const safeBaseColors = Array.isArray(baseColors) ? baseColors : [];\n\n if (safeBaseColors.length > 0) {\n config.color = safeBaseColors[Math.floor(Math.random() * safeBaseColors.length)];\n }\n }\n\n let totalDataPoints = 0;\n\n if (chartType === 'bar' || chartType === 'line') {\n const safeChartData = Array.isArray(chartData) ? chartData : [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n totalDataPoints =\n chartType === 'bar'\n ? safeChartData.length * Math.max(1, safeDataKeys.length)\n : safeChartData.length;\n }\n\n const getScrollableWidth = () => {\n if (chartType === 'line') {\n return totalDataPoints * 20;\n }\n\n if (chartType === 'bar') {\n return (\n totalDataPoints * 20 +\n (Array.isArray(config.dataKeys) ? config.dataKeys.length : 0) *\n 8 *\n (Array.isArray(chartData) ? chartData.length : 0) +\n (Array.isArray(chartData) ? chartData.length : 0) * 15\n );\n }\n\n return 800;\n };\n\n const scrollWidth = getScrollableWidth();\n const shouldScroll =\n (chartType === 'bar' || chartType === 'line') &&\n totalDataPoints > 15 &&\n scrollWidth > containerWidth;\n\n const hasError = attributes.error || allData.error;\n const hasMissing = attributes.isMissing || allData.isMissing;\n const isLoading =\n (attributes.interactionApiInProgress || attributes.loading) && !hasError && !hasMissing;\n\n const ChartWrapper = ({ children }: { children: React.ReactNode }) => {\n if (shouldScroll) {\n return (\n <div className=\"w-full h-[250px] overflow-x-auto\">\n <div style={{ minWidth: `${scrollWidth}px`, height: '250px' }}>{children}</div>\n </div>\n );\n }\n\n return <div className=\"w-full h-[250px]\">{children}</div>;\n };\n\n const chartUi = isLoading ? (\n <ChartLoader />\n ) : hasError || hasMissing || !chartData ? (\n renderNoDataFallback()\n ) : (\n <ChartWrapper>\n <ResponsiveContainer width=\"100%\" height={250}>\n <ChartContainer {...rest} config={config} className={mergedClasses}>\n {renderChartComponent(chartType, chartData, config)}\n </ChartContainer>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n\n return (\n <Card className=\"shadow border mt-2 mb-2 relative\">\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"title\" contentEditable={isEditable} className=\"text-2xl\">\n {title}\n </CardTitle>\n <CardDescription data-slot=\"subTitle\" contentEditable={isEditable} className=\"text-sm\">\n {subTitle}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent ref={containerRef} data-slot=\"bodyContent\" className=\"px-6\">\n {chartUi}\n </CardContent>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\nexport function renderTable(props: any): JSX.Element {\n const { gjsModel, performInteraction = () => {}, ...rest } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const cardRef = useRef<HTMLDivElement>(null);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n const {\n data: rawData,\n headerMapper: rawHeaderMapper = {},\n className,\n title = 'Title',\n subTitle = 'Subtitle',\n actions = [],\n pagination,\n } = allData;\n\n const data = Array.isArray(rawData) ? rawData : [];\n const headerMapper = (() => {\n const cleaned = { ...rawHeaderMapper };\n\n if ('id' in cleaned) {\n delete cleaned.id;\n }\n\n if (data.length > 0) {\n const dataKeys = Object.keys(data[0] || {});\n\n return Object.fromEntries(Object.entries(cleaned).filter(([key]) => dataKeys.includes(key)));\n }\n\n return cleaned;\n })();\n\n const sortConfig = (() => {\n const { sortColumn, sortDirection } = gjsModel.get('componentProps') ?? {};\n\n return sortColumn && sortDirection ? { [sortColumn]: sortDirection } : {};\n })();\n\n const [viewportWidth, setViewportWidth] = useState<number>(0);\n const [scrollAreaHeight, setScrollAreaHeight] = useState<number>(250);\n\n const calculateTableHeight = (tableWidth: number, rowCount: number) => {\n if (viewportWidth > 0) {\n const widthRatio = tableWidth / viewportWidth;\n const baseTableHeight = 250;\n let targetScrollAreaHeight = baseTableHeight;\n\n if (widthRatio >= 0.8) {\n const headerHeight = 48;\n const rowHeight = 40;\n const calculatedHeight = headerHeight + rowCount * rowHeight;\n targetScrollAreaHeight = Math.min(calculatedHeight, baseTableHeight);\n }\n\n const tableId = gjsModel.get('id');\n const editor = gjsModel.em || gjsModel.collection?.em;\n const canvasDocument = editor.Canvas.getDocument() || document;\n const tableElement = canvasDocument.querySelector(\n `[data-table-id=\"${tableId}\"]`,\n ) as HTMLElement;\n\n if (tableElement) {\n const headerElement = tableElement.querySelector(\n '[data-slot=\"card-header\"]',\n ) as HTMLElement;\n\n if (headerElement && headerElement.offsetHeight > 0) {\n const actualHeaderHeight = headerElement.offsetHeight;\n const standardHeaderHeight = 58;\n const heightDifference = actualHeaderHeight - standardHeaderHeight;\n\n if (heightDifference > 0) {\n targetScrollAreaHeight = targetScrollAreaHeight - heightDifference;\n }\n }\n }\n\n setScrollAreaHeight(targetScrollAreaHeight);\n }\n };\n\n useEffect(() => {\n const updateViewportWidth = () => {\n const iframe = document.querySelector('.gjs-frame');\n const iframeWindow = (iframe as any)?.contentWindow;\n const iframeDocument = iframeWindow?.document;\n\n if (iframeDocument) {\n const dashboardRoot = iframeDocument.getElementById('dashboard-root');\n const effectiveViewportWidth =\n dashboardRoot?.clientWidth || iframeDocument.documentElement.clientWidth;\n setViewportWidth(effectiveViewportWidth);\n }\n };\n\n updateViewportWidth();\n window.addEventListener('resize', updateViewportWidth);\n\n const iframe = document.querySelector('.gjs-frame');\n const iframeWindow = (iframe as any)?.contentWindow;\n\n if (iframeWindow) {\n iframeWindow.addEventListener('resize', updateViewportWidth);\n }\n\n return () => {\n window.removeEventListener('resize', updateViewportWidth);\n\n if (iframeWindow) {\n iframeWindow.removeEventListener('resize', updateViewportWidth);\n }\n };\n }, []);\n\n useEffect(() => {\n const updateTableWidthAndApplyCSS = () => {\n const tableId = gjsModel.get('id');\n const editor = gjsModel.em || gjsModel.collection?.em;\n const canvasDocument = editor.Canvas.getDocument() || document;\n\n let tableElement = canvasDocument.querySelector(\n `[data-table-id=\"${tableId}\"]`,\n ) as HTMLElement;\n\n if (!tableElement && window.parent !== window) {\n tableElement = window.parent.document.querySelector(\n `[data-table-id=\"${tableId}\"]`,\n ) as HTMLElement;\n }\n\n if (!tableElement) {\n return;\n }\n\n const tableActualWidth = tableElement.getBoundingClientRect().width;\n\n if (tableActualWidth > 0) {\n calculateTableHeight(tableActualWidth, Array.isArray(data) ? data.length : 0);\n }\n };\n\n const timeoutId = setTimeout(updateTableWidthAndApplyCSS, 150);\n window.addEventListener('resize', updateTableWidthAndApplyCSS);\n\n return () => {\n clearTimeout(timeoutId);\n window.removeEventListener('resize', updateTableWidthAndApplyCSS);\n };\n }, [allData, gjsModel, viewportWidth, data, calculateTableHeight]);\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n const parsedData = (() => {\n if (\n typeof data === 'object' &&\n data !== null &&\n !Array.isArray(data) &&\n (data as any).name === '__peak_placeholder'\n ) {\n return [];\n }\n\n if (!Array.isArray(data)) {\n return [];\n }\n\n return data.map((datum: any) => {\n const newData = {\n ...datum,\n };\n\n delete newData.id;\n\n return newData;\n });\n })();\n\n async function onRowAction(rowIndex: number, actionId: string) {\n const id = gjsModel.get('id');\n\n await performInteraction({\n id: actionId,\n interactionType: 'tableButton',\n payload: {\n row: data[rowIndex],\n tableId: id,\n },\n affectedComponents: [],\n });\n }\n\n async function onPageChange(pageNumber: number, pageSize: number) {\n const id = gjsModel.get('id');\n const { sortColumn, sortDirection } = gjsModel.get('componentProps') ?? {};\n\n await performInteraction({\n id,\n interactionType: 'pagination',\n payload: {\n pageNumber,\n pageSize,\n ...(sortColumn && sortDirection && { sortColumn, sortDirection }),\n },\n affectedComponents: getAffectedComponentsWithLoader([id], true),\n });\n }\n\n async function handleSort(column: string, direction: SortDirection) {\n const currentProps = gjsModel.get('componentProps');\n const id = gjsModel.get('id');\n\n gjsModel.set('componentProps', {\n ...currentProps,\n sortColumn: direction ? column : null,\n sortDirection: direction,\n });\n\n await performInteraction({\n id,\n interactionType: 'tableSort',\n payload: {\n sortColumn: direction ? column : null,\n sortDirection: direction,\n tableId: id,\n },\n affectedComponents: getAffectedComponentsWithLoader([id], true),\n });\n }\n\n return (\n <Card\n ref={cardRef}\n className=\"shadow border relative flex flex-col h-fit overflow-hidden\"\n data-component-type=\"table\"\n data-table-id={gjsModel.get('id')}\n >\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"title\" contentEditable={isEditable} className=\"text-2xl\">\n {title}\n </CardTitle>\n <CardDescription data-slot=\"subTitle\" contentEditable={isEditable} className=\"text-sm\">\n {subTitle}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent\n data-slot=\"bodyContent\"\n contentEditable={false}\n className=\"flex-1 flex flex-col overflow-hidden\"\n >\n {attributes.error || allData.error || attributes.isMissing || allData.isMissing ? (\n renderNoDataFallback()\n ) : (\n <DataTable\n data={parsedData}\n headerMapper={headerMapper}\n className={className}\n isEditable={isEditable}\n actions={actions}\n pagination={pagination}\n isLoading={attributes.interactionApiInProgress || attributes.loading}\n onRowAction={onRowAction}\n onPageChange={onPageChange}\n onSort={handleSort}\n sortConfig={sortConfig}\n otherProps={rest}\n height={scrollAreaHeight}\n />\n )}\n </CardContent>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n tableActions={actions}\n firstRowData={Array.isArray(data) && data.length > 0 ? data[0] : {}}\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\nexport function renderTab(props: any): JSX.Element {\n let tabsWidth = 157;\n const safeTabs = Array.isArray(props.tabs) ? props.tabs : [];\n const showFallback = safeTabs.length === 0;\n\n if (safeTabs.length > 4) {\n tabsWidth = 157;\n }\n\n const defaultValue = props.defaultValue || (safeTabs.length > 0 ? safeTabs[0] : undefined);\n\n return (\n <Tabs defaultValue={defaultValue}>\n <div className=\"text-center mb-4\">\n <TabsList className=\"bg-[#F9F9FE] border border-[#D4D5DE] p-1 rounded-lg h-auto\">\n {safeTabs.length > 0 ? (\n safeTabs.map((tab: string) => (\n <TabsTrigger\n value={tab}\n key={tab}\n className={`\n w-[${tabsWidth}px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n `}\n style={{\n fontFamily: 'Helvetica Neue',\n fontWeight: 500,\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: '0%',\n }}\n >\n {tab}\n </TabsTrigger>\n ))\n ) : (\n <TabsTrigger\n value=\"no-data\"\n className={`\n w-[${tabsWidth}px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n `}\n style={{\n fontFamily: 'Helvetica Neue',\n fontWeight: 500,\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: '0%',\n }}\n disabled\n >\n No tabs\n </TabsTrigger>\n )}\n </TabsList>\n </div>\n {showFallback ? (\n <TabsContent\n value={defaultValue || 'no-data'}\n className=\"tabs-content\"\n data-fallback=\"true\"\n >\n {renderNoDataFallback()}\n </TabsContent>\n ) : (\n safeTabs.map((tab: string) => (\n <TabsContent value={tab} className=\"tabs-content\" key={tab} />\n ))\n )}\n </Tabs>\n );\n}\n\nexport function renderMarkdown(props: any): JSX.Element {\n const { gjsModel, ...rest } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n const [isEditing, setIsEditing] = useState(false);\n const [isEditingHeading, setIsEditingHeading] = useState(false);\n const editRef = useRef<HTMLDivElement>(null);\n const headingEditRef = useRef<HTMLDivElement>(null);\n\n const startEditing = () => {\n setIsEditing(true);\n setTimeout(() => {\n setupEditor();\n }, 0);\n };\n\n const startEditingHeading = () => {\n setIsEditingHeading(true);\n setTimeout(() => {\n setupHeadingEditor();\n }, 0);\n };\n\n const setupEditor = () => {\n if (!editRef.current) {\n return;\n }\n\n const editor = editRef.current;\n editor.innerHTML = '';\n editor.textContent = allData.summaryText;\n editor.focus();\n };\n\n const setupHeadingEditor = () => {\n if (!headingEditRef.current) {\n return;\n }\n\n const editor = headingEditRef.current;\n editor.innerHTML = '';\n editor.textContent = allData.summaryHeading || 'Insights';\n editor.focus();\n };\n\n // Save changes and exit editing mode\n const saveChanges = () => {\n if (!editRef.current) {\n return;\n }\n\n const content = editRef.current.innerText || '';\n setAllData((prev: Record<string, any>) => ({\n ...prev,\n summaryText: content,\n }));\n setIsEditing(false);\n editRef.current.innerHTML = '';\n };\n\n const saveHeadingChanges = () => {\n if (!headingEditRef.current) {\n return;\n }\n\n const content = headingEditRef.current.innerText || 'Insights';\n setAllData((prev: Record<string, any>) => ({\n ...prev,\n summaryHeading: content,\n }));\n setIsEditingHeading(false);\n headingEditRef.current.innerHTML = '';\n };\n\n const markdownStyles = {\n ul: { props: { className: 'list-disc' } },\n h1: { props: { className: 'text-4xl font-bold leading-[4rem]' } },\n h2: { props: { className: 'text-3xl font-bold leading-[3rem]' } },\n h3: { props: { className: 'text-2xl font-bold leading-[2rem]' } },\n h4: { props: { className: 'text-xl font-bold leading-[2.5rem]' } },\n h5: { props: { className: 'text-lg font-bold leading-[2.5rem]' } },\n h6: { props: { className: 'text-base font-bold leading-[2rem]' } },\n };\n\n const hasError = attributes.error || allData.error;\n const hasMissing = attributes.isMissing || allData.isMissing;\n const isLoading =\n (attributes.loading && !hasError && !hasMissing) || attributes.interactionApiInProgress;\n\n if (isLoading) {\n return <MarkdownLoader />;\n }\n\n if (hasError || hasMissing) {\n return (\n <div className=\"px-[1em] relative\" {...rest}>\n <h3 className=\"text-xl font-semibold text-left\">{allData.summaryHeading || 'Insights'}</h3>\n <div\n className=\"w-full py-8 flex flex-col items-center justify-center px-6 text-center\"\n style={{ minHeight: '180px' }}\n >\n <CircleAlert className=\"w-12 h-12 text-gray-400 mb-2\" />\n <h3 className=\"text-lg font-medium text-gray-900\">No data available</h3>\n <p className=\"mt-2 text-sm text-gray-500 max-w-md\">\n Check your filters or try a different time range.\n </p>\n </div>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n }\n\n if (!isEditable) {\n return (\n <div className=\"px-[1em] relative\" {...rest}>\n <h3 className=\"text-xl font-semibold text-left\">{allData.summaryHeading || 'Insights'}</h3>\n <div data-slot=\"summaryText\">\n <Markdown options={{ overrides: markdownStyles }}>{allData.summaryText}</Markdown>\n </div>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n }\n\n return (\n <div className=\"p-[1em] relative\" {...rest}>\n {isEditingHeading ? (\n <div\n ref={headingEditRef}\n contentEditable\n onBlur={saveHeadingChanges}\n data-slot=\"summaryHeading\"\n className=\"text-xl font-semibold text-left\"\n suppressContentEditableWarning={true}\n />\n ) : (\n <h3\n className=\"text-xl font-semibold text-left\"\n onClick={startEditingHeading}\n data-slot=\"summaryHeading\"\n >\n {allData.summaryHeading || 'Insights'}\n </h3>\n )}\n {isEditing ? (\n <div\n ref={editRef}\n contentEditable\n onBlur={saveChanges}\n data-slot=\"summaryText\"\n className=\"p-2 min-h-[100px] whitespace-pre-wrap\"\n suppressContentEditableWarning={true}\n style={{\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n }}\n />\n ) : (\n <div\n onClick={startEditing}\n data-slot=\"summaryText\"\n style={{\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n }}\n >\n <Markdown options={{ overrides: markdownStyles }}>{allData.summaryText}</Markdown>\n </div>\n )}\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n}\n\nexport function renderButton(props: any): JSX.Element {\n const { gjsModel, performInteraction = () => {} } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n useEffect(() => {\n gjsModel.on('change:componentProps', () => {\n setAllData({\n ...gjsModel.get('componentProps'),\n });\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const {\n text,\n className,\n payload,\n variant = 'default',\n size = 'sm',\n affectedComponents,\n tooltipContent,\n } = allData;\n\n function interact() {\n const id = gjsModel.get('id');\n performInteraction({\n id,\n interactionType: 'button',\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n payload,\n });\n }\n\n return (\n <TooltipButton\n className={className}\n isEditable={isEditable}\n interact={interact}\n attributes={attributes}\n variant={variant}\n size={size}\n text={text}\n tooltipContent={tooltipContent}\n />\n );\n}\n\nconst renderActionCardWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'ActionCard' }}>\n {renderActionCard(props)}\n </ComponentWrapper>\n);\n\nconst renderButtonWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Button' }}>\n {renderButton(props)}\n </ComponentWrapper>\n);\n\nconst renderCardWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Card' }}>\n {renderCard(props)}\n </ComponentWrapper>\n);\n\nconst renderChartWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Chart' }}>\n {renderChart(props)}\n </ComponentWrapper>\n);\n\nconst renderFilterWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Filter' }}>\n {renderFilter(props)}\n </ComponentWrapper>\n);\n\nconst renderMarkdownWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Markdown' }}>\n {renderMarkdown(props)}\n </ComponentWrapper>\n);\n\nconst renderSearchWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Search' }}>\n {renderSearch(props)}\n </ComponentWrapper>\n);\n\nconst renderTableWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Table' }}>\n {renderTable(props)}\n </ComponentWrapper>\n);\n\nconst renderTabWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Tabs' }}>\n {renderTab(props)}\n </ComponentWrapper>\n);\n\nfunction renderActions(props: any): JSX.Element {\n const { actions, isEditable = false, gjsModel } = props;\n\n if (actions === null) {\n return <div />;\n }\n\n if (!Array.isArray(actions) || actions.length === 0) {\n return (\n <div className=\"bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none relative\">\n <CardLoader />\n </div>\n );\n }\n\n return (\n <div className=\"dashboard-cards flex flex-wrap gap-4\">\n {actions.map((action: any, index: number) => {\n const { icon, title, description } = action;\n\n return (\n <div key={index} className=\"flex-1 min-w-[200px]\">\n {renderActionCard({\n icon,\n headerContent: title,\n bodyContent: description,\n isEditable,\n gjsModel,\n })}\n </div>\n );\n })}\n </div>\n );\n}\n\nconst renderActionsWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Actions' }}>\n {renderActions(props)}\n </ComponentWrapper>\n);\n\nexport function getRenderers(): Record<string, (props: any) => JSX.Element> {\n return {\n ActionCard: renderActionCardWithWrapper,\n Actions: renderActionsWithWrapper,\n Button: renderButtonWithWrapper,\n Card: renderCardWithWrapper,\n Chart: renderChartWithWrapper,\n Filter: renderFilterWithWrapper,\n Markdown: renderMarkdownWithWrapper,\n Search: renderSearchWithWrapper,\n Table: renderTableWithWrapper,\n Tabs: renderTabWithWrapper,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"render-components.js","names":["chroma","React","useEffect","useState","useMemo","useRef","renderNoDataFallback","CircleAlert","TrendingDown","TrendingUp","ShoppingCart","ChartBarBig","Tag","MapPin","StyledInfoButton","filterPlaceholders","theme","Markdown","Bar","BarChart","CartesianGrid","Legend","Line","LineChart","Pie","PieChart","ResponsiveContainer","XAxis","YAxis","domutil","TooltipButton","Card","CardContent","CardDescription","CardFooter","CardHeader","CardTitle","ChartContainer","ChartTooltip","ChartTooltipContent","renderFilter","renderSearch","CardLoader","ChartLoader","MarkdownLoader","Tabs","TabsContent","TabsList","TabsTrigger","cn","getAffectedComponentsWithLoader","DataTable","ComponentWrapper","jsx","_jsx","jsxs","_jsxs","getOffset","el","html","ownerDocument","documentElement","box","top","left","getBoundingClientRect","iframe","document","querySelector","iframeWindow","contentWindow","pageYOffset","clientTop","pageXOffset","clientLeft","baseColors","colors","Blue_100","Blue_30","Purpley_100","Purpley_30","Light_Bluish_Green","Wild_Strawberry","iconMap","Equalizer","Style","Place","getIconFromString","iconString","lowerIconString","toLowerCase","matchingKey","Object","keys","find","key","getNColors","n","safeBaseColors","Array","isArray","_iterator","_createForOfIteratorHelperLoose","_step","done","baseColor","value","push","scale","mode","getOneColor","existing","color","base","Math","floor","random","length","selectedColorIndex","includes","selectedColors","i","renderActionCard","props","gjsModel","rest","_objectWithoutPropertiesLoose","_excluded","initialData","_useState","allData","setAllData","_allData$headerConten","headerContent","icon","_allData$bodyContent","bodyContent","_useState2","_extends","get","attributes","setAttributes","handlePropsChange","newComponentProps","filteredProps","prevData","on","off","defaultClasses","className","style","backgroundColor","isEditable","contentEditable","children","error","isMissing","renderCard","_attributes$isEditabl","_attributes$error","_attributes$isMissing","_props$performInterac","performInteraction","Promise","resolve","_excluded2","_useState3","headerDescription","footerContent","footerClass","footerIcon","contentMetadata","contentMetadataClass","dataClassName","dataError","dataIsMissing","toSafeText","JSON","stringify","safeHeaderContent","safeHeaderDescription","safeBodyContent","safeFooterContent","safeContentMetadata","_useState4","footerHasContent","setFooterHasContent","_useState5","defaultFooterClasses","defaultContentMetadataClasses","mergedCardClassName","mergedFooterClassName","mergedContentMetadataClassName","hasError","Boolean","hasMissing","isLoading","interactionApiInProgress","loading","footerIconText","String","getCardContent","showEmpty","handleFooterInput","event","target","content","textContent","hasContent","trim","currentProps","set","isEmptied","Fragment","onInput","componentId","position","isVisible","componentProps","renderChartComponent","chartType","data","config","safeData","cursor","hideLabel","dataKey","nameKey","innerRadius","strokeWidth","label","_ref","name","percent","toFixed","undefined","labelLine","dataKeys","barDataKeys","chartUi","barGap","vertical","xAxis","align","wrapperStyle","marginLeft","map","_ref2","fill","radius","indicator","safeDataKeysLine","_ref3","type","stroke","_ref4","renderChart","_attributes$isEditabl2","_props$performInterac2","_excluded3","_useState6","_useState7","containerRef","_useState8","containerWidth","setContainerWidth","handleAttributesChange","newAttributes","updateContainerWidth","current","offsetWidth","resizeObserver","ResizeObserver","entries","_iterator2","_step2","entry","contentRect","width","timeoutId","setTimeout","observe","window","addEventListener","clearTimeout","disconnect","removeEventListener","_allData$config","_allData$chartType","_allData$chartData","chartData","_allData$title","title","_allData$subTitle","subTitle","mergedClasses","safeChartData","forEach","totalDataPoints","safeDataKeys","max","getScrollableWidth","scrollWidth","shouldScroll","ChartWrapper","_ref5","minWidth","height","ref","renderTable","_attributes$isEditabl3","_props$performInterac3","_excluded4","_useState9","cardRef","_useState10","rawData","_allData$headerMapper","headerMapper","rawHeaderMapper","_allData$title2","_allData$subTitle2","_allData$actions","actions","pagination","cleaned","id","fromEntries","filter","_ref6","sortConfig","_gjsModel$get","_ref8","_ref7","sortColumn","sortDirection","_useState11","viewportWidth","setViewportWidth","_useState12","scrollAreaHeight","setScrollAreaHeight","calculateTableHeight","tableWidth","rowCount","_gjsModel$collection","widthRatio","baseTableHeight","targetScrollAreaHeight","headerHeight","rowHeight","calculatedHeight","min","tableId","editor","em","collection","canvasDocument","Canvas","getDocument","tableElement","headerElement","offsetHeight","actualHeaderHeight","standardHeaderHeight","heightDifference","updateViewportWidth","iframeDocument","dashboardRoot","getElementById","effectiveViewportWidth","clientWidth","updateTableWidthAndApplyCSS","_gjsModel$collection2","parent","tableActualWidth","parsedData","datum","newData","onRowAction","_x","_x2","_onRowAction","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","rowIndex","actionId","wrap","_callee$","_context","prev","next","interactionType","payload","row","affectedComponents","stop","onPageChange","_x3","_x4","_onPageChange","_callee2","pageNumber","pageSize","_gjsModel$get2","_ref9","_callee2$","_context2","handleSort","_x5","_x6","_handleSort","_callee3","column","direction","_callee3$","_context3","onSort","otherProps","tableActions","firstRowData","renderTab","tabsWidth","safeTabs","tabs","showFallback","defaultValue","tab","fontFamily","fontWeight","fontSize","lineHeight","letterSpacing","disabled","renderMarkdown","_attributes$isEditabl4","_excluded5","_useState13","_useState14","_useState15","isEditing","setIsEditing","_useState16","isEditingHeading","setIsEditingHeading","editRef","headingEditRef","startEditing","setupEditor","startEditingHeading","setupHeadingEditor","innerHTML","summaryText","focus","summaryHeading","saveChanges","innerText","saveHeadingChanges","markdownStyles","ul","h1","h2","h3","h4","h5","h6","minHeight","options","overrides","onBlur","suppressContentEditableWarning","onClick","whiteSpace","wordWrap","renderButton","_attributes$isEditabl5","_props$performInterac4","_useState17","_useState18","text","_allData$variant","variant","_allData$size","size","tooltipContent","interact","concat","renderActionCardWithWrapper","componentType","renderButtonWithWrapper","renderCardWithWrapper","renderChartWithWrapper","renderFilterWithWrapper","renderMarkdownWithWrapper","renderSearchWithWrapper","renderTableWithWrapper","renderTabWithWrapper","renderActions","_props$isEditable","action","index","description","renderActionsWithWrapper","getRenderers","ActionCard","Actions","Button","Chart","Filter","Search","Table"],"sources":["../../../src/plugins/helpers/render-components.tsx"],"sourcesContent":["/* eslint-disable no-nested-ternary */\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable func-style */\n/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable func-names */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport chroma from 'chroma-js';\nimport React, { useEffect, useState, useMemo, JSX, useRef } from 'react';\nimport { renderNoDataFallback } from './extra';\nimport {\n CircleAlert,\n TrendingDown,\n TrendingUp,\n ShoppingCart,\n ChartBarBig,\n Tag,\n MapPin,\n} from 'lucide-react';\nimport { StyledInfoButton } from './styled-info-button';\nimport { filterPlaceholders } from '../../helpers/filter-placeholder';\n\nimport { theme } from '@peak-ai/ais-components/theme';\n\nimport Markdown from 'markdown-to-jsx';\n\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n Line,\n LineChart,\n Pie,\n PieChart,\n ResponsiveContainer,\n XAxis,\n YAxis,\n} from 'recharts/lib';\n\n// @ts-ignore\nimport * as domutil from 'recharts/lib/util/DOMUtils';\n\nimport { TooltipButton } from '../../shadcn/components/ui/button';\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from '../../shadcn/components/ui/card';\nimport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n} from '../../shadcn/components/ui/chart';\nimport { renderFilter } from '../../shadcn/components/ui/filter';\nimport { renderSearch } from '../../shadcn/components/ui/search';\nimport { CardLoader, ChartLoader, MarkdownLoader } from '../../shadcn/components/ui/skeleton';\nimport { SortDirection } from '../../shadcn/components/ui/table';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '../../shadcn/components/ui/tabs';\n\nimport { cn } from '../../shadcn/utils';\nimport { getAffectedComponentsWithLoader } from '../../helpers';\nimport { DataTable } from './data-table';\nimport { ComponentWrapper } from '../../shadcn/components/ui/error-wrapper';\n\n// Monkey-patching the getOffset function to use iframe's window instead of global one\n// REMEMBER TO UDPATE THIS WHEN recharts IS UPGRADED\n// @ts-ignore\ndomutil.getOffset = (\n el: HTMLElement,\n): {\n top: number;\n left: number;\n} => {\n const html = el.ownerDocument.documentElement;\n let box = { top: 0, left: 0 };\n\n if (typeof el.getBoundingClientRect !== 'undefined') {\n box = el.getBoundingClientRect();\n }\n\n const iframe = document.querySelector('.gjs-frame');\n const iframeWindow = (iframe as any)?.contentWindow;\n\n return {\n top: box.top + iframeWindow.pageYOffset - html.clientTop,\n left: box.left + iframeWindow.pageXOffset - html.clientLeft,\n };\n};\n\nconst baseColors = [\n [theme.colors.Blue_100, theme.colors.Blue_30],\n [theme.colors.Purpley_100, theme.colors.Purpley_30],\n [theme.colors.Light_Bluish_Green, '#06601b'],\n [theme.colors.Wild_Strawberry, '#4d001c'],\n];\n\nconst iconMap: Record<string, JSX.Element> = {\n TrendingUp: <TrendingUp />,\n TrendingDown: <TrendingDown />,\n ShoppingCart: <ShoppingCart />,\n Equalizer: <ChartBarBig />,\n Style: <Tag />,\n Place: <MapPin />,\n};\n\nfunction getIconFromString(iconString: string): JSX.Element | null {\n if (!iconString) {\n return null;\n }\n\n if (iconMap[iconString]) {\n return iconMap[iconString];\n }\n\n const lowerIconString = iconString.toLowerCase();\n const matchingKey = Object.keys(iconMap).find((key) => key.toLowerCase() === lowerIconString);\n\n if (matchingKey) {\n return iconMap[matchingKey];\n }\n\n return null;\n}\n\nfunction getNColors(n: number) {\n const colors: Array<string[]> = [];\n const safeBaseColors = Array.isArray(baseColors) ? baseColors : [];\n\n for (const baseColor of safeBaseColors) {\n // eslint-disable-next-line import/no-named-as-default-member\n colors.push(chroma.scale(baseColor).mode('lab').colors(n));\n }\n\n function getOneColor(existing: Array<string>) {\n let color: null | string = null;\n\n do {\n const base = colors[Math.floor(Math.random() * colors.length)];\n const selectedColorIndex = Math.floor(Math.random() * base.length);\n color = base[selectedColorIndex];\n } while (existing.includes(color));\n\n return color as string;\n }\n\n const selectedColors: Array<string> = [];\n\n for (let i = 0; i < n; i++) {\n selectedColors.push(getOneColor(selectedColors));\n }\n\n return selectedColors;\n}\n\n/* TODO: Loader remains */\nexport function renderActionCard(props: any): JSX.Element {\n const { gjsModel, ...rest } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const {\n headerContent = 'Default action card title',\n icon,\n bodyContent = 'Default body content. Click to edit.',\n } = allData;\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData,\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const defaultClasses = 'text-black p-4 rounded-lg shadow border flex flex-col h-full';\n\n return (\n <Card\n className={`${defaultClasses} relative`}\n style={{ backgroundColor: '#f9f9fe' }}\n isEditable={false}\n contentEditable={false}\n {...rest}\n >\n <CardContent className=\"p-0\" isEditable={false} contentEditable={false}>\n <div className=\"px-4 py-3\">\n <div className=\"flex items-start flex-col\">\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"text-xl font-semibold\">{headerContent}</div>\n <div className=\"text-5xl ml-2 flex items-center\" aria-hidden=\"true\">\n {getIconFromString(icon)}\n </div>\n </div>\n <div className=\"w-full mt-1\">\n {attributes.error ||\n allData.error ||\n attributes.isMissing ||\n allData.isMissing ||\n !bodyContent ? (\n <span className=\"flex flex-row items-center px-3 py-2\">\n <CircleAlert className=\"w-3 h-3 text-gray-400 mr-1\" />\n <p className=\"text-sm text-gray-500 max-w-md text-center\">\n No data available for given filters\n </p>\n </span>\n ) : (\n <div className=\"text-base leading-relaxed\">{bodyContent}</div>\n )}\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n );\n}\n\nexport function renderCard(props: any): JSX.Element {\n const {\n gjsModel,\n performInteraction = () => Promise.resolve({}),\n ...rest\n } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const {\n headerContent,\n headerDescription,\n bodyContent,\n footerContent,\n footerClass,\n footerIcon,\n contentMetadata,\n contentMetadataClass,\n className: dataClassName,\n error: dataError,\n isMissing: dataIsMissing,\n } = allData;\n\n function toSafeText(value: unknown): string {\n if (!value) {\n return '';\n }\n\n return typeof value === 'string' ? value : JSON.stringify(value);\n }\n\n const safeHeaderContent = toSafeText(headerContent);\n const safeHeaderDescription = toSafeText(headerDescription);\n const safeBodyContent = toSafeText(bodyContent);\n const safeFooterContent = toSafeText(footerContent);\n const safeContentMetadata = toSafeText(contentMetadata);\n\n const [footerHasContent, setFooterHasContent] = useState(safeFooterContent?.length > 0);\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData,\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n useEffect(() => {\n setFooterHasContent(safeFooterContent?.length > 0);\n }, [safeFooterContent]);\n\n const defaultClasses =\n 'bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none';\n const defaultFooterClasses = footerHasContent\n ? 'text-sm bg-pink-50 text-pink-900 shadow-sm'\n : 'text-sm';\n const defaultContentMetadataClasses = 'text-xs';\n\n const mergedCardClassName = dataClassName ? cn(defaultClasses, dataClassName) : defaultClasses;\n const mergedFooterClassName = footerClass\n ? cn(defaultFooterClasses, footerClass)\n : defaultFooterClasses;\n const mergedContentMetadataClassName = contentMetadataClass\n ? cn(defaultContentMetadataClasses, contentMetadataClass)\n : defaultContentMetadataClasses;\n\n const hasError = Boolean(attributes?.error ?? dataError);\n const hasMissing = Boolean(attributes?.isMissing ?? dataIsMissing);\n const isLoading = Boolean(\n (attributes?.interactionApiInProgress || attributes?.loading) && !hasError && !hasMissing,\n );\n\n const footerIconText =\n typeof footerIcon === 'string'\n ? footerIcon\n : footerIcon && typeof footerIcon === 'object' && 'icon' in (footerIcon as any)\n ? String((footerIcon as any).icon)\n : '';\n\n function getCardContent() {\n if (isLoading) {\n return (\n <CardContent>\n <CardLoader />\n </CardContent>\n );\n }\n\n const showEmpty = hasError || hasMissing || !safeBodyContent;\n\n function handleFooterInput(event: React.FormEvent<HTMLDivElement>) {\n const target = event.target as HTMLDivElement;\n const content = target.textContent || '';\n const hasContent = content.trim().length > 0;\n\n setFooterHasContent(hasContent);\n\n if (!hasContent) {\n const currentProps = gjsModel.get('componentProps');\n gjsModel.set('componentProps', {\n ...currentProps,\n footerContent: null,\n footerIcon: null,\n footerClass: null,\n isEmptied: true,\n });\n }\n }\n\n return (\n <React.Fragment>\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"headerContent\" contentEditable={isEditable} className=\"text-lg\">\n {safeHeaderContent}\n </CardTitle>\n <CardDescription\n data-slot=\"headerDescription\"\n contentEditable={isEditable}\n className=\"text-sm\"\n >\n {safeHeaderDescription}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n\n {showEmpty ? (\n <span className=\"flex flex-row items-center px-3 py-2\">\n <CircleAlert className=\"w-3 h-3 text-gray-400 mr-1\" />\n <p className=\"text-sm text-gray-500 max-w-md text-center\">\n No data available for given filters\n </p>\n </span>\n ) : (\n <CardContent data-slot=\"bodyContent\" contentEditable={false} className=\"flex-grow\">\n <div className=\"text-3xl font-semibold truncate\">{safeBodyContent}</div>\n {safeContentMetadata && (\n <div className={mergedContentMetadataClassName} style={{ color: '#2A44D4' }}>\n {safeContentMetadata}\n </div>\n )}\n </CardContent>\n )}\n\n <CardFooter\n data-slot=\"footerContent\"\n contentEditable={isEditable}\n className={mergedFooterClassName}\n onInput={handleFooterInput}\n >\n {(footerIconText || '').trim() ? (\n <span className=\"mr-2\" aria-hidden=\"true\">\n {footerIconText}\n </span>\n ) : null}\n {safeFooterContent || ''}\n </CardFooter>\n </React.Fragment>\n );\n }\n\n return (\n <Card {...rest} isEditable={false} className={`${mergedCardClassName} relative`}>\n {getCardContent()}\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\nfunction renderChartComponent(chartType: string, data: any, config: any): JSX.Element {\n const safeData = Array.isArray(data) ? data : [];\n\n if (safeData.length === 0) {\n return renderNoDataFallback();\n }\n\n switch (chartType) {\n case 'pie':\n return (\n <PieChart>\n {safeData.length >= 20 && (\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n )}\n <Pie\n data={safeData}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n safeData.length < 20\n ? ({ name, percent }: { name: string; percent: number }) =>\n `${name}: ${(percent * 100).toFixed(0)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n\n case 'bar': {\n config.dataKeys = config.dataKeys || [];\n\n const barDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n return (\n <BarChart data={safeData} {...config.chartUi} {...(barDataKeys.length > 1 && { barGap: 0 })}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <Legend align=\"left\" wrapperStyle={{ marginLeft: 20 }} />\n {barDataKeys.map(({ key, name, color }: { key: string; name: string; color: string }) => {\n return <Bar dataKey={key} fill={color ?? '#4caf50'} name={name} key={key} radius={2} />;\n })}\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n </BarChart>\n );\n }\n\n case 'line': {\n config.dataKeys = config.dataKeys || [];\n const safeDataKeysLine = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n\n return (\n <LineChart data={safeData} {...config.chartUi}>\n <CartesianGrid vertical={false} />\n <XAxis dataKey={config.xAxis} />\n <YAxis />\n <ChartTooltip cursor={false} content={<ChartTooltipContent indicator=\"dashed\" />} />\n {safeDataKeysLine.map(\n ({ key, name, color }: { key: string; name: string; color: string }) => {\n return (\n <Line\n type=\"monotone\"\n dataKey={key}\n stroke={color ?? '#4caf50'}\n name={name}\n key={key}\n />\n );\n },\n )}\n <Legend align=\"left\" />\n </LineChart>\n );\n }\n\n default:\n return (\n <PieChart>\n {safeData.length >= 20 && (\n <ChartTooltip cursor={false} content={<ChartTooltipContent hideLabel />} />\n )}\n <Pie\n data={safeData}\n dataKey={config.dataKey}\n nameKey={config.nameKey}\n innerRadius={60}\n strokeWidth={10}\n label={\n safeData.length < 20\n ? ({ name, percent }: { name: string; percent: number }) =>\n `${name}: ${(percent * 100).toFixed(0)}%`\n : undefined\n }\n labelLine={false}\n />\n </PieChart>\n );\n }\n}\n\nexport function renderChart(props: any): JSX.Element {\n const {\n gjsModel,\n performInteraction = () => Promise.resolve({}),\n ...rest\n } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState<number>(0);\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n const newAttributes = gjsModel.get('attributes');\n setAttributes({\n ...newAttributes,\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const updateContainerWidth = () => {\n if (containerRef.current) {\n setContainerWidth(containerRef.current.offsetWidth || 0);\n }\n };\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContainerWidth(entry.contentRect.width || 0);\n }\n });\n\n updateContainerWidth();\n\n const timeoutId = setTimeout(updateContainerWidth, 50);\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n window.addEventListener('resize', updateContainerWidth);\n\n return () => {\n clearTimeout(timeoutId);\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateContainerWidth);\n };\n }, []);\n\n const {\n config = {},\n chartType = 'pie',\n chartData = [],\n className,\n title = 'Title',\n subTitle = 'Subtitle',\n } = allData;\n\n const defaultClasses = 'aspect-auto h-[250px] w-full';\n const mergedClasses = className ? cn(defaultClasses, className) : defaultClasses;\n\n if (chartType === 'pie') {\n const safeChartData = Array.isArray(chartData) ? chartData : [];\n const colors = getNColors(safeChartData.length);\n safeChartData.forEach((data, i) => {\n if (!data.fill) {\n data.fill = colors[i];\n }\n });\n } else if (!config.color) {\n const safeBaseColors = Array.isArray(baseColors) ? baseColors : [];\n\n if (safeBaseColors.length > 0) {\n config.color = safeBaseColors[Math.floor(Math.random() * safeBaseColors.length)];\n }\n }\n\n let totalDataPoints = 0;\n\n if (chartType === 'bar' || chartType === 'line') {\n const safeChartData = Array.isArray(chartData) ? chartData : [];\n const safeDataKeys = Array.isArray(config.dataKeys) ? config.dataKeys : [];\n totalDataPoints =\n chartType === 'bar'\n ? safeChartData.length * Math.max(1, safeDataKeys.length)\n : safeChartData.length;\n }\n\n const getScrollableWidth = () => {\n if (chartType === 'line') {\n return totalDataPoints * 20;\n }\n\n if (chartType === 'bar') {\n return (\n totalDataPoints * 20 +\n (Array.isArray(config.dataKeys) ? config.dataKeys.length : 0) *\n 8 *\n (Array.isArray(chartData) ? chartData.length : 0) +\n (Array.isArray(chartData) ? chartData.length : 0) * 15\n );\n }\n\n return 800;\n };\n\n const scrollWidth = getScrollableWidth();\n const shouldScroll =\n (chartType === 'bar' || chartType === 'line') &&\n totalDataPoints > 15 &&\n scrollWidth > containerWidth;\n\n const hasError = attributes.error || allData.error;\n const hasMissing = attributes.isMissing || allData.isMissing;\n const isLoading =\n (attributes.interactionApiInProgress || attributes.loading) && !hasError && !hasMissing;\n\n const ChartWrapper = ({ children }: { children: React.ReactNode }) => {\n if (shouldScroll) {\n return (\n <div className=\"w-full h-[250px] overflow-x-auto\">\n <div style={{ minWidth: `${scrollWidth}px`, height: '250px' }}>{children}</div>\n </div>\n );\n }\n\n return <div className=\"w-full h-[250px]\">{children}</div>;\n };\n\n const chartUi = isLoading ? (\n <ChartLoader />\n ) : hasError || hasMissing || !chartData ? (\n renderNoDataFallback()\n ) : (\n <ChartWrapper>\n <ResponsiveContainer width=\"100%\" height={250}>\n <ChartContainer {...rest} config={config} className={mergedClasses}>\n {renderChartComponent(chartType, chartData, config)}\n </ChartContainer>\n </ResponsiveContainer>\n </ChartWrapper>\n );\n\n return (\n <Card className=\"shadow border mt-2 mb-2 relative\">\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"title\" contentEditable={isEditable} className=\"text-2xl\">\n {title}\n </CardTitle>\n <CardDescription data-slot=\"subTitle\" contentEditable={isEditable} className=\"text-sm\">\n {subTitle}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent ref={containerRef} data-slot=\"bodyContent\" className=\"px-6\">\n {chartUi}\n </CardContent>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\nexport function renderTable(props: any): JSX.Element {\n const { gjsModel, performInteraction = () => {}, ...rest } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const cardRef = useRef<HTMLDivElement>(null);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n const {\n data: rawData,\n headerMapper: rawHeaderMapper = {},\n className,\n title = 'Title',\n subTitle = 'Subtitle',\n actions = [],\n pagination,\n } = allData;\n\n const data = Array.isArray(rawData) ? rawData : [];\n const headerMapper = (() => {\n const cleaned = { ...rawHeaderMapper };\n\n if ('id' in cleaned) {\n delete cleaned.id;\n }\n\n if (data.length > 0) {\n const dataKeys = Object.keys(data[0] || {});\n\n return Object.fromEntries(Object.entries(cleaned).filter(([key]) => dataKeys.includes(key)));\n }\n\n return cleaned;\n })();\n\n const sortConfig = (() => {\n const { sortColumn, sortDirection } = gjsModel.get('componentProps') ?? {};\n\n return sortColumn && sortDirection ? { [sortColumn]: sortDirection } : {};\n })();\n\n const [viewportWidth, setViewportWidth] = useState<number>(0);\n const [scrollAreaHeight, setScrollAreaHeight] = useState<number>(250);\n\n const calculateTableHeight = (tableWidth: number, rowCount: number) => {\n if (viewportWidth > 0) {\n const widthRatio = tableWidth / viewportWidth;\n const baseTableHeight = 250;\n let targetScrollAreaHeight = baseTableHeight;\n\n if (widthRatio >= 0.8) {\n const headerHeight = 48;\n const rowHeight = 40;\n const calculatedHeight = headerHeight + rowCount * rowHeight;\n targetScrollAreaHeight = Math.min(calculatedHeight, baseTableHeight);\n }\n\n const tableId = gjsModel.get('id');\n const editor = gjsModel.em || gjsModel.collection?.em;\n const canvasDocument = editor.Canvas.getDocument() || document;\n const tableElement = canvasDocument.querySelector(\n `[data-table-id=\"${tableId}\"]`,\n ) as HTMLElement;\n\n if (tableElement) {\n const headerElement = tableElement.querySelector(\n '[data-slot=\"card-header\"]',\n ) as HTMLElement;\n\n if (headerElement && headerElement.offsetHeight > 0) {\n const actualHeaderHeight = headerElement.offsetHeight;\n const standardHeaderHeight = 58;\n const heightDifference = actualHeaderHeight - standardHeaderHeight;\n\n if (heightDifference > 0) {\n targetScrollAreaHeight = targetScrollAreaHeight - heightDifference;\n }\n }\n }\n\n setScrollAreaHeight(targetScrollAreaHeight);\n }\n };\n\n useEffect(() => {\n const updateViewportWidth = () => {\n const iframe = document.querySelector('.gjs-frame');\n const iframeWindow = (iframe as any)?.contentWindow;\n const iframeDocument = iframeWindow?.document;\n\n if (iframeDocument) {\n const dashboardRoot = iframeDocument.getElementById('dashboard-root');\n const effectiveViewportWidth =\n dashboardRoot?.clientWidth || iframeDocument.documentElement.clientWidth;\n setViewportWidth(effectiveViewportWidth);\n }\n };\n\n updateViewportWidth();\n window.addEventListener('resize', updateViewportWidth);\n\n const iframe = document.querySelector('.gjs-frame');\n const iframeWindow = (iframe as any)?.contentWindow;\n\n if (iframeWindow) {\n iframeWindow.addEventListener('resize', updateViewportWidth);\n }\n\n return () => {\n window.removeEventListener('resize', updateViewportWidth);\n\n if (iframeWindow) {\n iframeWindow.removeEventListener('resize', updateViewportWidth);\n }\n };\n }, []);\n\n useEffect(() => {\n const updateTableWidthAndApplyCSS = () => {\n const tableId = gjsModel.get('id');\n const editor = gjsModel.em || gjsModel.collection?.em;\n const canvasDocument = editor.Canvas.getDocument() || document;\n\n let tableElement = canvasDocument.querySelector(\n `[data-table-id=\"${tableId}\"]`,\n ) as HTMLElement;\n\n if (!tableElement && window.parent !== window) {\n tableElement = window.parent.document.querySelector(\n `[data-table-id=\"${tableId}\"]`,\n ) as HTMLElement;\n }\n\n if (!tableElement) {\n return;\n }\n\n const tableActualWidth = tableElement.getBoundingClientRect().width;\n\n if (tableActualWidth > 0) {\n calculateTableHeight(tableActualWidth, Array.isArray(data) ? data.length : 0);\n }\n };\n\n const timeoutId = setTimeout(updateTableWidthAndApplyCSS, 150);\n window.addEventListener('resize', updateTableWidthAndApplyCSS);\n\n return () => {\n clearTimeout(timeoutId);\n window.removeEventListener('resize', updateTableWidthAndApplyCSS);\n };\n }, [allData, gjsModel, viewportWidth, data, calculateTableHeight]);\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n const parsedData = (() => {\n if (\n typeof data === 'object' &&\n data !== null &&\n !Array.isArray(data) &&\n (data as any).name === '__peak_placeholder'\n ) {\n return [];\n }\n\n if (!Array.isArray(data)) {\n return [];\n }\n\n return data.map((datum: any) => {\n const newData = {\n ...datum,\n };\n\n delete newData.id;\n\n return newData;\n });\n })();\n\n async function onRowAction(rowIndex: number, actionId: string) {\n const id = gjsModel.get('id');\n\n await performInteraction({\n id: actionId,\n interactionType: 'tableButton',\n payload: {\n row: data[rowIndex],\n tableId: id,\n },\n affectedComponents: [],\n });\n }\n\n async function onPageChange(pageNumber: number, pageSize: number) {\n const id = gjsModel.get('id');\n const { sortColumn, sortDirection } = gjsModel.get('componentProps') ?? {};\n\n await performInteraction({\n id,\n interactionType: 'pagination',\n payload: {\n pageNumber,\n pageSize,\n ...(sortColumn && sortDirection && { sortColumn, sortDirection }),\n },\n affectedComponents: getAffectedComponentsWithLoader([id], true),\n });\n }\n\n async function handleSort(column: string, direction: SortDirection) {\n const currentProps = gjsModel.get('componentProps');\n const id = gjsModel.get('id');\n\n gjsModel.set('componentProps', {\n ...currentProps,\n sortColumn: direction ? column : null,\n sortDirection: direction,\n });\n\n await performInteraction({\n id,\n interactionType: 'tableSort',\n payload: {\n sortColumn: direction ? column : null,\n sortDirection: direction,\n tableId: id,\n },\n affectedComponents: getAffectedComponentsWithLoader([id], true),\n });\n }\n\n return (\n <Card\n ref={cardRef}\n className=\"shadow border relative flex flex-col h-fit overflow-hidden\"\n data-component-type=\"table\"\n data-table-id={gjsModel.get('id')}\n >\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1\">\n <CardTitle data-slot=\"title\" contentEditable={isEditable} className=\"text-2xl\">\n {title}\n </CardTitle>\n <CardDescription data-slot=\"subTitle\" contentEditable={isEditable} className=\"text-sm\">\n {subTitle}\n </CardDescription>\n </div>\n </div>\n </CardHeader>\n <CardContent\n data-slot=\"bodyContent\"\n contentEditable={false}\n className=\"flex-1 flex flex-col overflow-hidden\"\n >\n {attributes.error || allData.error || attributes.isMissing || allData.isMissing ? (\n renderNoDataFallback()\n ) : (\n <DataTable\n data={parsedData}\n headerMapper={headerMapper}\n className={className}\n isEditable={isEditable}\n actions={actions}\n pagination={pagination}\n isLoading={attributes.interactionApiInProgress || attributes.loading}\n onRowAction={onRowAction}\n onPageChange={onPageChange}\n onSort={handleSort}\n sortConfig={sortConfig}\n otherProps={rest}\n height={scrollAreaHeight}\n />\n )}\n </CardContent>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={performInteraction}\n position=\"top-right\"\n tableActions={actions}\n firstRowData={Array.isArray(data) && data.length > 0 ? data[0] : {}}\n isVisible={isEditable}\n componentProps={allData}\n />\n </Card>\n );\n}\n\nexport function renderTab(props: any): JSX.Element {\n let tabsWidth = 157;\n const safeTabs = Array.isArray(props.tabs) ? props.tabs : [];\n const showFallback = safeTabs.length === 0;\n\n if (safeTabs.length > 4) {\n tabsWidth = 157;\n }\n\n const defaultValue = props.defaultValue || (safeTabs.length > 0 ? safeTabs[0] : undefined);\n\n return (\n <Tabs defaultValue={defaultValue}>\n <div className=\"text-center mb-4\">\n <TabsList className=\"bg-[#F9F9FE] border border-[#D4D5DE] p-1 rounded-lg h-auto\">\n {safeTabs.length > 0 ? (\n safeTabs.map((tab: string) => (\n <TabsTrigger\n value={tab}\n key={tab}\n className={`\n w-[${tabsWidth}px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n `}\n style={{\n fontFamily: 'Helvetica Neue',\n fontWeight: 500,\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: '0%',\n }}\n >\n {tab}\n </TabsTrigger>\n ))\n ) : (\n <TabsTrigger\n value=\"no-data\"\n className={`\n w-[${tabsWidth}px] h-[38px] gap-1 px-3 py-[11px]\n font-medium text-sm leading-4\n border-0 bg-[#F9F9FE] text-[#687387] rounded-none\n data-[state=active]:border data-[state=active]:border-solid data-[state=active]:border-[#2A44D4] data-[state=active]:bg-[#EAECFB] data-[state=active]:text-[#263DBF] data-[state=active]:shadow-none data-[state=active]:rounded-md\n transition-all duration-200\n `}\n style={{\n fontFamily: 'Helvetica Neue',\n fontWeight: 500,\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: '0%',\n }}\n disabled\n >\n No tabs\n </TabsTrigger>\n )}\n </TabsList>\n </div>\n {showFallback ? (\n <TabsContent\n value={defaultValue || 'no-data'}\n className=\"tabs-content\"\n data-fallback=\"true\"\n >\n {renderNoDataFallback()}\n </TabsContent>\n ) : (\n safeTabs.map((tab: string) => (\n <TabsContent value={tab} className=\"tabs-content\" key={tab} />\n ))\n )}\n </Tabs>\n );\n}\n\nexport function renderMarkdown(props: any): JSX.Element {\n const { gjsModel, ...rest } = props;\n\n // Memoize filtered props to avoid re-filtering on every render\n const initialData = useMemo(() => filterPlaceholders(props), []);\n const [allData, setAllData] = useState(initialData);\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n useEffect(() => {\n const handlePropsChange = () => {\n const newComponentProps = gjsModel.get('componentProps');\n const filteredProps = filterPlaceholders(newComponentProps);\n\n setAllData((prevData: any) => ({\n ...prevData, // Preserve existing data (including __sql_query_params)\n ...filteredProps,\n }));\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const handleAttributesChange = () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n };\n\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }, [gjsModel]);\n\n const [isEditing, setIsEditing] = useState(false);\n const [isEditingHeading, setIsEditingHeading] = useState(false);\n const editRef = useRef<HTMLDivElement>(null);\n const headingEditRef = useRef<HTMLDivElement>(null);\n\n const startEditing = () => {\n setIsEditing(true);\n setTimeout(() => {\n setupEditor();\n }, 0);\n };\n\n const startEditingHeading = () => {\n setIsEditingHeading(true);\n setTimeout(() => {\n setupHeadingEditor();\n }, 0);\n };\n\n const setupEditor = () => {\n if (!editRef.current) {\n return;\n }\n\n const editor = editRef.current;\n editor.innerHTML = '';\n editor.textContent = allData.summaryText;\n editor.focus();\n };\n\n const setupHeadingEditor = () => {\n if (!headingEditRef.current) {\n return;\n }\n\n const editor = headingEditRef.current;\n editor.innerHTML = '';\n editor.textContent = allData.summaryHeading || 'Insights';\n editor.focus();\n };\n\n // Save changes and exit editing mode\n const saveChanges = () => {\n if (!editRef.current) {\n return;\n }\n\n const content = editRef.current.innerText || '';\n setAllData((prev: Record<string, any>) => ({\n ...prev,\n summaryText: content,\n }));\n setIsEditing(false);\n editRef.current.innerHTML = '';\n };\n\n const saveHeadingChanges = () => {\n if (!headingEditRef.current) {\n return;\n }\n\n const content = headingEditRef.current.innerText || 'Insights';\n setAllData((prev: Record<string, any>) => ({\n ...prev,\n summaryHeading: content,\n }));\n setIsEditingHeading(false);\n headingEditRef.current.innerHTML = '';\n };\n\n const markdownStyles = {\n ul: { props: { className: 'list-disc' } },\n h1: { props: { className: 'text-4xl font-bold leading-[4rem]' } },\n h2: { props: { className: 'text-3xl font-bold leading-[3rem]' } },\n h3: { props: { className: 'text-2xl font-bold leading-[2rem]' } },\n h4: { props: { className: 'text-xl font-bold leading-[2.5rem]' } },\n h5: { props: { className: 'text-lg font-bold leading-[2.5rem]' } },\n h6: { props: { className: 'text-base font-bold leading-[2rem]' } },\n };\n\n const hasError = attributes.error || allData.error;\n const hasMissing = attributes.isMissing || allData.isMissing;\n const isLoading =\n (attributes.loading && !hasError && !hasMissing) || attributes.interactionApiInProgress;\n\n if (isLoading) {\n return <MarkdownLoader />;\n }\n\n if (hasError || hasMissing) {\n return (\n <div className=\"px-[1em] relative\" {...rest}>\n <h3 className=\"text-xl font-semibold text-left\">{allData.summaryHeading || 'Insights'}</h3>\n <div\n className=\"w-full py-8 flex flex-col items-center justify-center px-6 text-center\"\n style={{ minHeight: '180px' }}\n >\n <CircleAlert className=\"w-12 h-12 text-gray-400 mb-2\" />\n <h3 className=\"text-lg font-medium text-gray-900\">No data available</h3>\n <p className=\"mt-2 text-sm text-gray-500 max-w-md\">\n Check your filters or try a different time range.\n </p>\n </div>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n }\n\n if (!isEditable) {\n return (\n <div className=\"px-[1em] relative\" {...rest}>\n <h3 className=\"text-xl font-semibold text-left\">{allData.summaryHeading || 'Insights'}</h3>\n <div data-slot=\"summaryText\">\n <Markdown options={{ overrides: markdownStyles }}>{allData.summaryText}</Markdown>\n </div>\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n }\n\n return (\n <div className=\"p-[1em] relative\" {...rest}>\n {isEditingHeading ? (\n <div\n ref={headingEditRef}\n contentEditable\n onBlur={saveHeadingChanges}\n data-slot=\"summaryHeading\"\n className=\"text-xl font-semibold text-left\"\n suppressContentEditableWarning={true}\n />\n ) : (\n <h3\n className=\"text-xl font-semibold text-left\"\n onClick={startEditingHeading}\n data-slot=\"summaryHeading\"\n >\n {allData.summaryHeading || 'Insights'}\n </h3>\n )}\n {isEditing ? (\n <div\n ref={editRef}\n contentEditable\n onBlur={saveChanges}\n data-slot=\"summaryText\"\n className=\"p-2 min-h-[100px] whitespace-pre-wrap\"\n suppressContentEditableWarning={true}\n style={{\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n }}\n />\n ) : (\n <div\n onClick={startEditing}\n data-slot=\"summaryText\"\n style={{\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n }}\n >\n <Markdown options={{ overrides: markdownStyles }}>{allData.summaryText}</Markdown>\n </div>\n )}\n <StyledInfoButton\n componentId={gjsModel.get('id')}\n performInteraction={props.performInteraction}\n position=\"top-right\"\n isVisible={isEditable}\n componentProps={allData}\n />\n </div>\n );\n}\n\nexport function renderButton(props: any): JSX.Element {\n const { gjsModel, performInteraction = () => {} } = props;\n\n const [allData, setAllData] = useState({\n ...props,\n });\n\n const [attributes, setAttributes] = useState({\n ...gjsModel.get('attributes'),\n });\n const isEditable = attributes.isEditable ?? false;\n\n useEffect(() => {\n gjsModel.on('change:componentProps', () => {\n setAllData({\n ...gjsModel.get('componentProps'),\n });\n });\n }, []);\n\n useEffect(() => {\n gjsModel.on('change:attributes', () => {\n setAttributes({\n ...gjsModel.get('attributes'),\n });\n });\n }, []);\n\n const {\n text,\n className,\n payload,\n variant = 'default',\n size = 'sm',\n affectedComponents,\n tooltipContent,\n } = allData;\n\n function interact() {\n const id = gjsModel.get('id');\n performInteraction({\n id,\n interactionType: 'button',\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n payload,\n });\n }\n\n return (\n <TooltipButton\n className={className}\n isEditable={isEditable}\n interact={interact}\n attributes={attributes}\n variant={variant}\n size={size}\n text={text}\n tooltipContent={tooltipContent}\n />\n );\n}\n\nconst renderActionCardWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'ActionCard' }}>\n {renderActionCard(props)}\n </ComponentWrapper>\n);\n\nconst renderButtonWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Button' }}>\n {renderButton(props)}\n </ComponentWrapper>\n);\n\nconst renderCardWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Card' }}>\n {renderCard(props)}\n </ComponentWrapper>\n);\n\nconst renderChartWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Chart' }}>\n {renderChart(props)}\n </ComponentWrapper>\n);\n\nconst renderFilterWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Filter' }}>\n {renderFilter(props)}\n </ComponentWrapper>\n);\n\nconst renderMarkdownWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Markdown' }}>\n {renderMarkdown(props)}\n </ComponentWrapper>\n);\n\nconst renderSearchWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Search' }}>\n {renderSearch(props)}\n </ComponentWrapper>\n);\n\nconst renderTableWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Table' }}>\n {renderTable(props)}\n </ComponentWrapper>\n);\n\nconst renderTabWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Tabs' }}>\n {renderTab(props)}\n </ComponentWrapper>\n);\n\nfunction renderActions(props: any): JSX.Element {\n const { actions, isEditable = false, gjsModel } = props;\n\n if (actions === null) {\n return <div />;\n }\n\n if (!Array.isArray(actions) || actions.length === 0) {\n return (\n <div className=\"bg-white text-black p-4 rounded-lg border flex flex-col h-full shadow-none relative\">\n <CardLoader />\n </div>\n );\n }\n\n return (\n <div className=\"dashboard-cards flex flex-wrap gap-4\">\n {actions.map((action: any, index: number) => {\n const { icon, title, description } = action;\n\n return (\n <div key={index} className=\"flex-1 min-w-[200px]\">\n {renderActionCard({\n icon,\n headerContent: title,\n bodyContent: description,\n isEditable,\n gjsModel,\n })}\n </div>\n );\n })}\n </div>\n );\n}\n\nconst renderActionsWithWrapper = (props: any) => (\n <ComponentWrapper componentProps={{ ...props, componentType: 'Actions' }}>\n {renderActions(props)}\n </ComponentWrapper>\n);\n\nexport function getRenderers(): Record<string, (props: any) => JSX.Element> {\n return {\n ActionCard: renderActionCardWithWrapper,\n Actions: renderActionsWithWrapper,\n Button: renderButtonWithWrapper,\n Card: renderCardWithWrapper,\n Chart: renderChartWithWrapper,\n Filter: renderFilterWithWrapper,\n Markdown: renderMarkdownWithWrapper,\n Search: renderSearchWithWrapper,\n Table: renderTableWithWrapper,\n Tabs: renderTabWithWrapper,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import _extends from"@babel/runtime/helpers/extends";import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _regeneratorRuntime from"@babel/runtime/regenerator";import React,{useState,useRef,useEffect}from"react";import{QueryDetailsModal}from"./query-details-modal";import{QueryLoadingModal}from"./query-loading-modal";import{formatQueryHeading}from"./query-heading-formatter";import{useQueryCache}from"./query-cache-context";import{extractInteractionState}from"./query-cache-utils";import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";var POSITION_CLASSES={"top-right":"absolute top-0 right-0","top-left":"absolute top-2 left-2","bottom-left":"absolute bottom-0 left-1/2 transform -translate-x-1/2","bottom-right":"absolute bottom-0 right-0 ","card-overlay":"absolute bottom-0 right-0"};var ERROR_MESSAGES={FETCH_FAILED:"Failed to fetch query details from semantic layer",LOAD_FAILED:"Failed to load query information",SQL_NOT_AVAILABLE:"SQL not available"};export function StyledInfoButton(_ref){var _ref$position=_ref.position,position=_ref$position===void 0?"bottom-right":_ref$position,componentId=_ref.componentId,_ref$className=_ref.className,className=_ref$className===void 0?"":_ref$className,_ref$isVisible=_ref.isVisible,isVisible=_ref$isVisible===void 0?true:_ref$isVisible,onSqlFetch=_ref.onSqlFetch,_ref$performInteracti=_ref.performInteraction,performInteraction=_ref$performInteracti===void 0?function(){return Promise.resolve({})}:_ref$performInteracti,_ref$tableActions=_ref.tableActions,tableActions=_ref$tableActions===void 0?[]:_ref$tableActions,_ref$firstRowData=_ref.firstRowData,firstRowData=_ref$firstRowData===void 0?{}:_ref$firstRowData,_ref$componentProps=_ref.componentProps,componentProps=_ref$componentProps===void 0?{}:_ref$componentProps;var _useState=useState(false),isModalOpen=_useState[0],setIsModalOpen=_useState[1];var _useState2=useState(false),isLoadingModalOpen=_useState2[0],setIsLoadingModalOpen=_useState2[1];var _useState3=useState(""),sqlQuery=_useState3[0],setSqlQuery=_useState3[1];var _useState4=useState([]),queryHeadings=_useState4[0],setQueryHeadings=_useState4[1];var _useState5=useState([]),tableButtonExplanations=_useState5[0],setTableButtonExplanations=_useState5[1];var _useState6=useState(false),isLoading=_useState6[0],setIsLoading=_useState6[1];var _useState7=useState(""),error=_useState7[0],setError=_useState7[1];var modalOpen=useRef(false);var queryCache=useQueryCache();var currentInteractionState=extractInteractionState(componentProps);var interactionStateKey="";try{interactionStateKey=JSON.stringify(currentInteractionState)}catch(err){// eslint-disable-next-line no-console
|
|
2
|
-
console.warn("Failed to serialize interaction state:",err);interactionStateKey="fallback_"+Date.now()+"_"+Math.random()}var prevInteractionStateKeyRef=useRef(undefined);var interactionState=currentInteractionState;useEffect(function(){var prevKey=prevInteractionStateKeyRef.current;var currentKey=interactionStateKey;if(prevKey!==currentKey&&prevKey!==undefined){if(componentId){queryCache.invalidateComponent(componentId);setSqlQuery("");setQueryHeadings([]);setTableButtonExplanations([]);setError("")}}prevInteractionStateKeyRef.current=currentKey},[interactionStateKey,componentId,queryCache]);function fetchTableButtonExplanations(){return _fetchTableButtonExplanations.apply(this,arguments)}function _fetchTableButtonExplanations(){_fetchTableButtonExplanations=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(){var buttonPromises,results;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.prev=0;if(!(!tableActions||tableActions.length===0)){_context2.next=3;break}return _context2.abrupt("return",[]);case 3:buttonPromises=tableActions.map(/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(action){var result,response,buttonStyle,actionClassName,bgMatch,textMatch,borderMatch,formFields,jsonBody,filesArg,hasFormFields,hasJsonBody,hasFilesArg,hasPayload;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.prev=0;_context.next=3;return performInteraction({id:action.id||componentId,interactionType:"tableButton",payload:{row:firstRowData,params:{isInfoButtonInteraction:true}},affectedComponents:[]});case 3:result=_context.sent;if(!(result&&typeof result==="object"&&"apiResponse"in result&&result.apiResponse&&typeof result.apiResponse==="object")){_context.next=18;break}response=result.apiResponse;if(!(response.request_url&&typeof response.request_url==="string")){_context.next=18;break}buttonStyle={};actionClassName=action.className||"";if(typeof actionClassName==="string"){bgMatch=actionClassName.match(/bg-\[(#[0-9A-Fa-f]{6})\]/);if(bgMatch){buttonStyle.backgroundColor=bgMatch[1]}textMatch=actionClassName.match(/text-\[(#[0-9A-Fa-f]{6})\]/);if(textMatch){buttonStyle.color=textMatch[1]}borderMatch=actionClassName.match(/border-\[(#[0-9A-Fa-f]{6})\]/);if(borderMatch){buttonStyle.border="1px solid "+borderMatch[1]}}formFields=response.form_fields||{};jsonBody=response.json_body;filesArg=response.files_arg||{};// Check if any payload fields have content
|
|
3
|
-
hasFormFields=Object.keys(formFields).length>0;hasJsonBody=jsonBody!==null&&jsonBody!==undefined&&jsonBody!=="";hasFilesArg=Object.keys(filesArg).length>0;hasPayload=hasFormFields||hasJsonBody||hasFilesArg;return _context.abrupt("return",{action:action.text||action.id||"Button Action",explanation:response.request_url,operationName:response.operation_name,operationSummary:response.operation_summary,operationDescription:response.operation_description,buttonClassName:actionClassName,buttonStyle:buttonStyle,formFields:formFields,jsonBody:jsonBody,filesArg:filesArg,hasPayload:hasPayload});case 18:return _context.abrupt("return",null);case 21:_context.prev=21;_context.t0=_context["catch"](0);return _context.abrupt("return",null);case 24:case"end":return _context.stop()}},_callee,null,[[0,21]])}));return function(_x2){return _ref2.apply(this,arguments)}}());_context2.next=6;return Promise.all(buttonPromises);case 6:results=_context2.sent;return _context2.abrupt("return",results.filter(function(result){return result!==null}));case 10:_context2.prev=10;_context2.t0=_context2["catch"](0);return _context2.abrupt("return",[]);case 13:case"end":return _context2.stop()}},_callee2,null,[[0,10]])}));return _fetchTableButtonExplanations.apply(this,arguments)}function fetchSemanticLayerQuery(){return _fetchSemanticLayerQuery.apply(this,arguments)}function _fetchSemanticLayerQuery(){_fetchSemanticLayerQuery=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(){var result,apiResponse,sqlResponse,successArray,hasAnyValidQuery,validQueries,sqlQueries,extractedHeadings,sqlObjects,_validQueries,_sqlQueries,_extractedHeadings;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:_context3.prev=0;setIsLoading(true);setError("");_context3.next=5;return performInteraction({id:componentId||"styled-info-button",interactionType:"semanticLayerQuery",affectedComponents:[]});case 5:result=_context3.sent;if(!(result&&typeof result==="object"&&"apiResponse"in result&&result.apiResponse&&typeof result.apiResponse==="object")){_context3.next=
|
|
4
|
-
sqlQueries=validQueries.map(function(q){return q.sql});extractedHeadings=validQueries.map(function(q){return formatQueryHeading(q.queryKey)});return _context3.abrupt("return",{sql:sqlQueries.length>1?sqlQueries:sqlQueries[0],headings:extractedHeadings});case
|
|
1
|
+
import _extends from"@babel/runtime/helpers/extends";import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _regeneratorRuntime from"@babel/runtime/regenerator";import React,{useState,useRef,useEffect}from"react";import{QueryDetailsModal}from"./query-details-modal";import{QueryLoadingModal}from"./query-loading-modal";import{formatQueryHeading}from"./query-heading-formatter";import{useQueryCache}from"./query-cache-context";import{extractInteractionState}from"./query-cache-utils";import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";var POSITION_CLASSES={"top-right":"absolute top-0 right-0","top-left":"absolute top-2 left-2","bottom-left":"absolute bottom-0 left-1/2 transform -translate-x-1/2","bottom-right":"absolute bottom-0 right-0 ","card-overlay":"absolute bottom-0 right-0"};var ERROR_MESSAGES={FETCH_FAILED:"Failed to fetch query details from semantic layer",LOAD_FAILED:"Failed to load query information",SQL_NOT_AVAILABLE:"SQL not available",ACTION_NOT_AVAILABLE:"Action query not available",NO_QUERY_AVAILABLE:"No query information available"};export function StyledInfoButton(_ref){var _ref$position=_ref.position,position=_ref$position===void 0?"bottom-right":_ref$position,componentId=_ref.componentId,_ref$className=_ref.className,className=_ref$className===void 0?"":_ref$className,_ref$isVisible=_ref.isVisible,isVisible=_ref$isVisible===void 0?true:_ref$isVisible,onSqlFetch=_ref.onSqlFetch,_ref$performInteracti=_ref.performInteraction,performInteraction=_ref$performInteracti===void 0?function(){return Promise.resolve({})}:_ref$performInteracti,_ref$tableActions=_ref.tableActions,tableActions=_ref$tableActions===void 0?[]:_ref$tableActions,_ref$firstRowData=_ref.firstRowData,firstRowData=_ref$firstRowData===void 0?{}:_ref$firstRowData,_ref$componentProps=_ref.componentProps,componentProps=_ref$componentProps===void 0?{}:_ref$componentProps;var _useState=useState(false),isModalOpen=_useState[0],setIsModalOpen=_useState[1];var _useState2=useState(false),isLoadingModalOpen=_useState2[0],setIsLoadingModalOpen=_useState2[1];var _useState3=useState(""),sqlQuery=_useState3[0],setSqlQuery=_useState3[1];var _useState4=useState([]),queryHeadings=_useState4[0],setQueryHeadings=_useState4[1];var _useState5=useState([]),tableButtonExplanations=_useState5[0],setTableButtonExplanations=_useState5[1];var _useState6=useState(false),isLoading=_useState6[0],setIsLoading=_useState6[1];var _useState7=useState(""),error=_useState7[0],setError=_useState7[1];var modalOpen=useRef(false);var queryCache=useQueryCache();var currentInteractionState=extractInteractionState(componentProps);var interactionStateKey="";try{interactionStateKey=JSON.stringify(currentInteractionState)}catch(err){// eslint-disable-next-line no-console
|
|
2
|
+
console.warn("Failed to serialize interaction state:",err);interactionStateKey="fallback_"+Date.now()+"_"+Math.random()}var prevInteractionStateKeyRef=useRef(undefined);var interactionState=currentInteractionState;useEffect(function(){var prevKey=prevInteractionStateKeyRef.current;var currentKey=interactionStateKey;if(prevKey!==currentKey&&prevKey!==undefined){if(componentId){queryCache.invalidateComponent(componentId);setSqlQuery("");setQueryHeadings([]);setTableButtonExplanations([]);setError("")}}prevInteractionStateKeyRef.current=currentKey},[interactionStateKey,componentId,queryCache]);function handleActionQueryResponse(apiResponse){try{var actionQueryResponse=apiResponse.actionQuery;if(!actionQueryResponse||typeof actionQueryResponse!=="object"){return{sql:ERROR_MESSAGES.ACTION_NOT_AVAILABLE,headings:[]}}if("errors"in actionQueryResponse&&Array.isArray(actionQueryResponse.errors)&&actionQueryResponse.errors.length>0){var errors=actionQueryResponse.errors;var errorMessages=errors.filter(function(err){return err&&typeof err.error==="string"}).map(function(err){return err.error}).join("\n");return{sql:errorMessages||ERROR_MESSAGES.ACTION_NOT_AVAILABLE,headings:[]}}if("success"in actionQueryResponse&&Array.isArray(actionQueryResponse.success)){var successArray=actionQueryResponse.success;var validQueries=successArray.filter(function(item){return item&&typeof item==="object"&&item.query&&typeof item.query==="string"}).map(function(item){return{query:item.query,queryKey:item.query_key||"Action Query"}});if(validQueries.length===0){return{sql:ERROR_MESSAGES.ACTION_NOT_AVAILABLE,headings:[]}}var queries=validQueries.map(function(q){return q.query});var headings=validQueries.map(function(q){return formatQueryHeading(q.queryKey)});return{sql:queries.length>1?queries:queries[0],headings:headings}}return{sql:ERROR_MESSAGES.ACTION_NOT_AVAILABLE,headings:[]}}catch(err){return{sql:ERROR_MESSAGES.ACTION_NOT_AVAILABLE,headings:[]}}}function fetchTableButtonExplanations(){return _fetchTableButtonExplanations.apply(this,arguments)}function _fetchTableButtonExplanations(){_fetchTableButtonExplanations=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(){var buttonPromises,results;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.prev=0;if(!(!tableActions||tableActions.length===0)){_context2.next=3;break}return _context2.abrupt("return",[]);case 3:buttonPromises=tableActions.map(/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(action){var result,response,buttonStyle,actionClassName,bgMatch,textMatch,borderMatch,formFields,jsonBody,filesArg,hasFormFields,hasJsonBody,hasFilesArg,hasPayload;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.prev=0;_context.next=3;return performInteraction({id:action.id||componentId,interactionType:"tableButton",payload:{row:firstRowData,params:{isInfoButtonInteraction:true}},affectedComponents:[]});case 3:result=_context.sent;if(!(result&&typeof result==="object"&&"apiResponse"in result&&result.apiResponse&&typeof result.apiResponse==="object")){_context.next=18;break}response=result.apiResponse;if(!(response.request_url&&typeof response.request_url==="string")){_context.next=18;break}buttonStyle={};actionClassName=action.className||"";if(typeof actionClassName==="string"){bgMatch=actionClassName.match(/bg-\[(#[0-9A-Fa-f]{6})\]/);if(bgMatch){buttonStyle.backgroundColor=bgMatch[1]}textMatch=actionClassName.match(/text-\[(#[0-9A-Fa-f]{6})\]/);if(textMatch){buttonStyle.color=textMatch[1]}borderMatch=actionClassName.match(/border-\[(#[0-9A-Fa-f]{6})\]/);if(borderMatch){buttonStyle.border="1px solid "+borderMatch[1]}}formFields=response.form_fields||{};jsonBody=response.json_body;filesArg=response.files_arg||{};// Check if any payload fields have content
|
|
3
|
+
hasFormFields=Object.keys(formFields).length>0;hasJsonBody=jsonBody!==null&&jsonBody!==undefined&&jsonBody!=="";hasFilesArg=Object.keys(filesArg).length>0;hasPayload=hasFormFields||hasJsonBody||hasFilesArg;return _context.abrupt("return",{action:action.text||action.id||"Button Action",explanation:response.request_url,operationName:response.operation_name,operationSummary:response.operation_summary,operationDescription:response.operation_description,buttonClassName:actionClassName,buttonStyle:buttonStyle,formFields:formFields,jsonBody:jsonBody,filesArg:filesArg,hasPayload:hasPayload});case 18:return _context.abrupt("return",null);case 21:_context.prev=21;_context.t0=_context["catch"](0);return _context.abrupt("return",null);case 24:case"end":return _context.stop()}},_callee,null,[[0,21]])}));return function(_x2){return _ref2.apply(this,arguments)}}());_context2.next=6;return Promise.all(buttonPromises);case 6:results=_context2.sent;return _context2.abrupt("return",results.filter(function(result){return result!==null}));case 10:_context2.prev=10;_context2.t0=_context2["catch"](0);return _context2.abrupt("return",[]);case 13:case"end":return _context2.stop()}},_callee2,null,[[0,10]])}));return _fetchTableButtonExplanations.apply(this,arguments)}function fetchSemanticLayerQuery(){return _fetchSemanticLayerQuery.apply(this,arguments)}function _fetchSemanticLayerQuery(){_fetchSemanticLayerQuery=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(){var result,apiResponse,queryType,sqlResponse,successArray,hasAnyValidQuery,validQueries,sqlQueries,extractedHeadings,sqlObjects,_validQueries,_sqlQueries,_extractedHeadings;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:_context3.prev=0;setIsLoading(true);setError("");_context3.next=5;return performInteraction({id:componentId||"styled-info-button",interactionType:"semanticLayerQuery",affectedComponents:[]});case 5:result=_context3.sent;if(!(result&&typeof result==="object"&&"apiResponse"in result&&result.apiResponse&&typeof result.apiResponse==="object")){_context3.next=38;break}apiResponse=result.apiResponse;queryType=apiResponse.queryType;if(!(queryType==="action"&&"actionQuery"in apiResponse)){_context3.next=11;break}return _context3.abrupt("return",handleActionQueryResponse(apiResponse));case 11:if("sql"in apiResponse){_context3.next=13;break}return _context3.abrupt("return",{sql:ERROR_MESSAGES.SQL_NOT_AVAILABLE,headings:[]});case 13:sqlResponse=apiResponse.sql;if(!(!sqlResponse||typeof sqlResponse!=="object")){_context3.next=16;break}return _context3.abrupt("return",{sql:ERROR_MESSAGES.SQL_NOT_AVAILABLE,headings:[]});case 16:if(!("success"in sqlResponse&&Array.isArray(sqlResponse.success))){_context3.next=27;break}successArray=sqlResponse.success;hasAnyValidQuery=successArray.some(function(item){return item&&typeof item==="object"&&!item.error&&"sql"in item&&typeof item.sql==="string"&&item.sql.trim()});if(hasAnyValidQuery){_context3.next=21;break}return _context3.abrupt("return",{sql:ERROR_MESSAGES.SQL_NOT_AVAILABLE,headings:[]});case 21:validQueries=successArray.filter(function(item){return item&&typeof item==="object"&&!item.error&&"sql"in item&&typeof item.sql==="string"&&item.sql.trim()}).map(function(item){return{sql:item.sql,queryKey:item.query_key||"Query details"}});if(!(validQueries.length===0)){_context3.next=24;break}return _context3.abrupt("return",{sql:ERROR_MESSAGES.SQL_NOT_AVAILABLE,headings:[]});case 24:// Extract SQL and headings in the correct order
|
|
4
|
+
sqlQueries=validQueries.map(function(q){return q.sql});extractedHeadings=validQueries.map(function(q){return formatQueryHeading(q.queryKey)});return _context3.abrupt("return",{sql:sqlQueries.length>1?sqlQueries:sqlQueries[0],headings:extractedHeadings});case 27:if(!("error"in sqlResponse&&typeof sqlResponse.error==="string")){_context3.next=29;break}return _context3.abrupt("return",{sql:ERROR_MESSAGES.SQL_NOT_AVAILABLE,headings:[]});case 29:if(!Array.isArray(sqlResponse)){_context3.next=37;break}sqlObjects=sqlResponse;_validQueries=sqlObjects.filter(function(obj){return obj&&typeof obj==="object"&&"sql"in obj&&"error"in obj&&!obj.error&&obj.sql&&obj.sql.trim()}).map(function(obj){return{sql:obj.sql,queryKey:obj.query_key||"Query details"}});if(!(_validQueries.length===0)){_context3.next=34;break}return _context3.abrupt("return",{sql:ERROR_MESSAGES.SQL_NOT_AVAILABLE,headings:[]});case 34:_sqlQueries=_validQueries.map(function(q){return q.sql});_extractedHeadings=_validQueries.map(function(q){return formatQueryHeading(q.queryKey)});return _context3.abrupt("return",{sql:_sqlQueries.length>1?_sqlQueries:_sqlQueries[0],headings:_extractedHeadings});case 37:return _context3.abrupt("return",{sql:ERROR_MESSAGES.SQL_NOT_AVAILABLE,headings:[]});case 38:return _context3.abrupt("return",{sql:ERROR_MESSAGES.SQL_NOT_AVAILABLE,headings:[]});case 41:_context3.prev=41;_context3.t0=_context3["catch"](0);return _context3.abrupt("return",{sql:ERROR_MESSAGES.SQL_NOT_AVAILABLE,headings:[]});case 44:_context3.prev=44;setIsLoading(false);return _context3.finish(44);case 47:case"end":return _context3.stop()}},_callee3,null,[[0,41,44,47]])}));return _fetchSemanticLayerQuery.apply(this,arguments)}function handleInfoClick(_x){return _handleInfoClick.apply(this,arguments)}function _handleInfoClick(){_handleInfoClick=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(e){var cachedSemanticQuery,cachedTableButton,_yield$Promise$all,sqlResult,buttonExplanations,cacheEntry;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:e.stopPropagation();e.preventDefault();modalOpen.current=true;_context4.prev=3;cachedSemanticQuery=componentId?queryCache.getCachedQuery(componentId,"semanticLayerQuery",interactionState):null;cachedTableButton=componentId&&tableActions.length>0?queryCache.getCachedQuery(componentId,"tableButton",interactionState):null;if(!(cachedSemanticQuery&&(tableActions.length===0||cachedTableButton))){_context4.next=14;break}setSqlQuery(cachedSemanticQuery.sqlQuery);setQueryHeadings(cachedSemanticQuery.queryHeadings);setTableButtonExplanations((cachedTableButton==null?void 0:cachedTableButton.tableButtonExplanations)||cachedSemanticQuery.tableButtonExplanations);setError("");if(modalOpen.current){setIsModalOpen(true)}if(onSqlFetch&&cachedSemanticQuery.sqlQuery&&cachedSemanticQuery.sqlQuery!==ERROR_MESSAGES.SQL_NOT_AVAILABLE){onSqlFetch(cachedSemanticQuery.sqlQuery)}return _context4.abrupt("return");case 14:setIsLoadingModalOpen(true);setError("");_context4.next=18;return Promise.all([fetchSemanticLayerQuery(),fetchTableButtonExplanations()]);case 18:_yield$Promise$all=_context4.sent;sqlResult=_yield$Promise$all[0];buttonExplanations=_yield$Promise$all[1];if(componentId){cacheEntry={sqlQuery:sqlResult.sql||ERROR_MESSAGES.SQL_NOT_AVAILABLE,queryHeadings:sqlResult.headings||[],tableButtonExplanations:buttonExplanations,timestamp:Date.now()};queryCache.setCachedQuery(componentId,"semanticLayerQuery",interactionState,cacheEntry);if(tableActions.length>0){queryCache.setCachedQuery(componentId,"tableButton",interactionState,_extends({},cacheEntry,{tableButtonExplanations:buttonExplanations}))}}setSqlQuery(sqlResult.sql||ERROR_MESSAGES.SQL_NOT_AVAILABLE);setQueryHeadings(sqlResult.headings||[]);setTableButtonExplanations(buttonExplanations);setIsLoadingModalOpen(false);if(modalOpen.current){setIsModalOpen(true)}if(onSqlFetch&&sqlResult.sql&&sqlResult.sql!==ERROR_MESSAGES.SQL_NOT_AVAILABLE){onSqlFetch(sqlResult.sql)}_context4.next=36;break;case 30:_context4.prev=30;_context4.t0=_context4["catch"](3);setSqlQuery(ERROR_MESSAGES.SQL_NOT_AVAILABLE);setTableButtonExplanations([]);setIsLoadingModalOpen(false);if(modalOpen.current){setIsModalOpen(true)}case 36:case"end":return _context4.stop()}},_callee4,null,[[3,30]])}));return _handleInfoClick.apply(this,arguments)}function resetState(){setIsModalOpen(false);setIsLoadingModalOpen(false);setSqlQuery("");setQueryHeadings([]);setTableButtonExplanations([]);setError("");setIsLoading(false)}function handleModalClose(){// User explicitly closed the modal
|
|
5
5
|
modalOpen.current=false;resetState()}function handleRetry(){resetState();var mockEvent={stopPropagation:function stopPropagation(){return void 0},preventDefault:function preventDefault(){return void 0}};handleInfoClick(mockEvent)}if(!isVisible){return null}return/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx("button",{className:POSITION_CLASSES[position]+" "+className,onClick:handleInfoClick,title:"View Query Details",type:"button",style:{width:"60px",height:"60px",transform:"rotate(0deg)",opacity:1,border:"none",background:"transparent",padding:0},children:/*#__PURE__*/_jsxs("svg",{width:"50",height:"50",viewBox:"0 0 67 66",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[/*#__PURE__*/_jsxs("g",{filter:"url(#filter0_d_4766_2811)",children:[/*#__PURE__*/_jsx("rect",{x:"16.1667",y:"15.5",width:"35",height:"35",rx:"7.5",stroke:"#A601FF",strokeWidth:"1",shapeRendering:"crispEdges"}),/*#__PURE__*/_jsx("path",{d:"M33.0756 28.0171C33.3312 27.5498 34.0023 27.5498 34.2578 28.0171L35.7159 30.683C35.7777 30.7961 35.8706 30.889 35.9837 30.9508L38.6496 32.4089C39.1169 32.6644 39.1169 33.3355 38.6496 33.5911L35.9837 35.0491C35.8706 35.111 35.7777 35.2039 35.7159 35.317L34.2578 37.9829C34.0023 38.4501 33.3312 38.4501 33.0756 37.9829L31.6176 35.317C31.5557 35.2039 31.4628 35.111 31.3497 35.0491L28.6838 33.5911C28.2166 33.3355 28.2166 32.6644 28.6838 32.4089L31.3497 30.9508C31.4628 30.889 31.5557 30.7961 31.6176 30.683L33.0756 28.0171Z",fill:"#A601FF"}),/*#__PURE__*/_jsx("path",{d:"M29.0634 27.1601C29.1801 26.9466 29.4866 26.9466 29.6033 27.1601L29.9973 27.8804C30.0255 27.932 30.068 27.9745 30.1196 28.0027L30.84 28.3967C31.0534 28.5134 31.0534 28.8199 30.84 28.9367L30.1196 29.3306C30.068 29.3589 30.0255 29.4013 29.9973 29.4529L29.6033 30.1733C29.4866 30.3867 29.1801 30.3867 29.0634 30.1733L28.6694 29.4529C28.6412 29.4013 28.5987 29.3589 28.5471 29.3306L27.8268 28.9367C27.6133 28.8199 27.6133 28.5134 27.8268 28.3967L28.5471 28.0027C28.5987 27.9745 28.6412 27.932 28.6694 27.8804L29.0634 27.1601Z",fill:"#A601FF"}),/*#__PURE__*/_jsx("path",{d:"M38.0346 36.5104C38.1638 36.2743 38.5029 36.2743 38.6321 36.5105L38.8874 36.9773C38.9186 37.0344 38.9656 37.0814 39.0227 37.1126L39.4896 37.368C39.7257 37.4971 39.7257 37.8363 39.4896 37.9654L39.0227 38.2207C38.9656 38.252 38.9186 38.2989 38.8874 38.3561L38.6321 38.8229C38.5029 39.059 38.1638 39.059 38.0346 38.8229L37.7793 38.3561C37.748 38.2989 37.7011 38.252 37.6439 38.2207L37.1771 37.9654C36.941 37.8363 36.941 37.4971 37.1771 37.368L37.6439 37.1126C37.7011 37.0814 37.748 37.0344 37.7793 36.9773L38.0346 36.5104Z",fill:"#A601FF"})]}),/*#__PURE__*/_jsx("defs",{children:/*#__PURE__*/_jsxs("filter",{id:"filter0_d_4766_2811",x:"0.666687",y:"0",width:"66",height:"66",filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB",children:[/*#__PURE__*/_jsx("feFlood",{floodOpacity:"0",result:"BackgroundImageFix"}),/*#__PURE__*/_jsx("feColorMatrix",{"in":"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),/*#__PURE__*/_jsx("feMorphology",{radius:"5",operator:"dilate","in":"SourceAlpha",result:"effect1_dropShadow_4766_2811"}),/*#__PURE__*/_jsx("feOffset",{}),/*#__PURE__*/_jsx("feGaussianBlur",{stdDeviation:"5"}),/*#__PURE__*/_jsx("feComposite",{in2:"hardAlpha",operator:"out"}),/*#__PURE__*/_jsx("feColorMatrix",{type:"matrix",values:"0 0 0 0 0.0317231 0 0 0 0 0.0834676 0 0 0 0 0.370052 0 0 0 0.05 0"}),/*#__PURE__*/_jsx("feBlend",{mode:"normal",in2:"BackgroundImageFix",result:"effect1_dropShadow_4766_2811"}),/*#__PURE__*/_jsx("feBlend",{mode:"normal","in":"SourceGraphic",in2:"effect1_dropShadow_4766_2811",result:"shape"})]})})]})}),/*#__PURE__*/_jsx(QueryLoadingModal,{isOpen:isLoadingModalOpen,onClose:handleModalClose}),/*#__PURE__*/_jsx(QueryDetailsModal,{isOpen:isModalOpen,onClose:handleModalClose,isLoading:isLoading,error:error,sqlQuery:sqlQuery,queryHeadings:queryHeadings,tableButtonExplanations:tableButtonExplanations,onRetry:handleRetry})]})}
|
|
6
6
|
//# sourceMappingURL=styled-info-button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styled-info-button.js","names":["React","useState","useRef","useEffect","QueryDetailsModal","QueryLoadingModal","formatQueryHeading","useQueryCache","extractInteractionState","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","POSITION_CLASSES","ERROR_MESSAGES","FETCH_FAILED","LOAD_FAILED","SQL_NOT_AVAILABLE","StyledInfoButton","_ref","_ref$position","position","componentId","_ref$className","className","_ref$isVisible","isVisible","onSqlFetch","_ref$performInteracti","performInteraction","Promise","resolve","_ref$tableActions","tableActions","_ref$firstRowData","firstRowData","_ref$componentProps","componentProps","_useState","isModalOpen","setIsModalOpen","_useState2","isLoadingModalOpen","setIsLoadingModalOpen","_useState3","sqlQuery","setSqlQuery","_useState4","queryHeadings","setQueryHeadings","_useState5","tableButtonExplanations","setTableButtonExplanations","_useState6","isLoading","setIsLoading","_useState7","error","setError","modalOpen","queryCache","currentInteractionState","interactionStateKey","JSON","stringify","err","console","warn","Date","now","Math","random","prevInteractionStateKeyRef","undefined","interactionState","prevKey","current","currentKey","invalidateComponent","fetchTableButtonExplanations","_fetchTableButtonExplanations","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","buttonPromises","results","wrap","_callee2$","_context2","prev","next","length","abrupt","map","_ref2","_callee","action","result","response","buttonStyle","actionClassName","bgMatch","textMatch","borderMatch","formFields","jsonBody","filesArg","hasFormFields","hasJsonBody","hasFilesArg","hasPayload","_callee$","_context","id","interactionType","payload","row","params","isInfoButtonInteraction","affectedComponents","sent","apiResponse","request_url","match","backgroundColor","color","border","form_fields","json_body","files_arg","Object","keys","text","explanation","operationName","operation_name","operationSummary","operation_summary","operationDescription","operation_description","buttonClassName","t0","stop","_x2","all","filter","fetchSemanticLayerQuery","_fetchSemanticLayerQuery","_callee3","sqlResponse","successArray","hasAnyValidQuery","validQueries","sqlQueries","extractedHeadings","sqlObjects","_validQueries","_sqlQueries","_extractedHeadings","_callee3$","_context3","sql","headings","Array","isArray","success","some","item","trim","queryKey","query_key","q","obj","finish","handleInfoClick","_x","_handleInfoClick","_callee4","e","cachedSemanticQuery","cachedTableButton","_yield$Promise$all","sqlResult","buttonExplanations","cacheEntry","_callee4$","_context4","stopPropagation","preventDefault","getCachedQuery","timestamp","setCachedQuery","_extends","resetState","handleModalClose","handleRetry","mockEvent","children","onClick","title","type","style","width","height","transform","opacity","background","padding","viewBox","fill","xmlns","x","y","rx","stroke","strokeWidth","shapeRendering","d","filterUnits","colorInterpolationFilters","floodOpacity","values","radius","operator","stdDeviation","in2","mode","isOpen","onClose","onRetry"],"sources":["../../../src/plugins/helpers/styled-info-button.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport { QueryDetailsModal } from './query-details-modal';\nimport { QueryLoadingModal } from './query-loading-modal';\nimport { formatQueryHeading } from './query-heading-formatter';\nimport { useQueryCache } from './query-cache-context';\nimport { extractInteractionState } from './query-cache-utils';\n\nconst POSITION_CLASSES = {\n 'top-right': 'absolute top-0 right-0',\n 'top-left': 'absolute top-2 left-2', \n 'bottom-left': 'absolute bottom-0 left-1/2 transform -translate-x-1/2',\n 'bottom-right': 'absolute bottom-0 right-0 ',\n 'card-overlay': 'absolute bottom-0 right-0'\n} as const;\n\nconst ERROR_MESSAGES = {\n FETCH_FAILED: 'Failed to fetch query details from semantic layer',\n LOAD_FAILED: 'Failed to load query information',\n SQL_NOT_AVAILABLE: 'SQL not available'\n} as const;\n\n\ntype ButtonStyle = {\n backgroundColor?: string;\n color?: string;\n border?: string;\n [key: string]: unknown;\n};\n\ntype TableButtonExplanation = {\n action: string;\n explanation: string;\n operationName?: string;\n operationSummary?: string;\n operationDescription?: string;\n buttonClassName?: string;\n buttonStyle?: ButtonStyle;\n formFields?: Record<string, unknown>;\n jsonBody?: unknown;\n filesArg?: Record<string, unknown>;\n hasPayload?: boolean;\n};\n\ntype TableAction = {\n id: string;\n text: string;\n className?: string;\n [key: string]: unknown;\n};\n\ntype Position = 'top-right' | 'top-left' | 'bottom-left' | 'bottom-right' | 'card-overlay';\n\ntype StyledInfoButtonProps = {\n buttonStyle?: ButtonStyle;\n onClick?: () => void;\n isVisible?: boolean;\n tableName?: string;\n position?: Position;\n componentId?: string;\n className?: string;\n onSqlFetch?: (sql: string | string[]) => void;\n performInteraction?: (payload: Record<string, unknown>) => Promise<Record<string, unknown>>;\n tableActions?: TableAction[];\n firstRowData?: Record<string, unknown>;\n componentProps?: Record<string, unknown>;\n}\n\n\nexport function StyledInfoButton({ \n position = 'bottom-right', \n componentId,\n className = '',\n isVisible = true,\n onSqlFetch,\n performInteraction = () => Promise.resolve({} as Record<string, unknown>),\n tableActions = [],\n firstRowData = {},\n componentProps = {}\n}: StyledInfoButtonProps) {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [isLoadingModalOpen, setIsLoadingModalOpen] = useState(false);\n \n const [sqlQuery, setSqlQuery] = useState<string | string[]>('');\n const [queryHeadings, setQueryHeadings] = useState<string[]>([]);\n const [tableButtonExplanations, setTableButtonExplanations] = useState<TableButtonExplanation[]>([]);\n \n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string>('');\n \n const modalOpen = useRef(false);\n \n const queryCache = useQueryCache();\n \n const currentInteractionState = extractInteractionState(componentProps);\n \n let interactionStateKey = '';\n\n try {\n interactionStateKey = JSON.stringify(currentInteractionState);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.warn('Failed to serialize interaction state:', err);\n interactionStateKey = `fallback_${Date.now()}_${Math.random()}`;\n }\n \n const prevInteractionStateKeyRef = useRef<string | undefined>(undefined);\n \n const interactionState = currentInteractionState;\n\n useEffect(() => {\n const prevKey = prevInteractionStateKeyRef.current;\n const currentKey = interactionStateKey;\n \n if (prevKey !== currentKey && prevKey !== undefined) {\n if (componentId) {\n queryCache.invalidateComponent(componentId);\n \n setSqlQuery('');\n setQueryHeadings([]);\n setTableButtonExplanations([]);\n setError('');\n }\n }\n \n prevInteractionStateKeyRef.current = currentKey;\n }, [interactionStateKey, componentId, queryCache]);\n\n async function fetchTableButtonExplanations(): Promise<TableButtonExplanation[]> {\n try {\n if (!tableActions || tableActions.length === 0) {\n return [];\n }\n \n\n const buttonPromises = tableActions.map(async (action) => {\n try {\n const result = await performInteraction({\n id: action.id || componentId,\n interactionType: 'tableButton',\n payload: {\n row: firstRowData,\n params: { isInfoButtonInteraction: true }\n },\n affectedComponents: []\n });\n\n if (result && typeof result === 'object' && 'apiResponse' in result && \n result.apiResponse && typeof result.apiResponse === 'object') {\n const response = result.apiResponse as Record<string, unknown>;\n \n if (response.request_url && typeof response.request_url === 'string') {\n const buttonStyle: ButtonStyle = {};\n const actionClassName = (action.className as string) || '';\n \n if (typeof actionClassName === 'string') {\n const bgMatch = actionClassName.match(/bg-\\[(#[0-9A-Fa-f]{6})\\]/);\n\n if (bgMatch) {\n buttonStyle.backgroundColor = bgMatch[1];\n }\n \n const textMatch = actionClassName.match(/text-\\[(#[0-9A-Fa-f]{6})\\]/);\n\n if (textMatch) {\n buttonStyle.color = textMatch[1];\n }\n \n const borderMatch = actionClassName.match(/border-\\[(#[0-9A-Fa-f]{6})\\]/);\n\n if (borderMatch) {\n buttonStyle.border = `1px solid ${borderMatch[1]}`;\n }\n }\n \n const formFields = response.form_fields as Record<string, unknown> || {};\n const jsonBody = response.json_body;\n const filesArg = response.files_arg as Record<string, unknown> || {};\n \n // Check if any payload fields have content\n const hasFormFields = Object.keys(formFields).length > 0;\n const hasJsonBody = jsonBody !== null && jsonBody !== undefined && jsonBody !== '';\n const hasFilesArg = Object.keys(filesArg).length > 0;\n const hasPayload = hasFormFields || hasJsonBody || hasFilesArg;\n \n return {\n action: action.text || action.id || 'Button Action',\n explanation: response.request_url,\n operationName: response.operation_name as string,\n operationSummary: response.operation_summary as string,\n operationDescription: response.operation_description as string,\n buttonClassName: actionClassName,\n buttonStyle,\n formFields,\n jsonBody,\n filesArg,\n hasPayload\n };\n }\n }\n\n return null;\n } catch (err) {\n return null;\n }\n });\n\n const results = await Promise.all(buttonPromises);\n\n return results.filter((result) => result !== null) as TableButtonExplanation[];\n } catch (err) {\n return [];\n }\n }\n\n async function fetchSemanticLayerQuery(): Promise<{sql: string | string[], headings: string[]}> {\n try {\n setIsLoading(true);\n setError('');\n \n const result = await performInteraction({\n id: componentId || 'styled-info-button',\n interactionType: 'semanticLayerQuery',\n affectedComponents: []\n });\n\n if (result && typeof result === 'object' && 'apiResponse' in result && \n result.apiResponse && typeof result.apiResponse === 'object') {\n const apiResponse = result.apiResponse as Record<string, unknown>;\n \n if (!('sql' in apiResponse)) {\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n \n const sqlResponse = apiResponse.sql;\n \n if (!sqlResponse || (typeof sqlResponse !== 'object')) {\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n \n if ('success' in sqlResponse && Array.isArray(sqlResponse.success)) {\n const successArray = sqlResponse.success as Array<{\n error: boolean;\n sql?: string;\n errorMessage?: string;\n query_key?: string;\n }>;\n \n const hasAnyValidQuery = successArray.some(item => \n item && typeof item === 'object' && \n item.error === false && \n 'sql' in item && \n typeof item.sql === 'string' && \n item.sql.trim()\n );\n \n if (!hasAnyValidQuery) {\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n \n const validQueries = successArray\n .filter(item => \n item && \n typeof item === 'object' && \n item.error === false && \n 'sql' in item && \n typeof item.sql === 'string' && \n item.sql.trim()\n )\n .map(item => ({\n sql: item.sql as string,\n queryKey: item.query_key || 'Query details'\n }));\n \n if (validQueries.length === 0) {\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n \n // Extract SQL and headings in the correct order\n const sqlQueries = validQueries.map(q => q.sql);\n const extractedHeadings = validQueries.map(q => formatQueryHeading(q.queryKey));\n \n return {\n sql: sqlQueries.length > 1 ? sqlQueries : sqlQueries[0],\n headings: extractedHeadings\n };\n }\n \n if ('error' in sqlResponse && typeof sqlResponse.error === 'string') {\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n \n if (Array.isArray(sqlResponse)) {\n const sqlObjects = sqlResponse as Array<{sql: string, error: boolean, query_key?: string}>;\n \n const validQueries = sqlObjects\n .filter(obj => obj && typeof obj === 'object' && 'sql' in obj && 'error' in obj && !obj.error && obj.sql && obj.sql.trim())\n .map(obj => ({\n sql: obj.sql,\n queryKey: obj.query_key || 'Query details'\n }));\n \n if (validQueries.length === 0) {\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n \n const sqlQueries = validQueries.map(q => q.sql);\n const extractedHeadings = validQueries.map(q => formatQueryHeading(q.queryKey));\n \n return {\n sql: sqlQueries.length > 1 ? sqlQueries : sqlQueries[0],\n headings: extractedHeadings\n };\n }\n \n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n\n } catch (err) {\n\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n\n } finally {\n setIsLoading(false);\n }\n }\n\n async function handleInfoClick(e: React.MouseEvent) {\n e.stopPropagation();\n e.preventDefault();\n \n modalOpen.current = true;\n \n try {\n const cachedSemanticQuery = componentId \n ? queryCache.getCachedQuery(componentId, 'semanticLayerQuery', interactionState)\n : null;\n \n const cachedTableButton = componentId && tableActions.length > 0\n ? queryCache.getCachedQuery(componentId, 'tableButton', interactionState)\n : null;\n \n if (cachedSemanticQuery && (tableActions.length === 0 || cachedTableButton)) {\n setSqlQuery(cachedSemanticQuery.sqlQuery);\n setQueryHeadings(cachedSemanticQuery.queryHeadings);\n setTableButtonExplanations(\n cachedTableButton?.tableButtonExplanations || cachedSemanticQuery.tableButtonExplanations\n );\n setError('');\n \n if (modalOpen.current) {\n setIsModalOpen(true);\n }\n \n if (onSqlFetch && cachedSemanticQuery.sqlQuery && \n cachedSemanticQuery.sqlQuery !== ERROR_MESSAGES.SQL_NOT_AVAILABLE) {\n onSqlFetch(cachedSemanticQuery.sqlQuery);\n }\n \n return;\n }\n \n setIsLoadingModalOpen(true);\n setError('');\n\n const [sqlResult, buttonExplanations] = await Promise.all([\n fetchSemanticLayerQuery(),\n fetchTableButtonExplanations()\n ]);\n \n if (componentId) {\n const cacheEntry = {\n sqlQuery: sqlResult.sql || ERROR_MESSAGES.SQL_NOT_AVAILABLE,\n queryHeadings: sqlResult.headings || [],\n tableButtonExplanations: buttonExplanations,\n timestamp: Date.now(),\n };\n \n queryCache.setCachedQuery(componentId, 'semanticLayerQuery', interactionState, cacheEntry);\n \n if (tableActions.length > 0) {\n queryCache.setCachedQuery(componentId, 'tableButton', interactionState, {\n ...cacheEntry,\n tableButtonExplanations: buttonExplanations,\n });\n }\n }\n \n setSqlQuery(sqlResult.sql || ERROR_MESSAGES.SQL_NOT_AVAILABLE);\n setQueryHeadings(sqlResult.headings || []);\n setTableButtonExplanations(buttonExplanations);\n \n setIsLoadingModalOpen(false);\n \n if (modalOpen.current) {\n setIsModalOpen(true);\n }\n \n if (onSqlFetch && sqlResult.sql && sqlResult.sql !== ERROR_MESSAGES.SQL_NOT_AVAILABLE) {\n onSqlFetch(sqlResult.sql);\n }\n } catch (err) {\n setSqlQuery(ERROR_MESSAGES.SQL_NOT_AVAILABLE);\n setTableButtonExplanations([]);\n setIsLoadingModalOpen(false);\n \n if (modalOpen.current) {\n setIsModalOpen(true);\n }\n }\n }\n\n function resetState() {\n setIsModalOpen(false);\n setIsLoadingModalOpen(false);\n setSqlQuery('');\n setQueryHeadings([]);\n setTableButtonExplanations([]);\n setError('');\n setIsLoading(false);\n }\n\n function handleModalClose() {\n // User explicitly closed the modal\n modalOpen.current = false;\n resetState();\n }\n\n function handleRetry() {\n resetState();\n const mockEvent = { \n stopPropagation: () => void 0,\n preventDefault: () => void 0\n } as React.MouseEvent;\n handleInfoClick(mockEvent);\n }\n\n\n if (!isVisible) {\n return null;\n }\n\n return (\n <>\n <button\n className={`${POSITION_CLASSES[position]} ${className}`}\n onClick={handleInfoClick}\n title=\"View Query Details\"\n type=\"button\"\n style={{\n width: '60px',\n height: '60px',\n transform: 'rotate(0deg)',\n opacity: 1,\n border: 'none',\n background: 'transparent',\n padding: 0,\n }}\n >\n <svg \n width=\"50\" \n height=\"50\" \n viewBox=\"0 0 67 66\" \n fill=\"none\" \n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g filter=\"url(#filter0_d_4766_2811)\">\n <rect x=\"16.1667\" y=\"15.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#A601FF\" strokeWidth=\"1\" shapeRendering=\"crispEdges\"/>\n <path d=\"M33.0756 28.0171C33.3312 27.5498 34.0023 27.5498 34.2578 28.0171L35.7159 30.683C35.7777 30.7961 35.8706 30.889 35.9837 30.9508L38.6496 32.4089C39.1169 32.6644 39.1169 33.3355 38.6496 33.5911L35.9837 35.0491C35.8706 35.111 35.7777 35.2039 35.7159 35.317L34.2578 37.9829C34.0023 38.4501 33.3312 38.4501 33.0756 37.9829L31.6176 35.317C31.5557 35.2039 31.4628 35.111 31.3497 35.0491L28.6838 33.5911C28.2166 33.3355 28.2166 32.6644 28.6838 32.4089L31.3497 30.9508C31.4628 30.889 31.5557 30.7961 31.6176 30.683L33.0756 28.0171Z\" fill=\"#A601FF\"/>\n <path d=\"M29.0634 27.1601C29.1801 26.9466 29.4866 26.9466 29.6033 27.1601L29.9973 27.8804C30.0255 27.932 30.068 27.9745 30.1196 28.0027L30.84 28.3967C31.0534 28.5134 31.0534 28.8199 30.84 28.9367L30.1196 29.3306C30.068 29.3589 30.0255 29.4013 29.9973 29.4529L29.6033 30.1733C29.4866 30.3867 29.1801 30.3867 29.0634 30.1733L28.6694 29.4529C28.6412 29.4013 28.5987 29.3589 28.5471 29.3306L27.8268 28.9367C27.6133 28.8199 27.6133 28.5134 27.8268 28.3967L28.5471 28.0027C28.5987 27.9745 28.6412 27.932 28.6694 27.8804L29.0634 27.1601Z\" fill=\"#A601FF\"/>\n <path d=\"M38.0346 36.5104C38.1638 36.2743 38.5029 36.2743 38.6321 36.5105L38.8874 36.9773C38.9186 37.0344 38.9656 37.0814 39.0227 37.1126L39.4896 37.368C39.7257 37.4971 39.7257 37.8363 39.4896 37.9654L39.0227 38.2207C38.9656 38.252 38.9186 38.2989 38.8874 38.3561L38.6321 38.8229C38.5029 39.059 38.1638 39.059 38.0346 38.8229L37.7793 38.3561C37.748 38.2989 37.7011 38.252 37.6439 38.2207L37.1771 37.9654C36.941 37.8363 36.941 37.4971 37.1771 37.368L37.6439 37.1126C37.7011 37.0814 37.748 37.0344 37.7793 36.9773L38.0346 36.5104Z\" fill=\"#A601FF\"/>\n </g>\n <defs>\n <filter id=\"filter0_d_4766_2811\" x=\"0.666687\" y=\"0\" width=\"66\" height=\"66\" filterUnits=\"userSpaceOnUse\" colorInterpolationFilters=\"sRGB\">\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\"/>\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/>\n <feMorphology radius=\"5\" operator=\"dilate\" in=\"SourceAlpha\" result=\"effect1_dropShadow_4766_2811\"/>\n <feOffset/>\n <feGaussianBlur stdDeviation=\"5\"/>\n <feComposite in2=\"hardAlpha\" operator=\"out\"/>\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.0317231 0 0 0 0 0.0834676 0 0 0 0 0.370052 0 0 0 0.05 0\"/>\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_4766_2811\"/>\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_4766_2811\" result=\"shape\"/>\n </filter>\n </defs>\n </svg>\n </button>\n \n <QueryLoadingModal isOpen={isLoadingModalOpen} onClose={handleModalClose} />\n \n <QueryDetailsModal\n isOpen={isModalOpen}\n onClose={handleModalClose}\n isLoading={isLoading}\n error={error}\n sqlQuery={sqlQuery}\n queryHeadings={queryHeadings}\n tableButtonExplanations={tableButtonExplanations}\n onRetry={handleRetry}\n />\n </>\n );\n}"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"styled-info-button.js","names":["React","useState","useRef","useEffect","QueryDetailsModal","QueryLoadingModal","formatQueryHeading","useQueryCache","extractInteractionState","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","POSITION_CLASSES","ERROR_MESSAGES","FETCH_FAILED","LOAD_FAILED","SQL_NOT_AVAILABLE","ACTION_NOT_AVAILABLE","NO_QUERY_AVAILABLE","StyledInfoButton","_ref","_ref$position","position","componentId","_ref$className","className","_ref$isVisible","isVisible","onSqlFetch","_ref$performInteracti","performInteraction","Promise","resolve","_ref$tableActions","tableActions","_ref$firstRowData","firstRowData","_ref$componentProps","componentProps","_useState","isModalOpen","setIsModalOpen","_useState2","isLoadingModalOpen","setIsLoadingModalOpen","_useState3","sqlQuery","setSqlQuery","_useState4","queryHeadings","setQueryHeadings","_useState5","tableButtonExplanations","setTableButtonExplanations","_useState6","isLoading","setIsLoading","_useState7","error","setError","modalOpen","queryCache","currentInteractionState","interactionStateKey","JSON","stringify","err","console","warn","Date","now","Math","random","prevInteractionStateKeyRef","undefined","interactionState","prevKey","current","currentKey","invalidateComponent","handleActionQueryResponse","apiResponse","actionQueryResponse","actionQuery","sql","headings","Array","isArray","errors","length","errorMessages","filter","map","join","success","successArray","validQueries","item","query","queryKey","query_key","queries","q","fetchTableButtonExplanations","_fetchTableButtonExplanations","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","buttonPromises","results","wrap","_callee2$","_context2","prev","next","abrupt","_ref2","_callee","action","result","response","buttonStyle","actionClassName","bgMatch","textMatch","borderMatch","formFields","jsonBody","filesArg","hasFormFields","hasJsonBody","hasFilesArg","hasPayload","_callee$","_context","id","interactionType","payload","row","params","isInfoButtonInteraction","affectedComponents","sent","request_url","match","backgroundColor","color","border","form_fields","json_body","files_arg","Object","keys","text","explanation","operationName","operation_name","operationSummary","operation_summary","operationDescription","operation_description","buttonClassName","t0","stop","_x2","all","fetchSemanticLayerQuery","_fetchSemanticLayerQuery","_callee3","queryType","sqlResponse","hasAnyValidQuery","sqlQueries","extractedHeadings","sqlObjects","_validQueries","_sqlQueries","_extractedHeadings","_callee3$","_context3","some","trim","obj","finish","handleInfoClick","_x","_handleInfoClick","_callee4","e","cachedSemanticQuery","cachedTableButton","_yield$Promise$all","sqlResult","buttonExplanations","cacheEntry","_callee4$","_context4","stopPropagation","preventDefault","getCachedQuery","timestamp","setCachedQuery","_extends","resetState","handleModalClose","handleRetry","mockEvent","children","onClick","title","type","style","width","height","transform","opacity","background","padding","viewBox","fill","xmlns","x","y","rx","stroke","strokeWidth","shapeRendering","d","filterUnits","colorInterpolationFilters","floodOpacity","values","radius","operator","stdDeviation","in2","mode","isOpen","onClose","onRetry"],"sources":["../../../src/plugins/helpers/styled-info-button.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport { QueryDetailsModal } from './query-details-modal';\nimport { QueryLoadingModal } from './query-loading-modal';\nimport { formatQueryHeading } from './query-heading-formatter';\nimport { useQueryCache } from './query-cache-context';\nimport { extractInteractionState } from './query-cache-utils';\n\nconst POSITION_CLASSES = {\n 'top-right': 'absolute top-0 right-0',\n 'top-left': 'absolute top-2 left-2',\n 'bottom-left': 'absolute bottom-0 left-1/2 transform -translate-x-1/2',\n 'bottom-right': 'absolute bottom-0 right-0 ',\n 'card-overlay': 'absolute bottom-0 right-0'\n} as const;\n\nconst ERROR_MESSAGES = {\n FETCH_FAILED: 'Failed to fetch query details from semantic layer',\n LOAD_FAILED: 'Failed to load query information',\n SQL_NOT_AVAILABLE: 'SQL not available',\n ACTION_NOT_AVAILABLE: 'Action query not available',\n NO_QUERY_AVAILABLE: 'No query information available'\n} as const;\n\n\ntype ButtonStyle = {\n backgroundColor?: string;\n color?: string;\n border?: string;\n [key: string]: unknown;\n};\n\ntype TableButtonExplanation = {\n action: string;\n explanation: string;\n operationName?: string;\n operationSummary?: string;\n operationDescription?: string;\n buttonClassName?: string;\n buttonStyle?: ButtonStyle;\n formFields?: Record<string, unknown>;\n jsonBody?: unknown;\n filesArg?: Record<string, unknown>;\n hasPayload?: boolean;\n};\n\ntype TableAction = {\n id: string;\n text: string;\n className?: string;\n [key: string]: unknown;\n};\n\ntype Position = 'top-right' | 'top-left' | 'bottom-left' | 'bottom-right' | 'card-overlay';\n\ntype StyledInfoButtonProps = {\n buttonStyle?: ButtonStyle;\n onClick?: () => void;\n isVisible?: boolean;\n tableName?: string;\n position?: Position;\n componentId?: string;\n className?: string;\n onSqlFetch?: (sql: string | string[]) => void;\n performInteraction?: (payload: Record<string, unknown>) => Promise<Record<string, unknown>>;\n tableActions?: TableAction[];\n firstRowData?: Record<string, unknown>;\n componentProps?: Record<string, unknown>;\n}\n\n\nexport function StyledInfoButton({\n position = 'bottom-right',\n componentId,\n className = '',\n isVisible = true,\n onSqlFetch,\n performInteraction = () => Promise.resolve({} as Record<string, unknown>),\n tableActions = [],\n firstRowData = {},\n componentProps = {}\n}: StyledInfoButtonProps) {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [isLoadingModalOpen, setIsLoadingModalOpen] = useState(false);\n\n const [sqlQuery, setSqlQuery] = useState<string | string[]>('');\n const [queryHeadings, setQueryHeadings] = useState<string[]>([]);\n const [tableButtonExplanations, setTableButtonExplanations] = useState<TableButtonExplanation[]>([]);\n\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string>('');\n\n const modalOpen = useRef(false);\n\n const queryCache = useQueryCache();\n\n const currentInteractionState = extractInteractionState(componentProps);\n\n let interactionStateKey = '';\n\n try {\n interactionStateKey = JSON.stringify(currentInteractionState);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.warn('Failed to serialize interaction state:', err);\n interactionStateKey = `fallback_${Date.now()}_${Math.random()}`;\n }\n\n const prevInteractionStateKeyRef = useRef<string | undefined>(undefined);\n\n const interactionState = currentInteractionState;\n\n useEffect(() => {\n const prevKey = prevInteractionStateKeyRef.current;\n const currentKey = interactionStateKey;\n\n if (prevKey !== currentKey && prevKey !== undefined) {\n if (componentId) {\n queryCache.invalidateComponent(componentId);\n\n setSqlQuery('');\n setQueryHeadings([]);\n setTableButtonExplanations([]);\n setError('');\n }\n }\n\n prevInteractionStateKeyRef.current = currentKey;\n }, [interactionStateKey, componentId, queryCache]);\n\n function handleActionQueryResponse(apiResponse: Record<string, unknown>): {sql: string | string[], headings: string[]} {\n try {\n const actionQueryResponse = apiResponse.actionQuery;\n\n if (!actionQueryResponse || typeof actionQueryResponse !== 'object') {\n return {sql: ERROR_MESSAGES.ACTION_NOT_AVAILABLE, headings: []};\n }\n\n if ('errors' in actionQueryResponse && Array.isArray(actionQueryResponse.errors) &&\n actionQueryResponse.errors.length > 0) {\n const errors = actionQueryResponse.errors as Array<{error?: string}>;\n const errorMessages = errors\n .filter(err => err && typeof err.error === 'string')\n .map(err => err.error as string)\n .join('\\n');\n\n return {sql: errorMessages || ERROR_MESSAGES.ACTION_NOT_AVAILABLE, headings: []};\n }\n\n if ('success' in actionQueryResponse && Array.isArray(actionQueryResponse.success)) {\n const successArray = actionQueryResponse.success as Array<{\n query_key?: string;\n query?: string;\n }>;\n\n const validQueries = successArray\n .filter(item => item && typeof item === 'object' && item.query && typeof item.query === 'string')\n .map(item => ({\n query: item.query as string,\n queryKey: item.query_key || 'Action Query'\n }));\n\n if (validQueries.length === 0) {\n return {sql: ERROR_MESSAGES.ACTION_NOT_AVAILABLE, headings: []};\n }\n\n const queries = validQueries.map(q => q.query);\n const headings = validQueries.map(q => formatQueryHeading(q.queryKey));\n\n return {\n sql: queries.length > 1 ? queries : queries[0],\n headings: headings\n };\n }\n\n return {sql: ERROR_MESSAGES.ACTION_NOT_AVAILABLE, headings: []};\n } catch (err) {\n return {sql: ERROR_MESSAGES.ACTION_NOT_AVAILABLE, headings: []};\n }\n }\n\n async function fetchTableButtonExplanations(): Promise<TableButtonExplanation[]> {\n try {\n if (!tableActions || tableActions.length === 0) {\n return [];\n }\n\n\n const buttonPromises = tableActions.map(async (action) => {\n try {\n const result = await performInteraction({\n id: action.id || componentId,\n interactionType: 'tableButton',\n payload: {\n row: firstRowData,\n params: { isInfoButtonInteraction: true }\n },\n affectedComponents: []\n });\n\n if (result && typeof result === 'object' && 'apiResponse' in result &&\n result.apiResponse && typeof result.apiResponse === 'object') {\n const response = result.apiResponse as Record<string, unknown>;\n\n if (response.request_url && typeof response.request_url === 'string') {\n const buttonStyle: ButtonStyle = {};\n const actionClassName = (action.className as string) || '';\n\n if (typeof actionClassName === 'string') {\n const bgMatch = actionClassName.match(/bg-\\[(#[0-9A-Fa-f]{6})\\]/);\n\n if (bgMatch) {\n buttonStyle.backgroundColor = bgMatch[1];\n }\n\n const textMatch = actionClassName.match(/text-\\[(#[0-9A-Fa-f]{6})\\]/);\n\n if (textMatch) {\n buttonStyle.color = textMatch[1];\n }\n\n const borderMatch = actionClassName.match(/border-\\[(#[0-9A-Fa-f]{6})\\]/);\n\n if (borderMatch) {\n buttonStyle.border = `1px solid ${borderMatch[1]}`;\n }\n }\n\n const formFields = response.form_fields as Record<string, unknown> || {};\n const jsonBody = response.json_body;\n const filesArg = response.files_arg as Record<string, unknown> || {};\n\n // Check if any payload fields have content\n const hasFormFields = Object.keys(formFields).length > 0;\n const hasJsonBody = jsonBody !== null && jsonBody !== undefined && jsonBody !== '';\n const hasFilesArg = Object.keys(filesArg).length > 0;\n const hasPayload = hasFormFields || hasJsonBody || hasFilesArg;\n\n return {\n action: action.text || action.id || 'Button Action',\n explanation: response.request_url,\n operationName: response.operation_name as string,\n operationSummary: response.operation_summary as string,\n operationDescription: response.operation_description as string,\n buttonClassName: actionClassName,\n buttonStyle,\n formFields,\n jsonBody,\n filesArg,\n hasPayload\n };\n }\n }\n\n return null;\n } catch (err) {\n return null;\n }\n });\n\n const results = await Promise.all(buttonPromises);\n\n return results.filter((result) => result !== null) as TableButtonExplanation[];\n } catch (err) {\n return [];\n }\n }\n\n async function fetchSemanticLayerQuery(): Promise<{sql: string | string[], headings: string[]}> {\n try {\n setIsLoading(true);\n setError('');\n\n const result = await performInteraction({\n id: componentId || 'styled-info-button',\n interactionType: 'semanticLayerQuery',\n affectedComponents: []\n });\n\n if (result && typeof result === 'object' && 'apiResponse' in result &&\n result.apiResponse && typeof result.apiResponse === 'object') {\n const apiResponse = result.apiResponse as Record<string, unknown>;\n\n const queryType = apiResponse.queryType as string | undefined;\n\n if (queryType === 'action' && 'actionQuery' in apiResponse) {\n return handleActionQueryResponse(apiResponse);\n }\n\n if (!('sql' in apiResponse)) {\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n\n const sqlResponse = apiResponse.sql;\n\n if (!sqlResponse || (typeof sqlResponse !== 'object')) {\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n\n if ('success' in sqlResponse && Array.isArray(sqlResponse.success)) {\n const successArray = sqlResponse.success as Array<{\n error: boolean;\n sql?: string;\n errorMessage?: string;\n query_key?: string;\n }>;\n\n const hasAnyValidQuery = successArray.some(item =>\n item && typeof item === 'object' && !item.error && 'sql' in item && typeof item.sql === 'string' &&\n item.sql.trim()\n );\n\n if (!hasAnyValidQuery) {\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n\n const validQueries = successArray\n .filter(item =>\n item &&\n typeof item === 'object' && !item.error && 'sql' in item && typeof item.sql === 'string' &&\n item.sql.trim()\n )\n .map(item => ({\n sql: item.sql as string,\n queryKey: item.query_key || 'Query details'\n }));\n\n if (validQueries.length === 0) {\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n\n // Extract SQL and headings in the correct order\n const sqlQueries = validQueries.map(q => q.sql);\n const extractedHeadings = validQueries.map(q => formatQueryHeading(q.queryKey));\n\n return {\n sql: sqlQueries.length > 1 ? sqlQueries : sqlQueries[0],\n headings: extractedHeadings\n };\n }\n\n if ('error' in sqlResponse && typeof sqlResponse.error === 'string') {\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n\n if (Array.isArray(sqlResponse)) {\n const sqlObjects = sqlResponse as Array<{sql: string, error: boolean, query_key?: string}>;\n\n const validQueries = sqlObjects\n .filter(obj => obj && typeof obj === 'object' && 'sql' in obj && 'error' in obj && !obj.error && obj.sql && obj.sql.trim())\n .map(obj => ({\n sql: obj.sql,\n queryKey: obj.query_key || 'Query details'\n }));\n\n if (validQueries.length === 0) {\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n\n const sqlQueries = validQueries.map(q => q.sql);\n const extractedHeadings = validQueries.map(q => formatQueryHeading(q.queryKey));\n\n return {\n sql: sqlQueries.length > 1 ? sqlQueries : sqlQueries[0],\n headings: extractedHeadings\n };\n }\n\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n }\n\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n\n } catch (err) {\n\n return {sql: ERROR_MESSAGES.SQL_NOT_AVAILABLE, headings: []};\n\n } finally {\n setIsLoading(false);\n }\n }\n\n async function handleInfoClick(e: React.MouseEvent) {\n e.stopPropagation();\n e.preventDefault();\n\n modalOpen.current = true;\n\n try {\n const cachedSemanticQuery = componentId\n ? queryCache.getCachedQuery(componentId, 'semanticLayerQuery', interactionState)\n : null;\n\n const cachedTableButton = componentId && tableActions.length > 0\n ? queryCache.getCachedQuery(componentId, 'tableButton', interactionState)\n : null;\n\n if (cachedSemanticQuery && (tableActions.length === 0 || cachedTableButton)) {\n setSqlQuery(cachedSemanticQuery.sqlQuery);\n setQueryHeadings(cachedSemanticQuery.queryHeadings);\n setTableButtonExplanations(\n cachedTableButton?.tableButtonExplanations || cachedSemanticQuery.tableButtonExplanations\n );\n setError('');\n\n if (modalOpen.current) {\n setIsModalOpen(true);\n }\n\n if (onSqlFetch && cachedSemanticQuery.sqlQuery &&\n cachedSemanticQuery.sqlQuery !== ERROR_MESSAGES.SQL_NOT_AVAILABLE) {\n onSqlFetch(cachedSemanticQuery.sqlQuery);\n }\n\n return;\n }\n\n setIsLoadingModalOpen(true);\n setError('');\n\n const [sqlResult, buttonExplanations] = await Promise.all([\n fetchSemanticLayerQuery(),\n fetchTableButtonExplanations()\n ]);\n\n if (componentId) {\n const cacheEntry = {\n sqlQuery: sqlResult.sql || ERROR_MESSAGES.SQL_NOT_AVAILABLE,\n queryHeadings: sqlResult.headings || [],\n tableButtonExplanations: buttonExplanations,\n timestamp: Date.now(),\n };\n\n queryCache.setCachedQuery(componentId, 'semanticLayerQuery', interactionState, cacheEntry);\n\n if (tableActions.length > 0) {\n queryCache.setCachedQuery(componentId, 'tableButton', interactionState, {\n ...cacheEntry,\n tableButtonExplanations: buttonExplanations,\n });\n }\n }\n\n setSqlQuery(sqlResult.sql || ERROR_MESSAGES.SQL_NOT_AVAILABLE);\n setQueryHeadings(sqlResult.headings || []);\n setTableButtonExplanations(buttonExplanations);\n\n setIsLoadingModalOpen(false);\n\n if (modalOpen.current) {\n setIsModalOpen(true);\n }\n\n if (onSqlFetch && sqlResult.sql && sqlResult.sql !== ERROR_MESSAGES.SQL_NOT_AVAILABLE) {\n onSqlFetch(sqlResult.sql);\n }\n } catch (err) {\n setSqlQuery(ERROR_MESSAGES.SQL_NOT_AVAILABLE);\n setTableButtonExplanations([]);\n setIsLoadingModalOpen(false);\n\n if (modalOpen.current) {\n setIsModalOpen(true);\n }\n }\n }\n\n function resetState() {\n setIsModalOpen(false);\n setIsLoadingModalOpen(false);\n setSqlQuery('');\n setQueryHeadings([]);\n setTableButtonExplanations([]);\n setError('');\n setIsLoading(false);\n }\n\n function handleModalClose() {\n // User explicitly closed the modal\n modalOpen.current = false;\n resetState();\n }\n\n function handleRetry() {\n resetState();\n const mockEvent = {\n stopPropagation: () => void 0,\n preventDefault: () => void 0\n } as React.MouseEvent;\n handleInfoClick(mockEvent);\n }\n\n\n if (!isVisible) {\n return null;\n }\n\n return (\n <>\n <button\n className={`${POSITION_CLASSES[position]} ${className}`}\n onClick={handleInfoClick}\n title=\"View Query Details\"\n type=\"button\"\n style={{\n width: '60px',\n height: '60px',\n transform: 'rotate(0deg)',\n opacity: 1,\n border: 'none',\n background: 'transparent',\n padding: 0,\n }}\n >\n <svg\n width=\"50\"\n height=\"50\"\n viewBox=\"0 0 67 66\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g filter=\"url(#filter0_d_4766_2811)\">\n <rect x=\"16.1667\" y=\"15.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#A601FF\" strokeWidth=\"1\" shapeRendering=\"crispEdges\"/>\n <path d=\"M33.0756 28.0171C33.3312 27.5498 34.0023 27.5498 34.2578 28.0171L35.7159 30.683C35.7777 30.7961 35.8706 30.889 35.9837 30.9508L38.6496 32.4089C39.1169 32.6644 39.1169 33.3355 38.6496 33.5911L35.9837 35.0491C35.8706 35.111 35.7777 35.2039 35.7159 35.317L34.2578 37.9829C34.0023 38.4501 33.3312 38.4501 33.0756 37.9829L31.6176 35.317C31.5557 35.2039 31.4628 35.111 31.3497 35.0491L28.6838 33.5911C28.2166 33.3355 28.2166 32.6644 28.6838 32.4089L31.3497 30.9508C31.4628 30.889 31.5557 30.7961 31.6176 30.683L33.0756 28.0171Z\" fill=\"#A601FF\"/>\n <path d=\"M29.0634 27.1601C29.1801 26.9466 29.4866 26.9466 29.6033 27.1601L29.9973 27.8804C30.0255 27.932 30.068 27.9745 30.1196 28.0027L30.84 28.3967C31.0534 28.5134 31.0534 28.8199 30.84 28.9367L30.1196 29.3306C30.068 29.3589 30.0255 29.4013 29.9973 29.4529L29.6033 30.1733C29.4866 30.3867 29.1801 30.3867 29.0634 30.1733L28.6694 29.4529C28.6412 29.4013 28.5987 29.3589 28.5471 29.3306L27.8268 28.9367C27.6133 28.8199 27.6133 28.5134 27.8268 28.3967L28.5471 28.0027C28.5987 27.9745 28.6412 27.932 28.6694 27.8804L29.0634 27.1601Z\" fill=\"#A601FF\"/>\n <path d=\"M38.0346 36.5104C38.1638 36.2743 38.5029 36.2743 38.6321 36.5105L38.8874 36.9773C38.9186 37.0344 38.9656 37.0814 39.0227 37.1126L39.4896 37.368C39.7257 37.4971 39.7257 37.8363 39.4896 37.9654L39.0227 38.2207C38.9656 38.252 38.9186 38.2989 38.8874 38.3561L38.6321 38.8229C38.5029 39.059 38.1638 39.059 38.0346 38.8229L37.7793 38.3561C37.748 38.2989 37.7011 38.252 37.6439 38.2207L37.1771 37.9654C36.941 37.8363 36.941 37.4971 37.1771 37.368L37.6439 37.1126C37.7011 37.0814 37.748 37.0344 37.7793 36.9773L38.0346 36.5104Z\" fill=\"#A601FF\"/>\n </g>\n <defs>\n <filter id=\"filter0_d_4766_2811\" x=\"0.666687\" y=\"0\" width=\"66\" height=\"66\" filterUnits=\"userSpaceOnUse\" colorInterpolationFilters=\"sRGB\">\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\"/>\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/>\n <feMorphology radius=\"5\" operator=\"dilate\" in=\"SourceAlpha\" result=\"effect1_dropShadow_4766_2811\"/>\n <feOffset/>\n <feGaussianBlur stdDeviation=\"5\"/>\n <feComposite in2=\"hardAlpha\" operator=\"out\"/>\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.0317231 0 0 0 0 0.0834676 0 0 0 0 0.370052 0 0 0 0.05 0\"/>\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_4766_2811\"/>\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_4766_2811\" result=\"shape\"/>\n </filter>\n </defs>\n </svg>\n </button>\n\n <QueryLoadingModal isOpen={isLoadingModalOpen} onClose={handleModalClose} />\n\n <QueryDetailsModal\n isOpen={isModalOpen}\n onClose={handleModalClose}\n isLoading={isLoading}\n error={error}\n sqlQuery={sqlQuery}\n queryHeadings={queryHeadings}\n tableButtonExplanations={tableButtonExplanations}\n onRetry={handleRetry}\n />\n </>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grapesjs-tailwind.d.js","names":[],"sources":["../../src/types/grapesjs-tailwind.d.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\ndeclare module 'grapesjs-tailwind' {\n import { Plugin } from 'grapesjs';\n\n export type GrapesjsTailwindOptions = {\n blocks?: boolean;\n categories?: boolean;\n classesViewerOptions?: {\n appendTo?: string | HTMLElement;\n open?: boolean;\n showEmpty?: boolean;\n };\n config?: {\n plugins?: any[];\n presets?: any[];\n theme?: Record<string, any>;\n variants?: Record<string, any>;\n };\n customClasses?: string[];\n customTailwindViewerCSS?: string;\n gridDevicesPanel?: boolean;\n importTailwind?: boolean;\n includeLib?: boolean;\n purgeCss?: boolean;\n tailwindConfig?: string;\n tailwindCssPath?: string;\n tailwindExtendUi?: boolean;\n };\n\n // eslint-disable-next-line init-declarations\n declare const grapesjsTailwind: Plugin<GrapesjsTailwindOptions>;\n export default grapesjsTailwind;\n}\n\ndeclare module 'sherlockjs' {\n type ParseResult = {\n endDate?: Date;\n eventTitle?: string;\n isAllDay?: boolean;\n startDate?: Date;\n }\n\n type Sherlock = {\n parse(text: string): ParseResult;\n }\n\n // eslint-disable-next-line init-declarations\n const sherlock: Sherlock;\n export default sherlock;\n}\n\ndeclare module 'recharts/lib' {\n export * from 'recharts';\n}\n\ndeclare module 'recharts/lib/util/DOMUtils' {\n export function getOffset(el: HTMLElement): {\n
|
|
1
|
+
{"version":3,"file":"grapesjs-tailwind.d.js","names":[],"sources":["../../src/types/grapesjs-tailwind.d.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\ndeclare module 'grapesjs-tailwind' {\n import { Plugin } from 'grapesjs';\n\n export type GrapesjsTailwindOptions = {\n blocks?: boolean;\n categories?: boolean;\n classesViewerOptions?: {\n appendTo?: string | HTMLElement;\n open?: boolean;\n showEmpty?: boolean;\n };\n config?: {\n plugins?: any[];\n presets?: any[];\n theme?: Record<string, any>;\n variants?: Record<string, any>;\n };\n customClasses?: string[];\n customTailwindViewerCSS?: string;\n gridDevicesPanel?: boolean;\n importTailwind?: boolean;\n includeLib?: boolean;\n purgeCss?: boolean;\n tailwindConfig?: string;\n tailwindCssPath?: string;\n tailwindExtendUi?: boolean;\n };\n\n // eslint-disable-next-line init-declarations\n declare const grapesjsTailwind: Plugin<GrapesjsTailwindOptions>;\n export default grapesjsTailwind;\n}\n\ndeclare module 'sherlockjs' {\n type ParseResult = {\n endDate?: Date;\n eventTitle?: string;\n isAllDay?: boolean;\n startDate?: Date;\n }\n\n type Sherlock = {\n parse(text: string): ParseResult;\n }\n\n // eslint-disable-next-line init-declarations\n const sherlock: Sherlock;\n export default sherlock;\n}\n\ndeclare module 'recharts/lib' {\n export * from 'recharts';\n}\n\ndeclare module 'recharts/lib/util/DOMUtils' {\n export function getOffset(el: HTMLElement): {\n left: number;\n top: number;\n };\n}\n"],"mappings":"","ignoreList":[]}
|