@peak-ai/canvas 1.4.12 → 1.4.13-rc.1

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.
@@ -11,6 +11,8 @@ type GrapesjsCanvasProps = {
11
11
  setEditor: (editor: Editor) => void;
12
12
  performInteraction: (payload: Record<string, any>) => Promise<Record<string, any> | undefined>;
13
13
  newDataNotifier: (notifHandler: NotificationHandler) => void;
14
+ setHasChanged: (hasChanged: boolean) => void;
15
+ isStreaming: boolean;
14
16
  };
15
- declare function GrapesjsCanvas({ json, mode, setEditor, performInteraction, newDataNotifier, }: GrapesjsCanvasProps): import("react/jsx-runtime").JSX.Element;
17
+ declare function GrapesjsCanvas({ json, mode, setEditor, performInteraction, newDataNotifier, setHasChanged, isStreaming, }: GrapesjsCanvasProps): import("react/jsx-runtime").JSX.Element;
16
18
  export default GrapesjsCanvas;
package/GrapesjsCanvas.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _regeneratorRuntime from"@babel/runtime/regenerator";/* eslint-disable @typescript-eslint/no-explicit-any */import React,{useEffect,useRef}from"react";// eslint-disable-next-line import/no-named-as-default
2
- import grapesjs from"grapesjs";import"grapesjs/dist/css/grapes.min.css";import tailwind from"grapesjs-tailwind";import{TypesToRegister}from"./constants";import{toKebabCase}from"./helpers";import{createGrapesjsShadcnGenericPlugin}from"./plugins/grapejs-plugin";import{StyledEditor}from"./index.styles";import{tailwindCompiledCss}from"./helpers/css";import{datePickerCss}from"./helpers/date-picker";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";function setComponentProperties(editor,isPreview){function setPropertiesRecursively(comp){comp.set({editable:!isPreview,draggable:!isPreview,droppable:!isPreview&&comp.getName()!=="Shadcn-generic",selectable:!isPreview,hoverable:!isPreview,highlightable:!isPreview,copyable:false,resizable:false,removable:!isPreview,badgable:false});if(!isPreview){comp.set("toolbar",[{attributes:{"class":"fa fa-arrows"},command:"tlb-move"},{attributes:{"class":"fa fa-trash"},command:"tlb-delete"}])}comp.components().forEach(setPropertiesRecursively)}if(isPreview){editor.runCommand("core:preview")}else{editor.stopCommand("core:preview")}var wrapper=editor.getWrapper();wrapper==null||wrapper.find("*").forEach(setPropertiesRecursively)}function convertStyles(stylesArray){return stylesArray.map(function(block){var selectors=Array.isArray(block.selectors)?block.selectors.join(", "):block.selectors;var declarations=Object.entries(block.style).map(function(_ref){var prop=_ref[0],value=_ref[1];return toKebabCase(prop)+": "+value+";"}).join(" ");return selectors+" { "+declarations+" }"}).join("\n")}function expandActions(node){var _node$componentProps;if(node.type==="shadcn-generic"&&node.componentName==="Actions"&&Array.isArray((_node$componentProps=node.componentProps)==null?void 0:_node$componentProps.actions)){var actions=node.componentProps.actions;return _extends({},node,{type:"div",classes:["dashboard-cards"].concat(node.classes||[]),componentName:undefined,componentProps:undefined,components:actions.map(function(action,i){var icon=action.icon,title=action.title,description=action.description;return{id:node.id+"--action-card-"+i,type:"shadcn-generic",componentName:"ActionCard",badgable:false,copyable:false,componentProps:{icon:icon,headerContent:title,bodyContent:description}}})})}if(Array.isArray(node.components)){return _extends({},node,{components:node.components.map(expandActions)})}return node}function setInteracting(renderedComponents,components,inProgress){components.forEach(function(component){var componentId=component.componentId,showLoader=component.showLoader;if(!showLoader){return}var gjsModel=renderedComponents[componentId];if(gjsModel){gjsModel.set("attributes",_extends({},gjsModel.get("attributes"),{interactionApiInProgress:inProgress}))}})}function GrapesjsCanvas(_ref2){var json=_ref2.json,_ref2$mode=_ref2.mode,mode=_ref2$mode===void 0?"preview":_ref2$mode,setEditor=_ref2.setEditor,performInteraction=_ref2.performInteraction,_ref2$newDataNotifier=_ref2.newDataNotifier,newDataNotifier=_ref2$newDataNotifier===void 0?function(){// Default empty handler
3
- }:_ref2$newDataNotifier;var editorRef=useRef(null);var editorInstance=useRef(null);var renderedComponents={};function notificationHandler(props){if(!props){return true}var componentId=props.componentId,newProps=props.newProps,newAttributes=props.newAttributes;var model=renderedComponents[componentId];if(!model){return false}var parsedNewProps=_extends({},newProps);if(newProps.pagination){parsedNewProps.pagination=_extends({},model.get("componentProps").pagination||{},newProps.pagination)}model.set("componentProps",_extends({},model.get("componentProps"),parsedNewProps));model.set("attributes",_extends({},model.get("attributes"),newAttributes));return true}useEffect(function(){newDataNotifier(notificationHandler)},[]);function performInteractionWrapper(_x){return _performInteractionWrapper.apply(this,arguments)}function _performInteractionWrapper(){_performInteractionWrapper=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(payload){var _editorInstance$curre;var updatedJson,apiResponse,componentUpdates;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.next=2;return(_editorInstance$curre=editorInstance.current)==null?void 0:_editorInstance$curre.store();case 2:updatedJson=_context.sent;setInteracting(renderedComponents,payload.affectedComponents,true);_context.prev=4;_context.next=7;return performInteraction(_extends({},payload,{json:updatedJson}));case 7:apiResponse=_context.sent;componentUpdates=apiResponse||{};Object.entries(componentUpdates).forEach(function(_ref4){var key=_ref4[0],value=_ref4[1];var model=renderedComponents[key];if(model){model.set("componentProps",_extends({},model.get("componentProps"),value))}});return _context.abrupt("return",componentUpdates);case 11:_context.prev=11;setInteracting(renderedComponents,payload.affectedComponents,false);return _context.finish(11);case 14:case"end":return _context.stop()}},_callee,null,[[4,,11,14]])}));return _performInteractionWrapper.apply(this,arguments)}useEffect(function(){var _json$pages,_json$pages$0$frames;if(!editorRef.current){return function cleanup(){// Cleanup if editorRef is not available
4
- }}if(editorInstance.current){editorInstance.current.destroy();editorInstance.current=null}var currentMode=mode;var editor=grapesjs.init({container:editorRef.current,height:"100%",plugins:[tailwind,createGrapesjsShadcnGenericPlugin(currentMode,performInteractionWrapper,renderedComponents)],storageManager:{type:"none"},richTextEditor:{actions:["bold","italic","underline","strikethrough"]},canvas:{customBadgeLabel:function customBadgeLabel(component){var tagName=component.get("tagName");return tagName==="body"?"":tagName||""}}});// Tailwind CSS rules aren't fully added to our component
2
+ import grapesjs from"grapesjs";import"grapesjs/dist/css/grapes.min.css";import tailwind from"grapesjs-tailwind";import{TypesToRegister}from"./constants";import{toKebabCase}from"./helpers";import{createGrapesjsShadcnGenericPlugin}from"./plugins/grapejs-plugin";import{StyledEditor}from"./index.styles";import{tailwindCompiledCss}from"./helpers/css";import{datePickerCss}from"./helpers/date-picker";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";function setComponentProperties(editor,isPreview){function setPropertiesRecursively(comp){comp.set({editable:!isPreview,draggable:!isPreview,droppable:!isPreview&&comp.getName()!=="Shadcn-generic",selectable:!isPreview,hoverable:!isPreview,highlightable:!isPreview,copyable:false,resizable:false,removable:!isPreview,badgable:false});if(!isPreview){comp.set("toolbar",[{attributes:{"class":"fa fa-arrows"},command:"tlb-move"},{attributes:{"class":"fa fa-trash"},command:"tlb-delete"}])}comp.components().forEach(setPropertiesRecursively)}if(isPreview){editor.runCommand("core:preview")}else{editor.stopCommand("core:preview")}var wrapper=editor.getWrapper();wrapper==null||wrapper.find("*").forEach(setPropertiesRecursively)}function convertStyles(stylesArray){return stylesArray.map(function(block){var selectors=Array.isArray(block.selectors)?block.selectors.join(", "):block.selectors;var declarations=Object.entries(block.style).map(function(_ref){var prop=_ref[0],value=_ref[1];return toKebabCase(prop)+": "+value+";"}).join(" ");return selectors+" { "+declarations+" }"}).join("\n")}function expandActions(node){var _node$componentProps;if(node.type==="shadcn-generic"&&node.componentName==="Actions"&&Array.isArray((_node$componentProps=node.componentProps)==null?void 0:_node$componentProps.actions)){var actions=node.componentProps.actions;return _extends({},node,{type:"div",classes:["dashboard-cards"].concat(node.classes||[]),componentName:undefined,componentProps:undefined,components:actions.map(function(action,i){var icon=action.icon,title=action.title,description=action.description;return{id:node.id+"--action-card-"+i,type:"shadcn-generic",componentName:"ActionCard",badgable:false,copyable:false,componentProps:{icon:icon,headerContent:title,bodyContent:description}}})})}if(Array.isArray(node.components)){return _extends({},node,{components:node.components.map(expandActions)})}return node}function setInteracting(renderedComponents,components,inProgress){components.forEach(function(component){var componentId=component.componentId,showLoader=component.showLoader;if(!showLoader){return}var gjsModel=renderedComponents[componentId];if(gjsModel){gjsModel.set("attributes",_extends({},gjsModel.get("attributes"),{interactionApiInProgress:inProgress}))}})}function GrapesjsCanvas(_ref2){var json=_ref2.json,_ref2$mode=_ref2.mode,mode=_ref2$mode===void 0?"preview":_ref2$mode,setEditor=_ref2.setEditor,performInteraction=_ref2.performInteraction,_ref2$newDataNotifier=_ref2.newDataNotifier,newDataNotifier=_ref2$newDataNotifier===void 0?function(){// no op
3
+ }:_ref2$newDataNotifier,setHasChanged=_ref2.setHasChanged,isStreaming=_ref2.isStreaming;var editorRef=useRef(null);var editorInstance=useRef(null);var renderedComponents=useRef({});var isStreamingRef=useRef(isStreaming);var isSystemUpdateRef=useRef(false);var lastJsonRef=useRef("");var isEditorAliveRef=useRef(false);useEffect(function(){isStreamingRef.current=isStreaming},[isStreaming]);function notificationHandler(props){if(!props){return true}var componentId=props.componentId,newProps=props.newProps,newAttributes=props.newAttributes;var model=renderedComponents.current[componentId];if(!model){return false}var parsedNewProps=_extends({},newProps);if(newProps.pagination){parsedNewProps.pagination=_extends({},model.get("componentProps").pagination||{},newProps.pagination)}model.set("componentProps",_extends({},model.get("componentProps"),parsedNewProps));model.set("attributes",_extends({},model.get("attributes"),newAttributes));return true}useEffect(function(){newDataNotifier(notificationHandler)},[]);function performInteractionWrapper(_x){return _performInteractionWrapper.apply(this,arguments)}function _performInteractionWrapper(){_performInteractionWrapper=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(payload){var _editorInstance$curre;var updatedJson,apiResponse,componentUpdates;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:_context4.next=2;return(_editorInstance$curre=editorInstance.current)==null?void 0:_editorInstance$curre.store();case 2:updatedJson=_context4.sent;setInteracting(renderedComponents.current,payload.affectedComponents,true);_context4.prev=4;_context4.next=7;return performInteraction(_extends({},payload,{json:updatedJson}));case 7:apiResponse=_context4.sent;componentUpdates=apiResponse||{};Object.entries(componentUpdates).forEach(function(_ref6){var key=_ref6[0],value=_ref6[1];var model=renderedComponents.current[key];if(model){model.set("componentProps",_extends({},model.get("componentProps"),value))}});return _context4.abrupt("return",componentUpdates);case 11:_context4.prev=11;setInteracting(renderedComponents.current,payload.affectedComponents,false);return _context4.finish(11);case 14:case"end":return _context4.stop()}},_callee4,null,[[4,,11,14]])}));return _performInteractionWrapper.apply(this,arguments)}useEffect(function(){var _json$pages,_json$pages$0$frames;if(!editorRef.current){return function(){// no op
4
+ }}if(editorInstance.current){editorInstance.current.destroy();editorInstance.current=null;isEditorAliveRef.current=false}var currentMode=mode;var editor=grapesjs.init({container:editorRef.current,height:"100%",plugins:[tailwind,createGrapesjsShadcnGenericPlugin(currentMode,performInteractionWrapper,renderedComponents.current,setHasChanged)],storageManager:{type:"none"},richTextEditor:{actions:["bold","italic","underline","strikethrough"]},canvas:{customBadgeLabel:function customBadgeLabel(component){var tagName=component.get("tagName");return tagName==="body"?"":tagName||""}}});isEditorAliveRef.current=true;function checkDirty(){return _checkDirty.apply(this,arguments)}function _checkDirty(){_checkDirty=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(){var stored,newJson;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:if(!(isStreamingRef.current||isSystemUpdateRef.current)){_context3.next=2;break}return _context3.abrupt("return");case 2:if(!(!isEditorAliveRef.current||!editorInstance.current)){_context3.next=4;break}return _context3.abrupt("return");case 4:stored=null;_context3.prev=5;_context3.next=8;return editorInstance.current.store();case 8:stored=_context3.sent;_context3.next=14;break;case 11:_context3.prev=11;_context3.t0=_context3["catch"](5);return _context3.abrupt("return");case 14:if(stored){_context3.next=16;break}return _context3.abrupt("return");case 16:newJson=JSON.stringify(stored);if(newJson!==lastJsonRef.current){setHasChanged(true);lastJsonRef.current=newJson}case 18:case"end":return _context3.stop()}},_callee3,null,[[5,11]])}));return _checkDirty.apply(this,arguments)}var debouncedCheckDirty=function(){var timeout=null;return function(){if(timeout){clearTimeout(timeout)}timeout=setTimeout(checkDirty,200)}}();["component:add","component:remove","component:update:content","style:update","component:drag:end","rte:change"].forEach(function(evt){return 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
5
5
  // So, adding them from here!
6
- editor.on("load",function(){var canvasHead=editor.Canvas.getDocument().head;var style=document.createElement("style");var fullCss="\n "+tailwindCompiledCss+"\n "+datePickerCss+"\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n\n ";style.innerHTML=fullCss;style.setAttribute("type","text/css");canvasHead.appendChild(style)});editorInstance.current=editor;if(setEditor){setEditor(editor)}TypesToRegister.forEach(function(_ref3){var type=_ref3.type,tagName=_ref3.tagName;if(!editor.DomComponents.getType(type)){editor.DomComponents.addType(type,{model:{defaults:{tagName:tagName}},view:{}})}});if(json&&((_json$pages=json.pages)==null?void 0:_json$pages.length)>0&&((_json$pages$0$frames=json.pages[0].frames)==null?void 0:_json$pages$0$frames.length)>0){var raw=json.pages[0].frames[0].component;var processed=expandActions(raw);editor.setComponents(processed);var cssText=convertStyles(json.styles||[]);editor.setStyle(cssText)}editor.on("load",function(){setComponentProperties(editor,mode==="preview")});return function cleanup(){editor.destroy()}},[json,mode]);return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(StyledEditor,{}),/*#__PURE__*/_jsx("div",{ref:editorRef,id:"grapesjs-editor"})]})}export default GrapesjsCanvas;
6
+ editor.on("load",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var canvasHead,style,fullCss;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:canvasHead=editor.Canvas.getDocument().head;style=document.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\n ";style.innerHTML=fullCss;style.setAttribute("type","text/css");canvasHead.appendChild(style);isSystemUpdateRef.current=true;setComponentProperties(editor,mode==="preview");_context.t0=JSON;_context.next=11;return editor.store();case 11:_context.t1=_context.sent;lastJsonRef.current=_context.t0.stringify.call(_context.t0,_context.t1);isSystemUpdateRef.current=false;case 14:case"end":return _context.stop()}},_callee)})));editorInstance.current=editor;if(setEditor){setEditor(editor)}TypesToRegister.forEach(function(_ref4){var type=_ref4.type,tagName=_ref4.tagName;if(!editor.DomComponents.getType(type)){editor.DomComponents.addType(type,{model:{defaults:{tagName:tagName}},view:{}})}});if(json&&((_json$pages=json.pages)==null?void 0:_json$pages.length)>0&&((_json$pages$0$frames=json.pages[0].frames)==null?void 0:_json$pages$0$frames.length)>0){isSystemUpdateRef.current=true;var raw=json.pages[0].frames[0].component;var processed=expandActions(raw);editor.setComponents(processed);var cssText=convertStyles(json.styles||[]);editor.setStyle(cssText);editor.on("load",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(){return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.t0=JSON;_context2.next=3;return editor.store();case 3:_context2.t1=_context2.sent;lastJsonRef.current=_context2.t0.stringify.call(_context2.t0,_context2.t1);isSystemUpdateRef.current=false;case 6:case"end":return _context2.stop()}},_callee2)})))}return function cleanup(){editor.destroy();isEditorAliveRef.current=false}},[json,mode]);return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(StyledEditor,{}),/*#__PURE__*/_jsx("div",{ref:editorRef,id:"grapesjs-editor"})]})}export default GrapesjsCanvas;
7
7
  //# sourceMappingURL=GrapesjsCanvas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GrapesjsCanvas.js","names":["React","useEffect","useRef","grapesjs","tailwind","TypesToRegister","toKebabCase","createGrapesjsShadcnGenericPlugin","StyledEditor","tailwindCompiledCss","datePickerCss","jsx","_jsx","jsxs","_jsxs","setComponentProperties","editor","isPreview","setPropertiesRecursively","comp","set","editable","draggable","droppable","getName","selectable","hoverable","highlightable","copyable","resizable","removable","badgable","attributes","command","components","forEach","runCommand","stopCommand","wrapper","getWrapper","find","convertStyles","stylesArray","map","block","selectors","Array","isArray","join","declarations","Object","entries","style","_ref","prop","value","expandActions","node","_node$componentProps","type","componentName","componentProps","actions","_extends","classes","concat","undefined","action","i","icon","title","description","id","headerContent","bodyContent","setInteracting","renderedComponents","inProgress","component","componentId","showLoader","gjsModel","get","interactionApiInProgress","GrapesjsCanvas","_ref2","json","_ref2$mode","mode","setEditor","performInteraction","_ref2$newDataNotifier","newDataNotifier","editorRef","editorInstance","notificationHandler","props","newProps","newAttributes","model","parsedNewProps","pagination","performInteractionWrapper","_x","_performInteractionWrapper","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","payload","_editorInstance$curre","updatedJson","apiResponse","componentUpdates","wrap","_callee$","_context","prev","next","current","store","sent","affectedComponents","_ref4","key","abrupt","finish","stop","_json$pages","_json$pages$0$frames","cleanup","destroy","currentMode","init","container","height","plugins","storageManager","richTextEditor","canvas","customBadgeLabel","tagName","on","canvasHead","Canvas","getDocument","head","document","createElement","fullCss","innerHTML","setAttribute","appendChild","_ref3","DomComponents","getType","addType","defaults","view","pages","length","frames","raw","processed","setComponents","cssText","styles","setStyle","Fragment","children","ref"],"sources":["../src/GrapesjsCanvas.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useRef, useState } from 'react';\n// eslint-disable-next-line import/no-named-as-default\nimport grapesjs, { Component, Editor } from 'grapesjs';\nimport 'grapesjs/dist/css/grapes.min.css';\nimport tailwind from 'grapesjs-tailwind';\nimport { TypesToRegister } from './constants';\nimport { toKebabCase } from './helpers';\nimport { createGrapesjsShadcnGenericPlugin } from './plugins/grapejs-plugin';\nimport { StyledEditor } from './index.styles';\nimport { tailwindCompiledCss } from './helpers/css';\nimport { datePickerCss } from './helpers/date-picker';\n\ntype NotificationHandler = (newData: {\n componentId: string;\n newProps: Record<string, any>;\n newAttributes: Record<string, any>;\n}) => boolean;\n\n\ntype GrapesjsCanvasProps = {\n json: any;\n mode?: 'editor' | 'preview';\n setEditor: (editor: Editor) => void;\n performInteraction: (payload: Record<string, any>) => Promise<Record<string, any> | undefined>;\n newDataNotifier: (notifHandler: NotificationHandler) => void;\n};\n\nfunction setComponentProperties(editor: Editor, isPreview: boolean) {\n function setPropertiesRecursively(comp: Component) {\n comp.set({\n editable: !isPreview,\n draggable: !isPreview,\n droppable: !isPreview && comp.getName() !== 'Shadcn-generic',\n selectable: !isPreview,\n hoverable: !isPreview,\n highlightable: !isPreview,\n copyable: false,\n resizable: false,\n removable: !isPreview,\n badgable: false,\n });\n\n if (!isPreview) {\n comp.set('toolbar', [\n { attributes: { class: 'fa fa-arrows' }, command: 'tlb-move' },\n { attributes: { class: 'fa fa-trash' }, command: 'tlb-delete' },\n ]);\n }\n\n comp.components().forEach(setPropertiesRecursively);\n }\n\n if (isPreview) {\n editor.runCommand('core:preview');\n } else {\n editor.stopCommand('core:preview');\n }\n\n const wrapper = editor.getWrapper();\n wrapper?.find('*').forEach(setPropertiesRecursively);\n}\n\nfunction convertStyles(stylesArray: any[]): string {\n return stylesArray\n .map((block) => {\n const selectors = Array.isArray(block.selectors)\n ? block.selectors.join(', ')\n : block.selectors;\n const declarations = Object.entries(block.style)\n .map(([prop, value]) => `${toKebabCase(prop)}: ${value};`)\n .join(' ');\n\n return `${selectors} { ${declarations} }`;\n })\n .join('\\n');\n}\n\nfunction expandActions(node: any): any {\n if (\n node.type === 'shadcn-generic' &&\n node.componentName === 'Actions' &&\n Array.isArray(node.componentProps?.actions)\n ) {\n const { actions } = node.componentProps;\n\n return {\n ...node,\n type: 'div',\n classes: ['dashboard-cards', ...(node.classes || [])],\n componentName: undefined,\n componentProps: undefined,\n components: actions.map((action: any, i: number) => {\n const { icon, title, description } = action;\n\n return {\n id: `${node.id}--action-card-${i}`,\n type: 'shadcn-generic',\n componentName: 'ActionCard',\n badgable: false,\n copyable: false,\n componentProps: {\n icon,\n headerContent: title,\n bodyContent: description,\n },\n };\n }),\n };\n }\n\n if (Array.isArray(node.components)) {\n return {\n ...node,\n components: node.components.map(expandActions),\n };\n }\n\n return node;\n}\n\nfunction setInteracting(\n renderedComponents: Record<string, Component>,\n components: { componentId: string; showLoader: boolean }[],\n inProgress: boolean,\n) {\n components.forEach((component) => {\n const { componentId, showLoader } = component;\n\n if (!showLoader) {\n return;\n }\n\n const gjsModel = renderedComponents[componentId];\n\n if (gjsModel) {\n gjsModel.set('attributes', {\n ...gjsModel.get('attributes'),\n interactionApiInProgress: inProgress,\n });\n }\n });\n}\n\nfunction GrapesjsCanvas({\n json,\n mode = 'preview',\n setEditor,\n performInteraction,\n newDataNotifier = () => {\n // Default empty handler\n },\n}: GrapesjsCanvasProps) {\n const editorRef = useRef<HTMLDivElement>(null);\n const editorInstance = useRef<any>(null);\n const renderedComponents: Record<string, Component> = {};\n\n function notificationHandler(props: Parameters<NotificationHandler>[0]): ReturnType<NotificationHandler> {\n if (!props) {\n return true;\n }\n\n const {\n componentId,\n newProps,\n newAttributes,\n } = props;\n \n const model = renderedComponents[componentId];\n\n if (!model) {\n return false;\n }\n\n const parsedNewProps = {\n ...newProps,\n };\n\n if (newProps.pagination) {\n parsedNewProps.pagination = {\n ...(model.get('componentProps').pagination || {}),\n ...newProps.pagination,\n }\n }\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...parsedNewProps,\n });\n\n model.set('attributes', {\n ...model.get('attributes'),\n ...newAttributes,\n });\n return true;\n }\n\n\n\n useEffect(() => {\n newDataNotifier(notificationHandler);\n }, []);\n\n\n async function performInteractionWrapper(payload: Record<string, any>) {\n const updatedJson = await editorInstance.current?.store();\n setInteracting(renderedComponents, payload.affectedComponents, true);\n\n try {\n const apiResponse = await performInteraction({\n ...payload,\n json: updatedJson,\n });\n \n const componentUpdates = apiResponse || {};\n\n Object.entries(componentUpdates).forEach(([key, value]) => {\n const model = renderedComponents[key];\n\n if (model) {\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...value,\n });\n }\n });\n\n return componentUpdates;\n } finally {\n setInteracting(renderedComponents, payload.affectedComponents, false);\n }\n }\n\n\n useEffect(() => {\n if (!editorRef.current) {\n return function cleanup() {\n // Cleanup if editorRef is not available\n };\n }\n\n if (editorInstance.current) {\n editorInstance.current.destroy();\n editorInstance.current = null;\n }\n\n const currentMode = mode;\n\n const editor = grapesjs.init({\n container: editorRef.current,\n height: '100%',\n plugins: [\n tailwind,\n createGrapesjsShadcnGenericPlugin(\n currentMode,\n performInteractionWrapper,\n renderedComponents,\n ),\n ],\n storageManager: { type: 'none' },\n richTextEditor: {\n actions: ['bold', 'italic', 'underline', 'strikethrough'],\n },\n canvas: {\n customBadgeLabel: (component) => {\n const tagName = component.get('tagName');\n\n return tagName === 'body' ? '' : tagName || '';\n },\n },\n });\n\n // Tailwind CSS rules aren't fully added to our component\n // So, adding them from here!\n editor.on('load', () => {\n const canvasHead = editor.Canvas.getDocument().head;\n const style = document.createElement('style');\n const fullCss = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n\n `;\n style.innerHTML = fullCss;\n style.setAttribute('type', 'text/css');\n canvasHead.appendChild(style);\n });\n\n editorInstance.current = editor;\n\n if (setEditor) {\n setEditor(editor);\n }\n\n TypesToRegister.forEach(({ type, tagName }) => {\n if (!editor.DomComponents.getType(type)) {\n editor.DomComponents.addType(type, {\n model: {\n defaults: { tagName },\n },\n view: {},\n });\n }\n });\n\n if (json && json.pages?.length > 0 && json.pages[0].frames?.length > 0) {\n const raw = json.pages[0].frames[0].component;\n const processed = expandActions(raw);\n editor.setComponents(processed);\n\n const cssText = convertStyles(json.styles || []);\n editor.setStyle(cssText);\n }\n\n editor.on('load', () => {\n setComponentProperties(editor, mode === 'preview');\n });\n\n return function cleanup() {\n editor.destroy();\n };\n }, [json, mode]);\n\n return (\n <React.Fragment>\n <StyledEditor />\n <div ref={editorRef} id=\"grapesjs-editor\" />\n </React.Fragment>\n );\n}\n\nexport default GrapesjsCanvas;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"GrapesjsCanvas.js","names":["React","useEffect","useRef","grapesjs","tailwind","TypesToRegister","toKebabCase","createGrapesjsShadcnGenericPlugin","StyledEditor","tailwindCompiledCss","datePickerCss","jsx","_jsx","jsxs","_jsxs","setComponentProperties","editor","isPreview","setPropertiesRecursively","comp","set","editable","draggable","droppable","getName","selectable","hoverable","highlightable","copyable","resizable","removable","badgable","attributes","command","components","forEach","runCommand","stopCommand","wrapper","getWrapper","find","convertStyles","stylesArray","map","block","selectors","Array","isArray","join","declarations","Object","entries","style","_ref","prop","value","expandActions","node","_node$componentProps","type","componentName","componentProps","actions","_extends","classes","concat","undefined","action","i","icon","title","description","id","headerContent","bodyContent","setInteracting","renderedComponents","inProgress","component","componentId","showLoader","gjsModel","get","interactionApiInProgress","GrapesjsCanvas","_ref2","json","_ref2$mode","mode","setEditor","performInteraction","_ref2$newDataNotifier","newDataNotifier","setHasChanged","isStreaming","editorRef","editorInstance","isStreamingRef","isSystemUpdateRef","lastJsonRef","isEditorAliveRef","current","notificationHandler","props","newProps","newAttributes","model","parsedNewProps","pagination","performInteractionWrapper","_x","_performInteractionWrapper","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee4","payload","_editorInstance$curre","updatedJson","apiResponse","componentUpdates","wrap","_callee4$","_context4","prev","next","store","sent","affectedComponents","_ref6","key","abrupt","finish","stop","_json$pages","_json$pages$0$frames","destroy","currentMode","init","container","height","plugins","storageManager","richTextEditor","canvas","customBadgeLabel","tagName","checkDirty","_checkDirty","_callee3","stored","newJson","_callee3$","_context3","t0","JSON","stringify","debouncedCheckDirty","timeout","clearTimeout","setTimeout","evt","on","includes","_callee","canvasHead","fullCss","_callee$","_context","Canvas","getDocument","head","document","createElement","innerHTML","setAttribute","appendChild","t1","call","_ref4","DomComponents","getType","addType","defaults","view","pages","length","frames","raw","processed","setComponents","cssText","styles","setStyle","_callee2","_callee2$","_context2","cleanup","Fragment","children","ref"],"sources":["../src/GrapesjsCanvas.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useRef } from 'react';\n// eslint-disable-next-line import/no-named-as-default\nimport grapesjs, { Component, Editor } from 'grapesjs';\nimport 'grapesjs/dist/css/grapes.min.css';\nimport tailwind from 'grapesjs-tailwind';\nimport { TypesToRegister } from './constants';\nimport { toKebabCase } from './helpers';\nimport { createGrapesjsShadcnGenericPlugin } from './plugins/grapejs-plugin';\nimport { StyledEditor } from './index.styles';\nimport { tailwindCompiledCss } from './helpers/css';\nimport { datePickerCss } from './helpers/date-picker';\n\ntype NotificationHandler = (newData: {\n componentId: string;\n newProps: Record<string, any>;\n newAttributes: Record<string, any>;\n}) => boolean;\n\ntype GrapesjsCanvasProps = {\n json: any;\n mode?: 'editor' | 'preview';\n setEditor: (editor: Editor) => void;\n performInteraction: (payload: Record<string, any>) => Promise<Record<string, any> | undefined>;\n newDataNotifier: (notifHandler: NotificationHandler) => void;\n setHasChanged: (hasChanged: boolean) => void;\n isStreaming: boolean;\n};\n\nfunction setComponentProperties(editor: Editor, isPreview: boolean) {\n function setPropertiesRecursively(comp: Component) {\n comp.set({\n editable: !isPreview,\n draggable: !isPreview,\n droppable: !isPreview && comp.getName() !== 'Shadcn-generic',\n selectable: !isPreview,\n hoverable: !isPreview,\n highlightable: !isPreview,\n copyable: false,\n resizable: false,\n removable: !isPreview,\n badgable: false,\n });\n\n if (!isPreview) {\n comp.set('toolbar', [\n { attributes: { class: 'fa fa-arrows' }, command: 'tlb-move' },\n { attributes: { class: 'fa fa-trash' }, command: 'tlb-delete' },\n ]);\n }\n\n comp.components().forEach(setPropertiesRecursively);\n }\n\n if (isPreview) {\n editor.runCommand('core:preview');\n } else {\n editor.stopCommand('core:preview');\n }\n\n const wrapper = editor.getWrapper();\n wrapper?.find('*').forEach(setPropertiesRecursively);\n}\n\nfunction convertStyles(stylesArray: any[]): string {\n return stylesArray\n .map((block) => {\n const selectors = Array.isArray(block.selectors)\n ? block.selectors.join(', ')\n : block.selectors;\n const declarations = Object.entries(block.style)\n .map(([prop, value]) => `${toKebabCase(prop)}: ${value};`)\n .join(' ');\n\n return `${selectors} { ${declarations} }`;\n })\n .join('\\n');\n}\n\nfunction expandActions(node: any): any {\n if (\n node.type === 'shadcn-generic' &&\n node.componentName === 'Actions' &&\n Array.isArray(node.componentProps?.actions)\n ) {\n const { actions } = node.componentProps;\n\n return {\n ...node,\n type: 'div',\n classes: ['dashboard-cards', ...(node.classes || [])],\n componentName: undefined,\n componentProps: undefined,\n components: actions.map((action: any, i: number) => {\n const { icon, title, description } = action;\n\n return {\n id: `${node.id}--action-card-${i}`,\n type: 'shadcn-generic',\n componentName: 'ActionCard',\n badgable: false,\n copyable: false,\n componentProps: {\n icon,\n headerContent: title,\n bodyContent: description,\n },\n };\n }),\n };\n }\n\n if (Array.isArray(node.components)) {\n return {\n ...node,\n components: node.components.map(expandActions),\n };\n }\n\n return node;\n}\n\nfunction setInteracting(\n renderedComponents: Record<string, Component>,\n components: { componentId: string; showLoader: boolean }[],\n inProgress: boolean,\n) {\n components.forEach((component) => {\n const { componentId, showLoader } = component;\n\n if (!showLoader) {\n return;\n }\n\n const gjsModel = renderedComponents[componentId];\n\n if (gjsModel) {\n gjsModel.set('attributes', {\n ...gjsModel.get('attributes'),\n interactionApiInProgress: inProgress,\n });\n }\n });\n}\n\nfunction GrapesjsCanvas({\n json,\n mode = 'preview',\n setEditor,\n performInteraction,\n newDataNotifier = () => {\n // no op\n },\n setHasChanged,\n isStreaming,\n}: GrapesjsCanvasProps) {\n const editorRef = useRef<HTMLDivElement>(null);\n const editorInstance = useRef<Editor | null>(null);\n const renderedComponents = useRef<Record<string, Component>>({});\n const isStreamingRef = useRef(isStreaming);\n const isSystemUpdateRef = useRef(false);\n const lastJsonRef = useRef<string>('');\n const isEditorAliveRef = useRef(false);\n\n useEffect(() => {\n isStreamingRef.current = isStreaming;\n }, [isStreaming]);\n\n function notificationHandler(\n props: Parameters<NotificationHandler>[0],\n ): ReturnType<NotificationHandler> {\n if (!props) {\n return true;\n }\n\n const { componentId, newProps, newAttributes } = props;\n const model = renderedComponents.current[componentId];\n\n if (!model) {\n return false;\n }\n\n const parsedNewProps = { ...newProps };\n\n if (newProps.pagination) {\n parsedNewProps.pagination = {\n ...(model.get('componentProps').pagination || {}),\n ...newProps.pagination,\n };\n }\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...parsedNewProps,\n });\n\n model.set('attributes', {\n ...model.get('attributes'),\n ...newAttributes,\n });\n\n return true;\n }\n\n 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('componentProps', {\n ...model.get('componentProps'),\n ...value,\n });\n }\n });\n\n return componentUpdates;\n } finally {\n setInteracting(renderedComponents.current, payload.affectedComponents, false);\n }\n }\n\n useEffect(() => {\n if (!editorRef.current) {\n return () => {\n // no op\n };\n }\n\n if (editorInstance.current) {\n editorInstance.current.destroy();\n editorInstance.current = null;\n isEditorAliveRef.current = false;\n }\n\n const currentMode = mode;\n\n const editor = grapesjs.init({\n container: editorRef.current,\n height: '100%',\n plugins: [\n tailwind,\n createGrapesjsShadcnGenericPlugin(\n currentMode,\n performInteractionWrapper,\n renderedComponents.current,\n setHasChanged,\n ),\n ],\n storageManager: { type: 'none' },\n richTextEditor: {\n actions: ['bold', 'italic', 'underline', 'strikethrough'],\n },\n canvas: {\n customBadgeLabel: (component) => {\n const tagName = component.get('tagName');\n\n return tagName === 'body' ? '' : tagName || '';\n },\n },\n });\n\n isEditorAliveRef.current = true;\n\n async function checkDirty() {\n if (isStreamingRef.current || isSystemUpdateRef.current) {\n return;\n }\n\n if (!isEditorAliveRef.current || !editorInstance.current) {\n return;\n }\n\n let stored = null;\n\n try {\n stored = await editorInstance.current.store();\n } catch (err) {\n return;\n }\n\n if (!stored) {\n return;\n }\n\n const newJson = JSON.stringify(stored);\n\n if (newJson !== lastJsonRef.current) {\n setHasChanged(true);\n lastJsonRef.current = newJson;\n }\n }\n\n const debouncedCheckDirty = (() => {\n let timeout: NodeJS.Timeout | null = null;\n\n return () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n timeout = setTimeout(checkDirty, 200);\n };\n })();\n\n [\n 'component:add',\n 'component:remove',\n 'component:update:content',\n 'style:update',\n 'component:drag:end',\n 'rte:change',\n ].forEach((evt) => editor.on(evt, debouncedCheckDirty));\n\n editor.on('component:update', (model, prop) => {\n if (['attributes', 'componentProps', 'content'].includes(prop)) {\n debouncedCheckDirty();\n }\n });\n\n // Tailwind CSS rules aren't fully added to our component\n // So, adding them from here!\n editor.on('load', async () => {\n const canvasHead = editor.Canvas.getDocument().head;\n const style = document.createElement('style');\n const fullCss = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n\n `;\n style.innerHTML = fullCss;\n style.setAttribute('type', 'text/css');\n canvasHead.appendChild(style);\n\n isSystemUpdateRef.current = true;\n setComponentProperties(editor, mode === 'preview');\n lastJsonRef.current = JSON.stringify(await editor.store());\n isSystemUpdateRef.current = false;\n });\n\n editorInstance.current = editor;\n\n if (setEditor) {\n setEditor(editor);\n }\n\n TypesToRegister.forEach(({ type, tagName }) => {\n if (!editor.DomComponents.getType(type)) {\n editor.DomComponents.addType(type, {\n model: {\n defaults: { tagName },\n },\n view: {},\n });\n }\n });\n\n if (json && json.pages?.length > 0 && json.pages[0].frames?.length > 0) {\n isSystemUpdateRef.current = true;\n const raw = json.pages[0].frames[0].component;\n const processed = expandActions(raw);\n editor.setComponents(processed);\n\n const cssText = convertStyles(json.styles || []);\n editor.setStyle(cssText);\n\n editor.on('load', async () => {\n lastJsonRef.current = JSON.stringify(await editor.store());\n isSystemUpdateRef.current = false;\n });\n }\n\n return function cleanup() {\n editor.destroy();\n isEditorAliveRef.current = false;\n };\n }, [json, mode]);\n\n return (\n <React.Fragment>\n <StyledEditor />\n <div ref={editorRef} id=\"grapesjs-editor\" />\n </React.Fragment>\n );\n}\n\nexport default GrapesjsCanvas;\n"],"mappings":"wLAAA,uDACA,MAAO,CAAAA,KAAK,EAAIC,SAAS,CAAEC,MAAM,KAAQ,OAAO,CAChD;AACA,MAAO,CAAAC,QAAQ,KAA6B,UAAU,CACtD,MAAO,kCAAkC,CACzC,MAAO,CAAAC,QAAQ,KAAM,mBAAmB,CACxC,OAASC,eAAe,KAAQ,aAAa,CAC7C,OAASC,WAAW,KAAQ,WAAW,CACvC,OAASC,iCAAiC,KAAQ,0BAA0B,CAC5E,OAASC,YAAY,KAAQ,gBAAgB,CAC7C,OAASC,mBAAmB,KAAQ,eAAe,CACnD,OAASC,aAAa,KAAQ,uBAAuB,CAAC,OAAAC,GAAA,IAAAC,IAAA,CAAAC,IAAA,IAAAC,KAAA,yBAkBtD,QAAS,CAAAC,sBAAsBA,CAACC,MAAc,CAAEC,SAAkB,CAAE,CAClE,QAAS,CAAAC,wBAAwBA,CAACC,IAAe,CAAE,CACjDA,IAAI,CAACC,GAAG,CAAC,CACPC,QAAQ,CAAE,CAACJ,SAAS,CACpBK,SAAS,CAAE,CAACL,SAAS,CACrBM,SAAS,CAAE,CAACN,SAAS,EAAIE,IAAI,CAACK,OAAO,CAAC,CAAC,GAAK,gBAAgB,CAC5DC,UAAU,CAAE,CAACR,SAAS,CACtBS,SAAS,CAAE,CAACT,SAAS,CACrBU,aAAa,CAAE,CAACV,SAAS,CACzBW,QAAQ,CAAE,KAAK,CACfC,SAAS,CAAE,KAAK,CAChBC,SAAS,CAAE,CAACb,SAAS,CACrBc,QAAQ,CAAE,KACZ,CAAC,CAAC,CAEF,GAAI,CAACd,SAAS,CAAE,CACdE,IAAI,CAACC,GAAG,CAAC,SAAS,CAAE,CAClB,CAAEY,UAAU,CAAE,CAAE,QAAO,cAAe,CAAC,CAAEC,OAAO,CAAE,UAAW,CAAC,CAC9D,CAAED,UAAU,CAAE,CAAE,QAAO,aAAc,CAAC,CAAEC,OAAO,CAAE,YAAa,CAAC,CAChE,CACH,CAEAd,IAAI,CAACe,UAAU,CAAC,CAAC,CAACC,OAAO,CAACjB,wBAAwB,CACpD,CAEA,GAAID,SAAS,CAAE,CACbD,MAAM,CAACoB,UAAU,CAAC,cAAc,CAClC,CAAC,IAAM,CACLpB,MAAM,CAACqB,WAAW,CAAC,cAAc,CACnC,CAEA,GAAM,CAAAC,OAAO,CAAGtB,MAAM,CAACuB,UAAU,CAAC,CAAC,CACnCD,OAAO,QAAPA,OAAO,CAAEE,IAAI,CAAC,GAAG,CAAC,CAACL,OAAO,CAACjB,wBAAwB,CACrD,CAEA,QAAS,CAAAuB,aAAaA,CAACC,WAAkB,CAAU,CACjD,MAAO,CAAAA,WAAW,CACfC,GAAG,CAAC,SAACC,KAAK,CAAK,CACd,GAAM,CAAAC,SAAS,CAAGC,KAAK,CAACC,OAAO,CAACH,KAAK,CAACC,SAAS,CAAC,CAC5CD,KAAK,CAACC,SAAS,CAACG,IAAI,CAAC,IAAI,CAAC,CAC1BJ,KAAK,CAACC,SAAS,CACnB,GAAM,CAAAI,YAAY,CAAGC,MAAM,CAACC,OAAO,CAACP,KAAK,CAACQ,KAAK,CAAC,CAC7CT,GAAG,CAAC,SAAAU,IAAA,KAAE,CAAAC,IAAI,CAAAD,IAAA,IAAEE,KAAK,CAAAF,IAAA,UAAS,CAAA/C,WAAW,CAACgD,IAAI,CAAC,MAAKC,KAAK,KAAG,CAAC,CACzDP,IAAI,CAAC,GAAG,CAAC,CAEZ,MAAU,CAAAH,SAAS,OAAMI,YAAY,KACvC,CAAC,CAAC,CACDD,IAAI,CAAC,IAAI,CACd,CAEA,QAAS,CAAAQ,aAAaA,CAACC,IAAS,CAAO,KAAAC,oBAAA,CACrC,GACED,IAAI,CAACE,IAAI,GAAK,gBAAgB,EAC9BF,IAAI,CAACG,aAAa,GAAK,SAAS,EAChCd,KAAK,CAACC,OAAO,EAAAW,oBAAA,CAACD,IAAI,CAACI,cAAc,eAAnBH,oBAAA,CAAqBI,OAAO,CAAC,CAC3C,CACA,GAAQ,CAAAA,OAAO,CAAKL,IAAI,CAACI,cAAc,CAA/BC,OAAO,CAEf,OAAAC,QAAA,IACKN,IAAI,EACPE,IAAI,CAAE,KAAK,CACXK,OAAO,EAAG,iBAAiB,EAAAC,MAAA,CAAMR,IAAI,CAACO,OAAO,EAAI,EAAE,CAAE,CACrDJ,aAAa,CAAEM,SAAS,CACxBL,cAAc,CAAEK,SAAS,CACzBhC,UAAU,CAAE4B,OAAO,CAACnB,GAAG,CAAC,SAACwB,MAAW,CAAEC,CAAS,CAAK,CAClD,GAAQ,CAAAC,IAAI,CAAyBF,MAAM,CAAnCE,IAAI,CAAEC,KAAK,CAAkBH,MAAM,CAA7BG,KAAK,CAAEC,WAAW,CAAKJ,MAAM,CAAtBI,WAAW,CAEhC,MAAO,CACLC,EAAE,CAAKf,IAAI,CAACe,EAAE,kBAAiBJ,CAAG,CAClCT,IAAI,CAAE,gBAAgB,CACtBC,aAAa,CAAE,YAAY,CAC3B7B,QAAQ,CAAE,KAAK,CACfH,QAAQ,CAAE,KAAK,CACfiC,cAAc,CAAE,CACdQ,IAAI,CAAJA,IAAI,CACJI,aAAa,CAAEH,KAAK,CACpBI,WAAW,CAAEH,WACf,CACF,CACF,CAAC,CAAC,EAEN,CAEA,GAAIzB,KAAK,CAACC,OAAO,CAACU,IAAI,CAACvB,UAAU,CAAC,CAAE,CAClC,OAAA6B,QAAA,IACKN,IAAI,EACPvB,UAAU,CAAEuB,IAAI,CAACvB,UAAU,CAACS,GAAG,CAACa,aAAa,CAAC,EAElD,CAEA,MAAO,CAAAC,IACT,CAEA,QAAS,CAAAkB,cAAcA,CACrBC,kBAA6C,CAC7C1C,UAA0D,CAC1D2C,UAAmB,CACnB,CACA3C,UAAU,CAACC,OAAO,CAAC,SAAC2C,SAAS,CAAK,CAChC,GAAQ,CAAAC,WAAW,CAAiBD,SAAS,CAArCC,WAAW,CAAEC,UAAU,CAAKF,SAAS,CAAxBE,UAAU,CAE/B,GAAI,CAACA,UAAU,CAAE,CACf,MACF,CAEA,GAAM,CAAAC,QAAQ,CAAGL,kBAAkB,CAACG,WAAW,CAAC,CAEhD,GAAIE,QAAQ,CAAE,CACZA,QAAQ,CAAC7D,GAAG,CAAC,YAAY,CAAA2C,QAAA,IACpBkB,QAAQ,CAACC,GAAG,CAAC,YAAY,CAAC,EAC7BC,wBAAwB,CAAEN,UAAU,EACrC,CACH,CACF,CAAC,CACH,CAEA,QAAS,CAAAO,cAAcA,CAAAC,KAAA,CAUC,IATtB,CAAAC,IAAI,CAAAD,KAAA,CAAJC,IAAI,CAAAC,UAAA,CAAAF,KAAA,CACJG,IAAI,CAAJA,IAAI,CAAAD,UAAA,UAAG,SAAS,CAAAA,UAAA,CAChBE,SAAS,CAAAJ,KAAA,CAATI,SAAS,CACTC,kBAAkB,CAAAL,KAAA,CAAlBK,kBAAkB,CAAAC,qBAAA,CAAAN,KAAA,CAClBO,eAAe,CAAfA,eAAe,CAAAD,qBAAA,UAAG,UAAM,CACtB;AAAA,CACD,CAAAA,qBAAA,CACDE,aAAa,CAAAR,KAAA,CAAbQ,aAAa,CACbC,WAAW,CAAAT,KAAA,CAAXS,WAAW,CAEX,GAAM,CAAAC,SAAS,CAAG7F,MAAM,CAAiB,IAAI,CAAC,CAC9C,GAAM,CAAA8F,cAAc,CAAG9F,MAAM,CAAgB,IAAI,CAAC,CAClD,GAAM,CAAA0E,kBAAkB,CAAG1E,MAAM,CAA4B,CAAC,CAAC,CAAC,CAChE,GAAM,CAAA+F,cAAc,CAAG/F,MAAM,CAAC4F,WAAW,CAAC,CAC1C,GAAM,CAAAI,iBAAiB,CAAGhG,MAAM,CAAC,KAAK,CAAC,CACvC,GAAM,CAAAiG,WAAW,CAAGjG,MAAM,CAAS,EAAE,CAAC,CACtC,GAAM,CAAAkG,gBAAgB,CAAGlG,MAAM,CAAC,KAAK,CAAC,CAEtCD,SAAS,CAAC,UAAM,CACdgG,cAAc,CAACI,OAAO,CAAGP,WAC3B,CAAC,CAAE,CAACA,WAAW,CAAC,CAAC,CAEjB,QAAS,CAAAQ,mBAAmBA,CAC1BC,KAAyC,CACR,CACjC,GAAI,CAACA,KAAK,CAAE,CACV,MAAO,KACT,CAEA,GAAQ,CAAAxB,WAAW,CAA8BwB,KAAK,CAA9CxB,WAAW,CAAEyB,QAAQ,CAAoBD,KAAK,CAAjCC,QAAQ,CAAEC,aAAa,CAAKF,KAAK,CAAvBE,aAAa,CAC5C,GAAM,CAAAC,KAAK,CAAG9B,kBAAkB,CAACyB,OAAO,CAACtB,WAAW,CAAC,CAErD,GAAI,CAAC2B,KAAK,CAAE,CACV,MAAO,MACT,CAEA,GAAM,CAAAC,cAAc,CAAA5C,QAAA,IAAQyC,QAAQ,CAAE,CAEtC,GAAIA,QAAQ,CAACI,UAAU,CAAE,CACvBD,cAAc,CAACC,UAAU,CAAA7C,QAAA,IACnB2C,KAAK,CAACxB,GAAG,CAAC,gBAAgB,CAAC,CAAC0B,UAAU,EAAI,CAAC,CAAC,CAC7CJ,QAAQ,CAACI,UAAU,CAE1B,CAEAF,KAAK,CAACtF,GAAG,CAAC,gBAAgB,CAAA2C,QAAA,IACrB2C,KAAK,CAACxB,GAAG,CAAC,gBAAgB,CAAC,CAC3ByB,cAAc,CAClB,CAAC,CAEFD,KAAK,CAACtF,GAAG,CAAC,YAAY,CAAA2C,QAAA,IACjB2C,KAAK,CAACxB,GAAG,CAAC,YAAY,CAAC,CACvBuB,aAAa,CACjB,CAAC,CAEF,MAAO,KACT,CAEAxG,SAAS,CAAC,UAAM,CACd2F,eAAe,CAACU,mBAAmB,CACrC,CAAC,CAAE,EAAE,CAAC,CAAC,QAEQ,CAAAO,yBAAyBA,CAAAC,EAAA,SAAAC,0BAAA,CAAAC,KAAA,MAAAC,SAAA,WAAAF,2BAAA,EAAAA,0BAAA,CAAAG,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAAxC,SAAAC,SAAyCC,OAA4B,MAAAC,qBAAA,KAAAC,WAAA,CAAAC,WAAA,CAAAC,gBAAA,QAAAP,mBAAA,CAAAQ,IAAA,UAAAC,UAAAC,SAAA,iBAAAA,SAAA,CAAAC,IAAA,CAAAD,SAAA,CAAAE,IAAA,SAAAF,SAAA,CAAAE,IAAA,UAAAR,qBAAA,CACzCvB,cAAc,CAACK,OAAO,eAAtBkB,qBAAA,CAAwBS,KAAK,CAAC,CAAC,QAAnDR,WAAW,CAAAK,SAAA,CAAAI,IAAA,CACjBtD,cAAc,CAACC,kBAAkB,CAACyB,OAAO,CAAEiB,OAAO,CAACY,kBAAkB,CAAE,IAAI,CAAC,CAACL,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA,SAGjD,CAAArC,kBAAkB,CAAA3B,QAAA,IACvCuD,OAAO,EACVhC,IAAI,CAAEkC,WAAW,EAClB,CAAC,QAHIC,WAAW,CAAAI,SAAA,CAAAI,IAAA,CAKXP,gBAAgB,CAAGD,WAAW,EAAI,CAAC,CAAC,CAE1CvE,MAAM,CAACC,OAAO,CAACuE,gBAAgB,CAAC,CAACvF,OAAO,CAAC,SAAAgG,KAAA,CAAkB,IAAhB,CAAAC,GAAG,CAAAD,KAAA,IAAE5E,KAAK,CAAA4E,KAAA,IACnD,GAAM,CAAAzB,KAAK,CAAG9B,kBAAkB,CAACyB,OAAO,CAAC+B,GAAG,CAAC,CAE7C,GAAI1B,KAAK,CAAE,CACTA,KAAK,CAACtF,GAAG,CAAC,gBAAgB,CAAA2C,QAAA,IACrB2C,KAAK,CAACxB,GAAG,CAAC,gBAAgB,CAAC,CAC3B3B,KAAK,CACT,CACH,CACF,CAAC,CAAC,CAAC,OAAAsE,SAAA,CAAAQ,MAAA,UAEIX,gBAAgB,UAAAG,SAAA,CAAAC,IAAA,IAEvBnD,cAAc,CAACC,kBAAkB,CAACyB,OAAO,CAAEiB,OAAO,CAACY,kBAAkB,CAAE,KAAK,CAAC,CAAC,OAAAL,SAAA,CAAAS,MAAA,8BAAAT,SAAA,CAAAU,IAAA,KAAAlB,QAAA,oBAEjF,UAAAN,0BAAA,CAAAC,KAAA,MAAAC,SAAA,EAEDhH,SAAS,CAAC,UAAM,KAAAuI,WAAA,CAAAC,oBAAA,CACd,GAAI,CAAC1C,SAAS,CAACM,OAAO,CAAE,CACtB,MAAO,WAAM,CACX;AAAA,CAEJ,CAEA,GAAIL,cAAc,CAACK,OAAO,CAAE,CAC1BL,cAAc,CAACK,OAAO,CAACqC,OAAO,CAAC,CAAC,CAChC1C,cAAc,CAACK,OAAO,CAAG,IAAI,CAC7BD,gBAAgB,CAACC,OAAO,CAAG,KAC7B,CAEA,GAAM,CAAAsC,WAAW,CAAGnD,IAAI,CAExB,GAAM,CAAAxE,MAAM,CAAGb,QAAQ,CAACyI,IAAI,CAAC,CAC3BC,SAAS,CAAE9C,SAAS,CAACM,OAAO,CAC5ByC,MAAM,CAAE,MAAM,CACdC,OAAO,CAAE,CACP3I,QAAQ,CACRG,iCAAiC,CAC/BoI,WAAW,CACX9B,yBAAyB,CACzBjC,kBAAkB,CAACyB,OAAO,CAC1BR,aACF,CAAC,CACF,CACDmD,cAAc,CAAE,CAAErF,IAAI,CAAE,MAAO,CAAC,CAChCsF,cAAc,CAAE,CACdnF,OAAO,CAAE,CAAC,MAAM,CAAE,QAAQ,CAAE,WAAW,CAAE,eAAe,CAC1D,CAAC,CACDoF,MAAM,CAAE,CACNC,gBAAgB,CAAE,QAAlB,CAAAA,gBAAgBA,CAAGrE,SAAS,CAAK,CAC/B,GAAM,CAAAsE,OAAO,CAAGtE,SAAS,CAACI,GAAG,CAAC,SAAS,CAAC,CAExC,MAAO,CAAAkE,OAAO,GAAK,MAAM,CAAG,EAAE,CAAGA,OAAO,EAAI,EAC9C,CACF,CACF,CAAC,CAAC,CAEFhD,gBAAgB,CAACC,OAAO,CAAG,IAAI,CAAC,QAEjB,CAAAgD,UAAUA,CAAA,SAAAC,WAAA,CAAAtC,KAAA,MAAAC,SAAA,WAAAqC,YAAA,EAAAA,WAAA,CAAApC,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAAzB,SAAAmC,SAAA,MAAAC,MAAA,CAAAC,OAAA,QAAAtC,mBAAA,CAAAQ,IAAA,UAAA+B,UAAAC,SAAA,iBAAAA,SAAA,CAAA7B,IAAA,CAAA6B,SAAA,CAAA5B,IAAA,cACM9B,cAAc,CAACI,OAAO,EAAIH,iBAAiB,CAACG,OAAO,GAAAsD,SAAA,CAAA5B,IAAA,gBAAA4B,SAAA,CAAAtB,MAAA,uBAInD,CAACjC,gBAAgB,CAACC,OAAO,EAAI,CAACL,cAAc,CAACK,OAAO,GAAAsD,SAAA,CAAA5B,IAAA,gBAAA4B,SAAA,CAAAtB,MAAA,kBAIpDmB,MAAM,CAAG,IAAI,CAAAG,SAAA,CAAA7B,IAAA,GAAA6B,SAAA,CAAA5B,IAAA,SAGA,CAAA/B,cAAc,CAACK,OAAO,CAAC2B,KAAK,CAAC,CAAC,QAA7CwB,MAAM,CAAAG,SAAA,CAAA1B,IAAA,CAAA0B,SAAA,CAAA5B,IAAA,kBAAA4B,SAAA,CAAA7B,IAAA,IAAA6B,SAAA,CAAAC,EAAA,CAAAD,SAAA,oBAAAA,SAAA,CAAAtB,MAAA,sBAKHmB,MAAM,EAAAG,SAAA,CAAA5B,IAAA,iBAAA4B,SAAA,CAAAtB,MAAA,mBAILoB,OAAO,CAAGI,IAAI,CAACC,SAAS,CAACN,MAAM,CAAC,CAEtC,GAAIC,OAAO,GAAKtD,WAAW,CAACE,OAAO,CAAE,CACnCR,aAAa,CAAC,IAAI,CAAC,CACnBM,WAAW,CAACE,OAAO,CAAGoD,OACxB,CAAC,yBAAAE,SAAA,CAAApB,IAAA,KAAAgB,QAAA,gBACF,UAAAD,WAAA,CAAAtC,KAAA,MAAAC,SAAA,EAED,GAAM,CAAA8C,mBAAmB,CAAI,UAAM,CACjC,GAAI,CAAAC,OAA8B,CAAG,IAAI,CAEzC,MAAO,WAAM,CACX,GAAIA,OAAO,CAAE,CACXC,YAAY,CAACD,OAAO,CACtB,CAEAA,OAAO,CAAGE,UAAU,CAACb,UAAU,CAAE,GAAG,CACtC,CACF,CAAC,CAAE,CAAC,CAEJ,CACE,eAAe,CACf,kBAAkB,CAClB,0BAA0B,CAC1B,cAAc,CACd,oBAAoB,CACpB,YAAY,CACb,CAAClH,OAAO,CAAC,SAACgI,GAAG,QAAK,CAAAnJ,MAAM,CAACoJ,EAAE,CAACD,GAAG,CAAEJ,mBAAmB,CAAC,EAAC,CAEvD/I,MAAM,CAACoJ,EAAE,CAAC,kBAAkB,CAAE,SAAC1D,KAAK,CAAEpD,IAAI,CAAK,CAC7C,GAAI,CAAC,YAAY,CAAE,gBAAgB,CAAE,SAAS,CAAC,CAAC+G,QAAQ,CAAC/G,IAAI,CAAC,CAAE,CAC9DyG,mBAAmB,CAAC,CACtB,CACF,CAAC,CAAC,CAEF;AACA;AACA/I,MAAM,CAACoJ,EAAE,CAAC,MAAM,cAAAlD,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAAE,SAAAkD,QAAA,MAAAC,UAAA,CAAAnH,KAAA,CAAAoH,OAAA,QAAArD,mBAAA,CAAAQ,IAAA,UAAA8C,SAAAC,QAAA,iBAAAA,QAAA,CAAA5C,IAAA,CAAA4C,QAAA,CAAA3C,IAAA,SACVwC,UAAU,CAAGvJ,MAAM,CAAC2J,MAAM,CAACC,WAAW,CAAC,CAAC,CAACC,IAAI,CAC7CzH,KAAK,CAAG0H,QAAQ,CAACC,aAAa,CAAC,OAAO,CAAC,CACvCP,OAAO,cACT/J,mBAAmB,cACnBC,aAAa,0RAYjB0C,KAAK,CAAC4H,SAAS,CAAGR,OAAO,CACzBpH,KAAK,CAAC6H,YAAY,CAAC,MAAM,CAAE,UAAU,CAAC,CACtCV,UAAU,CAACW,WAAW,CAAC9H,KAAK,CAAC,CAE7B8C,iBAAiB,CAACG,OAAO,CAAG,IAAI,CAChCtF,sBAAsB,CAACC,MAAM,CAAEwE,IAAI,GAAK,SAAS,CAAC,CAACkF,QAAA,CAAAd,EAAA,CAC7BC,IAAI,CAAAa,QAAA,CAAA3C,IAAA,UAAiB,CAAA/G,MAAM,CAACgH,KAAK,CAAC,CAAC,SAAA0C,QAAA,CAAAS,EAAA,CAAAT,QAAA,CAAAzC,IAAA,CAAzD9B,WAAW,CAACE,OAAO,CAAAqE,QAAA,CAAAd,EAAA,CAAQE,SAAS,CAAAsB,IAAA,CAAAV,QAAA,CAAAd,EAAA,CAAAc,QAAA,CAAAS,EAAA,EACpCjF,iBAAiB,CAACG,OAAO,CAAG,KAAK,CAAC,yBAAAqE,QAAA,CAAAnC,IAAA,KAAA+B,OAAA,EACnC,GAAC,CAEFtE,cAAc,CAACK,OAAO,CAAGrF,MAAM,CAE/B,GAAIyE,SAAS,CAAE,CACbA,SAAS,CAACzE,MAAM,CAClB,CAEAX,eAAe,CAAC8B,OAAO,CAAC,SAAAkJ,KAAA,CAAuB,IAApB,CAAA1H,IAAI,CAAA0H,KAAA,CAAJ1H,IAAI,CAAEyF,OAAO,CAAAiC,KAAA,CAAPjC,OAAO,CACtC,GAAI,CAACpI,MAAM,CAACsK,aAAa,CAACC,OAAO,CAAC5H,IAAI,CAAC,CAAE,CACvC3C,MAAM,CAACsK,aAAa,CAACE,OAAO,CAAC7H,IAAI,CAAE,CACjC+C,KAAK,CAAE,CACL+E,QAAQ,CAAE,CAAErC,OAAO,CAAPA,OAAQ,CACtB,CAAC,CACDsC,IAAI,CAAE,CAAC,CACT,CAAC,CACH,CACF,CAAC,CAAC,CAEF,GAAIpG,IAAI,EAAI,EAAAkD,WAAA,CAAAlD,IAAI,CAACqG,KAAK,eAAVnD,WAAA,CAAYoD,MAAM,EAAG,CAAC,EAAI,EAAAnD,oBAAA,CAAAnD,IAAI,CAACqG,KAAK,CAAC,CAAC,CAAC,CAACE,MAAM,eAApBpD,oBAAA,CAAsBmD,MAAM,EAAG,CAAC,CAAE,CACtE1F,iBAAiB,CAACG,OAAO,CAAG,IAAI,CAChC,GAAM,CAAAyF,GAAG,CAAGxG,IAAI,CAACqG,KAAK,CAAC,CAAC,CAAC,CAACE,MAAM,CAAC,CAAC,CAAC,CAAC/G,SAAS,CAC7C,GAAM,CAAAiH,SAAS,CAAGvI,aAAa,CAACsI,GAAG,CAAC,CACpC9K,MAAM,CAACgL,aAAa,CAACD,SAAS,CAAC,CAE/B,GAAM,CAAAE,OAAO,CAAGxJ,aAAa,CAAC6C,IAAI,CAAC4G,MAAM,EAAI,EAAE,CAAC,CAChDlL,MAAM,CAACmL,QAAQ,CAACF,OAAO,CAAC,CAExBjL,MAAM,CAACoJ,EAAE,CAAC,MAAM,cAAAlD,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAAE,SAAAgF,SAAA,SAAAjF,mBAAA,CAAAQ,IAAA,UAAA0E,UAAAC,SAAA,iBAAAA,SAAA,CAAAxE,IAAA,CAAAwE,SAAA,CAAAvE,IAAA,SAAAuE,SAAA,CAAA1C,EAAA,CACMC,IAAI,CAAAyC,SAAA,CAAAvE,IAAA,SAAiB,CAAA/G,MAAM,CAACgH,KAAK,CAAC,CAAC,QAAAsE,SAAA,CAAAnB,EAAA,CAAAmB,SAAA,CAAArE,IAAA,CAAzD9B,WAAW,CAACE,OAAO,CAAAiG,SAAA,CAAA1C,EAAA,CAAQE,SAAS,CAAAsB,IAAA,CAAAkB,SAAA,CAAA1C,EAAA,CAAA0C,SAAA,CAAAnB,EAAA,EACpCjF,iBAAiB,CAACG,OAAO,CAAG,KAAK,CAAC,wBAAAiG,SAAA,CAAA/D,IAAA,KAAA6D,QAAA,EACnC,GACH,CAEA,MAAO,SAAS,CAAAG,OAAOA,CAAA,CAAG,CACxBvL,MAAM,CAAC0H,OAAO,CAAC,CAAC,CAChBtC,gBAAgB,CAACC,OAAO,CAAG,KAC7B,CACF,CAAC,CAAE,CAACf,IAAI,CAAEE,IAAI,CAAC,CAAC,CAEhB,mBACE1E,KAAA,CAACd,KAAK,CAACwM,QAAQ,EAAAC,QAAA,eACb7L,IAAA,CAACJ,YAAY,GAAE,CAAC,cAChBI,IAAA,QAAK8L,GAAG,CAAE3G,SAAU,CAACvB,EAAE,CAAC,iBAAiB,CAAE,CAAC,EAC9B,CAEpB,CAEA,cAAe,CAAAY,cAAc","ignoreList":[]}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@peak-ai/canvas",
3
3
  "author": "squad-builder-experience",
4
4
  "license": "UNLICENSED",
5
- "version": "1.4.12",
5
+ "version": "1.4.13-rc.1",
6
6
  "description": "",
7
7
  "dependencies": {
8
8
  "@emotion/react": "^11.11.4",
@@ -1,2 +1,2 @@
1
1
  import { Editor, Component } from 'grapesjs';
2
- export declare function createGrapesjsShadcnGenericPlugin(mode: 'editor' | 'preview', performInteraction: (payload: Record<string, any>) => void, renderedComponents?: Record<string, Component>): (editor: Editor) => void;
2
+ export declare function createGrapesjsShadcnGenericPlugin(mode: 'editor' | 'preview', performInteraction: (payload: Record<string, any>) => void, renderedComponents: Record<string, Component> | undefined, setHasChanged: (hasChanged: boolean) => void): (editor: Editor) => void;
@@ -1,4 +1,4 @@
1
- import _extends from"@babel/runtime/helpers/extends";/* eslint-disable import/no-named-as-default-member *//* eslint-disable func-names *//* eslint-disable @typescript-eslint/no-explicit-any */import ReactDOM from"react-dom";import{getRenderers}from"./helpers/render-components";import{jsx as _jsx}from"react/jsx-runtime";export function createGrapesjsShadcnGenericPlugin(mode,performInteraction,renderedComponents){if(renderedComponents===void 0){renderedComponents={}}return function grapesjsShadcnGenericPlugin(editor){editor.DomComponents.addType("shadcn-generic",{model:{defaults:{tagName:"div",droppable:false,componentName:"Card",componentProps:{},traits:[]}},view:{events:{"input [data-slot]":"handleSlotInput"},handleSlotInput:function handleSlotInput(e){var target=e.target;var slot=target.dataset.slot;var text=target.innerText;var props=this.model.get("componentProps")||{};if(!slot){return}if(slot.startsWith("table-header-")){var _props$data;var idx=parseInt(slot.split("-")[2],10);var dataKeys=Object.keys(((_props$data=props.data)==null?void 0:_props$data[0])||{});if(!props.headerMapper){props.headerMapper={}}var key=dataKeys[idx];if(key){props.headerMapper[key]=text}}else{props[slot]=text}this.model.set("componentProps",_extends({},props))},render:function render(){var _this=this;var compName=this.model.get("componentName");var compProps=this.model.get("componentProps");if(typeof compProps==="string"){try{compProps=JSON.parse(compProps)}catch(err){// eslint-disable-next-line no-console
1
+ import _extends from"@babel/runtime/helpers/extends";/* eslint-disable import/no-named-as-default-member *//* eslint-disable func-names *//* eslint-disable @typescript-eslint/no-explicit-any */import ReactDOM from"react-dom";import{getRenderers}from"./helpers/render-components";import{jsx as _jsx}from"react/jsx-runtime";export function createGrapesjsShadcnGenericPlugin(mode,performInteraction,renderedComponents,setHasChanged){if(renderedComponents===void 0){renderedComponents={}}return function grapesjsShadcnGenericPlugin(editor){editor.DomComponents.addType("shadcn-generic",{model:{defaults:{tagName:"div",droppable:false,componentName:"Card",componentProps:{},traits:[]}},view:{events:{"input [data-slot]":"handleSlotInput"},handleSlotInput:function handleSlotInput(e){var target=e.target;var slot=target.dataset.slot;var text=target.innerText;var props=this.model.get("componentProps")||{};if(!slot){return}if(slot.startsWith("table-header-")){var _props$data;var idx=parseInt(slot.split("-")[2],10);var dataKeys=Object.keys(((_props$data=props.data)==null?void 0:_props$data[0])||{});if(!props.headerMapper){props.headerMapper={}}var key=dataKeys[idx];if(key){props.headerMapper[key]=text}}else{props[slot]=text}this.model.set("componentProps",_extends({},props));if(!["search-input"].includes(slot)){setHasChanged(true)}},render:function render(){var _this=this;var compName=this.model.get("componentName");var compProps=this.model.get("componentProps");if(typeof compProps==="string"){try{compProps=JSON.parse(compProps)}catch(err){// eslint-disable-next-line no-console
2
2
  console.error("Invalid JSON in componentProps",err);compProps={}}}compProps.isEditable=mode==="editor";compProps.performInteraction=performInteraction;compProps.onChange=function(data){_this.model.set("componentProps",_extends({},_this.model.get("componentProps"),data))};var renderers=getRenderers();var Renderer=renderers[compName];if(Renderer){if(compName==="Tabs"){ReactDOM.render(/*#__PURE__*/_jsx(Renderer,_extends({},compProps,{gjsModel:this.model})),this.el);var children=this.model.components();var tabsContent=this.el.querySelectorAll(".tabs-content");children.each(function(childModel,i){var childView=_this.createView(childModel);if(childView){childView.render();tabsContent[i].appendChild(childView.el)}})}else{ReactDOM.render(/*#__PURE__*/_jsx(Renderer,_extends({},compProps,{gjsModel:this.model})),this.el)}}else{this.el.innerHTML="<div>Unsupported component: "+compName+"</div>"}renderedComponents[this.model.get("id")]=this.model;return this},createView:function createView(model){var _this$em$get$getType;var ComponentView=(_this$em$get$getType=this.em.get("DomComponents").getType(model.get("type")))==null?void 0:_this$em$get$getType.view;if(!ComponentView){// eslint-disable-next-line no-console
3
3
  console.warn("No view found for component type:",model.get("type"));return null}var view=new ComponentView({model:model,config:this.config,componentTypes:this.componentTypes});return view},remove:function remove(){// eslint-disable-next-line import/no-named-as-default-member
4
4
  ReactDOM.unmountComponentAtNode(this.el);return this}}})}}
@@ -1 +1 @@
1
- {"version":3,"file":"grapejs-plugin.js","names":["ReactDOM","getRenderers","jsx","_jsx","createGrapesjsShadcnGenericPlugin","mode","performInteraction","renderedComponents","grapesjsShadcnGenericPlugin","editor","DomComponents","addType","model","defaults","tagName","droppable","componentName","componentProps","traits","view","events","handleSlotInput","e","target","slot","dataset","text","innerText","props","get","startsWith","_props$data","idx","parseInt","split","dataKeys","Object","keys","data","headerMapper","key","set","_extends","render","_this","compName","compProps","JSON","parse","err","console","error","isEditable","onChange","renderers","Renderer","gjsModel","el","children","components","tabsContent","querySelectorAll","each","childModel","i","childView","createView","appendChild","innerHTML","_this$em$get$getType","ComponentView","em","getType","warn","config","componentTypes","remove","unmountComponentAtNode"],"sources":["../../src/plugins/grapejs-plugin.tsx"],"sourcesContent":["/* eslint-disable import/no-named-as-default-member */\n/* eslint-disable func-names */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport ReactDOM from 'react-dom';\nimport { Editor, Component } from 'grapesjs';\nimport { getRenderers } from './helpers/render-components';\n\nexport function createGrapesjsShadcnGenericPlugin(\n mode: 'editor' | 'preview',\n performInteraction: (payload: Record<string, any>) => void,\n renderedComponents: Record<string, Component> = {},\n) {\n return function grapesjsShadcnGenericPlugin(editor: Editor): void {\n editor.DomComponents.addType('shadcn-generic', {\n model: {\n defaults: {\n tagName: 'div',\n droppable: false,\n componentName: 'Card',\n componentProps: {},\n traits: [],\n },\n },\n view: {\n events: {\n 'input [data-slot]': 'handleSlotInput',\n } as any,\n handleSlotInput(e: Event) {\n const target = e.target as HTMLElement;\n const slot = target.dataset.slot;\n const text = target.innerText;\n\n const props = this.model.get('componentProps') || {};\n\n if (!slot) {\n return;\n }\n\n if (slot.startsWith('table-header-')) {\n const idx = parseInt(slot.split('-')[2], 10);\n const dataKeys = Object.keys(props.data?.[0] || {});\n\n if (!props.headerMapper) {\n props.headerMapper = {};\n }\n\n const key = dataKeys[idx];\n\n if (key) {\n props.headerMapper[key] = text;\n }\n } else {\n props[slot] = text;\n }\n\n this.model.set('componentProps', {\n ...props,\n });\n },\n render: function () {\n const compName: string = this.model.get('componentName');\n let compProps: any = this.model.get('componentProps');\n\n if (typeof compProps === 'string') {\n try {\n compProps = JSON.parse(compProps);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Invalid JSON in componentProps', err);\n compProps = {};\n }\n }\n\n compProps.isEditable = mode === 'editor';\n compProps.performInteraction = performInteraction;\n\n compProps.onChange = (data: Record<string, any>) => {\n this.model.set('componentProps', {\n ...this.model.get('componentProps'),\n ...data,\n });\n };\n\n const renderers = getRenderers();\n const Renderer = renderers[compName];\n\n if (Renderer) {\n if (compName === 'Tabs') {\n ReactDOM.render(<Renderer {...compProps} gjsModel={this.model} />, this.el);\n\n const children = this.model.components();\n const tabsContent = this.el.querySelectorAll('.tabs-content');\n children.each((childModel, i) => {\n const childView = this.createView(childModel);\n\n if (childView) {\n childView.render();\n tabsContent[i].appendChild(childView.el);\n }\n });\n } else {\n ReactDOM.render(<Renderer {...compProps} gjsModel={this.model} />, this.el);\n }\n } else {\n this.el.innerHTML = `<div>Unsupported component: ${compName}</div>`;\n }\n\n renderedComponents[this.model.get('id')] = this.model;\n\n return this;\n },\n createView(model: any) {\n const ComponentView = this.em.get('DomComponents').getType(model.get('type'))?.view;\n\n if (!ComponentView) {\n // eslint-disable-next-line no-console\n console.warn('No view found for component type:', model.get('type'));\n\n return null;\n }\n\n const view = new ComponentView({\n model,\n config: this.config,\n componentTypes: this.componentTypes,\n });\n\n return view;\n },\n remove: function () {\n // eslint-disable-next-line import/no-named-as-default-member\n ReactDOM.unmountComponentAtNode(this.el);\n\n return this;\n },\n },\n });\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"grapejs-plugin.js","names":["ReactDOM","getRenderers","jsx","_jsx","createGrapesjsShadcnGenericPlugin","mode","performInteraction","renderedComponents","setHasChanged","grapesjsShadcnGenericPlugin","editor","DomComponents","addType","model","defaults","tagName","droppable","componentName","componentProps","traits","view","events","handleSlotInput","e","target","slot","dataset","text","innerText","props","get","startsWith","_props$data","idx","parseInt","split","dataKeys","Object","keys","data","headerMapper","key","set","_extends","includes","render","_this","compName","compProps","JSON","parse","err","console","error","isEditable","onChange","renderers","Renderer","gjsModel","el","children","components","tabsContent","querySelectorAll","each","childModel","i","childView","createView","appendChild","innerHTML","_this$em$get$getType","ComponentView","em","getType","warn","config","componentTypes","remove","unmountComponentAtNode"],"sources":["../../src/plugins/grapejs-plugin.tsx"],"sourcesContent":["/* eslint-disable import/no-named-as-default-member */\n/* eslint-disable func-names */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport ReactDOM from 'react-dom';\nimport { Editor, Component } from 'grapesjs';\nimport { getRenderers } from './helpers/render-components';\n\nexport function createGrapesjsShadcnGenericPlugin(\n mode: 'editor' | 'preview',\n performInteraction: (payload: Record<string, any>) => void,\n renderedComponents: Record<string, Component> = {},\n setHasChanged: (hasChanged: boolean) => void,\n) {\n return function grapesjsShadcnGenericPlugin(editor: Editor): void {\n editor.DomComponents.addType('shadcn-generic', {\n model: {\n defaults: {\n tagName: 'div',\n droppable: false,\n componentName: 'Card',\n componentProps: {},\n traits: [],\n },\n },\n view: {\n events: {\n 'input [data-slot]': 'handleSlotInput',\n } as any,\n handleSlotInput(e: Event) {\n const target = e.target as HTMLElement;\n const slot = target.dataset.slot;\n const text = target.innerText;\n\n const props = this.model.get('componentProps') || {};\n\n if (!slot) {\n return;\n }\n\n if (slot.startsWith('table-header-')) {\n const idx = parseInt(slot.split('-')[2], 10);\n const dataKeys = Object.keys(props.data?.[0] || {});\n\n if (!props.headerMapper) {\n props.headerMapper = {};\n }\n\n const key = dataKeys[idx];\n\n if (key) {\n props.headerMapper[key] = text;\n }\n } else {\n props[slot] = text;\n }\n\n this.model.set('componentProps', {\n ...props,\n });\n\n if (!['search-input'].includes(slot)) {\n setHasChanged(true);\n }\n },\n render: function () {\n const compName: string = this.model.get('componentName');\n let compProps: any = this.model.get('componentProps');\n\n if (typeof compProps === 'string') {\n try {\n compProps = JSON.parse(compProps);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Invalid JSON in componentProps', err);\n compProps = {};\n }\n }\n\n compProps.isEditable = mode === 'editor';\n compProps.performInteraction = performInteraction;\n\n compProps.onChange = (data: Record<string, any>) => {\n this.model.set('componentProps', {\n ...this.model.get('componentProps'),\n ...data,\n });\n };\n\n const renderers = getRenderers();\n const Renderer = renderers[compName];\n\n if (Renderer) {\n if (compName === 'Tabs') {\n ReactDOM.render(<Renderer {...compProps} gjsModel={this.model} />, this.el);\n\n const children = this.model.components();\n const tabsContent = this.el.querySelectorAll('.tabs-content');\n children.each((childModel, i) => {\n const childView = this.createView(childModel);\n\n if (childView) {\n childView.render();\n tabsContent[i].appendChild(childView.el);\n }\n });\n } else {\n ReactDOM.render(<Renderer {...compProps} gjsModel={this.model} />, this.el);\n }\n } else {\n this.el.innerHTML = `<div>Unsupported component: ${compName}</div>`;\n }\n\n renderedComponents[this.model.get('id')] = this.model;\n\n return this;\n },\n createView(model: any) {\n const ComponentView = this.em.get('DomComponents').getType(model.get('type'))?.view;\n\n if (!ComponentView) {\n // eslint-disable-next-line no-console\n console.warn('No view found for component type:', model.get('type'));\n\n return null;\n }\n\n const view = new ComponentView({\n model,\n config: this.config,\n componentTypes: this.componentTypes,\n });\n\n return view;\n },\n remove: function () {\n // eslint-disable-next-line import/no-named-as-default-member\n ReactDOM.unmountComponentAtNode(this.el);\n\n return this;\n },\n },\n });\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _regeneratorRuntime from"@babel/runtime/regenerator";import React,{useState}from"react";import{QueryDetailsModal}from"./query-details-modal";import{QueryLoadingModal}from"./query-loading-modal";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;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([]),tableButtonExplanations=_useState4[0],setTableButtonExplanations=_useState4[1];var _useState5=useState(false),isLoading=_useState5[0],setIsLoading=_useState5[1];var _useState6=useState(""),error=_useState6[0],setError=_useState6[1];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;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=11;break}response=result.apiResponse;if(!(response.request_url&&typeof response.request_url==="string")){_context.next=11;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]}}return _context.abrupt("return",{action:action.text||action.id||"Button Action",explanation:response.request_url,operationName:response.operation_name,buttonClassName:actionClassName,buttonStyle:buttonStyle});case 11:return _context.abrupt("return",null);case 14:_context.prev=14;_context.t0=_context["catch"](0);return _context.abrupt("return",null);case 17:case"end":return _context.stop()}},_callee,null,[[0,14]])}));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,sqlResponse,sqlObjects,hasValidQueries,validQueries,_uniqueQueries,stringQueries,uniqueQueries,errorMessage;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"&&"sql"in result.apiResponse)){_context3.next=21;break}sqlResponse=result.apiResponse.sql;if(!Array.isArray(sqlResponse)){_context3.next=20;break}if(!(sqlResponse.length>0&&typeof sqlResponse[0]==="object"&&"sql"in sqlResponse[0]&&"error"in sqlResponse[0])){_context3.next=17;break}sqlObjects=sqlResponse;hasValidQueries=sqlObjects.some(function(obj){return!obj.error&&obj.sql&&obj.sql.trim()});if(hasValidQueries){_context3.next=14;break}throw new Error("Error fetching query");case 14:validQueries=sqlObjects.filter(function(obj){return!obj.error&&obj.sql&&obj.sql.trim()}).map(function(obj){return obj.sql});_uniqueQueries=Array.from(new Set(validQueries));return _context3.abrupt("return",_uniqueQueries.length>1?_uniqueQueries:_uniqueQueries[0]||"");case 17:stringQueries=sqlResponse;uniqueQueries=Array.from(new Set(stringQueries.filter(function(query){return query&&typeof query==="string"&&query.trim()})));return _context3.abrupt("return",uniqueQueries.length>1?uniqueQueries:uniqueQueries[0]||"");case 20:return _context3.abrupt("return",sqlResponse||"");case 21:return _context3.abrupt("return",ERROR_MESSAGES.SQL_NOT_AVAILABLE);case 24:_context3.prev=24;_context3.t0=_context3["catch"](0);errorMessage=_context3.t0 instanceof Error?_context3.t0.message:ERROR_MESSAGES.FETCH_FAILED;setError(errorMessage);return _context3.abrupt("return","");case 29:_context3.prev=29;setIsLoading(false);return _context3.finish(29);case 32:case"end":return _context3.stop()}},_callee3,null,[[0,24,29,32]])}));return _fetchSemanticLayerQuery.apply(this,arguments)}function handleInfoClick(_x){return _handleInfoClick.apply(this,arguments)}function _handleInfoClick(){_handleInfoClick=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(e){var _yield$Promise$all,sql,buttonExplanations,errorMessage;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:e.stopPropagation();e.preventDefault();_context4.prev=2;setIsLoadingModalOpen(true);setError("");_context4.next=7;return Promise.all([fetchSemanticLayerQuery(),fetchTableButtonExplanations()]);case 7:_yield$Promise$all=_context4.sent;sql=_yield$Promise$all[0];buttonExplanations=_yield$Promise$all[1];setSqlQuery(sql);setTableButtonExplanations(buttonExplanations);setIsLoadingModalOpen(false);setIsModalOpen(true);if(onSqlFetch&&sql){onSqlFetch(sql)}_context4.next=23;break;case 17:_context4.prev=17;_context4.t0=_context4["catch"](2);errorMessage=_context4.t0 instanceof Error?_context4.t0.message:ERROR_MESSAGES.LOAD_FAILED;setError(errorMessage);setIsLoadingModalOpen(false);setIsModalOpen(true);case 23:case"end":return _context4.stop()}},_callee4,null,[[2,17]])}));return _handleInfoClick.apply(this,arguments)}function resetState(){setIsModalOpen(false);setIsLoadingModalOpen(false);setSqlQuery("");setTableButtonExplanations([]);setError("");setIsLoading(false)}function handleModalClose(){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}),/*#__PURE__*/_jsx(QueryDetailsModal,{isOpen:isModalOpen,onClose:handleModalClose,isLoading:isLoading,error:error,sqlQuery:sqlQuery,tableButtonExplanations:tableButtonExplanations,onRetry:handleRetry})]})}
1
+ import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _regeneratorRuntime from"@babel/runtime/regenerator";import React,{useState}from"react";import{QueryDetailsModal}from"./query-details-modal";import{QueryLoadingModal}from"./query-loading-modal";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;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([]),tableButtonExplanations=_useState4[0],setTableButtonExplanations=_useState4[1];var _useState5=useState(false),isLoading=_useState5[0],setIsLoading=_useState5[1];var _useState6=useState(""),error=_useState6[0],setError=_useState6[1];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;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=11;break}response=result.apiResponse;if(!(response.request_url&&typeof response.request_url==="string")){_context.next=11;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]}}return _context.abrupt("return",{action:action.text||action.id||"Button Action",explanation:response.request_url,operationName:response.operation_name,buttonClassName:actionClassName,buttonStyle:buttonStyle});case 11:return _context.abrupt("return",null);case 14:_context.prev=14;_context.t0=_context["catch"](0);return _context.abrupt("return",null);case 17:case"end":return _context.stop()}},_callee,null,[[0,14]])}));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,uniqueQueries,sqlObjects,_validQueries,_uniqueQueries;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=33;break}apiResponse=result.apiResponse;if("sql"in apiResponse){_context3.next=10;break}return _context3.abrupt("return",ERROR_MESSAGES.SQL_NOT_AVAILABLE);case 10:sqlResponse=apiResponse.sql;if(!(!sqlResponse||typeof sqlResponse!=="object")){_context3.next=13;break}return _context3.abrupt("return",ERROR_MESSAGES.SQL_NOT_AVAILABLE);case 13:if(!("success"in sqlResponse&&Array.isArray(sqlResponse.success))){_context3.next=23;break}successArray=sqlResponse.success;hasAnyValidQuery=successArray.some(function(item){return item&&typeof item==="object"&&item.error===false&&"sql"in item&&typeof item.sql==="string"&&item.sql.trim()});if(hasAnyValidQuery){_context3.next=18;break}return _context3.abrupt("return",ERROR_MESSAGES.SQL_NOT_AVAILABLE);case 18:validQueries=successArray.filter(function(item){return item&&typeof item==="object"&&item.error===false&&"sql"in item&&typeof item.sql==="string"&&item.sql.trim()}).map(function(item){return item.sql});if(!(validQueries.length===0)){_context3.next=21;break}return _context3.abrupt("return",ERROR_MESSAGES.SQL_NOT_AVAILABLE);case 21:uniqueQueries=Array.from(new Set(validQueries));return _context3.abrupt("return",uniqueQueries.length>1?uniqueQueries:uniqueQueries[0]);case 23:if(!("error"in sqlResponse&&typeof sqlResponse.error==="string")){_context3.next=25;break}return _context3.abrupt("return",ERROR_MESSAGES.SQL_NOT_AVAILABLE);case 25:if(!Array.isArray(sqlResponse)){_context3.next=32;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 obj.sql});if(!(_validQueries.length===0)){_context3.next=30;break}return _context3.abrupt("return",ERROR_MESSAGES.SQL_NOT_AVAILABLE);case 30:_uniqueQueries=Array.from(new Set(_validQueries));return _context3.abrupt("return",_uniqueQueries.length>1?_uniqueQueries:_uniqueQueries[0]);case 32:return _context3.abrupt("return",ERROR_MESSAGES.SQL_NOT_AVAILABLE);case 33:return _context3.abrupt("return",ERROR_MESSAGES.SQL_NOT_AVAILABLE);case 36:_context3.prev=36;_context3.t0=_context3["catch"](0);return _context3.abrupt("return",ERROR_MESSAGES.SQL_NOT_AVAILABLE);case 39:_context3.prev=39;setIsLoading(false);return _context3.finish(39);case 42:case"end":return _context3.stop()}},_callee3,null,[[0,36,39,42]])}));return _fetchSemanticLayerQuery.apply(this,arguments)}function handleInfoClick(_x){return _handleInfoClick.apply(this,arguments)}function _handleInfoClick(){_handleInfoClick=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(e){var _yield$Promise$all,sql,buttonExplanations;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:e.stopPropagation();e.preventDefault();_context4.prev=2;setIsLoadingModalOpen(true);setError("");_context4.next=7;return Promise.all([fetchSemanticLayerQuery(),fetchTableButtonExplanations()]);case 7:_yield$Promise$all=_context4.sent;sql=_yield$Promise$all[0];buttonExplanations=_yield$Promise$all[1];setSqlQuery(sql||ERROR_MESSAGES.SQL_NOT_AVAILABLE);setTableButtonExplanations(buttonExplanations);setIsLoadingModalOpen(false);setIsModalOpen(true);if(onSqlFetch&&sql&&sql!==ERROR_MESSAGES.SQL_NOT_AVAILABLE){onSqlFetch(sql)}_context4.next=23;break;case 17:_context4.prev=17;_context4.t0=_context4["catch"](2);setSqlQuery(ERROR_MESSAGES.SQL_NOT_AVAILABLE);setTableButtonExplanations([]);setIsLoadingModalOpen(false);setIsModalOpen(true);case 23:case"end":return _context4.stop()}},_callee4,null,[[2,17]])}));return _handleInfoClick.apply(this,arguments)}function resetState(){setIsModalOpen(false);setIsLoadingModalOpen(false);setSqlQuery("");setTableButtonExplanations([]);setError("");setIsLoading(false)}function handleModalClose(){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}),/*#__PURE__*/_jsx(QueryDetailsModal,{isOpen:isModalOpen,onClose:handleModalClose,isLoading:isLoading,error:error,sqlQuery:sqlQuery,tableButtonExplanations:tableButtonExplanations,onRetry:handleRetry})]})}
2
2
  //# sourceMappingURL=styled-info-button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styled-info-button.js","names":["React","useState","QueryDetailsModal","QueryLoadingModal","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","_useState","isModalOpen","setIsModalOpen","_useState2","isLoadingModalOpen","setIsLoadingModalOpen","_useState3","sqlQuery","setSqlQuery","_useState4","tableButtonExplanations","setTableButtonExplanations","_useState5","isLoading","setIsLoading","_useState6","error","setError","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","_callee$","_context","id","interactionType","payload","row","params","isInfoButtonInteraction","affectedComponents","sent","apiResponse","request_url","match","backgroundColor","color","border","text","explanation","operationName","operation_name","buttonClassName","t0","stop","_x2","all","filter","fetchSemanticLayerQuery","_fetchSemanticLayerQuery","_callee3","sqlResponse","sqlObjects","hasValidQueries","validQueries","_uniqueQueries","stringQueries","uniqueQueries","errorMessage","_callee3$","_context3","sql","Array","isArray","some","obj","trim","Error","from","Set","query","message","finish","handleInfoClick","_x","_handleInfoClick","_callee4","e","_yield$Promise$all","buttonExplanations","_callee4$","_context4","stopPropagation","preventDefault","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 } from 'react';\nimport { QueryDetailsModal } from './query-details-modal';\nimport { QueryLoadingModal } from './query-loading-modal';\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\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 buttonClassName?: string;\n buttonStyle?: ButtonStyle;\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}\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}: StyledInfoButtonProps) {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [isLoadingModalOpen, setIsLoadingModalOpen] = useState(false);\n \n const [sqlQuery, setSqlQuery] = useState<string | string[]>('');\n const [tableButtonExplanations, setTableButtonExplanations] = useState<TableButtonExplanation[]>([]);\n \n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string>('');\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 return {\n action: action.text || action.id || 'Button Action',\n explanation: response.request_url,\n operationName: response.operation_name as string,\n buttonClassName: actionClassName,\n buttonStyle\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<string | 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' && 'sql' in result.apiResponse) {\n const sqlResponse = (result.apiResponse as { sql: string | string[] | Array<{sql: string, error: boolean}> }).sql;\n \n if (Array.isArray(sqlResponse)) {\n if (sqlResponse.length > 0 && typeof sqlResponse[0] === 'object' && 'sql' in sqlResponse[0] && 'error' in sqlResponse[0]) {\n const sqlObjects = sqlResponse as Array<{sql: string, error: boolean}>;\n \n const hasValidQueries = sqlObjects.some(obj => !obj.error && obj.sql && obj.sql.trim());\n \n if (!hasValidQueries) {\n throw new Error('Error fetching query');\n }\n \n const validQueries = sqlObjects\n .filter(obj => !obj.error && obj.sql && obj.sql.trim())\n .map(obj => obj.sql);\n \n const uniqueQueries = Array.from(new Set(validQueries));\n \n return uniqueQueries.length > 1 ? uniqueQueries : uniqueQueries[0] || '';\n }\n \n const stringQueries = sqlResponse as string[];\n const uniqueQueries = Array.from(new Set(stringQueries.filter(query => query && typeof query === 'string' && query.trim())));\n \n return uniqueQueries.length > 1 ? uniqueQueries : uniqueQueries[0] || '';\n }\n \n return sqlResponse || '';\n }\n\n return ERROR_MESSAGES.SQL_NOT_AVAILABLE;\n\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : ERROR_MESSAGES.FETCH_FAILED;\n setError(errorMessage);\n\n return '';\n\n } finally {\n setIsLoading(false);\n }\n }\n\n async function handleInfoClick(e: React.MouseEvent) {\n e.stopPropagation();\n e.preventDefault();\n \n try {\n setIsLoadingModalOpen(true);\n setError('');\n\n const [sql, buttonExplanations] = await Promise.all([\n fetchSemanticLayerQuery(),\n fetchTableButtonExplanations()\n ]);\n \n setSqlQuery(sql);\n setTableButtonExplanations(buttonExplanations);\n \n setIsLoadingModalOpen(false);\n setIsModalOpen(true);\n \n if (onSqlFetch && sql) {\n onSqlFetch(sql);\n }\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : ERROR_MESSAGES.LOAD_FAILED;\n setError(errorMessage);\n setIsLoadingModalOpen(false);\n setIsModalOpen(true);\n }\n }\n\n function resetState() {\n setIsModalOpen(false);\n setIsLoadingModalOpen(false);\n setSqlQuery('');\n setTableButtonExplanations([]);\n setError('');\n setIsLoading(false);\n }\n\n function handleModalClose() {\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} />\n \n <QueryDetailsModal\n isOpen={isModalOpen}\n onClose={handleModalClose}\n isLoading={isLoading}\n error={error}\n sqlQuery={sqlQuery}\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","QueryDetailsModal","QueryLoadingModal","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","_useState","isModalOpen","setIsModalOpen","_useState2","isLoadingModalOpen","setIsLoadingModalOpen","_useState3","sqlQuery","setSqlQuery","_useState4","tableButtonExplanations","setTableButtonExplanations","_useState5","isLoading","setIsLoading","_useState6","error","setError","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","_callee$","_context","id","interactionType","payload","row","params","isInfoButtonInteraction","affectedComponents","sent","apiResponse","request_url","match","backgroundColor","color","border","text","explanation","operationName","operation_name","buttonClassName","t0","stop","_x2","all","filter","fetchSemanticLayerQuery","_fetchSemanticLayerQuery","_callee3","sqlResponse","successArray","hasAnyValidQuery","validQueries","uniqueQueries","sqlObjects","_validQueries","_uniqueQueries","_callee3$","_context3","sql","Array","isArray","success","some","item","trim","from","Set","obj","finish","handleInfoClick","_x","_handleInfoClick","_callee4","e","_yield$Promise$all","buttonExplanations","_callee4$","_context4","stopPropagation","preventDefault","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 } from 'react';\nimport { QueryDetailsModal } from './query-details-modal';\nimport { QueryLoadingModal } from './query-loading-modal';\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\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 buttonClassName?: string;\n buttonStyle?: ButtonStyle;\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}\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}: StyledInfoButtonProps) {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [isLoadingModalOpen, setIsLoadingModalOpen] = useState(false);\n \n const [sqlQuery, setSqlQuery] = useState<string | string[]>('');\n const [tableButtonExplanations, setTableButtonExplanations] = useState<TableButtonExplanation[]>([]);\n \n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string>('');\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 return {\n action: action.text || action.id || 'Button Action',\n explanation: response.request_url,\n operationName: response.operation_name as string,\n buttonClassName: actionClassName,\n buttonStyle\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<string | 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 ERROR_MESSAGES.SQL_NOT_AVAILABLE;\n }\n \n const sqlResponse = apiResponse.sql;\n \n if (!sqlResponse || (typeof sqlResponse !== 'object')) {\n return ERROR_MESSAGES.SQL_NOT_AVAILABLE;\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 }>;\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 ERROR_MESSAGES.SQL_NOT_AVAILABLE;\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 => item.sql as string);\n \n if (validQueries.length === 0) {\n return ERROR_MESSAGES.SQL_NOT_AVAILABLE;\n }\n \n const uniqueQueries = Array.from(new Set(validQueries));\n \n return uniqueQueries.length > 1 ? uniqueQueries : uniqueQueries[0];\n }\n \n if ('error' in sqlResponse && typeof sqlResponse.error === 'string') {\n return ERROR_MESSAGES.SQL_NOT_AVAILABLE;\n }\n \n if (Array.isArray(sqlResponse)) {\n const sqlObjects = sqlResponse as Array<{sql: string, error: boolean}>;\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 => obj.sql);\n \n if (validQueries.length === 0) {\n return ERROR_MESSAGES.SQL_NOT_AVAILABLE;\n }\n \n const uniqueQueries = Array.from(new Set(validQueries));\n \n return uniqueQueries.length > 1 ? uniqueQueries : uniqueQueries[0];\n }\n \n return ERROR_MESSAGES.SQL_NOT_AVAILABLE;\n }\n\n return ERROR_MESSAGES.SQL_NOT_AVAILABLE;\n\n } catch (err) {\n\n return ERROR_MESSAGES.SQL_NOT_AVAILABLE;\n\n } finally {\n setIsLoading(false);\n }\n }\n\n async function handleInfoClick(e: React.MouseEvent) {\n e.stopPropagation();\n e.preventDefault();\n \n try {\n setIsLoadingModalOpen(true);\n setError('');\n\n const [sql, buttonExplanations] = await Promise.all([\n fetchSemanticLayerQuery(),\n fetchTableButtonExplanations()\n ]);\n \n setSqlQuery(sql || ERROR_MESSAGES.SQL_NOT_AVAILABLE);\n setTableButtonExplanations(buttonExplanations);\n \n setIsLoadingModalOpen(false);\n setIsModalOpen(true);\n \n if (onSqlFetch && sql && sql !== ERROR_MESSAGES.SQL_NOT_AVAILABLE) {\n onSqlFetch(sql);\n }\n } catch (err) {\n setSqlQuery(ERROR_MESSAGES.SQL_NOT_AVAILABLE);\n setTableButtonExplanations([]);\n setIsLoadingModalOpen(false);\n setIsModalOpen(true);\n }\n }\n\n function resetState() {\n setIsModalOpen(false);\n setIsLoadingModalOpen(false);\n setSqlQuery('');\n setTableButtonExplanations([]);\n setError('');\n setIsLoading(false);\n }\n\n function handleModalClose() {\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} />\n \n <QueryDetailsModal\n isOpen={isModalOpen}\n onClose={handleModalClose}\n isLoading={isLoading}\n error={error}\n sqlQuery={sqlQuery}\n tableButtonExplanations={tableButtonExplanations}\n onRetry={handleRetry}\n />\n </>\n );\n}"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _regeneratorRuntime from"@babel/runtime/regenerator";/* eslint-disable @typescript-eslint/no-explicit-any */import{useEffect,useRef,useState}from"react";import{Loader2Icon,Search as SearchIcon,X as ClearIcon,Info as InfoIcon}from"lucide-react";import{Input}from"./input";import{getAffectedComponentsWithLoader}from"../../../helpers";import{Tooltip,TooltipTrigger,TooltipContent}from"./tooltip";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var MAX_CHAR_LIMIT=140;var MaxCharLimitExceededMessage="Max 140 characters allowed.";export function renderSearch(_ref){var gjsModel=_ref.gjsModel,performInteraction=_ref.performInteraction;var wrapperRef=useRef(null);var _useState=useState(_extends({},gjsModel.get("componentProps"))),componentData=_useState[0],setComponentData=_useState[1];var placeholder=componentData.placeholder,_componentData$affect=componentData.affectedComponents,affectedComponents=_componentData$affect===void 0?[]:_componentData$affect,_componentData$classN=componentData.className,className=_componentData$classN===void 0?"":_componentData$classN;var initialSearchText=componentData.searchText||"";var _useState2=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState2[0],setAttributes=_useState2[1];var _useState3=useState(initialSearchText),searchQuery=_useState3[0],setSearchQuery=_useState3[1];var _useState4=useState(false),isApplying=_useState4[0],setIsApplying=_useState4[1];var isBusy=attributes.interactionApiInProgress||isApplying;var showClear=!!searchQuery&&!isBusy;useEffect(function(){function updateComponentData(){setComponentData(_extends({},gjsModel.get("componentProps")))}function updateAttributes(){setAttributes(_extends({},gjsModel.get("attributes")))}gjsModel.on("change:componentProps",updateComponentData);gjsModel.on("change:attributes",updateAttributes);return function(){gjsModel.off("change:componentProps",updateComponentData);gjsModel.off("change:attributes",updateAttributes)}},[gjsModel]);function applySearch(_x){return _applySearch.apply(this,arguments)}function _applySearch(){_applySearch=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query){var id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(!(query.length>MAX_CHAR_LIMIT)){_context.next=2;break}return _context.abrupt("return");case 2:setIsApplying(true);_context.prev=3;gjsModel.set("componentProps",_extends({},gjsModel.get("componentProps"),{searchText:query}));id=gjsModel.get("id");_context.next=8;return performInteraction({interactionType:"search",id:id,affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true)});case 8:_context.prev=8;setIsApplying(false);return _context.finish(8);case 11:case"end":return _context.stop()}},_callee,null,[[3,,8,11]])}));return _applySearch.apply(this,arguments)}function handleKeyDown(e){if(e.key==="Enter"){applySearch(searchQuery.trim())}}function handleSearchIconClick(){applySearch(searchQuery.trim())}function handleClear(){setSearchQuery("");applySearch("")}return/*#__PURE__*/_jsxs("div",{ref:wrapperRef,className:"flex items-center gap-2 p-2 "+className,children:[/*#__PURE__*/_jsxs("div",{className:"relative transition-all duration-200 ease-in-out "+(searchQuery?"w-[320px]":"w-[280px]"),style:{backgroundColor:"#fff"},children:[/*#__PURE__*/_jsxs("div",{children:[/*#__PURE__*/_jsx(Input,{type:"text",placeholder:"Search...",value:searchQuery,onChange:function onChange(e){return setSearchQuery(e.target.value)},onKeyDown:handleKeyDown,disabled:isBusy,className:"py-2 text-sm rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all duration-200 pl-4 pr-16 w-full"}),showClear&&/*#__PURE__*/_jsx("button",{type:"button",onClick:handleClear,className:"absolute right-10 top-7 -translate-y-1/2 text-gray-400 hover:text-gray-600 transition","aria-label":"Clear search",children:/*#__PURE__*/_jsx(ClearIcon,{size:16})}),/*#__PURE__*/_jsx("button",{type:"button",onClick:handleSearchIconClick,disabled:isBusy,className:"absolute right-2 top-7 -translate-y-1/2 text-gray-500 hover:text-blue-600 transition-colors","aria-label":"Search",children:isBusy?/*#__PURE__*/_jsx(Loader2Icon,{size:18,className:"animate-spin"}):/*#__PURE__*/_jsx(SearchIcon,{size:18})})]}),searchQuery.length>MAX_CHAR_LIMIT&&/*#__PURE__*/_jsx("p",{className:"absolute left-1 text-xs text-red-600 pl-1 pt-1",children:MaxCharLimitExceededMessage})]}),placeholder&&/*#__PURE__*/_jsxs(Tooltip,{children:[/*#__PURE__*/_jsx(TooltipTrigger,{asChild:true,children:/*#__PURE__*/_jsx("span",{className:"cursor-pointer text-gray-400 hover:text-gray-600",children:/*#__PURE__*/_jsx(InfoIcon,{size:16})})}),/*#__PURE__*/_jsx(TooltipContent,{side:"bottom",children:placeholder})]})]})}
