@chaibuilder/sdk 2.5.7 → 2.5.8

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/dist/core.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var V=Object.defineProperty;var U=(o,n,a)=>n in o?V(o,n,{enumerable:!0,configurable:!0,writable:!0,value:a}):o[n]=a;var H=(o,n,a)=>U(o,typeof n!="symbol"?n+"":n,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const jsxRuntime=require("react/jsx-runtime"),runtime=require("@chaibuilder/runtime"),reactIcons=require("@radix-ui/react-icons"),lodashEs=require("lodash-es"),React=require("react"),jotai=require("jotai"),utils=require("jotai/utils"),commonFunctions=require("./common-functions-BZmyleS1.cjs"),toggle=require("./toggle-BgZfmuec.cjs"),lucideReact=require("lucide-react"),clsx=require("clsx"),tailwindMerge=require("tailwind-merge"),TreeModel=require("tree-model"),applyBinding=require("./apply-binding-T3HdSezj.cjs"),plugin=require("./plugin-CSgw-f78.cjs"),utils$1=require("@rjsf/utils"),web=require("@react-hookz/web"),sonner=require("sonner"),reactI18next=require("react-i18next"),Fuse=require("fuse.js"),UndoManager=require("undo-manager"),Link=require("@tiptap/extension-link"),TextAlign=require("@tiptap/extension-text-align"),Underline=require("@tiptap/extension-underline"),Placeholder=require("@tiptap/extension-placeholder"),react=require("@tiptap/react"),StarterKit=require("@tiptap/starter-kit"),RjForm=require("@rjsf/core"),validator=require("@rjsf/validator-ajv8"),Autosuggest=require("react-autosuggest"),flagged=require("flagged"),himalaya=require("himalaya"),reactArborist=require("react-arborist"),i18n=require("i18next"),tailwindAspectRatio=require("@tailwindcss/aspect-ratio"),tailwindForms=require("@tailwindcss/forms"),tailwindTypography=require("@tailwindcss/typography");require("tailwindcss-animate");require("@mhsdesign/jit-browser-tailwindcss");const twContainer=require("@tailwindcss/container-queries"),reactErrorBoundary=require("react-error-boundary"),framerMotion=require("framer-motion"),reactHotkeysHook=require("react-hotkeys-hook"),dom=require("@floating-ui/dom"),reactDom=require("@floating-ui/react-dom"),ReactDOM=require("react-dom"),reactWrapBalancer=require("react-wrap-balancer"),reResizable=require("re-resizable");function _interopNamespaceDefault(o){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const a in o)if(a!=="default"){const l=Object.getOwnPropertyDescriptor(o,a);Object.defineProperty(n,a,l.get?l:{enumerable:!0,get:()=>o[a]})}}return n.default=o,Object.freeze(n)}const React__namespace=_interopNamespaceDefault(React),ICON_CLASS="h-3 w-3 stroke-[2]",TypeIcon=o=>{const n=runtime.useRegisteredChaiBlocks(),a=lodashEs.get(n,[o==null?void 0:o.type,"icon"]);return a?React.createElement(a,{className:ICON_CLASS}):jsxRuntime.jsx(reactIcons.BoxModelIcon,{className:ICON_CLASS})},readOnlyModeAtom=jotai.atom(!1);readOnlyModeAtom.debugLabel="readOnlyModeAtom";const networkModeAtom=jotai.atom("online");networkModeAtom.debugLabel="networkModeAtom";jotai.atom("");const editLayerNameAtom=jotai.atom(!1);editLayerNameAtom.debugLabel="editLayerNameAtom";const activeLanguageAtom=jotai.atom("");activeLanguageAtom.debugLabel="activeLanguageAtom";const primaryLanguageAtom=jotai.atom("");primaryLanguageAtom.debugLabel="primaryLanguageAtom";const canvasIframeAtom=jotai.atom(null);canvasIframeAtom.debugLabel="canvasIframeAtom";const activePanelAtom=jotai.atom("outline");activePanelAtom.debugLabel="activePanelAtom";const showPredefinedBlockCategoryAtom=jotai.atom("");showPredefinedBlockCategoryAtom.debugLabel="showPredefinedBlockCategoryAtom";const draggingFlagAtom=jotai.atom(!1);draggingFlagAtom.debugLabel="draggingFlagAtom";const treeRefAtom=jotai.atom(null);treeRefAtom.debugLabel="treeRefAtom";const canvasSettingsAtom=jotai.atom({});canvasSettingsAtom.debugLabel="canvasSettingsAtom";const aiAssistantActiveAtom=jotai.atom(!1);aiAssistantActiveAtom.debugLabel="aiAssistantActiveAtom";const codeEditorOpenAtom=jotai.atom(!1);codeEditorOpenAtom.debugLabel="codeEditorOpenAtom";const codeEditorHeightAtom=utils.atomWithStorage("codeEditorHeight",500);codeEditorHeightAtom.debugLabel="codeEditorHeightAtom";const xShowBlocksAtom=jotai.atom([]);xShowBlocksAtom.debugLabel="xShowBlocksAtom";const selectedLibraryAtom=utils.atomWithStorage("_selectedLibrary",null);selectedLibraryAtom.debugLabel="selectedLibraryAtom";const dataBindingActiveAtom=jotai.atom(!0);dataBindingActiveAtom.debugLabel="dataBindingActiveAtom";let lastHighlighted=null;const useBlockHighlight=()=>{const[o]=jotai.useAtom(canvasIframeAtom),n=React.useMemo(()=>{var r;return(o==null?void 0:o.contentDocument)||((r=o==null?void 0:o.contentWindow)==null?void 0:r.document)},[o]),a=React.useCallback(r=>{if(n)if(lastHighlighted&&lastHighlighted.removeAttribute("data-highlighted"),typeof r!="string")r.setAttribute("data-highlighted","true"),lastHighlighted=r;else if(typeof r=="string"){const i=n.querySelector(`[data-block-id="${r}"]`);i&&(i.setAttribute("data-highlighted","true"),lastHighlighted=i)}else lastHighlighted=null},[n]),l=React.useCallback(()=>{lastHighlighted&&(lastHighlighted.removeAttribute("data-highlighted"),lastHighlighted=null)},[]);return{highlightBlock:a,clearHighlight:l,lastHighlighted}};function duplicateBlocks(o,n,a){const l=lodashEs.filter(o,i=>i._parent===n),r=[];for(let i=0;i<l.length;i++)if(lodashEs.filter(o,{_parent:l[i]._id}).length>0){const c=commonFunctions.generateUUID();r.push({...l[i],oldId:l[i]._id,_id:c,_parent:a}),r.push(lodashEs.flatten(duplicateBlocks(o,l[i]._id,c)))}else r.push({...l[i],oldId:l[i]._id,_id:commonFunctions.generateUUID(),_parent:a});return lodashEs.flatten(r)}function convertToBlocksTree(o){const n={};o.forEach(l=>{n[l._id]={...l,children:[]}});const a=[];return o.forEach(l=>{if(l._parent){const r=n[l._parent];r&&r.children.push(n[l._id])}else a.push(n[l._id])}),a}const getDuplicatedBlocks=(o,n,a=null)=>{let l=lodashEs.find(o,{_id:n});l={...l,oldId:l._id,_id:commonFunctions.generateUUID()},a!==(l==null?void 0:l._parent)&&(l={...l,_parent:a});const r=[l];return lodashEs.filter(o,{_parent:n}).length>0&&r.push(lodashEs.flatten(duplicateBlocks(o,n,l._id))),lodashEs.flatten(r)},presentBlocksAtom=jotai.atom([]);presentBlocksAtom.debugLabel="presentBlocksAtom";const treeDSBlocks=jotai.atom(o=>{const n=o(presentBlocksAtom);return convertToBlocksTree([...n])});treeDSBlocks.debugLabel="treeDSBlocks";const pageBlocksAtomsAtom=utils.splitAtom(presentBlocksAtom);pageBlocksAtomsAtom.debugLabel="pageBlocksAtomsAtom";const builderActivePageAtom=jotai.atom("");builderActivePageAtom.debugLabel="builderActivePageAtom";const destinationDropIndexAtom=jotai.atom(-1);destinationDropIndexAtom.debugLabel="destinationDropIndexAtom";const buildingBlocksAtom=jotai.atom([]);buildingBlocksAtom.debugLabel="buildingBlocksAtom";const globalBlocksAtom=jotai.atom(o=>{const n=o(buildingBlocksAtom);return lodashEs.filter(n,a=>lodashEs.has(a,"blockId"))});globalBlocksAtom.debugLabel="globalBlocksAtom";const selectedBlockIdsAtom=jotai.atom([]);selectedBlockIdsAtom.debugLabel="selectedBlockIdsAtom";const selectedBlocksAtom=jotai.atom(o=>{const n=o(presentBlocksAtom),a=o(selectedBlockIdsAtom);return lodashEs.map(lodashEs.filter(n,({_id:l})=>lodashEs.includes(a,l)),l=>({...l}))});selectedBlocksAtom.debugLabel="selectedBlocksAtom";const selectedBlockAtom=jotai.atom(o=>{const n=o(selectedBlocksAtom);if(n.length===0)return null;if(n.length===1)return n[0]});selectedBlockAtom.debugLabel="selectedBlockAtom";const useSelectedBlock=()=>jotai.useAtomValue(selectedBlockAtom),getParentId=o=>lodashEs.get(o,"_parent",null),selectedBlocksParentsAtom=jotai.atom(o=>{const n=o(selectedBlocksAtom),a=lodashEs.map(n,getParentId);return lodashEs.filter(o(presentBlocksAtom),l=>lodashEs.includes(a,l._id))});selectedBlocksParentsAtom.debugLabel="selectedBlocksParentsAtom";const selectedBlockFlexChildAtom=jotai.atom(()=>!1);selectedBlockFlexChildAtom.debugLabel="selectedBlockFlexChildAtom";const selectedBlockGridChildAtom=jotai.atom(()=>!1);selectedBlockGridChildAtom.debugLabel="selectedBlockGridChildAtom";const styleStateAtom=jotai.atom("");styleStateAtom.debugLabel="styleStateAtom";const styleBreakpointAtom=utils.atomWithStorage("styleBreakpoint","xs");styleBreakpointAtom.debugLabel="styleBreakpointAtom";const useSelectedBlocksDisplayChild=()=>({flexChild:jotai.useAtomValue(selectedBlockFlexChildAtom),gridChild:jotai.useAtomValue(selectedBlockGridChildAtom)}),selectedBlockHierarchy=jotai.atom(o=>{const n=o(selectedBlockAtom),a=o(presentBlocksAtom);let l=n;const r=[n];do{const i=a.find(({_id:c})=>c===(l==null?void 0:l._parent));l=i,i&&r.push(i)}while(l!=null&&l._parent);return r}),useSelectedBlockHierarchy=()=>lodashEs.compact(jotai.useAtomValue(selectedBlockHierarchy)),useSelectedBlockIds=()=>{const[o,n]=jotai.useAtom(selectedBlockIdsAtom),a=React.useCallback(l=>{n(r=>lodashEs.includes(r,l)?lodashEs.without(r,l):[...r,l])},[n]);return[o,n,a]},Breadcrumb=()=>{const o=useSelectedBlockHierarchy(),[,n]=useSelectedBlockIds(),{highlightBlock:a}=useBlockHighlight();return jsxRuntime.jsx("div",{className:"-mx-2 border-t border-border bg-background px-2 py-1 text-xs text-muted-foreground",children:jsxRuntime.jsxs("ol",{className:"flex items-center whitespace-nowrap",children:[jsxRuntime.jsxs("li",{className:"inline-flex items-center",children:[jsxRuntime.jsx(toggle.Button,{onClick:()=>n([]),variant:"ghost",className:"h-fit p-1 text-xs font-normal",children:"Body"}),jsxRuntime.jsx(lucideReact.ChevronRight,{className:"rtl:rotate-180",size:16})]}),lodashEs.reverse(o).map((l,r)=>jsxRuntime.jsxs("li",{className:"inline-flex items-center",children:[jsxRuntime.jsxs(toggle.Button,{onMouseEnter:()=>{a(l==null?void 0:l._id)},onClick:()=>n([l==null?void 0:l._id]),variant:"ghost",className:"h-fit gap-x-1 p-1 text-xs font-normal",children:[jsxRuntime.jsx(TypeIcon,{type:l==null?void 0:l._type}),l._name||l._type]}),r!==o.length-1&&jsxRuntime.jsx(lucideReact.ChevronRight,{className:"rtl:rotate-180",size:16})]},r))]})})},CHAI_BUILDER_EVENTS={OPEN_ADD_BLOCK:"OPEN_ADD_BLOCK",CLOSE_ADD_BLOCK:"CLOSE_ADD_BLOCK",SHOW_BLOCK_SETTINGS:"SHOW_BLOCK_SETTINGS",CLEAR_CANVAS_SELECTION:"CLEAR_CANVAS_SELECTION",CANVAS_BLOCK_SELECTED:"CANVAS_BLOCK_SELECTED",CANVAS_BLOCK_STYLE_SELECTED:"CANVAS_BLOCK_STYLE_SELECTED"},canAcceptChildBlock=(o,n)=>{if(!o)return!0;const a=runtime.getRegisteredChaiBlock(o);return a&&lodashEs.has(a,"canAcceptBlock")?a.canAcceptBlock(n):!1},canAddChildBlock=o=>{const n=runtime.getRegisteredChaiBlock(o);return n?lodashEs.has(n,"canAcceptBlock"):!1},canBeNestedInside=(o,n)=>{const a=runtime.getRegisteredChaiBlock(n);return a&&lodashEs.has(a,"canBeNested")?a.canBeNested(o):!0},canDuplicateBlock=o=>{const n=runtime.getRegisteredChaiBlock(o);return n&&lodashEs.has(n,"canDuplicate")?n.canDuplicate():!0},canDeleteBlock=o=>{const n=runtime.getRegisteredChaiBlock(o);return n&&lodashEs.has(n,"canDelete")?n.canDelete():!0},canDropBlock=(o,{dragSource:n,dropTarget:a})=>{const l=lodashEs.get(n,"data._type",""),r=lodashEs.get(a,"data._type","");return canAcceptChildBlock(r,l)};class PubSub{constructor(){H(this,"subscribers",new Map)}subscribe(n,a){return this.subscribers.has(n)||this.subscribers.set(n,new Set),this.subscribers.get(n).add(a),()=>{const l=this.subscribers.get(n);l&&(l.delete(a),l.size===0&&this.subscribers.delete(n))}}publish(n,a){const l=this.subscribers.get(n);l&&l.forEach(r=>r(a))}}const pubsub=new PubSub,AddBlockDropdown=({block:o,children:n})=>{const{t:a}=reactI18next.useTranslation(),[l]=useBlocksStore(),{hasPermission:r}=usePermissions(),i=lodashEs.get(o,"_id"),c=lodashEs.get(o,"_parent"),d=lodashEs.filter(l,g=>c?lodashEs.get(g,"_parent")===c:!lodashEs.get(g,"_parent")),m=canAddChildBlock(lodashEs.get(o,"_type","")),u=lodashEs.findIndex(d,{_id:i}),p=g=>{if(g==="CHILD")pubsub.publish(CHAI_BUILDER_EVENTS.OPEN_ADD_BLOCK,o);else{const x={_id:c||"",position:d==null?void 0:d.length};g==="BEFORE"?x.position=Math.max(u,0):g==="AFTER"&&(x.position=u+1),pubsub.publish(CHAI_BUILDER_EVENTS.OPEN_ADD_BLOCK,x)}};return r(PERMISSIONS.ADD_BLOCK)?jsxRuntime.jsxs(toggle.DropdownMenu,{children:[jsxRuntime.jsx(toggle.DropdownMenuTrigger,{children:n}),jsxRuntime.jsxs(toggle.DropdownMenuContent,{className:"border border-blue-500 bg-primary text-white shadow-2xl",children:[m&&jsxRuntime.jsx(toggle.DropdownMenuItem,{className:"cursor-pointer text-xs",onClick:()=>p("CHILD"),children:a("Add inside")}),jsxRuntime.jsx(toggle.DropdownMenuItem,{className:"cursor-pointer text-xs",onClick:()=>p("BEFORE"),children:a("Add before")}),jsxRuntime.jsx(toggle.DropdownMenuItem,{className:"cursor-pointer text-xs",onClick:()=>p("AFTER"),children:a("Add after")})]})]}):null},draggedBlockAtom=jotai.atom(null);jotai.atom(null);function getOrientation(o,n=null){const a=window.getComputedStyle(o),l=n?window.getComputedStyle(n):null,r=a.display,i=l?l.display:null;if(r==="flex"||r==="inline-flex"){const c=a.flexDirection;return c==="column"||c==="column-reverse"?"vertical":"horizontal"}else if(r==="grid"){const c=a.gridAutoFlow,d=a.gridTemplateColumns;return c.includes("column")||d&&d!=="none"&&d!==""&&!d.includes("calc")&&d.split(" ").length<=1?"vertical":"horizontal"}else if(i==="inline-block"||i==="inline")return"horizontal";return"vertical"}let doc,win;typeof document<"u"&&(doc=document);typeof window<"u"&&(win=window);const FrameContext=React.createContext({document:doc,window:win}),useFrame=()=>React.useContext(FrameContext),{Provider:FrameContextProvider,Consumer:FrameContextConsumer}=FrameContext;function insertBlocksAtPosition(o,n,a,l){const r=[...n];let i=[...o];if(a){const u=o.find(p=>p._id===a);if(u&&u.content!==void 0&&u.content!==""&&!o.some(g=>g._parent===a)){const x={_id:commonFunctions.generateUUID(),_parent:a,_type:"Text",content:u.content};Object.keys(u).forEach(f=>{f.startsWith("content-")&&(x[f]=u[f])}),r.unshift(x),i=i.map(f=>{if(f._id===a){const h={...f,content:""};return Object.keys(h).forEach(j=>{j.startsWith("content-")&&(h[j]="")}),h}return f})}}let c=i.filter(u=>!u._parent);a&&(c=i.filter(u=>u._parent===a));const d=!isNaN(l)||l>-1?Math.min(l,c.length):c.length;let m=i.length;for(let u=0,p=0;u<i.length;u++)if(a!==void 0?i[u]._parent===a:!i[u]._parent){if(p===d){m=u;break}p++}return!a&&l!==void 0&&l>=c.length&&(m=i.length),[...i.slice(0,m),...r,...i.slice(m)]}function getBlocksTree(o){return convertToBlocksTree(o)}function flattenTree(o){let n=[];return o.walk(a=>(delete a.model.children,n.push(a.model),!0)),n}function findNodeById(o,n){return o.first(a=>a.model._id===n)||null}function moveNode(o,n,a,l){var u,p;const r=findNodeById(o,n),i=findNodeById(o,a);if(!r||!i)return!1;i.children||(i.model.children=[]);let c=(u=i==null?void 0:i.children)==null?void 0:u.findIndex(g=>g.model._id===n);r.drop(),c=Math.max(c,0);const m=(((p=r==null?void 0:r.model)==null?void 0:p._parent)||"root")===a&&c<=l?l-1:l;try{i.addChildAtIndex(r,m)}catch(g){return console.error("Error adding child to parent:",g),!1}return!0}function handleOldParentTextBlock(o,n){if(!n||!n._parent)return o;const a=n._parent,l=o.find(i=>i._id===a);if(!l)return o;const r=o.filter(i=>i._parent===a);if(r.length===2){const i=r.find(c=>c._id!==n._id);if(i&&i._type==="Text"&&"content"in l)return o.map(d=>{if(d._id===a){const m={...d,content:i.content};return Object.keys(i).forEach(u=>{u.startsWith("content-")&&(m[u]=i[u])}),m}return d}).filter(d=>d._id!==i._id)}return o}function handleNewParentTextBlock(o,n,a){if(!a||a==="root")return o;const l=o.find(r=>r._id===a);if(!l)return o;if(l.content!==void 0&&l.content!==""&&!o.some(i=>i._parent===a&&i._id!==n._id)){const c={_id:commonFunctions.generateUUID(),_parent:a,_type:"Text",content:l.content};Object.keys(l).forEach(u=>{u.startsWith("content-")&&(c[u]=l[u])});const d=o.map(u=>{if(u._id===a){const p={...u,content:""};return Object.keys(p).forEach(g=>{g.startsWith("content-")&&(p[g]="")}),p}return u}),m=d.findIndex(u=>u._id===n._id);return m!==-1?[...d.slice(0,m),c,...d.slice(m)]:[c,...d]}return o}function moveBlocksWithChildren(o,n,a,l){if(!n)return o;const r=o.find(u=>u._id===n);if(!r)return o;let i=handleOldParentTextBlock(o,r);const c=a||"root",m=new TreeModel().parse({_id:"root",children:getBlocksTree(i)});if(moveNode(m,n,c,l)){let u=flattenTree(m);const p=u.find(g=>g._id===n);return p&&(p._parent=c==="root"?null:c),u.shift(),a&&(u=handleNewParentTextBlock(u,r,a)),u}return i}const broadcastChannel=new BroadcastChannel("chaibuilder"),useBroadcastChannel=()=>{const o=useBuilderProp("pageId","chaibuilder_page");return{postMessage:web.useDebouncedCallback(a=>broadcastChannel.postMessage({...a,pageId:o}),[o],200)}},useUnmountBroadcastChannel=()=>{const[,o]=useBlocksStore(),n=useBuilderProp("pageId","chaibuilder_page"),{updateBlocksProps:a}=useBlocksStoreManager();React.useEffect(()=>(broadcastChannel.onmessageerror=l=>{console.log("error",l)},broadcastChannel.onmessage=l=>{l.data.type==="blocks-updated"&&l.data.pageId===n&&o(l.data.blocks),l.data.type==="blocks-props-updated"&&l.data.pageId===n&&a(l.data.blocks)},()=>{broadcastChannel.onmessage=null,broadcastChannel.onmessageerror=null}),[o,n])},removeNestedBlocks=(o,n)=>{let a=[...o],l=[];n.forEach(d=>{const m=a.find(g=>g._id===d);if(!m||!m._parent)return;const u=m._parent,p=a.filter(g=>g._parent===u);if(p.length===2){const g=p.find(x=>x._id!==d);if(g&&g._type==="Text"){const x=a.find(f=>f._id===u);x&&"content"in x&&(a=a.map(f=>{if(f._id===u){const h={...f,content:g.content};return Object.keys(g).forEach(j=>{j.startsWith("content-")&&(h[j]=g[j])}),h}return f}),l.push(g._id))}}});const r=[...n,...l],i=[],c=lodashEs.filter(a,d=>lodashEs.includes(r,d._id)||lodashEs.includes(r,d._parent)?(i.push(d._id),!1):!0);return lodashEs.isEmpty(i)?c:removeNestedBlocks(c,i)},useRemoveBlocks=()=>{const[o]=useBlocksStore(),[n,a]=useSelectedBlockIds(),{setNewBlocks:l}=useBlocksStoreUndoableActions(),{hasPermission:r}=usePermissions();return React.useCallback(i=>{var d;if(!r(PERMISSIONS.DELETE_BLOCK))return;const c=((d=lodashEs.find(o,{_id:i[0]}))==null?void 0:d._parent)||null;l(removeNestedBlocks(o,i)),setTimeout(()=>a(c?[c]:[]),200)},[o,a,n,r])},builderStore=jotai.getDefaultStore(),writeAtomValue=jotai.atom(null,(o,n,{id:a,props:l})=>{const r=o(pageBlocksAtomsAtom),i=lodashEs.find(r,c=>o(c)._id===a);return i?n(i,{...o(i),...l}):null}),useUpdateBlockAtom=()=>jotai.useSetAtom(writeAtomValue),useGetBlockAtom=o=>utils.useAtomCallback(React.useCallback((n,a,l)=>{const r=n(o);if(!r||!r.length)return console.warn("No blocks available in splitAtoms"),null;const i=lodashEs.find(r,c=>n(c)._id===(lodashEs.isString(l)?l:n(l)._id));return i||(console.warn(`Block with id ${l} not found`),null)},[o]),{store:builderStore}),useBlocksStoreManager=()=>{const[,o]=useBlocksStore(),{postMessage:n}=useBroadcastChannel(),a=useUpdateBlockAtom();return{setNewBlocks:l=>{o(l),n({type:"blocks-updated",blocks:l})},addBlocks:(l,r,i)=>{o(c=>{const d=insertBlocksAtPosition(c,l,r,i);return n({type:"blocks-updated",blocks:d}),d})},removeBlocks:l=>{o(r=>{const i=removeNestedBlocks(r,l);return n({type:"blocks-updated",blocks:i}),i})},moveBlocks:(l,r,i)=>{o(c=>{let d=[...c];for(let m=0;m<l.length;m++)d=moveBlocksWithChildren(d,l[m],r,i);return lodashEs.each(l,m=>{const u=lodashEs.find(d,p=>p._id===m);u&&a({id:m,props:{_parent:u._parent||null}})}),n({type:"blocks-updated",blocks:d}),d})},updateBlocksProps:l=>{l.forEach(r=>{const i=lodashEs.omit(r,"_id");a({id:r._id,props:i})}),n({type:"blocks-props-updated",blocks:l})}}},blockRepeaterDataAtom=jotai.atom({});blockRepeaterDataAtom.debugLabel="blockRepeaterDataAtom";const useBlockRepeaterDataAtom=()=>jotai.useAtom(blockRepeaterDataAtom),useAsyncProps=(o,n,a,l)=>{const[r,i]=React.useState({status:"idle",props:{},error:void 0}),c=useUpdateBlocksPropsRealtime(),d=useBuilderProp("getBlockAsyncProps",async f=>({})),m=jotai.useSetAtom(blockRepeaterDataAtom),u=JSON.stringify([o==null?void 0:o._id,...lodashEs.values(lodashEs.pick(o,a??[]))]),p=(o==null?void 0:o._type)==="Repeater"&&lodashEs.startsWith(o.repeaterItems,`{{${applyBinding.COLLECTION_PREFIX}`),g=(o==null?void 0:o._type)!=="Repeater"&&n==="live";return React.useEffect(()=>{if(n==="mock"){if(lodashEs.isFunction(l)){i(h=>({...h,status:"loading",props:{}}));const f=l({block:o});if(!utils$1.isObject(f))throw new Error("mockDataProvider should return an object");i(h=>({...h,status:"loaded",props:f}))}return}n==="live"&&(!p&&!g||(i(f=>({...f,status:"loading",props:{}})),d({block:o}).then((f={})=>{p?(m(h=>({...h,[o._id]:{status:"loaded",props:lodashEs.get(f,"items",[]),repeaterItems:o.repeaterItems}})),i(h=>({...h,status:"loaded",props:{totalItems:lodashEs.get(f,"totalItems")}})),c([o._id],{totalItems:lodashEs.get(f,"totalItems")})):i(h=>({...h,status:"loaded",props:utils$1.isObject(f)?f:{}}))}).catch(f=>{p?(m(h=>({...h,[o._id]:{status:"error",error:f,props:[]}})),i(h=>({...h,status:"error",error:f,props:{}}))):i(h=>({...h,status:"error",error:f,props:{}}))})))},[o==null?void 0:o._id,u,p,g,l,n]),{$loading:lodashEs.get(r,"status")==="loading",...o?lodashEs.get(r,"props",{}):{}}},chaiBuilderPropsAtom=jotai.atom(null);chaiBuilderPropsAtom.debugLabel="chaiBuilderPropsAtom";const chaiExternalDataAtom=jotai.atom({});chaiExternalDataAtom.debugLabel="chaiExternalDataAtom";const chaiRjsfFieldsAtom=jotai.atom({});chaiRjsfFieldsAtom.debugLabel="chaiRjsfFieldsAtom";const chaiRjsfWidgetsAtom=jotai.atom({});chaiRjsfWidgetsAtom.debugLabel="chaiRjsfWidgetsAtom";const chaiRjsfTemplatesAtom=jotai.atom({});chaiRjsfTemplatesAtom.debugLabel="chaiRjsfTemplatesAtom";const chaiPageExternalDataAtom=jotai.atom({});chaiPageExternalDataAtom.debugLabel="chaiPageExternalDataAtom";const usePageExternalData=()=>{const[o]=useBlockRepeaterDataAtom(),n=React.useMemo(()=>{const l={};return Object.entries(o).forEach(([r,i])=>{i.status==="loaded"&&(l[i.repeaterItems.replace("}}",`/${r}`).replace("{{","")]=i.props)}),l},[o]);return{...jotai.useAtomValue(chaiPageExternalDataAtom),...n}},useBuilderProp=(o,n=void 0)=>{const a=jotai.useAtomValue(chaiBuilderPropsAtom);return React.useMemo(()=>lodashEs.get(a,o,n),[a,o,n])},MODIFIERS=["hover","focus","focus-within","focus-visible","active","visited","target","first","last","only","odd","even","first-of-type","last-of-type","only-of-type","empty","disabled","checked","indeterminate","default","required","valid","invalid","in-range","out-of-range","placeholder-shown","autofill","read-only","open","before","after","first-letter","first-line","marker","selection","file","placeholder","hs-collapse-open","hs-accordion-active"],BRANDING_OPTIONS_DEFAULTS={bodyFont:"Inter",headingFont:"Inter",roundedCorners:5,primaryColor:"#570df8",secondaryColor:"#f002b8",bodyBgDarkColor:"#031022",bodyBgLightColor:"#fcfcfc",bodyTextDarkColor:"#ffffff",bodyTextLightColor:"#000000"},brandingOptionsAtom=jotai.atom(BRANDING_OPTIONS_DEFAULTS);jotai.atom(null);const useBrandingOptions=()=>{const[o,n]=jotai.useAtom(brandingOptionsAtom);return[lodashEs.isObject(o)?{...BRANDING_OPTIONS_DEFAULTS,...o}:BRANDING_OPTIONS_DEFAULTS,n]},currentPageAtom=jotai.atom(null),useCurrentPage=()=>({currentPage:jotai.useAtomValue(currentPageAtom)}),getBlockBuilderProps=lodashEs.memoize(o=>{const n=runtime.getRegisteredChaiBlock(o),a=lodashEs.get(n,"schema.properties",{});return lodashEs.compact(Object.keys(a).map(l=>lodashEs.get(a[l],"builderProp",!1)||lodashEs.get(a[l],"runtime",!1)?l:null))}),useGetPageData=()=>{const[o]=useBrandingOptions(),{currentPage:n}=useCurrentPage(),[a]=useBlocksStore();return React.useCallback(()=>{const l=lodashEs.map(a,r=>lodashEs.omit(r,getBlockBuilderProps(r._type)));return{currentPage:n,blocks:l}},[o,n,a])},usePermissions=()=>{const o=useBuilderProp("permissions",void 0);return{hasPermission:React.useCallback(a=>o?o.includes(a):!0,[o])}},getDefaultThemeValues=(o=plugin.defaultThemeOptions)=>{const n=plugin.defaultThemeValues;return o.fontFamily&&(n.fontFamily=Object.entries(o.fontFamily).reduce((a,[l,r])=>({...a,[l.replace("font-","")]:r}),n.fontFamily)),n.borderRadius=o.borderRadius,o.colors&&(n.colors=o.colors.reduce((a,l)=>(Object.entries(l.items).forEach(([r,i])=>{a[r]=i}),a),n.colors)),n},chaiThemeValuesAtom=jotai.atom({}),useTheme=()=>{const o=useThemeOptions(),n=React.useMemo(()=>getDefaultThemeValues(o),[o]),a=useBuilderProp("theme",{}),[l,r]=jotai.useAtom(chaiThemeValuesAtom);return[React.useMemo(()=>({...n,...!lodashEs.isEmpty(a)&&a,...!lodashEs.isEmpty(l)&&l}),[n,a,l]),r]},useThemeOptions=()=>{const o=useBuilderProp("themeOptions",a=>a);return React.useMemo(()=>o(plugin.defaultThemeOptions),[o])},rightPanelAtom=jotai.atom("block"),useRightPanel=()=>jotai.useAtom(rightPanelAtom),languageAtom=jotai.atom("");languageAtom.debugLabel="selectedLanguageAtom";const useLanguages=()=>{const o=useBuilderProp("languages",[]),n=useBuilderProp("fallbackLang","en"),[a,l]=jotai.useAtom(languageAtom),r=i=>{l(n===i?"":i)};return{languages:o==null?void 0:o.filter(i=>i!==n),fallbackLang:n,selectedLang:a,setSelectedLang:r}},isPageLoadedAtom=jotai.atom(!1),useIsPageLoaded=()=>{const[o]=jotai.useAtom(isPageLoadedAtom);return o},builderSaveStateAtom=jotai.atom("SAVED");builderSaveStateAtom.debugLabel="builderSaveStateAtom";const checkMissingTranslations=(o,n)=>n?o.some(a=>{if(!(a!=null&&a._type)||a._type==="PartialBlock")return!1;try{const l=runtime.getRegisteredChaiBlock(a._type);return l?(lodashEs.has(l,"i18nProps")?l.i18nProps:[]).some(i=>{const c=`${i}-${n}`;return!a[c]||lodashEs.isEmpty(a[c])}):!1}catch(l){return console.warn(`Failed to get block definition for type: ${a._type}`,l),!1}}):!1,useSavePage=()=>{const[o,n]=jotai.useAtom(builderSaveStateAtom),a=useBuilderProp("onSave",async f=>{}),l=useBuilderProp("onSaveStateChange",lodashEs.noop),r=useGetPageData(),[i]=useTheme(),{hasPermission:c}=usePermissions(),{selectedLang:d,fallbackLang:m}=useLanguages(),u=useIsPageLoaded(),p=()=>{const f=r();return!d||d===m?!1:checkMissingTranslations(f.blocks||[],d)};return{savePage:web.useThrottledCallback(async(f=!1)=>{if(!c("save_page")||!u)return;n("SAVING"),l("SAVING");const h=r();return await a({autoSave:f,blocks:h.blocks,theme:i,needTranslations:p()}),setTimeout(()=>{n("SAVED"),l("SAVED")},100),!0},[r,n,i,a,l,u],3e3),savePageAsync:async()=>{if(!c("save_page")||!u)return;n("SAVING"),l("SAVING");const f=r();return await a({autoSave:!0,blocks:f.blocks,theme:i,needTranslations:p()}),setTimeout(()=>{n("SAVED"),l("SAVED")},100),!0},saveState:o,setSaveState:n,needTranslations:p}},undoManager=new UndoManager;undoManager.setLimit(50);const undoRedoStateAtom=jotai.atom({canUndo:!1,canRedo:!1}),useUndoManager=()=>{const[,o]=jotai.useAtom(builderSaveStateAtom),[n,a]=jotai.useAtom(undoRedoStateAtom),l=useBuilderProp("onSaveStateChange",lodashEs.noop),r=React.useCallback(()=>{const u={canUndo:undoManager.hasUndo(),canRedo:undoManager.hasRedo()};a(u),o("UNSAVED"),l("UNSAVED")},[a,o,l]);React.useEffect(()=>(undoManager.setCallback(r),()=>{undoManager.setCallback(lodashEs.noop)}),[r]);const i=React.useCallback(u=>{undoManager.add(u),r()},[r]),c=React.useCallback(()=>{undoManager.undo(),r()},[r]),d=React.useCallback(()=>{undoManager.redo(),r()},[r]),m=React.useCallback(()=>{undoManager.clear(),a({canUndo:!1,canRedo:!1})},[a]);return React.useMemo(()=>({add:i,undo:c,redo:d,hasUndo:()=>n.canUndo,hasRedo:()=>n.canRedo,clear:m}),[i,c,d,n.canUndo,n.canRedo,m])},useBlocksStore=()=>jotai.useAtom(presentBlocksAtom),useBlocksStoreUndoableActions=()=>{const{add:o}=useUndoManager(),[n]=useBlocksStore(),{setNewBlocks:a,addBlocks:l,removeBlocks:r,moveBlocks:i,updateBlocksProps:c}=useBlocksStoreManager();return{moveBlocks:(h,j,b)=>{const C=lodashEs.map(h,B=>{const S=n.find(w=>w._id===B)._parent||null,E=n.filter(w=>S?w._parent===S:!w._parent).map(w=>w._id).indexOf(B);return{_id:B,oldParent:S,oldPosition:E}}),A=C.find(({_id:B})=>B===h[0]);A&&A.oldParent===j&&A.oldPosition===b||(i(h,j,b),o({undo:()=>lodashEs.each(C,({_id:B,oldParent:_,oldPosition:S})=>{i([B],_,S)}),redo:()=>i(h,j,b)}))},addBlocks:(h,j,b)=>{l(h,j,b),o({undo:()=>r(lodashEs.map(h,"_id")),redo:()=>l(h,j,b)})},removeBlocks:h=>{var A;const j=(A=lodashEs.first(h))==null?void 0:A._parent,C=n.filter(B=>j?B._parent===j:!B._parent).indexOf(lodashEs.first(h));r(lodashEs.map(h,"_id")),o({undo:()=>l(h,j,C),redo:()=>r(lodashEs.map(h,"_id"))})},updateBlocks:(h,j,b)=>{let C=[];if(b)C=lodashEs.map(h,A=>({_id:A,...b}));else{const A=lodashEs.keys(j);C=lodashEs.map(h,B=>{const _=n.find(y=>y._id===B),S={_id:B};return lodashEs.each(A,y=>S[y]=_[y]),S})}c(lodashEs.map(h,A=>({_id:A,...j}))),o({undo:()=>c(C),redo:()=>c(lodashEs.map(h,A=>({_id:A,...j})))})},updateBlocksRuntime:(h,j)=>{c(lodashEs.map(h,b=>({_id:b,...j})))},setNewBlocks:h=>{a(h),o({undo:()=>a(n),redo:()=>a(h)})},updateMultipleBlocksProps:h=>{let j=[];j=lodashEs.map(h,b=>{const C=lodashEs.keys(b),A=n.find(_=>_._id===b._id),B={};return lodashEs.each(C,_=>B[_]=A[_]),B}),c(h),o({undo:()=>c(j),redo:()=>c(h)})}}},useAddBlock=()=>{const[o]=useBlocksStore(),[,n]=useSelectedBlockIds(),{addBlocks:a}=useBlocksStoreUndoableActions(),l=React.useCallback((i,c,d)=>{var x;for(let f=0;f<i.length;f++){const{_id:h}=i[f];i[f]._id=commonFunctions.generateUUID();const j=lodashEs.filter(i,{_parent:h});for(let b=0;b<j.length;b++)j[b]._parent=i[f]._id}const m=lodashEs.first(i);let u,p;return c&&(u=lodashEs.find(o,{_id:c}),i[0]._parent=c,p=c),!(u?canAcceptChildBlock(u==null?void 0:u._type,m._type):!0)&&u&&(i[0]._parent=u._parent,p=u._parent),a(i,p,d),n([(x=lodashEs.first(i))==null?void 0:x._id]),lodashEs.first(i)},[a,o,n]);return{addCoreBlock:React.useCallback((i,c,d)=>{if(lodashEs.has(i,"blocks")){const j=i.blocks;return l(j,c,d)}const m=commonFunctions.generateUUID(),u=runtime.getDefaultBlockProps(i.type),p={_type:i.type,_id:m,...u,...lodashEs.has(i,"_name")&&{_name:i._name},...lodashEs.has(i,"partialBlockId")&&{partialBlockId:i.partialBlockId}};let g,x;return c&&(g=lodashEs.find(o,{_id:c}),p._parent=c,x=c),!canAcceptChildBlock(g==null?void 0:g._type,p._type)&&g&&(p._parent=g._parent,x=g._parent),a([p],x,d),n([p._id]),p},[a,l,o,n]),addPredefinedBlock:l}},STANDARD=[0,1,2,3,4,5,6,7,8,9,10,11,12,14,16,20,24,28,32,36,40,44,48,52,56,60,64,72,80,96],CLASS_VALUES={columns:[...lodashEs.range(1,13),"auto","3xs","2xs","xs","sm","md","lg","xl",...lodashEs.map(lodashEs.range(2,8),o=>`${o}xl`)],breakAfter:["auto","avoid","all","avoid-page","page","left","right","column"],breakInside:["auto","avoid","avoid-page","avoid-column"],display:["block","flex","grid","inline-block","inline","hidden"],objectFit:["contain","cover","fill","none","scale-down"],objectPosition:["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],overflow:["auto","hidden","clip","visible","scroll"],overscroll:["auto","contain","none"],trbl:[0,"px","0.5",1,1.5,2,2.5,3,3.5,...lodashEs.range(4,13),14,16,20,24,28,32,36,40,44,48,52,56,60,64,72,80,96,"auto","1/2","1/3","2/3","1/4","2/4","3/4","full"],flexBasis:[...STANDARD,"auto","px","0.5","1.5","2.5","3.5","1/2","1/3","2/3","1/4","2/4","3/4","1/5","2/5","3/5","4/5","1/6","2/6","3/6","4/6","5/6","1/12","2/12","3/12","4/12","5/12","6/12","7/12","8/12","9/12","10/12","11/12","full"],padding:[...STANDARD,"px","0.5","1.5","2.5","3.5"],margin:["auto",...STANDARD,"px","0.5","1.5","2.5","3.5"],scale:[0,50,75,90,95,100,105,110,125,150],origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left"],blendEffect:["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],borderWidth:[0,2,4,8],borderRadius:["global","none","sm","md","lg","xl","2xl","3xl","full"],indent:[0,"px","0.5",1,1.5,2,2.5,3,3.5,...lodashEs.range(4,13),14,16,20,24,28,32,36,40,44,48,52,56,60,64,72,80,96],maxHeight:[0,"px","0.5",1,1.5,2,2.5,3,3.5,...lodashEs.range(4,13),14,16,20,24,28,32,36,40,44,48,52,56,60,64,72,80,96,"full","screen","min","max","fit"],space:[0,"px","0.5",1,1.5,2,2.5,3,3.5,...lodashEs.range(4,13),14,16,20,24,28,32,36,40,44,48,52,56,60,64,72,80,96,"px","reverse"],width:["0","px","0.5","1","1.5","2","2.5","3","3.5","4","5","6","7","8","9","10","11","12","14","16","20","24","28","32","36","40","44","48","52","56","60","64","72","80","96","auto","1/2","1/3","2/3","1/4","2/4","3/4","1/5","2/5","3/5","4/5","1/6","2/6","3/6","4/6","5/6","1/12","2/12","3/12","4/12","5/12","6/12","7/12","8/12","9/12","10/12","11/12"],maxWidth:["0","none","xs","sm","md","lg","xl","2xl","3xl","4xl","5xl","6xl","7xl","full","min","max","fit","prose","screen-sm","screen-md","screen-lg","screen-xl","screen-2xl"],height:["0","px","0.5","1","1.5","2","2.5","3","3.5","4","5","6","7","8","9","10","11","12","14","16","20","24","28","32","36","40","44","48","52","56","60","64","72","80","96","auto","1/2","1/3","2/3","1/4","2/4","3/4","1/5","2/5","3/5","4/5","1/6","2/6","3/6","4/6","5/6","full","screen","min","max","fit"]},CLASSES_LIST={textColor:{classes:[],regExp:"text-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},aspectRatio:{classes:["aspect-auto","aspect-square","aspect-video"],regExp:"aspect-(auto|square|video)"},container:{classes:["container"],regExp:"container"},columns:{classes:lodashEs.map(CLASS_VALUES.columns,o=>`columns-${o}`),regExp:"columns-(auto|[0-9]xl|[0-9]xs|xs|sm|md|lg|xl|\\d+)"},breakAfter:{classes:lodashEs.map(CLASS_VALUES.breakAfter,o=>`break-after-${o}`),regExp:"break-after-\\S+"},breakBefore:{classes:lodashEs.map(CLASS_VALUES.breakAfter,o=>`break-before-${o}`),regExp:"break-before-\\S+"},breakInside:{classes:lodashEs.map(CLASS_VALUES.breakInside,o=>`break-inside-${o}`),regExp:"break-inside-\\S+"},boxDecoration:{classes:["box-decoration-clone","box-decoration-slice"],regExp:"box-decoration-\\S+"},boxSizing:{classes:["box-border","box-content"],regExp:"box-(border|content)"},flexDirection:{classes:["flex-row","flex-row-reverse","flex-col","flex-col-reverse"],regExp:"flex-(row|row-reverse|col|col-reverse)"},flexWrap:{classes:["flex-wrap","flex-wrap-reverse","flex-nowrap"],regExp:"flex-(wrap|wrap-reverse|nowrap)"},flexGrowShrink:{classes:["flex-1","flex-auto","flex-initial","flex-none"],regExp:"flex-1|flex-auto|flex-initial|flex-none"},gridColumns:{classes:lodashEs.map([...lodashEs.range(0,13),"none"],o=>`grid-cols-${o}`),regExp:"grid-cols-(\\d+|none)"},gridFlow:{classes:["grid-flow-row","grid-flow-col","grid-flow-row-dense","grid-flow-col-dense"],regExp:"grid-flow-(row|col|row-dense|col-dense)"},outlineStyle:{classes:lodashEs.map(["none","dashed","dotted","double","hidden"],o=>`outline-${o}`),regExp:"outline-(none|dashed|dotted|double|hidden)"},borderStyle:{classes:lodashEs.map(["solid","dashed","dotted","double","hidden","none"],o=>`border-${o}`),regExp:"border-(solid|dashed|dotted|double|hidden|none)"},overflow:{classes:lodashEs.map(CLASS_VALUES.overflow,o=>`overflow-${o}`),regExp:`overflow-(${CLASS_VALUES.overflow.join("|")})`},overflowX:{classes:lodashEs.map(CLASS_VALUES.overflow,o=>`overflow-x-${o}`),regExp:`overflow-x-(${CLASS_VALUES.overflow.join("|")})`},overflowY:{classes:lodashEs.map(CLASS_VALUES.overflow,o=>`overflow-y-${o}`),regExp:`overflow-y-(${CLASS_VALUES.overflow.join("|")})`},gridRows:{classes:lodashEs.map([1,2,3,4,5,6,"none"],o=>`grid-rows-${o}`),regExp:"grid-rows-(\\d|none)"},display:{classes:lodashEs.map(CLASS_VALUES.display,o=>o.toString()),regExp:`(${CLASS_VALUES.display.join("|")})`},float:{classes:["float-right","float-left","float-none"],regExp:"float-\\S+"},clear:{classes:["clear-right","clear-left","clear-none","clear-both"],regExp:"clear-\\S+"},isolation:{classes:["isolate","isolation-auto"],regExp:"isolate|isolation-auto"},objectFit:{classes:lodashEs.map(CLASS_VALUES.objectFit,o=>`object-${o}`),regExp:"object-(contain|cover|fill|none|scale-down)"},objectPosition:{classes:lodashEs.map(CLASS_VALUES.objectPosition,o=>`object-${o}`),regExp:`object-(${CLASS_VALUES.objectPosition.join("|")})`},overscroll:{classes:lodashEs.map(CLASS_VALUES.overscroll,o=>`overscroll-${o}`),regExp:`overscroll-(${CLASS_VALUES.overscroll.join("|")})`},overscrollX:{classes:lodashEs.map(CLASS_VALUES.overscroll,o=>`overscroll-x-${o}`),regExp:`overscroll-x-(${CLASS_VALUES.overscroll.join("|")})`},overscrollY:{classes:lodashEs.map(CLASS_VALUES.overscroll,o=>`overscroll-y-${o}`),regExp:`overscroll-y-(${CLASS_VALUES.overscroll.join("|")})`},inset:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`inset-${o}`),regExp:"-?inset-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},insetX:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`inset-x-${o}`),regExp:"-?inset-x-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},insetY:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`inset-y-${o}`),regExp:"-?inset-y-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},top:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`top-${o}`),regExp:"-?top-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},topX:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`top-x-${o}`),regExp:"-?top-x-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},topY:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`top-y-${o}`),regExp:"-?top-y-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},right:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`right-${o}`),regExp:"-?right-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},rightX:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`right-x-${o}`),regExp:"-?right-x-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},rightY:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`right-y-${o}`),regExp:"-?right-y-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},bottom:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`bottom-${o}`),regExp:"-?bottom-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},bottomX:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`bottom-x-${o}`),regExp:"-?bottom-x-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},bottomY:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`bottom-y-${o}`),regExp:"-?bottom-y-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},left:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`left-${o}`),regExp:"-?left-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},leftX:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`left-x-${o}`),regExp:"-?left-x-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},leftY:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`left-y-${o}`),regExp:"-?left-y-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},visibility:{classes:["visible","invisible"],regExp:"invisible|visible"},zIndex:{classes:lodashEs.map(["0",10,20,30,40,50,"auto"],o=>`z-${o}`),regExp:"-?z-(\\d+|auto|\\[.*\\])"},flexBasis:{classes:lodashEs.map(CLASS_VALUES.flexBasis,o=>`basis-${o}`),regExp:"basis-(\\d+|\\S+)"},flexGrow:{classes:["grow","grow-0"],regExp:"grow(-0)?"},flexShrink:{classes:["shrink","shrink-0"],regExp:"shrink(-0)?"},gridColSpan:{classes:["col-auto",...lodashEs.map(lodashEs.range(1,13),o=>`col-span-${o}`),"col-span-full"],regExp:"col-(auto|span-(\\d+|full))"},gridColStart:{classes:[...lodashEs.map(lodashEs.range(1,14),o=>`col-start-${o}`),"col-start-auto"],regExp:"col-start-(\\d+|auto)"},gridColEnd:{classes:[...lodashEs.map(lodashEs.range(1,14),o=>`col-end-${o}`),"col-end-auto"],regExp:"col-end-(\\d+|auto)"},gridRowSpan:{classes:["row-auto",...lodashEs.map(lodashEs.range(1,7),o=>`row-span-${o}`),"row-span-full"],regExp:"row-(auto|span-(\\d+|full))"},gridRowStart:{classes:[...lodashEs.map(lodashEs.range(1,8),o=>`row-start-${o}`),"row-start-auto"],regExp:"row-start-(\\d+|auto)"},gridRowEnd:{classes:[...lodashEs.map(lodashEs.range(1,8),o=>`row-end-${o}`),"row-end-auto"],regExp:"row-end-(\\d+|auto)"},gridAutoColumns:{classes:["auto-cols-auto","auto-cols-min","auto-cols-max","auto-cols-fr"],regExp:"auto-cols-(auto|min|max|fr)"},gridAutoRows:{classes:["auto-rows-auto","auto-rows-min","auto-rows-max","auto-rows-fr"],regExp:"auto-rows-(auto|min|max|fr)"},gap:{classes:lodashEs.map(CLASS_VALUES.indent,o=>`gap-${o}`),regExp:"gap-(px|\\d.\\d|\\d|\\[.*\\])"},gapX:{classes:lodashEs.map(CLASS_VALUES.indent,o=>`gap-x-${o}`),regExp:"gap-x-(px|\\d.\\d|\\d|\\[.*\\])"},gapY:{classes:lodashEs.map(CLASS_VALUES.indent,o=>`gap-y-${o}`),regExp:"gap-y-(px|\\d.\\d|\\d|\\[.*\\])"},justifyContent:{classes:["justify-start","justify-end","justify-center","justify-between","justify-around","justify-evenly"],regExp:"justify-(start|end|center|between|around|evenly)"},justifyItems:{classes:["justify-items-start","justify-items-end","justify-items-center","justify-items-stretch"],regExp:"justify-items-(start|end|center|stretch)"},justifySelf:{classes:["justify-self-auto","justify-self-start","justify-self-end","justify-self-center","justify-self-stretch"],regExp:"justify-self-(auto|start|end|center|stretch)"},placeContent:{classes:["place-content-center","place-content-start","place-content-end","place-content-between","place-content-around","place-content-evenly","place-content-stretch"],regExp:"place-content-(center|start|end|between|around|evenly|stretch)"},placeItems:{classes:["place-items-start","place-items-end","place-items-center","place-items-stretch"],regExp:"place-items-(start|end|center|stretch)"},placeSelf:{classes:["place-self-auto","place-self-start","place-self-end","place-self-center","place-self-stretch"],regExp:"place-self-(auto|start|end|center|stretch)"},alignContent:{classes:["content-center","content-start","content-end","content-between","content-around","content-evenly"],regExp:"content-(center|start|end|between|around|evenly)"},alignItems:{classes:["items-start","items-end","items-center","items-baseline","items-stretch"],regExp:"items-(start|end|center|baseline|stretch)"},alignSelf:{classes:["self-auto","self-start","self-end","self-center","self-stretch","self-baseline"],regExp:"self-(auto|start|end|center|stretch|baseline)"},backgroundClip:{classes:["bg-clip-border","bg-clip-padding","bg-clip-content","bg-clip-text"],regExp:"bg-clip-(border|padding|content|text)"},dropShadow:{classes:lodashEs.map(["sm","md","lg","xl","2xl","none"],o=>`drop-shadow-${o}`),regExp:"drop-shadow-(sm|md|lg|xl|2xl|none)"},backdropBlur:{classes:lodashEs.map(["none","sm","md","lg","xl","2xl","3xl"],o=>`backdrop-blur-${o}`),regExp:"backdrop-blur-(none|sm|md|lg|xl|2xl|3xl)"},backdropBrightness:{classes:lodashEs.map([0,50,75,90,95,100,105,110,125,150,200],o=>`backdrop-brightness-${o}`),regExp:"backdrop-brightness-(\\d+)"},backdropContrast:{classes:lodashEs.map([0,50,75,100,125,150,200],o=>`backdrop-contrast-${o}`),regExp:"backdrop-contrast-(\\d+)"},backdropGrayScale:{classes:["backdrop-grayscale-0","backdrop-grayscale"],regExp:"backdrop-grayscale(-0)?"},backdropHueRotate:{classes:lodashEs.map([0,15,30,60,90,180],o=>`backdrop-hue-rotate-${o}`),regExp:"-?backdrop-hue-rotate-(\\d+)"},backdropInvert:{classes:["backdrop-invert-0","backdrop-invert"],regExp:"backdrop-invert(-0)?"},backdropOpacity:{classes:lodashEs.map([0,5,10,20,25,30,40,50,60,70,75,80,90,95,100],o=>`backdrop-opacity-${o}`),regExp:"backdrop-opacity-(\\d+)"},backdropSaturate:{classes:lodashEs.map([0,50,100,150,200],o=>`backdrop-saturate-${o}`),regExp:"backdrop-saturate-(\\d+)"},backdropSepia:{classes:["backdrop-sepia-0, backdrop-sepia"],regExp:"backdrop-sepia(-0)?"},backgroundOrigin:{classes:["bg-origin-border","bg-origin-padding","bg-origin-content"],regExp:"bg-origin-(border|padding|content)"},transformOrigin:{classes:lodashEs.map(CLASS_VALUES.origin,o=>`origin-${o}`),regExp:"origin-(\\d+|\\S+)"},padding:{classes:lodashEs.map(CLASS_VALUES.padding,o=>`p-${o}`),regExp:"p-(\\d+|\\S+|\\[.*\\])"},paddingX:{classes:lodashEs.map(CLASS_VALUES.padding,o=>`px-${o}`),regExp:"px-(\\d+|\\S+|\\[.*\\])"},paddingY:{classes:lodashEs.map(CLASS_VALUES.padding,o=>`py-${o}`),regExp:"py-(\\d+|\\S+|\\[.*\\])"},paddingTop:{classes:lodashEs.map(CLASS_VALUES.padding,o=>`pt-${o}`),regExp:"pt-(\\d+|\\S+|\\[.*\\])"},paddingRight:{classes:lodashEs.map(CLASS_VALUES.padding,o=>`pr-${o}`),regExp:"pr-(\\d+|\\S+|\\[.*\\])"},paddingBottom:{classes:lodashEs.map(CLASS_VALUES.padding,o=>`pb-${o}`),regExp:"pb-(\\d+|\\S+|\\[.*\\])"},paddingLeft:{classes:lodashEs.map(CLASS_VALUES.padding,o=>`pl-${o}`),regExp:"pl-(\\d+|\\S+|\\[.*\\])"},textDecorationStyle:{classes:["decoration-solid","decoration-double","decoration-dotted","decoration-dashed","decoration-wavy"],regExp:"decoration-(solid|double|dotted|dashed|wavy)"},textDecorationThickness:{classes:lodashEs.map(["auto","from-font","0",1,2,4,8],o=>`decoration-${o}`),regExp:"decoration-(auto|from-font|\\d+|\\S+)"},fromColor:{classes:[],regExp:"from-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},margin:{classes:lodashEs.map(CLASS_VALUES.margin,o=>`m-${o}`),regExp:"-?m-(\\d+|\\S+|\\[.*\\])"},marginX:{classes:lodashEs.map(CLASS_VALUES.margin,o=>`mx-${o}`),regExp:"-?mx-(\\d+|\\S+|\\[.*\\])"},marginY:{classes:lodashEs.map(CLASS_VALUES.margin,o=>`my-${o}`),regExp:"-?my-(\\d+|\\S+|\\[.*\\])"},marginTop:{classes:lodashEs.map(CLASS_VALUES.margin,o=>`mt-${o}`),regExp:"-?mt-(\\d+|\\S+|\\[.*\\])"},marginRight:{classes:lodashEs.map(CLASS_VALUES.margin,o=>`mr-${o}`),regExp:"-?mr-(\\d+|\\S+|\\[.*\\])"},marginBottom:{classes:lodashEs.map(CLASS_VALUES.margin,o=>`mb-${o}`),regExp:"-?mb-(\\d+|\\S+|\\[.*\\])"},marginLeft:{classes:lodashEs.map(CLASS_VALUES.margin,o=>`ml-${o}`),regExp:"-?ml-(\\d+|\\S+|\\[.*\\])"},spaceX:{classes:lodashEs.map(CLASS_VALUES.space,o=>`space-x-${o}`),regExp:"-?space-x-(\\d+|\\S+|\\[.*\\])"},spaceY:{classes:lodashEs.map(CLASS_VALUES.space,o=>`space-y-${o}`),regExp:"-?space-y-(\\d+|\\S+|\\[.*\\])"},boxShadow:{classes:lodashEs.map(["sm","md","lg","xl","2xl","inner","none"],o=>`shadow-${o}`),regExp:"shadow-(sm|md|lg|xl|2xl|inner|none)"},minWidth:{classes:["min-w-0","min-w-full","min-w-min","min-w-max","min-w-fit"],regExp:"min-w-(\\d+|\\S+|\\[.*\\])"},maxWidth:{classes:lodashEs.map(CLASS_VALUES.maxWidth,o=>`max-w-${o}`),regExp:"max-w-(\\d+|\\S+|\\[.*\\])"},width:{classes:lodashEs.map([...CLASS_VALUES.width,"full","screen","min","max","fit"],o=>`w-${o}`),regExp:"w-(\\d+.\\d+|\\d+|px|auto|full|screen|min|max|fit|\\[.*\\])$"},minHeight:{classes:["min-h-0","min-h-full","min-h-screen","min-h-min","min-h-max","min-h-fit"],regExp:"min-h-(\\d+|\\S+|\\[.*\\])"},maxHeight:{classes:lodashEs.map(CLASS_VALUES.maxHeight,o=>`max-h-${o}`),regExp:"max-h-(\\d+|\\S+|\\[.*\\])"},height:{classes:lodashEs.map(CLASS_VALUES.height,o=>`h-${o}`),regExp:"h-(\\d+.\\d+|\\d+|px|auto|full|screen|min|max|fit|\\[.*\\])"},fontFamily:{classes:["font-heading","font-body","font-sans","font-serif","font-mono"],regExp:"font-(heading|body|sans|serif|mono)"},textAlign:{classes:["text-left","text-center","text-right","text-justify"],regExp:"text-(left|center|right|justify)"},textOverflow:{classes:["truncate","text-ellipsis","text-clip"],regExp:"truncate|text-ellipsis|text-clip"},verticalAlign:{classes:["align-baseline","align-top","align-middle","align-bottom","align-text-top","align-text-bottom","align-sub","align-super"],regExp:"align-(baseline|top|middle|bottom|text-top|text-bottom|sub|super)"},fontSize:{classes:["text-xs","text-sm","text-base","text-lg","text-xl","text-2xl","text-3xl","text-4xl","text-5xl","text-6xl","text-7xl","text-8xl","text-9xl"],regExp:"text-(\\d+|\\S+|\\[.*\\])"},fontSmoothing:{classes:["antialiased","subpixel-antialiased"],regExp:"antialiased|subpixel-antialiased"},fontStyle:{classes:["italic","not-italic"],regExp:"not-italic|italic"},fontWeight:{classes:["font-thin","font-extralight","font-light","font-normal","font-medium","font-semibold","font-bold","font-extrabold","font-black"],regExp:"font-(thin|extralight|light|normal|medium|semibold|bold|extrabold|black)"},fontVariantNum:{classes:["normal-nums","ordinal","diagonal-fractions","stacked-fractions","tabular-nums","oldstyle-nums","proportional-nums","lining-nums","slashed-zero"],regExp:"normal-nums|ordinal|diagonal-fractions|stacked-fractions|tabular-nums|oldstyle-nums|proportional-nums|lining-nums|slashed-zero"},letterSpacing:{classes:["tracking-tighter","tracking-tight","tracking-normal","tracking-wide","tracking-wider","tracking-widest"],regExp:"-?tracking-(tighter|tight|normal|wide|wider|widest|\\[.*\\])"},lineHeight:{classes:["leading-none","leading-tight","leading-snug","leading-normal","leading-relaxed","leading-loose","leading-3","leading-4","leading-5","leading-6","leading-7","leading-8","leading-9","leading-10"],regExp:"leading-(none|tight|snug|normal|relaxed|loose|\\[.*\\]|\\d+)"},listStyleType:{classes:["list-none","list-disc","list-decimal"],regExp:"list-(none|disc|decimal)"},listStylePosition:{classes:["list-inside","list-outside"],regExp:"list-(inside|outside)"},textUnderlineOffset:{classes:["underline-offset-auto","underline-offset-0","underline-offset-1","underline-offset-2","underline-offset-4","underline-offset-8"],regExp:"underline-offset-(auto|\\d+|\\S+)"},textDecoration:{classes:["underline","overline","line-through","no-underline"],regExp:"underline|overline|line-through|no-underline"},textDecorationColor:{classes:[],regExp:"decoration-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},textTransform:{classes:["uppercase","lowercase","capitalize","normal-case"],regExp:"uppercase|lowercase|capitalize|normal-case"},textIndent:{classes:lodashEs.map(CLASS_VALUES.indent,o=>`indent-${o}`),regExp:"-?indent-(\\d+|\\S+)"},whitespace:{classes:["whitespace-normal","whitespace-nowrap","whitespace-pre","whitespace-pre-line","whitespace-pre-wrap"],regExp:"whitespace-(normal|nowrap|pre|pre-line|pre-wrap)"},wordBreak:{classes:["break-normal","break-words","break-all"],regExp:"break-(normal|words|all)"},content:{classes:["content-none"],regExp:"content-none"},backgroundAttachment:{classes:lodashEs.map(["fixed","local","scroll"],o=>`bg-${o}`),regExp:"bg-(fixed|local|scroll)"},backgroundColor:{classes:[],regExp:"bg-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},backgroundPosition:{classes:["bg-bottom","bg-center","bg-left","bg-left-bottom","bg-left-top","bg-right","bg-right-bottom","bg-right-top","bg-top"],regExp:"bg-(bottom|center|left|left-bottom|left-top|right|right-bottom|right-top|top)"},backgroundRepeat:{classes:["bg-repeat","bg-repeat-x","bg-repeat-y","bg-no-repeat","bg-repeat-round","bg-repeat-space"],regExp:"bg-(repeat|repeat-x|repeat-y|no-repeat|repeat-round|repeat-space)"},backgroundSize:{classes:["bg-auto","bg-cover","bg-contain"],regExp:"bg-(auto|cover|contain)"},backgroundGradient:{classes:["bg-gradient-none","bg-gradient-to-t","bg-gradient-to-tr","bg-gradient-to-r","bg-gradient-to-br","bg-gradient-to-b","bg-gradient-to-bl","bg-gradient-to-l","bg-gradient-to-tl"],regExp:"bg-gradient-(none|to-(t|tr|r|br|b|bl|l|tl))"},viaColor:{classes:[],regExp:"via-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},toColor:{classes:[],regExp:"to-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},position:{classes:["static","fixed","absolute","relative","sticky"],regExp:"(static|fixed|absolute|relative|sticky)"},borderRadiusTopLeft:{classes:["rounded-tl",...lodashEs.map(CLASS_VALUES.borderRadius,o=>`rounded-tl-${o}`)],regExp:"rounded-tl-?(\\d+|\\S+)?"},borderRadiusTopRight:{classes:["rounded-tr",...lodashEs.map(CLASS_VALUES.borderRadius,o=>`rounded-tr-${o}`)],regExp:"rounded-tr-?(\\d+|\\S+)?"},borderRadiusBottomRight:{classes:["rounded-br",...lodashEs.map(CLASS_VALUES.borderRadius,o=>`rounded-br-${o}`)],regExp:"rounded-br-?(\\d+|\\S+)?"},borderRadiusBottomLeft:{classes:["rounded-bl",...lodashEs.map(CLASS_VALUES.borderRadius,o=>`rounded-bl-${o}`)],regExp:"rounded-bl-?(\\d+|\\S+)?"},borderRadiusTop:{classes:["rounded-t",...lodashEs.map(CLASS_VALUES.borderRadius,o=>`rounded-t-${o}`)],regExp:"rounded-t-?(\\d+|\\S+)?"},borderRadiusRight:{classes:["rounded-r",...lodashEs.map(CLASS_VALUES.borderRadius,o=>`rounded-r-${o}`)],regExp:"rounded-r-?(\\d+|\\S+)?"},borderRadiusBottom:{classes:["rounded-b",...lodashEs.map(CLASS_VALUES.borderRadius,o=>`rounded-b-${o}`)],regExp:"rounded-b-?(\\d+|\\S+)?"},borderRadiusLeft:{classes:["rounded-l",...lodashEs.map(CLASS_VALUES.borderRadius,o=>`rounded-l-${o}`)],regExp:`(rounded-l-(${CLASS_VALUES.borderRadius.join("|")})|rounded-l$)`},borderRadius:{classes:["rounded",...lodashEs.map(CLASS_VALUES.borderRadius,o=>`rounded-${o}`)],regExp:`(rounded-(${CLASS_VALUES.borderRadius.join("|")}$)|rounded)`},borderX:{classes:["border-x",...lodashEs.map(CLASS_VALUES.borderWidth,o=>`border-x-${o}`)],regExp:"border-x-?(\\d+|\\S+|\\[.*\\])?"},borderY:{classes:["border-y",...lodashEs.map(CLASS_VALUES.borderWidth,o=>`border-y-${o}`)],regExp:"border-y-?(\\d+|\\S+|\\[.*\\])?"},borderTop:{classes:["border-t",...lodashEs.map(CLASS_VALUES.borderWidth,o=>`border-t-${o}`)],regExp:"border-t-?(\\d+|\\S+|\\[.*\\])?"},borderRight:{classes:["border-r",...lodashEs.map(CLASS_VALUES.borderWidth,o=>`border-r-${o}`)],regExp:"border-r-?(\\d+|\\S+|\\[.*\\])?"},borderBottom:{classes:["border-b",...lodashEs.map(CLASS_VALUES.borderWidth,o=>`border-b-${o}`)],regExp:"border-b-?(\\d+|\\S+|\\[.*\\])?"},borderLeft:{classes:["border-l",...lodashEs.map(CLASS_VALUES.borderWidth,o=>`border-l-${o}`)],regExp:"border-l-?(\\d+|\\S+|\\[.*\\])?"},borderColor:{classes:[],regExp:"^border-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\w+-\\d+|\\[#[0-9a-fA-F]+\\])$"},border:{classes:["border",...lodashEs.map(CLASS_VALUES.borderWidth,o=>`border-${o}`)],regExp:"^border(-\\d+|\\[\\d+px\\])?$"},order:{classes:lodashEs.map([...lodashEs.range(0,13),"first","last","none"],o=>`order-${o}`),regExp:"-?order-(\\d+|first|last|none)"},divideXWidth:{classes:lodashEs.map(["0",2,4,8],o=>`divide-x-${o}`),regExp:"divide-x-(\\d+|\\[.*\\])"},divideYWidth:{classes:lodashEs.map(["0",2,4,8],o=>`divide-y-${o}`),regExp:"divide-y-(\\d+|\\[.*\\])"},divideColor:{classes:[],regExp:"divide-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},divideStyle:{classes:lodashEs.map(["solid","dashed","dotted","double","none"],o=>`divide-${o}`),regExp:"divide-(solid|dashed|dotted|double|none)"},outlineWidth:{classes:lodashEs.map([0,1,2,4,8],o=>`outline-${o}`),regExp:"outline-(\\d+)"},outlineOffset:{classes:lodashEs.map([0,1,2,4,8],o=>`outline-offset-${o}`),regExp:"outline-offset-(\\d+)"},outlineColor:{classes:[],regExp:"outline-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},ringWidth:{classes:lodashEs.map([0,1,2,4,8,"inset"],o=>`ring-${o}`),regExp:"ring-(\\d+|inset)"},ringOffsetWidth:{classes:lodashEs.map([0,1,2,4,8],o=>`ring-offset-${o}`),regExp:"ring-offset-(\\d+)"},ringOffsetColor:{classes:[],regExp:"ring-offset-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},ringColor:{classes:[],regExp:"ring-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},boxShadowColor:{classes:[],regExp:"shadow-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},opacity:{classes:lodashEs.map([0,5,10,20,25,30,40,50,60,70,75,80,90,95,100],o=>`opacity-${o}`),regExp:"opacity-(\\d+|\\[.*\\])"},mixBlendMode:{classes:lodashEs.map(CLASS_VALUES.blendEffect,o=>`mix-blend-${o}`),regExp:"mix-blend-(\\d+|\\S+)"},bgBlendMode:{classes:lodashEs.map(CLASS_VALUES.blendEffect,o=>`bg-blend-${o}`),regExp:"bg-blend-(\\d+|\\S+)"},blur:{classes:lodashEs.map(["none","sm","md","lg","xl","2xl","3xl"],o=>`blur-${o}`),regExp:"blur-(none|sm|md|lg|xl|2xl|3xl)"},brightness:{classes:lodashEs.map([0,50,75,90,95,100,105,110,125,150,200],o=>`brightness-${o}`),regExp:"brightness-(\\d+)"},contrast:{classes:lodashEs.map([0,50,75,100,125,150,200],o=>`contrast-${o}`),regExp:"contrast-(\\d+)"},grayScale:{classes:["grayscale-0","grayscale"],regExp:"grayscale(-0)?"},hueRotate:{classes:lodashEs.map([0,15,30,60,90,180],o=>`hue-rotate-${o}`),regExp:"-?hue-rotate-(\\d+)"},invert:{classes:["invert-0","invert"],regExp:"invert(-0)?"},saturate:{classes:lodashEs.map([0,50,100,150,200],o=>`saturate-${o}`),regExp:"saturate-(\\d+)"},sepia:{classes:["sepia-0","sepia"],regExp:"sepia(-0)?"},transition:{classes:["transition-none","transition-all","transition-colors","transition-opacity","transition-shadow","transition-transform"],regExp:"transition-(none|all|colors|opacity|shadow|transform)"},duration:{classes:lodashEs.map([75,100,150,200,300,500,700,1e3],o=>`duration-${o}`),regExp:"duration-(\\d+|\\[.*\\])"},transitionEase:{classes:["ease-linear","ease-in","ease-out","ease-in-out"],regExp:"eas(e-linear|e-in|e-out|e-in-out)"},transitionDelay:{classes:lodashEs.map([75,100,150,200,300,500,700,1e3],o=>`delay-${o}`),regExp:"delay-(\\d+|\\[.*\\])"},animation:{classes:["animate-none","animate-spin","animate-ping"],regExp:"animate-(none|spin|ping)"},scaleX:{classes:lodashEs.map(CLASS_VALUES.scale,o=>`scale-x-${o}`),regExp:"-?scale-x-(\\d+|\\S+|\\[.*\\])"},scaleY:{classes:lodashEs.map(CLASS_VALUES.scale,o=>`scale-y-${o}`),regExp:"-?scale-y-(\\d+|\\S+|\\[.*\\])"},scale:{classes:lodashEs.map(CLASS_VALUES.scale,o=>`scale-${o}`),regExp:"-?scale-(\\d+|\\S+|\\[.*\\])"},rotate:{classes:lodashEs.map([0,1,2,3,6,12,45,90,180],o=>`rotate-${o}`),regExp:"-?rotate-(\\d+|\\S+|\\[.*\\])"},translateX:{classes:lodashEs.map([0,"px","0.5",1],o=>`translate-x-${o}`),regExp:"-?translate-x-(\\d+|\\S+|\\[.*\\])"},translateY:{classes:lodashEs.map([0,"px","0.5",1],o=>`translate-y-${o}`),regExp:"-?translate-y-(\\d+|\\S+|\\[.*\\])"},skewX:{classes:lodashEs.map([0,1,2,3,6,12],o=>`skew-x-${o}`),regExp:"-?skew-x-(\\d+|\\S+|\\[.*\\])"},skewY:{classes:lodashEs.map([0,1,2,3,6,12],o=>`skew-y-${o}`),regExp:"-?skew-y-(\\d+|\\S+|\\[.*\\])"},accentColor:{classes:[],regExp:"accent-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},appearance:{classes:["appearance-none"],regExp:"appearance-none"},cursor:{classes:["cursor-auto","cursor-default","cursor-pointer","cursor-wait","cursor-text","cursor-move","cursor-help","cursor-not-allowed"],regExp:"cursor-(auto|default|pointer|wait|text|move|help|not-allowed)"},caretColor:{classes:[],regExp:"caret-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},pointerEvents:{classes:["pointer-events-none","pointer-events-auto"],regExp:"pointer-events-(none|auto)"},userSelect:{classes:["select-none","select-text","select-all","select-auto"],regExp:"select-(none|text|all|auto)"},fill:{classes:[],regExp:"caret-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},stroke:{classes:[],regExp:"caret-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},strokeWidth:{classes:["stroke-0","stroke-1","stroke-2"],regExp:"stroke-(\\d+|\\[.*\\])"}},colorOptions={backgroundColor:"bg",textColor:"text",borderColor:"border",boxShadowColor:"shadow",outlineColor:"outline",divideColor:"divide",fromColor:"from",viaColor:"via",toColor:"to",ringColor:"ring",ringOffsetColor:"ring-offset"},soloColors=["current","inherit","transparent","black","white"],shadedColors=["slate","gray","zinc","neutral","stone","red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose"],shades=["50","100","200","300","400","500","600","700","800","900"],colorKeys=lodashEs.map(lodashEs.values(colorOptions),o=>o),ALL_COLORS=lodashEs.flattenDeep([...lodashEs.map(soloColors,o=>lodashEs.flatten(lodashEs.map(colorKeys,n=>`${n}-${o}`))),...lodashEs.map(shadedColors,o=>lodashEs.flattenDeep(lodashEs.map(colorKeys,n=>lodashEs.flattenDeep(lodashEs.map(shades,a=>`${n}-${o}-${a}`)))))]),ALL_TW_CLASSES=lodashEs.map(lodashEs.flattenDeep(lodashEs.values(CLASSES_LIST).map(o=>o.classes).concat(ALL_COLORS)),o=>({name:o})),useFuseSearch=()=>{const o=useThemeOptions(),n=React.useMemo(()=>{let a=[];if(o.colors){const l=lodashEs.flattenDeep(lodashEs.map(o.colors,({items:r})=>lodashEs.keys(r)));a=lodashEs.flattenDeep(lodashEs.map(l,r=>lodashEs.flatten(lodashEs.map(colorKeys,i=>`${i}-${r}`))))}return o.fontFamily&&(a=[...a,...lodashEs.map(lodashEs.keys(o.fontFamily),l=>`${l}`)]),lodashEs.map(a,l=>({name:l}))},[o]);return React.useMemo(()=>new Fuse([...ALL_TW_CLASSES,...n],{isCaseSensitive:!1,threshold:.2,minMatchCharLength:2,keys:["name"]}),[n])},useTailwindClassList=()=>{const o=useThemeOptions(),n=React.useMemo(()=>{if(o.colors){const r=lodashEs.flattenDeep(lodashEs.map(o.colors,({items:i})=>lodashEs.keys(i)));lodashEs.each(CLASSES_LIST,(i,c)=>{lodashEs.set(CLASSES_LIST,`${c}.regExp`,i.regExp.replace("__THEME_COLORS_REGEXP__",r.join("|")))})}return CLASSES_LIST},[o]),a=React.useCallback((r,i)=>{const c=lodashEs.get(n,`${r}.regExp`,"");return i.match(new RegExp(c))},[n]),l=React.useCallback((r,i=[])=>lodashEs.get(n,`${r}.classes`,i),[n]);return{match:a,getClasses:l}};function getMqForCls(o){if(lodashEs.isEmpty(o.trim()))return"";const n=o.match(/sm:|md:|lg:|xl:|2xl:/g);return lodashEs.get(n,0,"xs").replace(":","")}function getModForCls(o){const n=lodashEs.map(MODIFIERS,l=>`${l}:`).join("|"),a=new RegExp(n,"g");return lodashEs.get(a.exec(o.trim()),0,"").replace(":","")}function getPureClsName(o){return o.trim().split(":").pop()||""}const memoizedProps={};function getPropertyForClass(o){if(lodashEs.isEmpty(o))return"";if(memoizedProps[o])return memoizedProps[o];let n="";for(const a in CLASSES_LIST){const l=lodashEs.get(CLASSES_LIST,`${a}.regExp`,"");if(new RegExp(l,"g").test(o)){n=a,memoizedProps[o]=n;break}}return n}function constructClassObject(o){return lodashEs.isEmpty(o)?null:{dark:lodashEs.startsWith(o,"dark:"),mq:getMqForCls(o),mod:getModForCls(o),cls:getPureClsName(o),fullCls:o,property:getPropertyForClass(o)}}function generateFullClsName(o){let n="";return o.dark&&(n+="dark:"),o.mq.toLowerCase()!=="xs"&&(n+=`${o.mq}:`),o.mod&&(n+=`${o.mod}:`),n+=o.cls,n}function orderClassesByBreakpoint(o){o=o.replace(/\s+/g," ");const n=o.split(" ").map(constructClassObject),a=["xs","sm","md","lg","xl","2xl"];return n.sort((l,r)=>a.indexOf(l.mq)-a.indexOf(r.mq)).map(l=>l.fullCls).join(" ")}function removeDuplicateClasses(o){if(o=o.replace(/\s+/g," "),!o)return"";const n=["xs","sm","md","lg","xl","2xl"],a=o.split(" ").map(constructClassObject);let l=o;if(a.length===1)return a[0].fullCls;for(const r of a){const i=r.property,c=n.indexOf(r.mq);for(let d=c+1;d<n.length;d++){const m=n[d],u=a.find(p=>p.property===i&&p.mq===m);if(u&&u.cls===r.cls)l=l.replace(u.fullCls,"");else if(u&&u.cls!==r.cls)break}}return l.replace(/\s+/g," ").trim()}const selectedStylingBlocksAtom=jotai.atom([]);selectedStylingBlocksAtom.debugLabel="selectedStylingBlocksAtom";const useSelectedStylingBlocks=()=>jotai.useAtom(selectedStylingBlocksAtom),addClassesToBlocksAtom=jotai.atom(null,(o,n,{blockIds:a,newClasses:l})=>{const r=lodashEs.filter(o(pageBlocksAtomsAtom),c=>a.includes(o(c)._id)),i=lodashEs.first(o(selectedStylingBlocksAtom));return lodashEs.map(r,c=>{const d=o(c),m=lodashEs.get(d,i.prop,`${applyBinding.STYLES_KEY},`),{classes:u}=applyBinding.getSplitChaiClasses(m);return{ids:[d._id],props:{[i.prop]:`${applyBinding.STYLES_KEY},${orderClassesByBreakpoint(removeDuplicateClasses(tailwindMerge.twMerge(u,l)))}`}}})}),useAddClassesToBlocks=()=>{const o=jotai.useSetAtom(addClassesToBlocksAtom),{updateBlocks:n,updateBlocksRuntime:a}=useBlocksStoreUndoableActions();return React.useCallback((l,r,i=!1)=>{const c=o({blockIds:l,newClasses:r});if(!i){a(l,c[0].props);return}n(l,c[0].props)},[o,n,a])},LANGUAGES={ab:"Abkhazian",aa:"Afar",af:"Afrikaans",ak:"Akan",sq:"Albanian",am:"Amharic",ar:"Arabic",an:"Aragonese",hy:"Armenian",as:"Assamese",av:"Avaric",ae:"Avestan",ay:"Aymara",az:"Azerbaijani",bm:"Bambara",ba:"Bashkir",eu:"Basque",be:"Belarusian",bn:"Bengali",bh:"Bihari",bi:"Bislama",bs:"Bosnian",br:"Breton",bg:"Bulgarian",my:"Burmese",ca:"Catalan",ch:"Chamorro",ce:"Chechen",ny:"Chichewa",zh:"Chinese","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cv:"Chuvash",kw:"Cornish",co:"Corsican",cr:"Cree",hr:"Croatian",cs:"Czech",da:"Danish",dv:"Maldivian",nl:"Dutch",dz:"Dzongkha",en:"English",eo:"Esperanto",et:"Estonian",ee:"Ewe",fo:"Faroese",fj:"Fijian",fi:"Finnish",fr:"French",ff:"Fula, Pular",gl:"Galician",gd:"Gaelic (Scottish)",gv:"Manx",ka:"Georgian",de:"German",el:"Greek",kl:"Kalaallisut",gn:"Guarani",gu:"Gujarati",ht:"Haitian Creole",ha:"Hausa",he:"Hebrew",hz:"Herero",hi:"Hindi",ho:"Hiri Motu",hu:"Hungarian",is:"Icelandic",io:"Ido",ig:"Igbo",id:"Indonesian",ia:"Interlingua",ie:"Interlingue",iu:"Inuktitut",ik:"Inupiak",ga:"Irish",it:"Italian",ja:"Japanese",jv:"Javanese",kn:"Kannada",kr:"Kanuri",ks:"Kashmiri",kk:"Kazakh",km:"Khmer",ki:"Kikuyu",rw:"Kinyarwanda",rn:"Kirundi",ky:"Kyrgyz",kv:"Komi",kg:"Kongo",ko:"Korean",ku:"Kurdish",kj:"Kwanyama",lo:"Lao",la:"Latin",lv:"Latvian",li:"Limburgish",ln:"Lingala",lt:"Lithuanian",lu:"Luga-Katanga",lg:"Luganda, Ganda",lb:"Luxembourgish",mk:"Macedonian",mg:"Malagasy",ms:"Malay",ml:"Malayalam",mt:"Maltese",mi:"Maori",mr:"Marathi",mh:"Marshallese",mo:"Moldavian",mn:"Mongolian",na:"Nauru",nv:"Navajo",ng:"Ndonga",nd:"Northern Ndebele",ne:"Nepali",no:"Norwegian",nb:"Norwegian bokmål",nn:"Norwegian nynorsk",ii:"Sichuan Yi",oc:"Occitan",oj:"Ojibwe",cu:"Old Church Slavonic",or:"Oriya",om:"Oromo",os:"Ossetian",pi:"Pāli",ps:"Pashto, Pushto",fa:"Persian (Farsi)",pl:"Polish",pt:"Portuguese",pa:"Punjabi (Eastern)",qu:"Quechua",rm:"Romansh",ro:"Romanian",ru:"Russian",se:"Sami",sm:"Samoan",sg:"Sango",sa:"Sanskrit",sr:"Serbian",sh:"Serbo-Croatian",st:"Sesotho",tn:"Setswana",sn:"Shona",sd:"Sindhi",si:"Sinhalese",ss:"Swati",sk:"Slovak",sl:"Slovenian",so:"Somali",nr:"Southern Ndebele",es:"Spanish",su:"Sundanese",sw:"Swahili (Kiswahili)",sv:"Swedish",tl:"Tagalog",ty:"Tahitian",tg:"Tajik",ta:"Tamil",tt:"Tatar",te:"Telugu",th:"Thai",bo:"Tibetan",ti:"Tigrinya",to:"Tonga",ts:"Tsonga",tr:"Turkish",tk:"Turkmen",tw:"Twi",ug:"Uyghur",uk:"Ukrainian",ur:"Urdu",uz:"Uzbek",ve:"Venda",vi:"Vietnamese",vo:"Volapük",wa:"Wallon",cy:"Welsh",wo:"Wolof",fy:"Western Frisian",xh:"Xhosa",yi:"Yiddish",yo:"Yoruba",za:"Zhuang, Chuang",zu:"Zulu"},updatePropsForLanguage=(o,n,a)=>{const l=runtime.getRegisteredChaiBlock(lodashEs.get(a,"_type"));if(!l)return o;const r={...o};return lodashEs.forEach(lodashEs.keys(o),i=>{if(lodashEs.includes(lodashEs.get(l,"i18nProps",[]),i)&&!lodashEs.isEmpty(n)){const c=`${i}-${n}`;lodashEs.set(r,c,o[i]),lodashEs.unset(r,i)}}),r},useUpdateBlocksProps=()=>{const{updateBlocks:o}=useBlocksStoreUndoableActions(),{selectedLang:n}=useLanguages(),a=useSelectedBlock();return React.useCallback((l,r,i)=>{const c=updatePropsForLanguage(r,n,a);o(l,c,i)},[n,a,o])},useUpdateMultipleBlocksProps=()=>{const{updateMultipleBlocksProps:o}=useBlocksStoreUndoableActions();return React.useCallback(n=>{o(n)},[o])},useFakeStreamEffect=()=>{const{updateBlocksRuntime:o}=useBlocksStoreUndoableActions();return React.useCallback(async(n,a,l=30)=>{const r=lodashEs.keys(lodashEs.omit(a,["_id"]));for(const i of r){const c=a[i];if(lodashEs.isString(c)){const d=lodashEs.chunk(c.split(""),12);let m="";o([n],{[i]:""});for(let u=0;u<d.length;u++)m+=d[u].join(""),o([n],{[i]:m}),await new Promise(p=>setTimeout(p,l))}}},[o])},useStreamMultipleBlocksProps=()=>{const{updateMultipleBlocksProps:o}=useBlocksStoreUndoableActions(),n=useFakeStreamEffect();return React.useCallback(async a=>{for(const l of a)await n(l._id,l);o(a)},[n,o])},useUpdateBlocksPropsRealtime=()=>{const{updateBlocksRuntime:o}=useBlocksStoreUndoableActions(),{selectedLang:n}=useLanguages(),a=useSelectedBlock();return React.useCallback((l,r)=>{const i=updatePropsForLanguage(r,n,a);o(l,i)},[n,a,o])};function getChildBlocks(o,n,a){a.push(lodashEs.find(o,{_id:n}));const l=lodashEs.filter(o,{_parent:n});for(const r of l)a.push(...getBlockWithChildren(r._id,o));return a}const getBlockWithChildren=(o,n)=>{let a=[];return a=lodashEs.flattenDeep([...a,...getChildBlocks(n,o,a)]),a},pickOnlyAIProps=(o,n,a)=>lodashEs.compact(o.map(l=>{const r=["_id","_type","_parent"],i=lodashEs.pick(l,r),c=runtime.getRegisteredChaiBlock(l._type),d={},m=lodashEs.get(c,"aiProps",[]);for(const u in l)if(!r.includes(u)&&m.includes(u)){const p=lodashEs.get(l,`${u}-${n}`,""),g=lodashEs.get(l,u,"");d[u]=lodashEs.isString(p)&&p.trim()||g,a&&(d[u]=g)}return lodashEs.isEmpty(d)?!1:(lodashEs.has(i,"_parent")&&lodashEs.isEmpty(i._parent)&&delete i._parent,{...i,...d})})),addLangToPrompt=(o,n,a)=>!n||a!=="content"?o:`${o}. Generate content in ${lodashEs.get(LANGUAGES,n,n)} language.`,askAiProcessingAtom=jotai.atom(!1),useAskAi=()=>{const[o,n]=jotai.useAtom(askAiProcessingAtom),[a,l]=React.useState(null),r=useBuilderProp("askAiCallBack",null),i=useStreamMultipleBlocksProps(),c=useUpdateMultipleBlocksProps(),[d]=useBlocksStore(),{selectedLang:m,fallbackLang:u}=useLanguages(),p=m.length?m:u,g=(x,f)=>{const h=lodashEs.cloneDeep(f.find(j=>j._id===x));for(const j in h){const b=h[j];if(typeof b=="string"&&lodashEs.startsWith(b,applyBinding.STYLES_KEY)){const{baseClasses:C,classes:A}=applyBinding.getSplitChaiClasses(b);h[j]=lodashEs.compact(lodashEs.flattenDeep([C,A])).join(" ")}else j!=="_id"&&delete h[j]}return h};return{askAi:React.useCallback(async(x,f,h,j)=>{if(r){n(!0),l(null);try{const b=m===u?"":m;console.log("prompt",h);const C=h.toLowerCase().includes("translate the content"),A=x==="content"?pickOnlyAIProps(lodashEs.cloneDeep(getBlockWithChildren(f,d)),m,C):[g(f,d)],B=await r(x,addLangToPrompt(h,p,x),A,b),{blocks:_,error:S}=B;if(S){l(S);return}if(x==="styles"){const y=_.map(E=>{for(const w in E)w!=="_id"&&(E[w]=`${applyBinding.STYLES_KEY},${E[w]}`);return E});c(y)}else i(_);j&&j(B)}catch(b){l(b)}finally{n(!1),j&&j()}}},[r,n,m,u,d,p,c,i]),loading:o,error:a}},useAiAssistant=()=>{const[,o]=useRightPanel();return React.useCallback(n=>{o(n?"ai":"block")},[o])},partialBlocksStoreAtom=jotai.atom({}),partialBlocksLoadingStateAtom=jotai.atom({}),usePartialBlocksStore=()=>{const[o,n]=jotai.useAtom(partialBlocksStoreAtom),a=React.useCallback(r=>lodashEs.get(o,r,[]),[o]),l=React.useCallback(()=>n({}),[n]);return{getPartailBlocks:a,reset:l}},useWatchPartailBlocks=()=>{const[o]=useBlocksStore(),[n,a]=jotai.useAtom(partialBlocksStoreAtom),[l,r]=jotai.useAtom(partialBlocksLoadingStateAtom),i=useBuilderProp("getPartialBlockBlocks",async d=>[]),c=React.useMemo(()=>o.filter(d=>d._type==="PartialBlock"||d._type==="GlobalBlock").map(d=>lodashEs.get(d,"partialBlockId",lodashEs.get(d,"globalBlock",""))),[o]);React.useEffect(()=>{lodashEs.forEach(c,d=>{lodashEs.has(n,d)||lodashEs.get(l,`${d}.loading`,!1)||(r(m=>({...m,[d]:{loading:!0,error:null}})),i(d).then(m=>{a(u=>({...u,[d]:m})),r(u=>({...u,[d]:{loading:!1,error:null}}))}).catch(m=>{r(u=>({...u,[d]:{loading:!1,error:m.message}}))}))})},[i,n,l,a,r,c])},partialBlocksListAtom=jotai.atom({}),usePartialBlocksList=()=>{const[o,n]=React.useState(!1),[a,l]=React.useState(null),[r,i]=jotai.useAtom(partialBlocksListAtom),c=useBuilderProp("getPartialBlocks",async()=>[]),d=React.useCallback(async()=>{n(!0),l(null);try{const m=await c();i(m),n(!1)}catch(m){l(m instanceof Error?m.message:"Failed to fetch partial blocks"),n(!1)}},[c,i]);return React.useEffect(()=>{d()},[]),{data:r,isLoading:o,refetch:d,error:a}},useBuilderReset=()=>{const{clear:o}=useUndoManager(),[,n]=useSelectedBlockIds(),{clearHighlight:a}=useBlockHighlight(),[,l]=useSelectedStylingBlocks(),[,r]=jotai.useAtom(aiAssistantActiveAtom),{reset:i}=usePartialBlocksStore(),{setSaveState:c}=useSavePage(),[,d]=useBlockRepeaterDataAtom();return()=>{d({}),n([]),l([]),a(),o(),r(!1),i(),c("SAVED")}},canvasZoomAtom=utils.atomWithStorage("canvasZoom",100),useCanvasZoom=()=>jotai.useAtom(canvasZoomAtom),codeEditorAtom=jotai.atom(null),useCodeEditor=()=>jotai.useAtom(codeEditorAtom),cutBlockIdsAtom=jotai.atom([]),useCutBlockIds=()=>{const[o,n]=jotai.useAtom(cutBlockIdsAtom),a=jotai.useSetAtom(copiedBlockIdsAtom),l=React.useCallback(r=>{n(r),a([])},[n,a]);return[o,l]},copiedBlockIdsAtom=jotai.atom([]),useCopyBlocks=()=>{const[o]=useBlocksStore(),[n,a]=jotai.useAtom(copiedBlockIdsAtom),l=jotai.useSetAtom(cutBlockIdsAtom),{getPartailBlocks:r}=usePartialBlocksStore(),i=React.useCallback(d=>d.some(m=>getDuplicatedBlocks(o,m,null).some(p=>p._type==="PartialBlock"||p._type==="GlobalBlock")),[o]),c=React.useCallback(async(d,m=!1)=>{try{if(lodashEs.isEmpty(d))return;a(d),l([]);const u={_chai_copied_blocks:d.flatMap(p=>{const g=getDuplicatedBlocks(o,p,null);if(!m)return g;let x=[];for(const f of g)if(f._type==="PartialBlock"||f._type==="GlobalBlock"){let h=r(f.partialBlockId);f._parent&&(h==null?void 0:h.length)>0&&(h=h.map(j=>(lodashEs.isEmpty(j._parent)&&lodashEs.set(j,"_parent",f._parent),j))),x=[...x,...h]}else x.push(f);return x})};if(!navigator.clipboard){sonner.toast.error("Clipboard not available.");return}sonner.toast.promise(navigator.clipboard.writeText(JSON.stringify(u)),{success:"Blocks copied successfully",error:"Failed to copy blocks to clipboard"})}catch(u){sonner.toast.error("Failed to copy blocks to clipboard"),console.error("Failed to copy blocks to clipboard:",u)}},[a,l,o]);return[n,c,i]},useCopyToClipboard=()=>{const[o,n]=React.useState(null),a=React.useCallback(async l=>{if(!(navigator!=null&&navigator.clipboard))return console.warn("Clipboard not supported"),!1;try{return await navigator.clipboard.writeText(l),n(l),!0}catch(r){return console.warn("Copy failed",r),n(null),!1}},[]);return[o,a]},darkModeAtom=utils.atomWithStorage("darkMode",!1),useDarkMode=()=>{const[o,n]=jotai.useAtom(darkModeAtom);return[o,n]},useDuplicateBlocks=()=>{const[o]=useBlocksStore(),[,n]=useSelectedBlockIds(),{addBlocks:a}=useBlocksStoreUndoableActions();return React.useCallback((l,r=null)=>{const i=[];lodashEs.each(l,c=>{const d=o.find(x=>x._id===c);r?r==="root"&&(r=null):r=d._parent;const p=lodashEs.filter(o,x=>lodashEs.isString(r)?x._parent===r:!x._parent).indexOf(d)+1,g=getDuplicatedBlocks(o,c,r);a(g,r,p),i.push(lodashEs.get(g,"0._id",""))}),n(i)},[o,n])},hiddenBlockIdsAtom=jotai.atom([]),useHiddenBlockIds=()=>{const[o,n]=jotai.useAtom(hiddenBlockIdsAtom),a=React.useCallback(l=>{n(r=>lodashEs.includes(r,l)?lodashEs.without(r,l):[...r,l])},[n]);return[o,n,a]},highlightBlockIdAtom=jotai.atom(""),useHighlightBlockId=()=>jotai.useAtom(highlightBlockIdAtom),libraryBlocksAtom=jotai.atom({}),useLibraryBlocks=o=>{const[n,a]=jotai.useAtom(libraryBlocksAtom),l=React.useMemo(()=>(o==null?void 0:o.getBlocksList)||(()=>[]),[o]),r=lodashEs.get(n,`${o==null?void 0:o.id}.blocks`,null),i=lodashEs.get(n,`${o==null?void 0:o.id}.loading`,"idle"),c=React.useRef("idle");React.useEffect(()=>{(async()=>{if(!(i==="complete"||c.current==="loading")){c.current="loading",a(m=>({...m,[o==null?void 0:o.id]:{loading:"loading",blocks:[]}}));try{const m=await l(o);c.current="idle",a(u=>({...u,[o==null?void 0:o.id]:{loading:"complete",blocks:m||[]}}))}catch{c.current="idle",a(u=>({...u,[o==null?void 0:o.id]:{loading:"complete",blocks:[]}}))}}})()},[o,r,i,c,a,l]);const d=React.useCallback(m=>{a(u=>({...u,[m]:{loading:"idle",blocks:[]}}))},[a]);return{data:r||[],isLoading:i==="loading",resetLibrary:d}},useCanPaste=()=>{const[o]=useBlocksStore();return(n,a)=>{var i;const l=((i=lodashEs.find(o,{_id:a}))==null?void 0:i._type)||null,r=lodashEs.first(n.map(c=>{var d;return(d=lodashEs.find(o,{_id:c}))==null?void 0:d._type}));return canAcceptChildBlock(l,r)}},useMoveCutBlocks=()=>{const o=jotai.useAtomValue(presentBlocksAtom),{moveBlocks:n}=useBlocksStoreUndoableActions();return React.useCallback((a,l)=>{const r=Array.isArray(l)?l[0]:l;if(l==="root"){const i=o==null?void 0:o.filter(c=>!c._parent);n(a,null,(i==null?void 0:i.length)||0)}else{const i=o==null?void 0:o.filter(c=>c._parent===r);n(a,r,(i==null?void 0:i.length)||0)}},[n,o])},usePasteBlocks=()=>{const[o,n]=useCutBlockIds(),a=useMoveCutBlocks(),{addPredefinedBlock:l}=useAddBlock(),r=useCanPaste();return{canPaste:React.useCallback(async c=>{if(o.length>0)return r(o,c);try{const d=await navigator.clipboard.readText();if(d){const m=JSON.parse(d);return lodashEs.has(m,"_chai_copied_blocks")}}catch{return!1}return!1},[r,o]),pasteBlocks:React.useCallback(async c=>{const d=Array.isArray(c)?c[0]:c;if(!(navigator!=null&&navigator.permissions)){sonner.toast.error("Cannot check clipboard permissions.");return}try{if((await navigator.permissions.query({name:"clipboard-read"})).state==="denied"){sonner.toast.error("Clipboard paste permission denied. Please allow clipboard access.");return}}catch{sonner.toast.error("Failed to check clipboard permissions. Please allow clipboard access.");return}if(!lodashEs.isEmpty(o)){a(o,c),n([]),await navigator.clipboard.writeText("");return}sonner.toast.promise(async()=>{const m=await navigator.clipboard.readText();if(m){const u=JSON.parse(m);if(lodashEs.has(u,"_chai_copied_blocks"))l(u._chai_copied_blocks,d==="root"?null:d);else throw new Error("Nothing to paste")}else throw new Error("Nothing to paste")},{success:()=>"Blocks pasted successfully",error:()=>"Nothing to paste"})},[o,a,n])}},previewModeAtom=jotai.atom(!1),usePreviewMode=()=>{const[o,n]=jotai.useAtom(previewModeAtom);return[o,n]},removeClassFromBlocksAtom=jotai.atom(null,(o,n,{blockIds:a,fullClasses:l})=>{const r=lodashEs.first(o(selectedStylingBlocksAtom)),i=lodashEs.filter(o(pageBlocksAtomsAtom),c=>a.includes(o(c)._id));return lodashEs.map(i,c=>{const d=o(c),m=l;let{classes:u,baseClasses:p}=applyBinding.getSplitChaiClasses(lodashEs.get(d,r.prop,`${applyBinding.STYLES_KEY},`));return lodashEs.each(m,g=>{const x=g.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),f=new RegExp(`(^|\\s)${x}(?=\\s|$)`,"g");u=u.replace(f," ").replace(/\s+/g," ").trim();const h=lodashEs.first(g.split(":"));lodashEs.includes(["2xl","xl","lg","md","sm"],h)&&m.push(g.split(":").pop().trim())}),lodashEs.each(m,g=>{const x=g.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),f=new RegExp(`(^|\\s)${x}(?=\\s|$)`,"g");p=p.replace(f," ").replace(/\s+/g," ").trim()}),{ids:[d._id],props:{[r.prop]:`${applyBinding.STYLES_KEY}${p},${u}`}}})}),removeAllClassesForBlock=o=>{const n=Object.keys(o).filter(l=>typeof o[l]=="string"&&o[l].startsWith(applyBinding.STYLES_KEY)),a={};return n.forEach(l=>{a[l]=`${applyBinding.STYLES_KEY},`}),{ids:[o._id],props:a}},useRemoveAllClassesForBlock=()=>{const{updateBlocks:o,updateBlocksRuntime:n}=useBlocksStoreUndoableActions();return React.useCallback((a,l=!1)=>{const{ids:r,props:i}=removeAllClassesForBlock(a);l?o(r,i):n(r,i)},[o,n])},useRemoveClassesFromBlocks=()=>{const{updateBlocks:o,updateBlocksRuntime:n}=useBlocksStoreUndoableActions(),a=jotai.useSetAtom(removeClassFromBlocksAtom);return React.useCallback((l,r,i=!1)=>{const c=a({blockIds:l,fullClasses:r});i?o(l,c[0].props):n(l,c[0].props)},[a])},useResetBlockStyles=()=>{const o=useSelectedBlock(),n=useUpdateBlocksProps(),a=React.useCallback(c=>runtime.getDefaultBlockProps(c)||{},[]),l=React.useCallback(c=>Object.keys(c).filter(d=>typeof c[d]=="string"&&c[d].startsWith("#styles:")),[]),r=React.useCallback(c=>{if(!o)return;const m=a(o._type)[c]??"#styles:,";n([o._id],{[c]:m})},[o,a,n]);return{resetAll:React.useCallback(()=>{if(!o)return;const c=l(o);if(c.length===0)return;const d=a(o._type),m=lodashEs.pick(d,c);n([o._id],m)},[o,l,a,n]),reset:r}},useStylingBreakpoint=()=>jotai.useAtom(styleBreakpointAtom),canvasWidthAtom=utils.atomWithStorage("canvasWidth",800),canvasDisplayWidthAtom=utils.atomWithStorage("canvasDisplayWidth",800),canvasBreakpointAtom=jotai.atom(o=>{const n=o(canvasWidthAtom);return commonFunctions.getBreakpointValue(n).toLowerCase()}),useScreenSizeWidth=()=>{const[o,n]=jotai.useAtom(canvasWidthAtom),a=jotai.useAtomValue(canvasBreakpointAtom),[l,r]=useStylingBreakpoint();return React.useEffect(()=>{l!=="xs"&&r(a)},[a,l,r]),[o,a,n]},useCanvasDisplayWidth=()=>{const[o,n]=jotai.useAtom(canvasDisplayWidthAtom);return[o,n]},selectedBlockAllClassesAtom=jotai.atom(o=>{const n=lodashEs.first(o(selectedStylingBlocksAtom)),a=o(selectedBlockAtom);if(!n||n.blockId!==lodashEs.get(a,"_id",null))return[];const l=lodashEs.get(a,n.prop,`${applyBinding.STYLES_KEY},`),{classes:r}=applyBinding.getSplitChaiClasses(l);return lodashEs.filter(lodashEs.map(r.trim().split(" "),constructClassObject),i=>!lodashEs.isNull(i))}),useSelectedBlockAllClasses=()=>jotai.useAtomValue(selectedBlockAllClassesAtom),MQ={xs:0,sm:1,md:2,lg:3,xl:4,"2xl":5},selectedBlockCurrentClassesAtom=jotai.atom(o=>{const n=o(canvasBreakpointAtom),a=o(styleStateAtom),l=o(darkModeAtom),r=getQueries(n);let i=lodashEs.filter(o(selectedBlockAllClassesAtom),{mod:a});return lodashEs.startsWith(a,"_")||(i=lodashEs.filter(i,c=>r.includes(c.mq))),i=i.sort((c,d)=>MQ[c.mq]-MQ[d.mq]),l||(i=lodashEs.filter(i,{dark:!1})),i}),getQueries=o=>{let n=[];switch(o){case"xs":n=["xs"];break;case"sm":n=["xs","sm"];break;case"md":n=["xs","sm","md"];break;case"lg":n=["xs","sm","md","lg"];break;case"xl":n=["xs","sm","md","lg","xl"];break;case"2xl":n=["xs","sm","md","lg","xl","2xl"];break;default:n=["xs"];break}return n},useSelectedBlockCurrentClasses=()=>jotai.useAtomValue(selectedBlockCurrentClassesAtom),selectedBreakpointsAtom=utils.atomWithStorage("selectedBreakpoints",["XS","MD","XL"]),useSelectedBreakpoints=()=>{const[o,n]=jotai.useAtom(selectedBreakpointsAtom);return[o,n]},useStylingState=()=>jotai.useAtom(styleStateAtom),wrapperBlockAtom=jotai.atom(o=>{var c;const n=o(presentBlocksAtom),a=o(selectedBlockIdsAtom),l=a.length===1?a[0]:null;if(!l)return null;const r=lodashEs.find(n,{_id:l});if(!r)return null;let i=r._parent;for(;i;){const d=lodashEs.find(n,{_id:i});if(!d)return null;if((c=runtime.getRegisteredChaiBlock(d._type))!=null&&c.wrapper)return d;i=d._parent}return null});wrapperBlockAtom.debugLabel="wrapperBlockAtom";const useWrapperBlock=()=>jotai.useAtomValue(wrapperBlockAtom),inlineEditingActiveAtom=jotai.atom("");inlineEditingActiveAtom.debugLabel="inlineEditingActiveAtom";const inlineEditingItemIndexAtom=jotai.atom(0);inlineEditingItemIndexAtom.debugLabel="inlineEditingItemIndexAtom";const useInlineEditing=()=>{const[o,n]=jotai.useAtom(inlineEditingActiveAtom),[a,l]=jotai.useAtom(inlineEditingItemIndexAtom);return{editingBlockId:o,editingItemIndex:a,setEditingBlockId:n,setEditingItemIndex:l}},useSelectedLibrary=()=>jotai.useAtom(selectedLibraryAtom),sidebarActivePanelAtom=jotai.atom("outline");sidebarActivePanelAtom.debugLabel="sidebarActivePanelAtom";const useSidebarActivePanel=()=>jotai.useAtom(sidebarActivePanelAtom),CONTROLS=[{ControlIcon:reactIcons.PinTopIcon,dir:"VERTICAL",key:"UP"},{ControlIcon:reactIcons.PinBottomIcon,dir:"VERTICAL",key:"DOWN"},{ControlIcon:reactIcons.PinLeftIcon,dir:"HORIZONTAL",key:"LEFT"},{ControlIcon:reactIcons.PinRightIcon,dir:"HORIZONTAL",key:"RIGHT"}],getParentBlockOrientation=(o,n,a)=>{try{if(!o||!a)return"VERTICAL";const l=`[data-block-id='${o}']`,r=a==null?void 0:a.querySelector(l);if(r){const i=a==null?void 0:a.querySelector(`[data-block-id='${n}']`);return getOrientation(r,i).toUpperCase()}return"VERTICAL"}catch{return"VERTICAL"}},isDisabledControl=(o,n,a)=>!!(o&&(a==="UP"||a==="LEFT")||n&&(a==="DOWN"||a==="RIGHT")),useBlockController=(o,n)=>{const[a]=useBlocksStore(),{document:l}=useFrame(),{moveBlocks:r}=useBlocksStoreUndoableActions(),i=lodashEs.get(o,"_id"),c=lodashEs.get(o,"_parent"),d=lodashEs.filter(a,h=>c?lodashEs.get(h,"_parent")===c:!lodashEs.get(h,"_parent")),m=(d==null?void 0:d.length)<=1,u=lodashEs.findIndex(d,{_id:i}),p=u<=0,g=u+1===(d==null?void 0:d.length),x=getParentBlockOrientation(c,i,l),f=React.useCallback(h=>{isDisabledControl(p,g,h)||m||(h==="UP"||h==="LEFT"?r([i],c||null,u-1):(h==="DOWN"||h==="RIGHT")&&r([i],c||null,u+2),n())},[p,g,m,u,i,c,n]);return reactHotkeysHook.useHotkeys("shift+up, shift+down, shift+left, shift+right",({key:h})=>{var j;f((j=h==null?void 0:h.replace("Arrow",""))==null?void 0:j.toUpperCase())},{document:l==null?void 0:l.contentDocument},[f]),{isOnlyChild:m,isFirstBlock:p,isLastBlock:g,moveBlock:f,orientation:x}},BlockController=({block:o,updateFloatingBar:n})=>{const{isOnlyChild:a,isFirstBlock:l,isLastBlock:r,moveBlock:i,orientation:c}=useBlockController(o,n);return a?null:jsxRuntime.jsx(jsxRuntime.Fragment,{children:CONTROLS.map(({ControlIcon:d,dir:m,key:u})=>{if(c!==m)return null;const p=isDisabledControl(l,r,u);return p?null:jsxRuntime.jsx(d,{onClick:()=>i(u),className:`${p?"pointer-events-none cursor-not-allowed opacity-50":"duration-300 hover:scale-95 hover:opacity-80"}`},u)})})};function getTargetedBlock(o){if(o.getAttribute("data-block-id")==="canvas")return null;if(o.getAttribute("data-block-id")||o.getAttribute("data-block-parent"))return o;const n=o.closest("[data-block-id]");return(n==null?void 0:n.getAttribute("data-block-id"))==="canvas"?null:n}const INLINE_EDITABLE_BLOCKS=["Heading","Paragraph","Text","Link","Span"],isRichTextParent=o=>{var n;return(o==null?void 0:o.getAttribute("data-block-type"))==="RichText"||((n=o==null?void 0:o.parentElement)==null?void 0:n.getAttribute("data-block-type"))==="RichText"},isInlineEditable=(o,n)=>{if(isRichTextParent(o))return!0;const a=o==null?void 0:o.getAttribute("data-block-type");return!a||o&&o.children.length>0||a==="Button"?!1:INLINE_EDITABLE_BLOCKS.includes(a)},useHandleCanvasDblClick=()=>{const{editingBlockId:o,setEditingBlockId:n,setEditingItemIndex:a}=useInlineEditing();return React.useCallback(l=>{var d;if(l==null||l.preventDefault(),l==null||l.stopPropagation(),o)return;const r=getTargetedBlock(l.target);if(!isInlineEditable(r))return;const i=r.getAttribute("data-block-id");if(!i||!r)return;const c=r.closest('[data-block-type="Repeater"]');c?(d=c==null?void 0:c.childNodes)==null||d.forEach((m,u)=>{m.contains(r)&&a(u)}):a(-1),n(i)},[o,n,a])},useHandleCanvasClick=()=>{const{editingBlockId:o}=useInlineEditing(),{clearHighlight:n}=useBlockHighlight(),a=React.useRef(0);return React.useCallback(l=>{const r=new Date().getTime();if(o||(l.stopPropagation(),r-a.current<400))return;const c=getTargetedBlock(l.target);if(c!=null&&c.getAttribute("data-block-id")&&(c==null?void 0:c.getAttribute("data-block-id"))==="container"){pubsub.publish(CHAI_BUILDER_EVENTS.CLEAR_CANVAS_SELECTION);return}if(c!=null&&c.getAttribute("data-block-parent")){const d=c.getAttribute("data-style-prop"),m=c.getAttribute("data-style-id"),u=c.getAttribute("data-block-parent");pubsub.publish(CHAI_BUILDER_EVENTS.CANVAS_BLOCK_STYLE_SELECTED,{blockId:u,styleId:m,styleProp:d})}else if(c!=null&&c.getAttribute("data-block-id")){const d=c.getAttribute("data-block-id");pubsub.publish(CHAI_BUILDER_EVENTS.CANVAS_BLOCK_SELECTED,d==="canvas"?[]:[d])}n(),a.current=new Date().getTime()},[o])},useHandleMouseMove=()=>{const{editingBlockId:o}=useInlineEditing(),{highlightBlock:n}=useBlockHighlight();return web.useThrottledCallback(a=>{if(o)return;const l=getTargetedBlock(a.target);l&&n(l)},[o,n],100)},useHandleMouseLeave=()=>{const{clearHighlight:o}=useBlockHighlight();return React.useCallback(()=>o(),[o])},Canvas=({children:o})=>{const n=useHandleCanvasDblClick(),a=useHandleCanvasClick(),l=useHandleMouseMove(),r=useHandleMouseLeave();return jsxRuntime.jsx("div",{"data-block-id":"canvas",id:"canvas",onClick:a,onDoubleClick:n,onMouseMove:l,onMouseLeave:r,className:"relative h-full max-w-full p-px",children:o})},getElementByDataBlockId=(o,n)=>o.querySelector(`[data-block-id="${n}"]`),BlockActionLabel=({block:o,label:n})=>{const[,a]=useSelectedBlockIds(),[,l]=useHighlightBlockId(),[,r]=jotai.useAtom(draggedBlockAtom),i=flagged.useFeature("dnd");return jsxRuntime.jsxs("div",{className:"mr-10 flex cursor-default items-center space-x-1 px-1",draggable:i?"true":"false",onDragStart:c=>{c.dataTransfer.setData("text/plain",JSON.stringify(lodashEs.pick(o,["_id","_type","_name"]))),r(o),setTimeout(()=>{a([]),l(null)},200)},children:[jsxRuntime.jsx(reactIcons.DragHandleDots2Icon,{}),n]})},getElementByStyleId=(o,n)=>o.querySelector(`[data-style-id="${n}"]`),BlockSelectionHighlighter=()=>{const o=useSelectedBlock(),{document:n}=useFrame(),[a]=useSelectedStylingBlocks(),[l,r]=React.useState([]),[,i]=React.useState([]),c=(d,m=0)=>{const{top:u}=d.getBoundingClientRect();return u+m>=0&&u-m<=window.innerHeight};return React.useEffect(()=>{var d;if(o!=null&&o._id&&o.type!=="Multiple"&&n){const m=getElementByDataBlockId(n,o._id);m&&(c(m)||(d=n.defaultView)==null||d.scrollTo({top:m.offsetTop,behavior:"smooth"}),r([m]))}},[o==null?void 0:o._id,o==null?void 0:o.type,n]),React.useEffect(()=>{if(!lodashEs.isEmpty(a)&&n){const d=getElementByStyleId(n,lodashEs.first(a).id);i(d?[d]:[null])}else i([null])},[a,n]),jsxRuntime.jsx(BlockFloatingSelector,{block:o,selectedBlockElement:l[0]})},BlockFloatingSelector=({block:o,selectedBlockElement:n})=>{const a=useRemoveBlocks(),l=useDuplicateBlocks(),[,r]=useSelectedBlockIds(),[,i]=useHighlightBlockId(),[,c]=useSelectedStylingBlocks(),{hasPermission:d}=usePermissions(),{editingBlockId:m}=useInlineEditing(),{document:u}=useFrame(),{floatingStyles:p,refs:g,update:x}=reactDom.useFloating({placement:"top-start",middleware:[reactDom.shift({boundary:u==null?void 0:u.body,limiter:dom.limitShift({offset:8,mainAxis:!0,crossAxis:!0})}),dom.flip({boundary:u==null?void 0:u.body,fallbackPlacements:["bottom-start","top-end","bottom-end","inside"]}),dom.size({boundary:u==null?void 0:u.body,apply({availableWidth:j,availableHeight:b,elements:C}){Object.assign(C.floating.style,{maxWidth:`${Math.max(200,j)}px`,maxHeight:`${Math.max(100,b)}px`})}})],elements:{reference:n}});web.useResizeObserver(n,()=>x(),n!==null),web.useResizeObserver(u==null?void 0:u.body,()=>x(),(u==null?void 0:u.body)!==null);const f=lodashEs.get(o,"_parent",null),h=lodashEs.isEmpty(lodashEs.get(o,"_name",""))?lodashEs.get(o,"_type",""):lodashEs.get(o,"_name","");return React.useEffect(()=>{if(n){const j=setTimeout(()=>x(),500);return()=>clearTimeout(j)}else x()},[n]),!n||!o||m?null:jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsxs("div",{role:"button",tabIndex:0,ref:g.setFloating,style:p,onClick:j=>{j.stopPropagation(),j.preventDefault()},onMouseEnter:j=>{j.stopPropagation(),i(null)},onKeyDown:j=>j.stopPropagation(),className:"isolate z-[999] flex h-6 items-center bg-blue-500 py-2 text-xs text-white",children:[f&&jsxRuntime.jsx(reactIcons.ArrowUpIcon,{className:"hover:scale-105",onClick:()=>{c([]),r([f])}}),jsxRuntime.jsx(BlockActionLabel,{label:h,block:o}),jsxRuntime.jsxs("div",{className:"flex items-center gap-2 pl-1 pr-1.5",children:[jsxRuntime.jsx(AddBlockDropdown,{block:o,children:jsxRuntime.jsx(reactIcons.PlusIcon,{className:"hover:scale-105"})}),canDuplicateBlock(lodashEs.get(o,"_type",""))&&d(PERMISSIONS.ADD_BLOCK)?jsxRuntime.jsx(reactIcons.CopyIcon,{className:"hover:scale-105",onClick:()=>l([o==null?void 0:o._id])}):null,canDeleteBlock(lodashEs.get(o,"_type",""))&&d(PERMISSIONS.DELETE_BLOCK)?jsxRuntime.jsx(reactIcons.TrashIcon,{className:"hover:scale-105",onClick:()=>a([o==null?void 0:o._id])}):null,d(PERMISSIONS.MOVE_BLOCK)&&jsxRuntime.jsx(BlockController,{block:o,updateFloatingBar:x})]})]})})},IframeInitialContent=`<!doctype html>
1
+ "use strict";var V=Object.defineProperty;var U=(o,n,a)=>n in o?V(o,n,{enumerable:!0,configurable:!0,writable:!0,value:a}):o[n]=a;var H=(o,n,a)=>U(o,typeof n!="symbol"?n+"":n,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const jsxRuntime=require("react/jsx-runtime"),runtime=require("@chaibuilder/runtime"),reactIcons=require("@radix-ui/react-icons"),lodashEs=require("lodash-es"),React=require("react"),jotai=require("jotai"),utils=require("jotai/utils"),commonFunctions=require("./common-functions-BZmyleS1.cjs"),toggle=require("./toggle-BgZfmuec.cjs"),lucideReact=require("lucide-react"),clsx=require("clsx"),tailwindMerge=require("tailwind-merge"),TreeModel=require("tree-model"),applyBinding=require("./apply-binding-T3HdSezj.cjs"),plugin=require("./plugin-CSgw-f78.cjs"),utils$1=require("@rjsf/utils"),web=require("@react-hookz/web"),sonner=require("sonner"),reactI18next=require("react-i18next"),Fuse=require("fuse.js"),UndoManager=require("undo-manager"),Link=require("@tiptap/extension-link"),TextAlign=require("@tiptap/extension-text-align"),Underline=require("@tiptap/extension-underline"),Placeholder=require("@tiptap/extension-placeholder"),react=require("@tiptap/react"),StarterKit=require("@tiptap/starter-kit"),RjForm=require("@rjsf/core"),validator=require("@rjsf/validator-ajv8"),Autosuggest=require("react-autosuggest"),flagged=require("flagged"),himalaya=require("himalaya"),reactArborist=require("react-arborist"),i18n=require("i18next"),tailwindAspectRatio=require("@tailwindcss/aspect-ratio"),tailwindForms=require("@tailwindcss/forms"),tailwindTypography=require("@tailwindcss/typography");require("tailwindcss-animate");require("@mhsdesign/jit-browser-tailwindcss");const twContainer=require("@tailwindcss/container-queries"),reactErrorBoundary=require("react-error-boundary"),framerMotion=require("framer-motion"),reactHotkeysHook=require("react-hotkeys-hook"),dom=require("@floating-ui/dom"),reactDom=require("@floating-ui/react-dom"),ReactDOM=require("react-dom"),reactWrapBalancer=require("react-wrap-balancer"),reResizable=require("re-resizable");function _interopNamespaceDefault(o){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const a in o)if(a!=="default"){const l=Object.getOwnPropertyDescriptor(o,a);Object.defineProperty(n,a,l.get?l:{enumerable:!0,get:()=>o[a]})}}return n.default=o,Object.freeze(n)}const React__namespace=_interopNamespaceDefault(React),ICON_CLASS="h-3 w-3 stroke-[2]",TypeIcon=o=>{const n=runtime.useRegisteredChaiBlocks(),a=lodashEs.get(n,[o==null?void 0:o.type,"icon"]);return a?React.createElement(a,{className:ICON_CLASS}):jsxRuntime.jsx(reactIcons.BoxModelIcon,{className:ICON_CLASS})},readOnlyModeAtom=jotai.atom(!1);readOnlyModeAtom.debugLabel="readOnlyModeAtom";const networkModeAtom=jotai.atom("online");networkModeAtom.debugLabel="networkModeAtom";jotai.atom("");const editLayerNameAtom=jotai.atom(!1);editLayerNameAtom.debugLabel="editLayerNameAtom";const activeLanguageAtom=jotai.atom("");activeLanguageAtom.debugLabel="activeLanguageAtom";const primaryLanguageAtom=jotai.atom("");primaryLanguageAtom.debugLabel="primaryLanguageAtom";const canvasIframeAtom=jotai.atom(null);canvasIframeAtom.debugLabel="canvasIframeAtom";const activePanelAtom=jotai.atom("outline");activePanelAtom.debugLabel="activePanelAtom";const showPredefinedBlockCategoryAtom=jotai.atom("");showPredefinedBlockCategoryAtom.debugLabel="showPredefinedBlockCategoryAtom";const draggingFlagAtom=jotai.atom(!1);draggingFlagAtom.debugLabel="draggingFlagAtom";const treeRefAtom=jotai.atom(null);treeRefAtom.debugLabel="treeRefAtom";const canvasSettingsAtom=jotai.atom({});canvasSettingsAtom.debugLabel="canvasSettingsAtom";const aiAssistantActiveAtom=jotai.atom(!1);aiAssistantActiveAtom.debugLabel="aiAssistantActiveAtom";const codeEditorOpenAtom=jotai.atom(!1);codeEditorOpenAtom.debugLabel="codeEditorOpenAtom";const codeEditorHeightAtom=utils.atomWithStorage("codeEditorHeight",500);codeEditorHeightAtom.debugLabel="codeEditorHeightAtom";const xShowBlocksAtom=jotai.atom([]);xShowBlocksAtom.debugLabel="xShowBlocksAtom";const selectedLibraryAtom=utils.atomWithStorage("_selectedLibrary",null);selectedLibraryAtom.debugLabel="selectedLibraryAtom";const dataBindingActiveAtom=jotai.atom(!0);dataBindingActiveAtom.debugLabel="dataBindingActiveAtom";let lastHighlighted=null;const useBlockHighlight=()=>{const[o]=jotai.useAtom(canvasIframeAtom),n=React.useMemo(()=>{var r;return(o==null?void 0:o.contentDocument)||((r=o==null?void 0:o.contentWindow)==null?void 0:r.document)},[o]),a=React.useCallback(r=>{if(n)if(lastHighlighted&&lastHighlighted.removeAttribute("data-highlighted"),typeof r!="string")r.setAttribute("data-highlighted","true"),lastHighlighted=r;else if(typeof r=="string"){const i=n.querySelector(`[data-block-id="${r}"]`);i&&(i.setAttribute("data-highlighted","true"),lastHighlighted=i)}else lastHighlighted=null},[n]),l=React.useCallback(()=>{lastHighlighted&&(lastHighlighted.removeAttribute("data-highlighted"),lastHighlighted=null)},[]);return{highlightBlock:a,clearHighlight:l,lastHighlighted}};function duplicateBlocks(o,n,a){const l=lodashEs.filter(o,i=>i._parent===n),r=[];for(let i=0;i<l.length;i++)if(lodashEs.filter(o,{_parent:l[i]._id}).length>0){const c=commonFunctions.generateUUID();r.push({...l[i],oldId:l[i]._id,_id:c,_parent:a}),r.push(lodashEs.flatten(duplicateBlocks(o,l[i]._id,c)))}else r.push({...l[i],oldId:l[i]._id,_id:commonFunctions.generateUUID(),_parent:a});return lodashEs.flatten(r)}function convertToBlocksTree(o){const n={};o.forEach(l=>{n[l._id]={...l,children:[]}});const a=[];return o.forEach(l=>{if(l._parent){const r=n[l._parent];r&&r.children.push(n[l._id])}else a.push(n[l._id])}),a}const getDuplicatedBlocks=(o,n,a=null)=>{let l=lodashEs.find(o,{_id:n});l={...l,oldId:l._id,_id:commonFunctions.generateUUID()},a!==(l==null?void 0:l._parent)&&(l={...l,_parent:a});const r=[l];return lodashEs.filter(o,{_parent:n}).length>0&&r.push(lodashEs.flatten(duplicateBlocks(o,n,l._id))),lodashEs.flatten(r)},presentBlocksAtom=jotai.atom([]);presentBlocksAtom.debugLabel="presentBlocksAtom";const treeDSBlocks=jotai.atom(o=>{const n=o(presentBlocksAtom);return convertToBlocksTree([...n])});treeDSBlocks.debugLabel="treeDSBlocks";const pageBlocksAtomsAtom=utils.splitAtom(presentBlocksAtom);pageBlocksAtomsAtom.debugLabel="pageBlocksAtomsAtom";const builderActivePageAtom=jotai.atom("");builderActivePageAtom.debugLabel="builderActivePageAtom";const destinationDropIndexAtom=jotai.atom(-1);destinationDropIndexAtom.debugLabel="destinationDropIndexAtom";const buildingBlocksAtom=jotai.atom([]);buildingBlocksAtom.debugLabel="buildingBlocksAtom";const globalBlocksAtom=jotai.atom(o=>{const n=o(buildingBlocksAtom);return lodashEs.filter(n,a=>lodashEs.has(a,"blockId"))});globalBlocksAtom.debugLabel="globalBlocksAtom";const selectedBlockIdsAtom=jotai.atom([]);selectedBlockIdsAtom.debugLabel="selectedBlockIdsAtom";const selectedBlocksAtom=jotai.atom(o=>{const n=o(presentBlocksAtom),a=o(selectedBlockIdsAtom);return lodashEs.map(lodashEs.filter(n,({_id:l})=>lodashEs.includes(a,l)),l=>({...l}))});selectedBlocksAtom.debugLabel="selectedBlocksAtom";const selectedBlockAtom=jotai.atom(o=>{const n=o(selectedBlocksAtom);if(n.length===0)return null;if(n.length===1)return n[0]});selectedBlockAtom.debugLabel="selectedBlockAtom";const useSelectedBlock=()=>jotai.useAtomValue(selectedBlockAtom),getParentId=o=>lodashEs.get(o,"_parent",null),selectedBlocksParentsAtom=jotai.atom(o=>{const n=o(selectedBlocksAtom),a=lodashEs.map(n,getParentId);return lodashEs.filter(o(presentBlocksAtom),l=>lodashEs.includes(a,l._id))});selectedBlocksParentsAtom.debugLabel="selectedBlocksParentsAtom";const selectedBlockFlexChildAtom=jotai.atom(()=>!1);selectedBlockFlexChildAtom.debugLabel="selectedBlockFlexChildAtom";const selectedBlockGridChildAtom=jotai.atom(()=>!1);selectedBlockGridChildAtom.debugLabel="selectedBlockGridChildAtom";const styleStateAtom=jotai.atom("");styleStateAtom.debugLabel="styleStateAtom";const styleBreakpointAtom=utils.atomWithStorage("styleBreakpoint","xs");styleBreakpointAtom.debugLabel="styleBreakpointAtom";const useSelectedBlocksDisplayChild=()=>({flexChild:jotai.useAtomValue(selectedBlockFlexChildAtom),gridChild:jotai.useAtomValue(selectedBlockGridChildAtom)}),selectedBlockHierarchy=jotai.atom(o=>{const n=o(selectedBlockAtom),a=o(presentBlocksAtom);let l=n;const r=[n];do{const i=a.find(({_id:c})=>c===(l==null?void 0:l._parent));l=i,i&&r.push(i)}while(l!=null&&l._parent);return r}),useSelectedBlockHierarchy=()=>lodashEs.compact(jotai.useAtomValue(selectedBlockHierarchy)),useSelectedBlockIds=()=>{const[o,n]=jotai.useAtom(selectedBlockIdsAtom),a=React.useCallback(l=>{n(r=>lodashEs.includes(r,l)?lodashEs.without(r,l):[...r,l])},[n]);return[o,n,a]},Breadcrumb=()=>{const o=useSelectedBlockHierarchy(),[,n]=useSelectedBlockIds(),{highlightBlock:a}=useBlockHighlight();return jsxRuntime.jsx("div",{className:"-mx-2 border-t border-border bg-background px-2 py-1 text-xs text-muted-foreground",children:jsxRuntime.jsxs("ol",{className:"flex items-center whitespace-nowrap",children:[jsxRuntime.jsxs("li",{className:"inline-flex items-center",children:[jsxRuntime.jsx(toggle.Button,{onClick:()=>n([]),variant:"ghost",className:"h-fit p-1 text-xs font-normal",children:"Body"}),jsxRuntime.jsx(lucideReact.ChevronRight,{className:"rtl:rotate-180",size:16})]}),lodashEs.reverse(o).map((l,r)=>jsxRuntime.jsxs("li",{className:"inline-flex items-center",children:[jsxRuntime.jsxs(toggle.Button,{onMouseEnter:()=>{a(l==null?void 0:l._id)},onClick:()=>n([l==null?void 0:l._id]),variant:"ghost",className:"h-fit gap-x-1 p-1 text-xs font-normal",children:[jsxRuntime.jsx(TypeIcon,{type:l==null?void 0:l._type}),l._name||l._type]}),r!==o.length-1&&jsxRuntime.jsx(lucideReact.ChevronRight,{className:"rtl:rotate-180",size:16})]},r))]})})},CHAI_BUILDER_EVENTS={OPEN_ADD_BLOCK:"OPEN_ADD_BLOCK",CLOSE_ADD_BLOCK:"CLOSE_ADD_BLOCK",SHOW_BLOCK_SETTINGS:"SHOW_BLOCK_SETTINGS",CLEAR_CANVAS_SELECTION:"CLEAR_CANVAS_SELECTION",CANVAS_BLOCK_SELECTED:"CANVAS_BLOCK_SELECTED",CANVAS_BLOCK_STYLE_SELECTED:"CANVAS_BLOCK_STYLE_SELECTED"},canAcceptChildBlock=(o,n)=>{if(!o)return!0;const a=runtime.getRegisteredChaiBlock(o);return a&&lodashEs.has(a,"canAcceptBlock")?a.canAcceptBlock(n):!1},canAddChildBlock=o=>{const n=runtime.getRegisteredChaiBlock(o);return n?lodashEs.has(n,"canAcceptBlock"):!1},canBeNestedInside=(o,n)=>{const a=runtime.getRegisteredChaiBlock(n);return a&&lodashEs.has(a,"canBeNested")?a.canBeNested(o):!0},canDuplicateBlock=o=>{const n=runtime.getRegisteredChaiBlock(o);return n&&lodashEs.has(n,"canDuplicate")?n.canDuplicate():!0},canDeleteBlock=o=>{const n=runtime.getRegisteredChaiBlock(o);return n&&lodashEs.has(n,"canDelete")?n.canDelete():!0},canDropBlock=(o,{dragSource:n,dropTarget:a})=>{const l=lodashEs.get(n,"data._type",""),r=lodashEs.get(a,"data._type","");return canAcceptChildBlock(r,l)};class PubSub{constructor(){H(this,"subscribers",new Map)}subscribe(n,a){return this.subscribers.has(n)||this.subscribers.set(n,new Set),this.subscribers.get(n).add(a),()=>{const l=this.subscribers.get(n);l&&(l.delete(a),l.size===0&&this.subscribers.delete(n))}}publish(n,a){const l=this.subscribers.get(n);l&&l.forEach(r=>r(a))}}const pubsub=new PubSub,AddBlockDropdown=({block:o,children:n})=>{const{t:a}=reactI18next.useTranslation(),[l]=useBlocksStore(),{hasPermission:r}=usePermissions(),i=lodashEs.get(o,"_id"),c=lodashEs.get(o,"_parent"),d=lodashEs.filter(l,g=>c?lodashEs.get(g,"_parent")===c:!lodashEs.get(g,"_parent")),m=canAddChildBlock(lodashEs.get(o,"_type","")),u=lodashEs.findIndex(d,{_id:i}),p=g=>{if(g==="CHILD")pubsub.publish(CHAI_BUILDER_EVENTS.OPEN_ADD_BLOCK,o);else{const x={_id:c||"",position:d==null?void 0:d.length};g==="BEFORE"?x.position=Math.max(u,0):g==="AFTER"&&(x.position=u+1),pubsub.publish(CHAI_BUILDER_EVENTS.OPEN_ADD_BLOCK,x)}};return r(PERMISSIONS.ADD_BLOCK)?jsxRuntime.jsxs(toggle.DropdownMenu,{children:[jsxRuntime.jsx(toggle.DropdownMenuTrigger,{children:n}),jsxRuntime.jsxs(toggle.DropdownMenuContent,{className:"border border-blue-500 bg-primary text-white shadow-2xl",children:[m&&jsxRuntime.jsx(toggle.DropdownMenuItem,{className:"cursor-pointer text-xs",onClick:()=>p("CHILD"),children:a("Add inside")}),jsxRuntime.jsx(toggle.DropdownMenuItem,{className:"cursor-pointer text-xs",onClick:()=>p("BEFORE"),children:a("Add before")}),jsxRuntime.jsx(toggle.DropdownMenuItem,{className:"cursor-pointer text-xs",onClick:()=>p("AFTER"),children:a("Add after")})]})]}):null},draggedBlockAtom=jotai.atom(null);jotai.atom(null);function getOrientation(o,n=null){const a=window.getComputedStyle(o),l=n?window.getComputedStyle(n):null,r=a.display,i=l?l.display:null;if(r==="flex"||r==="inline-flex"){const c=a.flexDirection;return c==="column"||c==="column-reverse"?"vertical":"horizontal"}else if(r==="grid"){const c=a.gridAutoFlow,d=a.gridTemplateColumns;return c.includes("column")||d&&d!=="none"&&d!==""&&!d.includes("calc")&&d.split(" ").length<=1?"vertical":"horizontal"}else if(i==="inline-block"||i==="inline")return"horizontal";return"vertical"}let doc,win;typeof document<"u"&&(doc=document);typeof window<"u"&&(win=window);const FrameContext=React.createContext({document:doc,window:win}),useFrame=()=>React.useContext(FrameContext),{Provider:FrameContextProvider,Consumer:FrameContextConsumer}=FrameContext;function insertBlocksAtPosition(o,n,a,l){const r=[...n];let i=[...o];if(a){const u=o.find(p=>p._id===a);if(u&&u.content!==void 0&&u.content!==""&&!o.some(g=>g._parent===a)){const x={_id:commonFunctions.generateUUID(),_parent:a,_type:"Text",content:u.content};Object.keys(u).forEach(f=>{f.startsWith("content-")&&(x[f]=u[f])}),r.unshift(x),i=i.map(f=>{if(f._id===a){const h={...f,content:""};return Object.keys(h).forEach(j=>{j.startsWith("content-")&&(h[j]="")}),h}return f})}}let c=i.filter(u=>!u._parent);a&&(c=i.filter(u=>u._parent===a));const d=!isNaN(l)||l>-1?Math.min(l,c.length):c.length;let m=i.length;for(let u=0,p=0;u<i.length;u++)if(a!==void 0?i[u]._parent===a:!i[u]._parent){if(p===d){m=u;break}p++}return!a&&l!==void 0&&l>=c.length&&(m=i.length),[...i.slice(0,m),...r,...i.slice(m)]}function getBlocksTree(o){return convertToBlocksTree(o)}function flattenTree(o){let n=[];return o.walk(a=>(delete a.model.children,n.push(a.model),!0)),n}function findNodeById(o,n){return o.first(a=>a.model._id===n)||null}function moveNode(o,n,a,l){var u,p;const r=findNodeById(o,n),i=findNodeById(o,a);if(!r||!i)return!1;i.children||(i.model.children=[]);let c=(u=i==null?void 0:i.children)==null?void 0:u.findIndex(g=>g.model._id===n);r.drop(),c=Math.max(c,0);const m=(((p=r==null?void 0:r.model)==null?void 0:p._parent)||"root")===a&&c<=l?l-1:l;try{i.addChildAtIndex(r,m)}catch(g){return console.error("Error adding child to parent:",g),!1}return!0}function handleOldParentTextBlock(o,n){if(!n||!n._parent)return o;const a=n._parent,l=o.find(i=>i._id===a);if(!l)return o;const r=o.filter(i=>i._parent===a);if(r.length===2){const i=r.find(c=>c._id!==n._id);if(i&&i._type==="Text"&&"content"in l)return o.map(d=>{if(d._id===a){const m={...d,content:i.content};return Object.keys(i).forEach(u=>{u.startsWith("content-")&&(m[u]=i[u])}),m}return d}).filter(d=>d._id!==i._id)}return o}function handleNewParentTextBlock(o,n,a){if(!a||a==="root")return o;const l=o.find(r=>r._id===a);if(!l)return o;if(l.content!==void 0&&l.content!==""&&!o.some(i=>i._parent===a&&i._id!==n._id)){const c={_id:commonFunctions.generateUUID(),_parent:a,_type:"Text",content:l.content};Object.keys(l).forEach(u=>{u.startsWith("content-")&&(c[u]=l[u])});const d=o.map(u=>{if(u._id===a){const p={...u,content:""};return Object.keys(p).forEach(g=>{g.startsWith("content-")&&(p[g]="")}),p}return u}),m=d.findIndex(u=>u._id===n._id);return m!==-1?[...d.slice(0,m),c,...d.slice(m)]:[c,...d]}return o}function moveBlocksWithChildren(o,n,a,l){if(!n)return o;const r=o.find(u=>u._id===n);if(!r)return o;let i=handleOldParentTextBlock(o,r);const c=a||"root",m=new TreeModel().parse({_id:"root",children:getBlocksTree(i)});if(moveNode(m,n,c,l)){let u=flattenTree(m);const p=u.find(g=>g._id===n);return p&&(p._parent=c==="root"?null:c),u.shift(),a&&(u=handleNewParentTextBlock(u,r,a)),u}return i}const broadcastChannel=new BroadcastChannel("chaibuilder"),useBroadcastChannel=()=>{const o=useBuilderProp("pageId","chaibuilder_page");return{postMessage:web.useDebouncedCallback(a=>broadcastChannel.postMessage({...a,pageId:o}),[o],200)}},useUnmountBroadcastChannel=()=>{const[,o]=useBlocksStore(),n=useBuilderProp("pageId","chaibuilder_page"),{updateBlocksProps:a}=useBlocksStoreManager();React.useEffect(()=>(broadcastChannel.onmessageerror=l=>{console.log("error",l)},broadcastChannel.onmessage=l=>{l.data.type==="blocks-updated"&&l.data.pageId===n&&o(l.data.blocks),l.data.type==="blocks-props-updated"&&l.data.pageId===n&&a(l.data.blocks)},()=>{broadcastChannel.onmessage=null,broadcastChannel.onmessageerror=null}),[o,n])},removeNestedBlocks=(o,n)=>{let a=[...o],l=[];n.forEach(d=>{const m=a.find(g=>g._id===d);if(!m||!m._parent)return;const u=m._parent,p=a.filter(g=>g._parent===u);if(p.length===2){const g=p.find(x=>x._id!==d);if(g&&g._type==="Text"){const x=a.find(f=>f._id===u);x&&"content"in x&&(a=a.map(f=>{if(f._id===u){const h={...f,content:g.content};return Object.keys(g).forEach(j=>{j.startsWith("content-")&&(h[j]=g[j])}),h}return f}),l.push(g._id))}}});const r=[...n,...l],i=[],c=lodashEs.filter(a,d=>lodashEs.includes(r,d._id)||lodashEs.includes(r,d._parent)?(i.push(d._id),!1):!0);return lodashEs.isEmpty(i)?c:removeNestedBlocks(c,i)},useRemoveBlocks=()=>{const[o]=useBlocksStore(),[n,a]=useSelectedBlockIds(),{setNewBlocks:l}=useBlocksStoreUndoableActions(),{hasPermission:r}=usePermissions();return React.useCallback(i=>{var d;if(!r(PERMISSIONS.DELETE_BLOCK))return;const c=((d=lodashEs.find(o,{_id:i[0]}))==null?void 0:d._parent)||null;l(removeNestedBlocks(o,i)),setTimeout(()=>a(c?[c]:[]),200)},[o,a,n,r])},builderStore=jotai.getDefaultStore(),writeAtomValue=jotai.atom(null,(o,n,{id:a,props:l})=>{const r=o(pageBlocksAtomsAtom),i=lodashEs.find(r,c=>o(c)._id===a);return i?n(i,{...o(i),...l}):null}),useUpdateBlockAtom=()=>jotai.useSetAtom(writeAtomValue),useGetBlockAtom=o=>utils.useAtomCallback(React.useCallback((n,a,l)=>{const r=n(o);if(!r||!r.length)return console.warn("No blocks available in splitAtoms"),null;const i=lodashEs.find(r,c=>n(c)._id===(lodashEs.isString(l)?l:n(l)._id));return i||(console.warn(`Block with id ${l} not found`),null)},[o]),{store:builderStore}),useBlocksStoreManager=()=>{const[,o]=useBlocksStore(),{postMessage:n}=useBroadcastChannel(),a=useUpdateBlockAtom();return{setNewBlocks:l=>{o(l),n({type:"blocks-updated",blocks:l})},addBlocks:(l,r,i)=>{o(c=>{const d=insertBlocksAtPosition(c,l,r,i);return n({type:"blocks-updated",blocks:d}),d})},removeBlocks:l=>{o(r=>{const i=removeNestedBlocks(r,l);return n({type:"blocks-updated",blocks:i}),i})},moveBlocks:(l,r,i)=>{o(c=>{let d=[...c];for(let m=0;m<l.length;m++)d=moveBlocksWithChildren(d,l[m],r,i);return lodashEs.each(l,m=>{const u=lodashEs.find(d,p=>p._id===m);u&&a({id:m,props:{_parent:u._parent||null}})}),n({type:"blocks-updated",blocks:d}),d})},updateBlocksProps:l=>{l.forEach(r=>{const i=lodashEs.omit(r,"_id");a({id:r._id,props:i})}),n({type:"blocks-props-updated",blocks:l})}}},blockRepeaterDataAtom=jotai.atom({});blockRepeaterDataAtom.debugLabel="blockRepeaterDataAtom";const useBlockRepeaterDataAtom=()=>jotai.useAtom(blockRepeaterDataAtom),useAsyncProps=(o,n,a,l)=>{const[r,i]=React.useState({status:"idle",props:{},error:void 0}),c=useUpdateBlocksPropsRealtime(),d=useBuilderProp("getBlockAsyncProps",async f=>({})),m=jotai.useSetAtom(blockRepeaterDataAtom),u=JSON.stringify([o==null?void 0:o._id,...lodashEs.values(lodashEs.pick(o,a??[]))]),p=(o==null?void 0:o._type)==="Repeater"&&lodashEs.startsWith(o.repeaterItems,`{{${applyBinding.COLLECTION_PREFIX}`),g=(o==null?void 0:o._type)!=="Repeater"&&n==="live";return React.useEffect(()=>{if(n==="mock"){if(lodashEs.isFunction(l)){i(h=>({...h,status:"loading",props:{}}));const f=l({block:o});if(!utils$1.isObject(f))throw new Error("mockDataProvider should return an object");i(h=>({...h,status:"loaded",props:f}))}return}n==="live"&&(!p&&!g||(i(f=>({...f,status:"loading",props:{}})),d({block:o}).then((f={})=>{p?(m(h=>({...h,[o._id]:{status:"loaded",props:lodashEs.get(f,"items",[]),repeaterItems:o.repeaterItems}})),i(h=>({...h,status:"loaded",props:{totalItems:lodashEs.get(f,"totalItems")}})),c([o._id],{totalItems:lodashEs.get(f,"totalItems")})):i(h=>({...h,status:"loaded",props:utils$1.isObject(f)?f:{}}))}).catch(f=>{p?(m(h=>({...h,[o._id]:{status:"error",error:f,props:[]}})),i(h=>({...h,status:"error",error:f,props:{}}))):i(h=>({...h,status:"error",error:f,props:{}}))})))},[o==null?void 0:o._id,u,p,g,l,n]),{$loading:lodashEs.get(r,"status")==="loading",...o?lodashEs.get(r,"props",{}):{}}},chaiBuilderPropsAtom=jotai.atom(null);chaiBuilderPropsAtom.debugLabel="chaiBuilderPropsAtom";const chaiExternalDataAtom=jotai.atom({});chaiExternalDataAtom.debugLabel="chaiExternalDataAtom";const chaiRjsfFieldsAtom=jotai.atom({});chaiRjsfFieldsAtom.debugLabel="chaiRjsfFieldsAtom";const chaiRjsfWidgetsAtom=jotai.atom({});chaiRjsfWidgetsAtom.debugLabel="chaiRjsfWidgetsAtom";const chaiRjsfTemplatesAtom=jotai.atom({});chaiRjsfTemplatesAtom.debugLabel="chaiRjsfTemplatesAtom";const chaiPageExternalDataAtom=jotai.atom({});chaiPageExternalDataAtom.debugLabel="chaiPageExternalDataAtom";const usePageExternalData=()=>{const[o]=useBlockRepeaterDataAtom(),n=React.useMemo(()=>{const l={};return Object.entries(o).forEach(([r,i])=>{i.status==="loaded"&&(l[i.repeaterItems.replace("}}",`/${r}`).replace("{{","")]=i.props)}),l},[o]);return{...jotai.useAtomValue(chaiPageExternalDataAtom),...n}},useBuilderProp=(o,n=void 0)=>{const a=jotai.useAtomValue(chaiBuilderPropsAtom);return React.useMemo(()=>lodashEs.get(a,o,n),[a,o,n])},MODIFIERS=["hover","focus","focus-within","focus-visible","active","visited","target","first","last","only","odd","even","first-of-type","last-of-type","only-of-type","empty","disabled","checked","indeterminate","default","required","valid","invalid","in-range","out-of-range","placeholder-shown","autofill","read-only","open","before","after","first-letter","first-line","marker","selection","file","placeholder","hs-collapse-open","hs-accordion-active"],BRANDING_OPTIONS_DEFAULTS={bodyFont:"Inter",headingFont:"Inter",roundedCorners:5,primaryColor:"#570df8",secondaryColor:"#f002b8",bodyBgDarkColor:"#031022",bodyBgLightColor:"#fcfcfc",bodyTextDarkColor:"#ffffff",bodyTextLightColor:"#000000"},brandingOptionsAtom=jotai.atom(BRANDING_OPTIONS_DEFAULTS);jotai.atom(null);const useBrandingOptions=()=>{const[o,n]=jotai.useAtom(brandingOptionsAtom);return[lodashEs.isObject(o)?{...BRANDING_OPTIONS_DEFAULTS,...o}:BRANDING_OPTIONS_DEFAULTS,n]},currentPageAtom=jotai.atom(null),useCurrentPage=()=>({currentPage:jotai.useAtomValue(currentPageAtom)}),getBlockBuilderProps=lodashEs.memoize(o=>{const n=runtime.getRegisteredChaiBlock(o),a=lodashEs.get(n,"schema.properties",{});return lodashEs.compact(Object.keys(a).map(l=>lodashEs.get(a[l],"builderProp",!1)||lodashEs.get(a[l],"runtime",!1)?l:null))}),useGetPageData=()=>{const[o]=useBrandingOptions(),{currentPage:n}=useCurrentPage(),[a]=useBlocksStore();return React.useCallback(()=>{const l=lodashEs.map(a,r=>lodashEs.omit(r,getBlockBuilderProps(r._type)));return{currentPage:n,blocks:l}},[o,n,a])},usePermissions=()=>{const o=useBuilderProp("permissions",void 0);return{hasPermission:React.useCallback(a=>o?o.includes(a):!0,[o])}},getDefaultThemeValues=(o=plugin.defaultThemeOptions)=>{const n=plugin.defaultThemeValues;return o.fontFamily&&(n.fontFamily=Object.entries(o.fontFamily).reduce((a,[l,r])=>({...a,[l.replace("font-","")]:r}),n.fontFamily)),n.borderRadius=o.borderRadius,o.colors&&(n.colors=o.colors.reduce((a,l)=>(Object.entries(l.items).forEach(([r,i])=>{a[r]=i}),a),n.colors)),n},chaiThemeValuesAtom=jotai.atom({}),useTheme=()=>{const o=useThemeOptions(),n=React.useMemo(()=>getDefaultThemeValues(o),[o]),a=useBuilderProp("theme",{}),[l,r]=jotai.useAtom(chaiThemeValuesAtom);return[React.useMemo(()=>({...n,...!lodashEs.isEmpty(a)&&a,...!lodashEs.isEmpty(l)&&l}),[n,a,l]),r]},useThemeOptions=()=>{const o=useBuilderProp("themeOptions",a=>a);return React.useMemo(()=>o(plugin.defaultThemeOptions),[o])},rightPanelAtom=jotai.atom("block"),useRightPanel=()=>jotai.useAtom(rightPanelAtom),languageAtom=jotai.atom("");languageAtom.debugLabel="selectedLanguageAtom";const useLanguages=()=>{const o=useBuilderProp("languages",[]),n=useBuilderProp("fallbackLang","en"),[a,l]=jotai.useAtom(languageAtom),r=i=>{l(n===i?"":i)};return{languages:o==null?void 0:o.filter(i=>i!==n),fallbackLang:n,selectedLang:a,setSelectedLang:r}},isPageLoadedAtom=jotai.atom(!1),useIsPageLoaded=()=>jotai.useAtom(isPageLoadedAtom),builderSaveStateAtom=jotai.atom("SAVED");builderSaveStateAtom.debugLabel="builderSaveStateAtom";const checkMissingTranslations=(o,n)=>n?o.some(a=>{if(!(a!=null&&a._type)||a._type==="PartialBlock")return!1;try{const l=runtime.getRegisteredChaiBlock(a._type);return l?(lodashEs.has(l,"i18nProps")?l.i18nProps:[]).some(i=>{const c=`${i}-${n}`;return!a[c]||lodashEs.isEmpty(a[c])}):!1}catch(l){return console.warn(`Failed to get block definition for type: ${a._type}`,l),!1}}):!1,useSavePage=()=>{const[o,n]=jotai.useAtom(builderSaveStateAtom),a=useBuilderProp("onSave",async f=>{}),l=useBuilderProp("onSaveStateChange",lodashEs.noop),r=useGetPageData(),[i]=useTheme(),{hasPermission:c}=usePermissions(),{selectedLang:d,fallbackLang:m}=useLanguages(),[u]=useIsPageLoaded(),p=()=>{const f=r();return!d||d===m?!1:checkMissingTranslations(f.blocks||[],d)};return{savePage:web.useThrottledCallback(async(f=!1)=>{if(!c("save_page")||!u)return;n("SAVING"),l("SAVING");const h=r();return await a({autoSave:f,blocks:h.blocks,theme:i,needTranslations:p()}),setTimeout(()=>{n("SAVED"),l("SAVED")},100),!0},[r,n,i,a,l,u],3e3),savePageAsync:async()=>{if(!c("save_page")||!u)return;n("SAVING"),l("SAVING");const f=r();return await a({autoSave:!0,blocks:f.blocks,theme:i,needTranslations:p()}),setTimeout(()=>{n("SAVED"),l("SAVED")},100),!0},saveState:o,setSaveState:n,needTranslations:p}},undoManager=new UndoManager;undoManager.setLimit(50);const undoRedoStateAtom=jotai.atom({canUndo:!1,canRedo:!1}),useUndoManager=()=>{const[,o]=jotai.useAtom(builderSaveStateAtom),[n,a]=jotai.useAtom(undoRedoStateAtom),l=useBuilderProp("onSaveStateChange",lodashEs.noop),r=React.useCallback(()=>{const u={canUndo:undoManager.hasUndo(),canRedo:undoManager.hasRedo()};a(u),o("UNSAVED"),l("UNSAVED")},[a,o,l]);React.useEffect(()=>(undoManager.setCallback(r),()=>{undoManager.setCallback(lodashEs.noop)}),[r]);const i=React.useCallback(u=>{undoManager.add(u),r()},[r]),c=React.useCallback(()=>{undoManager.undo(),r()},[r]),d=React.useCallback(()=>{undoManager.redo(),r()},[r]),m=React.useCallback(()=>{undoManager.clear(),a({canUndo:!1,canRedo:!1})},[a]);return React.useMemo(()=>({add:i,undo:c,redo:d,hasUndo:()=>n.canUndo,hasRedo:()=>n.canRedo,clear:m}),[i,c,d,n.canUndo,n.canRedo,m])},useBlocksStore=()=>jotai.useAtom(presentBlocksAtom),useBlocksStoreUndoableActions=()=>{const{add:o}=useUndoManager(),[n]=useBlocksStore(),{setNewBlocks:a,addBlocks:l,removeBlocks:r,moveBlocks:i,updateBlocksProps:c}=useBlocksStoreManager();return{moveBlocks:(h,j,b)=>{const C=lodashEs.map(h,B=>{const S=n.find(w=>w._id===B)._parent||null,E=n.filter(w=>S?w._parent===S:!w._parent).map(w=>w._id).indexOf(B);return{_id:B,oldParent:S,oldPosition:E}}),A=C.find(({_id:B})=>B===h[0]);A&&A.oldParent===j&&A.oldPosition===b||(i(h,j,b),o({undo:()=>lodashEs.each(C,({_id:B,oldParent:_,oldPosition:S})=>{i([B],_,S)}),redo:()=>i(h,j,b)}))},addBlocks:(h,j,b)=>{l(h,j,b),o({undo:()=>r(lodashEs.map(h,"_id")),redo:()=>l(h,j,b)})},removeBlocks:h=>{var A;const j=(A=lodashEs.first(h))==null?void 0:A._parent,C=n.filter(B=>j?B._parent===j:!B._parent).indexOf(lodashEs.first(h));r(lodashEs.map(h,"_id")),o({undo:()=>l(h,j,C),redo:()=>r(lodashEs.map(h,"_id"))})},updateBlocks:(h,j,b)=>{let C=[];if(b)C=lodashEs.map(h,A=>({_id:A,...b}));else{const A=lodashEs.keys(j);C=lodashEs.map(h,B=>{const _=n.find(y=>y._id===B),S={_id:B};return lodashEs.each(A,y=>S[y]=_[y]),S})}c(lodashEs.map(h,A=>({_id:A,...j}))),o({undo:()=>c(C),redo:()=>c(lodashEs.map(h,A=>({_id:A,...j})))})},updateBlocksRuntime:(h,j)=>{c(lodashEs.map(h,b=>({_id:b,...j})))},setNewBlocks:h=>{a(h),o({undo:()=>a(n),redo:()=>a(h)})},updateMultipleBlocksProps:h=>{let j=[];j=lodashEs.map(h,b=>{const C=lodashEs.keys(b),A=n.find(_=>_._id===b._id),B={};return lodashEs.each(C,_=>B[_]=A[_]),B}),c(h),o({undo:()=>c(j),redo:()=>c(h)})}}},useAddBlock=()=>{const[o]=useBlocksStore(),[,n]=useSelectedBlockIds(),{addBlocks:a}=useBlocksStoreUndoableActions(),l=React.useCallback((i,c,d)=>{var x;for(let f=0;f<i.length;f++){const{_id:h}=i[f];i[f]._id=commonFunctions.generateUUID();const j=lodashEs.filter(i,{_parent:h});for(let b=0;b<j.length;b++)j[b]._parent=i[f]._id}const m=lodashEs.first(i);let u,p;return c&&(u=lodashEs.find(o,{_id:c}),i[0]._parent=c,p=c),!(u?canAcceptChildBlock(u==null?void 0:u._type,m._type):!0)&&u&&(i[0]._parent=u._parent,p=u._parent),a(i,p,d),n([(x=lodashEs.first(i))==null?void 0:x._id]),lodashEs.first(i)},[a,o,n]);return{addCoreBlock:React.useCallback((i,c,d)=>{if(lodashEs.has(i,"blocks")){const j=i.blocks;return l(j,c,d)}const m=commonFunctions.generateUUID(),u=runtime.getDefaultBlockProps(i.type),p={_type:i.type,_id:m,...u,...lodashEs.has(i,"_name")&&{_name:i._name},...lodashEs.has(i,"partialBlockId")&&{partialBlockId:i.partialBlockId}};let g,x;return c&&(g=lodashEs.find(o,{_id:c}),p._parent=c,x=c),!canAcceptChildBlock(g==null?void 0:g._type,p._type)&&g&&(p._parent=g._parent,x=g._parent),a([p],x,d),n([p._id]),p},[a,l,o,n]),addPredefinedBlock:l}},STANDARD=[0,1,2,3,4,5,6,7,8,9,10,11,12,14,16,20,24,28,32,36,40,44,48,52,56,60,64,72,80,96],CLASS_VALUES={columns:[...lodashEs.range(1,13),"auto","3xs","2xs","xs","sm","md","lg","xl",...lodashEs.map(lodashEs.range(2,8),o=>`${o}xl`)],breakAfter:["auto","avoid","all","avoid-page","page","left","right","column"],breakInside:["auto","avoid","avoid-page","avoid-column"],display:["block","flex","grid","inline-block","inline","hidden"],objectFit:["contain","cover","fill","none","scale-down"],objectPosition:["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],overflow:["auto","hidden","clip","visible","scroll"],overscroll:["auto","contain","none"],trbl:[0,"px","0.5",1,1.5,2,2.5,3,3.5,...lodashEs.range(4,13),14,16,20,24,28,32,36,40,44,48,52,56,60,64,72,80,96,"auto","1/2","1/3","2/3","1/4","2/4","3/4","full"],flexBasis:[...STANDARD,"auto","px","0.5","1.5","2.5","3.5","1/2","1/3","2/3","1/4","2/4","3/4","1/5","2/5","3/5","4/5","1/6","2/6","3/6","4/6","5/6","1/12","2/12","3/12","4/12","5/12","6/12","7/12","8/12","9/12","10/12","11/12","full"],padding:[...STANDARD,"px","0.5","1.5","2.5","3.5"],margin:["auto",...STANDARD,"px","0.5","1.5","2.5","3.5"],scale:[0,50,75,90,95,100,105,110,125,150],origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left"],blendEffect:["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],borderWidth:[0,2,4,8],borderRadius:["global","none","sm","md","lg","xl","2xl","3xl","full"],indent:[0,"px","0.5",1,1.5,2,2.5,3,3.5,...lodashEs.range(4,13),14,16,20,24,28,32,36,40,44,48,52,56,60,64,72,80,96],maxHeight:[0,"px","0.5",1,1.5,2,2.5,3,3.5,...lodashEs.range(4,13),14,16,20,24,28,32,36,40,44,48,52,56,60,64,72,80,96,"full","screen","min","max","fit"],space:[0,"px","0.5",1,1.5,2,2.5,3,3.5,...lodashEs.range(4,13),14,16,20,24,28,32,36,40,44,48,52,56,60,64,72,80,96,"px","reverse"],width:["0","px","0.5","1","1.5","2","2.5","3","3.5","4","5","6","7","8","9","10","11","12","14","16","20","24","28","32","36","40","44","48","52","56","60","64","72","80","96","auto","1/2","1/3","2/3","1/4","2/4","3/4","1/5","2/5","3/5","4/5","1/6","2/6","3/6","4/6","5/6","1/12","2/12","3/12","4/12","5/12","6/12","7/12","8/12","9/12","10/12","11/12"],maxWidth:["0","none","xs","sm","md","lg","xl","2xl","3xl","4xl","5xl","6xl","7xl","full","min","max","fit","prose","screen-sm","screen-md","screen-lg","screen-xl","screen-2xl"],height:["0","px","0.5","1","1.5","2","2.5","3","3.5","4","5","6","7","8","9","10","11","12","14","16","20","24","28","32","36","40","44","48","52","56","60","64","72","80","96","auto","1/2","1/3","2/3","1/4","2/4","3/4","1/5","2/5","3/5","4/5","1/6","2/6","3/6","4/6","5/6","full","screen","min","max","fit"]},CLASSES_LIST={textColor:{classes:[],regExp:"text-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},aspectRatio:{classes:["aspect-auto","aspect-square","aspect-video"],regExp:"aspect-(auto|square|video)"},container:{classes:["container"],regExp:"container"},columns:{classes:lodashEs.map(CLASS_VALUES.columns,o=>`columns-${o}`),regExp:"columns-(auto|[0-9]xl|[0-9]xs|xs|sm|md|lg|xl|\\d+)"},breakAfter:{classes:lodashEs.map(CLASS_VALUES.breakAfter,o=>`break-after-${o}`),regExp:"break-after-\\S+"},breakBefore:{classes:lodashEs.map(CLASS_VALUES.breakAfter,o=>`break-before-${o}`),regExp:"break-before-\\S+"},breakInside:{classes:lodashEs.map(CLASS_VALUES.breakInside,o=>`break-inside-${o}`),regExp:"break-inside-\\S+"},boxDecoration:{classes:["box-decoration-clone","box-decoration-slice"],regExp:"box-decoration-\\S+"},boxSizing:{classes:["box-border","box-content"],regExp:"box-(border|content)"},flexDirection:{classes:["flex-row","flex-row-reverse","flex-col","flex-col-reverse"],regExp:"flex-(row|row-reverse|col|col-reverse)"},flexWrap:{classes:["flex-wrap","flex-wrap-reverse","flex-nowrap"],regExp:"flex-(wrap|wrap-reverse|nowrap)"},flexGrowShrink:{classes:["flex-1","flex-auto","flex-initial","flex-none"],regExp:"flex-1|flex-auto|flex-initial|flex-none"},gridColumns:{classes:lodashEs.map([...lodashEs.range(0,13),"none"],o=>`grid-cols-${o}`),regExp:"grid-cols-(\\d+|none)"},gridFlow:{classes:["grid-flow-row","grid-flow-col","grid-flow-row-dense","grid-flow-col-dense"],regExp:"grid-flow-(row|col|row-dense|col-dense)"},outlineStyle:{classes:lodashEs.map(["none","dashed","dotted","double","hidden"],o=>`outline-${o}`),regExp:"outline-(none|dashed|dotted|double|hidden)"},borderStyle:{classes:lodashEs.map(["solid","dashed","dotted","double","hidden","none"],o=>`border-${o}`),regExp:"border-(solid|dashed|dotted|double|hidden|none)"},overflow:{classes:lodashEs.map(CLASS_VALUES.overflow,o=>`overflow-${o}`),regExp:`overflow-(${CLASS_VALUES.overflow.join("|")})`},overflowX:{classes:lodashEs.map(CLASS_VALUES.overflow,o=>`overflow-x-${o}`),regExp:`overflow-x-(${CLASS_VALUES.overflow.join("|")})`},overflowY:{classes:lodashEs.map(CLASS_VALUES.overflow,o=>`overflow-y-${o}`),regExp:`overflow-y-(${CLASS_VALUES.overflow.join("|")})`},gridRows:{classes:lodashEs.map([1,2,3,4,5,6,"none"],o=>`grid-rows-${o}`),regExp:"grid-rows-(\\d|none)"},display:{classes:lodashEs.map(CLASS_VALUES.display,o=>o.toString()),regExp:`(${CLASS_VALUES.display.join("|")})`},float:{classes:["float-right","float-left","float-none"],regExp:"float-\\S+"},clear:{classes:["clear-right","clear-left","clear-none","clear-both"],regExp:"clear-\\S+"},isolation:{classes:["isolate","isolation-auto"],regExp:"isolate|isolation-auto"},objectFit:{classes:lodashEs.map(CLASS_VALUES.objectFit,o=>`object-${o}`),regExp:"object-(contain|cover|fill|none|scale-down)"},objectPosition:{classes:lodashEs.map(CLASS_VALUES.objectPosition,o=>`object-${o}`),regExp:`object-(${CLASS_VALUES.objectPosition.join("|")})`},overscroll:{classes:lodashEs.map(CLASS_VALUES.overscroll,o=>`overscroll-${o}`),regExp:`overscroll-(${CLASS_VALUES.overscroll.join("|")})`},overscrollX:{classes:lodashEs.map(CLASS_VALUES.overscroll,o=>`overscroll-x-${o}`),regExp:`overscroll-x-(${CLASS_VALUES.overscroll.join("|")})`},overscrollY:{classes:lodashEs.map(CLASS_VALUES.overscroll,o=>`overscroll-y-${o}`),regExp:`overscroll-y-(${CLASS_VALUES.overscroll.join("|")})`},inset:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`inset-${o}`),regExp:"-?inset-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},insetX:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`inset-x-${o}`),regExp:"-?inset-x-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},insetY:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`inset-y-${o}`),regExp:"-?inset-y-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},top:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`top-${o}`),regExp:"-?top-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},topX:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`top-x-${o}`),regExp:"-?top-x-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},topY:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`top-y-${o}`),regExp:"-?top-y-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},right:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`right-${o}`),regExp:"-?right-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},rightX:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`right-x-${o}`),regExp:"-?right-x-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},rightY:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`right-y-${o}`),regExp:"-?right-y-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},bottom:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`bottom-${o}`),regExp:"-?bottom-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},bottomX:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`bottom-x-${o}`),regExp:"-?bottom-x-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},bottomY:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`bottom-y-${o}`),regExp:"-?bottom-y-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},left:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`left-${o}`),regExp:"-?left-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},leftX:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`left-x-${o}`),regExp:"-?left-x-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},leftY:{classes:lodashEs.map(CLASS_VALUES.trbl,o=>`left-y-${o}`),regExp:"-?left-y-(px|\\d\\/\\d|\\d\\.\\d|\\d+|full|auto|\\[.*\\])"},visibility:{classes:["visible","invisible"],regExp:"invisible|visible"},zIndex:{classes:lodashEs.map(["0",10,20,30,40,50,"auto"],o=>`z-${o}`),regExp:"-?z-(\\d+|auto|\\[.*\\])"},flexBasis:{classes:lodashEs.map(CLASS_VALUES.flexBasis,o=>`basis-${o}`),regExp:"basis-(\\d+|\\S+)"},flexGrow:{classes:["grow","grow-0"],regExp:"grow(-0)?"},flexShrink:{classes:["shrink","shrink-0"],regExp:"shrink(-0)?"},gridColSpan:{classes:["col-auto",...lodashEs.map(lodashEs.range(1,13),o=>`col-span-${o}`),"col-span-full"],regExp:"col-(auto|span-(\\d+|full))"},gridColStart:{classes:[...lodashEs.map(lodashEs.range(1,14),o=>`col-start-${o}`),"col-start-auto"],regExp:"col-start-(\\d+|auto)"},gridColEnd:{classes:[...lodashEs.map(lodashEs.range(1,14),o=>`col-end-${o}`),"col-end-auto"],regExp:"col-end-(\\d+|auto)"},gridRowSpan:{classes:["row-auto",...lodashEs.map(lodashEs.range(1,7),o=>`row-span-${o}`),"row-span-full"],regExp:"row-(auto|span-(\\d+|full))"},gridRowStart:{classes:[...lodashEs.map(lodashEs.range(1,8),o=>`row-start-${o}`),"row-start-auto"],regExp:"row-start-(\\d+|auto)"},gridRowEnd:{classes:[...lodashEs.map(lodashEs.range(1,8),o=>`row-end-${o}`),"row-end-auto"],regExp:"row-end-(\\d+|auto)"},gridAutoColumns:{classes:["auto-cols-auto","auto-cols-min","auto-cols-max","auto-cols-fr"],regExp:"auto-cols-(auto|min|max|fr)"},gridAutoRows:{classes:["auto-rows-auto","auto-rows-min","auto-rows-max","auto-rows-fr"],regExp:"auto-rows-(auto|min|max|fr)"},gap:{classes:lodashEs.map(CLASS_VALUES.indent,o=>`gap-${o}`),regExp:"gap-(px|\\d.\\d|\\d|\\[.*\\])"},gapX:{classes:lodashEs.map(CLASS_VALUES.indent,o=>`gap-x-${o}`),regExp:"gap-x-(px|\\d.\\d|\\d|\\[.*\\])"},gapY:{classes:lodashEs.map(CLASS_VALUES.indent,o=>`gap-y-${o}`),regExp:"gap-y-(px|\\d.\\d|\\d|\\[.*\\])"},justifyContent:{classes:["justify-start","justify-end","justify-center","justify-between","justify-around","justify-evenly"],regExp:"justify-(start|end|center|between|around|evenly)"},justifyItems:{classes:["justify-items-start","justify-items-end","justify-items-center","justify-items-stretch"],regExp:"justify-items-(start|end|center|stretch)"},justifySelf:{classes:["justify-self-auto","justify-self-start","justify-self-end","justify-self-center","justify-self-stretch"],regExp:"justify-self-(auto|start|end|center|stretch)"},placeContent:{classes:["place-content-center","place-content-start","place-content-end","place-content-between","place-content-around","place-content-evenly","place-content-stretch"],regExp:"place-content-(center|start|end|between|around|evenly|stretch)"},placeItems:{classes:["place-items-start","place-items-end","place-items-center","place-items-stretch"],regExp:"place-items-(start|end|center|stretch)"},placeSelf:{classes:["place-self-auto","place-self-start","place-self-end","place-self-center","place-self-stretch"],regExp:"place-self-(auto|start|end|center|stretch)"},alignContent:{classes:["content-center","content-start","content-end","content-between","content-around","content-evenly"],regExp:"content-(center|start|end|between|around|evenly)"},alignItems:{classes:["items-start","items-end","items-center","items-baseline","items-stretch"],regExp:"items-(start|end|center|baseline|stretch)"},alignSelf:{classes:["self-auto","self-start","self-end","self-center","self-stretch","self-baseline"],regExp:"self-(auto|start|end|center|stretch|baseline)"},backgroundClip:{classes:["bg-clip-border","bg-clip-padding","bg-clip-content","bg-clip-text"],regExp:"bg-clip-(border|padding|content|text)"},dropShadow:{classes:lodashEs.map(["sm","md","lg","xl","2xl","none"],o=>`drop-shadow-${o}`),regExp:"drop-shadow-(sm|md|lg|xl|2xl|none)"},backdropBlur:{classes:lodashEs.map(["none","sm","md","lg","xl","2xl","3xl"],o=>`backdrop-blur-${o}`),regExp:"backdrop-blur-(none|sm|md|lg|xl|2xl|3xl)"},backdropBrightness:{classes:lodashEs.map([0,50,75,90,95,100,105,110,125,150,200],o=>`backdrop-brightness-${o}`),regExp:"backdrop-brightness-(\\d+)"},backdropContrast:{classes:lodashEs.map([0,50,75,100,125,150,200],o=>`backdrop-contrast-${o}`),regExp:"backdrop-contrast-(\\d+)"},backdropGrayScale:{classes:["backdrop-grayscale-0","backdrop-grayscale"],regExp:"backdrop-grayscale(-0)?"},backdropHueRotate:{classes:lodashEs.map([0,15,30,60,90,180],o=>`backdrop-hue-rotate-${o}`),regExp:"-?backdrop-hue-rotate-(\\d+)"},backdropInvert:{classes:["backdrop-invert-0","backdrop-invert"],regExp:"backdrop-invert(-0)?"},backdropOpacity:{classes:lodashEs.map([0,5,10,20,25,30,40,50,60,70,75,80,90,95,100],o=>`backdrop-opacity-${o}`),regExp:"backdrop-opacity-(\\d+)"},backdropSaturate:{classes:lodashEs.map([0,50,100,150,200],o=>`backdrop-saturate-${o}`),regExp:"backdrop-saturate-(\\d+)"},backdropSepia:{classes:["backdrop-sepia-0, backdrop-sepia"],regExp:"backdrop-sepia(-0)?"},backgroundOrigin:{classes:["bg-origin-border","bg-origin-padding","bg-origin-content"],regExp:"bg-origin-(border|padding|content)"},transformOrigin:{classes:lodashEs.map(CLASS_VALUES.origin,o=>`origin-${o}`),regExp:"origin-(\\d+|\\S+)"},padding:{classes:lodashEs.map(CLASS_VALUES.padding,o=>`p-${o}`),regExp:"p-(\\d+|\\S+|\\[.*\\])"},paddingX:{classes:lodashEs.map(CLASS_VALUES.padding,o=>`px-${o}`),regExp:"px-(\\d+|\\S+|\\[.*\\])"},paddingY:{classes:lodashEs.map(CLASS_VALUES.padding,o=>`py-${o}`),regExp:"py-(\\d+|\\S+|\\[.*\\])"},paddingTop:{classes:lodashEs.map(CLASS_VALUES.padding,o=>`pt-${o}`),regExp:"pt-(\\d+|\\S+|\\[.*\\])"},paddingRight:{classes:lodashEs.map(CLASS_VALUES.padding,o=>`pr-${o}`),regExp:"pr-(\\d+|\\S+|\\[.*\\])"},paddingBottom:{classes:lodashEs.map(CLASS_VALUES.padding,o=>`pb-${o}`),regExp:"pb-(\\d+|\\S+|\\[.*\\])"},paddingLeft:{classes:lodashEs.map(CLASS_VALUES.padding,o=>`pl-${o}`),regExp:"pl-(\\d+|\\S+|\\[.*\\])"},textDecorationStyle:{classes:["decoration-solid","decoration-double","decoration-dotted","decoration-dashed","decoration-wavy"],regExp:"decoration-(solid|double|dotted|dashed|wavy)"},textDecorationThickness:{classes:lodashEs.map(["auto","from-font","0",1,2,4,8],o=>`decoration-${o}`),regExp:"decoration-(auto|from-font|\\d+|\\S+)"},fromColor:{classes:[],regExp:"from-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},margin:{classes:lodashEs.map(CLASS_VALUES.margin,o=>`m-${o}`),regExp:"-?m-(\\d+|\\S+|\\[.*\\])"},marginX:{classes:lodashEs.map(CLASS_VALUES.margin,o=>`mx-${o}`),regExp:"-?mx-(\\d+|\\S+|\\[.*\\])"},marginY:{classes:lodashEs.map(CLASS_VALUES.margin,o=>`my-${o}`),regExp:"-?my-(\\d+|\\S+|\\[.*\\])"},marginTop:{classes:lodashEs.map(CLASS_VALUES.margin,o=>`mt-${o}`),regExp:"-?mt-(\\d+|\\S+|\\[.*\\])"},marginRight:{classes:lodashEs.map(CLASS_VALUES.margin,o=>`mr-${o}`),regExp:"-?mr-(\\d+|\\S+|\\[.*\\])"},marginBottom:{classes:lodashEs.map(CLASS_VALUES.margin,o=>`mb-${o}`),regExp:"-?mb-(\\d+|\\S+|\\[.*\\])"},marginLeft:{classes:lodashEs.map(CLASS_VALUES.margin,o=>`ml-${o}`),regExp:"-?ml-(\\d+|\\S+|\\[.*\\])"},spaceX:{classes:lodashEs.map(CLASS_VALUES.space,o=>`space-x-${o}`),regExp:"-?space-x-(\\d+|\\S+|\\[.*\\])"},spaceY:{classes:lodashEs.map(CLASS_VALUES.space,o=>`space-y-${o}`),regExp:"-?space-y-(\\d+|\\S+|\\[.*\\])"},boxShadow:{classes:lodashEs.map(["sm","md","lg","xl","2xl","inner","none"],o=>`shadow-${o}`),regExp:"shadow-(sm|md|lg|xl|2xl|inner|none)"},minWidth:{classes:["min-w-0","min-w-full","min-w-min","min-w-max","min-w-fit"],regExp:"min-w-(\\d+|\\S+|\\[.*\\])"},maxWidth:{classes:lodashEs.map(CLASS_VALUES.maxWidth,o=>`max-w-${o}`),regExp:"max-w-(\\d+|\\S+|\\[.*\\])"},width:{classes:lodashEs.map([...CLASS_VALUES.width,"full","screen","min","max","fit"],o=>`w-${o}`),regExp:"w-(\\d+.\\d+|\\d+|px|auto|full|screen|min|max|fit|\\[.*\\])$"},minHeight:{classes:["min-h-0","min-h-full","min-h-screen","min-h-min","min-h-max","min-h-fit"],regExp:"min-h-(\\d+|\\S+|\\[.*\\])"},maxHeight:{classes:lodashEs.map(CLASS_VALUES.maxHeight,o=>`max-h-${o}`),regExp:"max-h-(\\d+|\\S+|\\[.*\\])"},height:{classes:lodashEs.map(CLASS_VALUES.height,o=>`h-${o}`),regExp:"h-(\\d+.\\d+|\\d+|px|auto|full|screen|min|max|fit|\\[.*\\])"},fontFamily:{classes:["font-heading","font-body","font-sans","font-serif","font-mono"],regExp:"font-(heading|body|sans|serif|mono)"},textAlign:{classes:["text-left","text-center","text-right","text-justify"],regExp:"text-(left|center|right|justify)"},textOverflow:{classes:["truncate","text-ellipsis","text-clip"],regExp:"truncate|text-ellipsis|text-clip"},verticalAlign:{classes:["align-baseline","align-top","align-middle","align-bottom","align-text-top","align-text-bottom","align-sub","align-super"],regExp:"align-(baseline|top|middle|bottom|text-top|text-bottom|sub|super)"},fontSize:{classes:["text-xs","text-sm","text-base","text-lg","text-xl","text-2xl","text-3xl","text-4xl","text-5xl","text-6xl","text-7xl","text-8xl","text-9xl"],regExp:"text-(\\d+|\\S+|\\[.*\\])"},fontSmoothing:{classes:["antialiased","subpixel-antialiased"],regExp:"antialiased|subpixel-antialiased"},fontStyle:{classes:["italic","not-italic"],regExp:"not-italic|italic"},fontWeight:{classes:["font-thin","font-extralight","font-light","font-normal","font-medium","font-semibold","font-bold","font-extrabold","font-black"],regExp:"font-(thin|extralight|light|normal|medium|semibold|bold|extrabold|black)"},fontVariantNum:{classes:["normal-nums","ordinal","diagonal-fractions","stacked-fractions","tabular-nums","oldstyle-nums","proportional-nums","lining-nums","slashed-zero"],regExp:"normal-nums|ordinal|diagonal-fractions|stacked-fractions|tabular-nums|oldstyle-nums|proportional-nums|lining-nums|slashed-zero"},letterSpacing:{classes:["tracking-tighter","tracking-tight","tracking-normal","tracking-wide","tracking-wider","tracking-widest"],regExp:"-?tracking-(tighter|tight|normal|wide|wider|widest|\\[.*\\])"},lineHeight:{classes:["leading-none","leading-tight","leading-snug","leading-normal","leading-relaxed","leading-loose","leading-3","leading-4","leading-5","leading-6","leading-7","leading-8","leading-9","leading-10"],regExp:"leading-(none|tight|snug|normal|relaxed|loose|\\[.*\\]|\\d+)"},listStyleType:{classes:["list-none","list-disc","list-decimal"],regExp:"list-(none|disc|decimal)"},listStylePosition:{classes:["list-inside","list-outside"],regExp:"list-(inside|outside)"},textUnderlineOffset:{classes:["underline-offset-auto","underline-offset-0","underline-offset-1","underline-offset-2","underline-offset-4","underline-offset-8"],regExp:"underline-offset-(auto|\\d+|\\S+)"},textDecoration:{classes:["underline","overline","line-through","no-underline"],regExp:"underline|overline|line-through|no-underline"},textDecorationColor:{classes:[],regExp:"decoration-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},textTransform:{classes:["uppercase","lowercase","capitalize","normal-case"],regExp:"uppercase|lowercase|capitalize|normal-case"},textIndent:{classes:lodashEs.map(CLASS_VALUES.indent,o=>`indent-${o}`),regExp:"-?indent-(\\d+|\\S+)"},whitespace:{classes:["whitespace-normal","whitespace-nowrap","whitespace-pre","whitespace-pre-line","whitespace-pre-wrap"],regExp:"whitespace-(normal|nowrap|pre|pre-line|pre-wrap)"},wordBreak:{classes:["break-normal","break-words","break-all"],regExp:"break-(normal|words|all)"},content:{classes:["content-none"],regExp:"content-none"},backgroundAttachment:{classes:lodashEs.map(["fixed","local","scroll"],o=>`bg-${o}`),regExp:"bg-(fixed|local|scroll)"},backgroundColor:{classes:[],regExp:"bg-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},backgroundPosition:{classes:["bg-bottom","bg-center","bg-left","bg-left-bottom","bg-left-top","bg-right","bg-right-bottom","bg-right-top","bg-top"],regExp:"bg-(bottom|center|left|left-bottom|left-top|right|right-bottom|right-top|top)"},backgroundRepeat:{classes:["bg-repeat","bg-repeat-x","bg-repeat-y","bg-no-repeat","bg-repeat-round","bg-repeat-space"],regExp:"bg-(repeat|repeat-x|repeat-y|no-repeat|repeat-round|repeat-space)"},backgroundSize:{classes:["bg-auto","bg-cover","bg-contain"],regExp:"bg-(auto|cover|contain)"},backgroundGradient:{classes:["bg-gradient-none","bg-gradient-to-t","bg-gradient-to-tr","bg-gradient-to-r","bg-gradient-to-br","bg-gradient-to-b","bg-gradient-to-bl","bg-gradient-to-l","bg-gradient-to-tl"],regExp:"bg-gradient-(none|to-(t|tr|r|br|b|bl|l|tl))"},viaColor:{classes:[],regExp:"via-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},toColor:{classes:[],regExp:"to-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},position:{classes:["static","fixed","absolute","relative","sticky"],regExp:"(static|fixed|absolute|relative|sticky)"},borderRadiusTopLeft:{classes:["rounded-tl",...lodashEs.map(CLASS_VALUES.borderRadius,o=>`rounded-tl-${o}`)],regExp:"rounded-tl-?(\\d+|\\S+)?"},borderRadiusTopRight:{classes:["rounded-tr",...lodashEs.map(CLASS_VALUES.borderRadius,o=>`rounded-tr-${o}`)],regExp:"rounded-tr-?(\\d+|\\S+)?"},borderRadiusBottomRight:{classes:["rounded-br",...lodashEs.map(CLASS_VALUES.borderRadius,o=>`rounded-br-${o}`)],regExp:"rounded-br-?(\\d+|\\S+)?"},borderRadiusBottomLeft:{classes:["rounded-bl",...lodashEs.map(CLASS_VALUES.borderRadius,o=>`rounded-bl-${o}`)],regExp:"rounded-bl-?(\\d+|\\S+)?"},borderRadiusTop:{classes:["rounded-t",...lodashEs.map(CLASS_VALUES.borderRadius,o=>`rounded-t-${o}`)],regExp:"rounded-t-?(\\d+|\\S+)?"},borderRadiusRight:{classes:["rounded-r",...lodashEs.map(CLASS_VALUES.borderRadius,o=>`rounded-r-${o}`)],regExp:"rounded-r-?(\\d+|\\S+)?"},borderRadiusBottom:{classes:["rounded-b",...lodashEs.map(CLASS_VALUES.borderRadius,o=>`rounded-b-${o}`)],regExp:"rounded-b-?(\\d+|\\S+)?"},borderRadiusLeft:{classes:["rounded-l",...lodashEs.map(CLASS_VALUES.borderRadius,o=>`rounded-l-${o}`)],regExp:`(rounded-l-(${CLASS_VALUES.borderRadius.join("|")})|rounded-l$)`},borderRadius:{classes:["rounded",...lodashEs.map(CLASS_VALUES.borderRadius,o=>`rounded-${o}`)],regExp:`(rounded-(${CLASS_VALUES.borderRadius.join("|")}$)|rounded)`},borderX:{classes:["border-x",...lodashEs.map(CLASS_VALUES.borderWidth,o=>`border-x-${o}`)],regExp:"border-x-?(\\d+|\\S+|\\[.*\\])?"},borderY:{classes:["border-y",...lodashEs.map(CLASS_VALUES.borderWidth,o=>`border-y-${o}`)],regExp:"border-y-?(\\d+|\\S+|\\[.*\\])?"},borderTop:{classes:["border-t",...lodashEs.map(CLASS_VALUES.borderWidth,o=>`border-t-${o}`)],regExp:"border-t-?(\\d+|\\S+|\\[.*\\])?"},borderRight:{classes:["border-r",...lodashEs.map(CLASS_VALUES.borderWidth,o=>`border-r-${o}`)],regExp:"border-r-?(\\d+|\\S+|\\[.*\\])?"},borderBottom:{classes:["border-b",...lodashEs.map(CLASS_VALUES.borderWidth,o=>`border-b-${o}`)],regExp:"border-b-?(\\d+|\\S+|\\[.*\\])?"},borderLeft:{classes:["border-l",...lodashEs.map(CLASS_VALUES.borderWidth,o=>`border-l-${o}`)],regExp:"border-l-?(\\d+|\\S+|\\[.*\\])?"},borderColor:{classes:[],regExp:"^border-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\w+-\\d+|\\[#[0-9a-fA-F]+\\])$"},border:{classes:["border",...lodashEs.map(CLASS_VALUES.borderWidth,o=>`border-${o}`)],regExp:"^border(-\\d+|\\[\\d+px\\])?$"},order:{classes:lodashEs.map([...lodashEs.range(0,13),"first","last","none"],o=>`order-${o}`),regExp:"-?order-(\\d+|first|last|none)"},divideXWidth:{classes:lodashEs.map(["0",2,4,8],o=>`divide-x-${o}`),regExp:"divide-x-(\\d+|\\[.*\\])"},divideYWidth:{classes:lodashEs.map(["0",2,4,8],o=>`divide-y-${o}`),regExp:"divide-y-(\\d+|\\[.*\\])"},divideColor:{classes:[],regExp:"divide-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},divideStyle:{classes:lodashEs.map(["solid","dashed","dotted","double","none"],o=>`divide-${o}`),regExp:"divide-(solid|dashed|dotted|double|none)"},outlineWidth:{classes:lodashEs.map([0,1,2,4,8],o=>`outline-${o}`),regExp:"outline-(\\d+)"},outlineOffset:{classes:lodashEs.map([0,1,2,4,8],o=>`outline-offset-${o}`),regExp:"outline-offset-(\\d+)"},outlineColor:{classes:[],regExp:"outline-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},ringWidth:{classes:lodashEs.map([0,1,2,4,8,"inset"],o=>`ring-${o}`),regExp:"ring-(\\d+|inset)"},ringOffsetWidth:{classes:lodashEs.map([0,1,2,4,8],o=>`ring-offset-${o}`),regExp:"ring-offset-(\\d+)"},ringOffsetColor:{classes:[],regExp:"ring-offset-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},ringColor:{classes:[],regExp:"ring-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},boxShadowColor:{classes:[],regExp:"shadow-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},opacity:{classes:lodashEs.map([0,5,10,20,25,30,40,50,60,70,75,80,90,95,100],o=>`opacity-${o}`),regExp:"opacity-(\\d+|\\[.*\\])"},mixBlendMode:{classes:lodashEs.map(CLASS_VALUES.blendEffect,o=>`mix-blend-${o}`),regExp:"mix-blend-(\\d+|\\S+)"},bgBlendMode:{classes:lodashEs.map(CLASS_VALUES.blendEffect,o=>`bg-blend-${o}`),regExp:"bg-blend-(\\d+|\\S+)"},blur:{classes:lodashEs.map(["none","sm","md","lg","xl","2xl","3xl"],o=>`blur-${o}`),regExp:"blur-(none|sm|md|lg|xl|2xl|3xl)"},brightness:{classes:lodashEs.map([0,50,75,90,95,100,105,110,125,150,200],o=>`brightness-${o}`),regExp:"brightness-(\\d+)"},contrast:{classes:lodashEs.map([0,50,75,100,125,150,200],o=>`contrast-${o}`),regExp:"contrast-(\\d+)"},grayScale:{classes:["grayscale-0","grayscale"],regExp:"grayscale(-0)?"},hueRotate:{classes:lodashEs.map([0,15,30,60,90,180],o=>`hue-rotate-${o}`),regExp:"-?hue-rotate-(\\d+)"},invert:{classes:["invert-0","invert"],regExp:"invert(-0)?"},saturate:{classes:lodashEs.map([0,50,100,150,200],o=>`saturate-${o}`),regExp:"saturate-(\\d+)"},sepia:{classes:["sepia-0","sepia"],regExp:"sepia(-0)?"},transition:{classes:["transition-none","transition-all","transition-colors","transition-opacity","transition-shadow","transition-transform"],regExp:"transition-(none|all|colors|opacity|shadow|transform)"},duration:{classes:lodashEs.map([75,100,150,200,300,500,700,1e3],o=>`duration-${o}`),regExp:"duration-(\\d+|\\[.*\\])"},transitionEase:{classes:["ease-linear","ease-in","ease-out","ease-in-out"],regExp:"eas(e-linear|e-in|e-out|e-in-out)"},transitionDelay:{classes:lodashEs.map([75,100,150,200,300,500,700,1e3],o=>`delay-${o}`),regExp:"delay-(\\d+|\\[.*\\])"},animation:{classes:["animate-none","animate-spin","animate-ping"],regExp:"animate-(none|spin|ping)"},scaleX:{classes:lodashEs.map(CLASS_VALUES.scale,o=>`scale-x-${o}`),regExp:"-?scale-x-(\\d+|\\S+|\\[.*\\])"},scaleY:{classes:lodashEs.map(CLASS_VALUES.scale,o=>`scale-y-${o}`),regExp:"-?scale-y-(\\d+|\\S+|\\[.*\\])"},scale:{classes:lodashEs.map(CLASS_VALUES.scale,o=>`scale-${o}`),regExp:"-?scale-(\\d+|\\S+|\\[.*\\])"},rotate:{classes:lodashEs.map([0,1,2,3,6,12,45,90,180],o=>`rotate-${o}`),regExp:"-?rotate-(\\d+|\\S+|\\[.*\\])"},translateX:{classes:lodashEs.map([0,"px","0.5",1],o=>`translate-x-${o}`),regExp:"-?translate-x-(\\d+|\\S+|\\[.*\\])"},translateY:{classes:lodashEs.map([0,"px","0.5",1],o=>`translate-y-${o}`),regExp:"-?translate-y-(\\d+|\\S+|\\[.*\\])"},skewX:{classes:lodashEs.map([0,1,2,3,6,12],o=>`skew-x-${o}`),regExp:"-?skew-x-(\\d+|\\S+|\\[.*\\])"},skewY:{classes:lodashEs.map([0,1,2,3,6,12],o=>`skew-y-${o}`),regExp:"-?skew-y-(\\d+|\\S+|\\[.*\\])"},accentColor:{classes:[],regExp:"accent-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},appearance:{classes:["appearance-none"],regExp:"appearance-none"},cursor:{classes:["cursor-auto","cursor-default","cursor-pointer","cursor-wait","cursor-text","cursor-move","cursor-help","cursor-not-allowed"],regExp:"cursor-(auto|default|pointer|wait|text|move|help|not-allowed)"},caretColor:{classes:[],regExp:"caret-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},pointerEvents:{classes:["pointer-events-none","pointer-events-auto"],regExp:"pointer-events-(none|auto)"},userSelect:{classes:["select-none","select-text","select-all","select-auto"],regExp:"select-(none|text|all|auto)"},fill:{classes:[],regExp:"caret-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},stroke:{classes:[],regExp:"caret-(black|transparent|current|white|__THEME_COLORS_REGEXP__|\\S+-\\d+)"},strokeWidth:{classes:["stroke-0","stroke-1","stroke-2"],regExp:"stroke-(\\d+|\\[.*\\])"}},colorOptions={backgroundColor:"bg",textColor:"text",borderColor:"border",boxShadowColor:"shadow",outlineColor:"outline",divideColor:"divide",fromColor:"from",viaColor:"via",toColor:"to",ringColor:"ring",ringOffsetColor:"ring-offset"},soloColors=["current","inherit","transparent","black","white"],shadedColors=["slate","gray","zinc","neutral","stone","red","orange","amber","yellow","lime","green","emerald","teal","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose"],shades=["50","100","200","300","400","500","600","700","800","900"],colorKeys=lodashEs.map(lodashEs.values(colorOptions),o=>o),ALL_COLORS=lodashEs.flattenDeep([...lodashEs.map(soloColors,o=>lodashEs.flatten(lodashEs.map(colorKeys,n=>`${n}-${o}`))),...lodashEs.map(shadedColors,o=>lodashEs.flattenDeep(lodashEs.map(colorKeys,n=>lodashEs.flattenDeep(lodashEs.map(shades,a=>`${n}-${o}-${a}`)))))]),ALL_TW_CLASSES=lodashEs.map(lodashEs.flattenDeep(lodashEs.values(CLASSES_LIST).map(o=>o.classes).concat(ALL_COLORS)),o=>({name:o})),useFuseSearch=()=>{const o=useThemeOptions(),n=React.useMemo(()=>{let a=[];if(o.colors){const l=lodashEs.flattenDeep(lodashEs.map(o.colors,({items:r})=>lodashEs.keys(r)));a=lodashEs.flattenDeep(lodashEs.map(l,r=>lodashEs.flatten(lodashEs.map(colorKeys,i=>`${i}-${r}`))))}return o.fontFamily&&(a=[...a,...lodashEs.map(lodashEs.keys(o.fontFamily),l=>`${l}`)]),lodashEs.map(a,l=>({name:l}))},[o]);return React.useMemo(()=>new Fuse([...ALL_TW_CLASSES,...n],{isCaseSensitive:!1,threshold:.2,minMatchCharLength:2,keys:["name"]}),[n])},useTailwindClassList=()=>{const o=useThemeOptions(),n=React.useMemo(()=>{if(o.colors){const r=lodashEs.flattenDeep(lodashEs.map(o.colors,({items:i})=>lodashEs.keys(i)));lodashEs.each(CLASSES_LIST,(i,c)=>{lodashEs.set(CLASSES_LIST,`${c}.regExp`,i.regExp.replace("__THEME_COLORS_REGEXP__",r.join("|")))})}return CLASSES_LIST},[o]),a=React.useCallback((r,i)=>{const c=lodashEs.get(n,`${r}.regExp`,"");return i.match(new RegExp(c))},[n]),l=React.useCallback((r,i=[])=>lodashEs.get(n,`${r}.classes`,i),[n]);return{match:a,getClasses:l}};function getMqForCls(o){if(lodashEs.isEmpty(o.trim()))return"";const n=o.match(/sm:|md:|lg:|xl:|2xl:/g);return lodashEs.get(n,0,"xs").replace(":","")}function getModForCls(o){const n=lodashEs.map(MODIFIERS,l=>`${l}:`).join("|"),a=new RegExp(n,"g");return lodashEs.get(a.exec(o.trim()),0,"").replace(":","")}function getPureClsName(o){return o.trim().split(":").pop()||""}const memoizedProps={};function getPropertyForClass(o){if(lodashEs.isEmpty(o))return"";if(memoizedProps[o])return memoizedProps[o];let n="";for(const a in CLASSES_LIST){const l=lodashEs.get(CLASSES_LIST,`${a}.regExp`,"");if(new RegExp(l,"g").test(o)){n=a,memoizedProps[o]=n;break}}return n}function constructClassObject(o){return lodashEs.isEmpty(o)?null:{dark:lodashEs.startsWith(o,"dark:"),mq:getMqForCls(o),mod:getModForCls(o),cls:getPureClsName(o),fullCls:o,property:getPropertyForClass(o)}}function generateFullClsName(o){let n="";return o.dark&&(n+="dark:"),o.mq.toLowerCase()!=="xs"&&(n+=`${o.mq}:`),o.mod&&(n+=`${o.mod}:`),n+=o.cls,n}function orderClassesByBreakpoint(o){o=o.replace(/\s+/g," ");const n=o.split(" ").map(constructClassObject),a=["xs","sm","md","lg","xl","2xl"];return n.sort((l,r)=>a.indexOf(l.mq)-a.indexOf(r.mq)).map(l=>l.fullCls).join(" ")}function removeDuplicateClasses(o){if(o=o.replace(/\s+/g," "),!o)return"";const n=["xs","sm","md","lg","xl","2xl"],a=o.split(" ").map(constructClassObject);let l=o;if(a.length===1)return a[0].fullCls;for(const r of a){const i=r.property,c=n.indexOf(r.mq);for(let d=c+1;d<n.length;d++){const m=n[d],u=a.find(p=>p.property===i&&p.mq===m);if(u&&u.cls===r.cls)l=l.replace(u.fullCls,"");else if(u&&u.cls!==r.cls)break}}return l.replace(/\s+/g," ").trim()}const selectedStylingBlocksAtom=jotai.atom([]);selectedStylingBlocksAtom.debugLabel="selectedStylingBlocksAtom";const useSelectedStylingBlocks=()=>jotai.useAtom(selectedStylingBlocksAtom),addClassesToBlocksAtom=jotai.atom(null,(o,n,{blockIds:a,newClasses:l})=>{const r=lodashEs.filter(o(pageBlocksAtomsAtom),c=>a.includes(o(c)._id)),i=lodashEs.first(o(selectedStylingBlocksAtom));return lodashEs.map(r,c=>{const d=o(c),m=lodashEs.get(d,i.prop,`${applyBinding.STYLES_KEY},`),{classes:u}=applyBinding.getSplitChaiClasses(m);return{ids:[d._id],props:{[i.prop]:`${applyBinding.STYLES_KEY},${orderClassesByBreakpoint(removeDuplicateClasses(tailwindMerge.twMerge(u,l)))}`}}})}),useAddClassesToBlocks=()=>{const o=jotai.useSetAtom(addClassesToBlocksAtom),{updateBlocks:n,updateBlocksRuntime:a}=useBlocksStoreUndoableActions();return React.useCallback((l,r,i=!1)=>{const c=o({blockIds:l,newClasses:r});if(!i){a(l,c[0].props);return}n(l,c[0].props)},[o,n,a])},LANGUAGES={ab:"Abkhazian",aa:"Afar",af:"Afrikaans",ak:"Akan",sq:"Albanian",am:"Amharic",ar:"Arabic",an:"Aragonese",hy:"Armenian",as:"Assamese",av:"Avaric",ae:"Avestan",ay:"Aymara",az:"Azerbaijani",bm:"Bambara",ba:"Bashkir",eu:"Basque",be:"Belarusian",bn:"Bengali",bh:"Bihari",bi:"Bislama",bs:"Bosnian",br:"Breton",bg:"Bulgarian",my:"Burmese",ca:"Catalan",ch:"Chamorro",ce:"Chechen",ny:"Chichewa",zh:"Chinese","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cv:"Chuvash",kw:"Cornish",co:"Corsican",cr:"Cree",hr:"Croatian",cs:"Czech",da:"Danish",dv:"Maldivian",nl:"Dutch",dz:"Dzongkha",en:"English",eo:"Esperanto",et:"Estonian",ee:"Ewe",fo:"Faroese",fj:"Fijian",fi:"Finnish",fr:"French",ff:"Fula, Pular",gl:"Galician",gd:"Gaelic (Scottish)",gv:"Manx",ka:"Georgian",de:"German",el:"Greek",kl:"Kalaallisut",gn:"Guarani",gu:"Gujarati",ht:"Haitian Creole",ha:"Hausa",he:"Hebrew",hz:"Herero",hi:"Hindi",ho:"Hiri Motu",hu:"Hungarian",is:"Icelandic",io:"Ido",ig:"Igbo",id:"Indonesian",ia:"Interlingua",ie:"Interlingue",iu:"Inuktitut",ik:"Inupiak",ga:"Irish",it:"Italian",ja:"Japanese",jv:"Javanese",kn:"Kannada",kr:"Kanuri",ks:"Kashmiri",kk:"Kazakh",km:"Khmer",ki:"Kikuyu",rw:"Kinyarwanda",rn:"Kirundi",ky:"Kyrgyz",kv:"Komi",kg:"Kongo",ko:"Korean",ku:"Kurdish",kj:"Kwanyama",lo:"Lao",la:"Latin",lv:"Latvian",li:"Limburgish",ln:"Lingala",lt:"Lithuanian",lu:"Luga-Katanga",lg:"Luganda, Ganda",lb:"Luxembourgish",mk:"Macedonian",mg:"Malagasy",ms:"Malay",ml:"Malayalam",mt:"Maltese",mi:"Maori",mr:"Marathi",mh:"Marshallese",mo:"Moldavian",mn:"Mongolian",na:"Nauru",nv:"Navajo",ng:"Ndonga",nd:"Northern Ndebele",ne:"Nepali",no:"Norwegian",nb:"Norwegian bokmål",nn:"Norwegian nynorsk",ii:"Sichuan Yi",oc:"Occitan",oj:"Ojibwe",cu:"Old Church Slavonic",or:"Oriya",om:"Oromo",os:"Ossetian",pi:"Pāli",ps:"Pashto, Pushto",fa:"Persian (Farsi)",pl:"Polish",pt:"Portuguese",pa:"Punjabi (Eastern)",qu:"Quechua",rm:"Romansh",ro:"Romanian",ru:"Russian",se:"Sami",sm:"Samoan",sg:"Sango",sa:"Sanskrit",sr:"Serbian",sh:"Serbo-Croatian",st:"Sesotho",tn:"Setswana",sn:"Shona",sd:"Sindhi",si:"Sinhalese",ss:"Swati",sk:"Slovak",sl:"Slovenian",so:"Somali",nr:"Southern Ndebele",es:"Spanish",su:"Sundanese",sw:"Swahili (Kiswahili)",sv:"Swedish",tl:"Tagalog",ty:"Tahitian",tg:"Tajik",ta:"Tamil",tt:"Tatar",te:"Telugu",th:"Thai",bo:"Tibetan",ti:"Tigrinya",to:"Tonga",ts:"Tsonga",tr:"Turkish",tk:"Turkmen",tw:"Twi",ug:"Uyghur",uk:"Ukrainian",ur:"Urdu",uz:"Uzbek",ve:"Venda",vi:"Vietnamese",vo:"Volapük",wa:"Wallon",cy:"Welsh",wo:"Wolof",fy:"Western Frisian",xh:"Xhosa",yi:"Yiddish",yo:"Yoruba",za:"Zhuang, Chuang",zu:"Zulu"},updatePropsForLanguage=(o,n,a)=>{const l=runtime.getRegisteredChaiBlock(lodashEs.get(a,"_type"));if(!l)return o;const r={...o};return lodashEs.forEach(lodashEs.keys(o),i=>{if(lodashEs.includes(lodashEs.get(l,"i18nProps",[]),i)&&!lodashEs.isEmpty(n)){const c=`${i}-${n}`;lodashEs.set(r,c,o[i]),lodashEs.unset(r,i)}}),r},useUpdateBlocksProps=()=>{const{updateBlocks:o}=useBlocksStoreUndoableActions(),{selectedLang:n}=useLanguages(),a=useSelectedBlock();return React.useCallback((l,r,i)=>{const c=updatePropsForLanguage(r,n,a);o(l,c,i)},[n,a,o])},useUpdateMultipleBlocksProps=()=>{const{updateMultipleBlocksProps:o}=useBlocksStoreUndoableActions();return React.useCallback(n=>{o(n)},[o])},useFakeStreamEffect=()=>{const{updateBlocksRuntime:o}=useBlocksStoreUndoableActions();return React.useCallback(async(n,a,l=30)=>{const r=lodashEs.keys(lodashEs.omit(a,["_id"]));for(const i of r){const c=a[i];if(lodashEs.isString(c)){const d=lodashEs.chunk(c.split(""),12);let m="";o([n],{[i]:""});for(let u=0;u<d.length;u++)m+=d[u].join(""),o([n],{[i]:m}),await new Promise(p=>setTimeout(p,l))}}},[o])},useStreamMultipleBlocksProps=()=>{const{updateMultipleBlocksProps:o}=useBlocksStoreUndoableActions(),n=useFakeStreamEffect();return React.useCallback(async a=>{for(const l of a)await n(l._id,l);o(a)},[n,o])},useUpdateBlocksPropsRealtime=()=>{const{updateBlocksRuntime:o}=useBlocksStoreUndoableActions(),{selectedLang:n}=useLanguages(),a=useSelectedBlock();return React.useCallback((l,r)=>{const i=updatePropsForLanguage(r,n,a);o(l,i)},[n,a,o])};function getChildBlocks(o,n,a){a.push(lodashEs.find(o,{_id:n}));const l=lodashEs.filter(o,{_parent:n});for(const r of l)a.push(...getBlockWithChildren(r._id,o));return a}const getBlockWithChildren=(o,n)=>{let a=[];return a=lodashEs.flattenDeep([...a,...getChildBlocks(n,o,a)]),a},pickOnlyAIProps=(o,n,a)=>lodashEs.compact(o.map(l=>{const r=["_id","_type","_parent"],i=lodashEs.pick(l,r),c=runtime.getRegisteredChaiBlock(l._type),d={},m=lodashEs.get(c,"aiProps",[]);for(const u in l)if(!r.includes(u)&&m.includes(u)){const p=lodashEs.get(l,`${u}-${n}`,""),g=lodashEs.get(l,u,"");d[u]=lodashEs.isString(p)&&p.trim()||g,a&&(d[u]=g)}return lodashEs.isEmpty(d)?!1:(lodashEs.has(i,"_parent")&&lodashEs.isEmpty(i._parent)&&delete i._parent,{...i,...d})})),addLangToPrompt=(o,n,a)=>!n||a!=="content"?o:`${o}. Generate content in ${lodashEs.get(LANGUAGES,n,n)} language.`,askAiProcessingAtom=jotai.atom(!1),useAskAi=()=>{const[o,n]=jotai.useAtom(askAiProcessingAtom),[a,l]=React.useState(null),r=useBuilderProp("askAiCallBack",null),i=useStreamMultipleBlocksProps(),c=useUpdateMultipleBlocksProps(),[d]=useBlocksStore(),{selectedLang:m,fallbackLang:u}=useLanguages(),p=m.length?m:u,g=(x,f)=>{const h=lodashEs.cloneDeep(f.find(j=>j._id===x));for(const j in h){const b=h[j];if(typeof b=="string"&&lodashEs.startsWith(b,applyBinding.STYLES_KEY)){const{baseClasses:C,classes:A}=applyBinding.getSplitChaiClasses(b);h[j]=lodashEs.compact(lodashEs.flattenDeep([C,A])).join(" ")}else j!=="_id"&&delete h[j]}return h};return{askAi:React.useCallback(async(x,f,h,j)=>{if(r){n(!0),l(null);try{const b=m===u?"":m;console.log("prompt",h);const C=h.toLowerCase().includes("translate the content"),A=x==="content"?pickOnlyAIProps(lodashEs.cloneDeep(getBlockWithChildren(f,d)),m,C):[g(f,d)],B=await r(x,addLangToPrompt(h,p,x),A,b),{blocks:_,error:S}=B;if(S){l(S);return}if(x==="styles"){const y=_.map(E=>{for(const w in E)w!=="_id"&&(E[w]=`${applyBinding.STYLES_KEY},${E[w]}`);return E});c(y)}else i(_);j&&j(B)}catch(b){l(b)}finally{n(!1),j&&j()}}},[r,n,m,u,d,p,c,i]),loading:o,error:a}},useAiAssistant=()=>{const[,o]=useRightPanel();return React.useCallback(n=>{o(n?"ai":"block")},[o])},partialBlocksStoreAtom=jotai.atom({}),partialBlocksLoadingStateAtom=jotai.atom({}),usePartialBlocksStore=()=>{const[o,n]=jotai.useAtom(partialBlocksStoreAtom),a=React.useCallback(r=>lodashEs.get(o,r,[]),[o]),l=React.useCallback(()=>n({}),[n]);return{getPartailBlocks:a,reset:l}},useWatchPartailBlocks=()=>{const[o]=useBlocksStore(),[n,a]=jotai.useAtom(partialBlocksStoreAtom),[l,r]=jotai.useAtom(partialBlocksLoadingStateAtom),i=useBuilderProp("getPartialBlockBlocks",async d=>[]),c=React.useMemo(()=>o.filter(d=>d._type==="PartialBlock"||d._type==="GlobalBlock").map(d=>lodashEs.get(d,"partialBlockId",lodashEs.get(d,"globalBlock",""))),[o]);React.useEffect(()=>{lodashEs.forEach(c,d=>{lodashEs.has(n,d)||lodashEs.get(l,`${d}.loading`,!1)||(r(m=>({...m,[d]:{loading:!0,error:null}})),i(d).then(m=>{a(u=>({...u,[d]:m})),r(u=>({...u,[d]:{loading:!1,error:null}}))}).catch(m=>{r(u=>({...u,[d]:{loading:!1,error:m.message}}))}))})},[i,n,l,a,r,c])},partialBlocksListAtom=jotai.atom({}),usePartialBlocksList=()=>{const[o,n]=React.useState(!1),[a,l]=React.useState(null),[r,i]=jotai.useAtom(partialBlocksListAtom),c=useBuilderProp("getPartialBlocks",async()=>[]),d=React.useCallback(async()=>{n(!0),l(null);try{const m=await c();i(m),n(!1)}catch(m){l(m instanceof Error?m.message:"Failed to fetch partial blocks"),n(!1)}},[c,i]);return React.useEffect(()=>{d()},[]),{data:r,isLoading:o,refetch:d,error:a}},useBuilderReset=()=>{const{clear:o}=useUndoManager(),[,n]=useSelectedBlockIds(),{clearHighlight:a}=useBlockHighlight(),[,l]=useSelectedStylingBlocks(),[,r]=jotai.useAtom(aiAssistantActiveAtom),{reset:i}=usePartialBlocksStore(),{setSaveState:c}=useSavePage(),[,d]=useBlockRepeaterDataAtom();return()=>{d({}),n([]),l([]),a(),o(),r(!1),i(),c("SAVED")}},canvasZoomAtom=utils.atomWithStorage("canvasZoom",100),useCanvasZoom=()=>jotai.useAtom(canvasZoomAtom),codeEditorAtom=jotai.atom(null),useCodeEditor=()=>jotai.useAtom(codeEditorAtom),cutBlockIdsAtom=jotai.atom([]),useCutBlockIds=()=>{const[o,n]=jotai.useAtom(cutBlockIdsAtom),a=jotai.useSetAtom(copiedBlockIdsAtom),l=React.useCallback(r=>{n(r),a([])},[n,a]);return[o,l]},copiedBlockIdsAtom=jotai.atom([]),useCopyBlocks=()=>{const[o]=useBlocksStore(),[n,a]=jotai.useAtom(copiedBlockIdsAtom),l=jotai.useSetAtom(cutBlockIdsAtom),{getPartailBlocks:r}=usePartialBlocksStore(),i=React.useCallback(d=>d.some(m=>getDuplicatedBlocks(o,m,null).some(p=>p._type==="PartialBlock"||p._type==="GlobalBlock")),[o]),c=React.useCallback(async(d,m=!1)=>{try{if(lodashEs.isEmpty(d))return;a(d),l([]);const u={_chai_copied_blocks:d.flatMap(p=>{const g=getDuplicatedBlocks(o,p,null);if(!m)return g;let x=[];for(const f of g)if(f._type==="PartialBlock"||f._type==="GlobalBlock"){let h=r(f.partialBlockId);f._parent&&(h==null?void 0:h.length)>0&&(h=h.map(j=>(lodashEs.isEmpty(j._parent)&&lodashEs.set(j,"_parent",f._parent),j))),x=[...x,...h]}else x.push(f);return x})};if(!navigator.clipboard){sonner.toast.error("Clipboard not available.");return}sonner.toast.promise(navigator.clipboard.writeText(JSON.stringify(u)),{success:"Blocks copied successfully",error:"Failed to copy blocks to clipboard"})}catch(u){sonner.toast.error("Failed to copy blocks to clipboard"),console.error("Failed to copy blocks to clipboard:",u)}},[a,l,o]);return[n,c,i]},useCopyToClipboard=()=>{const[o,n]=React.useState(null),a=React.useCallback(async l=>{if(!(navigator!=null&&navigator.clipboard))return console.warn("Clipboard not supported"),!1;try{return await navigator.clipboard.writeText(l),n(l),!0}catch(r){return console.warn("Copy failed",r),n(null),!1}},[]);return[o,a]},darkModeAtom=utils.atomWithStorage("darkMode",!1),useDarkMode=()=>{const[o,n]=jotai.useAtom(darkModeAtom);return[o,n]},useDuplicateBlocks=()=>{const[o]=useBlocksStore(),[,n]=useSelectedBlockIds(),{addBlocks:a}=useBlocksStoreUndoableActions();return React.useCallback((l,r=null)=>{const i=[];lodashEs.each(l,c=>{const d=o.find(x=>x._id===c);r?r==="root"&&(r=null):r=d._parent;const p=lodashEs.filter(o,x=>lodashEs.isString(r)?x._parent===r:!x._parent).indexOf(d)+1,g=getDuplicatedBlocks(o,c,r);a(g,r,p),i.push(lodashEs.get(g,"0._id",""))}),n(i)},[o,n])},hiddenBlockIdsAtom=jotai.atom([]),useHiddenBlockIds=()=>{const[o,n]=jotai.useAtom(hiddenBlockIdsAtom),a=React.useCallback(l=>{n(r=>lodashEs.includes(r,l)?lodashEs.without(r,l):[...r,l])},[n]);return[o,n,a]},highlightBlockIdAtom=jotai.atom(""),useHighlightBlockId=()=>jotai.useAtom(highlightBlockIdAtom),libraryBlocksAtom=jotai.atom({}),useLibraryBlocks=o=>{const[n,a]=jotai.useAtom(libraryBlocksAtom),l=React.useMemo(()=>(o==null?void 0:o.getBlocksList)||(()=>[]),[o]),r=lodashEs.get(n,`${o==null?void 0:o.id}.blocks`,null),i=lodashEs.get(n,`${o==null?void 0:o.id}.loading`,"idle"),c=React.useRef("idle");React.useEffect(()=>{(async()=>{if(!(i==="complete"||c.current==="loading")){c.current="loading",a(m=>({...m,[o==null?void 0:o.id]:{loading:"loading",blocks:[]}}));try{const m=await l(o);c.current="idle",a(u=>({...u,[o==null?void 0:o.id]:{loading:"complete",blocks:m||[]}}))}catch{c.current="idle",a(u=>({...u,[o==null?void 0:o.id]:{loading:"complete",blocks:[]}}))}}})()},[o,r,i,c,a,l]);const d=React.useCallback(m=>{a(u=>({...u,[m]:{loading:"idle",blocks:[]}}))},[a]);return{data:r||[],isLoading:i==="loading",resetLibrary:d}},useCanPaste=()=>{const[o]=useBlocksStore();return(n,a)=>{var i;const l=((i=lodashEs.find(o,{_id:a}))==null?void 0:i._type)||null,r=lodashEs.first(n.map(c=>{var d;return(d=lodashEs.find(o,{_id:c}))==null?void 0:d._type}));return canAcceptChildBlock(l,r)}},useMoveCutBlocks=()=>{const o=jotai.useAtomValue(presentBlocksAtom),{moveBlocks:n}=useBlocksStoreUndoableActions();return React.useCallback((a,l)=>{const r=Array.isArray(l)?l[0]:l;if(l==="root"){const i=o==null?void 0:o.filter(c=>!c._parent);n(a,null,(i==null?void 0:i.length)||0)}else{const i=o==null?void 0:o.filter(c=>c._parent===r);n(a,r,(i==null?void 0:i.length)||0)}},[n,o])},usePasteBlocks=()=>{const[o,n]=useCutBlockIds(),a=useMoveCutBlocks(),{addPredefinedBlock:l}=useAddBlock(),r=useCanPaste();return{canPaste:React.useCallback(async c=>{if(o.length>0)return r(o,c);try{const d=await navigator.clipboard.readText();if(d){const m=JSON.parse(d);return lodashEs.has(m,"_chai_copied_blocks")}}catch{return!1}return!1},[r,o]),pasteBlocks:React.useCallback(async c=>{const d=Array.isArray(c)?c[0]:c;if(!(navigator!=null&&navigator.permissions)){sonner.toast.error("Cannot check clipboard permissions.");return}try{if((await navigator.permissions.query({name:"clipboard-read"})).state==="denied"){sonner.toast.error("Clipboard paste permission denied. Please allow clipboard access.");return}}catch{sonner.toast.error("Failed to check clipboard permissions. Please allow clipboard access.");return}if(!lodashEs.isEmpty(o)){a(o,c),n([]),await navigator.clipboard.writeText("");return}sonner.toast.promise(async()=>{const m=await navigator.clipboard.readText();if(m){const u=JSON.parse(m);if(lodashEs.has(u,"_chai_copied_blocks"))l(u._chai_copied_blocks,d==="root"?null:d);else throw new Error("Nothing to paste")}else throw new Error("Nothing to paste")},{success:()=>"Blocks pasted successfully",error:()=>"Nothing to paste"})},[o,a,n])}},previewModeAtom=jotai.atom(!1),usePreviewMode=()=>{const[o,n]=jotai.useAtom(previewModeAtom);return[o,n]},removeClassFromBlocksAtom=jotai.atom(null,(o,n,{blockIds:a,fullClasses:l})=>{const r=lodashEs.first(o(selectedStylingBlocksAtom)),i=lodashEs.filter(o(pageBlocksAtomsAtom),c=>a.includes(o(c)._id));return lodashEs.map(i,c=>{const d=o(c),m=l;let{classes:u,baseClasses:p}=applyBinding.getSplitChaiClasses(lodashEs.get(d,r.prop,`${applyBinding.STYLES_KEY},`));return lodashEs.each(m,g=>{const x=g.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),f=new RegExp(`(^|\\s)${x}(?=\\s|$)`,"g");u=u.replace(f," ").replace(/\s+/g," ").trim();const h=lodashEs.first(g.split(":"));lodashEs.includes(["2xl","xl","lg","md","sm"],h)&&m.push(g.split(":").pop().trim())}),lodashEs.each(m,g=>{const x=g.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),f=new RegExp(`(^|\\s)${x}(?=\\s|$)`,"g");p=p.replace(f," ").replace(/\s+/g," ").trim()}),{ids:[d._id],props:{[r.prop]:`${applyBinding.STYLES_KEY}${p},${u}`}}})}),removeAllClassesForBlock=o=>{const n=Object.keys(o).filter(l=>typeof o[l]=="string"&&o[l].startsWith(applyBinding.STYLES_KEY)),a={};return n.forEach(l=>{a[l]=`${applyBinding.STYLES_KEY},`}),{ids:[o._id],props:a}},useRemoveAllClassesForBlock=()=>{const{updateBlocks:o,updateBlocksRuntime:n}=useBlocksStoreUndoableActions();return React.useCallback((a,l=!1)=>{const{ids:r,props:i}=removeAllClassesForBlock(a);l?o(r,i):n(r,i)},[o,n])},useRemoveClassesFromBlocks=()=>{const{updateBlocks:o,updateBlocksRuntime:n}=useBlocksStoreUndoableActions(),a=jotai.useSetAtom(removeClassFromBlocksAtom);return React.useCallback((l,r,i=!1)=>{const c=a({blockIds:l,fullClasses:r});i?o(l,c[0].props):n(l,c[0].props)},[a])},useResetBlockStyles=()=>{const o=useSelectedBlock(),n=useUpdateBlocksProps(),a=React.useCallback(c=>runtime.getDefaultBlockProps(c)||{},[]),l=React.useCallback(c=>Object.keys(c).filter(d=>typeof c[d]=="string"&&c[d].startsWith("#styles:")),[]),r=React.useCallback(c=>{if(!o)return;const m=a(o._type)[c]??"#styles:,";n([o._id],{[c]:m})},[o,a,n]);return{resetAll:React.useCallback(()=>{if(!o)return;const c=l(o);if(c.length===0)return;const d=a(o._type),m=lodashEs.pick(d,c);n([o._id],m)},[o,l,a,n]),reset:r}},useStylingBreakpoint=()=>jotai.useAtom(styleBreakpointAtom),canvasWidthAtom=utils.atomWithStorage("canvasWidth",800),canvasDisplayWidthAtom=utils.atomWithStorage("canvasDisplayWidth",800),canvasBreakpointAtom=jotai.atom(o=>{const n=o(canvasWidthAtom);return commonFunctions.getBreakpointValue(n).toLowerCase()}),useScreenSizeWidth=()=>{const[o,n]=jotai.useAtom(canvasWidthAtom),a=jotai.useAtomValue(canvasBreakpointAtom),[l,r]=useStylingBreakpoint();return React.useEffect(()=>{l!=="xs"&&r(a)},[a,l,r]),[o,a,n]},useCanvasDisplayWidth=()=>{const[o,n]=jotai.useAtom(canvasDisplayWidthAtom);return[o,n]},selectedBlockAllClassesAtom=jotai.atom(o=>{const n=lodashEs.first(o(selectedStylingBlocksAtom)),a=o(selectedBlockAtom);if(!n||n.blockId!==lodashEs.get(a,"_id",null))return[];const l=lodashEs.get(a,n.prop,`${applyBinding.STYLES_KEY},`),{classes:r}=applyBinding.getSplitChaiClasses(l);return lodashEs.filter(lodashEs.map(r.trim().split(" "),constructClassObject),i=>!lodashEs.isNull(i))}),useSelectedBlockAllClasses=()=>jotai.useAtomValue(selectedBlockAllClassesAtom),MQ={xs:0,sm:1,md:2,lg:3,xl:4,"2xl":5},selectedBlockCurrentClassesAtom=jotai.atom(o=>{const n=o(canvasBreakpointAtom),a=o(styleStateAtom),l=o(darkModeAtom),r=getQueries(n);let i=lodashEs.filter(o(selectedBlockAllClassesAtom),{mod:a});return lodashEs.startsWith(a,"_")||(i=lodashEs.filter(i,c=>r.includes(c.mq))),i=i.sort((c,d)=>MQ[c.mq]-MQ[d.mq]),l||(i=lodashEs.filter(i,{dark:!1})),i}),getQueries=o=>{let n=[];switch(o){case"xs":n=["xs"];break;case"sm":n=["xs","sm"];break;case"md":n=["xs","sm","md"];break;case"lg":n=["xs","sm","md","lg"];break;case"xl":n=["xs","sm","md","lg","xl"];break;case"2xl":n=["xs","sm","md","lg","xl","2xl"];break;default:n=["xs"];break}return n},useSelectedBlockCurrentClasses=()=>jotai.useAtomValue(selectedBlockCurrentClassesAtom),selectedBreakpointsAtom=utils.atomWithStorage("selectedBreakpoints",["XS","MD","XL"]),useSelectedBreakpoints=()=>{const[o,n]=jotai.useAtom(selectedBreakpointsAtom);return[o,n]},useStylingState=()=>jotai.useAtom(styleStateAtom),wrapperBlockAtom=jotai.atom(o=>{var c;const n=o(presentBlocksAtom),a=o(selectedBlockIdsAtom),l=a.length===1?a[0]:null;if(!l)return null;const r=lodashEs.find(n,{_id:l});if(!r)return null;let i=r._parent;for(;i;){const d=lodashEs.find(n,{_id:i});if(!d)return null;if((c=runtime.getRegisteredChaiBlock(d._type))!=null&&c.wrapper)return d;i=d._parent}return null});wrapperBlockAtom.debugLabel="wrapperBlockAtom";const useWrapperBlock=()=>jotai.useAtomValue(wrapperBlockAtom),inlineEditingActiveAtom=jotai.atom("");inlineEditingActiveAtom.debugLabel="inlineEditingActiveAtom";const inlineEditingItemIndexAtom=jotai.atom(0);inlineEditingItemIndexAtom.debugLabel="inlineEditingItemIndexAtom";const useInlineEditing=()=>{const[o,n]=jotai.useAtom(inlineEditingActiveAtom),[a,l]=jotai.useAtom(inlineEditingItemIndexAtom);return{editingBlockId:o,editingItemIndex:a,setEditingBlockId:n,setEditingItemIndex:l}},useSelectedLibrary=()=>jotai.useAtom(selectedLibraryAtom),sidebarActivePanelAtom=jotai.atom("outline");sidebarActivePanelAtom.debugLabel="sidebarActivePanelAtom";const useSidebarActivePanel=()=>jotai.useAtom(sidebarActivePanelAtom),CONTROLS=[{ControlIcon:reactIcons.PinTopIcon,dir:"VERTICAL",key:"UP"},{ControlIcon:reactIcons.PinBottomIcon,dir:"VERTICAL",key:"DOWN"},{ControlIcon:reactIcons.PinLeftIcon,dir:"HORIZONTAL",key:"LEFT"},{ControlIcon:reactIcons.PinRightIcon,dir:"HORIZONTAL",key:"RIGHT"}],getParentBlockOrientation=(o,n,a)=>{try{if(!o||!a)return"VERTICAL";const l=`[data-block-id='${o}']`,r=a==null?void 0:a.querySelector(l);if(r){const i=a==null?void 0:a.querySelector(`[data-block-id='${n}']`);return getOrientation(r,i).toUpperCase()}return"VERTICAL"}catch{return"VERTICAL"}},isDisabledControl=(o,n,a)=>!!(o&&(a==="UP"||a==="LEFT")||n&&(a==="DOWN"||a==="RIGHT")),useBlockController=(o,n)=>{const[a]=useBlocksStore(),{document:l}=useFrame(),{moveBlocks:r}=useBlocksStoreUndoableActions(),i=lodashEs.get(o,"_id"),c=lodashEs.get(o,"_parent"),d=lodashEs.filter(a,h=>c?lodashEs.get(h,"_parent")===c:!lodashEs.get(h,"_parent")),m=(d==null?void 0:d.length)<=1,u=lodashEs.findIndex(d,{_id:i}),p=u<=0,g=u+1===(d==null?void 0:d.length),x=getParentBlockOrientation(c,i,l),f=React.useCallback(h=>{isDisabledControl(p,g,h)||m||(h==="UP"||h==="LEFT"?r([i],c||null,u-1):(h==="DOWN"||h==="RIGHT")&&r([i],c||null,u+2),n())},[p,g,m,u,i,c,n]);return reactHotkeysHook.useHotkeys("shift+up, shift+down, shift+left, shift+right",({key:h})=>{var j;f((j=h==null?void 0:h.replace("Arrow",""))==null?void 0:j.toUpperCase())},{document:l==null?void 0:l.contentDocument},[f]),{isOnlyChild:m,isFirstBlock:p,isLastBlock:g,moveBlock:f,orientation:x}},BlockController=({block:o,updateFloatingBar:n})=>{const{isOnlyChild:a,isFirstBlock:l,isLastBlock:r,moveBlock:i,orientation:c}=useBlockController(o,n);return a?null:jsxRuntime.jsx(jsxRuntime.Fragment,{children:CONTROLS.map(({ControlIcon:d,dir:m,key:u})=>{if(c!==m)return null;const p=isDisabledControl(l,r,u);return p?null:jsxRuntime.jsx(d,{onClick:()=>i(u),className:`${p?"pointer-events-none cursor-not-allowed opacity-50":"duration-300 hover:scale-95 hover:opacity-80"}`},u)})})};function getTargetedBlock(o){if(o.getAttribute("data-block-id")==="canvas")return null;if(o.getAttribute("data-block-id")||o.getAttribute("data-block-parent"))return o;const n=o.closest("[data-block-id]");return(n==null?void 0:n.getAttribute("data-block-id"))==="canvas"?null:n}const INLINE_EDITABLE_BLOCKS=["Heading","Paragraph","Text","Link","Span"],isRichTextParent=o=>{var n;return(o==null?void 0:o.getAttribute("data-block-type"))==="RichText"||((n=o==null?void 0:o.parentElement)==null?void 0:n.getAttribute("data-block-type"))==="RichText"},isInlineEditable=(o,n)=>{if(isRichTextParent(o))return!0;const a=o==null?void 0:o.getAttribute("data-block-type");return!a||o&&o.children.length>0||a==="Button"?!1:INLINE_EDITABLE_BLOCKS.includes(a)},useHandleCanvasDblClick=()=>{const{editingBlockId:o,setEditingBlockId:n,setEditingItemIndex:a}=useInlineEditing();return React.useCallback(l=>{var d;if(l==null||l.preventDefault(),l==null||l.stopPropagation(),o)return;const r=getTargetedBlock(l.target);if(!isInlineEditable(r))return;const i=r.getAttribute("data-block-id");if(!i||!r)return;const c=r.closest('[data-block-type="Repeater"]');c?(d=c==null?void 0:c.childNodes)==null||d.forEach((m,u)=>{m.contains(r)&&a(u)}):a(-1),n(i)},[o,n,a])},useHandleCanvasClick=()=>{const{editingBlockId:o}=useInlineEditing(),{clearHighlight:n}=useBlockHighlight(),a=React.useRef(0);return React.useCallback(l=>{const r=new Date().getTime();if(o||(l.stopPropagation(),r-a.current<400))return;const c=getTargetedBlock(l.target);if(c!=null&&c.getAttribute("data-block-id")&&(c==null?void 0:c.getAttribute("data-block-id"))==="container"){pubsub.publish(CHAI_BUILDER_EVENTS.CLEAR_CANVAS_SELECTION);return}if(c!=null&&c.getAttribute("data-block-parent")){const d=c.getAttribute("data-style-prop"),m=c.getAttribute("data-style-id"),u=c.getAttribute("data-block-parent");pubsub.publish(CHAI_BUILDER_EVENTS.CANVAS_BLOCK_STYLE_SELECTED,{blockId:u,styleId:m,styleProp:d})}else if(c!=null&&c.getAttribute("data-block-id")){const d=c.getAttribute("data-block-id");pubsub.publish(CHAI_BUILDER_EVENTS.CANVAS_BLOCK_SELECTED,d==="canvas"?[]:[d])}n(),a.current=new Date().getTime()},[o])},useHandleMouseMove=()=>{const{editingBlockId:o}=useInlineEditing(),{highlightBlock:n}=useBlockHighlight();return web.useThrottledCallback(a=>{if(o)return;const l=getTargetedBlock(a.target);l&&n(l)},[o,n],100)},useHandleMouseLeave=()=>{const{clearHighlight:o}=useBlockHighlight();return React.useCallback(()=>o(),[o])},Canvas=({children:o})=>{const n=useHandleCanvasDblClick(),a=useHandleCanvasClick(),l=useHandleMouseMove(),r=useHandleMouseLeave();return jsxRuntime.jsx("div",{"data-block-id":"canvas",id:"canvas",onClick:a,onDoubleClick:n,onMouseMove:l,onMouseLeave:r,className:"relative h-full max-w-full p-px",children:o})},getElementByDataBlockId=(o,n)=>o.querySelector(`[data-block-id="${n}"]`),BlockActionLabel=({block:o,label:n})=>{const[,a]=useSelectedBlockIds(),[,l]=useHighlightBlockId(),[,r]=jotai.useAtom(draggedBlockAtom),i=flagged.useFeature("dnd");return jsxRuntime.jsxs("div",{className:"mr-10 flex cursor-default items-center space-x-1 px-1",draggable:i?"true":"false",onDragStart:c=>{c.dataTransfer.setData("text/plain",JSON.stringify(lodashEs.pick(o,["_id","_type","_name"]))),r(o),setTimeout(()=>{a([]),l(null)},200)},children:[jsxRuntime.jsx(reactIcons.DragHandleDots2Icon,{}),n]})},getElementByStyleId=(o,n)=>o.querySelector(`[data-style-id="${n}"]`),BlockSelectionHighlighter=()=>{const o=useSelectedBlock(),{document:n}=useFrame(),[a]=useSelectedStylingBlocks(),[l,r]=React.useState([]),[,i]=React.useState([]),c=(d,m=0)=>{const{top:u}=d.getBoundingClientRect();return u+m>=0&&u-m<=window.innerHeight};return React.useEffect(()=>{var d;if(o!=null&&o._id&&o.type!=="Multiple"&&n){const m=getElementByDataBlockId(n,o._id);m&&(c(m)||(d=n.defaultView)==null||d.scrollTo({top:m.offsetTop,behavior:"smooth"}),r([m]))}},[o==null?void 0:o._id,o==null?void 0:o.type,n]),React.useEffect(()=>{if(!lodashEs.isEmpty(a)&&n){const d=getElementByStyleId(n,lodashEs.first(a).id);i(d?[d]:[null])}else i([null])},[a,n]),jsxRuntime.jsx(BlockFloatingSelector,{block:o,selectedBlockElement:l[0]})},BlockFloatingSelector=({block:o,selectedBlockElement:n})=>{const a=useRemoveBlocks(),l=useDuplicateBlocks(),[,r]=useSelectedBlockIds(),[,i]=useHighlightBlockId(),[,c]=useSelectedStylingBlocks(),{hasPermission:d}=usePermissions(),{editingBlockId:m}=useInlineEditing(),{document:u}=useFrame(),{floatingStyles:p,refs:g,update:x}=reactDom.useFloating({placement:"top-start",middleware:[reactDom.shift({boundary:u==null?void 0:u.body,limiter:dom.limitShift({offset:8,mainAxis:!0,crossAxis:!0})}),dom.flip({boundary:u==null?void 0:u.body,fallbackPlacements:["bottom-start","top-end","bottom-end","inside"]}),dom.size({boundary:u==null?void 0:u.body,apply({availableWidth:j,availableHeight:b,elements:C}){Object.assign(C.floating.style,{maxWidth:`${Math.max(200,j)}px`,maxHeight:`${Math.max(100,b)}px`})}})],elements:{reference:n}});web.useResizeObserver(n,()=>x(),n!==null),web.useResizeObserver(u==null?void 0:u.body,()=>x(),(u==null?void 0:u.body)!==null);const f=lodashEs.get(o,"_parent",null),h=lodashEs.isEmpty(lodashEs.get(o,"_name",""))?lodashEs.get(o,"_type",""):lodashEs.get(o,"_name","");return React.useEffect(()=>{if(n){const j=setTimeout(()=>x(),500);return()=>clearTimeout(j)}else x()},[n]),!n||!o||m?null:jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsxs("div",{role:"button",tabIndex:0,ref:g.setFloating,style:p,onClick:j=>{j.stopPropagation(),j.preventDefault()},onMouseEnter:j=>{j.stopPropagation(),i(null)},onKeyDown:j=>j.stopPropagation(),className:"isolate z-[999] flex h-6 items-center bg-blue-500 py-2 text-xs text-white",children:[f&&jsxRuntime.jsx(reactIcons.ArrowUpIcon,{className:"hover:scale-105",onClick:()=>{c([]),r([f])}}),jsxRuntime.jsx(BlockActionLabel,{label:h,block:o}),jsxRuntime.jsxs("div",{className:"flex items-center gap-2 pl-1 pr-1.5",children:[jsxRuntime.jsx(AddBlockDropdown,{block:o,children:jsxRuntime.jsx(reactIcons.PlusIcon,{className:"hover:scale-105"})}),canDuplicateBlock(lodashEs.get(o,"_type",""))&&d(PERMISSIONS.ADD_BLOCK)?jsxRuntime.jsx(reactIcons.CopyIcon,{className:"hover:scale-105",onClick:()=>l([o==null?void 0:o._id])}):null,canDeleteBlock(lodashEs.get(o,"_type",""))&&d(PERMISSIONS.DELETE_BLOCK)?jsxRuntime.jsx(reactIcons.TrashIcon,{className:"hover:scale-105",onClick:()=>a([o==null?void 0:o._id])}):null,d(PERMISSIONS.MOVE_BLOCK)&&jsxRuntime.jsx(BlockController,{block:o,updateFloatingBar:x})]})]})})},IframeInitialContent=`<!doctype html>
2
2
  <html lang="en" dir="__HTML_DIR__" class="scroll-smooth h-full overflow-y-auto">
3
3
  <head>
4
4
  <meta charset="UTF-8">
package/dist/core.d.ts CHANGED
@@ -639,7 +639,7 @@ export declare const useInlineEditing: () => {
639
639
  setEditingItemIndex: (args_0: number | ((prev: number) => number)) => void;
640
640
  };
641
641
 
642
- export declare const useIsPageLoaded: () => boolean;
642
+ export declare const useIsPageLoaded: () => [boolean, (args_0: boolean | ((prev: boolean) => boolean)) => void];
643
643
 
644
644
  export declare const useLanguages: () => {
645
645
  languages: any[];
package/dist/core.js CHANGED
@@ -736,10 +736,7 @@ const useLanguages = () => {
736
736
  selectedLang: n,
737
737
  setSelectedLang: l
738
738
  };
739
- }, isPageLoadedAtom = atom(!1), useIsPageLoaded = () => {
740
- const [o] = useAtom$1(isPageLoadedAtom);
741
- return o;
742
- }, builderSaveStateAtom = atom("SAVED");
739
+ }, isPageLoadedAtom = atom(!1), useIsPageLoaded = () => useAtom$1(isPageLoadedAtom), builderSaveStateAtom = atom("SAVED");
743
740
  builderSaveStateAtom.debugLabel = "builderSaveStateAtom";
744
741
  const checkMissingTranslations = (o, r) => r ? o.some((n) => {
745
742
  if (!(n != null && n._type) || n._type === "PartialBlock")
@@ -755,7 +752,7 @@ const checkMissingTranslations = (o, r) => r ? o.some((n) => {
755
752
  }
756
753
  }) : !1, useSavePage = () => {
757
754
  const [o, r] = useAtom$1(builderSaveStateAtom), n = useBuilderProp("onSave", async (f) => {
758
- }), a = useBuilderProp("onSaveStateChange", noop), l = useGetPageData(), [i] = useTheme(), { hasPermission: c } = usePermissions(), { selectedLang: d, fallbackLang: p } = useLanguages(), u = useIsPageLoaded(), g = () => {
755
+ }), a = useBuilderProp("onSaveStateChange", noop), l = useGetPageData(), [i] = useTheme(), { hasPermission: c } = usePermissions(), { selectedLang: d, fallbackLang: p } = useLanguages(), [u] = useIsPageLoaded(), g = () => {
759
756
  const f = l();
760
757
  return !d || d === p ? !1 : checkMissingTranslations(f.blocks || [], d);
761
758
  };
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "author": "Suraj Air",
6
6
  "license": "BSD-3-Clause",
7
7
  "homepage": "https://chaibuilder.com",
8
- "version": "2.5.7",
8
+ "version": "2.5.8",
9
9
  "type": "module",
10
10
  "repository": {
11
11
  "type": "git",