@peak-ai/canvas 1.4.26-rc.1 → 1.4.26-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/GrapesjsCanvas.js CHANGED
@@ -2,8 +2,8 @@ import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _e
2
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,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
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
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&&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 _callee3(payload){var _editorInstance$curre;var updatedJson,apiResponse,componentUpdates;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:_context3.next=2;return(_editorInstance$curre=editorInstance.current)==null?void 0:_editorInstance$curre.store();case 2:updatedJson=_context3.sent;setInteracting(renderedComponents.current,payload.affectedComponents,true);_context3.prev=4;_context3.next=7;return performInteraction(_extends({},payload,{json:updatedJson}));case 7:apiResponse=_context3.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("attributes",_extends({},model.get("attributes"),{error:undefined}));model.set("componentProps",_extends({},model.get("componentProps"),value,{error:undefined,isMissing:undefined}))}});return _context3.abrupt("return",componentUpdates);case 13:_context3.prev=13;_context3.t0=_context3["catch"](4);payload.affectedComponents.forEach(function(componentId){var model=renderedComponents.current[componentId];if(model){var errorMessage=_context3.t0 instanceof Error?_context3.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 _context3.t0;case 17:_context3.prev=17;setInteracting(renderedComponents.current,payload.affectedComponents,false);return _context3.finish(17);case 20:case"end":return _context3.stop()}},_callee3,null,[[4,13,17,20]])}));return _performInteractionWrapper.apply(this,arguments)}useEffect(function(){if(!editorRef.current){return function(){// no op
5
+ var isActionsComponent=model.get("componentName")==="Actions";var hasValidActionsData=parsedNewProps.actions&&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 _callee2(payload){var _editorInstance$curre;var updatedJson,apiResponse,componentUpdates;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.next=2;return(_editorInstance$curre=editorInstance.current)==null?void 0:_editorInstance$curre.store();case 2:updatedJson=_context2.sent;setInteracting(renderedComponents.current,payload.affectedComponents,true);_context2.prev=4;_context2.next=7;return performInteraction(_extends({},payload,{json:updatedJson}));case 7:apiResponse=_context2.sent;componentUpdates=apiResponse||{};Object.entries(componentUpdates).forEach(function(_ref4){var key=_ref4[0],value=_ref4[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 _context2.abrupt("return",componentUpdates);case 13:_context2.prev=13;_context2.t0=_context2["catch"](4);payload.affectedComponents.forEach(function(componentId){var model=renderedComponents.current[componentId];if(model){var errorMessage=_context2.t0 instanceof Error?_context2.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 _context2.t0;case 17:_context2.prev=17;setInteracting(renderedComponents.current,payload.affectedComponents,false);return _context2.finish(17);case 20:case"end":return _context2.stop()}},_callee2,null,[[4,13,17,20]])}));return _performInteractionWrapper.apply(this,arguments)}useEffect(function(){if(!editorRef.current){return function(){// no op
6
6
  }}if(editorInstance.current){try{editorInstance.current.destroy()}catch(e){// no op
7
- }editorInstance.current=null;isEditorAliveRef.current=false}var currentMode=mode;var editor=grapesjs.init({container:editorRef.current,height:"100%",plugins:[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||""}}});var iframe=editor.Canvas.getFrameEl();if(iframe){iframe.style.visibility="hidden";iframe.style.opacity="0"}editor.on("canvas:frame:load",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var _json$pages;var doc,style,raw,processed,cssText;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:doc=editor.Canvas.getDocument();if(doc){_context.next=3;break}return _context.abrupt("return");case 3:style=doc.createElement("style");style.textContent="\n "+tailwindCompiledCss+"\n "+datePickerCss+"\n ::-webkit-scrollbar { width: 0px; height: 0px; }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none;\n scrollbar-width: none;\n }\n ";doc.head.appendChild(style);_context.next=8;return new Promise(function(r){return requestAnimationFrame(function(){return requestAnimationFrame(r)})});case 8:if(!(json&&(_json$pages=json.pages)!=null&&(_json$pages=_json$pages[0])!=null&&(_json$pages=_json$pages.frames)!=null&&_json$pages[0])){_context.next=28;break}isSystemUpdateRef.current=true;raw=json.pages[0].frames[0].component;processed=expandActions(raw);editor.setComponents(processed);cssText=convertStyles(json.styles||[]);editor.setStyle(cssText);setComponentProperties(editor,mode==="preview");_context.prev=16;_context.t0=JSON;_context.next=20;return editor.store();case 20:_context.t1=_context.sent;lastJsonRef.current=_context.t0.stringify.call(_context.t0,_context.t1);_context.next=27;break;case 24:_context.prev=24;_context.t2=_context["catch"](16);lastJsonRef.current="";case 27:isSystemUpdateRef.current=false;case 28:if(iframe){iframe.style.visibility="visible";iframe.style.transition="opacity 0.3s ease-in";iframe.style.opacity="1"}case 29:case"end":return _context.stop()}},_callee,null,[[16,24]])})));isEditorAliveRef.current=true;editorInstance.current=editor;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:{}})}});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:_context2.prev=4;_context2.next=7;return editorInstance.current.store();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}_context2.next=16;break;case 14:_context2.prev=14;_context2.t0=_context2["catch"](4);case 16:case"end":return _context2.stop()}},_callee2,null,[[4,14]])}));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()}});return function cleanup(){try{editor.destroy()}catch(e){// no op
7
+ }editorInstance.current=null;isEditorAliveRef.current=false}var currentMode=mode;var editor=grapesjs.init({container:editorRef.current,height:"100%",plugins:[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||""}}});var iframe=editor.Canvas.getFrameEl();iframe.style.visibility="hidden";iframe.style.opacity="0";editor.on("load",function(){var _json$pages;var canvasDoc=editor.Canvas.getDocument();var styleEl=canvasDoc.createElement("style");styleEl.textContent=""+tailwindCompiledCss+datePickerCss;canvasDoc.head.appendChild(styleEl);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")}iframe.style.visibility="visible";iframe.style.opacity="1";iframe.style.transition="opacity 0.3s ease-in"});isEditorAliveRef.current=true;editorInstance.current=editor;setEditor(editor);TypesToRegister.forEach(function(_ref3){var type=_ref3.type,tagName=_ref3.tagName;if(!editor.DomComponents.getType(type)){editor.DomComponents.addType(type,{model:{defaults:{tagName:tagName}},view:{}})}});function checkDirty(){return _checkDirty.apply(this,arguments)}function _checkDirty(){_checkDirty=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var stored,newJson;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(!(isStreamingRef.current||isSystemUpdateRef.current)){_context.next=2;break}return _context.abrupt("return");case 2:if(!(!isEditorAliveRef.current||!editorInstance.current)){_context.next=4;break}return _context.abrupt("return");case 4:_context.prev=4;_context.next=7;return editorInstance.current.store();case 7:stored=_context.sent;if(stored){_context.next=10;break}return _context.abrupt("return");case 10:newJson=JSON.stringify(stored);if(newJson!==lastJsonRef.current){setHasChanged(true);lastJsonRef.current=newJson}_context.next=16;break;case 14:_context.prev=14;_context.t0=_context["catch"](4);case 16:case"end":return _context.stop()}},_callee,null,[[4,14]])}));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()}});return function cleanup(){try{editor.destroy()}catch(e){// no op
8
8
  }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;
9
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","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","_callee3","payload","_editorInstance$curre","updatedJson","apiResponse","componentUpdates","wrap","_callee3$","_context3","prev","next","store","sent","affectedComponents","_ref5","error","isMissing","abrupt","t0","errorMessage","Error","message","finish","stop","destroy","e","currentMode","init","container","height","plugins","storageManager","richTextEditor","canvas","customBadgeLabel","tagName","iframe","Canvas","getFrameEl","visibility","opacity","on","_callee","_json$pages","doc","raw","processed","cssText","_callee$","_context","getDocument","createElement","textContent","head","appendChild","Promise","r","requestAnimationFrame","pages","frames","setComponents","styles","setStyle","JSON","t1","stringify","call","t2","transition","_ref4","DomComponents","getType","addType","defaults","view","checkDirty","_checkDirty","_callee2","stored","newJson","_callee2$","_context2","debouncedCheckDirty","timeout","clearTimeout","setTimeout","evt","includes","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 { 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 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 try {\n editorInstance.current.destroy();\n } catch (e) {\n // no op\n }\n\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 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 const iframe = editor.Canvas.getFrameEl();\n\n if (iframe) {\n iframe.style.visibility = 'hidden';\n iframe.style.opacity = '0';\n }\n\n editor.on('canvas:frame:load', async () => {\n const doc = editor.Canvas.getDocument();\n\n if (!doc) {\n return;\n }\n\n const style = doc.createElement('style');\n\n style.textContent = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar { width: 0px; height: 0px; }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none;\n scrollbar-width: none;\n }\n `;\n\n doc.head.appendChild(style);\n\n await new Promise((r) => requestAnimationFrame(() => requestAnimationFrame(r)));\n\n if (json && json.pages?.[0]?.frames?.[0]) {\n isSystemUpdateRef.current = true;\n\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 setComponentProperties(editor, mode === 'preview');\n\n try {\n lastJsonRef.current = JSON.stringify(await editor.store());\n } catch {\n lastJsonRef.current = '';\n }\n\n isSystemUpdateRef.current = false;\n }\n\n if (iframe) {\n iframe.style.visibility = 'visible';\n iframe.style.transition = 'opacity 0.3s ease-in';\n iframe.style.opacity = '1';\n }\n });\n\n isEditorAliveRef.current = true;\n editorInstance.current = editor;\n setEditor(editor);\n\n TypesToRegister.forEach(({ type, tagName }) => {\n if (!editor.DomComponents.getType(type)) {\n editor.DomComponents.addType(type, { model: { defaults: { tagName } }, view: {} });\n }\n });\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 try {\n const stored = await editorInstance.current.store();\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 } catch {\n /* ignore */\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 return function cleanup() {\n try {\n editor.destroy();\n } catch (e) {\n // no op\n }\n\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":[]}
1
+ {"version":3,"file":"GrapesjsCanvas.js","names":["React","useEffect","useRef","grapesjs","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","_callee2","payload","_editorInstance$curre","updatedJson","apiResponse","componentUpdates","wrap","_callee2$","_context2","prev","next","store","sent","affectedComponents","_ref4","error","isMissing","abrupt","t0","errorMessage","Error","message","finish","stop","destroy","e","currentMode","init","container","height","plugins","storageManager","richTextEditor","canvas","customBadgeLabel","tagName","iframe","Canvas","getFrameEl","visibility","opacity","on","_json$pages","canvasDoc","getDocument","styleEl","createElement","textContent","head","appendChild","pages","frames","raw","processed","setComponents","setStyle","styles","transition","_ref3","DomComponents","getType","addType","defaults","view","checkDirty","_checkDirty","_callee","stored","newJson","_callee$","_context","JSON","stringify","debouncedCheckDirty","timeout","clearTimeout","setTimeout","evt","includes","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 { 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 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 try {\n editorInstance.current.destroy();\n } catch (e) {\n // no op\n }\n\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 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 const iframe = editor.Canvas.getFrameEl();\n iframe.style.visibility = 'hidden';\n iframe.style.opacity = '0';\n\n editor.on('load', () => {\n const canvasDoc = editor.Canvas.getDocument();\n const styleEl = canvasDoc.createElement('style');\n styleEl.textContent = `${tailwindCompiledCss}${datePickerCss}`;\n canvasDoc.head.appendChild(styleEl);\n\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 iframe.style.visibility = 'visible';\n iframe.style.opacity = '1';\n iframe.style.transition = 'opacity 0.3s ease-in';\n });\n\n isEditorAliveRef.current = true;\n editorInstance.current = editor;\n setEditor(editor);\n\n TypesToRegister.forEach(({ type, tagName }) => {\n if (!editor.DomComponents.getType(type)) {\n editor.DomComponents.addType(type, { model: { defaults: { tagName } }, view: {} });\n }\n });\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 try {\n const stored = await editorInstance.current.store();\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 } catch {\n /* ignore */\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 return function cleanup() {\n try {\n editor.destroy();\n } catch (e) {\n // no op\n }\n\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.1",
5
+ "version": "1.4.26-rc.2",
6
6
  "description": "",
7
7
  "dependencies": {
8
8
  "@emotion/react": "^11.11.4",