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

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,9 +1,13 @@
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,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&&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
- }}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();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
- }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;
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;
9
13
  //# 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","_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":[]}
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":"wLAAA,uDACA,MAAO,CAAAA,KAAK,EAAIC,SAAS,CAAEC,MAAM,KAAQ,OAAO,CAChD;AACA,MAAO,CAAAC,QAAQ,KAA6B,UAAU,CACtD,MAAO,kCAAkC,CACzC,OAASC,eAAe,KAAQ,aAAa,CAC7C,OAASC,WAAW,KAAQ,WAAW,CACvC,OAASC,iCAAiC,KAAQ,0BAA0B,CAC5E,OAASC,YAAY,KAAQ,gBAAgB,CAC7C,OAASC,mBAAmB,KAAQ,eAAe,CACnD,OAASC,aAAa,KAAQ,uBAAuB,CAAC,OAAAC,GAAA,IAAAC,IAAA,CAAAC,QAAA,IAAAC,SAAA,CAAAC,IAAA,IAAAC,KAAA,yBAkBtD,QAAS,CAAAC,sBAAsBA,CAACC,MAAc,CAAEC,SAAkB,CAAE,CAClE,QAAS,CAAAC,wBAAwBA,CAACC,IAAe,CAAE,CACjDA,IAAI,CAACC,GAAG,CAAC,CACPC,QAAQ,CAAE,CAACJ,SAAS,CACpBK,SAAS,CAAE,CAACL,SAAS,CACrBM,SAAS,CAAE,CAACN,SAAS,EAAIE,IAAI,CAACK,OAAO,CAAC,CAAC,GAAK,gBAAgB,CAC5DC,UAAU,CAAE,CAACR,SAAS,CACtBS,SAAS,CAAE,CAACT,SAAS,CACrBU,aAAa,CAAE,CAACV,SAAS,CACzBW,QAAQ,CAAE,KAAK,CACfC,SAAS,CAAE,KAAK,CAChBC,SAAS,CAAE,CAACb,SAAS,CACrBc,QAAQ,CAAE,KACZ,CAAC,CAAC,CAEF,GAAI,CAACd,SAAS,CAAE,CACdE,IAAI,CAACC,GAAG,CAAC,SAAS,CAAE,CAClB,CAAEY,UAAU,CAAE,CAAE,QAAO,cAAe,CAAC,CAAEC,OAAO,CAAE,UAAW,CAAC,CAC9D,CAAED,UAAU,CAAE,CAAE,QAAO,aAAc,CAAC,CAAEC,OAAO,CAAE,YAAa,CAAC,CAChE,CACH,CAEAd,IAAI,CAACe,UAAU,CAAC,CAAC,CAACC,OAAO,CAACjB,wBAAwB,CACpD,CAEA,GAAID,SAAS,CAAE,CACbD,MAAM,CAACoB,UAAU,CAAC,cAAc,CAClC,CAAC,IAAM,CACLpB,MAAM,CAACqB,WAAW,CAAC,cAAc,CACnC,CAEA,GAAM,CAAAC,OAAO,CAAGtB,MAAM,CAACuB,UAAU,CAAC,CAAC,CACnCD,OAAO,QAAPA,OAAO,CAAEE,IAAI,CAAC,GAAG,CAAC,CAACL,OAAO,CAACjB,wBAAwB,CACrD,CAEA,QAAS,CAAAuB,aAAaA,CAACC,WAAkB,CAAU,CACjD,MAAO,CAAAA,WAAW,CACfC,GAAG,CAAC,SAACC,KAAK,CAAK,CACd,GAAM,CAAAC,SAAS,CAAGC,KAAK,CAACC,OAAO,CAACH,KAAK,CAACC,SAAS,CAAC,CAC5CD,KAAK,CAACC,SAAS,CAACG,IAAI,CAAC,IAAI,CAAC,CAC1BJ,KAAK,CAACC,SAAS,CACnB,GAAM,CAAAI,YAAY,CAAGC,MAAM,CAACC,OAAO,CAACP,KAAK,CAACQ,KAAK,CAAC,CAC7CT,GAAG,CAAC,SAAAU,IAAA,KAAE,CAAAC,IAAI,CAAAD,IAAA,IAAEE,KAAK,CAAAF,IAAA,UAAS,CAAAjD,WAAW,CAACkD,IAAI,CAAC,MAAKC,KAAK,KAAG,CAAC,CACzDP,IAAI,CAAC,GAAG,CAAC,CAEZ,MAAU,CAAAH,SAAS,OAAMI,YAAY,KACvC,CAAC,CAAC,CACDD,IAAI,CAAC,IAAI,CACd,CAEA,QAAS,CAAAQ,sBAAsBA,CAACC,MAAW,CAAO,CAChD,GAAQ,CAAAC,IAAI,CAAyBD,MAAM,CAAnCC,IAAI,CAAEC,KAAK,CAAkBF,MAAM,CAA7BE,KAAK,CAAEC,WAAW,CAAKH,MAAM,CAAtBG,WAAW,CAEhC,MAAO,CACLC,IAAI,CAAE,gBAAgB,CACtBC,aAAa,CAAE,YAAY,CAC3B/B,QAAQ,CAAE,KAAK,CACfH,QAAQ,CAAE,KAAK,CACfE,SAAS,CAAE,IAAI,CACfR,SAAS,CAAE,IAAI,CACfyC,cAAc,CAAE,CACdL,IAAI,CAAJA,IAAI,CACJM,aAAa,CAAEL,KAAK,CACpBM,WAAW,CAAEL,WACf,CACF,CACF,CAEA,QAAS,CAAAM,aAAaA,CAACC,IAAS,CAAO,CACrC,GAAIA,IAAI,CAACN,IAAI,GAAK,gBAAgB,EAAIM,IAAI,CAACL,aAAa,GAAK,SAAS,CAAE,KAAAM,oBAAA,CACtE,GAAM,CAAAC,OAAO,EAAAD,oBAAA,CAAGD,IAAI,CAACJ,cAAc,eAAnBK,oBAAA,CAAqBC,OAAO,CAE5C,GAAIvB,KAAK,CAACC,OAAO,CAACsB,OAAO,CAAC,EAAIA,OAAO,CAACC,MAAM,CAAG,CAAC,CAAE,CAChD,OAAAC,QAAA,IACKJ,IAAI,EACPN,IAAI,CAAE,KAAK,CACXW,OAAO,EAAG,iBAAiB,EAAAC,MAAA,CAAMN,IAAI,CAACK,OAAO,EAAI,EAAE,CAAE,CACrDV,aAAa,CAAEY,SAAS,CACxBX,cAAc,CAAEW,SAAS,CACzBxC,UAAU,CAAEmC,OAAO,CAAC1B,GAAG,CAAC,SAACc,MAAW,CAAEkB,CAAS,SAAAJ,QAAA,IAC1Cf,sBAAsB,CAACC,MAAM,CAAC,EACjCmB,EAAE,CAAKT,IAAI,CAACS,EAAE,kBAAiBD,CAAG,GAClC,CAAC,EAEP,CACF,CAEA,GAAI7B,KAAK,CAACC,OAAO,CAACoB,IAAI,CAACjC,UAAU,CAAC,CAAE,CAClC,OAAAqC,QAAA,IACKJ,IAAI,EACPjC,UAAU,CAAEiC,IAAI,CAACjC,UAAU,CAACS,GAAG,CAACuB,aAAa,CAAC,EAElD,CAEA,MAAO,CAAAC,IACT,CAEA,QAAS,CAAAU,cAAcA,CACrBC,kBAA6C,CAC7C5C,UAA0D,CAC1D6C,UAAmB,CACnB,CACA7C,UAAU,CAACC,OAAO,CAAC,SAAA6C,KAAA,CAAiC,IAA9B,CAAAC,WAAW,CAAAD,KAAA,CAAXC,WAAW,CAAEC,UAAU,CAAAF,KAAA,CAAVE,UAAU,CAC3C,GAAI,CAACA,UAAU,CAAE,CACf,MACF,CAEA,GAAM,CAAAC,QAAQ,CAAGL,kBAAkB,CAACG,WAAW,CAAC,CAEhD,GAAIE,QAAQ,CAAE,CACZA,QAAQ,CAAC/D,GAAG,CAAC,YAAY,CAAAmD,QAAA,IACpBY,QAAQ,CAACC,GAAG,CAAC,YAAY,CAAC,EAC7BC,wBAAwB,CAAEN,UAAU,EACrC,CACH,CACF,CAAC,CACH,CAEA,QAAS,CAAAO,sBAAsBA,CAACC,KAAgB,CAAElB,OAAc,CAAQ,CACtEkB,KAAK,CAACrD,UAAU,CAAC,EAAE,CAAC,CAEpBmC,OAAO,CAAClC,OAAO,CAAC,SAACsB,MAAW,CAAK,CAC/B8B,KAAK,CAACC,MAAM,CAAChC,sBAAsB,CAACC,MAAM,CAAC,CAC7C,CAAC,CAAC,CAEF8B,KAAK,CAACnE,GAAG,CAAC,MAAM,CAAE,KAAK,CAAC,CACxBmE,KAAK,CAACE,QAAQ,CAAC,iBAAiB,CAAC,CACjCF,KAAK,CAACnE,GAAG,CAAC,eAAe,CAAEsD,SAAS,CAAC,CACrCa,KAAK,CAACnE,GAAG,CAAC,gBAAgB,CAAE,CAAC,CAAC,CAChC,CAEA,QAAS,CAAAsE,cAAcA,CAAAC,KAAA,CAUC,IATtB,CAAAC,IAAI,CAAAD,KAAA,CAAJC,IAAI,CAAAC,UAAA,CAAAF,KAAA,CACJG,IAAI,CAAJA,IAAI,CAAAD,UAAA,UAAG,SAAS,CAAAA,UAAA,CAChBE,SAAS,CAAAJ,KAAA,CAATI,SAAS,CACTC,kBAAkB,CAAAL,KAAA,CAAlBK,kBAAkB,CAAAC,qBAAA,CAAAN,KAAA,CAClBO,eAAe,CAAfA,eAAe,CAAAD,qBAAA,UAAG,UAAM,CACtB;AAAA,CACD,CAAAA,qBAAA,CACDE,aAAa,CAAAR,KAAA,CAAbQ,aAAa,CACbC,WAAW,CAAAT,KAAA,CAAXS,WAAW,CAEX,GAAM,CAAAC,SAAS,CAAGpG,MAAM,CAAiB,IAAI,CAAC,CAC9C,GAAM,CAAAqG,cAAc,CAAGrG,MAAM,CAAgB,IAAI,CAAC,CAClD,GAAM,CAAA6E,kBAAkB,CAAG7E,MAAM,CAA4B,CAAC,CAAC,CAAC,CAChE,GAAM,CAAAsG,cAAc,CAAGtG,MAAM,CAACmG,WAAW,CAAC,CAC1C,GAAM,CAAAI,iBAAiB,CAAGvG,MAAM,CAAC,KAAK,CAAC,CACvC,GAAM,CAAAwG,WAAW,CAAGxG,MAAM,CAAS,EAAE,CAAC,CACtC,GAAM,CAAAyG,gBAAgB,CAAGzG,MAAM,CAAC,KAAK,CAAC,CAEtCD,SAAS,CAAC,UAAM,CACduG,cAAc,CAACI,OAAO,CAAGP,WAC3B,CAAC,CAAE,CAACA,WAAW,CAAC,CAAC,CAEjBpG,SAAS,CAAC,UAAM,CACdkG,eAAe,CAAC,SAACU,KAAK,CAAK,CACzB,GAAI,CAACA,KAAK,CAAE,CACV,MAAO,KACT,CAEA,GAAQ,CAAA3B,WAAW,CAAwC2B,KAAK,CAAxD3B,WAAW,CAAA4B,eAAA,CAAwCD,KAAK,CAA3CE,QAAQ,CAARA,QAAQ,CAAAD,eAAA,UAAG,CAAC,CAAC,CAAAA,eAAA,CAAAE,oBAAA,CAAyBH,KAAK,CAA5BI,aAAa,CAAbA,aAAa,CAAAD,oBAAA,UAAG,CAAC,CAAC,CAAAA,oBAAA,CACtD,GAAM,CAAAxB,KAAK,CAAGT,kBAAkB,CAAC6B,OAAO,CAAC1B,WAAW,CAAC,CAErD,GAAI,CAACM,KAAK,CAAE,CACV,MAAO,MACT,CAEA,GAAM,CAAA0B,aAAa,CAAA1C,QAAA,IAAQuC,QAAQ,CAAE,CACrC5D,MAAM,CAACgE,IAAI,CAACD,aAAa,CAAC,CAAC9E,OAAO,CAAC,SAACgF,GAAG,CAAK,CAC1C,GAAM,CAAA5D,KAAK,CAAG0D,aAAa,CAACE,GAAG,CAAC,CAEhC,GAAI5D,KAAK,EAAI,MAAO,CAAAA,KAAK,GAAK,QAAQ,EAAIA,KAAK,CAAC6D,IAAI,GAAK,oBAAoB,CAAE,CAC7E,MAAO,CAAAH,aAAa,CAACE,GAAG,CAC1B,CACF,CAAC,CAAC,CAEF,GAAM,CAAAE,cAAc,CAAA9C,QAAA,IAAQ0C,aAAa,CAAE,CAE3C,GAAIA,aAAa,CAACK,UAAU,CAAE,CAC5BD,cAAc,CAACC,UAAU,CAAA/C,QAAA,IACnBgB,KAAK,CAACH,GAAG,CAAC,gBAAgB,CAAC,CAACkC,UAAU,EAAI,CAAC,CAAC,CAC7CL,aAAa,CAACK,UAAU,CAE/B,CAEA,GAAM,CAAAC,SAAS,CAAGhC,KAAK,CAACH,GAAG,CAAC,eAAe,CAAC,GAAK,SAAS,CAE1D,GAAImC,SAAS,EAAIzE,KAAK,CAACC,OAAO,CAACsE,cAAc,CAAChD,OAAO,CAAC,EAAIgD,cAAc,CAAChD,OAAO,CAACC,MAAM,CAAG,CAAC,CAAE,KAAAkD,oBAAA,CAC3F,GAAM,CAAAC,eAAe,CACnBlC,KAAK,CAACrD,UAAU,CAAC,CAAC,CAACoC,MAAM,CAAG,CAAC,EAC7B,EAAAkD,oBAAA,CAAAjC,KAAK,CAACrD,UAAU,CAAC,CAAC,CAACwF,EAAE,CAAC,CAAC,CAAC,eAAxBF,oBAAA,CAA0BpC,GAAG,CAAC,eAAe,CAAC,IAAK,YAAY,CAEjE,GAAI,CAACqC,eAAe,CAAE,CACpBnC,sBAAsB,CAACC,KAAK,CAAE8B,cAAc,CAAChD,OAAO,CAAC,CAErD,MAAO,KACT,CACF,CAEAkB,KAAK,CAACnE,GAAG,CAAC,gBAAgB,CAAAmD,QAAA,IACrBgB,KAAK,CAACH,GAAG,CAAC,gBAAgB,CAAC,CAC3BiC,cAAc,CAClB,CAAC,CACF9B,KAAK,CAACnE,GAAG,CAAC,YAAY,CAAAmD,QAAA,IACjBgB,KAAK,CAACH,GAAG,CAAC,YAAY,CAAC,CACvB4B,aAAa,CACjB,CAAC,CAEF,MAAO,KACT,CAAC,CACH,CAAC,CAAE,CAACd,eAAe,CAAC,CAAC,CAGrBlG,SAAS,CAAC,UAAM,CACd,GAAI,CAACqG,SAAS,CAACM,OAAO,CAAE,CACtB,MACF,CAEA;AACA,GAAIL,cAAc,CAACK,OAAO,CAAE,CAC1B,GAAI,CACFL,cAAc,CAACK,OAAO,CAACgB,OAAO,CAAC,CACjC,CAAE,MAAAC,OAAA,CAAM,CACN,aAEJ,CAEA,GAAM,CAAA5G,MAAM,CAAGd,QAAQ,CAAC2H,IAAI,CAAC,CAC3BC,SAAS,CAAEzB,SAAS,CAACM,OAAO,CAC5BoB,MAAM,CAAE,MAAM,CACdC,OAAO,CAAE,CACP3H,iCAAiC,CAC/ByF,IAAI,6BAAAmC,KAAA,CAAAC,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CACJ,SAAAC,QAAOC,OAAO,MAAAC,qBAAA,KAAAC,WAAA,CAAAC,WAAA,CAAAC,gBAAA,QAAAP,mBAAA,CAAAQ,IAAA,UAAAC,SAAAC,QAAA,iBAAAA,QAAA,CAAAC,IAAA,CAAAD,QAAA,CAAAE,IAAA,SAAAF,QAAA,CAAAE,IAAA,UAAAR,qBAAA,CACcjC,cAAc,CAACK,OAAO,eAAtB4B,qBAAA,CAAwBS,KAAK,CAAC,CAAC,QAAnDR,WAAW,CAAAK,QAAA,CAAAI,IAAA,CACjBpE,cAAc,CAACC,kBAAkB,CAAC6B,OAAO,CAAE2B,OAAO,CAACY,kBAAkB,CAAE,IAAI,CAAC,CAACL,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA,SAGjD,CAAA/C,kBAAkB,CAAAzB,QAAA,IAAM+D,OAAO,EAAE1C,IAAI,CAAE4C,WAAW,EAAE,CAAC,QAAzEC,WAAW,CAAAI,QAAA,CAAAI,IAAA,CACXP,gBAAgB,CAAGD,WAAW,EAAI,CAAC,CAAC,CAC1CvF,MAAM,CAACC,OAAO,CAACuF,gBAAgB,CAAC,CAACvG,OAAO,CAAC,SAAAgH,KAAA,CAAkB,IAAhB,CAAAhC,GAAG,CAAAgC,KAAA,IAAE5F,KAAK,CAAA4F,KAAA,IACnD,GAAM,CAAA5D,KAAK,CAAGT,kBAAkB,CAAC6B,OAAO,CAACQ,GAAG,CAAC,CAE7C,GAAI5B,KAAK,CAAE,CACTA,KAAK,CAACnE,GAAG,CAAC,gBAAgB,CAAAmD,QAAA,IACrBgB,KAAK,CAACH,GAAG,CAAC,gBAAgB,CAAC,CAC3B7B,KAAK,EACR6F,KAAK,CAAE1E,SAAS,CAChB2E,SAAS,CAAE3E,SAAS,EACrB,CAAC,CACFa,KAAK,CAACnE,GAAG,CAAC,YAAY,CAAAmD,QAAA,IACjBgB,KAAK,CAACH,GAAG,CAAC,YAAY,CAAC,EAC1BgE,KAAK,CAAE1E,SAAS,EACjB,CACH,CACF,CAAC,CAAC,CAAC,OAAAmE,QAAA,CAAAS,MAAA,UAEIZ,gBAAgB,UAAAG,QAAA,CAAAC,IAAA,IAAAD,QAAA,CAAAU,EAAA,CAAAV,QAAA,aAEvBP,OAAO,CAACY,kBAAkB,CAAC/G,OAAO,CAAC,SAAAqH,KAAA,CAA8C,IAA3C,CAAAvE,WAAW,CAAAuE,KAAA,CAAXvE,WAAW,CAC/C,GAAM,CAAAM,KAAK,CAAGT,kBAAkB,CAAC6B,OAAO,CAAC1B,WAAW,CAAC,CAErD,GAAIM,KAAK,CAAE,CACT,GAAM,CAAAkE,GAAG,CAAGZ,QAAA,CAAAU,EAAA,WAAe,CAAAG,KAAK,CAAGb,QAAA,CAAAU,EAAA,CAAII,OAAO,CAAG,uBAAuB,CACxEpE,KAAK,CAACnE,GAAG,CAAC,YAAY,CAAAmD,QAAA,IAAOgB,KAAK,CAACH,GAAG,CAAC,YAAY,CAAC,EAAEgE,KAAK,CAAEK,GAAG,EAAE,CAAC,CACnElE,KAAK,CAACnE,GAAG,CAAC,gBAAgB,CAAAmD,QAAA,IAAOgB,KAAK,CAACH,GAAG,CAAC,gBAAgB,CAAC,EAAEgE,KAAK,CAAEK,GAAG,EAAE,CAC5E,CACF,CAAC,CAAC,CAAC,MAAAZ,QAAA,CAAAU,EAAA,SAAAV,QAAA,CAAAC,IAAA,IAIHjE,cAAc,CAACC,kBAAkB,CAAC6B,OAAO,CAAE2B,OAAO,CAACY,kBAAkB,CAAE,KAAK,CAAC,CAAC,OAAAL,QAAA,CAAAe,MAAA,8BAAAf,QAAA,CAAAgB,IAAA,KAAAxB,OAAA,sBAEjF,mBAAAyB,EAAA,SAAA7B,KAAA,CAAA8B,KAAA,MAAAC,SAAA,MACDlF,kBAAkB,CAAC6B,OAAO,CAC1BR,aACF,CAAC,CACF,CACD8D,cAAc,CAAE,CAAEpG,IAAI,CAAE,MAAO,CAAC,CAChCqG,cAAc,CAAE,CAAE7F,OAAO,CAAE,CAAC,MAAM,CAAE,QAAQ,CAAE,WAAW,CAAE,eAAe,CAAE,CAC9E,CAAC,CAAC,CAEF;AACA,GAAM,CAAA8F,MAAM,CAAGnJ,MAAM,CAACoJ,MAAM,CAACC,UAAU,CAAC,CAAC,CAEzC,GAAIF,MAAM,CAAE,CACVA,MAAM,CAAC/G,KAAK,CAACkH,UAAU,CAAG,QAAQ,CAClCH,MAAM,CAAC/G,KAAK,CAACmH,OAAO,CAAG,GACzB,CAEA;AACAvJ,MAAM,CAACwJ,EAAE,CAAC,MAAM,CAAE,UAAM,KAAAC,WAAA,CACtB,GAAM,CAAAC,SAAS,CAAG1J,MAAM,CAACoJ,MAAM,CAACO,WAAW,CAAC,CAAC,CAE7C;AACA,GAAM,CAAAC,OAAO,CAAGF,SAAS,CAACG,aAAa,CAAC,OAAO,CAAC,CAChDD,OAAO,CAACE,WAAW,cACfvK,mBAAmB,cACnBC,aAAa,+MAOhB,CACDkK,SAAS,CAACK,IAAI,CAACC,WAAW,CAACJ,OAAO,CAAC,CAEnC;AACA,GAAIhF,IAAI,SAAA6E,WAAA,CAAJ7E,IAAI,CAAEqF,KAAK,UAAAR,WAAA,CAAXA,WAAA,CAAc,CAAC,CAAC,UAAAA,WAAA,CAAhBA,WAAA,CAAkBS,MAAM,SAAxBT,WAAA,CAA2B,CAAC,CAAC,CAAE,CACjC,GAAM,CAAAU,GAAG,CAAGvF,IAAI,CAACqF,KAAK,CAAC,CAAC,CAAC,CAACC,MAAM,CAAC,CAAC,CAAC,CAACE,SAAS,CAC7C,GAAM,CAAAC,SAAS,CAAGnH,aAAa,CAACiH,GAAG,CAAC,CACpCnK,MAAM,CAACsK,aAAa,CAACD,SAAS,CAAC,CAC/BrK,MAAM,CAACuK,QAAQ,CAAC9I,aAAa,CAACmD,IAAI,CAAC4F,MAAM,EAAI,EAAE,CAAC,CAAC,CACjDzK,sBAAsB,CAACC,MAAM,CAAE8E,IAAI,GAAK,SAAS,CACnD,CAEA;AACAqE,MAAM,CAAC/G,KAAK,CAACqI,UAAU,CAAG,sBAAsB,CAChDtB,MAAM,CAAC/G,KAAK,CAACkH,UAAU,CAAG,SAAS,CACnCH,MAAM,CAAC/G,KAAK,CAACmH,OAAO,CAAG,GACzB,CAAC,CAAC,CAEF;AAAA,QACe,CAAAmB,UAAUA,CAAA,SAAAC,WAAA,CAAA5B,KAAA,MAAAC,SAAA,WAAA2B,YAAA,EAAAA,WAAA,CAAAzD,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAAzB,SAAAwD,SAAA,MAAAC,MAAA,CAAAC,OAAA,QAAA3D,mBAAA,CAAAQ,IAAA,UAAAoD,UAAAC,SAAA,iBAAAA,SAAA,CAAAlD,IAAA,CAAAkD,SAAA,CAAAjD,IAAA,cACMxC,cAAc,CAACI,OAAO,EAAIH,iBAAiB,CAACG,OAAO,GAAAqF,SAAA,CAAAjD,IAAA,gBAAAiD,SAAA,CAAA1C,MAAA,qBAIlDhD,cAAc,CAACK,OAAO,EAAAqF,SAAA,CAAAjD,IAAA,gBAAAiD,SAAA,CAAA1C,MAAA,kBAAA0C,SAAA,CAAAlD,IAAA,GAAAkD,SAAA,CAAAjD,IAAA,SAKJ,CAAAzC,cAAc,CAACK,OAAO,CAACqC,KAAK,CAAC,CAAC,QAA7C6C,MAAM,CAAAG,SAAA,CAAA/C,IAAA,CACN6C,OAAO,CAAGG,IAAI,CAACC,SAAS,CAACL,MAAM,CAAC,CAEtC,GAAIC,OAAO,GAAKrF,WAAW,CAACE,OAAO,CAAE,CACnCR,aAAa,CAAC,IAAI,CAAC,CACnBM,WAAW,CAACE,OAAO,CAAGmF,OACxB,CAACE,SAAA,CAAAjD,IAAA,kBAAAiD,SAAA,CAAAlD,IAAA,IAAAkD,SAAA,CAAAzC,EAAA,CAAAyC,SAAA,sCAAAA,SAAA,CAAAnC,IAAA,KAAA+B,QAAA,gBAIJ,UAAAD,WAAA,CAAA5B,KAAA,MAAAC,SAAA,EAED,GAAM,CAAAmC,cAAc,CAAI,UAAM,CAC5B,GAAI,CAAAC,CAAwB,CAAG,IAAI,CAEnC,MAAO,WAAM,CACX,GAAIA,CAAC,CAAE,CACLC,YAAY,CAACD,CAAC,CAChB,CAEAA,CAAC,CAAGE,UAAU,CAACZ,UAAU,CAAE,GAAG,CAChC,CACF,CAAC,CAAE,CAAC,CACJ,CACE,eAAe,CACf,kBAAkB,CAClB,0BAA0B,CAC1B,cAAc,CACd,oBAAoB,CACpB,YAAY,CACb,CAACvJ,OAAO,CAAC,SAACoK,GAAG,QAAK,CAAAvL,MAAM,CAACwJ,EAAE,CAAC+B,GAAG,CAAEJ,cAAc,CAAC,EAAC,CAClDnL,MAAM,CAACwJ,EAAE,CAAC,kBAAkB,CAAE,SAACjF,KAAK,CAAEjC,IAAI,CAAK,CAC7C,GAAI,CAAC,YAAY,CAAE,gBAAgB,CAAE,SAAS,CAAC,CAACkJ,QAAQ,CAAClJ,IAAI,CAAC,CAAE,CAC9D6I,cAAc,CAAC,CACjB,CACF,CAAC,CAAC,CAEF;AACAhM,eAAe,CAACgC,OAAO,CAAC,SAAAsK,KAAA,CAAuB,IAApB,CAAA5I,IAAI,CAAA4I,KAAA,CAAJ5I,IAAI,CAAE6I,OAAO,CAAAD,KAAA,CAAPC,OAAO,CACtC,GAAI,CAAC1L,MAAM,CAAC2L,aAAa,CAACC,OAAO,CAAC/I,IAAI,CAAC,CAAE,CACvC7C,MAAM,CAAC2L,aAAa,CAACE,OAAO,CAAChJ,IAAI,CAAE,CAAE0B,KAAK,CAAE,CAAEuH,QAAQ,CAAE,CAAEJ,OAAO,CAAPA,OAAQ,CAAE,CAAC,CAAEK,IAAI,CAAE,CAAC,CAAE,CAAC,CACnF,CACF,CAAC,CAAC,CAEFzG,cAAc,CAACK,OAAO,CAAG3F,MAAM,CAC/B+E,SAAS,CAAC/E,MAAM,CAAC,CACjB0F,gBAAgB,CAACC,OAAO,CAAG,IAAI,CAE/B;AACA,MAAO,SAAS,CAAAqG,OAAOA,CAAA,CAAG,CACxBhM,MAAM,CAAC2G,OAAO,CAAC,CAAC,CAChBjB,gBAAgB,CAACC,OAAO,CAAG,KAC7B,CACF,CAAC,CAAE,CAACf,IAAI,CAAEE,IAAI,CAAC,CAAC,CAEhB,mBACEhF,KAAA,CAAAF,SAAA,EAAAqM,QAAA,eACEvM,IAAA,CAACJ,YAAY,GAAE,CAAC,cAChBI,IAAA,QACEwM,GAAG,CAAE7G,SAAU,CACfzB,EAAE,CAAC,iBAAiB,CACpBxB,KAAK,CAAE,CACL2E,MAAM,CAAE,MAAM,CACdoF,SAAS,CAAE,OAAO,CAClB1B,UAAU,CAAE,uBACd,CAAE,CACH,CAAC,EACF,CAEN,CAEA,cAAe,CAAA/F,cAAc","ignoreList":[]}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@peak-ai/canvas",
3
3
  "author": "squad-builder-experience",
4
4
  "license": "UNLICENSED",
5
- "version": "1.4.26-rc.2",
5
+ "version": "1.4.26-rc.3",
6
6
  "description": "",
7
7
  "dependencies": {
8
8
  "@emotion/react": "^11.11.4",