@chaibuilder/sdk 2.0.0-beta.46 → 2.0.0-beta.47

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 F=Object.defineProperty;var z=(o,n,r)=>n in o?F(o,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):o[n]=r;var U=(o,n,r)=>z(o,typeof n!="symbol"?n+"":n,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const jsxRuntime=require("./jsx-runtime-qcKc-DpB.cjs"),React=require("react"),contextMenu=require("./context-menu-C_ITMOD1.cjs"),jotai=require("jotai"),lodashEs=require("lodash-es"),reactWrapBalancer=require("react-wrap-balancer"),iconBase=require("./iconBase-Cn2BsTrq.cjs"),reactI18next=require("react-i18next"),dom=require("@floating-ui/dom"),reactDom=require("@floating-ui/react-dom"),reactIcons=require("@radix-ui/react-icons"),web=require("@react-hookz/web"),flagged=require("flagged"),runtime=require("@chaibuilder/runtime"),ChaiThemeFn=require("./ChaiThemeFn-DQu-2Eh9.cjs"),TreeModel=require("tree-model"),reactHotkeysHook=require("react-hotkeys-hook"),lucideReact=require("lucide-react"),ReactQuill=require("react-quill"),typography=require("@tailwindcss/typography"),forms=require("@tailwindcss/forms"),aspectRatio=require("@tailwindcss/aspect-ratio"),containerQueries=require("@tailwindcss/container-queries"),tailwindMerge=require("tailwind-merge"),STRINGS=require("./STRINGS-n7COZtKr.cjs"),ReactDOM=require("react-dom"),reactErrorBoundary=require("react-error-boundary"),reResizable=require("re-resizable"),RjForm=require("@rjsf/core"),validator=require("@rjsf/validator-ajv8"),IconPicker=require("react-icons-picker"),Autosuggest=require("react-autosuggest"),Fuse=require("fuse.js"),himalaya=require("himalaya"),clsx=require("clsx"),reactArborist=require("react-arborist"),i18n=require("i18next"),framerMotion=require("framer-motion");function _interopNamespaceDefault(o){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const r in o)if(r!=="default"){const a=Object.getOwnPropertyDescriptor(o,r);Object.defineProperty(n,r,a.get?a:{enumerable:!0,get:()=>o[r]})}}return n.default=o,Object.freeze(n)}const React__namespace=_interopNamespaceDefault(React);let keyCount=0;function atom(o,n){const r=`atom${++keyCount}`,a={toString(){return r}};return typeof o=="function"?a.read=o:(a.init=o,a.read=defaultRead,a.write=defaultWrite),n&&(a.write=n),a}function defaultRead(o){return o(this)}function defaultWrite(o,n,r){return n(this,typeof r=="function"?r(o(this)):r)}const isSelfAtom=(o,n)=>o.unstable_is?o.unstable_is(n):n===o,hasInitialValue=o=>"init"in o,isActuallyWritableAtom=o=>!!o.write,cancelablePromiseMap=new WeakMap,isPendingPromise=o=>{var n;return isPromiseLike$2(o)&&!((n=cancelablePromiseMap.get(o))!=null&&n[1])},cancelPromise=(o,n)=>{const r=cancelablePromiseMap.get(o);r&&(r[1]=!0,r[0].forEach(a=>a(n)))},patchPromiseForCancelability=o=>{if(cancelablePromiseMap.has(o))return;const n=[new Set,!1];cancelablePromiseMap.set(o,n);const r=()=>{n[1]=!0};o.then(r,r),o.onCancel=a=>{n[0].add(a)}},isPromiseLike$2=o=>typeof(o==null?void 0:o.then)=="function",isAtomStateInitialized=o=>"v"in o||"e"in o,returnAtomValue=o=>{if("e"in o)throw o.e;return o.v},addPendingPromiseToDependency=(o,n,r)=>{r.p.has(o)||(r.p.add(o),n.then(()=>{r.p.delete(o)},()=>{r.p.delete(o)}))},addDependency=(o,n,r,a)=>{var i;n.d.set(r,a.n),isPendingPromise(n.v)&&addPendingPromiseToDependency(o,n.v,a),(i=a.m)==null||i.t.add(o)},INTERNAL_flushStoreHook=Symbol.for("JOTAI.EXPERIMENTAL.FLUSHSTOREHOOK"),buildStore=(...o)=>{const[n,r,a,i,l,u]=o,c=B=>{let C=n(B);return C||(C={d:new Map,p:new Set,n:0},r(B,C),l==null||l(B,N)),C},x=new WeakMap,d=new Map,p=new Set,m=new Set,h=()=>{var B;const C=[],I=T=>{try{T()}catch(v){C.push(v)}};do{(B=N[INTERNAL_flushStoreHook])==null||B.call(N);const T=new Set,v=T.add.bind(T);d.forEach(L=>{var M;return(M=L.m)==null?void 0:M.l.forEach(v)}),d.clear(),p.forEach(v),p.clear(),m.forEach(v),m.clear(),T.forEach(I),d.size&&w()}while(d.size||p.size||m.size);if(C.length)throw C[0]},f=(B,C,I)=>{const T="v"in C,v=C.v,L=isPendingPromise(C.v)?C.v:null;if(isPromiseLike$2(I)){patchPromiseForCancelability(I);for(const M of C.d.keys())addPendingPromiseToDependency(B,I,c(M));C.v=I}else C.v=I;delete C.e,(!T||!Object.is(v,C.v))&&(++C.n,L&&cancelPromise(L,I))},g=B=>{var C;const I=c(B);if(isAtomStateInitialized(I)&&(I.m&&x.get(B)!==I.n||Array.from(I.d).every(([P,V])=>g(P).n===V)))return I;I.d.clear();let T=!0;const v=()=>{I.m&&(E(B,I),w(),h())},L=P=>{if(isSelfAtom(B,P)){const $=c(P);if(!isAtomStateInitialized($))if(hasInitialValue(P))f(P,$,P.init);else throw new Error("no atom init");return returnAtomValue($)}const V=g(P);try{return returnAtomValue(V)}finally{addDependency(B,I,P,V),T||v()}};let M,H;const O={get signal(){return M||(M=new AbortController),M.signal},get setSelf(){return!H&&isActuallyWritableAtom(B)&&(H=(...P)=>{if(!T)return b(B,...P)}),H}};try{const P=a(B,L,O);return f(B,I,P),isPromiseLike$2(P)&&((C=P.onCancel)==null||C.call(P,()=>M==null?void 0:M.abort()),P.then(v,v)),I}catch(P){return delete I.v,I.e=P,++I.n,I}finally{T=!1}},j=B=>returnAtomValue(g(B)),R=B=>{var C;const I=new Map;for(const T of((C=B.m)==null?void 0:C.t)||[]){const v=c(T);v.m&&I.set(T,v)}for(const T of B.p)I.set(T,c(T));return I},_=B=>{const C=[B];for(;C.length;){const I=C.pop();for(const[T,v]of R(I))x.has(T)||(x.set(T,v.n),C.push(v))}},w=()=>{var B;const C=[],I=new WeakSet,T=new WeakSet,v=Array.from(d);for(;v.length;){const[L,M]=v[v.length-1];if(T.has(L)){v.pop();continue}if(I.has(L)){x.get(L)===M.n?C.push([L,M,M.n]):(x.delete(L),d.set(L,M)),T.add(L),v.pop();continue}I.add(L);for(const[H,O]of R(M))I.has(H)||v.push([H,O])}for(let L=C.length-1;L>=0;--L){const[M,H,O]=C[L];let P=!1;for(const V of H.d.keys())if(V!==M&&d.has(V)){P=!0;break}P&&(g(M),E(M,H),O!==H.n&&(d.set(M,H),(B=H.u)==null||B.call(H))),x.delete(M)}},y=(B,...C)=>{let I=!0;const T=L=>returnAtomValue(g(L)),v=(L,...M)=>{var H;const O=c(L);try{if(isSelfAtom(B,L)){if(!hasInitialValue(L))throw new Error("atom not writable");const P=O.n,V=M[0];f(L,O,V),E(L,O),P!==O.n&&(d.set(L,O),(H=O.u)==null||H.call(O),_(O));return}else return y(L,...M)}finally{I||(w(),h())}};try{return i(B,T,v,...C)}finally{I=!1}},b=(B,...C)=>{try{return y(B,...C)}finally{w(),h()}},E=(B,C)=>{var I;if(C.m&&!isPendingPromise(C.v)){for(const[T,v]of C.d)if(!C.m.d.has(T)){const L=c(T);S(T,L).t.add(B),C.m.d.add(T),v!==L.n&&(d.set(T,L),(I=L.u)==null||I.call(L),_(L))}for(const T of C.m.d||[])if(!C.d.has(T)){C.m.d.delete(T);const v=A(T,c(T));v==null||v.t.delete(B)}}},S=(B,C)=>{var I;if(!C.m){g(B);for(const T of C.d.keys())S(T,c(T)).t.add(B);if(C.m={l:new Set,d:new Set(C.d.keys()),t:new Set},(I=C.h)==null||I.call(C),isActuallyWritableAtom(B)){const T=C.m,v=()=>{let L=!0;const M=(...H)=>{try{return y(B,...H)}finally{L||(w(),h())}};try{const H=u(B,M);H&&(T.u=()=>{L=!0;try{H()}finally{L=!1}})}finally{L=!1}};m.add(v)}}return C.m},A=(B,C)=>{var I;if(C.m&&!C.m.l.size&&!Array.from(C.m.t).some(T=>{var v;return(v=c(T).m)==null?void 0:v.d.has(B)})){const T=C.m.u;T&&p.add(T),delete C.m,(I=C.h)==null||I.call(C);for(const v of C.d.keys()){const L=A(v,c(v));L==null||L.t.delete(B)}return}return C.m},N={get:j,set:b,sub:(B,C)=>{const I=c(B),v=S(B,I).l;return v.add(C),h(),()=>{v.delete(C),A(B,I),h()}},unstable_derive:B=>buildStore(...B(...o))};return N},createStore=()=>{const o=new WeakMap;return buildStore(r=>o.get(r),(r,a)=>o.set(r,a).get(r),(r,...a)=>r.read(...a),(r,...a)=>r.write(...a),(r,...a)=>{var i;return(i=r.unstable_onInit)==null?void 0:i.call(r,...a)},(r,...a)=>{var i;return(i=r.onMount)==null?void 0:i.call(r,...a)})};let defaultStore;const getDefaultStore=()=>(defaultStore||(defaultStore=createStore()),defaultStore),RESET=Symbol(""),getCached$1=(o,n,r)=>(n.has(r)?n:n.set(r,o())).get(r),cache1$2=new WeakMap,memo2$1=(o,n,r)=>{const a=getCached$1(()=>new WeakMap,cache1$2,n);return getCached$1(o,a,r)},cacheKeyForEmptyKeyExtractor={},isWritable=o=>!!o.write,isFunction=o=>typeof o=="function";function splitAtom(o,n){return memo2$1(()=>{const r=new WeakMap,a=(u,c)=>{let x=r.get(u);if(x)return x;const d=c&&r.get(c),p=[],m=[];return u.forEach((h,f)=>{const g=f;m[f]=g;const j=d&&d.atomList[d.keyList.indexOf(g)];if(j){p[f]=j;return}const R=w=>{const y=w(i),b=w(o),S=a(b,y==null?void 0:y.arr).keyList.indexOf(g);if(S<0||S>=b.length){const A=u[a(u).keyList.indexOf(g)];if(A)return A;throw new Error("splitAtom: index out of bounds for read")}return b[S]},_=(w,y,b)=>{const E=w(i),S=w(o),D=a(S,E==null?void 0:E.arr).keyList.indexOf(g);if(D<0||D>=S.length)throw new Error("splitAtom: index out of bounds for write");const k=isFunction(b)?b(S[D]):b;Object.is(S[D],k)||y(o,[...S.slice(0,D),k,...S.slice(D+1)])};p[f]=isWritable(o)?atom(R,_):atom(R)}),d&&d.keyList.length===m.length&&d.keyList.every((h,f)=>h===m[f])?x=d:x={arr:u,atomList:p,keyList:m},r.set(u,x),x},i=atom(u=>{const c=u(i),x=u(o);return a(x,c==null?void 0:c.arr)});i.init=void 0;const l=isWritable(o)?atom(u=>u(i).atomList,(u,c,x)=>{switch(x.type){case"remove":{const d=u(l).indexOf(x.atom);if(d>=0){const p=u(o);c(o,[...p.slice(0,d),...p.slice(d+1)])}break}case"insert":{const d=x.before?u(l).indexOf(x.before):u(l).length;if(d>=0){const p=u(o);c(o,[...p.slice(0,d),x.value,...p.slice(d)])}break}case"move":{const d=u(l).indexOf(x.atom),p=x.before?u(l).indexOf(x.before):u(l).length;if(d>=0&&p>=0){const m=u(o);d<p?c(o,[...m.slice(0,d),...m.slice(d+1,p),m[d],...m.slice(p)]):c(o,[...m.slice(0,p),m[d],...m.slice(p,d),...m.slice(d+1)])}break}}}):atom(u=>u(i).atomList);return l},o,cacheKeyForEmptyKeyExtractor)}const isPromiseLike$1=o=>typeof(o==null?void 0:o.then)=="function";function createJSONStorage(o=()=>{try{return window.localStorage}catch{return}},n){var r;let a,i;const l={getItem:(x,d)=>{var p,m;const h=g=>{if(g=g||"",a!==g){try{i=JSON.parse(g,n==null?void 0:n.reviver)}catch{return d}a=g}return i},f=(m=(p=o())==null?void 0:p.getItem(x))!=null?m:null;return isPromiseLike$1(f)?f.then(h):h(f)},setItem:(x,d)=>{var p;return(p=o())==null?void 0:p.setItem(x,JSON.stringify(d,void 0))},removeItem:x=>{var d;return(d=o())==null?void 0:d.removeItem(x)}},u=x=>(d,p,m)=>x(d,h=>{let f;try{f=JSON.parse(h||"")}catch{f=m}p(f)});let c;try{c=(r=o())==null?void 0:r.subscribe}catch{}return!c&&typeof window<"u"&&typeof window.addEventListener=="function"&&window.Storage&&(c=(x,d)=>{if(!(o()instanceof window.Storage))return()=>{};const p=m=>{m.storageArea===o()&&m.key===x&&d(m.newValue)};return window.addEventListener("storage",p),()=>{window.removeEventListener("storage",p)}}),c&&(l.subscribe=u(c)),l}const defaultStorage=createJSONStorage();function atomWithStorage(o,n,r=defaultStorage,a){const i=atom(n);return i.onMount=u=>{u(r.getItem(o,n));let c;return r.subscribe&&(c=r.subscribe(o,u,n)),c},atom(u=>u(i),(u,c,x)=>{const d=typeof x=="function"?x(u(i)):x;return d===RESET?(c(i,n),r.removeItem(o)):d instanceof Promise?d.then(p=>(c(i,p),r.setItem(o,p))):(c(i,d),r.setItem(o,d))})}const StoreContext=React.createContext(void 0),useStore=o=>React.useContext(StoreContext)||getDefaultStore(),isPromiseLike=o=>typeof(o==null?void 0:o.then)=="function",attachPromiseMeta=o=>{o.status="pending",o.then(n=>{o.status="fulfilled",o.value=n},n=>{o.status="rejected",o.reason=n})},use=React.use||(o=>{if(o.status==="pending")throw o;if(o.status==="fulfilled")return o.value;throw o.status==="rejected"?o.reason:(attachPromiseMeta(o),o)}),continuablePromiseMap=new WeakMap,createContinuablePromise=o=>{let n=continuablePromiseMap.get(o);return n||(n=new Promise((r,a)=>{let i=o;const l=x=>d=>{i===x&&r(d)},u=x=>d=>{i===x&&a(d)},c=x=>{"onCancel"in x&&typeof x.onCancel=="function"&&x.onCancel(d=>{isPromiseLike(d)?(continuablePromiseMap.set(d,n),i=d,d.then(l(d),u(d)),c(d)):r(d)})};o.then(l(o),u(o)),c(o)}),continuablePromiseMap.set(o,n)),n};function useAtomValue(o,n){const r=useStore(),[[a,i,l],u]=React.useReducer(d=>{const p=r.get(o);return Object.is(d[0],p)&&d[1]===r&&d[2]===o?d:[p,r,o]},void 0,()=>[r.get(o),r,o]);let c=a;if((i!==r||l!==o)&&(u(),c=r.get(o)),React.useEffect(()=>{const d=r.sub(o,()=>{u()});return u(),d},[r,o,void 0]),React.useDebugValue(c),isPromiseLike(c)){const d=createContinuablePromise(c);return use(d)}return c}function useSetAtom(o,n){const r=useStore();return React.useCallback((...i)=>r.set(o,...i),[r,o])}function useAtom(o,n){return[useAtomValue(o),useSetAtom(o)]}const 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 historyStatesAtom=jotai.atom({undoCount:0,redoCount:0});historyStatesAtom.debugLabel="historyStatesAtom";const inlineEditingActiveAtom=jotai.atom("");inlineEditingActiveAtom.debugLabel="inlineEditingActiveAtom";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=atomWithStorage("codeEditorHeight",500);codeEditorHeightAtom.debugLabel="codeEditorHeightAtom";const xShowBlocksAtom=jotai.atom([]);xShowBlocksAtom.debugLabel="xShowBlocksAtom";const selectedLibraryAtom=atomWithStorage("_selectedLibrary",null);selectedLibraryAtom.debugLabel="selectedLibraryAtom";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;class Content extends React.Component{componentDidMount(){this.props.contentDidMount()}componentDidUpdate(){this.props.contentDidUpdate()}render(){return React.Children.only(this.props.children)}}class Frame extends React.Component{constructor(r,a){super(r,a);U(this,"setRef",r=>{this.nodeRef.current=r;const{forwardedRef:a}=this.props;typeof a=="function"?a(r):a&&(a.current=r)});U(this,"handleLoad",()=>{clearInterval(this.loadCheck),this.state.iframeLoaded||this.setState({iframeLoaded:!0})});U(this,"loadCheck",()=>setInterval(()=>{this.handleLoad()},500));this._isMounted=!1,this.nodeRef=React.createRef(),this.state={iframeLoaded:!1}}componentDidMount(){this._isMounted=!0,this.getDoc()&&this.nodeRef.current.contentWindow.addEventListener("DOMContentLoaded",this.handleLoad)}componentWillUnmount(){this._isMounted=!1,this.nodeRef.current.removeEventListener("DOMContentLoaded",this.handleLoad)}getDoc(){return this.nodeRef.current?this.nodeRef.current.contentDocument:null}getMountTarget(){const r=this.getDoc();return this.props.mountTarget?r.querySelector(this.props.mountTarget):r.body.children[0]}renderFrameContents(){if(!this._isMounted)return null;const r=this.getDoc();if(!r)return null;const a=this.props.contentDidMount,i=this.props.contentDidUpdate,l=r.defaultView||r.parentView,u=jsxRuntime.jsxRuntimeExports.jsx(Content,{contentDidMount:a,contentDidUpdate:i,children:jsxRuntime.jsxRuntimeExports.jsx(FrameContextProvider,{value:{document:r,window:l},children:jsxRuntime.jsxRuntimeExports.jsx("div",{className:"frame-content",children:this.props.children})})}),c=this.getMountTarget();return[ReactDOM.createPortal(this.props.head,this.getDoc().head),ReactDOM.createPortal(u,c)]}render(){const r={...this.props,srcDoc:this.props.initialContent,children:void 0};return delete r.head,delete r.initialContent,delete r.mountTarget,delete r.contentDidMount,delete r.contentDidUpdate,delete r.forwardedRef,jsxRuntime.jsxRuntimeExports.jsx("iframe",{...r,ref:this.setRef,onLoad:this.handleLoad,children:this.state.iframeLoaded&&this.renderFrameContents()})}}U(Frame,"defaultProps",{style:{},head:null,children:void 0,mountTarget:void 0,contentDidMount:()=>{},contentDidUpdate:()=>{},initialContent:'<!DOCTYPE html><html><head></head><body><div class="frame-root"></div></body></html>'});const ChaiFrame=React.forwardRef((o,n)=>jsxRuntime.jsxRuntimeExports.jsx(Frame,{...o,forwardedRef:n})),canAcceptChildBlock=(o,n)=>{if(!o)return!0;const r=runtime.getRegisteredChaiBlock(o);return r&&lodashEs.has(r,"canAcceptBlock")?r.canAcceptBlock(n):!1},canAddChildBlock=o=>{const n=runtime.getRegisteredChaiBlock(o);return n?lodashEs.has(n,"canAcceptBlock"):!1},canBeNestedInside=(o,n)=>{const r=runtime.getRegisteredChaiBlock(n);return r&&lodashEs.has(r,"canBeNested")?r.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:r})=>{const a=lodashEs.get(n,"data._type",""),i=lodashEs.get(r,"data._type","");return canAcceptChildBlock(i,a)};function duplicateBlocks(o,n,r){const a=lodashEs.filter(o,l=>l._parent===n),i=[];for(let l=0;l<a.length;l++){const u=getSlots(a[l]);if(Object.keys(u).length>0&&Object.keys(u).forEach(c=>{a[l][c]=`slot:${iconBase.generateUUID()}`}),lodashEs.filter(o,{_parent:a[l]._id}).length>0){const c=iconBase.generateUUID();i.push({...a[l],oldId:a[l]._id,_id:c,_parent:r}),i.push(lodashEs.flatten(duplicateBlocks(o,a[l]._id,c)))}else i.push({...a[l],oldId:a[l]._id,_id:iconBase.generateUUID(),_parent:r})}return lodashEs.flatten(i)}function convertToBlocksTree(o){const n={};o.forEach(a=>{n[a._id]={...a,children:[]}});const r=[];return o.forEach(a=>{if(a._parent){const i=n[a._parent];i&&i.children.push(n[a._id])}else r.push(n[a._id])}),r}const getSlots=o=>{const n={};return Object.keys(o).forEach(r=>{lodashEs.isString(o[r])&&o[r].startsWith("slot")&&(n[r]=o[r].replace("slot:",""))}),n},getDuplicatedBlocks=(o,n,r=null)=>{let a=lodashEs.find(o,{_id:n});a={...a,oldId:a._id,_id:iconBase.generateUUID()},r!==(a==null?void 0:a._parent)&&(a={...a,_parent:r});const i=[a];lodashEs.filter(o,{_parent:n}).length>0&&i.push(lodashEs.flatten(duplicateBlocks(o,n,a._id)));const l=lodashEs.flatten(i);return lodashEs.map(l,u=>{const c=u,x=getSlots(c);return Object.keys(x).length>0&&Object.keys(x).forEach(d=>{const p=lodashEs.find(l,{oldId:x[d].replace("slot:","")});c[d]=`slot:${p._id}`}),lodashEs.omit(c,["global","oldId"])})},presentBlocksAtom=jotai.atom([]);presentBlocksAtom.debugLabel="presentBlocksAtom";const treeDSBlocks=jotai.atom(o=>{const n=o(presentBlocksAtom);return convertToBlocksTree([...n])});treeDSBlocks.debugLabel="treeDSBlocks";presentBlocksAtom.debugLabel="presentBlocksAtom";const pageBlocksAtomsAtom=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,r=>lodashEs.has(r,"blockId"))});globalBlocksAtom.debugLabel="globalBlocksAtom";const selectedBlockIdsAtom=jotai.atom([]);selectedBlockIdsAtom.debugLabel="selectedBlockIdsAtom";const selectedBlocksAtom=jotai.atom(o=>{const n=o(presentBlocksAtom),r=o(selectedBlockIdsAtom);return lodashEs.map(lodashEs.filter(n,({_id:a})=>lodashEs.includes(r,a)),a=>({...a}))});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 getParentId=o=>lodashEs.get(o,"_parent",null),selectedBlocksParentsAtom=jotai.atom(o=>{const n=o(selectedBlocksAtom),r=lodashEs.map(n,getParentId);return lodashEs.filter(o(presentBlocksAtom),a=>lodashEs.includes(r,a._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=atomWithStorage("styleBreakpoint","xs");styleBreakpointAtom.debugLabel="styleBreakpointAtom";const useSelectedBlocksDisplayChild=()=>({flexChild:jotai.useAtomValue(selectedBlockFlexChildAtom),gridChild:jotai.useAtomValue(selectedBlockGridChildAtom)}),useSelectedBlock=()=>jotai.useAtomValue(selectedBlockAtom),selectedBlockHierarchy=jotai.atom(o=>{const n=o(selectedBlockAtom),r=o(presentBlocksAtom);let a=n;const i=[n];do{const l=r.find(({_id:u})=>u===(a==null?void 0:a._parent));a=l,l&&i.push(l)}while(a!=null&&a._parent);return i}),useSelectedBlockHierarchy=()=>lodashEs.compact(jotai.useAtomValue(selectedBlockHierarchy)),useSelectedBlockIds=()=>{const[o,n]=jotai.useAtom(selectedBlockIdsAtom),r=React.useCallback(a=>{n(i=>lodashEs.includes(i,a)?lodashEs.without(i,a):[...i,a])},[n]);return[o,n,r]};var undomanager={exports:{}},hasRequiredUndomanager;function requireUndomanager(){return hasRequiredUndomanager||(hasRequiredUndomanager=1,function(o){(function(){function n(a,i,l){return a.splice(i,!l||1+l-i+(!(l<0^i>=0)&&(l<0||-1)*a.length)),a.length}let r=function(){let a=[],i=-1,l=0,u=!1,c;function x(d,p){return!d||typeof d[p]!="function"?this:(u=!0,d[p](),u=!1,this)}return{add:function(d){return u?this:(a.splice(i+1,a.length-i),a.push(d),l&&a.length>l&&n(a,0,-(l+1)),i=a.length-1,c&&c(),this)},setCallback:function(d){c=d},undo:function(){let d=a[i];if(!d)return this;const p=d.groupId;for(;d.groupId===p&&(x(d,"undo"),i-=1,d=a[i],!(!d||!d.groupId)););return c&&c(),this},redo:function(){let d=a[i+1];if(!d)return this;const p=d.groupId;for(;d.groupId===p&&(x(d,"redo"),i+=1,d=a[i+1],!(!d||!d.groupId)););return c&&c(),this},clear:function(){let d=a.length;a=[],i=-1,c&&d>0&&c()},hasUndo:function(){return i!==-1},hasRedo:function(){return i<a.length-1},getCommands:function(d){return d?a.filter(p=>p.groupId===d):a},getIndex:function(){return i},setLimit:function(d){l=d}}};o.exports?o.exports=r:window.UndoManager=r})()}(undomanager)),undomanager.exports}var undomanagerExports=requireUndomanager();const UndoManager=ChaiThemeFn.getDefaultExportFromCjs(undomanagerExports),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)});function getBlocksTree(o){return convertToBlocksTree(o)}const nestedToFlatArray=(o,n)=>lodashEs.flatten(o.map(r=>{if(r=n?{...r,_parent:n}:{...r},r.children){const a=[...r.children];return delete r.children,lodashEs.flatten([r,...nestedToFlatArray(a,r._id)])}return r}));function setProjectBlocksInMemory(o,n=!1){for(let r=0;r<o.length;r++){const a=o[r];a.global&&!n?o[r]={type:"GlobalBlock",blockId:a.blockId,_parent:lodashEs.get(a,"_parent",null),_id:a._id}:a.children&&a.children.length&&setProjectBlocksInMemory(a.children)}}function getInnerBlocks(o){let n=[],r=lodashEs.filter(o,{type:"GlobalBlock"});return r.length>0&&(r=lodashEs.map(r,getPBlocks),lodashEs.each(r,a=>{n=[...n,...getSingleBlock(a)]})),n}function getSingleBlock(o){let n=[];const r=lodashEs.get(lodashEs.first(o),"_parent",null);lodashEs.set(lodashEs.first(o),"_parent",null);const a=[flatToNestedInstance.convert(clone(o))];setProjectBlocksInMemory(a,!0);let i=nestedToFlatArray(a,o[0]._id);return i=lodashEs.set(i,"0._parent",r),n=[...n,i,...getInnerBlocks(i)],n}function getPBlocks(o){const n=lodashEs.find(FLAT_ARRAY,{_id:o._id});if(!n)return[];const r=[n],a=lodashEs.filter(FLAT_ARRAY,{_parent:o._id});return a.length?lodashEs.flatten([...r,...lodashEs.flatten(lodashEs.map(a,getPBlocks))]):lodashEs.flatten(r)}const clone=o=>JSON.parse(JSON.stringify(o));let FLAT_ARRAY=[];function splitPageBlocks(o){FLAT_ARRAY=o;const n=getBlocksTree(clone(o));setProjectBlocksInMemory(n);const r=nestedToFlatArray(n,null),a=getInnerBlocks(r),i={};return lodashEs.each(a,l=>lodashEs.set(i,lodashEs.first(l).blockId,l)),[r,i]}const useGetPageData=()=>{const[o]=useBrandingOptions(),{currentPage:n}=useCurrentPage(),[r]=useBlocksStore();return React.useCallback(()=>{const a=lodashEs.map(r,l=>lodashEs.omit(l,["expanded","order","title","siblings","tempClasses"])),[i=[]]=splitPageBlocks(a);return{currentPage:n,blocks:i}},[o,n,r])},chaiBuilderPropsAtom=jotai.atom(null);chaiBuilderPropsAtom.debugLabel="chaiBuilderPropsAtom";const chaiExternalDataAtom=jotai.atom({});chaiExternalDataAtom.debugLabel="chaiExternalDataAtom";const useBuilderProp=(o,n=void 0)=>{const r=jotai.useAtomValue(chaiBuilderPropsAtom);return lodashEs.get(r,o,n)},getDefaultThemeValues=(o=ChaiThemeFn.defaultThemeOptions)=>{const n={};return o.fontFamily&&(n.fontFamily=Object.entries(o.fontFamily).reduce((r,[a,i])=>({...r,[a.replace("font-","")]:i}),{})),n.borderRadius=o.borderRadius,o.colors&&(n.colors=o.colors.reduce((r,a)=>(Object.entries(a.items).forEach(([i,l])=>{r[i]=l}),r),{})),n},chaiThemeValuesAtom=jotai.atom({}),useTheme=()=>{const o=useThemeOptions(),n=React.useMemo(()=>getDefaultThemeValues(o),[o]),r=useBuilderProp("theme",{}),[a,i]=jotai.useAtom(chaiThemeValuesAtom);return[React.useMemo(()=>({...n,...!lodashEs.isEmpty(r)&&r,...!lodashEs.isEmpty(a)&&a}),[n,r,a]),i]},useThemeOptions=()=>{const o=useBuilderProp("themeOptions",r=>r);return React.useMemo(()=>o(ChaiThemeFn.defaultThemeOptions),[o])},rightPanelAtom=jotai.atom("block"),useRightPanel=()=>jotai.useAtom(rightPanelAtom),builderSaveStateAtom=jotai.atom("SAVED");builderSaveStateAtom.debugLabel="builderSaveStateAtom";const useSavePage=()=>{const[o,n]=jotai.useAtom(builderSaveStateAtom),r=useBuilderProp("onSave",async c=>{}),a=useBuilderProp("onSaveStateChange",lodashEs.noop),i=useGetPageData(),[l]=useTheme();return{savePage:web.useThrottledCallback(async(c=!1)=>{n("SAVING"),a("SAVING");const x=i();return await r({autoSave:c,blocks:x.blocks,theme:l}),setTimeout(()=>{n("SAVED"),a("SAVED")},100),!0},[i,n,l,r,a],3e3),saveState:o,setSaveState:n}},undoManager=new UndoManager;undoManager.setLimit(50);const useUndoManager=()=>{const[,o]=jotai.useAtom(builderSaveStateAtom),n=useBuilderProp("onSaveStateChange",lodashEs.noop);return React.useEffect(()=>(undoManager.setCallback(()=>{o("UNSAVED"),n("UNSAVED")}),()=>{undoManager.setCallback(lodashEs.noop)}),[]),{add:undoManager.add,undo:undoManager.undo,redo:undoManager.redo,hasRedo:undoManager.hasRedo,hasUndo:undoManager.hasUndo,clear:undoManager.clear}},broadcastChannel=new BroadcastChannel("chaibuilder"),useBroadcastChannel=()=>{const o=useBuilderProp("pageId","chaibuilder_page");return{postMessage:web.useDebouncedCallback(r=>broadcastChannel.postMessage({...r,pageId:o}),[o],200)}},useUnmountBroadcastChannel=()=>{const[,o]=useBlocksStore(),n=useBuilderProp("pageId","chaibuilder_page");React.useEffect(()=>(broadcastChannel.onmessageerror=r=>{console.log("error",r)},broadcastChannel.onmessage=r=>{r.data.type==="blocks-updated"&&r.data.pageId===n&&o(r.data.blocks)},()=>{broadcastChannel.onmessage=null,broadcastChannel.onmessageerror=null}),[o,n])},removeNestedBlocks=(o,n)=>{const r=[],a=lodashEs.filter(o,i=>lodashEs.includes(n,i._id)||lodashEs.includes(n,i._parent)?(r.push(i._id),!1):!0);return lodashEs.isEmpty(r)?a:removeNestedBlocks(a,r)},useRemoveBlocks=()=>{const[o]=useBlocksStore(),[n,r]=useSelectedBlockIds(),{setNewBlocks:a}=useBlocksStoreUndoableActions();return React.useCallback(i=>{var u;const l=((u=lodashEs.find(o,{_id:i[0]}))==null?void 0:u._parent)||null;a(removeNestedBlocks(o,i)),setTimeout(()=>r(l?[l]:[]),200)},[o,r,n])};function insertBlocksAtPosition(o,n,r,a){let i=o.filter(c=>!c._parent);r&&(i=o.filter(c=>c._parent===r));const l=!isNaN(a)||a>-1?Math.min(a,i.length):i.length;let u=o.length;for(let c=0,x=0;c<o.length;c++)if(o[c]._parent===r){if(x===l){u=c;break}x++}return!r&&a!==void 0&&a>=i.length&&(u=o.length),[...o.slice(0,u),...n,...o.slice(u)]}function flattenTree(o){let n=[];return o.walk(r=>(delete r.model.children,n.push(r.model),!0)),n}function findNodeById(o,n){return o.first(r=>r.model._id===n)||null}function moveNode(o,n,r,a){const i=findNodeById(o,n),l=findNodeById(o,r);if(i&&l){i.drop(),l.children||(l.model.children=[]);try{l.addChildAtIndex(i,a)}catch(u){return console.error("Error adding child to parent:",u),!1}return!0}return!1}function moveBlocksWithChildren(o,n,r,a){if(!n)return o;r=r||"root";const l=new TreeModel().parse({_id:"root",children:getBlocksTree(o)});if(moveNode(l,n,r,a)){const u=flattenTree(l),c=u.find(x=>x._id===n);return c&&(c._parent=r==="root"?null:r),u.shift(),u}return o}const useBlocksStoreManager=()=>{const[,o]=useBlocksStore(),{postMessage:n}=useBroadcastChannel();return{setNewBlocks:r=>{o(r),n({type:"blocks-updated",blocks:r})},addBlocks:(r,a,i)=>{o(l=>{const u=insertBlocksAtPosition(l,r,a,i);return n({type:"blocks-updated",blocks:u}),u})},removeBlocks:r=>{o(a=>{const i=removeNestedBlocks(a,r);return n({type:"blocks-updated",blocks:i}),i})},moveBlocks:(r,a,i)=>{o(l=>{let u=l;for(let c=0;c<r.length;c++)u=moveBlocksWithChildren(u,r[c],a,i);return n({type:"blocks-updated",blocks:u}),u})},updateBlocksProps:r=>{o(a=>{const i=r.map(u=>u._id),l=a.map(u=>{if(i.includes(u._id)){const c=lodashEs.find(r,{_id:u._id});return{...u,...lodashEs.omit(c,"_id")}}return u});return n({type:"blocks-updated",blocks:l}),l})}}},useBlocksStore=()=>jotai.useAtom(presentBlocksAtom),useBlocksStoreUndoableActions=()=>{const{add:o}=useUndoManager(),[n]=useBlocksStore(),{setNewBlocks:r,addBlocks:a,removeBlocks:i,moveBlocks:l,updateBlocksProps:u}=useBlocksStoreManager();return{moveBlocks:(g,j,R)=>{const _=lodashEs.map(g,y=>{const E=n.find(D=>D._id===y)._parent||null,A=n.filter(D=>E?D._parent===E:!D._parent).map(D=>D._id).indexOf(y);return{_id:y,oldParent:E,oldPosition:A}}),w=_.find(({_id:y})=>y===g[0]);w&&w.oldParent===j&&w.oldPosition===R||(l(g,j,R),o({undo:()=>lodashEs.each(_,({_id:y,oldParent:b,oldPosition:E})=>{l([y],b,E)}),redo:()=>l(g,j,R)}))},addBlocks:(g,j,R)=>{a(g,j,R),o({undo:()=>i(lodashEs.map(g,"_id")),redo:()=>a(g,j,R)})},removeBlocks:g=>{var w;const j=(w=lodashEs.first(g))==null?void 0:w._parent,_=n.filter(y=>j?y._parent===j:!y._parent).indexOf(lodashEs.first(g));i(lodashEs.map(g,"_id")),o({undo:()=>a(g,j,_),redo:()=>i(lodashEs.map(g,"_id"))})},updateBlocks:(g,j,R)=>{let _=[];if(R)_=lodashEs.map(g,w=>({_id:w,...R}));else{const w=lodashEs.keys(j);_=lodashEs.map(g,y=>{const b=n.find(S=>S._id===y),E={_id:y};return lodashEs.each(w,S=>E[S]=b[S]),E})}u(lodashEs.map(g,w=>({_id:w,...j}))),o({undo:()=>u(_),redo:()=>u(lodashEs.map(g,w=>({_id:w,...j})))})},updateBlocksRuntime:(g,j)=>{u(lodashEs.map(g,R=>({_id:R,...j})))},setNewBlocks:g=>{r(g),o({undo:()=>r(n),redo:()=>r(g)})},updateMultipleBlocksProps:g=>{let j=[];j=lodashEs.map(g,R=>{const _=lodashEs.keys(R),w=n.find(b=>b._id===R._id),y={};return lodashEs.each(_,b=>y[b]=w[b]),y}),u(g),o({undo:()=>u(j),redo:()=>u(g)})}}},useAddBlock=()=>{const[o]=useBlocksStore(),[,n]=useSelectedBlockIds(),{addBlocks:r}=useBlocksStoreUndoableActions(),a=React.useCallback((l,u,c)=>{var h;for(let f=0;f<l.length;f++){const{_id:g}=l[f];l[f]._id=iconBase.generateUUID();const j=lodashEs.filter(l,{_parent:g});for(let R=0;R<j.length;R++)j[R]._parent=l[f]._id}const x=lodashEs.first(l);let d,p;return u&&(d=lodashEs.find(o,{_id:u}),l[0]._parent=u,p=u),!(d?canAcceptChildBlock(d==null?void 0:d._type,x._type):!0)&&d&&(l[0]._parent=d._parent,p=d._parent),r(l,p,c),n([(h=lodashEs.first(l))==null?void 0:h._id]),lodashEs.first(l)},[r,o,n]);return{addCoreBlock:React.useCallback((l,u,c)=>{if(lodashEs.has(l,"blocks")){const j=l.blocks;return a(j,u,c)}const x=iconBase.generateUUID(),d=runtime.getDefaultBlockProps(l.type),p={_type:l.type,_id:x,...d};let m,h;return u&&(m=lodashEs.find(o,{_id:u}),p._parent=u,h=u),!canAcceptChildBlock(m==null?void 0:m._type,p._type)&&m&&(p._parent=m._parent,h=m._parent),r([p],h,c),n([p._id]),p},[r,a,o,n]),addPredefinedBlock:a}},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-no-wrap","whitespace-pre","whitespace-pre-line","whitespace-pre-wrap"],regExp:"whitespace-(normal|no-wrap|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:["animation-none","animation-spin","animation-ping"],regExp:"animation-(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,r=>`${n}-${o}-${r}`)))))]),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 r=[];if(o.colors){const a=lodashEs.flattenDeep(lodashEs.map(o.colors,({items:i})=>lodashEs.keys(i)));r=lodashEs.flattenDeep(lodashEs.map(a,i=>lodashEs.flatten(lodashEs.map(colorKeys,l=>`${l}-${i}`))))}return o.fontFamily&&(r=[...r,...lodashEs.map(lodashEs.keys(o.fontFamily),a=>`${a}`)]),lodashEs.map(r,a=>({name:a}))},[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 i=lodashEs.flattenDeep(lodashEs.map(o.colors,({items:l})=>lodashEs.keys(l)));lodashEs.each(CLASSES_LIST,(l,u)=>{lodashEs.set(CLASSES_LIST,`${u}.regExp`,l.regExp.replace("__THEME_COLORS_REGEXP__",i.join("|")))})}return CLASSES_LIST},[o]),r=React.useCallback((i,l)=>{const u=lodashEs.get(n,`${i}.regExp`,"");return l.match(new RegExp(u))},[n]),a=React.useCallback((i,l=[])=>lodashEs.get(n,`${i}.classes`,l),[n]);return{match:r,getClasses:a}};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,a=>`${a}:`).join("|"),r=new RegExp(n,"g");return lodashEs.get(r.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 r in CLASSES_LIST){const a=lodashEs.get(CLASSES_LIST,`${r}.regExp`,"");if(new RegExp(a,"g").test(o)){n=r,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){const n=o.split(" ").map(constructClassObject),r=["xs","sm","md","lg","xl","2xl"];return n.sort((a,i)=>r.indexOf(a.mq)-r.indexOf(i.mq)).map(a=>a.fullCls).join(" ")}function removeDuplicateClasses(o){if(!o)return"";const n=["xs","sm","md","lg","xl","2xl"],r=o.split(" ").map(constructClassObject);let a=o;if(r.length===1)return r[0].fullCls;for(const i of r){const l=i.property,u=n.indexOf(i.mq);for(let c=u+1;c<n.length;c++){const x=n[c],d=r.find(p=>p.property===l&&p.mq===x);if(d&&d.cls===i.cls)a=a.replace(d.fullCls,"");else if(d&&d.cls!==i.cls)break}}return a.trim()}const selectedStylingBlocksAtom=jotai.atom([]);selectedStylingBlocksAtom.debugLabel="selectedStylingBlocksAtom";const useSelectedStylingBlocks=()=>jotai.useAtom(selectedStylingBlocksAtom),getSplitClasses$1=o=>{const n=o.replace(STRINGS.STYLES_KEY,"").split(",");return{baseClasses:n[0],classes:n[1]}},addClassesToBlocksAtom=jotai.atom(null,(o,n,{blockIds:r,newClasses:a})=>{const i=lodashEs.filter(o(pageBlocksAtomsAtom),u=>r.includes(o(u)._id)),l=lodashEs.first(o(selectedStylingBlocksAtom));return lodashEs.map(i,u=>{const c=o(u),x=lodashEs.get(c,l.prop,`${STRINGS.STYLES_KEY},`),{classes:d}=getSplitClasses$1(x);return{ids:[c._id],props:{[l.prop]:`${STRINGS.STYLES_KEY},${orderClassesByBreakpoint(removeDuplicateClasses(tailwindMerge.twMerge(d,a)))}`}}})}),useAddClassesToBlocks=()=>{const o=jotai.useSetAtom(addClassesToBlocksAtom),{updateBlocks:n,updateBlocksRuntime:r}=useBlocksStoreUndoableActions();return React.useCallback((a,i,l=!1)=>{const u=o({blockIds:a,newClasses:i});if(!l){r(a,u[0].props);return}n(a,u[0].props)},[o,n,r])},useStylingBreakpoint=()=>jotai.useAtom(styleBreakpointAtom),canvasWidthAtom=atomWithStorage("canvasWidth",800),canvasBreakpointAtom=jotai.atom(o=>{const n=o(canvasWidthAtom);return iconBase.getBreakpointValue(n).toLowerCase()}),useCanvasWidth=()=>{const[o,n]=jotai.useAtom(canvasWidthAtom),r=jotai.useAtomValue(canvasBreakpointAtom),[a,i]=useStylingBreakpoint();return React.useEffect(()=>{a!=="xs"&&i(r)},[r,a,i]),[o,r,n]},canvasZoomAtom=atomWithStorage("canvasZoom",100),useCanvasZoom=()=>jotai.useAtom(canvasZoomAtom),cutBlockIdsAtom=jotai.atom([]),useCutBlockIds=()=>{const[o,n]=jotai.useAtom(cutBlockIdsAtom),r=jotai.useSetAtom(copiedBlockIdsAtom),a=React.useCallback(i=>{n(i),r([])},[n,r]);return[o,a]},copiedBlockIdsAtom=jotai.atom([]),useCopyBlockIds=()=>{const[o]=useBlocksStore(),[n,r]=jotai.useAtom(copiedBlockIdsAtom),a=jotai.useSetAtom(cutBlockIdsAtom),i=React.useCallback(async l=>{try{r(l),a([]);const u={_chai_copied_blocks:l.flatMap(c=>getDuplicatedBlocks(o,c,null))};await navigator.clipboard.writeText(JSON.stringify(u))}catch(u){console.error("Failed to copy blocks to clipboard:",u)}},[r,a,o]);return[n,i]},darkModeAtom=atomWithStorage("darkMode",!1),useDarkMode=()=>{const[o,n]=jotai.useAtom(darkModeAtom);return[o,n]},useDuplicateBlocks=()=>{const[o]=useBlocksStore(),[,n]=useSelectedBlockIds(),{addBlocks:r}=useBlocksStoreUndoableActions();return React.useCallback((a,i=null)=>{const l=[];lodashEs.each(a,u=>{const c=o.find(h=>h._id===u);i?i==="root"&&(i=null):i=c._parent;const p=lodashEs.filter(o,h=>lodashEs.isString(i)?h._parent===i:!h._parent).indexOf(c)+1,m=getDuplicatedBlocks(o,u,i);r(m,i,p),l.push(lodashEs.get(m,"0._id",""))}),n(l)},[o,n])},hiddenBlockIdsAtom=jotai.atom([]),useHiddenBlockIds=()=>{const[o,n]=jotai.useAtom(hiddenBlockIdsAtom),r=React.useCallback(a=>{n(i=>lodashEs.includes(i,a)?lodashEs.without(i,a):[...i,a])},[n]);return[o,n,r]},highlightBlockIdAtom=jotai.atom(""),useHighlightBlockId=()=>jotai.useAtom(highlightBlockIdAtom),useCanPaste=()=>{const[o]=useBlocksStore();return(n,r)=>{var l;const a=((l=lodashEs.find(o,{_id:r}))==null?void 0:l._type)||null,i=lodashEs.first(n.map(u=>{var c;return(c=lodashEs.find(o,{_id:u}))==null?void 0:c._type}));return canAcceptChildBlock(a,i)}},useMoveCutBlocks=()=>{const o=jotai.useAtomValue(presentBlocksAtom),{moveBlocks:n}=useBlocksStoreUndoableActions();return React.useCallback((r,a)=>{const i=Array.isArray(a)?a[0]:a;if(a==="root"){const l=o==null?void 0:o.filter(u=>!u._parent);n(r,null,(l==null?void 0:l.length)||0)}else{const l=o==null?void 0:o.filter(u=>u._parent===i);n(r,i,(l==null?void 0:l.length)||0)}},[n,o])},usePasteBlocks=()=>{const[o,n]=useCutBlockIds(),r=useMoveCutBlocks(),a=useCanPaste(),{toast:i}=contextMenu.useToast(),{addPredefinedBlock:l}=useAddBlock();return{canPaste:React.useCallback(async c=>{if(o.length>0)return a(o,c);try{const x=await navigator.clipboard.readText();if(x){const d=JSON.parse(x);return lodashEs.has(d,"_chai_copied_blocks")}}catch{return!1}return!1},[a,o]),pasteBlocks:React.useCallback(async c=>{const x=Array.isArray(c)?c[0]:c;if(!lodashEs.isEmpty(o)){r(o,c),n([]),await navigator.clipboard.writeText("");return}try{const d=await navigator.clipboard.readText();if(d){const p=JSON.parse(d);lodashEs.has(p,"_chai_copied_blocks")?l(p._chai_copied_blocks,x==="root"?null:x):i({title:"Error",description:"Nothing to paste"})}else i({title:"Error",description:"Nothing to paste"})}catch{i({title:"Error",description:"Failed to paste blocks from clipboard"})}},[o,l,r,n,i])}},previewModeAtom=jotai.atom(!1),usePreviewMode=()=>{const[o,n]=jotai.useAtom(previewModeAtom);return[o,n]},getSplitClasses=o=>{const n=o.replace(STRINGS.STYLES_KEY,"").split(",");return{baseClasses:n[0],classes:n[1]}},removeClassFromBlocksAtom=jotai.atom(null,(o,n,{blockIds:r,fullClasses:a})=>{const i=lodashEs.first(o(selectedStylingBlocksAtom)),l=lodashEs.filter(o(pageBlocksAtomsAtom),u=>r.includes(o(u)._id));return lodashEs.map(l,u=>{const c=o(u),x=a;let{classes:d,baseClasses:p}=getSplitClasses(lodashEs.get(c,i.prop,"styles:,"));return lodashEs.each(x,m=>{const h=m.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),f=new RegExp(`(^|\\s)${h}(?=\\s|$)`,"g");d=d.replace(f," ").replace(/\s+/g," ").trim();const g=lodashEs.first(m.split(":"));lodashEs.includes(["2xl","xl","lg","md","sm"],g)&&x.push(m.split(":").pop().trim())}),lodashEs.each(x,m=>{const h=m.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),f=new RegExp(`(^|\\s)${h}(?=\\s|$)`,"g");p=p.replace(f," ").replace(/\s+/g," ").trim()}),{ids:[c._id],props:{[i.prop]:`${STRINGS.STYLES_KEY}${p},${d}`}}})}),useRemoveClassesFromBlocks=()=>{const{updateBlocks:o}=useBlocksStoreUndoableActions(),n=jotai.useSetAtom(removeClassFromBlocksAtom);return React.useCallback((r,a)=>{const i=n({blockIds:r,fullClasses:a});o(r,i[0].props)},[n])},selectedBlockAllClassesAtom=jotai.atom(o=>{const n=lodashEs.first(o(selectedStylingBlocksAtom)),r=o(selectedBlockAtom);if(!n||n.blockId!==lodashEs.get(r,"_id",null))return[];const i=lodashEs.get(r,n.prop,`${STRINGS.STYLES_KEY},`).replace(STRINGS.STYLES_KEY,"").split(",").join(" ");return lodashEs.filter(lodashEs.map(i.trim().split(" "),constructClassObject),l=>!lodashEs.isNull(l))}),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),r=o(styleStateAtom),a=o(darkModeAtom),i=getQueries(n);let l=lodashEs.filter(o(selectedBlockAllClassesAtom),{mod:r});return lodashEs.startsWith(r,"_")||(l=lodashEs.filter(l,u=>i.includes(u.mq))),l=l.sort((u,c)=>MQ[u.mq]-MQ[c.mq]),a||(l=lodashEs.filter(l,{dark:!1})),l}),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),useStylingState=()=>jotai.useAtom(styleStateAtom),languageAtom=jotai.atom("");languageAtom.debugLabel="selectedLanguageAtom";const useLanguages=()=>{const o=useBuilderProp("languages",[]),n=useBuilderProp("fallbackLang","en"),[r,a]=jotai.useAtom(languageAtom),i=l=>{a(n===l?"":l)};return{languages:o==null?void 0:o.filter(l=>l!==n),fallbackLang:n,selectedLang:r,setSelectedLang:i}},updatePropsForLanguage=lodashEs.memoize((o,n,r)=>{const a=runtime.getRegisteredChaiBlock(lodashEs.get(r,"_type"));if(!a)return o;const i={...o};return lodashEs.forEach(lodashEs.keys(o),l=>{if(lodashEs.includes(lodashEs.get(a,"i18nProps",[]),l)&&!lodashEs.isEmpty(n)){const u=`${l}-${n}`;lodashEs.set(i,u,o[l]),lodashEs.unset(i,l)}}),i}),useUpdateBlocksProps=()=>{const{updateBlocks:o}=useBlocksStoreUndoableActions(),{selectedLang:n}=useLanguages(),r=useSelectedBlock();return React.useCallback((a,i,l)=>{const u=updatePropsForLanguage(i,n,r);o(a,u,l)},[n,r,o])},useUpdateMultipleBlocksProps=()=>{const{updateMultipleBlocksProps:o}=useBlocksStoreUndoableActions();return React.useCallback(n=>{o(n)},[o])},useFakeStreamEffect=()=>{const{updateBlocksRuntime:o}=useBlocksStoreUndoableActions();return React.useCallback(async(n,r,a=30)=>{const i=lodashEs.keys(lodashEs.omit(r,["_id"]));for(const l of i){const u=r[l];if(lodashEs.isString(u)){const c=lodashEs.chunk(u.split(""),12);let x="";o([n],{[l]:""});for(let d=0;d<c.length;d++)x+=c[d].join(""),o([n],{[l]:x}),await new Promise(p=>setTimeout(p,a))}}},[o])},useStreamMultipleBlocksProps=()=>{const{updateMultipleBlocksProps:o}=useBlocksStoreUndoableActions(),n=useFakeStreamEffect();return React.useCallback(async r=>{for(const a of r)await n(a._id,a);o(r)},[n,o])},useUpdateBlocksPropsRealtime=()=>{const{updateBlocksRuntime:o}=useBlocksStoreUndoableActions(),{selectedLang:n}=useLanguages(),r=useSelectedBlock();return React.useCallback((a,i)=>{const l=updatePropsForLanguage(i,n,r);o(a,l)},[n,r,o])},selectedBreakpointsAtom=atomWithStorage("selectedBreakpoints",["XS","MD","XL"]),useSelectedBreakpoints=()=>{const[o,n]=jotai.useAtom(selectedBreakpointsAtom);return[o,n]};let lastHighlighted=null;const useBlockHighlight=()=>{const[o]=jotai.useAtom(canvasIframeAtom),n=React.useMemo(()=>{var i;return(o==null?void 0:o.contentDocument)||((i=o==null?void 0:o.contentWindow)==null?void 0:i.document)},[o]);return{highlightBlock:i=>{if(lastHighlighted&&lastHighlighted.removeAttribute("data-highlighted"),typeof i!="string")i.setAttribute("data-highlighted","true"),lastHighlighted=i;else if(typeof i=="string"){const l=n.querySelector(`[data-block-id="${i}"]`);l&&(l.setAttribute("data-highlighted","true"),lastHighlighted=l)}else lastHighlighted=null},clearHighlight:()=>{lastHighlighted&&(lastHighlighted.removeAttribute("data-highlighted"),lastHighlighted=null)},lastHighlighted}},globalBlocksStoreAtom=atom({}),globalBlocksLoadingStateAtom=atom({}),useGlobalBlocksStore=()=>{const[o,n]=useAtom(globalBlocksStoreAtom),r=React.useCallback(i=>lodashEs.get(o,i==null?void 0:i.globalBlock,[]),[o]),a=React.useCallback(()=>{n({})},[n]);return{getGlobalBlocks:r,reset:a}},useWatchGlobalBlocks=()=>{const[o]=useBlocksStore(),[n,r]=useAtom(globalBlocksStoreAtom),[a,i]=useAtom(globalBlocksLoadingStateAtom),l=useBuilderProp("getGlobalBlockBlocks",async c=>[]),u=React.useMemo(()=>o.filter(x=>x._type==="GlobalBlock").filter(x=>x._type==="GlobalBlock").map(x=>x.globalBlock),[o]);React.useEffect(()=>{lodashEs.forEach(u,c=>{lodashEs.has(n,c)||lodashEs.get(a,`${c}.loading`,!1)||(i(x=>({...x,[c]:{loading:!0,error:null}})),l(c).then(x=>{r(d=>({...d,[c]:x})),i(d=>({...d,[c]:{loading:!1,error:null}}))}).catch(x=>{i(d=>({...d,[c]:{loading:!1,error:x.message}}))}))})},[l,n,u,a,r,i])},globalBlocksListAtom=atom({}),useGlobalBlocksList=()=>{const[o,n]=React.useState(!1),[r,a]=useAtom(globalBlocksListAtom),i=useBuilderProp("getGlobalBlocks",async()=>[]),l=React.useCallback(async()=>{n(!0);const u=await i();a(u),n(!1)},[i,a]);return React.useEffect(()=>{l()},[]),{data:r,isLoading:o,refetch:l}},useBuilderReset=()=>{const o=jotai.useSetAtom(historyStatesAtom),{clear:n}=useUndoManager(),[,r]=useSelectedBlockIds(),{clearHighlight:a}=useBlockHighlight(),[,i]=useSelectedStylingBlocks(),[,l]=useAtom(aiAssistantActiveAtom),{reset:u}=useGlobalBlocksStore();return()=>{r([]),i([]),a(),n(),l(!1),o({undoCount:0,redoCount:0}),u()}},useUILibraryBlocks=()=>({data:useBuilderProp("uiLibraries",[]),isLoading:!1}),useCopyToClipboard=()=>{const[o,n]=React.useState(null),r=React.useCallback(async a=>{if(!(navigator!=null&&navigator.clipboard))return console.warn("Clipboard not supported"),!1;try{return await navigator.clipboard.writeText(a),n(a),!0}catch(i){return console.warn("Copy failed",i),n(null),!1}},[]);return[o,r]},codeEditorAtom=jotai.atom(null),useCodeEditor=()=>jotai.useAtom(codeEditorAtom),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"};function getChildBlocks(o,n,r){r.push(lodashEs.find(o,{_id:n}));const a=lodashEs.filter(o,{_parent:n});for(const i of a)r.push(...getBlockWithChildren(i._id,o));return r}const getBlockWithChildren=(o,n)=>{let r=[];return r=lodashEs.flattenDeep([...r,...getChildBlocks(n,o,r)]),r},pickOnlyAIProps=(o,n)=>lodashEs.compact(o.map(r=>{const a=["_id","_type","_parent"],i=lodashEs.pick(r,a),l=runtime.getRegisteredChaiBlock(r._type),u={},c=lodashEs.get(l,"aiProps",[]);for(const x in r)a.includes(x)||c.includes(x)&&(u[x]=lodashEs.get(r,`${x}-${n}`,r[x]));return lodashEs.isEmpty(u)?!1:(lodashEs.has(i,"_parent")&&lodashEs.isEmpty(i._parent)&&delete i._parent,{...i,...u})})),addLangToPrompt=(o,n,r)=>!n||r!=="content"?o:`${o}. Generate content in ${lodashEs.get(LANGUAGES,n,n)} language.`,askAiProcessingAtom=jotai.atom(!1),useAskAi=()=>{const[o,n]=jotai.useAtom(askAiProcessingAtom),[r,a]=React.useState(null),i=useBuilderProp("askAiCallBack",null),l=useStreamMultipleBlocksProps(),u=useUpdateMultipleBlocksProps(),[c]=useBlocksStore(),{selectedLang:x,fallbackLang:d}=useLanguages(),p=x.length?x:d,m=(h,f)=>{const g=lodashEs.cloneDeep(f.find(j=>j._id===h));for(const j in g){const R=g[j];typeof R=="string"&&lodashEs.startsWith(R,STRINGS.STYLES_KEY)?g[j]=lodashEs.compact(lodashEs.flattenDeep(R.replace(STRINGS.STYLES_KEY,"").split(","))).join(" "):j!=="_id"&&delete g[j]}return g};return{askAi:React.useCallback(async(h,f,g,j)=>{if(i){n(!0),a(null);try{const R=x===d?"":x,_=h==="content"?pickOnlyAIProps(lodashEs.cloneDeep(getBlockWithChildren(f,c)),x):[m(f,c)],w=await i(h,addLangToPrompt(g,p,h),_,R),{blocks:y,error:b}=w;if(b){a(b);return}if(h==="styles"){const E=y.map(S=>{for(const A in S)A!=="_id"&&(S[A]=`${STRINGS.STYLES_KEY},${S[A]}`);return S});u(E)}else l(y);j&&j(w)}catch(R){a(R)}finally{n(!1),j&&j()}}},[i,n,x,d,c,p,u,l]),loading:o,error:r}},useAiAssistant=()=>{const[,o]=useRightPanel();return React.useCallback(n=>{o(n?"ai":"block")},[o])},wrapperBlockAtom=jotai.atom(o=>{var u;const n=o(presentBlocksAtom),r=o(selectedBlockIdsAtom),a=r.length===1?r[0]:null;if(!a)return null;const i=lodashEs.find(n,{_id:a});if(!i)return null;let l=i._parent;for(;l;){const c=lodashEs.find(n,{_id:l});if(!c)return null;if((u=runtime.getRegisteredChaiBlock(c._type))!=null&&u.wrapper)return c;l=c._parent}return null});wrapperBlockAtom.debugLabel="wrapperBlockAtom";const useWrapperBlock=()=>jotai.useAtomValue(wrapperBlockAtom),layoutVariantAtom=atomWithStorage("_layout_variant_mode","DUAL_SIDE_PANEL"),useLayoutVariant=()=>{const[o,n]=jotai.useAtom(layoutVariantAtom),r=useBuilderProp("layoutVariant","DUAL_SIDE_PANEL");return[o||r,n]},CHAI_BUILDER_EVENTS={OPEN_ADD_BLOCK:"OPEN_ADD_BLOCK",CLOSE_ADD_BLOCK:"CLOSE_ADD_BLOCK",SHOW_BLOCK_SETTINGS:"SHOW_BLOCK_SETTINGS"};class PubSub{constructor(){U(this,"subscribers",new Map)}subscribe(n,r){return this.subscribers.has(n)||this.subscribers.set(n,new Set),this.subscribers.get(n).add(r),()=>{const a=this.subscribers.get(n);a&&(a.delete(r),a.size===0&&this.subscribers.delete(n))}}publish(n,r){const a=this.subscribers.get(n);a&&a.forEach(i=>i(r))}}const pubsub=new PubSub,draggedBlockAtom=jotai.atom(null),dropTargetBlockIdAtom=jotai.atom(null),BlockActionLabel=({block:o,label:n})=>{const[,r]=useSelectedBlockIds(),[,a]=useHighlightBlockId(),[,i]=jotai.useAtom(draggedBlockAtom),l=flagged.useFeature("dnd");return jsxRuntime.jsxRuntimeExports.jsxs("div",{className:"mr-10 flex cursor-default items-center space-x-1 px-1",draggable:l?"true":"false",onDragStart:u=>{u.dataTransfer.setData("text/plain",JSON.stringify(lodashEs.pick(o,["_id","_type","_name"]))),i(o),setTimeout(()=>{r([]),a(null)},200)},children:[jsxRuntime.jsxRuntimeExports.jsx(reactIcons.DragHandleDots2Icon,{}),n]})},BlockFloatingSelector=({selectedBlockElement:o,block:n})=>{const r=useRemoveBlocks(),a=useDuplicateBlocks(),[,i]=useSelectedBlockIds(),[,l]=useHighlightBlockId(),[,u]=useSelectedStylingBlocks(),[c]=jotai.useAtom(inlineEditingActiveAtom),{floatingStyles:x,refs:d,update:p}=reactDom.useFloating({placement:"top-start",middleware:[reactDom.shift(),dom.flip()],elements:{reference:o}});web.useResizeObserver(o,()=>p(),o!==null);const m=lodashEs.get(n,"_parent",null),h=lodashEs.isEmpty(lodashEs.get(n,"_name",""))?lodashEs.get(n,"_type",""):lodashEs.get(n,"_name","");return!o||!n||c?null:jsxRuntime.jsxRuntimeExports.jsx(jsxRuntime.jsxRuntimeExports.Fragment,{children:jsxRuntime.jsxRuntimeExports.jsxs("div",{role:"button",tabIndex:0,ref:d.setFloating,style:x,onClick:f=>{f.stopPropagation(),f.preventDefault()},onMouseEnter:f=>{f.stopPropagation(),l(null)},onKeyDown:f=>f.stopPropagation(),className:"isolate z-[999] flex h-6 items-center bg-blue-500 py-2 text-xs text-white",children:[m&&jsxRuntime.jsxRuntimeExports.jsx(reactIcons.ArrowUpIcon,{className:"hover:scale-105",onClick:()=>{u([]),i([m])}}),jsxRuntime.jsxRuntimeExports.jsx(BlockActionLabel,{label:h,block:n}),jsxRuntime.jsxRuntimeExports.jsxs("div",{className:"flex gap-2 px-1",children:[canAddChildBlock(lodashEs.get(n,"_type",""))&&jsxRuntime.jsxRuntimeExports.jsx(reactIcons.PlusIcon,{className:"hover:scale-105",onClick:()=>pubsub.publish(CHAI_BUILDER_EVENTS.OPEN_ADD_BLOCK,n)}),canDuplicateBlock(lodashEs.get(n,"_type",""))?jsxRuntime.jsxRuntimeExports.jsx(reactIcons.CopyIcon,{className:"hover:scale-105",onClick:()=>a([n==null?void 0:n._id])}):null,canDeleteBlock(lodashEs.get(n,"_type",""))?jsxRuntime.jsxRuntimeExports.jsx(reactIcons.TrashIcon,{className:"hover:scale-105",onClick:()=>r([n==null?void 0:n._id])}):null]})]})})},IframeInitialContent=`<!doctype html>
1
+ "use strict";var F=Object.defineProperty;var z=(o,n,r)=>n in o?F(o,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):o[n]=r;var U=(o,n,r)=>z(o,typeof n!="symbol"?n+"":n,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const jsxRuntime=require("./jsx-runtime-qcKc-DpB.cjs"),React=require("react"),contextMenu=require("./context-menu-C_ITMOD1.cjs"),jotai=require("jotai"),lodashEs=require("lodash-es"),reactWrapBalancer=require("react-wrap-balancer"),iconBase=require("./iconBase-Cn2BsTrq.cjs"),reactI18next=require("react-i18next"),dom=require("@floating-ui/dom"),reactDom=require("@floating-ui/react-dom"),reactIcons=require("@radix-ui/react-icons"),web=require("@react-hookz/web"),flagged=require("flagged"),runtime=require("@chaibuilder/runtime"),ChaiThemeFn=require("./ChaiThemeFn-DQu-2Eh9.cjs"),TreeModel=require("tree-model"),reactHotkeysHook=require("react-hotkeys-hook"),lucideReact=require("lucide-react"),ReactQuill=require("react-quill"),typography=require("@tailwindcss/typography"),forms=require("@tailwindcss/forms"),aspectRatio=require("@tailwindcss/aspect-ratio"),containerQueries=require("@tailwindcss/container-queries"),tailwindMerge=require("tailwind-merge"),STRINGS=require("./STRINGS-n7COZtKr.cjs"),ReactDOM=require("react-dom"),reactErrorBoundary=require("react-error-boundary"),reResizable=require("re-resizable"),RjForm=require("@rjsf/core"),validator=require("@rjsf/validator-ajv8"),IconPicker=require("react-icons-picker"),Autosuggest=require("react-autosuggest"),Fuse=require("fuse.js"),himalaya=require("himalaya"),clsx=require("clsx"),reactArborist=require("react-arborist"),i18n=require("i18next"),framerMotion=require("framer-motion");function _interopNamespaceDefault(o){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const r in o)if(r!=="default"){const a=Object.getOwnPropertyDescriptor(o,r);Object.defineProperty(n,r,a.get?a:{enumerable:!0,get:()=>o[r]})}}return n.default=o,Object.freeze(n)}const React__namespace=_interopNamespaceDefault(React);let keyCount=0;function atom(o,n){const r=`atom${++keyCount}`,a={toString(){return r}};return typeof o=="function"?a.read=o:(a.init=o,a.read=defaultRead,a.write=defaultWrite),n&&(a.write=n),a}function defaultRead(o){return o(this)}function defaultWrite(o,n,r){return n(this,typeof r=="function"?r(o(this)):r)}const isSelfAtom=(o,n)=>o.unstable_is?o.unstable_is(n):n===o,hasInitialValue=o=>"init"in o,isActuallyWritableAtom=o=>!!o.write,cancelablePromiseMap=new WeakMap,isPendingPromise=o=>{var n;return isPromiseLike$2(o)&&!((n=cancelablePromiseMap.get(o))!=null&&n[1])},cancelPromise=(o,n)=>{const r=cancelablePromiseMap.get(o);r&&(r[1]=!0,r[0].forEach(a=>a(n)))},patchPromiseForCancelability=o=>{if(cancelablePromiseMap.has(o))return;const n=[new Set,!1];cancelablePromiseMap.set(o,n);const r=()=>{n[1]=!0};o.then(r,r),o.onCancel=a=>{n[0].add(a)}},isPromiseLike$2=o=>typeof(o==null?void 0:o.then)=="function",isAtomStateInitialized=o=>"v"in o||"e"in o,returnAtomValue=o=>{if("e"in o)throw o.e;return o.v},addPendingPromiseToDependency=(o,n,r)=>{r.p.has(o)||(r.p.add(o),n.then(()=>{r.p.delete(o)},()=>{r.p.delete(o)}))},addDependency=(o,n,r,a)=>{var i;n.d.set(r,a.n),isPendingPromise(n.v)&&addPendingPromiseToDependency(o,n.v,a),(i=a.m)==null||i.t.add(o)},INTERNAL_flushStoreHook=Symbol.for("JOTAI.EXPERIMENTAL.FLUSHSTOREHOOK"),buildStore=(...o)=>{const[n,r,a,i,l,u]=o,c=B=>{let C=n(B);return C||(C={d:new Map,p:new Set,n:0},r(B,C),l==null||l(B,N)),C},x=new WeakMap,d=new Map,p=new Set,m=new Set,h=()=>{var B;const C=[],I=T=>{try{T()}catch(v){C.push(v)}};do{(B=N[INTERNAL_flushStoreHook])==null||B.call(N);const T=new Set,v=T.add.bind(T);d.forEach(L=>{var M;return(M=L.m)==null?void 0:M.l.forEach(v)}),d.clear(),p.forEach(v),p.clear(),m.forEach(v),m.clear(),T.forEach(I),d.size&&w()}while(d.size||p.size||m.size);if(C.length)throw C[0]},f=(B,C,I)=>{const T="v"in C,v=C.v,L=isPendingPromise(C.v)?C.v:null;if(isPromiseLike$2(I)){patchPromiseForCancelability(I);for(const M of C.d.keys())addPendingPromiseToDependency(B,I,c(M));C.v=I}else C.v=I;delete C.e,(!T||!Object.is(v,C.v))&&(++C.n,L&&cancelPromise(L,I))},g=B=>{var C;const I=c(B);if(isAtomStateInitialized(I)&&(I.m&&x.get(B)!==I.n||Array.from(I.d).every(([P,V])=>g(P).n===V)))return I;I.d.clear();let T=!0;const v=()=>{I.m&&(E(B,I),w(),h())},L=P=>{if(isSelfAtom(B,P)){const $=c(P);if(!isAtomStateInitialized($))if(hasInitialValue(P))f(P,$,P.init);else throw new Error("no atom init");return returnAtomValue($)}const V=g(P);try{return returnAtomValue(V)}finally{addDependency(B,I,P,V),T||v()}};let M,H;const O={get signal(){return M||(M=new AbortController),M.signal},get setSelf(){return!H&&isActuallyWritableAtom(B)&&(H=(...P)=>{if(!T)return b(B,...P)}),H}};try{const P=a(B,L,O);return f(B,I,P),isPromiseLike$2(P)&&((C=P.onCancel)==null||C.call(P,()=>M==null?void 0:M.abort()),P.then(v,v)),I}catch(P){return delete I.v,I.e=P,++I.n,I}finally{T=!1}},j=B=>returnAtomValue(g(B)),R=B=>{var C;const I=new Map;for(const T of((C=B.m)==null?void 0:C.t)||[]){const v=c(T);v.m&&I.set(T,v)}for(const T of B.p)I.set(T,c(T));return I},_=B=>{const C=[B];for(;C.length;){const I=C.pop();for(const[T,v]of R(I))x.has(T)||(x.set(T,v.n),C.push(v))}},w=()=>{var B;const C=[],I=new WeakSet,T=new WeakSet,v=Array.from(d);for(;v.length;){const[L,M]=v[v.length-1];if(T.has(L)){v.pop();continue}if(I.has(L)){x.get(L)===M.n?C.push([L,M,M.n]):(x.delete(L),d.set(L,M)),T.add(L),v.pop();continue}I.add(L);for(const[H,O]of R(M))I.has(H)||v.push([H,O])}for(let L=C.length-1;L>=0;--L){const[M,H,O]=C[L];let P=!1;for(const V of H.d.keys())if(V!==M&&d.has(V)){P=!0;break}P&&(g(M),E(M,H),O!==H.n&&(d.set(M,H),(B=H.u)==null||B.call(H))),x.delete(M)}},y=(B,...C)=>{let I=!0;const T=L=>returnAtomValue(g(L)),v=(L,...M)=>{var H;const O=c(L);try{if(isSelfAtom(B,L)){if(!hasInitialValue(L))throw new Error("atom not writable");const P=O.n,V=M[0];f(L,O,V),E(L,O),P!==O.n&&(d.set(L,O),(H=O.u)==null||H.call(O),_(O));return}else return y(L,...M)}finally{I||(w(),h())}};try{return i(B,T,v,...C)}finally{I=!1}},b=(B,...C)=>{try{return y(B,...C)}finally{w(),h()}},E=(B,C)=>{var I;if(C.m&&!isPendingPromise(C.v)){for(const[T,v]of C.d)if(!C.m.d.has(T)){const L=c(T);S(T,L).t.add(B),C.m.d.add(T),v!==L.n&&(d.set(T,L),(I=L.u)==null||I.call(L),_(L))}for(const T of C.m.d||[])if(!C.d.has(T)){C.m.d.delete(T);const v=A(T,c(T));v==null||v.t.delete(B)}}},S=(B,C)=>{var I;if(!C.m){g(B);for(const T of C.d.keys())S(T,c(T)).t.add(B);if(C.m={l:new Set,d:new Set(C.d.keys()),t:new Set},(I=C.h)==null||I.call(C),isActuallyWritableAtom(B)){const T=C.m,v=()=>{let L=!0;const M=(...H)=>{try{return y(B,...H)}finally{L||(w(),h())}};try{const H=u(B,M);H&&(T.u=()=>{L=!0;try{H()}finally{L=!1}})}finally{L=!1}};m.add(v)}}return C.m},A=(B,C)=>{var I;if(C.m&&!C.m.l.size&&!Array.from(C.m.t).some(T=>{var v;return(v=c(T).m)==null?void 0:v.d.has(B)})){const T=C.m.u;T&&p.add(T),delete C.m,(I=C.h)==null||I.call(C);for(const v of C.d.keys()){const L=A(v,c(v));L==null||L.t.delete(B)}return}return C.m},N={get:j,set:b,sub:(B,C)=>{const I=c(B),v=S(B,I).l;return v.add(C),h(),()=>{v.delete(C),A(B,I),h()}},unstable_derive:B=>buildStore(...B(...o))};return N},createStore=()=>{const o=new WeakMap;return buildStore(r=>o.get(r),(r,a)=>o.set(r,a).get(r),(r,...a)=>r.read(...a),(r,...a)=>r.write(...a),(r,...a)=>{var i;return(i=r.unstable_onInit)==null?void 0:i.call(r,...a)},(r,...a)=>{var i;return(i=r.onMount)==null?void 0:i.call(r,...a)})};let defaultStore;const getDefaultStore=()=>(defaultStore||(defaultStore=createStore()),defaultStore),RESET=Symbol(""),getCached$1=(o,n,r)=>(n.has(r)?n:n.set(r,o())).get(r),cache1$2=new WeakMap,memo2$1=(o,n,r)=>{const a=getCached$1(()=>new WeakMap,cache1$2,n);return getCached$1(o,a,r)},cacheKeyForEmptyKeyExtractor={},isWritable=o=>!!o.write,isFunction=o=>typeof o=="function";function splitAtom(o,n){return memo2$1(()=>{const r=new WeakMap,a=(u,c)=>{let x=r.get(u);if(x)return x;const d=c&&r.get(c),p=[],m=[];return u.forEach((h,f)=>{const g=f;m[f]=g;const j=d&&d.atomList[d.keyList.indexOf(g)];if(j){p[f]=j;return}const R=w=>{const y=w(i),b=w(o),S=a(b,y==null?void 0:y.arr).keyList.indexOf(g);if(S<0||S>=b.length){const A=u[a(u).keyList.indexOf(g)];if(A)return A;throw new Error("splitAtom: index out of bounds for read")}return b[S]},_=(w,y,b)=>{const E=w(i),S=w(o),D=a(S,E==null?void 0:E.arr).keyList.indexOf(g);if(D<0||D>=S.length)throw new Error("splitAtom: index out of bounds for write");const k=isFunction(b)?b(S[D]):b;Object.is(S[D],k)||y(o,[...S.slice(0,D),k,...S.slice(D+1)])};p[f]=isWritable(o)?atom(R,_):atom(R)}),d&&d.keyList.length===m.length&&d.keyList.every((h,f)=>h===m[f])?x=d:x={arr:u,atomList:p,keyList:m},r.set(u,x),x},i=atom(u=>{const c=u(i),x=u(o);return a(x,c==null?void 0:c.arr)});i.init=void 0;const l=isWritable(o)?atom(u=>u(i).atomList,(u,c,x)=>{switch(x.type){case"remove":{const d=u(l).indexOf(x.atom);if(d>=0){const p=u(o);c(o,[...p.slice(0,d),...p.slice(d+1)])}break}case"insert":{const d=x.before?u(l).indexOf(x.before):u(l).length;if(d>=0){const p=u(o);c(o,[...p.slice(0,d),x.value,...p.slice(d)])}break}case"move":{const d=u(l).indexOf(x.atom),p=x.before?u(l).indexOf(x.before):u(l).length;if(d>=0&&p>=0){const m=u(o);d<p?c(o,[...m.slice(0,d),...m.slice(d+1,p),m[d],...m.slice(p)]):c(o,[...m.slice(0,p),m[d],...m.slice(p,d),...m.slice(d+1)])}break}}}):atom(u=>u(i).atomList);return l},o,cacheKeyForEmptyKeyExtractor)}const isPromiseLike$1=o=>typeof(o==null?void 0:o.then)=="function";function createJSONStorage(o=()=>{try{return window.localStorage}catch{return}},n){var r;let a,i;const l={getItem:(x,d)=>{var p,m;const h=g=>{if(g=g||"",a!==g){try{i=JSON.parse(g,n==null?void 0:n.reviver)}catch{return d}a=g}return i},f=(m=(p=o())==null?void 0:p.getItem(x))!=null?m:null;return isPromiseLike$1(f)?f.then(h):h(f)},setItem:(x,d)=>{var p;return(p=o())==null?void 0:p.setItem(x,JSON.stringify(d,void 0))},removeItem:x=>{var d;return(d=o())==null?void 0:d.removeItem(x)}},u=x=>(d,p,m)=>x(d,h=>{let f;try{f=JSON.parse(h||"")}catch{f=m}p(f)});let c;try{c=(r=o())==null?void 0:r.subscribe}catch{}return!c&&typeof window<"u"&&typeof window.addEventListener=="function"&&window.Storage&&(c=(x,d)=>{if(!(o()instanceof window.Storage))return()=>{};const p=m=>{m.storageArea===o()&&m.key===x&&d(m.newValue)};return window.addEventListener("storage",p),()=>{window.removeEventListener("storage",p)}}),c&&(l.subscribe=u(c)),l}const defaultStorage=createJSONStorage();function atomWithStorage(o,n,r=defaultStorage,a){const i=atom(n);return i.onMount=u=>{u(r.getItem(o,n));let c;return r.subscribe&&(c=r.subscribe(o,u,n)),c},atom(u=>u(i),(u,c,x)=>{const d=typeof x=="function"?x(u(i)):x;return d===RESET?(c(i,n),r.removeItem(o)):d instanceof Promise?d.then(p=>(c(i,p),r.setItem(o,p))):(c(i,d),r.setItem(o,d))})}const StoreContext=React.createContext(void 0),useStore=o=>React.useContext(StoreContext)||getDefaultStore(),isPromiseLike=o=>typeof(o==null?void 0:o.then)=="function",attachPromiseMeta=o=>{o.status="pending",o.then(n=>{o.status="fulfilled",o.value=n},n=>{o.status="rejected",o.reason=n})},use=React.use||(o=>{if(o.status==="pending")throw o;if(o.status==="fulfilled")return o.value;throw o.status==="rejected"?o.reason:(attachPromiseMeta(o),o)}),continuablePromiseMap=new WeakMap,createContinuablePromise=o=>{let n=continuablePromiseMap.get(o);return n||(n=new Promise((r,a)=>{let i=o;const l=x=>d=>{i===x&&r(d)},u=x=>d=>{i===x&&a(d)},c=x=>{"onCancel"in x&&typeof x.onCancel=="function"&&x.onCancel(d=>{isPromiseLike(d)?(continuablePromiseMap.set(d,n),i=d,d.then(l(d),u(d)),c(d)):r(d)})};o.then(l(o),u(o)),c(o)}),continuablePromiseMap.set(o,n)),n};function useAtomValue(o,n){const r=useStore(),[[a,i,l],u]=React.useReducer(d=>{const p=r.get(o);return Object.is(d[0],p)&&d[1]===r&&d[2]===o?d:[p,r,o]},void 0,()=>[r.get(o),r,o]);let c=a;if((i!==r||l!==o)&&(u(),c=r.get(o)),React.useEffect(()=>{const d=r.sub(o,()=>{u()});return u(),d},[r,o,void 0]),React.useDebugValue(c),isPromiseLike(c)){const d=createContinuablePromise(c);return use(d)}return c}function useSetAtom(o,n){const r=useStore();return React.useCallback((...i)=>r.set(o,...i),[r,o])}function useAtom(o,n){return[useAtomValue(o),useSetAtom(o)]}const 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 historyStatesAtom=jotai.atom({undoCount:0,redoCount:0});historyStatesAtom.debugLabel="historyStatesAtom";const inlineEditingActiveAtom=jotai.atom("");inlineEditingActiveAtom.debugLabel="inlineEditingActiveAtom";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=atomWithStorage("codeEditorHeight",500);codeEditorHeightAtom.debugLabel="codeEditorHeightAtom";const xShowBlocksAtom=jotai.atom([]);xShowBlocksAtom.debugLabel="xShowBlocksAtom";const selectedLibraryAtom=atomWithStorage("_selectedLibrary",null);selectedLibraryAtom.debugLabel="selectedLibraryAtom";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;class Content extends React.Component{componentDidMount(){this.props.contentDidMount()}componentDidUpdate(){this.props.contentDidUpdate()}render(){return React.Children.only(this.props.children)}}class Frame extends React.Component{constructor(r,a){super(r,a);U(this,"setRef",r=>{this.nodeRef.current=r;const{forwardedRef:a}=this.props;typeof a=="function"?a(r):a&&(a.current=r)});U(this,"handleLoad",()=>{clearInterval(this.loadCheck),this.state.iframeLoaded||this.setState({iframeLoaded:!0})});U(this,"loadCheck",()=>setInterval(()=>{this.handleLoad()},500));this._isMounted=!1,this.nodeRef=React.createRef(),this.state={iframeLoaded:!1}}componentDidMount(){this._isMounted=!0,this.getDoc()&&this.nodeRef.current.contentWindow.addEventListener("DOMContentLoaded",this.handleLoad)}componentWillUnmount(){this._isMounted=!1,this.nodeRef.current.removeEventListener("DOMContentLoaded",this.handleLoad)}getDoc(){return this.nodeRef.current?this.nodeRef.current.contentDocument:null}getMountTarget(){const r=this.getDoc();return this.props.mountTarget?r.querySelector(this.props.mountTarget):r.body.children[0]}renderFrameContents(){if(!this._isMounted)return null;const r=this.getDoc();if(!r)return null;const a=this.props.contentDidMount,i=this.props.contentDidUpdate,l=r.defaultView||r.parentView,u=jsxRuntime.jsxRuntimeExports.jsx(Content,{contentDidMount:a,contentDidUpdate:i,children:jsxRuntime.jsxRuntimeExports.jsx(FrameContextProvider,{value:{document:r,window:l},children:jsxRuntime.jsxRuntimeExports.jsx("div",{className:"frame-content",children:this.props.children})})}),c=this.getMountTarget();return[ReactDOM.createPortal(this.props.head,this.getDoc().head),ReactDOM.createPortal(u,c)]}render(){const r={...this.props,srcDoc:this.props.initialContent,children:void 0};return delete r.head,delete r.initialContent,delete r.mountTarget,delete r.contentDidMount,delete r.contentDidUpdate,delete r.forwardedRef,jsxRuntime.jsxRuntimeExports.jsx("iframe",{...r,ref:this.setRef,onLoad:this.handleLoad,children:this.state.iframeLoaded&&this.renderFrameContents()})}}U(Frame,"defaultProps",{style:{},head:null,children:void 0,mountTarget:void 0,contentDidMount:()=>{},contentDidUpdate:()=>{},initialContent:'<!DOCTYPE html><html><head></head><body><div class="frame-root"></div></body></html>'});const ChaiFrame=React.forwardRef((o,n)=>jsxRuntime.jsxRuntimeExports.jsx(Frame,{...o,forwardedRef:n})),canAcceptChildBlock=(o,n)=>{if(!o)return!0;const r=runtime.getRegisteredChaiBlock(o);return r&&lodashEs.has(r,"canAcceptBlock")?r.canAcceptBlock(n):!1},canAddChildBlock=o=>{const n=runtime.getRegisteredChaiBlock(o);return n?lodashEs.has(n,"canAcceptBlock"):!1},canBeNestedInside=(o,n)=>{const r=runtime.getRegisteredChaiBlock(n);return r&&lodashEs.has(r,"canBeNested")?r.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:r})=>{const a=lodashEs.get(n,"data._type",""),i=lodashEs.get(r,"data._type","");return canAcceptChildBlock(i,a)};function duplicateBlocks(o,n,r){const a=lodashEs.filter(o,l=>l._parent===n),i=[];for(let l=0;l<a.length;l++){const u=getSlots(a[l]);if(Object.keys(u).length>0&&Object.keys(u).forEach(c=>{a[l][c]=`slot:${iconBase.generateUUID()}`}),lodashEs.filter(o,{_parent:a[l]._id}).length>0){const c=iconBase.generateUUID();i.push({...a[l],oldId:a[l]._id,_id:c,_parent:r}),i.push(lodashEs.flatten(duplicateBlocks(o,a[l]._id,c)))}else i.push({...a[l],oldId:a[l]._id,_id:iconBase.generateUUID(),_parent:r})}return lodashEs.flatten(i)}function convertToBlocksTree(o){const n={};o.forEach(a=>{n[a._id]={...a,children:[]}});const r=[];return o.forEach(a=>{if(a._parent){const i=n[a._parent];i&&i.children.push(n[a._id])}else r.push(n[a._id])}),r}const getSlots=o=>{const n={};return Object.keys(o).forEach(r=>{lodashEs.isString(o[r])&&o[r].startsWith("slot")&&(n[r]=o[r].replace("slot:",""))}),n},getDuplicatedBlocks=(o,n,r=null)=>{let a=lodashEs.find(o,{_id:n});a={...a,oldId:a._id,_id:iconBase.generateUUID()},r!==(a==null?void 0:a._parent)&&(a={...a,_parent:r});const i=[a];lodashEs.filter(o,{_parent:n}).length>0&&i.push(lodashEs.flatten(duplicateBlocks(o,n,a._id)));const l=lodashEs.flatten(i);return lodashEs.map(l,u=>{const c=u,x=getSlots(c);return Object.keys(x).length>0&&Object.keys(x).forEach(d=>{const p=lodashEs.find(l,{oldId:x[d].replace("slot:","")});c[d]=`slot:${p._id}`}),lodashEs.omit(c,["global","oldId"])})},presentBlocksAtom=jotai.atom([]);presentBlocksAtom.debugLabel="presentBlocksAtom";const treeDSBlocks=jotai.atom(o=>{const n=o(presentBlocksAtom);return convertToBlocksTree([...n])});treeDSBlocks.debugLabel="treeDSBlocks";presentBlocksAtom.debugLabel="presentBlocksAtom";const pageBlocksAtomsAtom=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,r=>lodashEs.has(r,"blockId"))});globalBlocksAtom.debugLabel="globalBlocksAtom";const selectedBlockIdsAtom=jotai.atom([]);selectedBlockIdsAtom.debugLabel="selectedBlockIdsAtom";const selectedBlocksAtom=jotai.atom(o=>{const n=o(presentBlocksAtom),r=o(selectedBlockIdsAtom);return lodashEs.map(lodashEs.filter(n,({_id:a})=>lodashEs.includes(r,a)),a=>({...a}))});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 getParentId=o=>lodashEs.get(o,"_parent",null),selectedBlocksParentsAtom=jotai.atom(o=>{const n=o(selectedBlocksAtom),r=lodashEs.map(n,getParentId);return lodashEs.filter(o(presentBlocksAtom),a=>lodashEs.includes(r,a._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=atomWithStorage("styleBreakpoint","xs");styleBreakpointAtom.debugLabel="styleBreakpointAtom";const useSelectedBlocksDisplayChild=()=>({flexChild:jotai.useAtomValue(selectedBlockFlexChildAtom),gridChild:jotai.useAtomValue(selectedBlockGridChildAtom)}),useSelectedBlock=()=>jotai.useAtomValue(selectedBlockAtom),selectedBlockHierarchy=jotai.atom(o=>{const n=o(selectedBlockAtom),r=o(presentBlocksAtom);let a=n;const i=[n];do{const l=r.find(({_id:u})=>u===(a==null?void 0:a._parent));a=l,l&&i.push(l)}while(a!=null&&a._parent);return i}),useSelectedBlockHierarchy=()=>lodashEs.compact(jotai.useAtomValue(selectedBlockHierarchy)),useSelectedBlockIds=()=>{const[o,n]=jotai.useAtom(selectedBlockIdsAtom),r=React.useCallback(a=>{n(i=>lodashEs.includes(i,a)?lodashEs.without(i,a):[...i,a])},[n]);return[o,n,r]};var undomanager={exports:{}},hasRequiredUndomanager;function requireUndomanager(){return hasRequiredUndomanager||(hasRequiredUndomanager=1,function(o){(function(){function n(a,i,l){return a.splice(i,!l||1+l-i+(!(l<0^i>=0)&&(l<0||-1)*a.length)),a.length}let r=function(){let a=[],i=-1,l=0,u=!1,c;function x(d,p){return!d||typeof d[p]!="function"?this:(u=!0,d[p](),u=!1,this)}return{add:function(d){return u?this:(a.splice(i+1,a.length-i),a.push(d),l&&a.length>l&&n(a,0,-(l+1)),i=a.length-1,c&&c(),this)},setCallback:function(d){c=d},undo:function(){let d=a[i];if(!d)return this;const p=d.groupId;for(;d.groupId===p&&(x(d,"undo"),i-=1,d=a[i],!(!d||!d.groupId)););return c&&c(),this},redo:function(){let d=a[i+1];if(!d)return this;const p=d.groupId;for(;d.groupId===p&&(x(d,"redo"),i+=1,d=a[i+1],!(!d||!d.groupId)););return c&&c(),this},clear:function(){let d=a.length;a=[],i=-1,c&&d>0&&c()},hasUndo:function(){return i!==-1},hasRedo:function(){return i<a.length-1},getCommands:function(d){return d?a.filter(p=>p.groupId===d):a},getIndex:function(){return i},setLimit:function(d){l=d}}};o.exports?o.exports=r:window.UndoManager=r})()}(undomanager)),undomanager.exports}var undomanagerExports=requireUndomanager();const UndoManager=ChaiThemeFn.getDefaultExportFromCjs(undomanagerExports),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)});function getBlocksTree(o){return convertToBlocksTree(o)}const nestedToFlatArray=(o,n)=>lodashEs.flatten(o.map(r=>{if(r=n?{...r,_parent:n}:{...r},r.children){const a=[...r.children];return delete r.children,lodashEs.flatten([r,...nestedToFlatArray(a,r._id)])}return r}));function setProjectBlocksInMemory(o,n=!1){for(let r=0;r<o.length;r++){const a=o[r];a.global&&!n?o[r]={type:"GlobalBlock",blockId:a.blockId,_parent:lodashEs.get(a,"_parent",null),_id:a._id}:a.children&&a.children.length&&setProjectBlocksInMemory(a.children)}}function getInnerBlocks(o){let n=[],r=lodashEs.filter(o,{type:"GlobalBlock"});return r.length>0&&(r=lodashEs.map(r,getPBlocks),lodashEs.each(r,a=>{n=[...n,...getSingleBlock(a)]})),n}function getSingleBlock(o){let n=[];const r=lodashEs.get(lodashEs.first(o),"_parent",null);lodashEs.set(lodashEs.first(o),"_parent",null);const a=[flatToNestedInstance.convert(clone(o))];setProjectBlocksInMemory(a,!0);let i=nestedToFlatArray(a,o[0]._id);return i=lodashEs.set(i,"0._parent",r),n=[...n,i,...getInnerBlocks(i)],n}function getPBlocks(o){const n=lodashEs.find(FLAT_ARRAY,{_id:o._id});if(!n)return[];const r=[n],a=lodashEs.filter(FLAT_ARRAY,{_parent:o._id});return a.length?lodashEs.flatten([...r,...lodashEs.flatten(lodashEs.map(a,getPBlocks))]):lodashEs.flatten(r)}const clone=o=>JSON.parse(JSON.stringify(o));let FLAT_ARRAY=[];function splitPageBlocks(o){FLAT_ARRAY=o;const n=getBlocksTree(clone(o));setProjectBlocksInMemory(n);const r=nestedToFlatArray(n,null),a=getInnerBlocks(r),i={};return lodashEs.each(a,l=>lodashEs.set(i,lodashEs.first(l).blockId,l)),[r,i]}const useGetPageData=()=>{const[o]=useBrandingOptions(),{currentPage:n}=useCurrentPage(),[r]=useBlocksStore();return React.useCallback(()=>{const a=lodashEs.map(r,l=>lodashEs.omit(l,["expanded","order","title","siblings","tempClasses"])),[i=[]]=splitPageBlocks(a);return{currentPage:n,blocks:i}},[o,n,r])},chaiBuilderPropsAtom=jotai.atom(null);chaiBuilderPropsAtom.debugLabel="chaiBuilderPropsAtom";const chaiExternalDataAtom=jotai.atom({});chaiExternalDataAtom.debugLabel="chaiExternalDataAtom";const useBuilderProp=(o,n=void 0)=>{const r=jotai.useAtomValue(chaiBuilderPropsAtom);return lodashEs.get(r,o,n)},getDefaultThemeValues=(o=ChaiThemeFn.defaultThemeOptions)=>{const n={};return o.fontFamily&&(n.fontFamily=Object.entries(o.fontFamily).reduce((r,[a,i])=>({...r,[a.replace("font-","")]:i}),{})),n.borderRadius=o.borderRadius,o.colors&&(n.colors=o.colors.reduce((r,a)=>(Object.entries(a.items).forEach(([i,l])=>{r[i]=l}),r),{})),n},chaiThemeValuesAtom=jotai.atom({}),useTheme=()=>{const o=useThemeOptions(),n=React.useMemo(()=>getDefaultThemeValues(o),[o]),r=useBuilderProp("theme",{}),[a,i]=jotai.useAtom(chaiThemeValuesAtom);return[React.useMemo(()=>({...n,...!lodashEs.isEmpty(r)&&r,...!lodashEs.isEmpty(a)&&a}),[n,r,a]),i]},useThemeOptions=()=>{const o=useBuilderProp("themeOptions",r=>r);return React.useMemo(()=>o(ChaiThemeFn.defaultThemeOptions),[o])},rightPanelAtom=jotai.atom("block"),useRightPanel=()=>jotai.useAtom(rightPanelAtom),builderSaveStateAtom=jotai.atom("SAVED");builderSaveStateAtom.debugLabel="builderSaveStateAtom";const useSavePage=()=>{const[o,n]=jotai.useAtom(builderSaveStateAtom),r=useBuilderProp("onSave",async c=>{}),a=useBuilderProp("onSaveStateChange",lodashEs.noop),i=useGetPageData(),[l]=useTheme();return{savePage:web.useThrottledCallback(async(c=!1)=>{n("SAVING"),a("SAVING");const x=i();return await r({autoSave:c,blocks:x.blocks,theme:l}),setTimeout(()=>{n("SAVED"),a("SAVED")},100),!0},[i,n,l,r,a],3e3),saveState:o,setSaveState:n}},undoManager=new UndoManager;undoManager.setLimit(50);const useUndoManager=()=>{const[,o]=jotai.useAtom(builderSaveStateAtom),n=useBuilderProp("onSaveStateChange",lodashEs.noop);return React.useEffect(()=>(undoManager.setCallback(()=>{o("UNSAVED"),n("UNSAVED")}),()=>{undoManager.setCallback(lodashEs.noop)}),[]),{add:undoManager.add,undo:undoManager.undo,redo:undoManager.redo,hasRedo:undoManager.hasRedo,hasUndo:undoManager.hasUndo,clear:undoManager.clear}},broadcastChannel=new BroadcastChannel("chaibuilder"),useBroadcastChannel=()=>{const o=useBuilderProp("pageId","chaibuilder_page");return{postMessage:web.useDebouncedCallback(r=>broadcastChannel.postMessage({...r,pageId:o}),[o],200)}},useUnmountBroadcastChannel=()=>{const[,o]=useBlocksStore(),n=useBuilderProp("pageId","chaibuilder_page");React.useEffect(()=>(broadcastChannel.onmessageerror=r=>{console.log("error",r)},broadcastChannel.onmessage=r=>{r.data.type==="blocks-updated"&&r.data.pageId===n&&o(r.data.blocks)},()=>{broadcastChannel.onmessage=null,broadcastChannel.onmessageerror=null}),[o,n])},removeNestedBlocks=(o,n)=>{const r=[],a=lodashEs.filter(o,i=>lodashEs.includes(n,i._id)||lodashEs.includes(n,i._parent)?(r.push(i._id),!1):!0);return lodashEs.isEmpty(r)?a:removeNestedBlocks(a,r)},useRemoveBlocks=()=>{const[o]=useBlocksStore(),[n,r]=useSelectedBlockIds(),{setNewBlocks:a}=useBlocksStoreUndoableActions();return React.useCallback(i=>{var u;const l=((u=lodashEs.find(o,{_id:i[0]}))==null?void 0:u._parent)||null;a(removeNestedBlocks(o,i)),setTimeout(()=>r(l?[l]:[]),200)},[o,r,n])};function insertBlocksAtPosition(o,n,r,a){let i=o.filter(c=>!c._parent);r&&(i=o.filter(c=>c._parent===r));const l=!isNaN(a)||a>-1?Math.min(a,i.length):i.length;let u=o.length;for(let c=0,x=0;c<o.length;c++)if(o[c]._parent===r){if(x===l){u=c;break}x++}return!r&&a!==void 0&&a>=i.length&&(u=o.length),[...o.slice(0,u),...n,...o.slice(u)]}function flattenTree(o){let n=[];return o.walk(r=>(delete r.model.children,n.push(r.model),!0)),n}function findNodeById(o,n){return o.first(r=>r.model._id===n)||null}function moveNode(o,n,r,a){const i=findNodeById(o,n),l=findNodeById(o,r);if(i&&l){i.drop(),l.children||(l.model.children=[]);try{l.addChildAtIndex(i,a)}catch(u){return console.error("Error adding child to parent:",u),!1}return!0}return!1}function moveBlocksWithChildren(o,n,r,a){if(!n)return o;r=r||"root";const l=new TreeModel().parse({_id:"root",children:getBlocksTree(o)});if(moveNode(l,n,r,a)){const u=flattenTree(l),c=u.find(x=>x._id===n);return c&&(c._parent=r==="root"?null:r),u.shift(),u}return o}const useBlocksStoreManager=()=>{const[,o]=useBlocksStore(),{postMessage:n}=useBroadcastChannel();return{setNewBlocks:r=>{o(r),n({type:"blocks-updated",blocks:r})},addBlocks:(r,a,i)=>{o(l=>{const u=insertBlocksAtPosition(l,r,a,i);return n({type:"blocks-updated",blocks:u}),u})},removeBlocks:r=>{o(a=>{const i=removeNestedBlocks(a,r);return n({type:"blocks-updated",blocks:i}),i})},moveBlocks:(r,a,i)=>{o(l=>{let u=l;for(let c=0;c<r.length;c++)u=moveBlocksWithChildren(u,r[c],a,i);return n({type:"blocks-updated",blocks:u}),u})},updateBlocksProps:r=>{o(a=>{const i=r.map(u=>u._id),l=a.map(u=>{if(i.includes(u._id)){const c=lodashEs.find(r,{_id:u._id});return{...u,...lodashEs.omit(c,"_id")}}return u});return n({type:"blocks-updated",blocks:l}),l})}}},useBlocksStore=()=>jotai.useAtom(presentBlocksAtom),useBlocksStoreUndoableActions=()=>{const{add:o}=useUndoManager(),[n]=useBlocksStore(),{setNewBlocks:r,addBlocks:a,removeBlocks:i,moveBlocks:l,updateBlocksProps:u}=useBlocksStoreManager();return{moveBlocks:(g,j,R)=>{const _=lodashEs.map(g,y=>{const E=n.find(D=>D._id===y)._parent||null,A=n.filter(D=>E?D._parent===E:!D._parent).map(D=>D._id).indexOf(y);return{_id:y,oldParent:E,oldPosition:A}}),w=_.find(({_id:y})=>y===g[0]);w&&w.oldParent===j&&w.oldPosition===R||(l(g,j,R),o({undo:()=>lodashEs.each(_,({_id:y,oldParent:b,oldPosition:E})=>{l([y],b,E)}),redo:()=>l(g,j,R)}))},addBlocks:(g,j,R)=>{a(g,j,R),o({undo:()=>i(lodashEs.map(g,"_id")),redo:()=>a(g,j,R)})},removeBlocks:g=>{var w;const j=(w=lodashEs.first(g))==null?void 0:w._parent,_=n.filter(y=>j?y._parent===j:!y._parent).indexOf(lodashEs.first(g));i(lodashEs.map(g,"_id")),o({undo:()=>a(g,j,_),redo:()=>i(lodashEs.map(g,"_id"))})},updateBlocks:(g,j,R)=>{let _=[];if(R)_=lodashEs.map(g,w=>({_id:w,...R}));else{const w=lodashEs.keys(j);_=lodashEs.map(g,y=>{const b=n.find(S=>S._id===y),E={_id:y};return lodashEs.each(w,S=>E[S]=b[S]),E})}u(lodashEs.map(g,w=>({_id:w,...j}))),o({undo:()=>u(_),redo:()=>u(lodashEs.map(g,w=>({_id:w,...j})))})},updateBlocksRuntime:(g,j)=>{u(lodashEs.map(g,R=>({_id:R,...j})))},setNewBlocks:g=>{r(g),o({undo:()=>r(n),redo:()=>r(g)})},updateMultipleBlocksProps:g=>{let j=[];j=lodashEs.map(g,R=>{const _=lodashEs.keys(R),w=n.find(b=>b._id===R._id),y={};return lodashEs.each(_,b=>y[b]=w[b]),y}),u(g),o({undo:()=>u(j),redo:()=>u(g)})}}},useAddBlock=()=>{const[o]=useBlocksStore(),[,n]=useSelectedBlockIds(),{addBlocks:r}=useBlocksStoreUndoableActions(),a=React.useCallback((l,u,c)=>{var h;for(let f=0;f<l.length;f++){const{_id:g}=l[f];l[f]._id=iconBase.generateUUID();const j=lodashEs.filter(l,{_parent:g});for(let R=0;R<j.length;R++)j[R]._parent=l[f]._id}const x=lodashEs.first(l);let d,p;return u&&(d=lodashEs.find(o,{_id:u}),l[0]._parent=u,p=u),!(d?canAcceptChildBlock(d==null?void 0:d._type,x._type):!0)&&d&&(l[0]._parent=d._parent,p=d._parent),r(l,p,c),n([(h=lodashEs.first(l))==null?void 0:h._id]),lodashEs.first(l)},[r,o,n]);return{addCoreBlock:React.useCallback((l,u,c)=>{if(lodashEs.has(l,"blocks")){const j=l.blocks;return a(j,u,c)}const x=iconBase.generateUUID(),d=runtime.getDefaultBlockProps(l.type),p={_type:l.type,_id:x,...d};let m,h;return u&&(m=lodashEs.find(o,{_id:u}),p._parent=u,h=u),!canAcceptChildBlock(m==null?void 0:m._type,p._type)&&m&&(p._parent=m._parent,h=m._parent),r([p],h,c),n([p._id]),p},[r,a,o,n]),addPredefinedBlock:a}},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-no-wrap","whitespace-pre","whitespace-pre-line","whitespace-pre-wrap"],regExp:"whitespace-(normal|no-wrap|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:["animation-none","animation-spin","animation-ping"],regExp:"animation-(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,r=>`${n}-${o}-${r}`)))))]),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 r=[];if(o.colors){const a=lodashEs.flattenDeep(lodashEs.map(o.colors,({items:i})=>lodashEs.keys(i)));r=lodashEs.flattenDeep(lodashEs.map(a,i=>lodashEs.flatten(lodashEs.map(colorKeys,l=>`${l}-${i}`))))}return o.fontFamily&&(r=[...r,...lodashEs.map(lodashEs.keys(o.fontFamily),a=>`${a}`)]),lodashEs.map(r,a=>({name:a}))},[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 i=lodashEs.flattenDeep(lodashEs.map(o.colors,({items:l})=>lodashEs.keys(l)));lodashEs.each(CLASSES_LIST,(l,u)=>{lodashEs.set(CLASSES_LIST,`${u}.regExp`,l.regExp.replace("__THEME_COLORS_REGEXP__",i.join("|")))})}return CLASSES_LIST},[o]),r=React.useCallback((i,l)=>{const u=lodashEs.get(n,`${i}.regExp`,"");return l.match(new RegExp(u))},[n]),a=React.useCallback((i,l=[])=>lodashEs.get(n,`${i}.classes`,l),[n]);return{match:r,getClasses:a}};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,a=>`${a}:`).join("|"),r=new RegExp(n,"g");return lodashEs.get(r.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 r in CLASSES_LIST){const a=lodashEs.get(CLASSES_LIST,`${r}.regExp`,"");if(new RegExp(a,"g").test(o)){n=r,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),r=["xs","sm","md","lg","xl","2xl"];return n.sort((a,i)=>r.indexOf(a.mq)-r.indexOf(i.mq)).map(a=>a.fullCls).join(" ")}function removeDuplicateClasses(o){if(o=o.replace(/\s+/g," "),!o)return"";const n=["xs","sm","md","lg","xl","2xl"],r=o.split(" ").map(constructClassObject);let a=o;if(r.length===1)return r[0].fullCls;for(const i of r){const l=i.property,u=n.indexOf(i.mq);for(let c=u+1;c<n.length;c++){const x=n[c],d=r.find(p=>p.property===l&&p.mq===x);if(d&&d.cls===i.cls)a=a.replace(d.fullCls,"");else if(d&&d.cls!==i.cls)break}}return a.replace(/\s+/g," ").trim()}const selectedStylingBlocksAtom=jotai.atom([]);selectedStylingBlocksAtom.debugLabel="selectedStylingBlocksAtom";const useSelectedStylingBlocks=()=>jotai.useAtom(selectedStylingBlocksAtom),getSplitClasses$1=o=>{const n=o.replace(STRINGS.STYLES_KEY,"").split(",");return{baseClasses:n[0],classes:n[1]}},addClassesToBlocksAtom=jotai.atom(null,(o,n,{blockIds:r,newClasses:a})=>{const i=lodashEs.filter(o(pageBlocksAtomsAtom),u=>r.includes(o(u)._id)),l=lodashEs.first(o(selectedStylingBlocksAtom));return lodashEs.map(i,u=>{const c=o(u),x=lodashEs.get(c,l.prop,`${STRINGS.STYLES_KEY},`),{classes:d}=getSplitClasses$1(x);return{ids:[c._id],props:{[l.prop]:`${STRINGS.STYLES_KEY},${orderClassesByBreakpoint(removeDuplicateClasses(tailwindMerge.twMerge(d,a)))}`}}})}),useAddClassesToBlocks=()=>{const o=jotai.useSetAtom(addClassesToBlocksAtom),{updateBlocks:n,updateBlocksRuntime:r}=useBlocksStoreUndoableActions();return React.useCallback((a,i,l=!1)=>{const u=o({blockIds:a,newClasses:i});if(!l){r(a,u[0].props);return}n(a,u[0].props)},[o,n,r])},useStylingBreakpoint=()=>jotai.useAtom(styleBreakpointAtom),canvasWidthAtom=atomWithStorage("canvasWidth",800),canvasBreakpointAtom=jotai.atom(o=>{const n=o(canvasWidthAtom);return iconBase.getBreakpointValue(n).toLowerCase()}),useCanvasWidth=()=>{const[o,n]=jotai.useAtom(canvasWidthAtom),r=jotai.useAtomValue(canvasBreakpointAtom),[a,i]=useStylingBreakpoint();return React.useEffect(()=>{a!=="xs"&&i(r)},[r,a,i]),[o,r,n]},canvasZoomAtom=atomWithStorage("canvasZoom",100),useCanvasZoom=()=>jotai.useAtom(canvasZoomAtom),cutBlockIdsAtom=jotai.atom([]),useCutBlockIds=()=>{const[o,n]=jotai.useAtom(cutBlockIdsAtom),r=jotai.useSetAtom(copiedBlockIdsAtom),a=React.useCallback(i=>{n(i),r([])},[n,r]);return[o,a]},copiedBlockIdsAtom=jotai.atom([]),useCopyBlockIds=()=>{const[o]=useBlocksStore(),[n,r]=jotai.useAtom(copiedBlockIdsAtom),a=jotai.useSetAtom(cutBlockIdsAtom),i=React.useCallback(async l=>{try{r(l),a([]);const u={_chai_copied_blocks:l.flatMap(c=>getDuplicatedBlocks(o,c,null))};await navigator.clipboard.writeText(JSON.stringify(u))}catch(u){console.error("Failed to copy blocks to clipboard:",u)}},[r,a,o]);return[n,i]},darkModeAtom=atomWithStorage("darkMode",!1),useDarkMode=()=>{const[o,n]=jotai.useAtom(darkModeAtom);return[o,n]},useDuplicateBlocks=()=>{const[o]=useBlocksStore(),[,n]=useSelectedBlockIds(),{addBlocks:r}=useBlocksStoreUndoableActions();return React.useCallback((a,i=null)=>{const l=[];lodashEs.each(a,u=>{const c=o.find(h=>h._id===u);i?i==="root"&&(i=null):i=c._parent;const p=lodashEs.filter(o,h=>lodashEs.isString(i)?h._parent===i:!h._parent).indexOf(c)+1,m=getDuplicatedBlocks(o,u,i);r(m,i,p),l.push(lodashEs.get(m,"0._id",""))}),n(l)},[o,n])},hiddenBlockIdsAtom=jotai.atom([]),useHiddenBlockIds=()=>{const[o,n]=jotai.useAtom(hiddenBlockIdsAtom),r=React.useCallback(a=>{n(i=>lodashEs.includes(i,a)?lodashEs.without(i,a):[...i,a])},[n]);return[o,n,r]},highlightBlockIdAtom=jotai.atom(""),useHighlightBlockId=()=>jotai.useAtom(highlightBlockIdAtom),useCanPaste=()=>{const[o]=useBlocksStore();return(n,r)=>{var l;const a=((l=lodashEs.find(o,{_id:r}))==null?void 0:l._type)||null,i=lodashEs.first(n.map(u=>{var c;return(c=lodashEs.find(o,{_id:u}))==null?void 0:c._type}));return canAcceptChildBlock(a,i)}},useMoveCutBlocks=()=>{const o=jotai.useAtomValue(presentBlocksAtom),{moveBlocks:n}=useBlocksStoreUndoableActions();return React.useCallback((r,a)=>{const i=Array.isArray(a)?a[0]:a;if(a==="root"){const l=o==null?void 0:o.filter(u=>!u._parent);n(r,null,(l==null?void 0:l.length)||0)}else{const l=o==null?void 0:o.filter(u=>u._parent===i);n(r,i,(l==null?void 0:l.length)||0)}},[n,o])},usePasteBlocks=()=>{const[o,n]=useCutBlockIds(),r=useMoveCutBlocks(),a=useCanPaste(),{toast:i}=contextMenu.useToast(),{addPredefinedBlock:l}=useAddBlock();return{canPaste:React.useCallback(async c=>{if(o.length>0)return a(o,c);try{const x=await navigator.clipboard.readText();if(x){const d=JSON.parse(x);return lodashEs.has(d,"_chai_copied_blocks")}}catch{return!1}return!1},[a,o]),pasteBlocks:React.useCallback(async c=>{const x=Array.isArray(c)?c[0]:c;if(!lodashEs.isEmpty(o)){r(o,c),n([]),await navigator.clipboard.writeText("");return}try{const d=await navigator.clipboard.readText();if(d){const p=JSON.parse(d);lodashEs.has(p,"_chai_copied_blocks")?l(p._chai_copied_blocks,x==="root"?null:x):i({title:"Error",description:"Nothing to paste"})}else i({title:"Error",description:"Nothing to paste"})}catch{i({title:"Error",description:"Failed to paste blocks from clipboard"})}},[o,l,r,n,i])}},previewModeAtom=jotai.atom(!1),usePreviewMode=()=>{const[o,n]=jotai.useAtom(previewModeAtom);return[o,n]},getSplitClasses=o=>{const n=o.replace(STRINGS.STYLES_KEY,"").split(",");return{baseClasses:n[0],classes:n[1]}},removeClassFromBlocksAtom=jotai.atom(null,(o,n,{blockIds:r,fullClasses:a})=>{const i=lodashEs.first(o(selectedStylingBlocksAtom)),l=lodashEs.filter(o(pageBlocksAtomsAtom),u=>r.includes(o(u)._id));return lodashEs.map(l,u=>{const c=o(u),x=a;let{classes:d,baseClasses:p}=getSplitClasses(lodashEs.get(c,i.prop,"styles:,"));return lodashEs.each(x,m=>{const h=m.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),f=new RegExp(`(^|\\s)${h}(?=\\s|$)`,"g");d=d.replace(f," ").replace(/\s+/g," ").trim();const g=lodashEs.first(m.split(":"));lodashEs.includes(["2xl","xl","lg","md","sm"],g)&&x.push(m.split(":").pop().trim())}),lodashEs.each(x,m=>{const h=m.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),f=new RegExp(`(^|\\s)${h}(?=\\s|$)`,"g");p=p.replace(f," ").replace(/\s+/g," ").trim()}),{ids:[c._id],props:{[i.prop]:`${STRINGS.STYLES_KEY}${p},${d}`}}})}),useRemoveClassesFromBlocks=()=>{const{updateBlocks:o}=useBlocksStoreUndoableActions(),n=jotai.useSetAtom(removeClassFromBlocksAtom);return React.useCallback((r,a)=>{const i=n({blockIds:r,fullClasses:a});o(r,i[0].props)},[n])},selectedBlockAllClassesAtom=jotai.atom(o=>{const n=lodashEs.first(o(selectedStylingBlocksAtom)),r=o(selectedBlockAtom);if(!n||n.blockId!==lodashEs.get(r,"_id",null))return[];const i=lodashEs.get(r,n.prop,`${STRINGS.STYLES_KEY},`).replace(STRINGS.STYLES_KEY,"").split(",").join(" ");return lodashEs.filter(lodashEs.map(i.trim().split(" "),constructClassObject),l=>!lodashEs.isNull(l))}),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),r=o(styleStateAtom),a=o(darkModeAtom),i=getQueries(n);let l=lodashEs.filter(o(selectedBlockAllClassesAtom),{mod:r});return lodashEs.startsWith(r,"_")||(l=lodashEs.filter(l,u=>i.includes(u.mq))),l=l.sort((u,c)=>MQ[u.mq]-MQ[c.mq]),a||(l=lodashEs.filter(l,{dark:!1})),l}),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),useStylingState=()=>jotai.useAtom(styleStateAtom),languageAtom=jotai.atom("");languageAtom.debugLabel="selectedLanguageAtom";const useLanguages=()=>{const o=useBuilderProp("languages",[]),n=useBuilderProp("fallbackLang","en"),[r,a]=jotai.useAtom(languageAtom),i=l=>{a(n===l?"":l)};return{languages:o==null?void 0:o.filter(l=>l!==n),fallbackLang:n,selectedLang:r,setSelectedLang:i}},updatePropsForLanguage=lodashEs.memoize((o,n,r)=>{const a=runtime.getRegisteredChaiBlock(lodashEs.get(r,"_type"));if(!a)return o;const i={...o};return lodashEs.forEach(lodashEs.keys(o),l=>{if(lodashEs.includes(lodashEs.get(a,"i18nProps",[]),l)&&!lodashEs.isEmpty(n)){const u=`${l}-${n}`;lodashEs.set(i,u,o[l]),lodashEs.unset(i,l)}}),i}),useUpdateBlocksProps=()=>{const{updateBlocks:o}=useBlocksStoreUndoableActions(),{selectedLang:n}=useLanguages(),r=useSelectedBlock();return React.useCallback((a,i,l)=>{const u=updatePropsForLanguage(i,n,r);o(a,u,l)},[n,r,o])},useUpdateMultipleBlocksProps=()=>{const{updateMultipleBlocksProps:o}=useBlocksStoreUndoableActions();return React.useCallback(n=>{o(n)},[o])},useFakeStreamEffect=()=>{const{updateBlocksRuntime:o}=useBlocksStoreUndoableActions();return React.useCallback(async(n,r,a=30)=>{const i=lodashEs.keys(lodashEs.omit(r,["_id"]));for(const l of i){const u=r[l];if(lodashEs.isString(u)){const c=lodashEs.chunk(u.split(""),12);let x="";o([n],{[l]:""});for(let d=0;d<c.length;d++)x+=c[d].join(""),o([n],{[l]:x}),await new Promise(p=>setTimeout(p,a))}}},[o])},useStreamMultipleBlocksProps=()=>{const{updateMultipleBlocksProps:o}=useBlocksStoreUndoableActions(),n=useFakeStreamEffect();return React.useCallback(async r=>{for(const a of r)await n(a._id,a);o(r)},[n,o])},useUpdateBlocksPropsRealtime=()=>{const{updateBlocksRuntime:o}=useBlocksStoreUndoableActions(),{selectedLang:n}=useLanguages(),r=useSelectedBlock();return React.useCallback((a,i)=>{const l=updatePropsForLanguage(i,n,r);o(a,l)},[n,r,o])},selectedBreakpointsAtom=atomWithStorage("selectedBreakpoints",["XS","MD","XL"]),useSelectedBreakpoints=()=>{const[o,n]=jotai.useAtom(selectedBreakpointsAtom);return[o,n]};let lastHighlighted=null;const useBlockHighlight=()=>{const[o]=jotai.useAtom(canvasIframeAtom),n=React.useMemo(()=>{var i;return(o==null?void 0:o.contentDocument)||((i=o==null?void 0:o.contentWindow)==null?void 0:i.document)},[o]);return{highlightBlock:i=>{if(lastHighlighted&&lastHighlighted.removeAttribute("data-highlighted"),typeof i!="string")i.setAttribute("data-highlighted","true"),lastHighlighted=i;else if(typeof i=="string"){const l=n.querySelector(`[data-block-id="${i}"]`);l&&(l.setAttribute("data-highlighted","true"),lastHighlighted=l)}else lastHighlighted=null},clearHighlight:()=>{lastHighlighted&&(lastHighlighted.removeAttribute("data-highlighted"),lastHighlighted=null)},lastHighlighted}},globalBlocksStoreAtom=atom({}),globalBlocksLoadingStateAtom=atom({}),useGlobalBlocksStore=()=>{const[o,n]=useAtom(globalBlocksStoreAtom),r=React.useCallback(i=>lodashEs.get(o,i==null?void 0:i.globalBlock,[]),[o]),a=React.useCallback(()=>{n({})},[n]);return{getGlobalBlocks:r,reset:a}},useWatchGlobalBlocks=()=>{const[o]=useBlocksStore(),[n,r]=useAtom(globalBlocksStoreAtom),[a,i]=useAtom(globalBlocksLoadingStateAtom),l=useBuilderProp("getGlobalBlockBlocks",async c=>[]),u=React.useMemo(()=>o.filter(x=>x._type==="GlobalBlock").filter(x=>x._type==="GlobalBlock").map(x=>x.globalBlock),[o]);React.useEffect(()=>{lodashEs.forEach(u,c=>{lodashEs.has(n,c)||lodashEs.get(a,`${c}.loading`,!1)||(i(x=>({...x,[c]:{loading:!0,error:null}})),l(c).then(x=>{r(d=>({...d,[c]:x})),i(d=>({...d,[c]:{loading:!1,error:null}}))}).catch(x=>{i(d=>({...d,[c]:{loading:!1,error:x.message}}))}))})},[l,n,u,a,r,i])},globalBlocksListAtom=atom({}),useGlobalBlocksList=()=>{const[o,n]=React.useState(!1),[r,a]=useAtom(globalBlocksListAtom),i=useBuilderProp("getGlobalBlocks",async()=>[]),l=React.useCallback(async()=>{n(!0);const u=await i();a(u),n(!1)},[i,a]);return React.useEffect(()=>{l()},[]),{data:r,isLoading:o,refetch:l}},useBuilderReset=()=>{const o=jotai.useSetAtom(historyStatesAtom),{clear:n}=useUndoManager(),[,r]=useSelectedBlockIds(),{clearHighlight:a}=useBlockHighlight(),[,i]=useSelectedStylingBlocks(),[,l]=useAtom(aiAssistantActiveAtom),{reset:u}=useGlobalBlocksStore();return()=>{r([]),i([]),a(),n(),l(!1),o({undoCount:0,redoCount:0}),u()}},useUILibraryBlocks=()=>({data:useBuilderProp("uiLibraries",[]),isLoading:!1}),useCopyToClipboard=()=>{const[o,n]=React.useState(null),r=React.useCallback(async a=>{if(!(navigator!=null&&navigator.clipboard))return console.warn("Clipboard not supported"),!1;try{return await navigator.clipboard.writeText(a),n(a),!0}catch(i){return console.warn("Copy failed",i),n(null),!1}},[]);return[o,r]},codeEditorAtom=jotai.atom(null),useCodeEditor=()=>jotai.useAtom(codeEditorAtom),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"};function getChildBlocks(o,n,r){r.push(lodashEs.find(o,{_id:n}));const a=lodashEs.filter(o,{_parent:n});for(const i of a)r.push(...getBlockWithChildren(i._id,o));return r}const getBlockWithChildren=(o,n)=>{let r=[];return r=lodashEs.flattenDeep([...r,...getChildBlocks(n,o,r)]),r},pickOnlyAIProps=(o,n)=>lodashEs.compact(o.map(r=>{const a=["_id","_type","_parent"],i=lodashEs.pick(r,a),l=runtime.getRegisteredChaiBlock(r._type),u={},c=lodashEs.get(l,"aiProps",[]);for(const x in r)a.includes(x)||c.includes(x)&&(u[x]=lodashEs.get(r,`${x}-${n}`,r[x]));return lodashEs.isEmpty(u)?!1:(lodashEs.has(i,"_parent")&&lodashEs.isEmpty(i._parent)&&delete i._parent,{...i,...u})})),addLangToPrompt=(o,n,r)=>!n||r!=="content"?o:`${o}. Generate content in ${lodashEs.get(LANGUAGES,n,n)} language.`,askAiProcessingAtom=jotai.atom(!1),useAskAi=()=>{const[o,n]=jotai.useAtom(askAiProcessingAtom),[r,a]=React.useState(null),i=useBuilderProp("askAiCallBack",null),l=useStreamMultipleBlocksProps(),u=useUpdateMultipleBlocksProps(),[c]=useBlocksStore(),{selectedLang:x,fallbackLang:d}=useLanguages(),p=x.length?x:d,m=(h,f)=>{const g=lodashEs.cloneDeep(f.find(j=>j._id===h));for(const j in g){const R=g[j];typeof R=="string"&&lodashEs.startsWith(R,STRINGS.STYLES_KEY)?g[j]=lodashEs.compact(lodashEs.flattenDeep(R.replace(STRINGS.STYLES_KEY,"").split(","))).join(" "):j!=="_id"&&delete g[j]}return g};return{askAi:React.useCallback(async(h,f,g,j)=>{if(i){n(!0),a(null);try{const R=x===d?"":x,_=h==="content"?pickOnlyAIProps(lodashEs.cloneDeep(getBlockWithChildren(f,c)),x):[m(f,c)],w=await i(h,addLangToPrompt(g,p,h),_,R),{blocks:y,error:b}=w;if(b){a(b);return}if(h==="styles"){const E=y.map(S=>{for(const A in S)A!=="_id"&&(S[A]=`${STRINGS.STYLES_KEY},${S[A]}`);return S});u(E)}else l(y);j&&j(w)}catch(R){a(R)}finally{n(!1),j&&j()}}},[i,n,x,d,c,p,u,l]),loading:o,error:r}},useAiAssistant=()=>{const[,o]=useRightPanel();return React.useCallback(n=>{o(n?"ai":"block")},[o])},wrapperBlockAtom=jotai.atom(o=>{var u;const n=o(presentBlocksAtom),r=o(selectedBlockIdsAtom),a=r.length===1?r[0]:null;if(!a)return null;const i=lodashEs.find(n,{_id:a});if(!i)return null;let l=i._parent;for(;l;){const c=lodashEs.find(n,{_id:l});if(!c)return null;if((u=runtime.getRegisteredChaiBlock(c._type))!=null&&u.wrapper)return c;l=c._parent}return null});wrapperBlockAtom.debugLabel="wrapperBlockAtom";const useWrapperBlock=()=>jotai.useAtomValue(wrapperBlockAtom),layoutVariantAtom=atomWithStorage("_layout_variant_mode","DUAL_SIDE_PANEL"),useLayoutVariant=()=>{const[o,n]=jotai.useAtom(layoutVariantAtom),r=useBuilderProp("layoutVariant","DUAL_SIDE_PANEL");return[o||r,n]},CHAI_BUILDER_EVENTS={OPEN_ADD_BLOCK:"OPEN_ADD_BLOCK",CLOSE_ADD_BLOCK:"CLOSE_ADD_BLOCK",SHOW_BLOCK_SETTINGS:"SHOW_BLOCK_SETTINGS"};class PubSub{constructor(){U(this,"subscribers",new Map)}subscribe(n,r){return this.subscribers.has(n)||this.subscribers.set(n,new Set),this.subscribers.get(n).add(r),()=>{const a=this.subscribers.get(n);a&&(a.delete(r),a.size===0&&this.subscribers.delete(n))}}publish(n,r){const a=this.subscribers.get(n);a&&a.forEach(i=>i(r))}}const pubsub=new PubSub,draggedBlockAtom=jotai.atom(null),dropTargetBlockIdAtom=jotai.atom(null),BlockActionLabel=({block:o,label:n})=>{const[,r]=useSelectedBlockIds(),[,a]=useHighlightBlockId(),[,i]=jotai.useAtom(draggedBlockAtom),l=flagged.useFeature("dnd");return jsxRuntime.jsxRuntimeExports.jsxs("div",{className:"mr-10 flex cursor-default items-center space-x-1 px-1",draggable:l?"true":"false",onDragStart:u=>{u.dataTransfer.setData("text/plain",JSON.stringify(lodashEs.pick(o,["_id","_type","_name"]))),i(o),setTimeout(()=>{r([]),a(null)},200)},children:[jsxRuntime.jsxRuntimeExports.jsx(reactIcons.DragHandleDots2Icon,{}),n]})},BlockFloatingSelector=({selectedBlockElement:o,block:n})=>{const r=useRemoveBlocks(),a=useDuplicateBlocks(),[,i]=useSelectedBlockIds(),[,l]=useHighlightBlockId(),[,u]=useSelectedStylingBlocks(),[c]=jotai.useAtom(inlineEditingActiveAtom),{floatingStyles:x,refs:d,update:p}=reactDom.useFloating({placement:"top-start",middleware:[reactDom.shift(),dom.flip()],elements:{reference:o}});web.useResizeObserver(o,()=>p(),o!==null);const m=lodashEs.get(n,"_parent",null),h=lodashEs.isEmpty(lodashEs.get(n,"_name",""))?lodashEs.get(n,"_type",""):lodashEs.get(n,"_name","");return!o||!n||c?null:jsxRuntime.jsxRuntimeExports.jsx(jsxRuntime.jsxRuntimeExports.Fragment,{children:jsxRuntime.jsxRuntimeExports.jsxs("div",{role:"button",tabIndex:0,ref:d.setFloating,style:x,onClick:f=>{f.stopPropagation(),f.preventDefault()},onMouseEnter:f=>{f.stopPropagation(),l(null)},onKeyDown:f=>f.stopPropagation(),className:"isolate z-[999] flex h-6 items-center bg-blue-500 py-2 text-xs text-white",children:[m&&jsxRuntime.jsxRuntimeExports.jsx(reactIcons.ArrowUpIcon,{className:"hover:scale-105",onClick:()=>{u([]),i([m])}}),jsxRuntime.jsxRuntimeExports.jsx(BlockActionLabel,{label:h,block:n}),jsxRuntime.jsxRuntimeExports.jsxs("div",{className:"flex gap-2 px-1",children:[canAddChildBlock(lodashEs.get(n,"_type",""))&&jsxRuntime.jsxRuntimeExports.jsx(reactIcons.PlusIcon,{className:"hover:scale-105",onClick:()=>pubsub.publish(CHAI_BUILDER_EVENTS.OPEN_ADD_BLOCK,n)}),canDuplicateBlock(lodashEs.get(n,"_type",""))?jsxRuntime.jsxRuntimeExports.jsx(reactIcons.CopyIcon,{className:"hover:scale-105",onClick:()=>a([n==null?void 0:n._id])}):null,canDeleteBlock(lodashEs.get(n,"_type",""))?jsxRuntime.jsxRuntimeExports.jsx(reactIcons.TrashIcon,{className:"hover:scale-105",onClick:()=>r([n==null?void 0:n._id])}):null]})]})})},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.js CHANGED
@@ -2490,16 +2490,17 @@ function generateFullClsName(o) {
2490
2490
  return o.dark && (r += "dark:"), o.mq.toLowerCase() !== "xs" && (r += `${o.mq}:`), o.mod && (r += `${o.mod}:`), r += o.cls, r;
2491
2491
  }
2492
2492
  function orderClassesByBreakpoint(o) {
2493
+ o = o.replace(/\s+/g, " ");
2493
2494
  const r = o.split(" ").map(constructClassObject), n = ["xs", "sm", "md", "lg", "xl", "2xl"];
2494
2495
  return r.sort((a, l) => n.indexOf(a.mq) - n.indexOf(l.mq)).map((a) => a.fullCls).join(" ");
2495
2496
  }
2496
2497
  import.meta.vitest && test("orderClassesByBreakpoint", () => {
2497
2498
  expect(orderClassesByBreakpoint("bg-red-400 sm:bg-red-500")).toBe("bg-red-400 sm:bg-red-500"), expect(orderClassesByBreakpoint("bg-red-400 sm:bg-red-500 md:bg-red-600")).toBe(
2498
2499
  "bg-red-400 sm:bg-red-500 md:bg-red-600"
2499
- ), expect(orderClassesByBreakpoint("xl:sticky block sm:absolute")).toBe("block sm:absolute xl:sticky"), expect(orderClassesByBreakpoint("sm:bg-red-500 bg-red-400")).toBe("bg-red-400 sm:bg-red-500"), expect(orderClassesByBreakpoint("sm:w-[30%] w-[30%]")).toBe("w-[30%] sm:w-[30%]");
2500
+ ), expect(orderClassesByBreakpoint("xl:sticky block sm:absolute")).toBe("block sm:absolute xl:sticky"), expect(orderClassesByBreakpoint("sm:bg-red-500 bg-red-400")).toBe("bg-red-400 sm:bg-red-500"), expect(orderClassesByBreakpoint("sm:w-[30%] w-[30%]")).toBe("w-[30%] sm:w-[30%]"), expect(orderClassesByBreakpoint("text-[30px] sm:text-[20px]")).toBe("text-[30px] sm:text-[20px]");
2500
2501
  });
2501
2502
  function removeDuplicateClasses(o) {
2502
- if (!o) return "";
2503
+ if (o = o.replace(/\s+/g, " "), !o) return "";
2503
2504
  const r = ["xs", "sm", "md", "lg", "xl", "2xl"], n = o.split(" ").map(constructClassObject);
2504
2505
  let a = o;
2505
2506
  if (n.length === 1) return n[0].fullCls;
@@ -2513,10 +2514,10 @@ function removeDuplicateClasses(o) {
2513
2514
  break;
2514
2515
  }
2515
2516
  }
2516
- return a.trim();
2517
+ return a.replace(/\s+/g, " ").trim();
2517
2518
  }
2518
2519
  import.meta.vitest && test("removeDuplicateClasses (tailwind classes) at higher breakpoints", () => {
2519
- expect(removeDuplicateClasses("")).toBe(""), expect(removeDuplicateClasses("bg-red-400")).toBe("bg-red-400"), expect(removeDuplicateClasses("bg-red-400 sm:bg-red-500")).toBe("bg-red-400 sm:bg-red-500"), expect(removeDuplicateClasses("bg-red-400 sm:bg-red-400")).toBe("bg-red-400"), expect(removeDuplicateClasses("bg-red-400 sm:bg-red-400 lg:bg-red-400")).toBe("bg-red-400"), expect(removeDuplicateClasses("p-4 sm:p-6 md:p-4")).toBe("p-4 sm:p-6 md:p-4"), expect(removeDuplicateClasses("p-4 sm:p-6 md:p-4 lg:p-4")).toBe("p-4 sm:p-6 md:p-4"), expect(removeDuplicateClasses("sm:bg-red-400 bg-red-400")).toBe("bg-red-400"), expect(removeDuplicateClasses("w-[30%] sm:w-[30%]")).toBe("w-[30%]");
2520
+ expect(removeDuplicateClasses("")).toBe(""), expect(removeDuplicateClasses("bg-red-400")).toBe("bg-red-400"), expect(removeDuplicateClasses("bg-red-400 sm:bg-red-500")).toBe("bg-red-400 sm:bg-red-500"), expect(removeDuplicateClasses("bg-red-400 sm:bg-red-400")).toBe("bg-red-400"), expect(removeDuplicateClasses("bg-red-400 sm:bg-red-400 lg:bg-red-400")).toBe("bg-red-400"), expect(removeDuplicateClasses("p-4 sm:p-6 md:p-4")).toBe("p-4 sm:p-6 md:p-4"), expect(removeDuplicateClasses("p-4 sm:p-6 md:p-4 lg:p-4")).toBe("p-4 sm:p-6 md:p-4"), expect(removeDuplicateClasses("sm:bg-red-400 bg-red-400")).toBe("bg-red-400"), expect(removeDuplicateClasses("w-[30%] sm:w-[30%]")).toBe("w-[30%]"), expect(removeDuplicateClasses("w-[30%] sm:w-[30%] md:w-[40%]")).toBe("w-[30%] md:w-[40%]");
2520
2521
  });
2521
2522
  const selectedStylingBlocksAtom = atom$1([]);
2522
2523
  selectedStylingBlocksAtom.debugLabel = "selectedStylingBlocksAtom";
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.0.0-beta.46",
8
+ "version": "2.0.0-beta.47",
9
9
  "type": "module",
10
10
  "repository": {
11
11
  "type": "git",