@peak-ai/canvas 1.4.26-rc.3 → 1.4.26-rc.5

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,13 +1,9 @@
1
1
  import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _regeneratorRuntime from"@babel/runtime/regenerator";/* eslint-disable @typescript-eslint/no-explicit-any */import React,{useEffect,useRef}from"react";// eslint-disable-next-line import/no-named-as-default
2
- import grapesjs from"grapesjs";import"grapesjs/dist/css/grapes.min.css";import{TypesToRegister}from"./constants";import{toKebabCase}from"./helpers";import{createGrapesjsShadcnGenericPlugin}from"./plugins/grapejs-plugin";import{StyledEditor}from"./index.styles";import{tailwindCompiledCss}from"./helpers/css";import{datePickerCss}from"./helpers/date-picker";import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";function setComponentProperties(editor,isPreview){function setPropertiesRecursively(comp){comp.set({editable:!isPreview,draggable:!isPreview,droppable:!isPreview&&comp.getName()!=="Shadcn-generic",selectable:!isPreview,hoverable:!isPreview,highlightable:!isPreview,copyable:false,resizable:false,removable:!isPreview,badgable:false});if(!isPreview){comp.set("toolbar",[{attributes:{"class":"fa fa-arrows"},command:"tlb-move"},{attributes:{"class":"fa fa-trash"},command:"tlb-delete"}])}comp.components().forEach(setPropertiesRecursively)}if(isPreview){editor.runCommand("core:preview")}else{editor.stopCommand("core:preview")}var wrapper=editor.getWrapper();wrapper==null||wrapper.find("*").forEach(setPropertiesRecursively)}function convertStyles(stylesArray){return stylesArray.map(function(block){var selectors=Array.isArray(block.selectors)?block.selectors.join(", "):block.selectors;var declarations=Object.entries(block.style).map(function(_ref){var prop=_ref[0],value=_ref[1];return toKebabCase(prop)+": "+value+";"}).join(" ");return selectors+" { "+declarations+" }"}).join("\n")}function createActionCardConfig(action){var icon=action.icon,title=action.title,description=action.description;return{type:"shadcn-generic",componentName:"ActionCard",badgable:false,copyable:false,removable:true,draggable:true,componentProps:{icon:icon,headerContent:title,bodyContent:description}}}function expandActions(node){if(node.type==="shadcn-generic"&&node.componentName==="Actions"){var _node$componentProps;var actions=(_node$componentProps=node.componentProps)==null?void 0:_node$componentProps.actions;if(Array.isArray(actions)&&actions.length>0){return _extends({},node,{type:"div",classes:["dashboard-cards"].concat(node.classes||[]),componentName:undefined,componentProps:undefined,components:actions.map(function(action,i){return _extends({},createActionCardConfig(action),{id:node.id+"--action-card-"+i})})})}}if(Array.isArray(node.components)){return _extends({},node,{components:node.components.map(expandActions)})}return node}function setInteracting(renderedComponents,components,inProgress){components.forEach(function(_ref2){var componentId=_ref2.componentId,showLoader=_ref2.showLoader;if(!showLoader){return}var gjsModel=renderedComponents[componentId];if(gjsModel){gjsModel.set("attributes",_extends({},gjsModel.get("attributes"),{interactionApiInProgress:inProgress}))}})}function expandActionsComponent(model,actions){model.components("");actions.forEach(function(action){model.append(createActionCardConfig(action))});model.set("type","div");model.addClass("dashboard-cards");model.set("componentName",undefined);model.set("componentProps",{})}function GrapesjsCanvas(_ref3){var json=_ref3.json,_ref3$mode=_ref3.mode,mode=_ref3$mode===void 0?"preview":_ref3$mode,setEditor=_ref3.setEditor,performInteraction=_ref3.performInteraction,_ref3$newDataNotifier=_ref3.newDataNotifier,newDataNotifier=_ref3$newDataNotifier===void 0?function(){// no op
3
- }:_ref3$newDataNotifier,setHasChanged=_ref3.setHasChanged,isStreaming=_ref3.isStreaming;var editorRef=useRef(null);var editorInstance=useRef(null);var renderedComponents=useRef({});var isStreamingRef=useRef(isStreaming);var isSystemUpdateRef=useRef(false);var lastJsonRef=useRef("");var isEditorAliveRef=useRef(false);useEffect(function(){isStreamingRef.current=isStreaming},[isStreaming]);useEffect(function(){newDataNotifier(function(props){if(!props){return true}var componentId=props.componentId,_props$newProps=props.newProps,newProps=_props$newProps===void 0?{}:_props$newProps,_props$newAttributes=props.newAttributes,newAttributes=_props$newAttributes===void 0?{}:_props$newAttributes;var model=renderedComponents.current[componentId];if(!model){return false}var filteredProps=_extends({},newProps);Object.keys(filteredProps).forEach(function(key){var value=filteredProps[key];if(value&&typeof value==="object"&&value.name==="__peak_placeholder"){delete filteredProps[key]}});var parsedNewProps=_extends({},filteredProps);if(filteredProps.pagination){parsedNewProps.pagination=_extends({},model.get("componentProps").pagination||{},filteredProps.pagination)}var isActions=model.get("componentName")==="Actions";if(isActions&&Array.isArray(parsedNewProps.actions)&&parsedNewProps.actions.length>0){var _model$components$at;var alreadyExpanded=model.components().length>0&&((_model$components$at=model.components().at(0))==null?void 0:_model$components$at.get("componentName"))==="ActionCard";if(!alreadyExpanded){expandActionsComponent(model,parsedNewProps.actions);return true}}model.set("componentProps",_extends({},model.get("componentProps"),parsedNewProps));model.set("attributes",_extends({},model.get("attributes"),newAttributes));return true})},[newDataNotifier]);useEffect(function(){if(!editorRef.current){return}// destroy existing editor
4
- if(editorInstance.current){try{editorInstance.current.destroy()}catch(_unused){/* ignore */}}var editor=grapesjs.init({container:editorRef.current,height:"100%",plugins:[createGrapesjsShadcnGenericPlugin(mode,/*#__PURE__*/function(){var _ref4=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(payload){var _editorInstance$curre;var updatedJson,apiResponse,componentUpdates;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.next=2;return(_editorInstance$curre=editorInstance.current)==null?void 0:_editorInstance$curre.store();case 2:updatedJson=_context.sent;setInteracting(renderedComponents.current,payload.affectedComponents,true);_context.prev=4;_context.next=7;return performInteraction(_extends({},payload,{json:updatedJson}));case 7:apiResponse=_context.sent;componentUpdates=apiResponse||{};Object.entries(componentUpdates).forEach(function(_ref5){var key=_ref5[0],value=_ref5[1];var model=renderedComponents.current[key];if(model){model.set("componentProps",_extends({},model.get("componentProps"),value,{error:undefined,isMissing:undefined}));model.set("attributes",_extends({},model.get("attributes"),{error:undefined}))}});return _context.abrupt("return",componentUpdates);case 13:_context.prev=13;_context.t0=_context["catch"](4);payload.affectedComponents.forEach(function(_ref6){var componentId=_ref6.componentId;var model=renderedComponents.current[componentId];if(model){var msg=_context.t0 instanceof Error?_context.t0.message:"Something went wrong.";model.set("attributes",_extends({},model.get("attributes"),{error:msg}));model.set("componentProps",_extends({},model.get("componentProps"),{error:msg}))}});throw _context.t0;case 17:_context.prev=17;setInteracting(renderedComponents.current,payload.affectedComponents,false);return _context.finish(17);case 20:case"end":return _context.stop()}},_callee,null,[[4,13,17,20]])}));return function(_x){return _ref4.apply(this,arguments)}}(),renderedComponents.current,setHasChanged)],storageManager:{type:"none"},richTextEditor:{actions:["bold","italic","underline","strikethrough"]}});// hide iframe until ready
5
- var iframe=editor.Canvas.getFrameEl();if(iframe){iframe.style.visibility="hidden";iframe.style.opacity="0"}// wait for GrapesJS to fully load before injecting
6
- editor.on("load",function(){var _json$pages;var canvasDoc=editor.Canvas.getDocument();// inject tailwind + datepicker css
7
- var styleEl=canvasDoc.createElement("style");styleEl.textContent="\n "+tailwindCompiledCss+"\n "+datePickerCss+"\n ::-webkit-scrollbar { width: 0; height: 0; }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none;\n scrollbar-width: none;\n }\n ";canvasDoc.head.appendChild(styleEl);// set components and styles
8
- if(json!=null&&(_json$pages=json.pages)!=null&&(_json$pages=_json$pages[0])!=null&&(_json$pages=_json$pages.frames)!=null&&_json$pages[0]){var raw=json.pages[0].frames[0].component;var processed=expandActions(raw);editor.setComponents(processed);editor.setStyle(convertStyles(json.styles||[]));setComponentProperties(editor,mode==="preview")}// reveal iframe
9
- iframe.style.transition="opacity 0.3s ease-in";iframe.style.visibility="visible";iframe.style.opacity="1"});// dirty check
10
- 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(editorInstance.current){_context2.next=4;break}return _context2.abrupt("return");case 4:_context2.prev=4;_context2.next=7;return editorInstance.current.store();case 7:stored=_context2.sent;newJson=JSON.stringify(stored);if(newJson!==lastJsonRef.current){setHasChanged(true);lastJsonRef.current=newJson}_context2.next=14;break;case 12:_context2.prev=12;_context2.t0=_context2["catch"](4);case 14:case"end":return _context2.stop()}},_callee2,null,[[4,12]])}));return _checkDirty.apply(this,arguments)}var debouncedCheck=function(){var t=null;return function(){if(t){clearTimeout(t)}t=setTimeout(checkDirty,200)}}();["component:add","component:remove","component:update:content","style:update","component:drag:end","rte:change"].forEach(function(evt){return editor.on(evt,debouncedCheck)});editor.on("component:update",function(model,prop){if(["attributes","componentProps","content"].includes(prop)){debouncedCheck()}});// register custom types
11
- TypesToRegister.forEach(function(_ref7){var type=_ref7.type,tagName=_ref7.tagName;if(!editor.DomComponents.getType(type)){editor.DomComponents.addType(type,{model:{defaults:{tagName:tagName}},view:{}})}});editorInstance.current=editor;setEditor(editor);isEditorAliveRef.current=true;// eslint-disable-next-line consistent-return
12
- return function cleanup(){editor.destroy();isEditorAliveRef.current=false}},[json,mode]);return/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(StyledEditor,{}),/*#__PURE__*/_jsx("div",{ref:editorRef,id:"grapesjs-editor",style:{height:"100%",minHeight:"600px",transition:"opacity 0.25s ease-in"}})]})}export default GrapesjsCanvas;
2
+ import grapesjs from"grapesjs";import"grapesjs/dist/css/grapes.min.css";import tailwind from"grapesjs-tailwind";import{TypesToRegister}from"./constants";import{toKebabCase}from"./helpers";import{createGrapesjsShadcnGenericPlugin}from"./plugins/grapejs-plugin";import{StyledEditor}from"./index.styles";import{tailwindCompiledCss}from"./helpers/css";import{datePickerCss}from"./helpers/date-picker";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";function setComponentProperties(editor,isPreview){function setPropertiesRecursively(comp){comp.set({editable:!isPreview,draggable:!isPreview,droppable:!isPreview&&comp.getName()!=="Shadcn-generic",selectable:!isPreview,hoverable:!isPreview,highlightable:!isPreview,copyable:false,resizable:false,removable:!isPreview,badgable:false});if(!isPreview){comp.set("toolbar",[{attributes:{"class":"fa fa-arrows"},command:"tlb-move"},{attributes:{"class":"fa fa-trash"},command:"tlb-delete"}])}comp.components().forEach(setPropertiesRecursively)}if(isPreview){editor.runCommand("core:preview")}else{editor.stopCommand("core:preview")}var wrapper=editor.getWrapper();wrapper==null||wrapper.find("*").forEach(setPropertiesRecursively)}function convertStyles(stylesArray){return stylesArray.map(function(block){var selectors=Array.isArray(block.selectors)?block.selectors.join(", "):block.selectors;var declarations=Object.entries(block.style).map(function(_ref){var prop=_ref[0],value=_ref[1];return toKebabCase(prop)+": "+value+";"}).join(" ");return selectors+" { "+declarations+" }"}).join("\n")}function createActionCardConfig(action){var icon=action.icon,title=action.title,description=action.description;return{type:"shadcn-generic",componentName:"ActionCard",badgable:false,copyable:false,removable:true,draggable:true,componentProps:{icon:icon,headerContent:title,bodyContent:description}}}function expandActions(node){if(node.type==="shadcn-generic"&&node.componentName==="Actions"){var _node$componentProps;var actions=(_node$componentProps=node.componentProps)==null?void 0:_node$componentProps.actions;if(Array.isArray(actions)&&actions.length>0){return _extends({},node,{type:"div",classes:["dashboard-cards"].concat(node.classes||[]),componentName:undefined,componentProps:undefined,components:actions.map(function(action,i){return _extends({},createActionCardConfig(action),{id:node.id+"--action-card-"+i})})})}return node}if(Array.isArray(node.components)){return _extends({},node,{components:node.components.map(expandActions)})}return node}function setInteracting(renderedComponents,components,inProgress){components.forEach(function(component){var componentId=component.componentId,showLoader=component.showLoader;if(!showLoader){return}var gjsModel=renderedComponents[componentId];if(gjsModel){gjsModel.set("attributes",_extends({},gjsModel.get("attributes"),{interactionApiInProgress:inProgress}))}})}function expandActionsComponent(model,actions){model.components("");actions.forEach(function(action){model.append(createActionCardConfig(action))});model.set("type","div");model.addClass("dashboard-cards");model.set("componentName",undefined);model.set("componentProps",{})}function GrapesjsCanvas(_ref2){var json=_ref2.json,_ref2$mode=_ref2.mode,mode=_ref2$mode===void 0?"preview":_ref2$mode,setEditor=_ref2.setEditor,performInteraction=_ref2.performInteraction,_ref2$newDataNotifier=_ref2.newDataNotifier,newDataNotifier=_ref2$newDataNotifier===void 0?function(){// no op
3
+ }:_ref2$newDataNotifier,setHasChanged=_ref2.setHasChanged,isStreaming=_ref2.isStreaming;var editorRef=useRef(null);var editorInstance=useRef(null);var renderedComponents=useRef({});var isStreamingRef=useRef(isStreaming);var isSystemUpdateRef=useRef(false);var lastJsonRef=useRef("");var isEditorAliveRef=useRef(false);useEffect(function(){isStreamingRef.current=isStreaming},[isStreaming]);function notificationHandler(props){if(!props){return true}var componentId=props.componentId,_props$newProps=props.newProps,newProps=_props$newProps===void 0?{}:_props$newProps,_props$newAttributes=props.newAttributes,newAttributes=_props$newAttributes===void 0?{}:_props$newAttributes;var model=renderedComponents.current[componentId];if(!model){return false}// Filter out complex placeholder objects that shouldn't be stored in the model, done intentionally to keep grapejs out of errors
4
+ var filteredProps=_extends({},newProps);Object.keys(filteredProps).forEach(function(key){var value=filteredProps[key];if(value&&typeof value==="object"&&value.name==="__peak_placeholder"){delete filteredProps[key]}});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
5
+ var isActionsComponent=model.get("componentName")==="Actions";var hasValidActionsData=parsedNewProps.actions&&parsedNewProps.actions!==null&&Array.isArray(parsedNewProps.actions)&&parsedNewProps.actions.length>0;if(isActionsComponent&&hasValidActionsData){var _model$components$at;var isAlreadyExpanded=model.components().length>0&&((_model$components$at=model.components().at(0))==null?void 0:_model$components$at.get("componentName"))==="ActionCard";if(!isAlreadyExpanded){expandActionsComponent(model,parsedNewProps.actions);return true}}model.set("componentProps",_extends({},model.get("componentProps"),parsedNewProps));model.set("attributes",_extends({},model.get("attributes"),newAttributes));return true}useEffect(function(){newDataNotifier(notificationHandler)},[]);function performInteractionWrapper(_x){return _performInteractionWrapper.apply(this,arguments)}function _performInteractionWrapper(){_performInteractionWrapper=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(payload){var _editorInstance$curre;var updatedJson,apiResponse,componentUpdates;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:_context4.next=2;return(_editorInstance$curre=editorInstance.current)==null?void 0:_editorInstance$curre.store();case 2:updatedJson=_context4.sent;setInteracting(renderedComponents.current,payload.affectedComponents,true);_context4.prev=4;_context4.next=7;return performInteraction(_extends({},payload,{json:updatedJson}));case 7:apiResponse=_context4.sent;componentUpdates=apiResponse||{};Object.entries(componentUpdates).forEach(function(_ref6){var key=_ref6[0],value=_ref6[1];var model=renderedComponents.current[key];if(model){model.set("attributes",_extends({},model.get("attributes"),{error:undefined}));model.set("componentProps",_extends({},model.get("componentProps"),value,{error:undefined,isMissing:undefined}))}});return _context4.abrupt("return",componentUpdates);case 13:_context4.prev=13;_context4.t0=_context4["catch"](4);payload.affectedComponents.forEach(function(componentId){var model=renderedComponents.current[componentId];if(model){var errorMessage=_context4.t0 instanceof Error?_context4.t0.message:"Something went wrong. Please try again.";model.set("attributes",_extends({},model.get("attributes"),{error:errorMessage}));model.set("componentProps",_extends({},model.get("componentProps"),{error:errorMessage,isMissing:undefined}))}});throw _context4.t0;case 17:_context4.prev=17;setInteracting(renderedComponents.current,payload.affectedComponents,false);return _context4.finish(17);case 20:case"end":return _context4.stop()}},_callee4,null,[[4,13,17,20]])}));return _performInteractionWrapper.apply(this,arguments)}useEffect(function(){var _json$pages,_json$pages$0$frames;if(!editorRef.current){return function(){// no op
6
+ }}if(editorInstance.current){editorInstance.current.destroy();editorInstance.current=null;isEditorAliveRef.current=false}var currentMode=mode;var editor=grapesjs.init({container:editorRef.current,height:"100%",plugins:[tailwind,createGrapesjsShadcnGenericPlugin(currentMode,performInteractionWrapper,renderedComponents.current,setHasChanged)],storageManager:{type:"none"},richTextEditor:{actions:["bold","italic","underline","strikethrough"]},canvas:{customBadgeLabel:function customBadgeLabel(component){var tagName=component.get("tagName");return tagName==="body"?"":tagName||""}}});isEditorAliveRef.current=true;function checkDirty(){return _checkDirty.apply(this,arguments)}function _checkDirty(){_checkDirty=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(){var stored,newJson;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:if(!(isStreamingRef.current||isSystemUpdateRef.current)){_context3.next=2;break}return _context3.abrupt("return");case 2:if(!(!isEditorAliveRef.current||!editorInstance.current)){_context3.next=4;break}return _context3.abrupt("return");case 4:stored=null;_context3.prev=5;_context3.next=8;return editorInstance.current.store();case 8:stored=_context3.sent;_context3.next=14;break;case 11:_context3.prev=11;_context3.t0=_context3["catch"](5);return _context3.abrupt("return");case 14:if(stored){_context3.next=16;break}return _context3.abrupt("return");case 16:newJson=JSON.stringify(stored);if(newJson!==lastJsonRef.current){setHasChanged(true);lastJsonRef.current=newJson}case 18:case"end":return _context3.stop()}},_callee3,null,[[5,11]])}));return _checkDirty.apply(this,arguments)}var debouncedCheckDirty=function(){var timeout=null;return function(){if(timeout){clearTimeout(timeout)}timeout=setTimeout(checkDirty,200)}}();["component:add","component:remove","component:update:content","style:update","component:drag:end","rte:change"].forEach(function(evt){return editor.on(evt,debouncedCheckDirty)});editor.on("component:update",function(model,prop){if(["attributes","componentProps","content"].includes(prop)){debouncedCheckDirty()}});// Tailwind CSS rules aren't fully added to our component
7
+ // So, adding them from here!
8
+ editor.on("load",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var iframe,canvasDoc,style;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:iframe=editor.Canvas.getFrameEl();if(iframe){iframe.style.opacity="0";iframe.style.transition="opacity 0.3s ease-in"}canvasDoc=editor.Canvas.getDocument();style=canvasDoc.createElement("style");style.textContent="\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 ";canvasDoc.head.appendChild(style);requestAnimationFrame(function(){if(iframe){iframe.style.opacity="1"}});isSystemUpdateRef.current=true;setComponentProperties(editor,mode==="preview");_context.t0=JSON;_context.next=12;return editor.store();case 12:_context.t1=_context.sent;lastJsonRef.current=_context.t0.stringify.call(_context.t0,_context.t1);isSystemUpdateRef.current=false;case 15:case"end":return _context.stop()}},_callee)})));editorInstance.current=editor;if(setEditor){setEditor(editor)}TypesToRegister.forEach(function(_ref4){var type=_ref4.type,tagName=_ref4.tagName;if(!editor.DomComponents.getType(type)){editor.DomComponents.addType(type,{model:{defaults:{tagName:tagName}},view:{}})}});if(json&&((_json$pages=json.pages)==null?void 0:_json$pages.length)>0&&((_json$pages$0$frames=json.pages[0].frames)==null?void 0:_json$pages$0$frames.length)>0){isSystemUpdateRef.current=true;var raw=json.pages[0].frames[0].component;var processed=expandActions(raw);editor.setComponents(processed);var cssText=convertStyles(json.styles||[]);editor.setStyle(cssText);editor.on("load",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(){return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.t0=JSON;_context2.next=3;return editor.store();case 3:_context2.t1=_context2.sent;lastJsonRef.current=_context2.t0.stringify.call(_context2.t0,_context2.t1);isSystemUpdateRef.current=false;case 6:case"end":return _context2.stop()}},_callee2)})))}return function cleanup(){editor.destroy();isEditorAliveRef.current=false}},[json,mode]);return/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(StyledEditor,{}),/*#__PURE__*/_jsx("div",{ref:editorRef,id:"grapesjs-editor"})]})}export default GrapesjsCanvas;
13
9
  //# sourceMappingURL=GrapesjsCanvas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GrapesjsCanvas.js","names":["React","useEffect","useRef","grapesjs","TypesToRegister","toKebabCase","createGrapesjsShadcnGenericPlugin","StyledEditor","tailwindCompiledCss","datePickerCss","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","setComponentProperties","editor","isPreview","setPropertiesRecursively","comp","set","editable","draggable","droppable","getName","selectable","hoverable","highlightable","copyable","resizable","removable","badgable","attributes","command","components","forEach","runCommand","stopCommand","wrapper","getWrapper","find","convertStyles","stylesArray","map","block","selectors","Array","isArray","join","declarations","Object","entries","style","_ref","prop","value","createActionCardConfig","action","icon","title","description","type","componentName","componentProps","headerContent","bodyContent","expandActions","node","_node$componentProps","actions","length","_extends","classes","concat","undefined","i","id","setInteracting","renderedComponents","inProgress","_ref2","componentId","showLoader","gjsModel","get","interactionApiInProgress","expandActionsComponent","model","append","addClass","GrapesjsCanvas","_ref3","json","_ref3$mode","mode","setEditor","performInteraction","_ref3$newDataNotifier","newDataNotifier","setHasChanged","isStreaming","editorRef","editorInstance","isStreamingRef","isSystemUpdateRef","lastJsonRef","isEditorAliveRef","current","props","_props$newProps","newProps","_props$newAttributes","newAttributes","filteredProps","keys","key","name","parsedNewProps","pagination","isActions","_model$components$at","alreadyExpanded","at","destroy","_unused","init","container","height","plugins","_ref4","_asyncToGenerator","_regeneratorRuntime","mark","_callee","payload","_editorInstance$curre","updatedJson","apiResponse","componentUpdates","wrap","_callee$","_context","prev","next","store","sent","affectedComponents","_ref5","error","isMissing","abrupt","t0","_ref6","msg","Error","message","finish","stop","_x","apply","arguments","storageManager","richTextEditor","iframe","Canvas","getFrameEl","visibility","opacity","on","_json$pages","canvasDoc","getDocument","styleEl","createElement","textContent","head","appendChild","pages","frames","raw","component","processed","setComponents","setStyle","styles","transition","checkDirty","_checkDirty","_callee2","stored","newJson","_callee2$","_context2","JSON","stringify","debouncedCheck","t","clearTimeout","setTimeout","evt","includes","_ref7","tagName","DomComponents","getType","addType","defaults","view","cleanup","children","ref","minHeight"],"sources":["../src/GrapesjsCanvas.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useRef } from 'react';\n// eslint-disable-next-line import/no-named-as-default\nimport grapesjs, { Component, Editor } from 'grapesjs';\nimport 'grapesjs/dist/css/grapes.min.css';\nimport { TypesToRegister } from './constants';\nimport { toKebabCase } from './helpers';\nimport { createGrapesjsShadcnGenericPlugin } from './plugins/grapejs-plugin';\nimport { StyledEditor } from './index.styles';\nimport { tailwindCompiledCss } from './helpers/css';\nimport { datePickerCss } from './helpers/date-picker';\n\ntype NotificationHandler = (newData: {\n componentId: string;\n newProps: Record<string, any>;\n newAttributes: Record<string, any>;\n}) => boolean;\n\ntype GrapesjsCanvasProps = {\n json: any;\n mode?: 'editor' | 'preview';\n setEditor: (editor: Editor) => void;\n performInteraction: (payload: Record<string, any>) => Promise<Record<string, any> | undefined>;\n newDataNotifier: (notifHandler: NotificationHandler) => void;\n setHasChanged: (hasChanged: boolean) => void;\n isStreaming: boolean;\n};\n\nfunction setComponentProperties(editor: Editor, isPreview: boolean) {\n function setPropertiesRecursively(comp: Component) {\n comp.set({\n editable: !isPreview,\n draggable: !isPreview,\n droppable: !isPreview && comp.getName() !== 'Shadcn-generic',\n selectable: !isPreview,\n hoverable: !isPreview,\n highlightable: !isPreview,\n copyable: false,\n resizable: false,\n removable: !isPreview,\n badgable: false,\n });\n\n if (!isPreview) {\n comp.set('toolbar', [\n { attributes: { class: 'fa fa-arrows' }, command: 'tlb-move' },\n { attributes: { class: 'fa fa-trash' }, command: 'tlb-delete' },\n ]);\n }\n\n comp.components().forEach(setPropertiesRecursively);\n }\n\n if (isPreview) {\n editor.runCommand('core:preview');\n } else {\n editor.stopCommand('core:preview');\n }\n\n const wrapper = editor.getWrapper();\n wrapper?.find('*').forEach(setPropertiesRecursively);\n}\n\nfunction convertStyles(stylesArray: any[]): string {\n return stylesArray\n .map((block) => {\n const selectors = Array.isArray(block.selectors)\n ? block.selectors.join(', ')\n : block.selectors;\n const declarations = Object.entries(block.style)\n .map(([prop, value]) => `${toKebabCase(prop)}: ${value};`)\n .join(' ');\n\n return `${selectors} { ${declarations} }`;\n })\n .join('\\n');\n}\n\nfunction createActionCardConfig(action: any): 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\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(({ componentId, showLoader }) => {\n if (!showLoader) {\n return;\n }\n\n const gjsModel = renderedComponents[componentId];\n\n if (gjsModel) {\n gjsModel.set('attributes', {\n ...gjsModel.get('attributes'),\n interactionApiInProgress: inProgress,\n });\n }\n });\n}\n\nfunction expandActionsComponent(model: Component, actions: any[]): void {\n model.components('');\n\n actions.forEach((action: any) => {\n model.append(createActionCardConfig(action));\n });\n\n model.set('type', 'div');\n model.addClass('dashboard-cards');\n model.set('componentName', undefined);\n model.set('componentProps', {});\n}\n\nfunction GrapesjsCanvas({\n json,\n mode = 'preview',\n setEditor,\n performInteraction,\n newDataNotifier = () => {\n // no op\n },\n setHasChanged,\n isStreaming,\n}: GrapesjsCanvasProps) {\n const editorRef = useRef<HTMLDivElement>(null);\n const editorInstance = useRef<Editor | null>(null);\n const renderedComponents = useRef<Record<string, Component>>({});\n const isStreamingRef = useRef(isStreaming);\n const isSystemUpdateRef = useRef(false);\n const lastJsonRef = useRef<string>('');\n const isEditorAliveRef = useRef(false);\n\n useEffect(() => {\n isStreamingRef.current = isStreaming;\n }, [isStreaming]);\n\n useEffect(() => {\n newDataNotifier((props) => {\n if (!props) {\n return true;\n }\n\n const { componentId, newProps = {}, newAttributes = {} } = props;\n const model = renderedComponents.current[componentId];\n\n if (!model) {\n return false;\n }\n\n const filteredProps = { ...newProps };\n Object.keys(filteredProps).forEach((key) => {\n const value = filteredProps[key];\n\n if (value && typeof value === 'object' && value.name === '__peak_placeholder') {\n delete filteredProps[key];\n }\n });\n\n const parsedNewProps = { ...filteredProps };\n\n if (filteredProps.pagination) {\n parsedNewProps.pagination = {\n ...(model.get('componentProps').pagination || {}),\n ...filteredProps.pagination,\n };\n }\n\n const isActions = model.get('componentName') === 'Actions';\n\n if (isActions && Array.isArray(parsedNewProps.actions) && parsedNewProps.actions.length > 0) {\n const alreadyExpanded =\n model.components().length > 0 &&\n model.components().at(0)?.get('componentName') === 'ActionCard';\n\n if (!alreadyExpanded) {\n expandActionsComponent(model, parsedNewProps.actions);\n\n return true;\n }\n }\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...parsedNewProps,\n });\n model.set('attributes', {\n ...model.get('attributes'),\n ...newAttributes,\n });\n\n return true;\n });\n }, [newDataNotifier]);\n\n\n useEffect(() => {\n if (!editorRef.current) {\n return;\n }\n\n // destroy existing editor\n if (editorInstance.current) {\n try {\n editorInstance.current.destroy();\n } catch {\n /* ignore */\n }\n }\n\n const editor = grapesjs.init({\n container: editorRef.current,\n height: '100%',\n plugins: [\n createGrapesjsShadcnGenericPlugin(\n mode,\n async (payload) => {\n const updatedJson = await editorInstance.current?.store();\n setInteracting(renderedComponents.current, payload.affectedComponents, true);\n\n try {\n const apiResponse = await performInteraction({ ...payload, json: updatedJson });\n const componentUpdates = apiResponse || {};\n Object.entries(componentUpdates).forEach(([key, value]) => {\n const model = renderedComponents.current[key];\n\n if (model) {\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...value,\n error: undefined,\n isMissing: undefined,\n });\n model.set('attributes', {\n ...model.get('attributes'),\n error: undefined,\n });\n }\n });\n\n return componentUpdates;\n } catch (err) {\n payload.affectedComponents.forEach(({ componentId }: { componentId: string }) => {\n const model = renderedComponents.current[componentId];\n\n if (model) {\n const msg = err instanceof Error ? err.message : 'Something went wrong.';\n model.set('attributes', { ...model.get('attributes'), error: msg });\n model.set('componentProps', { ...model.get('componentProps'), error: msg });\n }\n });\n\n throw err;\n } finally {\n setInteracting(renderedComponents.current, payload.affectedComponents, false);\n }\n },\n renderedComponents.current,\n setHasChanged,\n ),\n ],\n storageManager: { type: 'none' },\n richTextEditor: { actions: ['bold', 'italic', 'underline', 'strikethrough'] },\n });\n\n // hide iframe until ready\n const iframe = editor.Canvas.getFrameEl();\n\n if (iframe) {\n iframe.style.visibility = 'hidden';\n iframe.style.opacity = '0';\n }\n\n // wait for GrapesJS to fully load before injecting\n editor.on('load', () => {\n const canvasDoc = editor.Canvas.getDocument();\n\n // inject tailwind + datepicker css\n const styleEl = canvasDoc.createElement('style');\n styleEl.textContent = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar { width: 0; height: 0; }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none;\n scrollbar-width: none;\n }\n `;\n canvasDoc.head.appendChild(styleEl);\n\n // set components and styles\n if (json?.pages?.[0]?.frames?.[0]) {\n const raw = json.pages[0].frames[0].component;\n const processed = expandActions(raw);\n editor.setComponents(processed);\n editor.setStyle(convertStyles(json.styles || []));\n setComponentProperties(editor, mode === 'preview');\n }\n\n // reveal iframe\n iframe.style.transition = 'opacity 0.3s ease-in';\n iframe.style.visibility = 'visible';\n iframe.style.opacity = '1';\n });\n\n // dirty check\n async function checkDirty() {\n if (isStreamingRef.current || isSystemUpdateRef.current) {\n return;\n }\n\n if (!editorInstance.current) {\n return;\n }\n\n try {\n const stored = await editorInstance.current.store();\n const newJson = JSON.stringify(stored);\n\n if (newJson !== lastJsonRef.current) {\n setHasChanged(true);\n lastJsonRef.current = newJson;\n }\n } catch {\n /* ignore */\n }\n }\n\n const debouncedCheck = (() => {\n let t: NodeJS.Timeout | null = null;\n\n return () => {\n if (t) {\n clearTimeout(t);\n }\n\n t = setTimeout(checkDirty, 200);\n };\n })();\n [\n 'component:add',\n 'component:remove',\n 'component:update:content',\n 'style:update',\n 'component:drag:end',\n 'rte:change',\n ].forEach((evt) => editor.on(evt, debouncedCheck));\n editor.on('component:update', (model, prop) => {\n if (['attributes', 'componentProps', 'content'].includes(prop)) {\n debouncedCheck();\n }\n });\n\n // register custom types\n TypesToRegister.forEach(({ type, tagName }) => {\n if (!editor.DomComponents.getType(type)) {\n editor.DomComponents.addType(type, { model: { defaults: { tagName } }, view: {} });\n }\n });\n\n editorInstance.current = editor;\n setEditor(editor);\n isEditorAliveRef.current = true;\n\n // eslint-disable-next-line consistent-return\n return function cleanup() {\n editor.destroy();\n isEditorAliveRef.current = false;\n };\n }, [json, mode]);\n\n return (\n <>\n <StyledEditor />\n <div\n ref={editorRef}\n id=\"grapesjs-editor\"\n style={{\n height: '100%',\n minHeight: '600px',\n transition: 'opacity 0.25s ease-in',\n }}\n />\n </>\n );\n}\n\nexport default GrapesjsCanvas;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"GrapesjsCanvas.js","names":["React","useEffect","useRef","grapesjs","tailwind","TypesToRegister","toKebabCase","createGrapesjsShadcnGenericPlugin","StyledEditor","tailwindCompiledCss","datePickerCss","jsx","_jsx","jsxs","_jsxs","setComponentProperties","editor","isPreview","setPropertiesRecursively","comp","set","editable","draggable","droppable","getName","selectable","hoverable","highlightable","copyable","resizable","removable","badgable","attributes","command","components","forEach","runCommand","stopCommand","wrapper","getWrapper","find","convertStyles","stylesArray","map","block","selectors","Array","isArray","join","declarations","Object","entries","style","_ref","prop","value","createActionCardConfig","action","icon","title","description","type","componentName","componentProps","headerContent","bodyContent","expandActions","node","_node$componentProps","actions","length","_extends","classes","concat","undefined","i","id","setInteracting","renderedComponents","inProgress","component","componentId","showLoader","gjsModel","get","interactionApiInProgress","expandActionsComponent","model","append","addClass","GrapesjsCanvas","_ref2","json","_ref2$mode","mode","setEditor","performInteraction","_ref2$newDataNotifier","newDataNotifier","setHasChanged","isStreaming","editorRef","editorInstance","isStreamingRef","isSystemUpdateRef","lastJsonRef","isEditorAliveRef","current","notificationHandler","props","_props$newProps","newProps","_props$newAttributes","newAttributes","filteredProps","keys","key","name","parsedNewProps","pagination","isActionsComponent","hasValidActionsData","_model$components$at","isAlreadyExpanded","at","performInteractionWrapper","_x","_performInteractionWrapper","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee4","payload","_editorInstance$curre","updatedJson","apiResponse","componentUpdates","wrap","_callee4$","_context4","prev","next","store","sent","affectedComponents","_ref6","error","isMissing","abrupt","t0","errorMessage","Error","message","finish","stop","_json$pages","_json$pages$0$frames","destroy","currentMode","init","container","height","plugins","storageManager","richTextEditor","canvas","customBadgeLabel","tagName","checkDirty","_checkDirty","_callee3","stored","newJson","_callee3$","_context3","JSON","stringify","debouncedCheckDirty","timeout","clearTimeout","setTimeout","evt","on","includes","_callee","iframe","canvasDoc","_callee$","_context","Canvas","getFrameEl","opacity","transition","getDocument","createElement","textContent","head","appendChild","requestAnimationFrame","t1","call","_ref4","DomComponents","getType","addType","defaults","view","pages","frames","raw","processed","setComponents","cssText","styles","setStyle","_callee2","_callee2$","_context2","cleanup","Fragment","children","ref"],"sources":["../src/GrapesjsCanvas.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useRef } from 'react';\n// eslint-disable-next-line import/no-named-as-default\nimport grapesjs, { Component, Editor } from 'grapesjs';\nimport 'grapesjs/dist/css/grapes.min.css';\nimport tailwind from 'grapesjs-tailwind';\nimport { TypesToRegister } from './constants';\nimport { toKebabCase } from './helpers';\nimport { createGrapesjsShadcnGenericPlugin } from './plugins/grapejs-plugin';\nimport { StyledEditor } from './index.styles';\nimport { tailwindCompiledCss } from './helpers/css';\nimport { datePickerCss } from './helpers/date-picker';\n\ntype NotificationHandler = (newData: {\n componentId: string;\n newProps: Record<string, any>;\n newAttributes: Record<string, any>;\n}) => boolean;\n\ntype GrapesjsCanvasProps = {\n json: any;\n mode?: 'editor' | 'preview';\n setEditor: (editor: Editor) => void;\n performInteraction: (payload: Record<string, any>) => Promise<Record<string, any> | undefined>;\n newDataNotifier: (notifHandler: NotificationHandler) => void;\n setHasChanged: (hasChanged: boolean) => void;\n isStreaming: boolean;\n};\n\nfunction setComponentProperties(editor: Editor, isPreview: boolean) {\n function setPropertiesRecursively(comp: Component) {\n comp.set({\n editable: !isPreview,\n draggable: !isPreview,\n droppable: !isPreview && comp.getName() !== 'Shadcn-generic',\n selectable: !isPreview,\n hoverable: !isPreview,\n highlightable: !isPreview,\n copyable: false,\n resizable: false,\n removable: !isPreview,\n badgable: false,\n });\n\n if (!isPreview) {\n comp.set('toolbar', [\n { attributes: { class: 'fa fa-arrows' }, command: 'tlb-move' },\n { attributes: { class: 'fa fa-trash' }, command: 'tlb-delete' },\n ]);\n }\n\n comp.components().forEach(setPropertiesRecursively);\n }\n\n if (isPreview) {\n editor.runCommand('core:preview');\n } else {\n editor.stopCommand('core:preview');\n }\n\n const wrapper = editor.getWrapper();\n wrapper?.find('*').forEach(setPropertiesRecursively);\n}\n\nfunction convertStyles(stylesArray: any[]): string {\n return stylesArray\n .map((block) => {\n const selectors = Array.isArray(block.selectors)\n ? block.selectors.join(', ')\n : block.selectors;\n const declarations = Object.entries(block.style)\n .map(([prop, value]) => `${toKebabCase(prop)}: ${value};`)\n .join(' ');\n\n return `${selectors} { ${declarations} }`;\n })\n .join('\\n');\n}\n\nfunction createActionCardConfig(action: any): any {\n const { icon, title, description } = action;\n\n return {\n type: 'shadcn-generic',\n componentName: 'ActionCard',\n badgable: false,\n copyable: false,\n removable: true,\n draggable: true,\n componentProps: {\n icon,\n headerContent: title,\n bodyContent: description,\n },\n };\n}\n\nfunction expandActions(node: any): any {\n if (node.type === 'shadcn-generic' && node.componentName === 'Actions') {\n const actions = node.componentProps?.actions;\n\n if (Array.isArray(actions) && actions.length > 0) {\n return {\n ...node,\n type: 'div',\n classes: ['dashboard-cards', ...(node.classes || [])],\n componentName: undefined,\n componentProps: undefined,\n components: actions.map((action: any, i: number) => ({\n ...createActionCardConfig(action),\n id: `${node.id}--action-card-${i}`,\n })),\n };\n }\n\n return node;\n }\n\n if (Array.isArray(node.components)) {\n return {\n ...node,\n components: node.components.map(expandActions),\n };\n }\n\n return node;\n}\n\nfunction setInteracting(\n renderedComponents: Record<string, Component>,\n components: { componentId: string; showLoader: boolean }[],\n inProgress: boolean,\n) {\n components.forEach((component) => {\n const { componentId, showLoader } = component;\n\n if (!showLoader) {\n return;\n }\n\n const gjsModel = renderedComponents[componentId];\n\n if (gjsModel) {\n gjsModel.set('attributes', {\n ...gjsModel.get('attributes'),\n interactionApiInProgress: inProgress,\n });\n }\n });\n}\n\nfunction expandActionsComponent(model: Component, actions: any[]): void {\n model.components('');\n\n actions.forEach((action: any) => {\n model.append(createActionCardConfig(action));\n });\n\n model.set('type', 'div');\n model.addClass('dashboard-cards');\n model.set('componentName', undefined);\n model.set('componentProps', {});\n}\n\nfunction GrapesjsCanvas({\n json,\n mode = 'preview',\n setEditor,\n performInteraction,\n newDataNotifier = () => {\n // no op\n },\n setHasChanged,\n isStreaming,\n}: GrapesjsCanvasProps) {\n const editorRef = useRef<HTMLDivElement>(null);\n const editorInstance = useRef<Editor | null>(null);\n const renderedComponents = useRef<Record<string, Component>>({});\n const isStreamingRef = useRef(isStreaming);\n const isSystemUpdateRef = useRef(false);\n const lastJsonRef = useRef<string>('');\n const isEditorAliveRef = useRef(false);\n\n useEffect(() => {\n isStreamingRef.current = isStreaming;\n }, [isStreaming]);\n\n function notificationHandler(\n props: Parameters<NotificationHandler>[0],\n ): ReturnType<NotificationHandler> {\n if (!props) {\n return true;\n }\n\n const { componentId, newProps = {}, newAttributes = {} } = props;\n\n const model = renderedComponents.current[componentId];\n\n if (!model) {\n return false;\n }\n\n // Filter out complex placeholder objects that shouldn't be stored in the model, done intentionally to keep grapejs out of errors\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 delete filteredProps[key];\n }\n });\n\n const parsedNewProps = {\n ...filteredProps,\n };\n\n if (filteredProps.pagination) {\n parsedNewProps.pagination = {\n ...(model.get('componentProps').pagination || {}),\n ...filteredProps.pagination,\n };\n }\n\n // Handle Actions component: expand into ActionCards when data arrives via streaming\n const isActionsComponent = model.get('componentName') === 'Actions';\n const hasValidActionsData =\n parsedNewProps.actions &&\n parsedNewProps.actions !== null &&\n Array.isArray(parsedNewProps.actions) &&\n parsedNewProps.actions.length > 0;\n\n if (isActionsComponent && hasValidActionsData) {\n const isAlreadyExpanded =\n model.components().length > 0 &&\n model.components().at(0)?.get('componentName') === 'ActionCard';\n\n if (!isAlreadyExpanded) {\n expandActionsComponent(model, parsedNewProps.actions);\n\n return true;\n }\n }\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...parsedNewProps,\n });\n\n model.set('attributes', {\n ...model.get('attributes'),\n ...newAttributes,\n });\n\n return true;\n }\n\n useEffect(() => {\n newDataNotifier(notificationHandler);\n }, []);\n\n async function performInteractionWrapper(payload: Record<string, any>) {\n const updatedJson = await editorInstance.current?.store();\n setInteracting(renderedComponents.current, payload.affectedComponents, true);\n\n try {\n const apiResponse = await performInteraction({\n ...payload,\n json: updatedJson,\n });\n\n const componentUpdates = apiResponse || {};\n\n Object.entries(componentUpdates).forEach(([key, value]) => {\n const model = renderedComponents.current[key];\n\n if (model) {\n model.set('attributes', {\n ...model.get('attributes'),\n error: undefined,\n });\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...value,\n error: undefined,\n isMissing: undefined,\n });\n }\n });\n\n return componentUpdates;\n } catch (error) {\n payload.affectedComponents.forEach((componentId: string) => {\n const model = renderedComponents.current[componentId];\n\n if (model) {\n const errorMessage =\n error instanceof Error ? error.message : 'Something went wrong. Please try again.';\n\n model.set('attributes', {\n ...model.get('attributes'),\n error: errorMessage,\n });\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n error: errorMessage,\n isMissing: undefined,\n });\n }\n });\n\n throw error;\n } finally {\n setInteracting(renderedComponents.current, payload.affectedComponents, false);\n }\n }\n\n useEffect(() => {\n if (!editorRef.current) {\n return () => {\n // no op\n };\n }\n\n if (editorInstance.current) {\n editorInstance.current.destroy();\n editorInstance.current = null;\n isEditorAliveRef.current = false;\n }\n\n const currentMode = mode;\n\n const editor = grapesjs.init({\n container: editorRef.current,\n height: '100%',\n plugins: [\n tailwind,\n createGrapesjsShadcnGenericPlugin(\n currentMode,\n performInteractionWrapper,\n renderedComponents.current,\n setHasChanged,\n ),\n ],\n storageManager: { type: 'none' },\n richTextEditor: {\n actions: ['bold', 'italic', 'underline', 'strikethrough'],\n },\n canvas: {\n customBadgeLabel: (component) => {\n const tagName = component.get('tagName');\n\n return tagName === 'body' ? '' : tagName || '';\n },\n },\n });\n\n isEditorAliveRef.current = true;\n\n async function checkDirty() {\n if (isStreamingRef.current || isSystemUpdateRef.current) {\n return;\n }\n\n if (!isEditorAliveRef.current || !editorInstance.current) {\n return;\n }\n\n let stored = null;\n\n try {\n stored = await editorInstance.current.store();\n } catch (err) {\n return;\n }\n\n if (!stored) {\n return;\n }\n\n const newJson = JSON.stringify(stored);\n\n if (newJson !== lastJsonRef.current) {\n setHasChanged(true);\n lastJsonRef.current = newJson;\n }\n }\n\n const debouncedCheckDirty = (() => {\n let timeout: NodeJS.Timeout | null = null;\n\n return () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n timeout = setTimeout(checkDirty, 200);\n };\n })();\n\n [\n 'component:add',\n 'component:remove',\n 'component:update:content',\n 'style:update',\n 'component:drag:end',\n 'rte:change',\n ].forEach((evt) => editor.on(evt, debouncedCheckDirty));\n\n editor.on('component:update', (model, prop) => {\n if (['attributes', 'componentProps', 'content'].includes(prop)) {\n debouncedCheckDirty();\n }\n });\n\n // Tailwind CSS rules aren't fully added to our component\n // So, adding them from here!\n editor.on('load', async () => {\n const iframe = editor.Canvas.getFrameEl();\n\n if (iframe) {\n iframe.style.opacity = '0';\n iframe.style.transition = 'opacity 0.3s ease-in';\n }\n\n const canvasDoc = editor.Canvas.getDocument();\n const style = canvasDoc.createElement('style');\n style.textContent = `\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 canvasDoc.head.appendChild(style);\n\n requestAnimationFrame(() => {\n if (iframe) {\n iframe.style.opacity = '1';\n }\n });\n\n isSystemUpdateRef.current = true;\n setComponentProperties(editor, mode === 'preview');\n lastJsonRef.current = JSON.stringify(await editor.store());\n isSystemUpdateRef.current = false;\n });\n\n editorInstance.current = editor;\n\n if (setEditor) {\n setEditor(editor);\n }\n\n TypesToRegister.forEach(({ type, tagName }) => {\n if (!editor.DomComponents.getType(type)) {\n editor.DomComponents.addType(type, {\n model: {\n defaults: { tagName },\n },\n view: {},\n });\n }\n });\n\n if (json && json.pages?.length > 0 && json.pages[0].frames?.length > 0) {\n isSystemUpdateRef.current = true;\n const raw = json.pages[0].frames[0].component;\n const processed = expandActions(raw);\n editor.setComponents(processed);\n\n const cssText = convertStyles(json.styles || []);\n editor.setStyle(cssText);\n\n editor.on('load', async () => {\n lastJsonRef.current = JSON.stringify(await editor.store());\n isSystemUpdateRef.current = false;\n });\n }\n\n return function cleanup() {\n editor.destroy();\n isEditorAliveRef.current = false;\n };\n }, [json, mode]);\n\n return (\n <React.Fragment>\n <StyledEditor />\n <div ref={editorRef} id=\"grapesjs-editor\" />\n </React.Fragment>\n );\n}\n\nexport default GrapesjsCanvas;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@peak-ai/canvas",
3
3
  "author": "squad-builder-experience",
4
4
  "license": "UNLICENSED",
5
- "version": "1.4.26-rc.3",
5
+ "version": "1.4.26-rc.5",
6
6
  "description": "",
7
7
  "dependencies": {
8
8
  "@emotion/react": "^11.11.4",