@peak-ai/canvas 1.6.0-rc.21 → 1.6.0-rc.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/GrapesjsCanvas.js CHANGED
@@ -1,27 +1,19 @@
1
- import _extends from"@babel/runtime/helpers/extends";import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _regeneratorRuntime from"@babel/runtime/regenerator";/* eslint-disable no-console *//* eslint-disable @typescript-eslint/no-explicit-any */import React,{useEffect,useRef,useState}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{tailwindCompiledCss}from"./helpers/css";import{datePickerCss}from"./helpers/date-picker";import{extractPageMetadata,getCurrentPage,mergeStyles,normalizeMultiPageJson}from"./helpers/page-utils";import{createGrapesjsShadcnGenericPlugin}from"./plugins/grapejs-plugin";import{StyledEditor}from"./index.styles";import{PageProvider,usePageContext}from"./contexts/PageContext";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";function isEditorCanvasReady(editor){try{var canvas=editor.Canvas;if(!canvas){return false}var canvasDoc=canvas.getDocument==null?void 0:canvas.getDocument();if(!canvasDoc){return false}var canvasBody=canvasDoc.body;if(!canvasBody){return false}return true}catch(_unused){return false}}function safeStoreEditor(_x,_x2,_x3){return _safeStoreEditor.apply(this,arguments)}function _safeStoreEditor(){_safeStoreEditor=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(editor,originalJson,currentPageId){var _editor$Pages,_originalJson$pages,_storedResult$pages,_originalJson$pages2,wrapper,pages,storedResult,pageIndex,updatedPages,reconstructedResult;return _regeneratorRuntime.wrap(function _callee5$(_context5){while(1)switch(_context5.prev=_context5.next){case 0:_context5.prev=0;wrapper=editor.getWrapper();if(wrapper){_context5.next=4;break}return _context5.abrupt("return",null);case 4:pages=((_editor$Pages=editor.Pages)==null||_editor$Pages.getAll==null?void 0:_editor$Pages.getAll())||[];if(!(pages.length===0)){_context5.next=7;break}return _context5.abrupt("return",null);case 7:_context5.next=9;return editor.store();case 9:storedResult=_context5.sent;// Debug logging to understand what's happening
3
- // eslint-disable-next-line no-console
4
- console.log("[DEBUG] safeStoreEditor:",{hasOriginalJson:!!originalJson,isMultiPage:originalJson==null?void 0:originalJson.isMultiPage,currentPageId:currentPageId,originalPagesCount:originalJson==null||(_originalJson$pages=originalJson.pages)==null?void 0:_originalJson$pages.length,storedResultPagesCount:(_storedResult$pages=storedResult.pages)==null?void 0:_storedResult$pages.length,originalPageIds:originalJson==null||(_originalJson$pages2=originalJson.pages)==null?void 0:_originalJson$pages2.map(function(p){return p.id})});if(!(originalJson!=null&&originalJson.isMultiPage&&currentPageId&&originalJson.pages&&Array.isArray(originalJson.pages))){_context5.next=20;break}pageIndex=originalJson.pages.findIndex(function(p){return p.id===currentPageId});// eslint-disable-next-line no-console
5
- console.log("[DEBUG] Multipage reconstruction - pageIndex:",pageIndex);if(!(pageIndex>=0&&storedResult.pages&&storedResult.pages[0])){_context5.next=20;break}updatedPages=[].concat(originalJson.pages);updatedPages[pageIndex]=_extends({},updatedPages[pageIndex],{frames:storedResult.pages[0].frames});reconstructedResult={assets:originalJson.assets||[],dataSources:originalJson.dataSources||[],isMultiPage:originalJson.isMultiPage,pages:updatedPages,styles:originalJson.styles||[],symbols:originalJson.symbols||[]};// eslint-disable-next-line no-console
6
- console.log("[DEBUG] Returning reconstructed multipage result with",reconstructedResult.pages.length,"pages");return _context5.abrupt("return",reconstructedResult);case 20:// eslint-disable-next-line no-console
7
- console.log("[DEBUG] Returning original stored result");return _context5.abrupt("return",storedResult);case 24:_context5.prev=24;_context5.t0=_context5["catch"](0);// eslint-disable-next-line no-console
8
- console.warn("Error during store operation:",_context5.t0);return _context5.abrupt("return",null);case 28:case"end":return _context5.stop()}},_callee5,null,[[0,24]])}));return _safeStoreEditor.apply(this,arguments)}function setComponentProperties(editor,isPreview,isStreaming){if(!editor){return}function setPropertiesRecursively(comp){var isMutable=!isPreview&&!isStreaming;comp.set({editable:isMutable,draggable:isMutable,droppable:isMutable&&comp.getName()!=="Shadcn-generic",selectable:isMutable,hoverable:isMutable,highlightable:isMutable,copyable:false,resizable:false,removable:isMutable,badgable:false});comp.set("attributes",_extends({},comp.get("attributes")||{},{isEditable:isMutable}));if(isMutable){comp.set("toolbar",[{attributes:{"class":"fa fa-arrows"},command:"tlb-move"},{attributes:{"class":"fa fa-trash"},command:"tlb-delete"}])}else{comp.set("toolbar",[])}comp.components().forEach(setPropertiesRecursively)}var wrapper=editor.getWrapper();var components=(wrapper==null?void 0:wrapper.find("*"))||[];components.forEach(setPropertiesRecursively);if(isEditorCanvasReady(editor)){if(isPreview){editor.runCommand("core:preview")}else{editor.stopCommand("core:preview")}}}function convertStyles(stylesArray){return stylesArray.map(function(block){var selectors=Array.isArray(block.selectors)?block.selectors.join(", "):block.selectors;var declarations=Object.entries(block.style).map(function(_ref){var prop=_ref[0],value=_ref[1];return toKebabCase(prop)+": "+value+";"}).join(" ");return selectors+" { "+declarations+" }"}).join("\n")}function createActionCardConfig(action){var icon=action.icon,title=action.title,description=action.description;return{type:"shadcn-generic",componentName:"ActionCard",badgable:false,copyable:false,removable:true,draggable:true,componentProps:{icon:icon,headerContent:title,bodyContent:description}}}function expandActions(node){if(node.type==="shadcn-generic"&&node.componentName==="Actions"){var _node$componentProps;var actions=(_node$componentProps=node.componentProps)==null?void 0:_node$componentProps.actions;if(Array.isArray(actions)&&actions.length>0){return _extends({},node,{type:"div",classes:["dashboard-cards"].concat(node.classes||[]),componentName:undefined,componentProps:undefined,components:actions.map(function(action,i){return _extends({},createActionCardConfig(action),{id:node.id+"--action-card-"+i})})})}return node}if(Array.isArray(node.components)){return _extends({},node,{components:node.components.map(expandActions)})}return node}function setInteracting(renderedComponents,components,inProgress){components.forEach(function(component){var componentId=component.componentId,showLoader=component.showLoader;if(!showLoader){return}var gjsModel=renderedComponents[componentId];if(gjsModel){gjsModel.set("attributes",_extends({},gjsModel.get("attributes"),{interactionApiInProgress:inProgress}))}})}function expandActionsComponent(model,actions){model.components("");actions.forEach(function(action){model.append(createActionCardConfig(action))});model.set("type","div");model.addClass("dashboard-cards");model.set("componentName",undefined);model.set("componentProps",{})}function GrapejsCanvasInternal(_ref2){var _json$pages,_normalizedJson$pages,_pages$;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
1
+ import _extends from"@babel/runtime/helpers/extends";import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _regeneratorRuntime from"@babel/runtime/regenerator";/* eslint-disable @typescript-eslint/no-explicit-any */import React,{useEffect,useRef,useState}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{tailwindCompiledCss}from"./helpers/css";import{datePickerCss}from"./helpers/date-picker";import{extractPageMetadata,getCurrentPage,mergeStyles,normalizeMultiPageJson}from"./helpers/page-utils";import{createGrapesjsShadcnGenericPlugin}from"./plugins/grapejs-plugin";import{StyledEditor}from"./index.styles";import{PageProvider,usePageContext}from"./contexts/PageContext";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";function isEditorCanvasReady(editor){try{var canvas=editor.Canvas;if(!canvas){return false}var canvasDoc=canvas.getDocument==null?void 0:canvas.getDocument();if(!canvasDoc){return false}var canvasBody=canvasDoc.body;if(!canvasBody){return false}return true}catch(_unused){return false}}function safeStoreEditor(_x){return _safeStoreEditor.apply(this,arguments)}function _safeStoreEditor(){_safeStoreEditor=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(editor){var _editor$Pages,wrapper,pages;return _regeneratorRuntime.wrap(function _callee5$(_context5){while(1)switch(_context5.prev=_context5.next){case 0:_context5.prev=0;wrapper=editor.getWrapper();if(wrapper){_context5.next=4;break}return _context5.abrupt("return",null);case 4:pages=((_editor$Pages=editor.Pages)==null||_editor$Pages.getAll==null?void 0:_editor$Pages.getAll())||[];if(!(pages.length===0)){_context5.next=7;break}return _context5.abrupt("return",null);case 7:_context5.next=9;return editor.store();case 9:return _context5.abrupt("return",_context5.sent);case 12:_context5.prev=12;_context5.t0=_context5["catch"](0);// eslint-disable-next-line no-console
3
+ console.warn("Error during store operation:",_context5.t0);return _context5.abrupt("return",null);case 16:case"end":return _context5.stop()}},_callee5,null,[[0,12]])}));return _safeStoreEditor.apply(this,arguments)}function setComponentProperties(editor,isPreview,isStreaming){if(!editor){return}function setPropertiesRecursively(comp){var isMutable=!isPreview&&!isStreaming;comp.set({editable:isMutable,draggable:isMutable,droppable:isMutable&&comp.getName()!=="Shadcn-generic",selectable:isMutable,hoverable:isMutable,highlightable:isMutable,copyable:false,resizable:false,removable:isMutable,badgable:false});comp.set("attributes",_extends({},comp.get("attributes")||{},{isEditable:isMutable}));if(isMutable){comp.set("toolbar",[{attributes:{"class":"fa fa-arrows"},command:"tlb-move"},{attributes:{"class":"fa fa-trash"},command:"tlb-delete"}])}else{comp.set("toolbar",[])}comp.components().forEach(setPropertiesRecursively)}var wrapper=editor.getWrapper();var components=(wrapper==null?void 0:wrapper.find("*"))||[];components.forEach(setPropertiesRecursively);if(isEditorCanvasReady(editor)){if(isPreview){editor.runCommand("core:preview")}else{editor.stopCommand("core:preview")}}}function convertStyles(stylesArray){return stylesArray.map(function(block){var selectors=Array.isArray(block.selectors)?block.selectors.join(", "):block.selectors;var declarations=Object.entries(block.style).map(function(_ref){var prop=_ref[0],value=_ref[1];return toKebabCase(prop)+": "+value+";"}).join(" ");return selectors+" { "+declarations+" }"}).join("\n")}function createActionCardConfig(action){var icon=action.icon,title=action.title,description=action.description;return{type:"shadcn-generic",componentName:"ActionCard",badgable:false,copyable:false,removable:true,draggable:true,componentProps:{icon:icon,headerContent:title,bodyContent:description}}}function expandActions(node){if(node.type==="shadcn-generic"&&node.componentName==="Actions"){var _node$componentProps;var actions=(_node$componentProps=node.componentProps)==null?void 0:_node$componentProps.actions;if(Array.isArray(actions)&&actions.length>0){return _extends({},node,{type:"div",classes:["dashboard-cards"].concat(node.classes||[]),componentName:undefined,componentProps:undefined,components:actions.map(function(action,i){return _extends({},createActionCardConfig(action),{id:node.id+"--action-card-"+i})})})}return node}if(Array.isArray(node.components)){return _extends({},node,{components:node.components.map(expandActions)})}return node}function setInteracting(renderedComponents,components,inProgress){components.forEach(function(component){var componentId=component.componentId,showLoader=component.showLoader;if(!showLoader){return}var gjsModel=renderedComponents[componentId];if(gjsModel){gjsModel.set("attributes",_extends({},gjsModel.get("attributes"),{interactionApiInProgress:inProgress}))}})}function expandActionsComponent(model,actions){model.components("");actions.forEach(function(action){model.append(createActionCardConfig(action))});model.set("type","div");model.addClass("dashboard-cards");model.set("componentName",undefined);model.set("componentProps",{})}function GrapejsCanvasInternal(_ref2){var _pages$;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
9
4
  }:_ref2$newDataNotifier,_ref2$setHasChanged=_ref2.setHasChanged,setHasChanged=_ref2$setHasChanged===void 0?function(){// no op
10
- }:_ref2$setHasChanged,isStreaming=_ref2.isStreaming,_ref2$isModeChangeFro=_ref2.isModeChangeFromToggle,isModeChangeFromToggle=_ref2$isModeChangeFro===void 0?false:_ref2$isModeChangeFro,_ref2$isTemplateView=_ref2.isTemplateView,isTemplateView=_ref2$isTemplateView===void 0?false:_ref2$isTemplateView,externalCurrentPageId=_ref2.currentPageId,externalOnPageChange=_ref2.onPageChange,onRequestPageData=_ref2.onRequestPageData;var pageContext=usePageContext();var normalizedJson=normalizeMultiPageJson(json);// DEBUG: Analyze initial JSON structure
11
- console.log("[GrapejsCanvas] Component initialization debug:");console.log("[GrapejsCanvas] Raw json prop:",JSON.stringify(json,null,2));console.log("[GrapejsCanvas] Normalized json:",JSON.stringify(normalizedJson,null,2));console.log("[GrapejsCanvas] Has pages in raw json:",json!=null&&json.pages?"YES":"NO");console.log("[GrapejsCanvas] Pages count in raw json:",(json==null||(_json$pages=json.pages)==null?void 0:_json$pages.length)||0);console.log("[GrapejsCanvas] Has pages in normalized:",normalizedJson!=null&&normalizedJson.pages?"YES":"NO");console.log("[GrapejsCanvas] Pages count in normalized:",(normalizedJson==null||(_normalizedJson$pages=normalizedJson.pages)==null?void 0:_normalizedJson$pages.length)||0);var pages=normalizedJson!=null&&normalizedJson.pages&&Array.isArray(normalizedJson.pages)?normalizedJson.pages.map(extractPageMetadata):[];var effectiveCurrentPageId=externalCurrentPageId||(pageContext==null?void 0:pageContext.currentPageId)||((_pages$=pages[0])==null?void 0:_pages$.id)||"";console.log("[GrapejsCanvas] Extracted pages:",pages);console.log("[GrapejsCanvas] Effective current page ID:",effectiveCurrentPageId);var editorRef=useRef(null);var editorInstance=useRef(null);var renderedComponents=useRef({});var pageDataCache=useRef({});var currentPageIdRef=useRef(effectiveCurrentPageId);var isStreamingRef=useRef(isStreaming!=null?isStreaming:false);var modeRef=useRef(mode);var isSystemUpdateRef=useRef(false);var lastJsonRef=useRef("");var isEditorAliveRef=useRef(false);var isSettingPropertiesRef=useRef(false);var onRequestPageDataRef=useRef(onRequestPageData);var _useState=useState(false),isTransitioning=_useState[0],setIsTransitioning=_useState[1];useEffect(function(){currentPageIdRef.current=effectiveCurrentPageId},[effectiveCurrentPageId]);useEffect(function(){isStreamingRef.current=isStreaming!=null?isStreaming:false},[isStreaming!=null?isStreaming:false]);useEffect(function(){modeRef.current=mode},[mode]);useEffect(function(){onRequestPageDataRef.current=onRequestPageData},[onRequestPageData]);function notificationHandler(props){if(!props){return true}var compId=props.componentId,_props$newProps=props.newProps,newProps=_props$newProps===void 0?{}:_props$newProps,_props$newAttributes=props.newAttributes,newAttributes=_props$newAttributes===void 0?{}:_props$newAttributes;var model=renderedComponents.current[compId];if(!model){var pageId=currentPageIdRef.current;if(pageId){if(!pageDataCache.current[pageId]){pageDataCache.current[pageId]={}}pageDataCache.current[pageId][compId]={newProps:newProps,newAttributes:newAttributes,timestamp:Date.now()}}return false}// Filter out complex placeholder objects by setting them to null
5
+ }:_ref2$setHasChanged,isStreaming=_ref2.isStreaming,_ref2$isModeChangeFro=_ref2.isModeChangeFromToggle,isModeChangeFromToggle=_ref2$isModeChangeFro===void 0?false:_ref2$isModeChangeFro,_ref2$isTemplateView=_ref2.isTemplateView,isTemplateView=_ref2$isTemplateView===void 0?false:_ref2$isTemplateView,externalCurrentPageId=_ref2.currentPageId,externalOnPageChange=_ref2.onPageChange,onRequestPageData=_ref2.onRequestPageData;var pageContext=usePageContext();var normalizedJson=normalizeMultiPageJson(json);var pages=normalizedJson.pages.map(extractPageMetadata);var effectiveCurrentPageId=externalCurrentPageId||(pageContext==null?void 0:pageContext.currentPageId)||((_pages$=pages[0])==null?void 0:_pages$.id)||"";var editorRef=useRef(null);var editorInstance=useRef(null);var renderedComponents=useRef({});var pageDataCache=useRef({});var currentPageIdRef=useRef(effectiveCurrentPageId);var isStreamingRef=useRef(isStreaming!=null?isStreaming:false);var modeRef=useRef(mode);var isSystemUpdateRef=useRef(false);var lastJsonRef=useRef("");var isEditorAliveRef=useRef(false);var isSettingPropertiesRef=useRef(false);var onRequestPageDataRef=useRef(onRequestPageData);var _useState=useState(false),isTransitioning=_useState[0],setIsTransitioning=_useState[1];useEffect(function(){currentPageIdRef.current=effectiveCurrentPageId},[effectiveCurrentPageId]);useEffect(function(){isStreamingRef.current=isStreaming!=null?isStreaming:false},[isStreaming!=null?isStreaming:false]);useEffect(function(){modeRef.current=mode},[mode]);useEffect(function(){onRequestPageDataRef.current=onRequestPageData},[onRequestPageData]);function notificationHandler(props){if(!props){return true}var compId=props.componentId,_props$newProps=props.newProps,newProps=_props$newProps===void 0?{}:_props$newProps,_props$newAttributes=props.newAttributes,newAttributes=_props$newAttributes===void 0?{}:_props$newAttributes;var model=renderedComponents.current[compId];if(!model){var pageId=currentPageIdRef.current;if(pageId){if(!pageDataCache.current[pageId]){pageDataCache.current[pageId]={}}pageDataCache.current[pageId][compId]={newProps:newProps,newAttributes:newAttributes,timestamp:Date.now()}}return false}// Filter out complex placeholder objects by setting them to null
12
6
  // This ensures placeholder values are properly cleared and don't cause stale data issues
13
7
  var filteredProps=_extends({},newProps);Object.keys(filteredProps).forEach(function(key){var value=filteredProps[key];if(value&&typeof value==="object"&&value.name==="__peak_placeholder"){filteredProps[key]=null}});var parsedNewProps=_extends({},filteredProps);if(filteredProps.pagination){parsedNewProps.pagination=_extends({},model.get("componentProps").pagination||{},filteredProps.pagination)}// Handle Actions component: expand into ActionCards when data arrives via streaming
14
8
  var isActionsComponent=model.get("componentName")==="Actions";var hasValidActionsData=parsedNewProps.actions&&parsedNewProps.actions!==null&&Array.isArray(parsedNewProps.actions)&&parsedNewProps.actions.length>0;if(isActionsComponent&&hasValidActionsData){var _model$components$at;var isAlreadyExpanded=model.components().length>0&&((_model$components$at=model.components().at(0))==null?void 0:_model$components$at.get("componentName"))==="ActionCard";if(!isAlreadyExpanded&&editorInstance.current&&isEditorAliveRef.current){expandActionsComponent(model,parsedNewProps.actions);return true}}model.set("componentProps",_extends({},model.get("componentProps"),parsedNewProps));// Set loading: false when data arrives
15
9
  var modelId=model.get("id");// eslint-disable-next-line no-console
16
10
  console.log("[GrapesJS Loading] Setting loading: false for component "+modelId+" (data arrived)");model.set("attributes",_extends({},model.get("attributes"),newAttributes,{loading:false}));if(model.view){model.view.render()}return true}useEffect(function(){newDataNotifier(notificationHandler)},[]);function handleNavigateToPage(targetPageId){if(externalOnPageChange){externalOnPageChange(targetPageId)}if(pageContext){pageContext.navigateToPage(targetPageId)}if(!pageContext&&!externalOnPageChange){// eslint-disable-next-line no-console
17
- console.warn("Page navigation requested but no navigation handler available")}}function performInteractionWrapper(_x4){return _performInteractionWrapper.apply(this,arguments)}function _performInteractionWrapper(){_performInteractionWrapper=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(payload){var updatedJson,apiResponse,componentUpdates;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:updatedJson=null;if(!editorInstance.current){_context4.next=9;break}// DEBUG: Check what's being passed to safeStoreEditor
18
- console.log("[performInteractionWrapper] About to call safeStoreEditor with:");console.log("[performInteractionWrapper] json:",JSON.stringify(json,null,2));console.log("[performInteractionWrapper] effectiveCurrentPageId:",effectiveCurrentPageId);_context4.next=7;return safeStoreEditor(editorInstance.current,json,effectiveCurrentPageId);case 7:updatedJson=_context4.sent;console.log("[performInteractionWrapper] safeStoreEditor returned:",JSON.stringify(updatedJson,null,2));case 9:setInteracting(renderedComponents.current,payload.affectedComponents,true);_context4.prev=10;_context4.next=13;return performInteraction(_extends({},payload,{json:updatedJson}));case 13:apiResponse=_context4.sent;componentUpdates=apiResponse||{};Object.entries(componentUpdates).forEach(function(_ref8){var key=_ref8[0],value=_ref8[1];var model=renderedComponents.current[key];if(model){model.set("attributes",_extends({},model.get("attributes"),{error:undefined}));model.set("componentProps",_extends({},model.get("componentProps"),value,{error:undefined,isMissing:undefined}))}});return _context4.abrupt("return",componentUpdates);case 19:_context4.prev=19;_context4.t0=_context4["catch"](10);payload.affectedComponents.forEach(function(componentId){var model=renderedComponents.current[componentId];if(model){var errorMessage=_context4.t0 instanceof Error?_context4.t0.message:"Something went wrong. Please try again.";model.set("attributes",_extends({},model.get("attributes"),{error:errorMessage}));model.set("componentProps",_extends({},model.get("componentProps"),{error:errorMessage,isMissing:undefined}))}});throw _context4.t0;case 23:_context4.prev=23;setInteracting(renderedComponents.current,payload.affectedComponents,false);return _context4.finish(23);case 26:case"end":return _context4.stop()}},_callee4,null,[[10,19,23,26]])}));return _performInteractionWrapper.apply(this,arguments)}useEffect(function(){if(!editorRef.current){return function(){// no op
19
- }}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(modeRef,performInteractionWrapper,renderedComponents.current,setHasChanged,isTemplateView,isStreamingRef,handleNavigateToPage)],storageManager:{type:"none"},richTextEditor:{actions:["bold","italic","underline","strikethrough"]},canvas:{customBadgeLabel:function customBadgeLabel(component){var tagName=component.get("tagName");return tagName==="body"?"":tagName||""}}});isEditorAliveRef.current=true;var injectionAttempts=0;function injectStylesEarly(){var _editor$Canvas;var iframeDoc=(_editor$Canvas=editor.Canvas)==null||_editor$Canvas.getDocument==null?void 0:_editor$Canvas.getDocument();if(iframeDoc&&iframeDoc.head){if(!iframeDoc.head.querySelector("[data-grapesjs-styles]")){var style=iframeDoc.createElement("style");var fullCss="\n "+tailwindCompiledCss+"\n "+datePickerCss+"\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n ";style.innerHTML=fullCss;style.setAttribute("type","text/css");style.setAttribute("data-grapesjs-styles","true");iframeDoc.head.appendChild(style)}}else if(injectionAttempts<50){injectionAttempts+=1;requestAnimationFrame(injectStylesEarly)}}requestAnimationFrame(injectStylesEarly);function checkDirty(){return _checkDirty.apply(this,arguments)}function _checkDirty(){_checkDirty=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(){var stored,newJson;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:if(!(isStreamingRef.current||isSystemUpdateRef.current)){_context2.next=2;break}return _context2.abrupt("return");case 2:if(!(!isEditorAliveRef.current||!editorInstance.current)){_context2.next=4;break}return _context2.abrupt("return");case 4:stored=null;_context2.next=7;return safeStoreEditor(editorInstance.current,json,effectiveCurrentPageId);case 7:stored=_context2.sent;if(stored){_context2.next=10;break}return _context2.abrupt("return");case 10:newJson=JSON.stringify(stored);if(newJson!==lastJsonRef.current){setHasChanged(true);lastJsonRef.current=newJson}case 12:case"end":return _context2.stop()}},_callee2)}));return _checkDirty.apply(this,arguments)}var debouncedCheckDirty=function(){var timeout=null;return function(){if(timeout){clearTimeout(timeout)}timeout=setTimeout(checkDirty,200)}}();["component:add","component:remove","component:update:content","style:update","component:drag:end","rte:change"].forEach(function(evt){editor.on(evt,debouncedCheckDirty)});editor.on("component:update",function(model,prop){if(["attributes","componentProps","content"].includes(prop)){debouncedCheckDirty()}});// Tailwind CSS rules aren't fully added to our component
11
+ console.warn("Page navigation requested but no navigation handler available")}}function performInteractionWrapper(_x2){return _performInteractionWrapper.apply(this,arguments)}function _performInteractionWrapper(){_performInteractionWrapper=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(payload){var updatedJson,apiResponse,componentUpdates;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:updatedJson=null;if(!editorInstance.current){_context4.next=5;break}_context4.next=4;return safeStoreEditor(editorInstance.current);case 4:updatedJson=_context4.sent;case 5:setInteracting(renderedComponents.current,payload.affectedComponents,true);_context4.prev=6;_context4.next=9;return performInteraction(_extends({},payload,{json:updatedJson}));case 9:apiResponse=_context4.sent;componentUpdates=apiResponse||{};Object.entries(componentUpdates).forEach(function(_ref8){var key=_ref8[0],value=_ref8[1];var model=renderedComponents.current[key];if(model){model.set("attributes",_extends({},model.get("attributes"),{error:undefined}));model.set("componentProps",_extends({},model.get("componentProps"),value,{error:undefined,isMissing:undefined}))}});return _context4.abrupt("return",componentUpdates);case 15:_context4.prev=15;_context4.t0=_context4["catch"](6);payload.affectedComponents.forEach(function(componentId){var model=renderedComponents.current[componentId];if(model){var errorMessage=_context4.t0 instanceof Error?_context4.t0.message:"Something went wrong. Please try again.";model.set("attributes",_extends({},model.get("attributes"),{error:errorMessage}));model.set("componentProps",_extends({},model.get("componentProps"),{error:errorMessage,isMissing:undefined}))}});throw _context4.t0;case 19:_context4.prev=19;setInteracting(renderedComponents.current,payload.affectedComponents,false);return _context4.finish(19);case 22:case"end":return _context4.stop()}},_callee4,null,[[6,15,19,22]])}));return _performInteractionWrapper.apply(this,arguments)}useEffect(function(){if(!editorRef.current){return function(){// no op
12
+ }}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(modeRef,performInteractionWrapper,renderedComponents.current,setHasChanged,isTemplateView,isStreamingRef,handleNavigateToPage)],storageManager:{type:"none"},richTextEditor:{actions:["bold","italic","underline","strikethrough"]},canvas:{customBadgeLabel:function customBadgeLabel(component){var tagName=component.get("tagName");return tagName==="body"?"":tagName||""}}});isEditorAliveRef.current=true;var injectionAttempts=0;function injectStylesEarly(){var _editor$Canvas;var iframeDoc=(_editor$Canvas=editor.Canvas)==null||_editor$Canvas.getDocument==null?void 0:_editor$Canvas.getDocument();if(iframeDoc&&iframeDoc.head){if(!iframeDoc.head.querySelector("[data-grapesjs-styles]")){var style=iframeDoc.createElement("style");var fullCss="\n "+tailwindCompiledCss+"\n "+datePickerCss+"\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n ";style.innerHTML=fullCss;style.setAttribute("type","text/css");style.setAttribute("data-grapesjs-styles","true");iframeDoc.head.appendChild(style)}}else if(injectionAttempts<50){injectionAttempts+=1;requestAnimationFrame(injectStylesEarly)}}requestAnimationFrame(injectStylesEarly);function checkDirty(){return _checkDirty.apply(this,arguments)}function _checkDirty(){_checkDirty=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(){var stored,newJson;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:if(!(isStreamingRef.current||isSystemUpdateRef.current)){_context2.next=2;break}return _context2.abrupt("return");case 2:if(!(!isEditorAliveRef.current||!editorInstance.current)){_context2.next=4;break}return _context2.abrupt("return");case 4:stored=null;_context2.next=7;return safeStoreEditor(editorInstance.current);case 7:stored=_context2.sent;if(stored){_context2.next=10;break}return _context2.abrupt("return");case 10:newJson=JSON.stringify(stored);if(newJson!==lastJsonRef.current){setHasChanged(true);lastJsonRef.current=newJson}case 12:case"end":return _context2.stop()}},_callee2)}));return _checkDirty.apply(this,arguments)}var debouncedCheckDirty=function(){var timeout=null;return function(){if(timeout){clearTimeout(timeout)}timeout=setTimeout(checkDirty,200)}}();["component:add","component:remove","component:update:content","style:update","component:drag:end","rte:change"].forEach(function(evt){editor.on(evt,debouncedCheckDirty)});editor.on("component:update",function(model,prop){if(["attributes","componentProps","content"].includes(prop)){debouncedCheckDirty()}});// Tailwind CSS rules aren't fully added to our component
20
13
  // So, adding them from here!