1
+ import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _regeneratorRuntime from"@babel/runtime/regenerator";/* eslint-disable @typescript-eslint/no-explicit-any */import{useEffect,useRef,useState}from"react";import{Loader2Icon,Search as SearchIcon,X as ClearIcon,Info as InfoIcon}from"lucide-react";import{Input}from"./input";import{getAffectedComponentsWithLoader}from"../../../helpers";import{Tooltip,TooltipTrigger,TooltipContent}from"./tooltip";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var MAX_CHAR_LIMIT=140;var MaxCharLimitExceededMessage="Max 140 characters allowed.";export function renderSearch(_ref){var gjsModel=_ref.gjsModel,performInteraction=_ref.performInteraction;var wrapperRef=useRef(null);var _useState=useState(_extends({},gjsModel.get("componentProps"))),componentData=_useState[0],setComponentData=_useState[1];var placeholder=componentData.placeholder,_componentData$affect=componentData.affectedComponents,affectedComponents=_componentData$affect===void 0?[]:_componentData$affect,_componentData$classN=componentData.className,className=_componentData$classN===void 0?"":_componentData$classN;var initialSearchText=componentData.searchText||"";var _useState2=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState2[0],setAttributes=_useState2[1];var _useState3=useState(initialSearchText),searchQuery=_useState3[0],setSearchQuery=_useState3[1];var _useState4=useState(false),isApplying=_useState4[0],setIsApplying=_useState4[1];var isBusy=attributes.interactionApiInProgress||isApplying;var showClear=!!searchQuery&&!isBusy;useEffect(function(){function updateComponentData(){setComponentData(_extends({},gjsModel.get("componentProps")))}function updateAttributes(){setAttributes(_extends({},gjsModel.get("attributes")))}gjsModel.on("change:componentProps",updateComponentData);gjsModel.on("change:attributes",updateAttributes);return function(){gjsModel.off("change:componentProps",updateComponentData);gjsModel.off("change:attributes",updateAttributes)}},[gjsModel]);function applySearch(_x){return _applySearch.apply(this,arguments)}function _applySearch(){_applySearch=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query){var id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(!(query.length>MAX_CHAR_LIMIT)){_context.next=2;break}return _context.abrupt("return");case 2:setIsApplying(true);_context.prev=3;gjsModel.set("componentProps",_extends({},gjsModel.get("componentProps"),{searchText:query}));id=gjsModel.get("id");_context.next=8;return performInteraction({interactionType:"search",id:id,affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true)});case 8:_context.prev=8;setIsApplying(false);return _context.finish(8);case 11:case"end":return _context.stop()}},_callee,null,[[3,,8,11]])}));return _applySearch.apply(this,arguments)}function handleKeyDown(e){if(e.key==="Enter"){applySearch(searchQuery.trim())}}function handleSearchIconClick(){applySearch(searchQuery.trim())}function handleClear(){setSearchQuery("");applySearch("")}return/*#__PURE__*/_jsxs("div",{ref:wrapperRef,className:"flex items-center gap-2 p-2 "+className,children:[/*#__PURE__*/_jsxs("div",{className:"relative transition-all duration-200 ease-in-out "+(searchQuery?"w-[320px]":"w-[280px]"),style:{backgroundColor:"#fff"},children:[/*#__PURE__*/_jsxs("div",{children:[/*#__PURE__*/_jsx(Input,{type:"text","data-slot":"search-input",placeholder:"Search...",value:searchQuery,onChange:function onChange(e){return setSearchQuery(e.target.value)},onKeyDown:handleKeyDown,disabled:isBusy,className:"py-2 text-sm rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all duration-200 pl-4 pr-16 w-full"}),showClear&&/*#__PURE__*/_jsx("button",{type:"button",onClick:handleClear,className:"absolute right-10 top-7 -translate-y-1/2 text-gray-400 hover:text-gray-600 transition","aria-label":"Clear search",children:/*#__PURE__*/_jsx(ClearIcon,{size:16})}),/*#__PURE__*/_jsx("button",{type:"button",onClick:handleSearchIconClick,disabled:isBusy,className:"absolute right-2 top-7 -translate-y-1/2 text-gray-500 hover:text-blue-600 transition-colors","aria-label":"Search",children:isBusy?/*#__PURE__*/_jsx(Loader2Icon,{size:18,className:"animate-spin"}):/*#__PURE__*/_jsx(SearchIcon,{size:18})})]}),searchQuery.length>MAX_CHAR_LIMIT&&/*#__PURE__*/_jsx("p",{className:"absolute left-1 text-xs text-red-600 pl-1 pt-1",children:MaxCharLimitExceededMessage})]}),placeholder&&/*#__PURE__*/_jsxs(Tooltip,{children:[/*#__PURE__*/_jsx(TooltipTrigger,{asChild:true,children:/*#__PURE__*/_jsx("span",{className:"cursor-pointer text-gray-400 hover:text-gray-600",children:/*#__PURE__*/_jsx(InfoIcon,{size:16})})}),/*#__PURE__*/_jsx(TooltipContent,{side:"bottom",children:placeholder})]})]})}
2
2
  //# sourceMappingURL=search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","names":["useEffect","useRef","useState","Loader2Icon","Search","SearchIcon","X","ClearIcon","Info","InfoIcon","Input","getAffectedComponentsWithLoader","Tooltip","TooltipTrigger","TooltipContent","jsx","_jsx","jsxs","_jsxs","MAX_CHAR_LIMIT","MaxCharLimitExceededMessage","renderSearch","_ref","gjsModel","performInteraction","wrapperRef","_useState","_extends","get","componentData","setComponentData","placeholder","_componentData$affect","affectedComponents","_componentData$classN","className","initialSearchText","searchText","_useState2","attributes","setAttributes","_useState3","searchQuery","setSearchQuery","_useState4","isApplying","setIsApplying","isBusy","interactionApiInProgress","showClear","updateComponentData","updateAttributes","on","off","applySearch","_x","_applySearch","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","query","id","wrap","_callee$","_context","prev","next","length","abrupt","set","interactionType","concat","finish","stop","handleKeyDown","e","key","trim","handleSearchIconClick","handleClear","ref","children","style","backgroundColor","type","value","onChange","target","onKeyDown","disabled","onClick","size","asChild","side"],"sources":["../../../../src/shadcn/components/ui/search.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef, useState } from 'react';\nimport { Loader2Icon, Search as SearchIcon, X as ClearIcon, Info as InfoIcon } from 'lucide-react';\nimport { Input } from './input';\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\nimport { Tooltip, TooltipTrigger, TooltipContent } from './tooltip';\n\nconst MAX_CHAR_LIMIT = 140;\nconst MaxCharLimitExceededMessage = 'Max 140 characters allowed.';\n\ntype SearchProps = {\n isEditable?: boolean;\n gjsModel: any;\n performInteraction: (payload: Record<string, any>) => Promise<void>;\n};\n\nexport function renderSearch({ gjsModel, performInteraction }: SearchProps) {\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const [componentData, setComponentData] = useState({ ...gjsModel.get('componentProps') });\n const { placeholder, affectedComponents = [], className = '' } = componentData;\n const initialSearchText = componentData.searchText || '';\n\n const [attributes, setAttributes] = useState({ ...gjsModel.get('attributes') });\n const [searchQuery, setSearchQuery] = useState(initialSearchText);\n const [isApplying, setIsApplying] = useState(false);\n\n const isBusy = attributes.interactionApiInProgress || isApplying;\n const showClear = !!searchQuery && !isBusy;\n\n useEffect(() => {\n function updateComponentData() {\n setComponentData({ ...gjsModel.get('componentProps') });\n }\n\n function updateAttributes() {\n setAttributes({ ...gjsModel.get('attributes') });\n }\n\n gjsModel.on('change:componentProps', updateComponentData);\n gjsModel.on('change:attributes', updateAttributes);\n\n return () => {\n gjsModel.off('change:componentProps', updateComponentData);\n gjsModel.off('change:attributes', updateAttributes);\n };\n }, [gjsModel]);\n\n async function applySearch(query: string) {\n if (query.length > MAX_CHAR_LIMIT) {\n return;\n }\n\n setIsApplying(true);\n\n try {\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n searchText: query,\n });\n\n const id = gjsModel.get('id');\n\n await performInteraction({\n interactionType: 'search',\n id,\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n });\n } finally {\n setIsApplying(false);\n }\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === 'Enter') {\n applySearch(searchQuery.trim());\n }\n }\n\n function handleSearchIconClick() {\n applySearch(searchQuery.trim());\n }\n\n function handleClear() {\n setSearchQuery('');\n applySearch('');\n }\n\n return (\n <div ref={wrapperRef} className={`flex items-center gap-2 p-2 ${className}`}>\n <div\n className={`relative transition-all duration-200 ease-in-out ${\n searchQuery ? 'w-[320px]' : 'w-[280px]'\n }`}\n style={{ backgroundColor: '#fff' }}\n >\n <div>\n <Input\n type=\"text\"\n placeholder={'Search...'}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n onKeyDown={handleKeyDown}\n disabled={isBusy}\n className={`py-2 text-sm rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all duration-200 pl-4 pr-16 w-full`}\n />\n\n {showClear && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute right-10 top-7 -translate-y-1/2 text-gray-400 hover:text-gray-600 transition\"\n aria-label=\"Clear search\"\n >\n <ClearIcon size={16} />\n </button>\n )}\n\n <button\n type=\"button\"\n onClick={handleSearchIconClick}\n disabled={isBusy}\n className=\"absolute right-2 top-7 -translate-y-1/2 text-gray-500 hover:text-blue-600 transition-colors\"\n aria-label=\"Search\"\n >\n {isBusy ? <Loader2Icon size={18} className=\"animate-spin\" /> : <SearchIcon size={18} />}\n </button>\n </div>\n\n {searchQuery.length > MAX_CHAR_LIMIT && (\n <p className=\"absolute left-1 text-xs text-red-600 pl-1 pt-1\">\n {MaxCharLimitExceededMessage}\n </p>\n )}\n </div>\n\n {placeholder && (\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"cursor-pointer text-gray-400 hover:text-gray-600\">\n <InfoIcon size={16} />\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">{placeholder}</TooltipContent>\n </Tooltip>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"search.js","names":["useEffect","useRef","useState","Loader2Icon","Search","SearchIcon","X","ClearIcon","Info","InfoIcon","Input","getAffectedComponentsWithLoader","Tooltip","TooltipTrigger","TooltipContent","jsx","_jsx","jsxs","_jsxs","MAX_CHAR_LIMIT","MaxCharLimitExceededMessage","renderSearch","_ref","gjsModel","performInteraction","wrapperRef","_useState","_extends","get","componentData","setComponentData","placeholder","_componentData$affect","affectedComponents","_componentData$classN","className","initialSearchText","searchText","_useState2","attributes","setAttributes","_useState3","searchQuery","setSearchQuery","_useState4","isApplying","setIsApplying","isBusy","interactionApiInProgress","showClear","updateComponentData","updateAttributes","on","off","applySearch","_x","_applySearch","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","query","id","wrap","_callee$","_context","prev","next","length","abrupt","set","interactionType","concat","finish","stop","handleKeyDown","e","key","trim","handleSearchIconClick","handleClear","ref","children","style","backgroundColor","type","value","onChange","target","onKeyDown","disabled","onClick","size","asChild","side"],"sources":["../../../../src/shadcn/components/ui/search.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef, useState } from 'react';\nimport { Loader2Icon, Search as SearchIcon, X as ClearIcon, Info as InfoIcon } from 'lucide-react';\nimport { Input } from './input';\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\nimport { Tooltip, TooltipTrigger, TooltipContent } from './tooltip';\n\nconst MAX_CHAR_LIMIT = 140;\nconst MaxCharLimitExceededMessage = 'Max 140 characters allowed.';\n\ntype SearchProps = {\n isEditable?: boolean;\n gjsModel: any;\n performInteraction: (payload: Record<string, any>) => Promise<void>;\n};\n\nexport function renderSearch({ gjsModel, performInteraction }: SearchProps) {\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const [componentData, setComponentData] = useState({ ...gjsModel.get('componentProps') });\n const { placeholder, affectedComponents = [], className = '' } = componentData;\n const initialSearchText = componentData.searchText || '';\n\n const [attributes, setAttributes] = useState({ ...gjsModel.get('attributes') });\n const [searchQuery, setSearchQuery] = useState(initialSearchText);\n const [isApplying, setIsApplying] = useState(false);\n\n const isBusy = attributes.interactionApiInProgress || isApplying;\n const showClear = !!searchQuery && !isBusy;\n\n useEffect(() => {\n function updateComponentData() {\n setComponentData({ ...gjsModel.get('componentProps') });\n }\n\n function updateAttributes() {\n setAttributes({ ...gjsModel.get('attributes') });\n }\n\n gjsModel.on('change:componentProps', updateComponentData);\n gjsModel.on('change:attributes', updateAttributes);\n\n return () => {\n gjsModel.off('change:componentProps', updateComponentData);\n gjsModel.off('change:attributes', updateAttributes);\n };\n }, [gjsModel]);\n\n async function applySearch(query: string) {\n if (query.length > MAX_CHAR_LIMIT) {\n return;\n }\n\n setIsApplying(true);\n\n try {\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n searchText: query,\n });\n\n const id = gjsModel.get('id');\n\n await performInteraction({\n interactionType: 'search',\n id,\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n });\n } finally {\n setIsApplying(false);\n }\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === 'Enter') {\n applySearch(searchQuery.trim());\n }\n }\n\n function handleSearchIconClick() {\n applySearch(searchQuery.trim());\n }\n\n function handleClear() {\n setSearchQuery('');\n applySearch('');\n }\n\n return (\n <div ref={wrapperRef} className={`flex items-center gap-2 p-2 ${className}`}>\n <div\n className={`relative transition-all duration-200 ease-in-out ${\n searchQuery ? 'w-[320px]' : 'w-[280px]'\n }`}\n style={{ backgroundColor: '#fff' }}\n >\n <div>\n <Input\n type=\"text\"\n data-slot=\"search-input\"\n placeholder={'Search...'}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n onKeyDown={handleKeyDown}\n disabled={isBusy}\n className={`py-2 text-sm rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all duration-200 pl-4 pr-16 w-full`}\n />\n\n {showClear && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute right-10 top-7 -translate-y-1/2 text-gray-400 hover:text-gray-600 transition\"\n aria-label=\"Clear search\"\n >\n <ClearIcon size={16} />\n </button>\n )}\n\n <button\n type=\"button\"\n onClick={handleSearchIconClick}\n disabled={isBusy}\n className=\"absolute right-2 top-7 -translate-y-1/2 text-gray-500 hover:text-blue-600 transition-colors\"\n aria-label=\"Search\"\n >\n {isBusy ? <Loader2Icon size={18} className=\"animate-spin\" /> : <SearchIcon size={18} />}\n </button>\n </div>\n\n {searchQuery.length > MAX_CHAR_LIMIT && (\n <p className=\"absolute left-1 text-xs text-red-600 pl-1 pt-1\">\n {MaxCharLimitExceededMessage}\n </p>\n )}\n </div>\n\n {placeholder && (\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"cursor-pointer text-gray-400 hover:text-gray-600\">\n <InfoIcon size={16} />\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">{placeholder}</TooltipContent>\n </Tooltip>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}