21
- editor.on("load",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var canvasDoc,canvasHead,style,fullCss,storeResult;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:canvasDoc=editor.Canvas.getDocument();canvasHead=canvasDoc.head;if(!canvasHead.querySelector("[data-grapesjs-styles]")){style=canvasDoc.createElement("style");fullCss="\n "+tailwindCompiledCss+"\n "+datePickerCss+"\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n ";style.innerHTML=fullCss;style.setAttribute("type","text/css");style.setAttribute("data-grapesjs-styles","true");canvasHead.appendChild(style)}isSystemUpdateRef.current=true;_context.next=6;return safeStoreEditor(editor,json,effectiveCurrentPageId);case 6:storeResult=_context.sent;if(storeResult){lastJsonRef.current=JSON.stringify(storeResult)}isSystemUpdateRef.current=false;setComponentProperties(editor,currentMode==="preview",isStreamingRef.current);case 10:case"end":return _context.stop()}},_callee)})));editorInstance.current=editor;if(setEditor){setEditor(editor)}TypesToRegister.forEach(function(_ref4){var type=_ref4.type,tagName=_ref4.tagName;if(!editor.DomComponents.getType(type)){editor.DomComponents.addType(type,{model:{defaults:{tagName:tagName}},view:{}})}});return function cleanup(){editor.destroy();isEditorAliveRef.current=false}},[]);useEffect(function(){var _json$pages2;if(json&&((_json$pages2=json.pages)==null?void 0:_json$pages2.length)>0){var _currentPage$frames,_editorInstance$curre3;if(!isEditorAliveRef.current||!editorInstance.current){return}var pageNormalizedJson=normalizeMultiPageJson(json);if(!(pageNormalizedJson!=null&&pageNormalizedJson.pages)||!Array.isArray(pageNormalizedJson.pages)){// eslint-disable-next-line no-console
22
- console.warn("Invalid or missing pages in normalized JSON");return}var currentPage=getCurrentPage(pageNormalizedJson.pages,effectiveCurrentPageId);if(!currentPage||!((_currentPage$frames=currentPage.frames)!=null&&_currentPage$frames.length)){// eslint-disable-next-line no-console
14
+ editor.on("load",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var canvasDoc,canvasHead,style,fullCss,storeResult;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:canvasDoc=editor.Canvas.getDocument();canvasHead=canvasDoc.head;if(!canvasHead.querySelector("[data-grapesjs-styles]")){style=canvasDoc.createElement("style");fullCss="\n "+tailwindCompiledCss+"\n "+datePickerCss+"\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n ";style.innerHTML=fullCss;style.setAttribute("type","text/css");style.setAttribute("data-grapesjs-styles","true");canvasHead.appendChild(style)}isSystemUpdateRef.current=true;_context.next=6;return safeStoreEditor(editor);case 6:storeResult=_context.sent;if(storeResult){lastJsonRef.current=JSON.stringify(storeResult)}isSystemUpdateRef.current=false;setComponentProperties(editor,currentMode==="preview",isStreamingRef.current);case 10:case"end":return _context.stop()}},_callee)})));editorInstance.current=editor;if(setEditor){setEditor(editor)}TypesToRegister.forEach(function(_ref4){var type=_ref4.type,tagName=_ref4.tagName;if(!editor.DomComponents.getType(type)){editor.DomComponents.addType(type,{model:{defaults:{tagName:tagName}},view:{}})}});return function cleanup(){editor.destroy();isEditorAliveRef.current=false}},[]);useEffect(function(){var _json$pages;if(json&&((_json$pages=json.pages)==null?void 0:_json$pages.length)>0){var _currentPage$frames,_editorInstance$curre3;if(!isEditorAliveRef.current||!editorInstance.current){return}var pageNormalizedJson=normalizeMultiPageJson(json);var currentPage=getCurrentPage(pageNormalizedJson.pages,effectiveCurrentPageId);if(!currentPage||!((_currentPage$frames=currentPage.frames)!=null&&_currentPage$frames.length)){// eslint-disable-next-line no-console
23
15
  console.warn("No valid page found to render");return}isSystemUpdateRef.current=true;var raw=currentPage.frames[0].component;var processed=expandActions(raw);try{var _editorInstance$curre;(_editorInstance$curre=editorInstance.current)==null||_editorInstance$curre.setComponents(processed);setTimeout(function(){if(editorInstance.current&&isEditorAliveRef.current){var _editorInstance$curre2;var domComponents=(_editorInstance$curre2=editorInstance.current)==null?void 0:_editorInstance$curre2.DomComponents;if(domComponents){var _domComponents$getWra;var allComponents=domComponents==null||(_domComponents$getWra=domComponents.getWrapper())==null?void 0:_domComponents$getWra.findType("shadcn-generic");allComponents==null||allComponents.forEach(function(comp){if(comp.get("componentName")==="Tabs"){var _comp$view;(_comp$view=comp.view)==null||_comp$view.render()}})}}},100)}catch(error){// eslint-disable-next-line no-console
24
16
  console.error("Error during component restoration:",error)}var globalStyles=pageNormalizedJson.styles||[];var pageStyles=currentPage.styles||[];var mergedStyles=mergeStyles(globalStyles,pageStyles);var cssText=convertStyles(mergedStyles);(_editorInstance$curre3=editorInstance.current)==null||_editorInstance$curre3.setStyle(cssText);if(onRequestPageDataRef.current&&currentPage.dataQueries){onRequestPageDataRef.current(currentPage.id,currentPage.dataQueries)}if(editorInstance.current){setComponentProperties(editorInstance.current,mode==="preview",isStreaming);setTimeout(function(){if(editorInstance.current&&isEditorAliveRef.current&&mode==="preview"){setComponentProperties(editorInstance.current,true,isStreaming)}},50)}setTimeout(function(){if(currentPage&&pageDataCache.current[currentPage.id]){var cachedData=pageDataCache.current[currentPage.id];Object.entries(cachedData).forEach(function(_ref5){var componentId=_ref5[0],data=_ref5[1];var model=renderedComponents.current[componentId];if(model&&data){if(data.newProps){model.set("componentProps",_extends({},model.get("componentProps"),data.newProps))}// eslint-disable-next-line no-console
25
17
  console.log("[GrapesJS Loading] Setting loading: false for component "+componentId+" (cached data applied)");var updatedAttributes=_extends({},model.get("attributes"),data.newAttributes||{},{loading:false});model.set("attributes",updatedAttributes);if(model.view){model.view.render()}}});delete pageDataCache.current[currentPage.id]}},150);var cacheCheckInterval=setInterval(function(){if(!currentPage||!pageDataCache.current[currentPage.id]){return}var cachedData=pageDataCache.current[currentPage.id];var appliedAny=false;Object.entries(cachedData).forEach(function(_ref6){var componentId=_ref6[0],data=_ref6[1];var model=renderedComponents.current[componentId];if(model&&data){if(data.newProps){model.set("componentProps",_extends({},model.get("componentProps"),data.newProps))}// eslint-disable-next-line no-console
26
- console.log("[GrapesJS Loading] Setting loading: false for component "+componentId+" (cached data timeout applied)");var updatedAttributes=_extends({},model.get("attributes"),data.newAttributes||{},{loading:false});model.set("attributes",updatedAttributes);if(model.view){model.view.render()}appliedAny=true}});if(appliedAny){Object.keys(cachedData).forEach(function(componentId){if(renderedComponents.current[componentId]){delete cachedData[componentId]}});if(Object.keys(cachedData).length===0){delete pageDataCache.current[currentPage.id]}}},100);setTimeout(function(){clearInterval(cacheCheckInterval)},5000);setTimeout(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(){var storeResult;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:if(!(editorInstance.current&&isEditorAliveRef.current)){_context3.next=6;break}_context3.next=3;return safeStoreEditor(editorInstance.current,json,effectiveCurrentPageId);case 3:storeResult=_context3.sent;if(storeResult){lastJsonRef.current=JSON.stringify(storeResult)}isSystemUpdateRef.current=false;case 6:case"end":return _context3.stop()}},_callee3)})),100)}},[json,effectiveCurrentPageId]);useEffect(function(){if(mode&&editorInstance.current&&isEditorAliveRef.current&&!isSettingPropertiesRef.current){isSettingPropertiesRef.current=true;isSystemUpdateRef.current=true;if(isModeChangeFromToggle){setIsTransitioning(true)}setComponentProperties(editorInstance.current,mode==="preview",isStreaming!=null?isStreaming:false);var wrapper=editorInstance.current.getWrapper();var shadcnComponents=(wrapper==null?void 0:wrapper.find("[data-gjs-type=\"shadcn-generic\"]"))||[];shadcnComponents.forEach(function(comp){if(comp.view&&typeof comp.view.render==="function"){var currentAttrs=comp.get("attributes")||{};var isCurrentlyLoading=currentAttrs.loading||currentAttrs.interactionApiInProgress;if(isCurrentlyLoading){comp.set("attributes",_extends({},currentAttrs,{loading:true}))}comp.view.render()}});setTimeout(function(){if(isEditorAliveRef.current){isSystemUpdateRef.current=false;isSettingPropertiesRef.current=false;setIsTransitioning(false)}},50)}},[mode,isModeChangeFromToggle,isStreaming!=null?isStreaming:false]);return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(StyledEditor,{}),/*#__PURE__*/_jsx("div",{ref:editorRef,id:"grapesjs-editor",style:{opacity:isTransitioning?0:1,transition:"opacity 0.15s ease-in-out"}})]})}function GrapejsCanvas(props){var _pages$2;var existingContext=usePageContext();if(existingContext){return/*#__PURE__*/_jsx(GrapejsCanvasInternal,_extends({},props))}var normalizedJson=normalizeMultiPageJson(props.json);var pages=normalizedJson!=null&&normalizedJson.pages&&Array.isArray(normalizedJson.pages)?normalizedJson.pages.map(extractPageMetadata):[];var initialPageId=props.currentPageId||((_pages$2=pages[0])==null?void 0:_pages$2.id)||"";return/*#__PURE__*/_jsx(PageProvider,{pages:pages,initialPageId:initialPageId,onPageChange:props.onPageChange,children:/*#__PURE__*/_jsx(GrapejsCanvasInternal,_extends({},props))})}export default GrapejsCanvas;
18
+ console.log("[GrapesJS Loading] Setting loading: false for component "+componentId+" (cached data timeout applied)");var updatedAttributes=_extends({},model.get("attributes"),data.newAttributes||{},{loading:false});model.set("attributes",updatedAttributes);if(model.view){model.view.render()}appliedAny=true}});if(appliedAny){Object.keys(cachedData).forEach(function(componentId){if(renderedComponents.current[componentId]){delete cachedData[componentId]}});if(Object.keys(cachedData).length===0){delete pageDataCache.current[currentPage.id]}}},100);setTimeout(function(){clearInterval(cacheCheckInterval)},5000);setTimeout(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(){var storeResult;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:if(!(editorInstance.current&&isEditorAliveRef.current)){_context3.next=6;break}_context3.next=3;return safeStoreEditor(editorInstance.current);case 3:storeResult=_context3.sent;if(storeResult){lastJsonRef.current=JSON.stringify(storeResult)}isSystemUpdateRef.current=false;case 6:case"end":return _context3.stop()}},_callee3)})),100)}},[json,effectiveCurrentPageId]);useEffect(function(){if(mode&&editorInstance.current&&isEditorAliveRef.current&&!isSettingPropertiesRef.current){isSettingPropertiesRef.current=true;isSystemUpdateRef.current=true;if(isModeChangeFromToggle){setIsTransitioning(true)}setComponentProperties(editorInstance.current,mode==="preview",isStreaming!=null?isStreaming:false);var wrapper=editorInstance.current.getWrapper();var shadcnComponents=(wrapper==null?void 0:wrapper.find("[data-gjs-type=\"shadcn-generic\"]"))||[];shadcnComponents.forEach(function(comp){if(comp.view&&typeof comp.view.render==="function"){var currentAttrs=comp.get("attributes")||{};var isCurrentlyLoading=currentAttrs.loading||currentAttrs.interactionApiInProgress;if(isCurrentlyLoading){comp.set("attributes",_extends({},currentAttrs,{loading:true}))}comp.view.render()}});setTimeout(function(){if(isEditorAliveRef.current){isSystemUpdateRef.current=false;isSettingPropertiesRef.current=false;setIsTransitioning(false)}},50)}},[mode,isModeChangeFromToggle,isStreaming!=null?isStreaming:false]);return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(StyledEditor,{}),/*#__PURE__*/_jsx("div",{ref:editorRef,id:"grapesjs-editor",style:{opacity:isTransitioning?0:1,transition:"opacity 0.15s ease-in-out"}})]})}function GrapejsCanvas(props){var _pages$2;var existingContext=usePageContext();if(existingContext){return/*#__PURE__*/_jsx(GrapejsCanvasInternal,_extends({},props))}var normalizedJson=normalizeMultiPageJson(props.json);var pages=normalizedJson.pages.map(extractPageMetadata);var initialPageId=props.currentPageId||((_pages$2=pages[0])==null?void 0:_pages$2.id)||"";return/*#__PURE__*/_jsx(PageProvider,{pages:pages,initialPageId:initialPageId,onPageChange:props.onPageChange,children:/*#__PURE__*/_jsx(GrapejsCanvasInternal,_extends({},props))})}export default GrapejsCanvas;
27
19
  //# sourceMappingURL=GrapesjsCanvas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GrapesjsCanvas.js","names":["React","useEffect","useRef","useState","grapesjs","tailwind","TypesToRegister","toKebabCase","tailwindCompiledCss","datePickerCss","extractPageMetadata","getCurrentPage","mergeStyles","normalizeMultiPageJson","createGrapesjsShadcnGenericPlugin","StyledEditor","PageProvider","usePageContext","jsx","_jsx","jsxs","_jsxs","isEditorCanvasReady","editor","canvas","Canvas","canvasDoc","getDocument","canvasBody","body","_unused","safeStoreEditor","_x","_x2","_x3","_safeStoreEditor","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","originalJson","currentPageId","_editor$Pages","_originalJson$pages","_storedResult$pages","_originalJson$pages2","wrapper","pages","storedResult","pageIndex","updatedPages","reconstructedResult","wrap","_callee5$","_context5","prev","next","getWrapper","abrupt","Pages","getAll","length","store","sent","console","log","hasOriginalJson","isMultiPage","originalPagesCount","storedResultPagesCount","originalPageIds","map","p","id","Array","isArray","findIndex","concat","_extends","frames","assets","dataSources","styles","symbols","t0","warn","stop","setComponentProperties","isPreview","isStreaming","setPropertiesRecursively","comp","isMutable","set","editable","draggable","droppable","getName","selectable","hoverable","highlightable","copyable","resizable","removable","badgable","get","isEditable","attributes","command","components","forEach","find","runCommand","stopCommand","convertStyles","stylesArray","block","selectors","join","declarations","Object","entries","style","_ref","prop","value","createActionCardConfig","action","icon","title","description","type","componentName","componentProps","headerContent","bodyContent","expandActions","node","_node$componentProps","actions","classes","undefined","i","setInteracting","renderedComponents","inProgress","component","componentId","showLoader","gjsModel","interactionApiInProgress","expandActionsComponent","model","append","addClass","GrapejsCanvasInternal","_ref2","_json$pages","_normalizedJson$pages","_pages$","json","_ref2$mode","mode","setEditor","performInteraction","_ref2$newDataNotifier","newDataNotifier","_ref2$setHasChanged","setHasChanged","_ref2$isModeChangeFro","isModeChangeFromToggle","_ref2$isTemplateView","isTemplateView","externalCurrentPageId","externalOnPageChange","onPageChange","onRequestPageData","pageContext","normalizedJson","JSON","stringify","effectiveCurrentPageId","editorRef","editorInstance","pageDataCache","currentPageIdRef","isStreamingRef","modeRef","isSystemUpdateRef","lastJsonRef","isEditorAliveRef","isSettingPropertiesRef","onRequestPageDataRef","_useState","isTransitioning","setIsTransitioning","current","notificationHandler","props","compId","_props$newProps","newProps","_props$newAttributes","newAttributes","pageId","timestamp","Date","now","filteredProps","keys","key","name","parsedNewProps","pagination","isActionsComponent","hasValidActionsData","_model$components$at","isAlreadyExpanded","at","modelId","loading","view","render","handleNavigateToPage","targetPageId","navigateToPage","performInteractionWrapper","_x4","_performInteractionWrapper","_callee4","payload","updatedJson","apiResponse","componentUpdates","_callee4$","_context4","affectedComponents","_ref8","error","isMissing","errorMessage","Error","message","finish","destroy","currentMode","init","container","height","plugins","storageManager","richTextEditor","customBadgeLabel","tagName","injectionAttempts","injectStylesEarly","_editor$Canvas","iframeDoc","head","querySelector","createElement","fullCss","innerHTML","setAttribute","appendChild","requestAnimationFrame","checkDirty","_checkDirty","_callee2","stored","newJson","_callee2$","_context2","debouncedCheckDirty","timeout","clearTimeout","setTimeout","evt","on","includes","_callee","canvasHead","storeResult","_callee$","_context","_ref4","DomComponents","getType","addType","defaults","cleanup","_json$pages2","_currentPage$frames","_editorInstance$curre3","pageNormalizedJson","currentPage","raw","processed","_editorInstance$curre","setComponents","_editorInstance$curre2","domComponents","_domComponents$getWra","allComponents","findType","_comp$view","globalStyles","pageStyles","mergedStyles","cssText","setStyle","dataQueries","cachedData","_ref5","data","updatedAttributes","cacheCheckInterval","setInterval","appliedAny","_ref6","clearInterval","_callee3","_callee3$","_context3","shadcnComponents","currentAttrs","isCurrentlyLoading","Fragment","children","ref","opacity","transition","GrapejsCanvas","_pages$2","existingContext","initialPageId"],"sources":["../src/GrapesjsCanvas.tsx"],"sourcesContent":["/* eslint-disable no-console */\n/* 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';\n\nimport { TypesToRegister } from './constants';\nimport { toKebabCase } from './helpers';\nimport { tailwindCompiledCss } from './helpers/css';\nimport { datePickerCss } from './helpers/date-picker';\nimport {\n extractPageMetadata,\n getCurrentPage,\n mergeStyles,\n normalizeMultiPageJson,\n} from './helpers/page-utils';\nimport { createGrapesjsShadcnGenericPlugin } from './plugins/grapejs-plugin';\nimport { StyledEditor } from './index.styles';\nimport type { PageAwareProps } from './types/page';\nimport { PageProvider, usePageContext } from './contexts/PageContext';\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 isModeChangeFromToggle?: boolean;\n isTemplateView?: boolean;\n} & PageAwareProps;\n\nfunction isEditorCanvasReady(editor: Editor): boolean {\n try {\n const canvas = editor.Canvas;\n\n if (!canvas) {\n return false;\n }\n\n const canvasDoc = canvas.getDocument?.();\n\n if (!canvasDoc) {\n return false;\n }\n\n const canvasBody = canvasDoc.body;\n\n if (!canvasBody) {\n return false;\n }\n\n return true;\n } catch {\n return false;\n }\n}\n\nasync function safeStoreEditor(\n editor: Editor,\n originalJson?: any,\n currentPageId?: string,\n): Promise<any | null> {\n try {\n const wrapper = editor.getWrapper();\n\n if (!wrapper) {\n return null;\n }\n\n const pages = editor.Pages?.getAll?.() || [];\n\n if (pages.length === 0) {\n return null;\n }\n\n const storedResult = await editor.store();\n\n // Debug logging to understand what's happening\n // eslint-disable-next-line no-console\n console.log('[DEBUG] safeStoreEditor:', {\n hasOriginalJson: !!originalJson,\n isMultiPage: originalJson?.isMultiPage,\n currentPageId,\n originalPagesCount: originalJson?.pages?.length,\n storedResultPagesCount: storedResult.pages?.length,\n originalPageIds: originalJson?.pages?.map((p: any) => p.id),\n });\n\n if (\n originalJson?.isMultiPage &&\n currentPageId &&\n originalJson.pages &&\n Array.isArray(originalJson.pages)\n ) {\n const pageIndex = originalJson.pages.findIndex((p: any) => p.id === currentPageId);\n\n // eslint-disable-next-line no-console\n console.log('[DEBUG] Multipage reconstruction - pageIndex:', pageIndex);\n\n if (pageIndex >= 0 && storedResult.pages && storedResult.pages[0]) {\n const updatedPages = [...originalJson.pages];\n updatedPages[pageIndex] = {\n ...updatedPages[pageIndex],\n frames: storedResult.pages[0].frames,\n };\n\n const reconstructedResult = {\n assets: originalJson.assets || [],\n dataSources: originalJson.dataSources || [],\n isMultiPage: originalJson.isMultiPage,\n pages: updatedPages,\n styles: originalJson.styles || [],\n symbols: originalJson.symbols || [],\n };\n\n // eslint-disable-next-line no-console\n console.log(\n '[DEBUG] Returning reconstructed multipage result with',\n reconstructedResult.pages.length,\n 'pages',\n );\n\n return reconstructedResult;\n }\n }\n\n // eslint-disable-next-line no-console\n console.log('[DEBUG] Returning original stored result');\n\n return storedResult;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('Error during store operation:', error);\n\n return null;\n }\n}\n\nfunction setComponentProperties(editor: Editor, isPreview: boolean, isStreaming: boolean): void {\n if (!editor) {\n return;\n }\n\n function setPropertiesRecursively(comp: Component) {\n const isMutable = !isPreview && !isStreaming;\n\n comp.set({\n editable: isMutable,\n draggable: isMutable,\n droppable: isMutable && comp.getName() !== 'Shadcn-generic',\n selectable: isMutable,\n hoverable: isMutable,\n highlightable: isMutable,\n copyable: false,\n resizable: false,\n removable: isMutable,\n badgable: false,\n });\n\n comp.set('attributes', {\n ...(comp.get('attributes') || {}),\n isEditable: isMutable,\n });\n\n if (isMutable) {\n comp.set('toolbar', [\n { attributes: { class: 'fa fa-arrows' }, command: 'tlb-move' },\n { attributes: { class: 'fa fa-trash' }, command: 'tlb-delete' },\n ]);\n } else {\n comp.set('toolbar', []);\n }\n\n comp.components().forEach(setPropertiesRecursively);\n }\n\n const wrapper = editor.getWrapper();\n const components = wrapper?.find('*') || [];\n\n components.forEach(setPropertiesRecursively);\n\n if (isEditorCanvasReady(editor)) {\n if (isPreview) {\n editor.runCommand('core:preview');\n } else {\n editor.stopCommand('core:preview');\n }\n }\n}\n\nfunction convertStyles(stylesArray: any[]): string {\n return stylesArray\n .map((block) => {\n const selectors = Array.isArray(block.selectors)\n ? block.selectors.join(', ')\n : block.selectors;\n const declarations = Object.entries(block.style)\n .map(([prop, value]) => `${toKebabCase(prop)}: ${value};`)\n .join(' ');\n\n return `${selectors} { ${declarations} }`;\n })\n .join('\\n');\n}\n\nfunction createActionCardConfig(action: any): any {\n const { icon, title, description } = action;\n\n return {\n type: 'shadcn-generic',\n componentName: 'ActionCard',\n badgable: false,\n copyable: false,\n removable: true,\n draggable: true,\n componentProps: {\n icon,\n headerContent: title,\n bodyContent: description,\n },\n };\n}\n\nfunction expandActions(node: any): any {\n if (node.type === 'shadcn-generic' && node.componentName === 'Actions') {\n const actions = node.componentProps?.actions;\n\n if (Array.isArray(actions) && actions.length > 0) {\n return {\n ...node,\n type: 'div',\n classes: ['dashboard-cards', ...(node.classes || [])],\n componentName: undefined,\n componentProps: undefined,\n components: actions.map((action: any, i: number) => ({\n ...createActionCardConfig(action),\n id: `${node.id}--action-card-${i}`,\n })),\n };\n }\n\n return node;\n }\n\n if (Array.isArray(node.components)) {\n return {\n ...node,\n components: node.components.map(expandActions),\n };\n }\n\n return node;\n}\n\nfunction setInteracting(\n renderedComponents: Record<string, Component>,\n components: { componentId: string; showLoader: boolean }[],\n inProgress: boolean,\n) {\n components.forEach((component) => {\n const { componentId, showLoader } = component;\n\n if (!showLoader) {\n return;\n }\n\n const gjsModel = renderedComponents[componentId];\n\n if (gjsModel) {\n gjsModel.set('attributes', {\n ...gjsModel.get('attributes'),\n interactionApiInProgress: inProgress,\n });\n }\n });\n}\n\nfunction expandActionsComponent(model: Component, actions: any[]): void {\n model.components('');\n\n actions.forEach((action: any) => {\n model.append(createActionCardConfig(action));\n });\n\n model.set('type', 'div');\n model.addClass('dashboard-cards');\n model.set('componentName', undefined);\n model.set('componentProps', {});\n}\n\nfunction GrapejsCanvasInternal({\n json,\n mode = 'preview',\n setEditor,\n performInteraction,\n newDataNotifier = () => {\n // no op\n },\n setHasChanged = () => {\n // no op\n },\n isStreaming,\n isModeChangeFromToggle = false,\n isTemplateView = false,\n currentPageId: externalCurrentPageId,\n onPageChange: externalOnPageChange, // eslint-disable-line @typescript-eslint/no-unused-vars\n onRequestPageData,\n}: GrapesjsCanvasProps) {\n const pageContext = usePageContext();\n\n const normalizedJson = normalizeMultiPageJson(json);\n\n // DEBUG: Analyze initial JSON structure\n console.log('[GrapejsCanvas] Component initialization debug:');\n console.log('[GrapejsCanvas] Raw json prop:', JSON.stringify(json, null, 2));\n console.log('[GrapejsCanvas] Normalized json:', JSON.stringify(normalizedJson, null, 2));\n console.log('[GrapejsCanvas] Has pages in raw json:', json?.pages ? 'YES' : 'NO');\n console.log('[GrapejsCanvas] Pages count in raw json:', json?.pages?.length || 0);\n console.log('[GrapejsCanvas] Has pages in normalized:', normalizedJson?.pages ? 'YES' : 'NO');\n console.log('[GrapejsCanvas] Pages count in normalized:', normalizedJson?.pages?.length || 0);\n\n const pages =\n normalizedJson?.pages && Array.isArray(normalizedJson.pages)\n ? normalizedJson.pages.map(extractPageMetadata)\n : [];\n const effectiveCurrentPageId =\n externalCurrentPageId || pageContext?.currentPageId || pages[0]?.id || '';\n\n console.log('[GrapejsCanvas] Extracted pages:', pages);\n console.log('[GrapejsCanvas] Effective current page ID:', effectiveCurrentPageId);\n\n const editorRef = useRef<HTMLDivElement>(null);\n const editorInstance = useRef<Editor | null>(null);\n const renderedComponents = useRef<Record<string, Component>>({});\n const pageDataCache = useRef<Record<string, Record<string, any>>>({});\n const currentPageIdRef = useRef<string>(effectiveCurrentPageId);\n const isStreamingRef = useRef(isStreaming ?? false);\n const modeRef = useRef(mode);\n const isSystemUpdateRef = useRef(false);\n const lastJsonRef = useRef<string>('');\n const isEditorAliveRef = useRef(false);\n const isSettingPropertiesRef = useRef(false);\n const onRequestPageDataRef = useRef(onRequestPageData);\n const [isTransitioning, setIsTransitioning] = useState(false);\n\n useEffect(() => {\n currentPageIdRef.current = effectiveCurrentPageId;\n }, [effectiveCurrentPageId]);\n\n useEffect(() => {\n isStreamingRef.current = isStreaming ?? false;\n }, [isStreaming ?? false]);\n\n useEffect(() => {\n modeRef.current = mode;\n }, [mode]);\n\n useEffect(() => {\n onRequestPageDataRef.current = onRequestPageData;\n }, [onRequestPageData]);\n\n function notificationHandler(\n props: Parameters<NotificationHandler>[0],\n ): ReturnType<NotificationHandler> {\n if (!props) {\n return true;\n }\n\n const { componentId: compId, newProps = {}, newAttributes = {} } = props;\n\n const model = renderedComponents.current[compId];\n\n if (!model) {\n const pageId = currentPageIdRef.current;\n\n if (pageId) {\n if (!pageDataCache.current[pageId]) {\n pageDataCache.current[pageId] = {};\n }\n\n pageDataCache.current[pageId][compId] = {\n newProps,\n newAttributes,\n timestamp: Date.now(),\n };\n }\n\n return false;\n }\n\n // Filter out complex placeholder objects by setting them to null\n // This ensures placeholder values are properly cleared and don't cause stale data issues\n const filteredProps = { ...newProps };\n\n Object.keys(filteredProps).forEach((key) => {\n const value = filteredProps[key];\n\n if (value && typeof value === 'object' && value.name === '__peak_placeholder') {\n filteredProps[key] = null;\n }\n });\n\n const parsedNewProps = {\n ...filteredProps,\n };\n\n if (filteredProps.pagination) {\n parsedNewProps.pagination = {\n ...(model.get('componentProps').pagination || {}),\n ...filteredProps.pagination,\n };\n }\n\n // Handle Actions component: expand into ActionCards when data arrives via streaming\n const isActionsComponent = model.get('componentName') === 'Actions';\n const hasValidActionsData =\n parsedNewProps.actions &&\n parsedNewProps.actions !== null &&\n Array.isArray(parsedNewProps.actions) &&\n parsedNewProps.actions.length > 0;\n\n if (isActionsComponent && hasValidActionsData) {\n const isAlreadyExpanded =\n model.components().length > 0 &&\n model.components().at(0)?.get('componentName') === 'ActionCard';\n\n if (!isAlreadyExpanded && editorInstance.current && isEditorAliveRef.current) {\n expandActionsComponent(model, parsedNewProps.actions);\n\n return true;\n }\n }\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...parsedNewProps,\n });\n\n // Set loading: false when data arrives\n const modelId = model.get('id');\n // eslint-disable-next-line no-console\n console.log(\n `[GrapesJS Loading] Setting loading: false for component ${modelId} (data arrived)`,\n );\n model.set('attributes', {\n ...model.get('attributes'),\n ...newAttributes,\n loading: false,\n });\n\n if (model.view) {\n model.view.render();\n }\n\n return true;\n }\n\n useEffect(() => {\n newDataNotifier(notificationHandler);\n }, []);\n\n function handleNavigateToPage(targetPageId: string) {\n if (externalOnPageChange) {\n externalOnPageChange(targetPageId);\n }\n\n if (pageContext) {\n pageContext.navigateToPage(targetPageId);\n }\n\n if (!pageContext && !externalOnPageChange) {\n // eslint-disable-next-line no-console\n console.warn('Page navigation requested but no navigation handler available');\n }\n }\n\n async function performInteractionWrapper(payload: Record<string, any>) {\n let updatedJson = null;\n\n if (editorInstance.current) {\n // DEBUG: Check what's being passed to safeStoreEditor\n console.log('[performInteractionWrapper] About to call safeStoreEditor with:');\n console.log('[performInteractionWrapper] json:', JSON.stringify(json, null, 2));\n console.log('[performInteractionWrapper] effectiveCurrentPageId:', effectiveCurrentPageId);\n\n updatedJson = await safeStoreEditor(editorInstance.current, json, effectiveCurrentPageId);\n\n console.log(\n '[performInteractionWrapper] safeStoreEditor returned:',\n JSON.stringify(updatedJson, null, 2),\n );\n }\n\n setInteracting(renderedComponents.current, payload.affectedComponents, true);\n\n try {\n const apiResponse = await performInteraction({\n ...payload,\n json: updatedJson,\n });\n\n const componentUpdates = apiResponse || {};\n\n Object.entries(componentUpdates).forEach(([key, value]) => {\n const model = renderedComponents.current[key];\n\n if (model) {\n model.set('attributes', {\n ...model.get('attributes'),\n error: undefined,\n });\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...value,\n error: undefined,\n isMissing: undefined,\n });\n }\n });\n\n return componentUpdates;\n } catch (error) {\n payload.affectedComponents.forEach((componentId: string) => {\n const model = renderedComponents.current[componentId];\n\n if (model) {\n const errorMessage =\n error instanceof Error ? error.message : 'Something went wrong. Please try again.';\n\n model.set('attributes', {\n ...model.get('attributes'),\n error: errorMessage,\n });\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n error: errorMessage,\n isMissing: undefined,\n });\n }\n });\n\n throw error;\n } finally {\n setInteracting(renderedComponents.current, payload.affectedComponents, false);\n }\n }\n\n useEffect(() => {\n if (!editorRef.current) {\n return () => {\n // no op\n };\n }\n\n if (editorInstance.current) {\n editorInstance.current.destroy();\n editorInstance.current = null;\n isEditorAliveRef.current = false;\n }\n\n const currentMode = mode;\n\n const editor = grapesjs.init({\n container: editorRef.current,\n height: '100%',\n plugins: [\n tailwind,\n createGrapesjsShadcnGenericPlugin(\n modeRef,\n performInteractionWrapper,\n renderedComponents.current,\n setHasChanged,\n isTemplateView,\n isStreamingRef,\n handleNavigateToPage,\n ),\n ],\n storageManager: { type: 'none' },\n richTextEditor: {\n actions: ['bold', 'italic', 'underline', 'strikethrough'],\n },\n canvas: {\n customBadgeLabel: (component) => {\n const tagName = component.get('tagName');\n\n return tagName === 'body' ? '' : tagName || '';\n },\n },\n });\n\n isEditorAliveRef.current = true;\n\n let injectionAttempts = 0;\n\n function injectStylesEarly() {\n const iframeDoc = editor.Canvas?.getDocument?.();\n\n if (iframeDoc && iframeDoc.head) {\n if (!iframeDoc.head.querySelector('[data-grapesjs-styles]')) {\n const style = iframeDoc.createElement('style');\n const fullCss = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n `;\n style.innerHTML = fullCss;\n style.setAttribute('type', 'text/css');\n style.setAttribute('data-grapesjs-styles', 'true');\n iframeDoc.head.appendChild(style);\n }\n } else if (injectionAttempts < 50) {\n injectionAttempts += 1;\n requestAnimationFrame(injectStylesEarly);\n }\n }\n\n requestAnimationFrame(injectStylesEarly);\n\n async function checkDirty() {\n if (isStreamingRef.current || isSystemUpdateRef.current) {\n return;\n }\n\n if (!isEditorAliveRef.current || !editorInstance.current) {\n return;\n }\n\n let stored = null;\n\n stored = await safeStoreEditor(editorInstance.current, json, effectiveCurrentPageId);\n\n if (!stored) {\n return;\n }\n\n const newJson = JSON.stringify(stored);\n\n if (newJson !== lastJsonRef.current) {\n setHasChanged(true);\n lastJsonRef.current = newJson;\n }\n }\n\n const debouncedCheckDirty = (() => {\n let timeout: NodeJS.Timeout | null = null;\n\n return () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n timeout = setTimeout(checkDirty, 200);\n };\n })();\n\n [\n 'component:add',\n 'component:remove',\n 'component:update:content',\n 'style:update',\n 'component:drag:end',\n 'rte:change',\n ].forEach((evt) => {\n editor.on(evt, debouncedCheckDirty);\n });\n\n editor.on('component:update', (model, prop) => {\n if (['attributes', 'componentProps', 'content'].includes(prop)) {\n debouncedCheckDirty();\n }\n });\n\n // Tailwind CSS rules aren't fully added to our component\n // So, adding them from here!\n editor.on('load', async () => {\n const canvasDoc = editor.Canvas.getDocument();\n const canvasHead = canvasDoc.head;\n\n if (!canvasHead.querySelector('[data-grapesjs-styles]')) {\n const style = canvasDoc.createElement('style');\n const fullCss = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n `;\n style.innerHTML = fullCss;\n style.setAttribute('type', 'text/css');\n style.setAttribute('data-grapesjs-styles', 'true');\n canvasHead.appendChild(style);\n }\n\n isSystemUpdateRef.current = true;\n const storeResult = await safeStoreEditor(editor, json, effectiveCurrentPageId);\n\n if (storeResult) {\n lastJsonRef.current = JSON.stringify(storeResult);\n }\n\n isSystemUpdateRef.current = false;\n\n setComponentProperties(editor, currentMode === 'preview', isStreamingRef.current);\n });\n\n editorInstance.current = editor;\n\n if (setEditor) {\n setEditor(editor);\n }\n\n TypesToRegister.forEach(({ type, tagName }) => {\n if (!editor.DomComponents.getType(type)) {\n editor.DomComponents.addType(type, {\n model: {\n defaults: { tagName },\n },\n view: {},\n });\n }\n });\n\n return function cleanup() {\n editor.destroy();\n isEditorAliveRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (json && json.pages?.length > 0) {\n if (!isEditorAliveRef.current || !editorInstance.current) {\n return;\n }\n\n const pageNormalizedJson = normalizeMultiPageJson(json);\n\n if (!pageNormalizedJson?.pages || !Array.isArray(pageNormalizedJson.pages)) {\n // eslint-disable-next-line no-console\n console.warn('Invalid or missing pages in normalized JSON');\n\n return;\n }\n\n const currentPage = getCurrentPage(pageNormalizedJson.pages, effectiveCurrentPageId);\n\n if (!currentPage || !currentPage.frames?.length) {\n // eslint-disable-next-line no-console\n console.warn('No valid page found to render');\n\n return;\n }\n\n isSystemUpdateRef.current = true;\n const raw = currentPage.frames[0].component;\n const processed = expandActions(raw);\n\n try {\n editorInstance.current?.setComponents(processed);\n\n setTimeout(() => {\n if (editorInstance.current && isEditorAliveRef.current) {\n const domComponents = editorInstance.current?.DomComponents;\n\n if (domComponents) {\n const allComponents = domComponents?.getWrapper()?.findType('shadcn-generic');\n allComponents?.forEach((comp: any) => {\n if (comp.get('componentName') === 'Tabs') {\n comp.view?.render();\n }\n });\n }\n }\n }, 100);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error during component restoration:', error);\n }\n\n const globalStyles = pageNormalizedJson.styles || [];\n const pageStyles = currentPage.styles || [];\n const mergedStyles = mergeStyles(globalStyles, pageStyles);\n const cssText = convertStyles(mergedStyles);\n editorInstance.current?.setStyle(cssText);\n\n if (onRequestPageDataRef.current && currentPage.dataQueries) {\n onRequestPageDataRef.current(currentPage.id, currentPage.dataQueries);\n }\n\n if (editorInstance.current) {\n setComponentProperties(editorInstance.current, mode === 'preview', isStreaming);\n\n setTimeout(() => {\n if (editorInstance.current && isEditorAliveRef.current && mode === 'preview') {\n setComponentProperties(editorInstance.current, true, isStreaming);\n }\n }, 50);\n }\n\n setTimeout(() => {\n if (currentPage && pageDataCache.current[currentPage.id]) {\n const cachedData = pageDataCache.current[currentPage.id];\n\n Object.entries(cachedData).forEach(([componentId, data]) => {\n const model = renderedComponents.current[componentId];\n\n if (model && data) {\n if (data.newProps) {\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...data.newProps,\n });\n }\n\n // eslint-disable-next-line no-console\n console.log(\n `[GrapesJS Loading] Setting loading: false for component ${componentId} (cached data applied)`,\n );\n const updatedAttributes = {\n ...model.get('attributes'),\n ...(data.newAttributes || {}),\n loading: false,\n };\n\n model.set('attributes', updatedAttributes);\n\n if (model.view) {\n model.view.render();\n }\n }\n });\n\n delete pageDataCache.current[currentPage.id];\n }\n }, 150);\n\n const cacheCheckInterval = setInterval(() => {\n if (!currentPage || !pageDataCache.current[currentPage.id]) {\n return;\n }\n\n const cachedData = pageDataCache.current[currentPage.id];\n let appliedAny = false;\n\n Object.entries(cachedData).forEach(([componentId, data]) => {\n const model = renderedComponents.current[componentId];\n\n if (model && data) {\n if (data.newProps) {\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...data.newProps,\n });\n }\n\n // eslint-disable-next-line no-console\n console.log(\n `[GrapesJS Loading] Setting loading: false for component ${componentId} (cached data timeout applied)`,\n );\n const updatedAttributes = {\n ...model.get('attributes'),\n ...(data.newAttributes || {}),\n loading: false,\n };\n\n model.set('attributes', updatedAttributes);\n\n if (model.view) {\n model.view.render();\n }\n\n appliedAny = true;\n }\n });\n\n if (appliedAny) {\n Object.keys(cachedData).forEach((componentId) => {\n if (renderedComponents.current[componentId]) {\n delete cachedData[componentId];\n }\n });\n\n if (Object.keys(cachedData).length === 0) {\n delete pageDataCache.current[currentPage.id];\n }\n }\n }, 100);\n\n setTimeout(() => {\n clearInterval(cacheCheckInterval);\n }, 5000);\n\n setTimeout(async () => {\n if (editorInstance.current && isEditorAliveRef.current) {\n const storeResult = await safeStoreEditor(\n editorInstance.current,\n json,\n effectiveCurrentPageId,\n );\n\n if (storeResult) {\n lastJsonRef.current = JSON.stringify(storeResult);\n }\n\n isSystemUpdateRef.current = false;\n }\n }, 100);\n }\n }, [json, effectiveCurrentPageId]);\n\n useEffect(() => {\n if (\n mode &&\n editorInstance.current &&\n isEditorAliveRef.current &&\n !isSettingPropertiesRef.current\n ) {\n isSettingPropertiesRef.current = true;\n isSystemUpdateRef.current = true;\n\n if (isModeChangeFromToggle) {\n setIsTransitioning(true);\n }\n\n setComponentProperties(\n editorInstance.current as Editor,\n mode === 'preview',\n isStreaming ?? false,\n );\n\n const wrapper = editorInstance.current.getWrapper();\n const shadcnComponents = wrapper?.find('[data-gjs-type=\"shadcn-generic\"]') || [];\n\n shadcnComponents.forEach((comp: Component) => {\n if (comp.view && typeof comp.view.render === 'function') {\n const currentAttrs = comp.get('attributes') || {};\n const isCurrentlyLoading = currentAttrs.loading || currentAttrs.interactionApiInProgress;\n\n if (isCurrentlyLoading) {\n comp.set('attributes', {\n ...currentAttrs,\n loading: true,\n });\n }\n\n comp.view.render();\n }\n });\n\n setTimeout(() => {\n if (isEditorAliveRef.current) {\n isSystemUpdateRef.current = false;\n isSettingPropertiesRef.current = false;\n setIsTransitioning(false);\n }\n }, 50);\n }\n }, [mode, isModeChangeFromToggle, isStreaming ?? false]);\n\n return (\n <React.Fragment>\n <StyledEditor />\n <div\n ref={editorRef}\n id=\"grapesjs-editor\"\n style={{\n opacity: isTransitioning ? 0 : 1,\n transition: 'opacity 0.15s ease-in-out',\n }}\n />\n </React.Fragment>\n );\n}\n\nfunction GrapejsCanvas(props: GrapesjsCanvasProps) {\n const existingContext = usePageContext();\n\n if (existingContext) {\n return <GrapejsCanvasInternal {...props} />;\n }\n\n const normalizedJson = normalizeMultiPageJson(props.json);\n const pages =\n normalizedJson?.pages && Array.isArray(normalizedJson.pages)\n ? normalizedJson.pages.map(extractPageMetadata)\n : [];\n const initialPageId = props.currentPageId || pages[0]?.id || '';\n\n return (\n <PageProvider pages={pages} initialPageId={initialPageId} onPageChange={props.onPageChange}>\n <GrapejsCanvasInternal {...props} />\n </PageProvider>\n );\n}\n\nexport default GrapejsCanvas;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"GrapesjsCanvas.js","names":["React","useEffect","useRef","useState","grapesjs","tailwind","TypesToRegister","toKebabCase","tailwindCompiledCss","datePickerCss","extractPageMetadata","getCurrentPage","mergeStyles","normalizeMultiPageJson","createGrapesjsShadcnGenericPlugin","StyledEditor","PageProvider","usePageContext","jsx","_jsx","jsxs","_jsxs","isEditorCanvasReady","editor","canvas","Canvas","canvasDoc","getDocument","canvasBody","body","_unused","safeStoreEditor","_x","_safeStoreEditor","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","_editor$Pages","wrapper","pages","wrap","_callee5$","_context5","prev","next","getWrapper","abrupt","Pages","getAll","length","store","sent","t0","console","warn","stop","setComponentProperties","isPreview","isStreaming","setPropertiesRecursively","comp","isMutable","set","editable","draggable","droppable","getName","selectable","hoverable","highlightable","copyable","resizable","removable","badgable","_extends","get","isEditable","attributes","command","components","forEach","find","runCommand","stopCommand","convertStyles","stylesArray","map","block","selectors","Array","isArray","join","declarations","Object","entries","style","_ref","prop","value","createActionCardConfig","action","icon","title","description","type","componentName","componentProps","headerContent","bodyContent","expandActions","node","_node$componentProps","actions","classes","concat","undefined","i","id","setInteracting","renderedComponents","inProgress","component","componentId","showLoader","gjsModel","interactionApiInProgress","expandActionsComponent","model","append","addClass","GrapejsCanvasInternal","_ref2","_pages$","json","_ref2$mode","mode","setEditor","performInteraction","_ref2$newDataNotifier","newDataNotifier","_ref2$setHasChanged","setHasChanged","_ref2$isModeChangeFro","isModeChangeFromToggle","_ref2$isTemplateView","isTemplateView","externalCurrentPageId","currentPageId","externalOnPageChange","onPageChange","onRequestPageData","pageContext","normalizedJson","effectiveCurrentPageId","editorRef","editorInstance","pageDataCache","currentPageIdRef","isStreamingRef","modeRef","isSystemUpdateRef","lastJsonRef","isEditorAliveRef","isSettingPropertiesRef","onRequestPageDataRef","_useState","isTransitioning","setIsTransitioning","current","notificationHandler","props","compId","_props$newProps","newProps","_props$newAttributes","newAttributes","pageId","timestamp","Date","now","filteredProps","keys","key","name","parsedNewProps","pagination","isActionsComponent","hasValidActionsData","_model$components$at","isAlreadyExpanded","at","modelId","log","loading","view","render","handleNavigateToPage","targetPageId","navigateToPage","performInteractionWrapper","_x2","_performInteractionWrapper","_callee4","payload","updatedJson","apiResponse","componentUpdates","_callee4$","_context4","affectedComponents","_ref8","error","isMissing","errorMessage","Error","message","finish","destroy","currentMode","init","container","height","plugins","storageManager","richTextEditor","customBadgeLabel","tagName","injectionAttempts","injectStylesEarly","_editor$Canvas","iframeDoc","head","querySelector","createElement","fullCss","innerHTML","setAttribute","appendChild","requestAnimationFrame","checkDirty","_checkDirty","_callee2","stored","newJson","_callee2$","_context2","JSON","stringify","debouncedCheckDirty","timeout","clearTimeout","setTimeout","evt","on","includes","_callee","canvasHead","storeResult","_callee$","_context","_ref4","DomComponents","getType","addType","defaults","cleanup","_json$pages","_currentPage$frames","_editorInstance$curre3","pageNormalizedJson","currentPage","frames","raw","processed","_editorInstance$curre","setComponents","_editorInstance$curre2","domComponents","_domComponents$getWra","allComponents","findType","_comp$view","globalStyles","styles","pageStyles","mergedStyles","cssText","setStyle","dataQueries","cachedData","_ref5","data","updatedAttributes","cacheCheckInterval","setInterval","appliedAny","_ref6","clearInterval","_callee3","_callee3$","_context3","shadcnComponents","currentAttrs","isCurrentlyLoading","Fragment","children","ref","opacity","transition","GrapejsCanvas","_pages$2","existingContext","initialPageId"],"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';\n\nimport { TypesToRegister } from './constants';\nimport { toKebabCase } from './helpers';\nimport { tailwindCompiledCss } from './helpers/css';\nimport { datePickerCss } from './helpers/date-picker';\nimport {\n extractPageMetadata,\n getCurrentPage,\n mergeStyles,\n normalizeMultiPageJson,\n} from './helpers/page-utils';\nimport { createGrapesjsShadcnGenericPlugin } from './plugins/grapejs-plugin';\nimport { StyledEditor } from './index.styles';\nimport type { PageAwareProps } from './types/page';\nimport { PageProvider, usePageContext } from './contexts/PageContext';\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 isModeChangeFromToggle?: boolean;\n isTemplateView?: boolean;\n} & PageAwareProps;\n\nfunction isEditorCanvasReady(editor: Editor): boolean {\n try {\n const canvas = editor.Canvas;\n\n if (!canvas) {\n return false;\n }\n\n const canvasDoc = canvas.getDocument?.();\n\n if (!canvasDoc) {\n return false;\n }\n\n const canvasBody = canvasDoc.body;\n\n if (!canvasBody) {\n return false;\n }\n\n return true;\n } catch {\n return false;\n }\n}\n\nasync function safeStoreEditor(editor: Editor): Promise<any | null> {\n try {\n const wrapper = editor.getWrapper();\n\n if (!wrapper) {\n return null;\n }\n\n const pages = editor.Pages?.getAll?.() || [];\n\n if (pages.length === 0) {\n return null;\n }\n\n return await editor.store();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('Error during store operation:', error);\n\n return null;\n }\n}\n\nfunction setComponentProperties(editor: Editor, isPreview: boolean, isStreaming: boolean): void {\n if (!editor) {\n return;\n }\n\n function setPropertiesRecursively(comp: Component) {\n const isMutable = !isPreview && !isStreaming;\n\n comp.set({\n editable: isMutable,\n draggable: isMutable,\n droppable: isMutable && comp.getName() !== 'Shadcn-generic',\n selectable: isMutable,\n hoverable: isMutable,\n highlightable: isMutable,\n copyable: false,\n resizable: false,\n removable: isMutable,\n badgable: false,\n });\n\n comp.set('attributes', {\n ...(comp.get('attributes') || {}),\n isEditable: isMutable,\n });\n\n if (isMutable) {\n comp.set('toolbar', [\n { attributes: { class: 'fa fa-arrows' }, command: 'tlb-move' },\n { attributes: { class: 'fa fa-trash' }, command: 'tlb-delete' },\n ]);\n } else {\n comp.set('toolbar', []);\n }\n\n comp.components().forEach(setPropertiesRecursively);\n }\n\n const wrapper = editor.getWrapper();\n const components = wrapper?.find('*') || [];\n\n components.forEach(setPropertiesRecursively);\n\n if (isEditorCanvasReady(editor)) {\n if (isPreview) {\n editor.runCommand('core:preview');\n } else {\n editor.stopCommand('core:preview');\n }\n }\n}\n\nfunction convertStyles(stylesArray: any[]): string {\n return stylesArray\n .map((block) => {\n const selectors = Array.isArray(block.selectors)\n ? block.selectors.join(', ')\n : block.selectors;\n const declarations = Object.entries(block.style)\n .map(([prop, value]) => `${toKebabCase(prop)}: ${value};`)\n .join(' ');\n\n return `${selectors} { ${declarations} }`;\n })\n .join('\\n');\n}\n\nfunction createActionCardConfig(action: any): any {\n const { icon, title, description } = action;\n\n return {\n type: 'shadcn-generic',\n componentName: 'ActionCard',\n badgable: false,\n copyable: false,\n removable: true,\n draggable: true,\n componentProps: {\n icon,\n headerContent: title,\n bodyContent: description,\n },\n };\n}\n\nfunction expandActions(node: any): any {\n if (node.type === 'shadcn-generic' && node.componentName === 'Actions') {\n const actions = node.componentProps?.actions;\n\n if (Array.isArray(actions) && actions.length > 0) {\n return {\n ...node,\n type: 'div',\n classes: ['dashboard-cards', ...(node.classes || [])],\n componentName: undefined,\n componentProps: undefined,\n components: actions.map((action: any, i: number) => ({\n ...createActionCardConfig(action),\n id: `${node.id}--action-card-${i}`,\n })),\n };\n }\n\n return node;\n }\n\n if (Array.isArray(node.components)) {\n return {\n ...node,\n components: node.components.map(expandActions),\n };\n }\n\n return node;\n}\n\nfunction setInteracting(\n renderedComponents: Record<string, Component>,\n components: { componentId: string; showLoader: boolean }[],\n inProgress: boolean,\n) {\n components.forEach((component) => {\n const { componentId, showLoader } = component;\n\n if (!showLoader) {\n return;\n }\n\n const gjsModel = renderedComponents[componentId];\n\n if (gjsModel) {\n gjsModel.set('attributes', {\n ...gjsModel.get('attributes'),\n interactionApiInProgress: inProgress,\n });\n }\n });\n}\n\nfunction expandActionsComponent(model: Component, actions: any[]): void {\n model.components('');\n\n actions.forEach((action: any) => {\n model.append(createActionCardConfig(action));\n });\n\n model.set('type', 'div');\n model.addClass('dashboard-cards');\n model.set('componentName', undefined);\n model.set('componentProps', {});\n}\n\nfunction GrapejsCanvasInternal({\n json,\n mode = 'preview',\n setEditor,\n performInteraction,\n newDataNotifier = () => {\n // no op\n },\n setHasChanged = () => {\n // no op\n },\n isStreaming,\n isModeChangeFromToggle = false,\n isTemplateView = false,\n currentPageId: externalCurrentPageId,\n onPageChange: externalOnPageChange, // eslint-disable-line @typescript-eslint/no-unused-vars\n onRequestPageData,\n}: GrapesjsCanvasProps) {\n const pageContext = usePageContext();\n\n const normalizedJson = normalizeMultiPageJson(json);\n const pages = normalizedJson.pages.map(extractPageMetadata);\n const effectiveCurrentPageId =\n externalCurrentPageId || pageContext?.currentPageId || pages[0]?.id || '';\n\n const editorRef = useRef<HTMLDivElement>(null);\n const editorInstance = useRef<Editor | null>(null);\n const renderedComponents = useRef<Record<string, Component>>({});\n const pageDataCache = useRef<Record<string, Record<string, any>>>({});\n const currentPageIdRef = useRef<string>(effectiveCurrentPageId);\n const isStreamingRef = useRef(isStreaming ?? false);\n const modeRef = useRef(mode);\n const isSystemUpdateRef = useRef(false);\n const lastJsonRef = useRef<string>('');\n const isEditorAliveRef = useRef(false);\n const isSettingPropertiesRef = useRef(false);\n const onRequestPageDataRef = useRef(onRequestPageData);\n const [isTransitioning, setIsTransitioning] = useState(false);\n\n useEffect(() => {\n currentPageIdRef.current = effectiveCurrentPageId;\n }, [effectiveCurrentPageId]);\n\n useEffect(() => {\n isStreamingRef.current = isStreaming ?? false;\n }, [isStreaming ?? false]);\n\n useEffect(() => {\n modeRef.current = mode;\n }, [mode]);\n\n useEffect(() => {\n onRequestPageDataRef.current = onRequestPageData;\n }, [onRequestPageData]);\n\n function notificationHandler(\n props: Parameters<NotificationHandler>[0],\n ): ReturnType<NotificationHandler> {\n if (!props) {\n return true;\n }\n\n const { componentId: compId, newProps = {}, newAttributes = {} } = props;\n\n const model = renderedComponents.current[compId];\n\n if (!model) {\n const pageId = currentPageIdRef.current;\n\n if (pageId) {\n if (!pageDataCache.current[pageId]) {\n pageDataCache.current[pageId] = {};\n }\n\n pageDataCache.current[pageId][compId] = {\n newProps,\n newAttributes,\n timestamp: Date.now(),\n };\n }\n\n return false;\n }\n\n // Filter out complex placeholder objects by setting them to null\n // This ensures placeholder values are properly cleared and don't cause stale data issues\n const filteredProps = { ...newProps };\n\n Object.keys(filteredProps).forEach((key) => {\n const value = filteredProps[key];\n\n if (value && typeof value === 'object' && value.name === '__peak_placeholder') {\n filteredProps[key] = null;\n }\n });\n\n const parsedNewProps = {\n ...filteredProps,\n };\n\n if (filteredProps.pagination) {\n parsedNewProps.pagination = {\n ...(model.get('componentProps').pagination || {}),\n ...filteredProps.pagination,\n };\n }\n\n // Handle Actions component: expand into ActionCards when data arrives via streaming\n const isActionsComponent = model.get('componentName') === 'Actions';\n const hasValidActionsData =\n parsedNewProps.actions &&\n parsedNewProps.actions !== null &&\n Array.isArray(parsedNewProps.actions) &&\n parsedNewProps.actions.length > 0;\n\n if (isActionsComponent && hasValidActionsData) {\n const isAlreadyExpanded =\n model.components().length > 0 &&\n model.components().at(0)?.get('componentName') === 'ActionCard';\n\n if (!isAlreadyExpanded && editorInstance.current && isEditorAliveRef.current) {\n expandActionsComponent(model, parsedNewProps.actions);\n\n return true;\n }\n }\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...parsedNewProps,\n });\n\n // Set loading: false when data arrives\n const modelId = model.get('id');\n // eslint-disable-next-line no-console\n console.log(\n `[GrapesJS Loading] Setting loading: false for component ${modelId} (data arrived)`,\n );\n model.set('attributes', {\n ...model.get('attributes'),\n ...newAttributes,\n loading: false,\n });\n\n if (model.view) {\n model.view.render();\n }\n\n return true;\n }\n\n useEffect(() => {\n newDataNotifier(notificationHandler);\n }, []);\n\n function handleNavigateToPage(targetPageId: string) {\n if (externalOnPageChange) {\n externalOnPageChange(targetPageId);\n }\n\n if (pageContext) {\n pageContext.navigateToPage(targetPageId);\n }\n\n if (!pageContext && !externalOnPageChange) {\n // eslint-disable-next-line no-console\n console.warn('Page navigation requested but no navigation handler available');\n }\n }\n\n async function performInteractionWrapper(payload: Record<string, any>) {\n let updatedJson = null;\n\n if (editorInstance.current) {\n updatedJson = await safeStoreEditor(editorInstance.current);\n }\n\n setInteracting(renderedComponents.current, payload.affectedComponents, true);\n\n try {\n const apiResponse = await performInteraction({\n ...payload,\n json: updatedJson,\n });\n\n const componentUpdates = apiResponse || {};\n\n Object.entries(componentUpdates).forEach(([key, value]) => {\n const model = renderedComponents.current[key];\n\n if (model) {\n model.set('attributes', {\n ...model.get('attributes'),\n error: undefined,\n });\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...value,\n error: undefined,\n isMissing: undefined,\n });\n }\n });\n\n return componentUpdates;\n } catch (error) {\n payload.affectedComponents.forEach((componentId: string) => {\n const model = renderedComponents.current[componentId];\n\n if (model) {\n const errorMessage =\n error instanceof Error ? error.message : 'Something went wrong. Please try again.';\n\n model.set('attributes', {\n ...model.get('attributes'),\n error: errorMessage,\n });\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n error: errorMessage,\n isMissing: undefined,\n });\n }\n });\n\n throw error;\n } finally {\n setInteracting(renderedComponents.current, payload.affectedComponents, false);\n }\n }\n\n useEffect(() => {\n if (!editorRef.current) {\n return () => {\n // no op\n };\n }\n\n if (editorInstance.current) {\n editorInstance.current.destroy();\n editorInstance.current = null;\n isEditorAliveRef.current = false;\n }\n\n const currentMode = mode;\n\n const editor = grapesjs.init({\n container: editorRef.current,\n height: '100%',\n plugins: [\n tailwind,\n createGrapesjsShadcnGenericPlugin(\n modeRef,\n performInteractionWrapper,\n renderedComponents.current,\n setHasChanged,\n isTemplateView,\n isStreamingRef,\n handleNavigateToPage,\n ),\n ],\n storageManager: { type: 'none' },\n richTextEditor: {\n actions: ['bold', 'italic', 'underline', 'strikethrough'],\n },\n canvas: {\n customBadgeLabel: (component) => {\n const tagName = component.get('tagName');\n\n return tagName === 'body' ? '' : tagName || '';\n },\n },\n });\n\n isEditorAliveRef.current = true;\n\n let injectionAttempts = 0;\n\n function injectStylesEarly() {\n const iframeDoc = editor.Canvas?.getDocument?.();\n\n if (iframeDoc && iframeDoc.head) {\n if (!iframeDoc.head.querySelector('[data-grapesjs-styles]')) {\n const style = iframeDoc.createElement('style');\n const fullCss = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n `;\n style.innerHTML = fullCss;\n style.setAttribute('type', 'text/css');\n style.setAttribute('data-grapesjs-styles', 'true');\n iframeDoc.head.appendChild(style);\n }\n } else if (injectionAttempts < 50) {\n injectionAttempts += 1;\n requestAnimationFrame(injectStylesEarly);\n }\n }\n\n requestAnimationFrame(injectStylesEarly);\n\n async function checkDirty() {\n if (isStreamingRef.current || isSystemUpdateRef.current) {\n return;\n }\n\n if (!isEditorAliveRef.current || !editorInstance.current) {\n return;\n }\n\n let stored = null;\n\n stored = await safeStoreEditor(editorInstance.current);\n\n if (!stored) {\n return;\n }\n\n const newJson = JSON.stringify(stored);\n\n if (newJson !== lastJsonRef.current) {\n setHasChanged(true);\n lastJsonRef.current = newJson;\n }\n }\n\n const debouncedCheckDirty = (() => {\n let timeout: NodeJS.Timeout | null = null;\n\n return () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n timeout = setTimeout(checkDirty, 200);\n };\n })();\n\n [\n 'component:add',\n 'component:remove',\n 'component:update:content',\n 'style:update',\n 'component:drag:end',\n 'rte:change',\n ].forEach((evt) => {\n editor.on(evt, debouncedCheckDirty);\n });\n\n editor.on('component:update', (model, prop) => {\n if (['attributes', 'componentProps', 'content'].includes(prop)) {\n debouncedCheckDirty();\n }\n });\n\n // Tailwind CSS rules aren't fully added to our component\n // So, adding them from here!\n editor.on('load', async () => {\n const canvasDoc = editor.Canvas.getDocument();\n const canvasHead = canvasDoc.head;\n\n if (!canvasHead.querySelector('[data-grapesjs-styles]')) {\n const style = canvasDoc.createElement('style');\n const fullCss = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n `;\n style.innerHTML = fullCss;\n style.setAttribute('type', 'text/css');\n style.setAttribute('data-grapesjs-styles', 'true');\n canvasHead.appendChild(style);\n }\n\n isSystemUpdateRef.current = true;\n const storeResult = await safeStoreEditor(editor);\n\n if (storeResult) {\n lastJsonRef.current = JSON.stringify(storeResult);\n }\n\n isSystemUpdateRef.current = false;\n\n setComponentProperties(editor, currentMode === 'preview', isStreamingRef.current);\n });\n\n editorInstance.current = editor;\n\n if (setEditor) {\n setEditor(editor);\n }\n\n TypesToRegister.forEach(({ type, tagName }) => {\n if (!editor.DomComponents.getType(type)) {\n editor.DomComponents.addType(type, {\n model: {\n defaults: { tagName },\n },\n view: {},\n });\n }\n });\n\n return function cleanup() {\n editor.destroy();\n isEditorAliveRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (json && json.pages?.length > 0) {\n if (!isEditorAliveRef.current || !editorInstance.current) {\n return;\n }\n\n const pageNormalizedJson = normalizeMultiPageJson(json);\n\n const currentPage = getCurrentPage(pageNormalizedJson.pages, effectiveCurrentPageId);\n\n if (!currentPage || !currentPage.frames?.length) {\n // eslint-disable-next-line no-console\n console.warn('No valid page found to render');\n\n return;\n }\n\n isSystemUpdateRef.current = true;\n const raw = currentPage.frames[0].component;\n const processed = expandActions(raw);\n\n try {\n editorInstance.current?.setComponents(processed);\n\n setTimeout(() => {\n if (editorInstance.current && isEditorAliveRef.current) {\n const domComponents = editorInstance.current?.DomComponents;\n\n if (domComponents) {\n const allComponents = domComponents?.getWrapper()?.findType('shadcn-generic');\n allComponents?.forEach((comp: any) => {\n if (comp.get('componentName') === 'Tabs') {\n comp.view?.render();\n }\n });\n }\n }\n }, 100);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error during component restoration:', error);\n }\n\n const globalStyles = pageNormalizedJson.styles || [];\n const pageStyles = currentPage.styles || [];\n const mergedStyles = mergeStyles(globalStyles, pageStyles);\n const cssText = convertStyles(mergedStyles);\n editorInstance.current?.setStyle(cssText);\n\n if (onRequestPageDataRef.current && currentPage.dataQueries) {\n onRequestPageDataRef.current(currentPage.id, currentPage.dataQueries);\n }\n\n if (editorInstance.current) {\n setComponentProperties(editorInstance.current, mode === 'preview', isStreaming);\n\n setTimeout(() => {\n if (editorInstance.current && isEditorAliveRef.current && mode === 'preview') {\n setComponentProperties(editorInstance.current, true, isStreaming);\n }\n }, 50);\n }\n\n setTimeout(() => {\n if (currentPage && pageDataCache.current[currentPage.id]) {\n const cachedData = pageDataCache.current[currentPage.id];\n\n Object.entries(cachedData).forEach(([componentId, data]) => {\n const model = renderedComponents.current[componentId];\n\n if (model && data) {\n if (data.newProps) {\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...data.newProps,\n });\n }\n\n // eslint-disable-next-line no-console\n console.log(\n `[GrapesJS Loading] Setting loading: false for component ${componentId} (cached data applied)`,\n );\n const updatedAttributes = {\n ...model.get('attributes'),\n ...(data.newAttributes || {}),\n loading: false,\n };\n\n model.set('attributes', updatedAttributes);\n\n if (model.view) {\n model.view.render();\n }\n }\n });\n\n delete pageDataCache.current[currentPage.id];\n }\n }, 150);\n\n const cacheCheckInterval = setInterval(() => {\n if (!currentPage || !pageDataCache.current[currentPage.id]) {\n return;\n }\n\n const cachedData = pageDataCache.current[currentPage.id];\n let appliedAny = false;\n\n Object.entries(cachedData).forEach(([componentId, data]) => {\n const model = renderedComponents.current[componentId];\n\n if (model && data) {\n if (data.newProps) {\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...data.newProps,\n });\n }\n\n // eslint-disable-next-line no-console\n console.log(\n `[GrapesJS Loading] Setting loading: false for component ${componentId} (cached data timeout applied)`,\n );\n const updatedAttributes = {\n ...model.get('attributes'),\n ...(data.newAttributes || {}),\n loading: false,\n };\n\n model.set('attributes', updatedAttributes);\n\n if (model.view) {\n model.view.render();\n }\n\n appliedAny = true;\n }\n });\n\n if (appliedAny) {\n Object.keys(cachedData).forEach((componentId) => {\n if (renderedComponents.current[componentId]) {\n delete cachedData[componentId];\n }\n });\n\n if (Object.keys(cachedData).length === 0) {\n delete pageDataCache.current[currentPage.id];\n }\n }\n }, 100);\n\n setTimeout(() => {\n clearInterval(cacheCheckInterval);\n }, 5000);\n\n setTimeout(async () => {\n if (editorInstance.current && isEditorAliveRef.current) {\n const storeResult = await safeStoreEditor(editorInstance.current);\n\n if (storeResult) {\n lastJsonRef.current = JSON.stringify(storeResult);\n }\n\n isSystemUpdateRef.current = false;\n }\n }, 100);\n }\n }, [json, effectiveCurrentPageId]);\n\n useEffect(() => {\n if (\n mode &&\n editorInstance.current &&\n isEditorAliveRef.current &&\n !isSettingPropertiesRef.current\n ) {\n isSettingPropertiesRef.current = true;\n isSystemUpdateRef.current = true;\n\n if (isModeChangeFromToggle) {\n setIsTransitioning(true);\n }\n\n setComponentProperties(\n editorInstance.current as Editor,\n mode === 'preview',\n isStreaming ?? false,\n );\n\n const wrapper = editorInstance.current.getWrapper();\n const shadcnComponents = wrapper?.find('[data-gjs-type=\"shadcn-generic\"]') || [];\n\n shadcnComponents.forEach((comp: Component) => {\n if (comp.view && typeof comp.view.render === 'function') {\n const currentAttrs = comp.get('attributes') || {};\n const isCurrentlyLoading = currentAttrs.loading || currentAttrs.interactionApiInProgress;\n\n if (isCurrentlyLoading) {\n comp.set('attributes', {\n ...currentAttrs,\n loading: true,\n });\n }\n\n comp.view.render();\n }\n });\n\n setTimeout(() => {\n if (isEditorAliveRef.current) {\n isSystemUpdateRef.current = false;\n isSettingPropertiesRef.current = false;\n setIsTransitioning(false);\n }\n }, 50);\n }\n }, [mode, isModeChangeFromToggle, isStreaming ?? false]);\n\n return (\n <React.Fragment>\n <StyledEditor />\n <div\n ref={editorRef}\n id=\"grapesjs-editor\"\n style={{\n opacity: isTransitioning ? 0 : 1,\n transition: 'opacity 0.15s ease-in-out',\n }}\n />\n </React.Fragment>\n );\n}\n\nfunction GrapejsCanvas(props: GrapesjsCanvasProps) {\n const existingContext = usePageContext();\n\n if (existingContext) {\n return <GrapejsCanvasInternal {...props} />;\n }\n\n const normalizedJson = normalizeMultiPageJson(props.json);\n const pages = normalizedJson.pages.map(extractPageMetadata);\n const initialPageId = props.currentPageId || pages[0]?.id || '';\n\n return (\n <PageProvider pages={pages} initialPageId={initialPageId} onPageChange={props.onPageChange}>\n <GrapejsCanvasInternal {...props} />\n </PageProvider>\n );\n}\n\nexport default GrapejsCanvas;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@peak-ai/canvas",
3
3
  "author": "squad-builder-experience",
4
4
  "license": "UNLICENSED",
5
- "version": "1.6.0-rc.21",
5
+ "version": "1.6.0-rc.23",
6
6
  "description": "",
7
7
  "dependencies": {
8
8
  "@emotion/react": "^11.11.4",
@@ -1,7 +1,6 @@
1
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 React from"react";import ReactDOM from"react-dom";import{getRenderers}from"./helpers/render-components";import{QueryCacheProvider}from"./helpers/query-cache-context";import{jsx as _jsx}from"react/jsx-runtime";export function createGrapesjsShadcnGenericPlugin(modeRef,performInteraction,renderedComponents,setHasChanged,isTemplateView,isStreamingRef,navigateToPage){if(renderedComponents===void 0){renderedComponents={}}if(isTemplateView===void 0){isTemplateView=false}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.performInteraction=performInteraction;compProps.navigateToPage=navigateToPage;compProps.isTemplateView=isTemplateView;compProps.isEditable=modeRef.current==="editor"&&!isStreamingRef.current;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"){this._cleanupTabsSetup();ReactDOM.render(/*#__PURE__*/_jsx(QueryCacheProvider,{maxCacheSize:100,maxCacheAge:5*60*1000,children:/*#__PURE__*/_jsx(Renderer,_extends({},compProps,{gjsModel:this.model}))}),this.el);var children=this.model.components();if(children.length===0){return this}var tabAttributes=this.model.get("attributes")||{};var hasTabsError=tabAttributes.error||compProps.error;var hasTabsMissing=tabAttributes.isMissing||compProps.isMissing;var injectChildren=function injectChildren(){var tabsContent=_this.el.querySelectorAll(".tabs-content");var isFallback=Array.from(tabsContent).some(function(el){return el.dataset.fallback==="true"});if(isFallback||tabsContent.length===0){return false}children.each(function(childModel){_this.stopListening(childModel,"change:attributes")});children.each(function(childModel,i){var container=tabsContent[i];if(!container){return}var childView=_this.createView(childModel);if(childView){container.innerHTML="";childView.render();container.appendChild(childView.el);_this.listenTo(childModel,"change:attributes",function(){var childAttributes=childModel.get("attributes")||{};var childProps=childModel.get("componentProps")||{};var hasError=hasTabsError||childAttributes.error||childProps.error;var hasMissing=hasTabsMissing||childAttributes.isMissing||childProps.isMissing;if(hasError||hasMissing){childModel.set("attributes",_extends({},childAttributes,{loading:false,error:hasError,isMissing:hasMissing,inheritedFromParent:!!(hasTabsError||hasTabsMissing)}),{silent:false})}})}});return true};if(injectChildren()){return this}this._tabsTimeoutId=setTimeout(function(){if(injectChildren()){return}// eslint-disable-next-line no-console
3
- console.warn("Could not inject tabs content after delay")},100)}else{ReactDOM.render(/*#__PURE__*/_jsx(QueryCacheProvider,{maxCacheSize:100,maxCacheAge:5*60*1000,children:/*#__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;// eslint-disable-next-line no-console
4
- console.log("[GrapesJS Plugin] Component registered: "+this.model.get("id")+" ("+compName+")");return this},_cleanupTabsSetup:function _cleanupTabsSetup(){if(this._tabsTimeoutId){clearTimeout(this._tabsTimeoutId);this._tabsTimeoutId=null}},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
+ console.warn("Could not inject tabs content after delay")},100)}else{ReactDOM.render(/*#__PURE__*/_jsx(QueryCacheProvider,{maxCacheSize:100,maxCacheAge:5*60*1000,children:/*#__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},_cleanupTabsSetup:function _cleanupTabsSetup(){if(this._tabsTimeoutId){clearTimeout(this._tabsTimeoutId);this._tabsTimeoutId=null}},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
5
4
  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(){this.stopListening();this._cleanupTabsSetup();// eslint-disable-next-line import/no-named-as-default-member
6
5
  ReactDOM.unmountComponentAtNode(this.el);return this}}})}}
7
6
  //# sourceMappingURL=grapejs-plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"grapejs-plugin.js","names":["React","ReactDOM","getRenderers","QueryCacheProvider","jsx","_jsx","createGrapesjsShadcnGenericPlugin","modeRef","performInteraction","renderedComponents","setHasChanged","isTemplateView","isStreamingRef","navigateToPage","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","current","onChange","renderers","Renderer","_cleanupTabsSetup","maxCacheSize","maxCacheAge","children","gjsModel","el","components","length","tabAttributes","hasTabsError","hasTabsMissing","isMissing","injectChildren","tabsContent","querySelectorAll","isFallback","Array","from","some","fallback","each","childModel","stopListening","i","container","childView","createView","innerHTML","appendChild","listenTo","childAttributes","childProps","hasError","hasMissing","loading","inheritedFromParent","silent","_tabsTimeoutId","setTimeout","warn","log","clearTimeout","_this$em$get$getType","ComponentView","em","getType","config","componentTypes","remove","unmountComponentAtNode"],"sources":["../../src/plugins/grapejs-plugin.tsx"],"sourcesContent":["/* eslint-disable import/no-named-as-default-member */\n/* eslint-disable func-names */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Editor, Component } from 'grapesjs';\nimport { getRenderers } from './helpers/render-components';\nimport { QueryCacheProvider } from './helpers/query-cache-context';\n\nexport function createGrapesjsShadcnGenericPlugin(\n modeRef: React.MutableRefObject<'editor' | 'preview'>,\n performInteraction: (payload: Record<string, any>) => void,\n renderedComponents: Record<string, Component> = {},\n setHasChanged: (hasChanged: boolean) => void,\n isTemplateView = false,\n isStreamingRef: React.MutableRefObject<boolean>,\n navigateToPage?: (pageId: string) => 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.performInteraction = performInteraction;\n compProps.navigateToPage = navigateToPage;\n compProps.isTemplateView = isTemplateView;\n compProps.isEditable = modeRef.current === 'editor' && !isStreamingRef.current;\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 this._cleanupTabsSetup();\n\n ReactDOM.render(\n <QueryCacheProvider maxCacheSize={100} maxCacheAge={5 * 60 * 1000}>\n <Renderer {...compProps} gjsModel={this.model} />\n </QueryCacheProvider>,\n this.el,\n );\n\n const children = this.model.components();\n\n if (children.length === 0) {\n return this;\n }\n\n const tabAttributes = this.model.get('attributes') || {};\n const hasTabsError = tabAttributes.error || compProps.error;\n const hasTabsMissing = tabAttributes.isMissing || compProps.isMissing;\n\n const injectChildren = () => {\n const tabsContent = this.el.querySelectorAll('.tabs-content');\n const isFallback = Array.from(tabsContent).some(\n (el: Element) => (el as HTMLElement).dataset.fallback === 'true',\n );\n\n if (isFallback || tabsContent.length === 0) {\n return false;\n }\n\n children.each((childModel: any) => {\n this.stopListening(childModel, 'change:attributes');\n });\n\n children.each((childModel: any, i: number) => {\n const container = tabsContent[i];\n\n if (!container) {\n return;\n }\n\n const childView = this.createView(childModel);\n\n if (childView) {\n container.innerHTML = '';\n childView.render();\n container.appendChild(childView.el);\n\n this.listenTo(childModel, 'change:attributes', () => {\n const childAttributes = childModel.get('attributes') || {};\n const childProps = childModel.get('componentProps') || {};\n const hasError = hasTabsError || childAttributes.error || childProps.error;\n const hasMissing =\n hasTabsMissing || childAttributes.isMissing || childProps.isMissing;\n\n if (hasError || hasMissing) {\n childModel.set(\n 'attributes',\n {\n ...childAttributes,\n loading: false,\n error: hasError,\n isMissing: hasMissing,\n inheritedFromParent: !!(hasTabsError || hasTabsMissing),\n },\n { silent: false },\n );\n }\n });\n }\n });\n\n return true;\n };\n\n if (injectChildren()) {\n return this;\n }\n\n this._tabsTimeoutId = setTimeout(() => {\n if (injectChildren()) {\n return;\n }\n\n // eslint-disable-next-line no-console\n console.warn('Could not inject tabs content after delay');\n }, 100);\n } else {\n ReactDOM.render(\n <QueryCacheProvider maxCacheSize={100} maxCacheAge={5 * 60 * 1000}>\n <Renderer {...compProps} gjsModel={this.model} />\n </QueryCacheProvider>,\n this.el,\n );\n }\n } else {\n this.el.innerHTML = `<div>Unsupported component: ${compName}</div>`;\n }\n\n renderedComponents[this.model.get('id')] = this.model;\n \n // eslint-disable-next-line no-console\n console.log(`[GrapesJS Plugin] Component registered: ${this.model.get('id')} (${compName})`);\n\n return this;\n },\n _cleanupTabsSetup: function () {\n if (this._tabsTimeoutId) {\n clearTimeout(this._tabsTimeoutId);\n this._tabsTimeoutId = null;\n }\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 this.stopListening();\n\n this._cleanupTabsSetup();\n\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":["React","ReactDOM","getRenderers","QueryCacheProvider","jsx","_jsx","createGrapesjsShadcnGenericPlugin","modeRef","performInteraction","renderedComponents","setHasChanged","isTemplateView","isStreamingRef","navigateToPage","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","current","onChange","renderers","Renderer","_cleanupTabsSetup","maxCacheSize","maxCacheAge","children","gjsModel","el","components","length","tabAttributes","hasTabsError","hasTabsMissing","isMissing","injectChildren","tabsContent","querySelectorAll","isFallback","Array","from","some","fallback","each","childModel","stopListening","i","container","childView","createView","innerHTML","appendChild","listenTo","childAttributes","childProps","hasError","hasMissing","loading","inheritedFromParent","silent","_tabsTimeoutId","setTimeout","warn","clearTimeout","_this$em$get$getType","ComponentView","em","getType","config","componentTypes","remove","unmountComponentAtNode"],"sources":["../../src/plugins/grapejs-plugin.tsx"],"sourcesContent":["/* eslint-disable import/no-named-as-default-member */\n/* eslint-disable func-names */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Editor, Component } from 'grapesjs';\nimport { getRenderers } from './helpers/render-components';\nimport { QueryCacheProvider } from './helpers/query-cache-context';\n\nexport function createGrapesjsShadcnGenericPlugin(\n modeRef: React.MutableRefObject<'editor' | 'preview'>,\n performInteraction: (payload: Record<string, any>) => void,\n renderedComponents: Record<string, Component> = {},\n setHasChanged: (hasChanged: boolean) => void,\n isTemplateView = false,\n isStreamingRef: React.MutableRefObject<boolean>,\n navigateToPage?: (pageId: string) => 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.performInteraction = performInteraction;\n compProps.navigateToPage = navigateToPage;\n compProps.isTemplateView = isTemplateView;\n compProps.isEditable = modeRef.current === 'editor' && !isStreamingRef.current;\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 this._cleanupTabsSetup();\n\n ReactDOM.render(\n <QueryCacheProvider maxCacheSize={100} maxCacheAge={5 * 60 * 1000}>\n <Renderer {...compProps} gjsModel={this.model} />\n </QueryCacheProvider>,\n this.el,\n );\n\n const children = this.model.components();\n\n if (children.length === 0) {\n return this;\n }\n\n const tabAttributes = this.model.get('attributes') || {};\n const hasTabsError = tabAttributes.error || compProps.error;\n const hasTabsMissing = tabAttributes.isMissing || compProps.isMissing;\n\n const injectChildren = () => {\n const tabsContent = this.el.querySelectorAll('.tabs-content');\n const isFallback = Array.from(tabsContent).some(\n (el: Element) => (el as HTMLElement).dataset.fallback === 'true',\n );\n\n if (isFallback || tabsContent.length === 0) {\n return false;\n }\n\n children.each((childModel: any) => {\n this.stopListening(childModel, 'change:attributes');\n });\n\n children.each((childModel: any, i: number) => {\n const container = tabsContent[i];\n\n if (!container) {\n return;\n }\n\n const childView = this.createView(childModel);\n\n if (childView) {\n container.innerHTML = '';\n childView.render();\n container.appendChild(childView.el);\n\n this.listenTo(childModel, 'change:attributes', () => {\n const childAttributes = childModel.get('attributes') || {};\n const childProps = childModel.get('componentProps') || {};\n const hasError = hasTabsError || childAttributes.error || childProps.error;\n const hasMissing =\n hasTabsMissing || childAttributes.isMissing || childProps.isMissing;\n\n if (hasError || hasMissing) {\n childModel.set(\n 'attributes',\n {\n ...childAttributes,\n loading: false,\n error: hasError,\n isMissing: hasMissing,\n inheritedFromParent: !!(hasTabsError || hasTabsMissing),\n },\n { silent: false },\n );\n }\n });\n }\n });\n\n return true;\n };\n\n if (injectChildren()) {\n return this;\n }\n\n this._tabsTimeoutId = setTimeout(() => {\n if (injectChildren()) {\n return;\n }\n\n // eslint-disable-next-line no-console\n console.warn('Could not inject tabs content after delay');\n }, 100);\n } else {\n ReactDOM.render(\n <QueryCacheProvider maxCacheSize={100} maxCacheAge={5 * 60 * 1000}>\n <Renderer {...compProps} gjsModel={this.model} />\n </QueryCacheProvider>,\n this.el,\n );\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 _cleanupTabsSetup: function () {\n if (this._tabsTimeoutId) {\n clearTimeout(this._tabsTimeoutId);\n this._tabsTimeoutId = null;\n }\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 this.stopListening();\n\n this._cleanupTabsSetup();\n\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 +1 @@
1
- {"version":3,"file":"data-table.js","names":["useEffect","useState","Fragment","useMemo","useRef","Table","TableHeader","TableRow","TableHead","TableBody","TableCell","TableHeadSortable","TableLoader","ScrollArea","ScrollBar","Pagination","PaginationContent","renderPaginationArrows","TableButton","cn","renderNoDataFallback","formatValue","SEMANTIC_CHIP_STYLES_MAP","RANDOM_CHIP_COLOR_PALETTE","jsx","_jsx","_Fragment","jsxs","_jsxs","normalizeValue","value","undefined","str","String","trim","toLowerCase","getChipMode","columnWithChipClass","columnKey","mode","getUniqueValuesHash","data","Array","isArray","length","availableKeys","Object","keys","hashParts","forEach","includes","chipMode","uniqueNormalizedValues","Set","row","normalizedKey","add","sortedUniqueValues","from","sort","JSON","stringify","DataTable","_ref","_ref2","_pagination$values$pa","_pagination$values","_ref3","_pagination$values$pa2","_pagination$values2","_ref$data","_ref$headerMapper","headerMapper","_ref$className","className","_ref$actions","actions","_ref$isEditable","isEditable","pagination","_ref$isLoading","isLoading","onRowAction","onPageChange","onSort","sortConfig","_ref$otherProps","otherProps","height","_ref$decimalPrecision","decimalPrecision","_ref$columnWithChipCl","_ref$chipStylesMappin","chipStylesMapping","children","style","minHeight","_useState","activeSortColumn","setActiveSortColumn","_useState2","sortDirections","setSortDirections","_useState3","Number","values","pageNumber","initialPage","setPageNumber","_useState4","pageSize","initialPageSize","setPageSize","_useState5","Math","ceil","totalCount","totalPages","setTotalPages","_useState6","chipColorMap","setChipColorMap","prevDataHashRef","_ref4","_pagination$values$pa3","_pagination$values3","_ref5","_pagination$values$pa4","_pagination$values4","first","sortColumn","sortDirection","computedColorMap","newColorMap","index","colorIndex","uniqueValuesHash","current","prevMap","merged","_extends","cleaned","hasChanges","originalKeys","filter","key","headers","map","push","rows","datum","handlePageChange","_x","_x2","_handlePageChange","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","newPage","newSize","wrap","_callee$","_context","prev","next","stop","handleSortClick","column","direction","_extends2","renderActions","rowIndex","rowActions","action","onClick","id","variant","text","tooltipContent","disabled","defaultClasses","mergedClasses","getRandomColorForValue","_chipColorMap$columnK","renderChip","formattedValue","chipClassName","_chipStylesMapping$co","valueStr","valueLower","renderTableComponent","head","idx","isActionColumn","originalKey","contentEditable","isActive","sortable","rIdx","cell","cIdx","shouldRenderChip","orientation","htmlFor","onChange","e","target","pageSizeOptions","size","min"],"sources":["../../../src/plugins/helpers/data-table.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useState, Fragment, useMemo, useRef } from 'react';\nimport {\n Table,\n TableHeader,\n TableRow,\n TableHead,\n TableBody,\n TableCell,\n TableHeadSortable,\n SortDirection,\n} from '../../shadcn/components/ui/table';\nimport { TableLoader } from '../../shadcn/components/ui/skeleton';\nimport { ScrollArea, ScrollBar } from '../../shadcn/components/ui/scroll-area';\nimport {\n Pagination,\n PaginationContent,\n renderPaginationArrows,\n} from '../../shadcn/components/ui/pagination';\nimport { TableButton } from '../../shadcn/components/ui/button';\nimport { cn } from '../../shadcn/utils';\nimport { renderNoDataFallback } from './extra';\nimport { formatValue } from '../../helpers';\nimport { SEMANTIC_CHIP_STYLES_MAP, RANDOM_CHIP_COLOR_PALETTE } from '../../constants';\n\ntype RowAction = {\n id: string;\n text: string;\n variant?: string;\n tooltipContent?: string;\n className?: string;\n};\n\nexport type DataTableProps = {\n data: Record<string, any>[];\n headerMapper?: Record<string, string>;\n className?: string;\n isEditable?: boolean;\n actions?: RowAction[];\n pagination?: {\n values?: {\n pageNumber: number;\n pageSize: number;\n };\n initialPage?: number;\n initialPageSize?: number;\n totalCount: number;\n pageSizeOptions: number[];\n };\n isLoading?: boolean;\n onRowAction?: (rowIndex: number, actionId: string) => void;\n onPageChange?: (pageNumber: number, pageSize: number) => void;\n onSort?: (column: string, direction: SortDirection) => void;\n sortConfig?: Record<string, SortDirection>;\n otherProps?: Record<string, any>;\n height?: string | number;\n decimalPrecision?: number;\n columnWithChipClass?: Record<string, 'useMap' | 'useRandom'>;\n chipStylesMapping?: Record<string, Record<string, string>>;\n};\n\n/**\n * Normalizes a value to a consistent string key for color mapping.\n * Handles all value types: null/undefined, numbers, booleans, objects, arrays, dates.\n * Ensures consistent color assignment for all variations of the same logical value.\n */\nfunction normalizeValue(value: any): string {\n // Handle null/undefined\n if (value === null || value === undefined) {\n return '';\n }\n\n const str = String(value);\n \n return str.trim().toLowerCase();\n}\n\nfunction getChipMode(\n columnWithChipClass: Record<string, 'useMap' | 'useRandom'>,\n columnKey: string\n): 'useMap' | 'useRandom' | undefined {\n if (!(columnKey in columnWithChipClass)) {\n return undefined;\n }\n \n const mode = columnWithChipClass[columnKey];\n\n if (mode !== 'useMap' && mode !== 'useRandom') {\n return 'useRandom';\n }\n \n return mode;\n}\n\n/**\n * Generates a stable hash based on unique value sets per column.\n * This hash is order-independent - it only changes when the set of unique values changes,\n * not when rows are reordered (e.g., during sorting).\n */\nfunction getUniqueValuesHash(\n data: Record<string, any>[],\n columnWithChipClass: Record<string, 'useMap' | 'useRandom'>\n): string {\n if (!Array.isArray(data) || data.length === 0) {\n return '';\n }\n\n const availableKeys = Object.keys(data[0] || {});\n const hashParts: Record<string, string[]> = {};\n\n Object.keys(columnWithChipClass).forEach((columnKey) => {\n if (!availableKeys.includes(columnKey)) {\n return;\n }\n\n const chipMode = getChipMode(columnWithChipClass, columnKey);\n if (chipMode === 'useRandom') {\n const uniqueNormalizedValues = new Set<string>();\n data.forEach((row) => {\n const value = row[columnKey];\n const normalizedKey = normalizeValue(value);\n\n if (normalizedKey) {\n uniqueNormalizedValues.add(normalizedKey);\n }\n });\n const sortedUniqueValues = Array.from(uniqueNormalizedValues).sort();\n hashParts[columnKey] = sortedUniqueValues;\n }\n });\n\n return JSON.stringify(hashParts);\n}\n\nexport function DataTable({\n data = [],\n headerMapper = {},\n className = '',\n actions = [],\n isEditable = false,\n pagination,\n isLoading = false,\n onRowAction,\n onPageChange,\n onSort,\n sortConfig,\n otherProps = {},\n height,\n decimalPrecision = 2,\n columnWithChipClass = {},\n chipStylesMapping = {},\n}: DataTableProps) {\n\n if (!data || data.length === 0) {\n return (\n <Fragment>\n <div className=\"flex flex-col overflow-hidden\">\n <div\n data-slot=\"table-container\"\n className=\"aspect-auto w-full\"\n style={{ height: 'auto', minHeight: '180px' }}\n >\n {isLoading ? <TableLoader /> : renderNoDataFallback()}\n </div>\n </div>\n </Fragment>\n );\n }\n\n const [activeSortColumn, setActiveSortColumn] = useState<string | null>(null);\n const [sortDirections, setSortDirections] = useState<Record<string, SortDirection>>({});\n\n const [pageNumber, setPageNumber] = useState(\n Number(pagination?.values?.pageNumber ?? pagination?.initialPage ?? 1),\n );\n const [pageSize, setPageSize] = useState(\n Number(pagination?.values?.pageSize ?? pagination?.initialPageSize ?? 10),\n );\n const [totalPages, setTotalPages] = useState(\n Math.ceil((pagination?.totalCount || 0) / pageSize) || 1,\n );\n\n const [chipColorMap, setChipColorMap] = useState<Record<string, Record<string, string>>>({});\n\n const prevDataHashRef = useRef<string>('');\n\n useEffect(() => {\n setPageNumber(Number(pagination?.values?.pageNumber ?? pagination?.initialPage ?? 1));\n setPageSize(Number(pagination?.values?.pageSize ?? pagination?.initialPageSize ?? 25));\n }, [pagination]);\n\n useEffect(() => {\n setTotalPages(Math.ceil((pagination?.totalCount || 0) / pageSize) || 1);\n }, [pagination?.totalCount, pageSize]);\n\n useEffect(() => {\n if (sortConfig) {\n setSortDirections(sortConfig);\n const first = Object.keys(sortConfig)[0];\n\n if (first) {\n setActiveSortColumn(first);\n }\n }\n }, [sortConfig]);\n\n useEffect(() => {\n if (sortConfig?.sortColumn || sortConfig?.sortDirection) {\n sortConfig.sortColumn = null;\n sortConfig.sortDirection = null;\n }\n \n setActiveSortColumn(null);\n setSortDirections({});\n }, []);\n\n const computedColorMap = useMemo(() => {\n if (!Array.isArray(data) || data.length === 0) {\n return {};\n }\n\n // Get available column keys from first row\n const availableKeys = Object.keys(data[0] || {});\n \n const newColorMap: Record<string, Record<string, string>> = {};\n\n // Process each column that uses random chips\n Object.keys(columnWithChipClass).forEach((columnKey) => {\n // Validate column key exists in data\n if (!availableKeys.includes(columnKey)) {\n return;\n }\n\n const chipMode = getChipMode(columnWithChipClass, columnKey);\n if (chipMode === 'useRandom') {\n if (!newColorMap[columnKey]) {\n newColorMap[columnKey] = {};\n }\n\n const uniqueNormalizedValues = new Set<string>();\n data.forEach((row) => {\n const value = row[columnKey];\n const normalizedKey = normalizeValue(value);\n\n if (normalizedKey) {\n uniqueNormalizedValues.add(normalizedKey);\n }\n });\n\n const sortedUniqueValues = Array.from(uniqueNormalizedValues).sort();\n\n sortedUniqueValues.forEach((normalizedKey, index) => {\n if (!newColorMap[columnKey][normalizedKey]) {\n const colorIndex = index % RANDOM_CHIP_COLOR_PALETTE.length;\n newColorMap[columnKey][normalizedKey] = RANDOM_CHIP_COLOR_PALETTE[colorIndex];\n }\n });\n }\n });\n\n return newColorMap;\n }, [data, columnWithChipClass]);\n\n useEffect(() => {\n const uniqueValuesHash = getUniqueValuesHash(data, columnWithChipClass);\n \n // Only update if the set of unique values actually changed\n if (uniqueValuesHash !== prevDataHashRef.current) {\n prevDataHashRef.current = uniqueValuesHash;\n \n setChipColorMap((prevMap) => {\n const merged = { ...prevMap };\n Object.keys(computedColorMap).forEach((columnKey) => {\n merged[columnKey] = { ...computedColorMap[columnKey], ...merged[columnKey] };\n });\n return merged;\n });\n }\n }, [computedColorMap, data, columnWithChipClass]);\n\n useEffect(() => {\n setChipColorMap((prevMap) => {\n const cleaned = { ...prevMap };\n let hasChanges = false;\n\n Object.keys(cleaned).forEach((columnKey) => {\n const chipMode = getChipMode(columnWithChipClass, columnKey);\n if (!chipMode) {\n delete cleaned[columnKey];\n hasChanges = true;\n }\n });\n \n return hasChanges ? cleaned : prevMap;\n });\n }, [columnWithChipClass]);\n \n const originalKeys = Object.keys(data[0] || {}).filter((key) => key in headerMapper);\n const headers = originalKeys.map((key) => headerMapper[key]);\n\n if (actions.length > 0) {\n headers.push('');\n }\n\n const rows = data.map((datum: any) => originalKeys.map((key) => datum[key]));\n\n async function handlePageChange(newPage = pageNumber, newSize = pageSize) {\n setPageNumber(newPage);\n setPageSize(newSize);\n onPageChange?.(newPage, newSize);\n }\n\n function handleSortClick(column: string, direction: SortDirection) {\n setActiveSortColumn(direction ? column : null);\n setSortDirections((prev) => ({\n ...prev,\n [column]: direction,\n }));\n onSort?.(column, direction);\n }\n\n function renderActions(rowIndex: number, rowActions: RowAction[]) {\n if (!actions.length) {\n return null;\n }\n\n return (\n <TableCell className=\"sticky right-0 bg-white\">\n {rowActions.map((action) => (\n <TableButton\n key={action.id}\n className={action.className}\n isEditable={isEditable}\n onClick={() => onRowAction?.(rowIndex, action.id)}\n variant={action.variant}\n text={action.text}\n tooltipContent={action.tooltipContent}\n disabled={isLoading}\n />\n ))}\n </TableCell>\n );\n }\n\n const defaultClasses = `aspect-auto w-full`;\n const mergedClasses = className ? cn(defaultClasses, className) : defaultClasses;\n\n function getRandomColorForValue(columnKey: string, value: any): string {\n const normalizedKey = normalizeValue(value);\n\n if (chipColorMap[columnKey]?.[normalizedKey]) {\n return chipColorMap[columnKey][normalizedKey];\n }\n \n return 'bg-gray-50 text-gray-900 shadow-sm';\n }\n\n function renderChip(columnKey: string, value: any) {\n const chipMode = getChipMode(columnWithChipClass, columnKey);\n const formattedValue = formatValue(value, decimalPrecision);\n \n if (!chipMode) {\n return <>{formattedValue}</>;\n }\n\n let chipClassName = '';\n \n if (chipMode === 'useMap') {\n const valueStr = String(value);\n chipClassName = chipStylesMapping[columnKey]?.[valueStr];\n \n if (!chipClassName) {\n const valueLower = valueStr.toLowerCase().trim();\n chipClassName = SEMANTIC_CHIP_STYLES_MAP[valueLower];\n }\n\n if (!chipClassName) {\n chipClassName = 'bg-gray-50 text-gray-900 shadow-sm';\n }\n } else if (chipMode === 'useRandom') {\n chipClassName = getRandomColorForValue(columnKey, value);\n }\n\n return (\n <span\n className={cn(\n 'inline-flex items-center rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset ring-gray-500/10',\n chipClassName\n )}\n >\n {formattedValue}\n </span>\n );\n }\n\n function renderTableComponent() {\n if (isLoading || (!data || data.length === 0)) {\n return <TableLoader />;\n }\n\n return (\n <Table\n {...otherProps}\n className={`caption-bottom text-sm relative ${mergedClasses}`}\n data-slot=\"table\"\n >\n <TableHeader data-slot=\"table-header\" className=\"sticky top-0 z-2\">\n <TableRow>\n {headers.map((head: string, idx: number) => {\n const isActionColumn = actions.length > 0 && idx === headers.length - 1;\n const originalKey = originalKeys[idx];\n\n if (isActionColumn) {\n return (\n <TableHead\n key={idx}\n data-slot={`table-header-${idx}`}\n contentEditable={isEditable}\n className=\"sticky right-0 bg-slate-100\"\n >\n {head}\n </TableHead>\n );\n }\n\n return (\n <TableHeadSortable\n key={idx}\n data-slot={`table-header-${idx}`}\n sortDirection={sortDirections[originalKey] || 'asc'}\n isActive={activeSortColumn === originalKey}\n onSort={(direction) => handleSortClick(originalKey, direction)}\n sortable={!isLoading}\n isEditable={isEditable}\n >\n {head}\n </TableHeadSortable>\n );\n })}\n </TableRow>\n </TableHeader>\n <TableBody data-slot=\"table-body\">\n {rows.map((row: any[], rIdx: number) => (\n <TableRow\n key={rIdx}\n data-slot={`row-${rIdx}`}\n className=\"hover:bg-muted/50 border-b transition-colors\"\n >\n {row.map((cell: string, cIdx: number) => {\n const columnKey = originalKeys[cIdx];\n const chipMode = columnKey ? getChipMode(columnWithChipClass, columnKey) : undefined;\n const shouldRenderChip = !!chipMode;\n \n return (\n <TableCell\n key={cIdx}\n data-slot={`cell-${rIdx}-${cIdx}`}\n className=\"p-2 align-middle whitespace-nowrap\"\n contentEditable={false}\n >\n {shouldRenderChip ? renderChip(columnKey, cell) : formatValue(cell, decimalPrecision)}\n </TableCell>\n );\n })}\n {renderActions(rIdx, actions)}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n );\n }\n\n return (\n <Fragment>\n <div className=\"flex flex-col h-full overflow-hidden\">\n <ScrollArea\n data-slot=\"table-container\"\n className={mergedClasses}\n {...(height !== undefined && { style: { height } })}\n >\n {renderTableComponent()}\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n </div>\n {pagination && pagination.totalCount > 0 && (\n <div className=\"flex-shrink-0 flex items-center justify-between mt-2 w-full overflow-x-auto border-t pt-2\">\n <div className=\"flex items-center gap-2 flex-shrink-0\">\n <label htmlFor=\"page-size-select\" className=\"text-sm whitespace-nowrap\">\n Rows per page:\n </label>\n <select\n id=\"page-size-select\"\n value={pageSize}\n onChange={(e) => handlePageChange(1, Number(e.target.value))}\n className=\"border rounded px-2 py-1 text-sm cursor-pointer\"\n disabled={isLoading}\n >\n {pagination.pageSizeOptions.map((size: number) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </div>\n <div className=\"flex items-center gap-1 flex-shrink-0\">\n <span className=\"text-xs text-muted-foreground whitespace-nowrap ml-1.5\">\n {(pageNumber - 1) * pageSize + 1}–\n {Math.min(pageNumber * pageSize, pagination.totalCount)} of {pagination.totalCount}\n </span>\n <Pagination>\n <PaginationContent className=\"gap-0.2 flex-shrink-0\">\n {renderPaginationArrows(pageNumber, totalPages, isLoading, handlePageChange)}\n </PaginationContent>\n </Pagination>\n </div>\n </div>\n )}\n </Fragment>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"data-table.js","names":["useEffect","useState","Fragment","useMemo","useRef","Table","TableHeader","TableRow","TableHead","TableBody","TableCell","TableHeadSortable","TableLoader","ScrollArea","ScrollBar","Pagination","PaginationContent","renderPaginationArrows","TableButton","cn","renderNoDataFallback","formatValue","SEMANTIC_CHIP_STYLES_MAP","RANDOM_CHIP_COLOR_PALETTE","jsx","_jsx","_Fragment","jsxs","_jsxs","normalizeValue","value","undefined","str","String","trim","toLowerCase","getChipMode","columnWithChipClass","columnKey","mode","getUniqueValuesHash","data","Array","isArray","length","availableKeys","Object","keys","hashParts","forEach","includes","chipMode","uniqueNormalizedValues","Set","row","normalizedKey","add","sortedUniqueValues","from","sort","JSON","stringify","DataTable","_ref","_ref2","_pagination$values$pa","_pagination$values","_ref3","_pagination$values$pa2","_pagination$values2","_ref$data","_ref$headerMapper","headerMapper","_ref$className","className","_ref$actions","actions","_ref$isEditable","isEditable","pagination","_ref$isLoading","isLoading","onRowAction","onPageChange","onSort","sortConfig","_ref$otherProps","otherProps","height","_ref$decimalPrecision","decimalPrecision","_ref$columnWithChipCl","_ref$chipStylesMappin","chipStylesMapping","children","style","minHeight","_useState","activeSortColumn","setActiveSortColumn","_useState2","sortDirections","setSortDirections","_useState3","Number","values","pageNumber","initialPage","setPageNumber","_useState4","pageSize","initialPageSize","setPageSize","_useState5","Math","ceil","totalCount","totalPages","setTotalPages","_useState6","chipColorMap","setChipColorMap","prevDataHashRef","_ref4","_pagination$values$pa3","_pagination$values3","_ref5","_pagination$values$pa4","_pagination$values4","first","sortColumn","sortDirection","computedColorMap","newColorMap","index","colorIndex","uniqueValuesHash","current","prevMap","merged","_extends","cleaned","hasChanges","originalKeys","filter","key","headers","map","push","rows","datum","handlePageChange","_x","_x2","_handlePageChange","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","newPage","newSize","wrap","_callee$","_context","prev","next","stop","handleSortClick","column","direction","_extends2","renderActions","rowIndex","rowActions","action","onClick","id","variant","text","tooltipContent","disabled","defaultClasses","mergedClasses","getRandomColorForValue","_chipColorMap$columnK","renderChip","formattedValue","chipClassName","_chipStylesMapping$co","valueStr","valueLower","renderTableComponent","head","idx","isActionColumn","originalKey","contentEditable","isActive","sortable","rIdx","cell","cIdx","shouldRenderChip","orientation","htmlFor","onChange","e","target","pageSizeOptions","size","min"],"sources":["../../../src/plugins/helpers/data-table.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useState, Fragment, useMemo, useRef } from 'react';\nimport {\n Table,\n TableHeader,\n TableRow,\n TableHead,\n TableBody,\n TableCell,\n TableHeadSortable,\n SortDirection,\n} from '../../shadcn/components/ui/table';\nimport { TableLoader } from '../../shadcn/components/ui/skeleton';\nimport { ScrollArea, ScrollBar } from '../../shadcn/components/ui/scroll-area';\nimport {\n Pagination,\n PaginationContent,\n renderPaginationArrows,\n} from '../../shadcn/components/ui/pagination';\nimport { TableButton } from '../../shadcn/components/ui/button';\nimport { cn } from '../../shadcn/utils';\nimport { renderNoDataFallback } from './extra';\nimport { formatValue } from '../../helpers';\nimport { SEMANTIC_CHIP_STYLES_MAP, RANDOM_CHIP_COLOR_PALETTE } from '../../constants';\n\ntype RowAction = {\n id: string;\n text: string;\n variant?: string;\n tooltipContent?: string;\n className?: string;\n};\n\nexport type DataTableProps = {\n data: Record<string, any>[];\n headerMapper?: Record<string, string>;\n className?: string;\n isEditable?: boolean;\n actions?: RowAction[];\n pagination?: {\n values?: {\n pageNumber: number;\n pageSize: number;\n };\n initialPage?: number;\n initialPageSize?: number;\n totalCount: number;\n pageSizeOptions: number[];\n };\n isLoading?: boolean;\n onRowAction?: (rowIndex: number, actionId: string) => void;\n onPageChange?: (pageNumber: number, pageSize: number) => void;\n onSort?: (column: string, direction: SortDirection) => void;\n sortConfig?: Record<string, SortDirection>;\n otherProps?: Record<string, any>;\n height?: string | number;\n decimalPrecision?: number;\n columnWithChipClass?: Record<string, 'useMap' | 'useRandom'>;\n chipStylesMapping?: Record<string, Record<string, string>>;\n};\n\n/**\n * Normalizes a value to a consistent string key for color mapping.\n * Handles all value types: null/undefined, numbers, booleans, objects, arrays, dates.\n * Ensures consistent color assignment for all variations of the same logical value.\n */\nfunction normalizeValue(value: any): string {\n // Handle null/undefined\n if (value === null || value === undefined) {\n return '';\n }\n\n const str = String(value);\n \n return str.trim().toLowerCase();\n}\n\nfunction getChipMode(\n columnWithChipClass: Record<string, 'useMap' | 'useRandom'>,\n columnKey: string\n): 'useMap' | 'useRandom' | undefined {\n if (!(columnKey in columnWithChipClass)) {\n return undefined;\n }\n \n const mode = columnWithChipClass[columnKey];\n\n if (mode !== 'useMap' && mode !== 'useRandom') {\n return 'useRandom';\n }\n \n return mode;\n}\n\n/**\n * Generates a stable hash based on unique value sets per column.\n * This hash is order-independent - it only changes when the set of unique values changes,\n * not when rows are reordered (e.g., during sorting).\n */\nfunction getUniqueValuesHash(\n data: Record<string, any>[],\n columnWithChipClass: Record<string, 'useMap' | 'useRandom'>\n): string {\n if (!Array.isArray(data) || data.length === 0) {\n return '';\n }\n\n const availableKeys = Object.keys(data[0] || {});\n const hashParts: Record<string, string[]> = {};\n\n Object.keys(columnWithChipClass).forEach((columnKey) => {\n if (!availableKeys.includes(columnKey)) {\n return;\n }\n\n const chipMode = getChipMode(columnWithChipClass, columnKey);\n\n if (chipMode === 'useRandom') {\n const uniqueNormalizedValues = new Set<string>();\n data.forEach((row) => {\n const value = row[columnKey];\n const normalizedKey = normalizeValue(value);\n\n if (normalizedKey) {\n uniqueNormalizedValues.add(normalizedKey);\n }\n });\n const sortedUniqueValues = Array.from(uniqueNormalizedValues).sort();\n hashParts[columnKey] = sortedUniqueValues;\n }\n });\n\n return JSON.stringify(hashParts);\n}\n\nexport function DataTable({\n data = [],\n headerMapper = {},\n className = '',\n actions = [],\n isEditable = false,\n pagination,\n isLoading = false,\n onRowAction,\n onPageChange,\n onSort,\n sortConfig,\n otherProps = {},\n height,\n decimalPrecision = 2,\n columnWithChipClass = {},\n chipStylesMapping = {},\n}: DataTableProps) {\n\n if (!data || data.length === 0) {\n return (\n <Fragment>\n <div className=\"flex flex-col overflow-hidden\">\n <div\n data-slot=\"table-container\"\n className=\"aspect-auto w-full\"\n style={{ height: 'auto', minHeight: '180px' }}\n >\n {isLoading ? <TableLoader /> : renderNoDataFallback()}\n </div>\n </div>\n </Fragment>\n );\n }\n\n const [activeSortColumn, setActiveSortColumn] = useState<string | null>(null);\n const [sortDirections, setSortDirections] = useState<Record<string, SortDirection>>({});\n\n const [pageNumber, setPageNumber] = useState(\n Number(pagination?.values?.pageNumber ?? pagination?.initialPage ?? 1),\n );\n const [pageSize, setPageSize] = useState(\n Number(pagination?.values?.pageSize ?? pagination?.initialPageSize ?? 10),\n );\n const [totalPages, setTotalPages] = useState(\n Math.ceil((pagination?.totalCount || 0) / pageSize) || 1,\n );\n\n const [chipColorMap, setChipColorMap] = useState<Record<string, Record<string, string>>>({});\n\n const prevDataHashRef = useRef<string>('');\n\n useEffect(() => {\n setPageNumber(Number(pagination?.values?.pageNumber ?? pagination?.initialPage ?? 1));\n setPageSize(Number(pagination?.values?.pageSize ?? pagination?.initialPageSize ?? 25));\n }, [pagination]);\n\n useEffect(() => {\n setTotalPages(Math.ceil((pagination?.totalCount || 0) / pageSize) || 1);\n }, [pagination?.totalCount, pageSize]);\n\n useEffect(() => {\n if (sortConfig) {\n setSortDirections(sortConfig);\n const first = Object.keys(sortConfig)[0];\n\n if (first) {\n setActiveSortColumn(first);\n }\n }\n }, [sortConfig]);\n\n useEffect(() => {\n if (sortConfig?.sortColumn || sortConfig?.sortDirection) {\n sortConfig.sortColumn = null;\n sortConfig.sortDirection = null;\n }\n \n setActiveSortColumn(null);\n setSortDirections({});\n }, []);\n\n const computedColorMap = useMemo(() => {\n if (!Array.isArray(data) || data.length === 0) {\n return {};\n }\n\n // Get available column keys from first row\n const availableKeys = Object.keys(data[0] || {});\n \n const newColorMap: Record<string, Record<string, string>> = {};\n\n // Process each column that uses random chips\n Object.keys(columnWithChipClass).forEach((columnKey) => {\n // Validate column key exists in data\n if (!availableKeys.includes(columnKey)) {\n return;\n }\n\n const chipMode = getChipMode(columnWithChipClass, columnKey);\n\n if (chipMode === 'useRandom') {\n if (!newColorMap[columnKey]) {\n newColorMap[columnKey] = {};\n }\n\n const uniqueNormalizedValues = new Set<string>();\n data.forEach((row) => {\n const value = row[columnKey];\n const normalizedKey = normalizeValue(value);\n\n if (normalizedKey) {\n uniqueNormalizedValues.add(normalizedKey);\n }\n });\n\n const sortedUniqueValues = Array.from(uniqueNormalizedValues).sort();\n\n sortedUniqueValues.forEach((normalizedKey, index) => {\n if (!newColorMap[columnKey][normalizedKey]) {\n const colorIndex = index % RANDOM_CHIP_COLOR_PALETTE.length;\n newColorMap[columnKey][normalizedKey] = RANDOM_CHIP_COLOR_PALETTE[colorIndex];\n }\n });\n }\n });\n\n return newColorMap;\n }, [data, columnWithChipClass]);\n\n useEffect(() => {\n const uniqueValuesHash = getUniqueValuesHash(data, columnWithChipClass);\n \n // Only update if the set of unique values actually changed\n if (uniqueValuesHash !== prevDataHashRef.current) {\n prevDataHashRef.current = uniqueValuesHash;\n \n setChipColorMap((prevMap) => {\n const merged = { ...prevMap };\n Object.keys(computedColorMap).forEach((columnKey) => {\n merged[columnKey] = { ...computedColorMap[columnKey], ...merged[columnKey] };\n });\n\n return merged;\n });\n }\n }, [computedColorMap, data, columnWithChipClass]);\n\n useEffect(() => {\n setChipColorMap((prevMap) => {\n const cleaned = { ...prevMap };\n let hasChanges = false;\n\n Object.keys(cleaned).forEach((columnKey) => {\n const chipMode = getChipMode(columnWithChipClass, columnKey);\n\n if (!chipMode) {\n delete cleaned[columnKey];\n hasChanges = true;\n }\n });\n \n return hasChanges ? cleaned : prevMap;\n });\n }, [columnWithChipClass]);\n \n const originalKeys = Object.keys(data[0] || {}).filter((key) => key in headerMapper);\n const headers = originalKeys.map((key) => headerMapper[key]);\n\n if (actions.length > 0) {\n headers.push('');\n }\n\n const rows = data.map((datum: any) => originalKeys.map((key) => datum[key]));\n\n async function handlePageChange(newPage = pageNumber, newSize = pageSize) {\n setPageNumber(newPage);\n setPageSize(newSize);\n onPageChange?.(newPage, newSize);\n }\n\n function handleSortClick(column: string, direction: SortDirection) {\n setActiveSortColumn(direction ? column : null);\n setSortDirections((prev) => ({\n ...prev,\n [column]: direction,\n }));\n onSort?.(column, direction);\n }\n\n function renderActions(rowIndex: number, rowActions: RowAction[]) {\n if (!actions.length) {\n return null;\n }\n\n return (\n <TableCell className=\"sticky right-0 bg-white\">\n {rowActions.map((action) => (\n <TableButton\n key={action.id}\n className={action.className}\n isEditable={isEditable}\n onClick={() => onRowAction?.(rowIndex, action.id)}\n variant={action.variant}\n text={action.text}\n tooltipContent={action.tooltipContent}\n disabled={isLoading}\n />\n ))}\n </TableCell>\n );\n }\n\n const defaultClasses = `aspect-auto w-full`;\n const mergedClasses = className ? cn(defaultClasses, className) : defaultClasses;\n\n function getRandomColorForValue(columnKey: string, value: any): string {\n const normalizedKey = normalizeValue(value);\n\n if (chipColorMap[columnKey]?.[normalizedKey]) {\n return chipColorMap[columnKey][normalizedKey];\n }\n \n return 'bg-gray-50 text-gray-900 shadow-sm';\n }\n\n function renderChip(columnKey: string, value: any) {\n const chipMode = getChipMode(columnWithChipClass, columnKey);\n const formattedValue = formatValue(value, decimalPrecision);\n \n if (!chipMode) {\n return <>{formattedValue}</>;\n }\n\n let chipClassName = '';\n \n if (chipMode === 'useMap') {\n const valueStr = String(value);\n chipClassName = chipStylesMapping[columnKey]?.[valueStr];\n \n if (!chipClassName) {\n const valueLower = valueStr.toLowerCase().trim();\n chipClassName = SEMANTIC_CHIP_STYLES_MAP[valueLower];\n }\n\n if (!chipClassName) {\n chipClassName = 'bg-gray-50 text-gray-900 shadow-sm';\n }\n } else if (chipMode === 'useRandom') {\n chipClassName = getRandomColorForValue(columnKey, value);\n }\n\n return (\n <span\n className={cn(\n 'inline-flex items-center rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset ring-gray-500/10',\n chipClassName\n )}\n >\n {formattedValue}\n </span>\n );\n }\n\n function renderTableComponent() {\n if (isLoading || (!data || data.length === 0)) {\n return <TableLoader />;\n }\n\n return (\n <Table\n {...otherProps}\n className={`caption-bottom text-sm relative ${mergedClasses}`}\n data-slot=\"table\"\n >\n <TableHeader data-slot=\"table-header\" className=\"sticky top-0 z-2\">\n <TableRow>\n {headers.map((head: string, idx: number) => {\n const isActionColumn = actions.length > 0 && idx === headers.length - 1;\n const originalKey = originalKeys[idx];\n\n if (isActionColumn) {\n return (\n <TableHead\n key={idx}\n data-slot={`table-header-${idx}`}\n contentEditable={isEditable}\n className=\"sticky right-0 bg-slate-100\"\n >\n {head}\n </TableHead>\n );\n }\n\n return (\n <TableHeadSortable\n key={idx}\n data-slot={`table-header-${idx}`}\n sortDirection={sortDirections[originalKey] || 'asc'}\n isActive={activeSortColumn === originalKey}\n onSort={(direction) => handleSortClick(originalKey, direction)}\n sortable={!isLoading}\n isEditable={isEditable}\n >\n {head}\n </TableHeadSortable>\n );\n })}\n </TableRow>\n </TableHeader>\n <TableBody data-slot=\"table-body\">\n {rows.map((row: any[], rIdx: number) => (\n <TableRow\n key={rIdx}\n data-slot={`row-${rIdx}`}\n className=\"hover:bg-muted/50 border-b transition-colors\"\n >\n {row.map((cell: string, cIdx: number) => {\n const columnKey = originalKeys[cIdx];\n const chipMode = columnKey ? getChipMode(columnWithChipClass, columnKey) : undefined;\n const shouldRenderChip = !!chipMode;\n \n return (\n <TableCell\n key={cIdx}\n data-slot={`cell-${rIdx}-${cIdx}`}\n className=\"p-2 align-middle whitespace-nowrap\"\n contentEditable={false}\n >\n {shouldRenderChip ? renderChip(columnKey, cell) : formatValue(cell, decimalPrecision)}\n </TableCell>\n );\n })}\n {renderActions(rIdx, actions)}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n );\n }\n\n return (\n <Fragment>\n <div className=\"flex flex-col h-full overflow-hidden\">\n <ScrollArea\n data-slot=\"table-container\"\n className={mergedClasses}\n {...(height !== undefined && { style: { height } })}\n >\n {renderTableComponent()}\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n </div>\n {pagination && pagination.totalCount > 0 && (\n <div className=\"flex-shrink-0 flex items-center justify-between mt-2 w-full overflow-x-auto border-t pt-2\">\n <div className=\"flex items-center gap-2 flex-shrink-0\">\n <label htmlFor=\"page-size-select\" className=\"text-sm whitespace-nowrap\">\n Rows per page:\n </label>\n <select\n id=\"page-size-select\"\n value={pageSize}\n onChange={(e) => handlePageChange(1, Number(e.target.value))}\n className=\"border rounded px-2 py-1 text-sm cursor-pointer\"\n disabled={isLoading}\n >\n {pagination.pageSizeOptions.map((size: number) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </div>\n <div className=\"flex items-center gap-1 flex-shrink-0\">\n <span className=\"text-xs text-muted-foreground whitespace-nowrap ml-1.5\">\n {(pageNumber - 1) * pageSize + 1}–\n {Math.min(pageNumber * pageSize, pagination.totalCount)} of {pagination.totalCount}\n </span>\n <Pagination>\n <PaginationContent className=\"gap-0.2 flex-shrink-0\">\n {renderPaginationArrows(pageNumber, totalPages, isLoading, handlePageChange)}\n </PaginationContent>\n </Pagination>\n </div>\n </div>\n )}\n </Fragment>\n );\n}\n"],"mappings":"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","ignoreList":[]}