@chaibuilder/sdk 3.1.24 → 3.1.26

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/render.cjs CHANGED
@@ -1,3 +1,3 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("./plugin-CSgw-f78.cjs"),d=require("./apply-binding-DvHNFLQD.cjs"),y=require("react/jsx-runtime"),b=require("@chaibuilder/runtime"),L=require("lodash"),t=require("lodash-es"),g=require("react"),q=require("@tailwindcss/aspect-ratio"),j=require("@tailwindcss/forms"),D=require("@tailwindcss/typography");require("tailwindcss-animate");const K=require("./get-chai-builder-theme-B1tr_NJB.cjs"),M=require("@mhsdesign/jit-browser-tailwindcss"),O=require("@tailwindcss/container-queries");async function N(e){const a={pageProps:e.pageProps,block:e.block,lang:e.lang,draft:e.draft,inBuilder:!1},n=await e.dataProvider(a);return t.has(n,"$metadata")&&t.isFunction(e.dataProviderMetadataCallback)&&e.dataProviderMetadataCallback(e.block,n.$metadata),e.children({...t.omit(n,"$metadata")})}const H=()=>y.jsx("div",{}),J=e=>{const{block:a,lang:n,fallbackLang:s,children:i,externalData:o,blocks:l,draft:r,pageProps:c,dataProviderMetadataCallback:k}=e,u=b.getRegisteredChaiBlock(a._type),p=t.get(u,"component",null),P=t.get(e.repeaterData,"index",-1),f=t.get(e.repeaterData,"dataKey",""),I=n===s?"":n,h=d.applyBindingToBlockProps(d.applyLanguage(a,I,u),o,{index:P,key:f}),m=d.getBlockTagAttributes(a,!1),T=R(l,a._id,d.getBlockRuntimeProps(a._type)),S=t.has(u,"dataProvider")&&t.isFunction(u.dataProvider),B={...h,...m,...T},_={blockProps:{},inBuilder:!1,lang:n||s,...B},v=t.get(B,"_show",!0);if(t.isNull(p)||!v)return null;if(S){const x=t.get(u,"suspenseFallback",H);return y.jsx(g.Suspense,{fallback:g.createElement(x),children:y.jsx(N,{lang:n,pageProps:c,block:B,dataProvider:u.dataProvider,...k?{dataProviderMetadataCallback:k}:{},draft:r,children:$=>g.createElement(p,{..._,...$,children:i({_id:a._id,_type:a._type,...t.isArray(h.repeaterItems)?{repeaterItems:d.applyLimit(h.repeaterItems,a),$repeaterItemsKey:h.$repeaterItemsKey,repeaterTotalItems:h.repeaterTotalItems??-1}:{}})})})})}return y.jsx(g.Suspense,{children:g.createElement(p,{..._,children:i({_id:a._id,_type:a._type,...t.isArray(h.repeaterItems)?{repeaterItems:d.applyLimit(h.repeaterItems,a),$repeaterItemsKey:h.$repeaterItemsKey,repeaterTotalItems:h.repeaterTotalItems??-1}:{}})})})},E=e=>{const{blocks:a,parent:n,repeaterData:s,type:i}=e;let o=t.uniqBy(t.filter(a,r=>t.has(r,"_id")&&(t.isEmpty(n)?!r._parent:r._parent===n)),"_id");const l=r=>t.filter(a,c=>c._parent===r).length>0;return(i==="Heading"||i==="Paragraph"||i==="Link")&&(o=d.adjustSpacingInContentBlocks(o)),t.map(o,r=>r?g.createElement(J,{...e,key:r._id,block:r},({_id:c,_type:k,repeaterItems:u,$repeaterItemsKey:p})=>k==="Repeater"?t.isArray(u)&&u.map((P,f)=>g.createElement(E,{...e,parent:r._id,key:`${t.get(r,"_parent","root")}-${r._id}-${f}`,repeaterData:{index:f,dataKey:p}})):l(c)?g.createElement(E,{...e,parent:r._id,key:`${t.get(r,"_parent","root")}-${r._id}`,repeaterData:s,type:r._type}):null):null)},R=(e,a,n)=>t.isEmpty(n)?{}:Object.entries(n).reduce((s,[i,o])=>{const l=[];let r=t.find(e,{_id:a});for(;r;)l.push(r),r=t.find(e,{_id:r._parent});const c=t.find(l,{_type:o.block});return c&&(s[i]=t.get(c,t.get(o,"prop"),null)),s},{});function V(e){if(t.isEmpty(e.lang)&&!t.isEmpty(e.fallbackLang))throw new Error("lang prop is required when fallbackLang is provided");if(t.isEmpty(e.blocks))return null;const a=e.lang??"en",n=e.fallbackLang??a;return y.jsx(E,{...e,lang:a,fallbackLang:n})}async function W(e){const a=await e.dataProvider;return t.has(a,"$metadata")&&t.isFunction(e.dataProviderMetadataCallback)&&e.dataProviderMetadataCallback(e.block,a.$metadata),e.children({...t.omit(a,"$metadata")})}const U=()=>y.jsx("div",{}),G=async e=>{const{block:a,lang:n,fallbackLang:s,children:i,externalData:o,blocks:l,draft:r,pageProps:c,dataProviderMetadataCallback:k,dataProviders:u}=e,p=b.getRegisteredChaiBlock(a._type),P=t.get(p,"component",null),f=t.get(e.repeaterData,"index",-1),I=t.get(e.repeaterData,"dataKey",""),h=n===s?"":n,m=d.applyBindingToBlockProps(d.applyLanguage(a,h,p),o,{index:f,key:I}),T=d.getBlockTagAttributes(a,!1),S=R(l,a._id,d.getBlockRuntimeProps(a._type)),B=t.has(p,"dataProvider")&&t.isFunction(p.dataProvider),_={...m,...T,...S},v={blockProps:{},inBuilder:!1,lang:n||s,..._},x=t.get(_,"_show",!0);if(t.isNull(P)||!x)return null;if(B){const $=t.get(u,a._id,Promise.resolve({})),A=t.get(p,"suspenseFallback",U);return y.jsx(g.Suspense,{fallback:g.createElement(A),children:y.jsx(W,{lang:n,pageProps:c,block:_,dataProvider:$,...k?{dataProviderMetadataCallback:k}:{},draft:r,children:F=>g.createElement(P,{...v,...F,children:i({_id:a._id,_type:a._type,...t.isArray(m.repeaterItems)?{repeaterItems:d.applyLimit(m.repeaterItems,a),$repeaterItemsKey:m.$repeaterItemsKey,repeaterTotalItems:m.repeaterTotalItems??-1}:{}})})})})}return y.jsx(g.Suspense,{children:g.createElement(P,{...v,children:i({_id:a._id,_type:a._type,...t.isArray(m.repeaterItems)?{repeaterItems:d.applyLimit(m.repeaterItems,a),$repeaterItemsKey:m.$repeaterItemsKey,repeaterTotalItems:m.repeaterTotalItems??-1}:{}})})})},C=async e=>{const{blocks:a,parent:n,repeaterData:s,type:i}=e;let o=t.uniqBy(t.filter(a,r=>t.has(r,"_id")&&(t.isEmpty(n)?!r._parent:r._parent===n)),"_id");const l=r=>t.filter(a,c=>c._parent===r).length>0;return(i==="Heading"||i==="Paragraph"||i==="Link")&&(o=d.adjustSpacingInContentBlocks(o)),t.map(o,r=>r?g.createElement(G,{dataProviders:e.dataProviders,...e,key:r._id,block:r},({_id:c,_type:k,repeaterItems:u,$repeaterItemsKey:p})=>k==="Repeater"?t.isArray(u)&&u.map((P,f)=>g.createElement(C,{...e,parent:r._id,key:`${t.get(r,"_parent","root")}-${r._id}-${f}`,repeaterData:{index:f,dataKey:p}})):l(c)?g.createElement(C,{...e,parent:r._id,key:`${t.get(r,"_parent","root")}-${r._id}`,repeaterData:s,type:r._type}):null):null)};async function z(e){if(t.isEmpty(e.lang)&&!t.isEmpty(e.fallbackLang))throw new Error("lang prop is required when fallbackLang is provided");if(t.isEmpty(e.blocks))return null;const a=e.lang??"en",n=e.fallbackLang??a;if(e.dataProviders)return y.jsx(C,{...e,lang:a,fallbackLang:n,dataProviders:e.dataProviders});const i=e.blocks.filter(o=>{const l=b.getRegisteredChaiBlock(o._type);return!!(L.has(l,"dataProvider")&&L.isFunction(l.dataProvider))}).reduce((o,l)=>{const r=b.getRegisteredChaiBlock(l._type),c={pageProps:e.pageProps,block:l,lang:e.lang,draft:e.draft,inBuilder:!1};return o[l._id]=r.dataProvider(c),o},{});return y.jsx(C,{...e,lang:a,fallbackLang:n,dataProviders:i})}function Q(e,a){const n=e.filter(({_type:s})=>s==="GlobalBlock"||s==="PartialBlock");for(let s=0;s<n.length;s++){const i=n[s],o=t.get(i,"partialBlockId",t.get(i,"globalBlock",""));if(o==="")continue;let l=t.cloneDeep(t.get(a,o,[]));i._parent&&(l==null?void 0:l.length)>0&&(l=l.map(c=>(t.isEmpty(c._parent)&&(c._parent=i._parent),c)));const r=e.indexOf(i);e.splice(r,1,...l)}return e}const X=e=>{if(!e)return[];try{return JSON.parse(Y(e)).filter(n=>!n._type.startsWith("@chai"))}catch{return[{_type:"Paragraph",_id:"error",content:"Invalid JSON. Please check the JSON string."}]}};function Y(e){const a=/(asset:\/\/|https:\/\/asset\.localhost\/)(?:localhost\/)?[^"']+/g;return e.replace(a,n=>{const s=decodeURIComponent(n),i=s.indexOf("public");return i!==-1?s.substring(i+6):s})}async function Z(e,a=[],n=!1){return await M.createTailwindcss({tailwindConfig:{darkMode:"class",safelist:a,theme:{extend:{...K.getChaiBuilderTheme(),keyframes:{"accordion-down":{from:{height:"0"},to:{height:"var(--radix-accordion-content-height)"}},"accordion-up":{from:{height:"var(--radix-accordion-content-height)"},to:{height:"0"}}},animation:{"accordion-down":"accordion-down 0.2s ease-out","accordion-up":"accordion-up 0.2s ease-out"}}},plugins:[j,D,q,O,w.chaiBuilderPlugin],corePlugins:{preflight:n}}}).generateStylesFromContent(` ${n?"@tailwind base;":""}
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("./plugin-CSgw-f78.cjs"),d=require("./apply-binding-Dvnd_Vhq.cjs"),y=require("react/jsx-runtime"),b=require("@chaibuilder/runtime"),t=require("lodash-es"),g=require("react"),F=require("@tailwindcss/aspect-ratio"),j=require("@tailwindcss/forms"),q=require("@tailwindcss/typography");require("tailwindcss-animate");const D=require("./get-chai-builder-theme-B1tr_NJB.cjs"),K=require("@mhsdesign/jit-browser-tailwindcss"),M=require("@tailwindcss/container-queries");async function O(e){const a={pageProps:e.pageProps,block:e.block,lang:e.lang,draft:e.draft,inBuilder:!1},n=await e.dataProvider(a);return t.has(n,"$metadata")&&t.isFunction(e.dataProviderMetadataCallback)&&e.dataProviderMetadataCallback(e.block,n.$metadata),e.children({...t.omit(n,"$metadata")})}const N=()=>y.jsx("div",{}),H=e=>{const{block:a,lang:n,fallbackLang:s,children:i,externalData:o,blocks:l,draft:r,pageProps:c,dataProviderMetadataCallback:k}=e,u=b.getRegisteredChaiBlock(a._type),p=t.get(u,"component",null),P=t.get(e.repeaterData,"index",-1),f=t.get(e.repeaterData,"dataKey",""),I=n===s?"":n,h=d.applyBindingToBlockProps(d.applyLanguage(a,I,u),o,{index:P,key:f}),m=d.getBlockTagAttributes(a,!1),T=L(l,a._id,d.getBlockRuntimeProps(a._type)),S=t.has(u,"dataProvider")&&t.isFunction(u.dataProvider),B={...h,...m,...T},_={blockProps:{},inBuilder:!1,lang:n||s,...B},v=t.get(B,"_show",!0);if(t.isNull(p)||!v)return null;if(S){const x=t.get(u,"suspenseFallback",N);return y.jsx(g.Suspense,{fallback:g.createElement(x),children:y.jsx(O,{lang:n,pageProps:c,block:B,dataProvider:u.dataProvider,...k?{dataProviderMetadataCallback:k}:{},draft:r,children:$=>g.createElement(p,{..._,...$,children:i({_id:a._id,_type:a._type,...t.isArray(h.repeaterItems)?{repeaterItems:d.applyLimit(h.repeaterItems,a),$repeaterItemsKey:h.$repeaterItemsKey,repeaterTotalItems:h.repeaterTotalItems??-1}:{}})})})})}return y.jsx(g.Suspense,{children:g.createElement(p,{..._,children:i({_id:a._id,_type:a._type,...t.isArray(h.repeaterItems)?{repeaterItems:d.applyLimit(h.repeaterItems,a),$repeaterItemsKey:h.$repeaterItemsKey,repeaterTotalItems:h.repeaterTotalItems??-1}:{}})})})},E=e=>{const{blocks:a,parent:n,repeaterData:s,type:i}=e;let o=t.uniqBy(t.filter(a,r=>t.has(r,"_id")&&(t.isEmpty(n)?!r._parent:r._parent===n)),"_id");const l=r=>t.filter(a,c=>c._parent===r).length>0;return(i==="Heading"||i==="Paragraph"||i==="Link")&&(o=d.adjustSpacingInContentBlocks(o)),t.map(o,r=>r?g.createElement(H,{...e,key:r._id,block:r},({_id:c,_type:k,repeaterItems:u,$repeaterItemsKey:p})=>k==="Repeater"?t.isArray(u)&&u.map((P,f)=>g.createElement(E,{...e,parent:r._id,key:`${t.get(r,"_parent","root")}-${r._id}-${f}`,repeaterData:{index:f,dataKey:p}})):l(c)?g.createElement(E,{...e,parent:r._id,key:`${t.get(r,"_parent","root")}-${r._id}`,repeaterData:s,type:r._type}):null):null)},L=(e,a,n)=>t.isEmpty(n)?{}:Object.entries(n).reduce((s,[i,o])=>{const l=[];let r=t.find(e,{_id:a});for(;r;)l.push(r),r=t.find(e,{_id:r._parent});const c=t.find(l,{_type:o.block});return c&&(s[i]=t.get(c,t.get(o,"prop"),null)),s},{});function J(e){if(t.isEmpty(e.lang)&&!t.isEmpty(e.fallbackLang))throw new Error("lang prop is required when fallbackLang is provided");if(t.isEmpty(e.blocks))return null;const a=e.lang??"en",n=e.fallbackLang??a;return y.jsx(E,{...e,lang:a,fallbackLang:n})}async function V(e){const a=await e.dataProvider;return t.has(a,"$metadata")&&t.isFunction(e.dataProviderMetadataCallback)&&e.dataProviderMetadataCallback(e.block,a.$metadata),e.children({...t.omit(a,"$metadata")})}const W=()=>y.jsx("div",{}),U=async e=>{const{block:a,lang:n,fallbackLang:s,children:i,externalData:o,blocks:l,draft:r,pageProps:c,dataProviderMetadataCallback:k,dataProviders:u}=e,p=b.getRegisteredChaiBlock(a._type),P=t.get(p,"component",null),f=t.get(e.repeaterData,"index",-1),I=t.get(e.repeaterData,"dataKey",""),h=n===s?"":n,m=d.applyBindingToBlockProps(d.applyLanguage(a,h,p),o,{index:f,key:I}),T=d.getBlockTagAttributes(a,!1),S=L(l,a._id,d.getBlockRuntimeProps(a._type)),B=t.has(p,"dataProvider")&&t.isFunction(p.dataProvider),_={...m,...T,...S},v={blockProps:{},inBuilder:!1,lang:n||s,..._},x=t.get(_,"_show",!0);if(t.isNull(P)||!x)return null;if(B){const $=t.get(u,a._id,Promise.resolve({})),R=t.get(p,"suspenseFallback",W);return y.jsx(g.Suspense,{fallback:g.createElement(R),children:y.jsx(V,{lang:n,pageProps:c,block:_,dataProvider:$,...k?{dataProviderMetadataCallback:k}:{},draft:r,children:A=>g.createElement(P,{...v,...A,children:i({_id:a._id,_type:a._type,...t.isArray(m.repeaterItems)?{repeaterItems:d.applyLimit(m.repeaterItems,a),$repeaterItemsKey:m.$repeaterItemsKey,repeaterTotalItems:m.repeaterTotalItems??-1}:{}})})})})}return y.jsx(g.Suspense,{children:g.createElement(P,{...v,children:i({_id:a._id,_type:a._type,...t.isArray(m.repeaterItems)?{repeaterItems:d.applyLimit(m.repeaterItems,a),$repeaterItemsKey:m.$repeaterItemsKey,repeaterTotalItems:m.repeaterTotalItems??-1}:{}})})})},C=async e=>{const{blocks:a,parent:n,repeaterData:s,type:i}=e;let o=t.uniqBy(t.filter(a,r=>t.has(r,"_id")&&(t.isEmpty(n)?!r._parent:r._parent===n)),"_id");const l=r=>t.filter(a,c=>c._parent===r).length>0;return(i==="Heading"||i==="Paragraph"||i==="Link")&&(o=d.adjustSpacingInContentBlocks(o)),t.map(o,r=>r?g.createElement(U,{dataProviders:e.dataProviders,...e,key:r._id,block:r},({_id:c,_type:k,repeaterItems:u,$repeaterItemsKey:p})=>k==="Repeater"?t.isArray(u)&&u.map((P,f)=>g.createElement(C,{...e,parent:r._id,key:`${t.get(r,"_parent","root")}-${r._id}-${f}`,repeaterData:{index:f,dataKey:p}})):l(c)?g.createElement(C,{...e,parent:r._id,key:`${t.get(r,"_parent","root")}-${r._id}`,repeaterData:s,type:r._type}):null):null)};async function G(e){if(t.isEmpty(e.lang)&&!t.isEmpty(e.fallbackLang))throw new Error("lang prop is required when fallbackLang is provided");if(t.isEmpty(e.blocks))return null;const a=e.lang??"en",n=e.fallbackLang??a;if(e.dataProviders)return y.jsx(C,{...e,lang:a,fallbackLang:n,dataProviders:e.dataProviders});const i=e.blocks.filter(o=>{const l=b.getRegisteredChaiBlock(o._type);return!!(t.has(l,"dataProvider")&&t.isFunction(l.dataProvider))}).reduce((o,l)=>{const r=b.getRegisteredChaiBlock(l._type),c={pageProps:e.pageProps,block:l,lang:e.lang,draft:e.draft,inBuilder:!1};return o[l._id]=r.dataProvider(c),o},{});return y.jsx(C,{...e,lang:a,fallbackLang:n,dataProviders:i})}function z(e,a){const n=e.filter(({_type:s})=>s==="GlobalBlock"||s==="PartialBlock");for(let s=0;s<n.length;s++){const i=n[s],o=t.get(i,"partialBlockId",t.get(i,"globalBlock",""));if(o==="")continue;let l=t.cloneDeep(t.get(a,o,[]));i._parent&&(l==null?void 0:l.length)>0&&(l=l.map(c=>(t.isEmpty(c._parent)&&(c._parent=i._parent),c)));const r=e.indexOf(i);e.splice(r,1,...l)}return e}const Q=e=>{if(!e)return[];try{return JSON.parse(X(e)).filter(n=>!n._type.startsWith("@chai"))}catch{return[{_type:"Paragraph",_id:"error",content:"Invalid JSON. Please check the JSON string."}]}};function X(e){const a=/(asset:\/\/|https:\/\/asset\.localhost\/)(?:localhost\/)?[^"']+/g;return e.replace(a,n=>{const s=decodeURIComponent(n),i=s.indexOf("public");return i!==-1?s.substring(i+6):s})}async function Y(e,a=[],n=!1){return await K.createTailwindcss({tailwindConfig:{darkMode:"class",safelist:a,theme:{extend:{...D.getChaiBuilderTheme(),keyframes:{"accordion-down":{from:{height:"0"},to:{height:"var(--radix-accordion-content-height)"}},"accordion-up":{from:{height:"var(--radix-accordion-content-height)"},to:{height:"0"}}},animation:{"accordion-down":"accordion-down 0.2s ease-out","accordion-up":"accordion-up 0.2s ease-out"}}},plugins:[j,q,F,M,w.chaiBuilderPlugin],corePlugins:{preflight:n}}}).generateStylesFromContent(` ${n?"@tailwind base;":""}
2
2
  @tailwind components;
3
- @tailwind utilities;`,e)}const ee=(e,a)=>{const n=JSON.stringify(e).replace(/#styles:([^"]*)/g,(s,i)=>`#styles:${i.replace(/,/g," ")}`.replace(/#styles:/g,""));return Z([n],[],a)},te=async(e,a=!1)=>await ee(e,a);exports.getChaiThemeCssVariables=w.getChaiThemeCssVariables;exports.getThemeFontsCSSImport=w.getThemeFontsCSSImport;exports.getThemeFontsLinkMarkup=w.getThemeFontsLinkMarkup;exports.applyChaiDataBinding=d.applyChaiDataBinding;exports.convertHTMLToChaiBlocks=d.getBlocksFromHTML;exports.AsyncRenderChaiBlocks=z;exports.RenderChaiBlocks=V;exports.convertToBlocks=X;exports.getMergedPartialBlocks=Q;exports.getStylesForBlocks=te;
3
+ @tailwind utilities;`,e)}const Z=(e,a)=>{const n=JSON.stringify(e).replace(/#styles:([^"]*)/g,(s,i)=>`#styles:${i.replace(/,/g," ")}`.replace(/#styles:/g,""));return Y([n],[],a)},ee=async(e,a=!1)=>await Z(e,a);exports.getChaiThemeCssVariables=w.getChaiThemeCssVariables;exports.getThemeFontsCSSImport=w.getThemeFontsCSSImport;exports.getThemeFontsLinkMarkup=w.getThemeFontsLinkMarkup;exports.applyChaiDataBinding=d.applyChaiDataBinding;exports.convertHTMLToChaiBlocks=d.getBlocksFromHTML;exports.AsyncRenderChaiBlocks=G;exports.RenderChaiBlocks=J;exports.convertToBlocks=Q;exports.getMergedPartialBlocks=z;exports.getStylesForBlocks=ee;
package/dist/render.d.ts CHANGED
@@ -2,7 +2,7 @@ import { ChaiFontViaUrl } from '@chaibuilder/runtime';
2
2
  import { ChaiPageProps } from '@chaibuilder/runtime';
3
3
  import { JSX } from 'react/jsx-runtime';
4
4
 
5
- export declare const applyChaiDataBinding: (block: Record<string, string>, pageExternalData: Record<string, any>) => any;
5
+ export declare const applyChaiDataBinding: (block: Record<string, string>, pageExternalData: Record<string, any>) => Record<string, string>;
6
6
 
7
7
  export declare function AsyncRenderChaiBlocks(props: RenderChaiBlocksProps): Promise<JSX.Element>;
8
8
 
@@ -70,9 +70,9 @@ export declare function getMergedPartialBlocks(blocks: ChaiBlock[], partials: Re
70
70
  */
71
71
  export declare const getStylesForBlocks: (blocks: ChaiBlock[], includeBaseStyles?: boolean) => Promise<string>;
72
72
 
73
- export declare const getThemeFontsCSSImport: (fonts: ChaiFontViaUrl[]) => any;
73
+ export declare const getThemeFontsCSSImport: (fonts: ChaiFontViaUrl[]) => string;
74
74
 
75
- export declare const getThemeFontsLinkMarkup: (fonts: ChaiFontViaUrl[]) => any;
75
+ export declare const getThemeFontsLinkMarkup: (fonts: ChaiFontViaUrl[]) => string;
76
76
 
77
77
  declare type HexColor = string;
78
78
 
package/dist/render.js CHANGED
@@ -1,20 +1,19 @@
1
1
  import { c as Q } from "./plugin-BOcGV_IY.js";
2
- import { a as Ae, b as Me, e as Oe } from "./plugin-BOcGV_IY.js";
3
- import { a as O, b as N, g as E, c as J, d as I, e as j } from "./apply-binding-DCno1xQL.js";
4
- import { f as Ee, h as Je } from "./apply-binding-DCno1xQL.js";
2
+ import { a as Ke, b as Re, e as Ae } from "./plugin-BOcGV_IY.js";
3
+ import { a as O, b as N, g as E, c as J, d as C, e as j } from "./apply-binding-COFSiTeM.js";
4
+ import { f as Me, h as Oe } from "./apply-binding-COFSiTeM.js";
5
5
  import { jsx as f } from "react/jsx-runtime";
6
- import { getRegisteredChaiBlock as C } from "@chaibuilder/runtime";
7
- import { has as X, isFunction as Y } from "lodash";
8
- import { has as b, isFunction as L, omit as q, get as d, isNull as H, isArray as v, uniqBy as W, filter as $, isEmpty as h, map as U, find as R, cloneDeep as Z } from "lodash-es";
9
- import { Suspense as S, createElement as g } from "react";
10
- import ee from "@tailwindcss/aspect-ratio";
11
- import te from "@tailwindcss/forms";
12
- import ae from "@tailwindcss/typography";
6
+ import { getRegisteredChaiBlock as $ } from "@chaibuilder/runtime";
7
+ import { has as P, isFunction as w, omit as q, get as d, isNull as H, isArray as b, uniqBy as W, filter as S, isEmpty as h, map as U, find as A, cloneDeep as X } from "lodash-es";
8
+ import { Suspense as x, createElement as g } from "react";
9
+ import Y from "@tailwindcss/aspect-ratio";
10
+ import Z from "@tailwindcss/forms";
11
+ import ee from "@tailwindcss/typography";
13
12
  import "tailwindcss-animate";
14
- import { g as re } from "./get-chai-builder-theme-BarMkcGH.js";
15
- import { createTailwindcss as ne } from "@mhsdesign/jit-browser-tailwindcss";
16
- import ie from "@tailwindcss/container-queries";
17
- async function oe(e) {
13
+ import { g as te } from "./get-chai-builder-theme-BarMkcGH.js";
14
+ import { createTailwindcss as ae } from "@mhsdesign/jit-browser-tailwindcss";
15
+ import re from "@tailwindcss/container-queries";
16
+ async function ne(e) {
18
17
  const t = {
19
18
  pageProps: e.pageProps,
20
19
  block: e.block,
@@ -22,30 +21,30 @@ async function oe(e) {
22
21
  draft: e.draft,
23
22
  inBuilder: !1
24
23
  }, r = await e.dataProvider(t);
25
- return b(r, "$metadata") && L(e.dataProviderMetadataCallback) && e.dataProviderMetadataCallback(e.block, r.$metadata), e.children({
24
+ return P(r, "$metadata") && w(e.dataProviderMetadataCallback) && e.dataProviderMetadataCallback(e.block, r.$metadata), e.children({
26
25
  ...q(r, "$metadata")
27
26
  });
28
27
  }
29
- const se = () => /* @__PURE__ */ f("div", {}), le = (e) => {
30
- const { block: t, lang: r, fallbackLang: i, children: n, externalData: s, blocks: o, draft: a, pageProps: l, dataProviderMetadataCallback: k } = e, c = C(t._type), u = d(c, "component", null), _ = d(e.repeaterData, "index", -1), y = d(e.repeaterData, "dataKey", ""), m = O(
28
+ const ie = () => /* @__PURE__ */ f("div", {}), oe = (e) => {
29
+ const { block: t, lang: r, fallbackLang: i, children: n, externalData: s, blocks: o, draft: a, pageProps: l, dataProviderMetadataCallback: k } = e, c = $(t._type), u = d(c, "component", null), _ = d(e.repeaterData, "index", -1), y = d(e.repeaterData, "dataKey", ""), m = O(
31
30
  N(t, r === i ? "" : r, c),
32
31
  s,
33
32
  { index: _, key: y }
34
- ), p = E(t, !1), T = V(o, t._id, J(t._type)), D = b(c, "dataProvider") && L(c.dataProvider), B = {
33
+ ), p = E(t, !1), T = V(o, t._id, J(t._type)), D = P(c, "dataProvider") && w(c.dataProvider), B = {
35
34
  ...m,
36
35
  ...p,
37
36
  ...T
38
- }, P = {
37
+ }, v = {
39
38
  blockProps: {},
40
39
  inBuilder: !1,
41
40
  lang: r || i,
42
41
  ...B
43
- }, w = d(B, "_show", !0);
44
- if (H(u) || !w) return null;
42
+ }, I = d(B, "_show", !0);
43
+ if (H(u) || !I) return null;
45
44
  if (D) {
46
- const K = d(c, "suspenseFallback", se);
47
- return /* @__PURE__ */ f(S, { fallback: g(K), children: /* @__PURE__ */ f(
48
- oe,
45
+ const K = d(c, "suspenseFallback", ie);
46
+ return /* @__PURE__ */ f(x, { fallback: g(K), children: /* @__PURE__ */ f(
47
+ ne,
49
48
  {
50
49
  lang: r,
51
50
  pageProps: l,
@@ -53,14 +52,14 @@ const se = () => /* @__PURE__ */ f("div", {}), le = (e) => {
53
52
  dataProvider: c.dataProvider,
54
53
  ...k ? { dataProviderMetadataCallback: k } : {},
55
54
  draft: a,
56
- children: (F) => g(u, {
57
- ...P,
58
- ...F,
55
+ children: (R) => g(u, {
56
+ ...v,
57
+ ...R,
59
58
  children: n({
60
59
  _id: t._id,
61
60
  _type: t._type,
62
- ...v(m.repeaterItems) ? {
63
- repeaterItems: I(m.repeaterItems, t),
61
+ ...b(m.repeaterItems) ? {
62
+ repeaterItems: C(m.repeaterItems, t),
64
63
  $repeaterItemsKey: m.$repeaterItemsKey,
65
64
  repeaterTotalItems: m.repeaterTotalItems ?? -1
66
65
  } : {}
@@ -69,27 +68,27 @@ const se = () => /* @__PURE__ */ f("div", {}), le = (e) => {
69
68
  }
70
69
  ) });
71
70
  }
72
- return /* @__PURE__ */ f(S, { children: g(u, {
73
- ...P,
71
+ return /* @__PURE__ */ f(x, { children: g(u, {
72
+ ...v,
74
73
  children: n({
75
74
  _id: t._id,
76
75
  _type: t._type,
77
- ...v(m.repeaterItems) ? {
78
- repeaterItems: I(m.repeaterItems, t),
76
+ ...b(m.repeaterItems) ? {
77
+ repeaterItems: C(m.repeaterItems, t),
79
78
  $repeaterItemsKey: m.$repeaterItemsKey,
80
79
  repeaterTotalItems: m.repeaterTotalItems ?? -1
81
80
  } : {}
82
81
  })
83
82
  }) });
84
- }, A = (e) => {
83
+ }, F = (e) => {
85
84
  const { blocks: t, parent: r, repeaterData: i, type: n } = e;
86
85
  let s = W(
87
- $(t, (a) => b(a, "_id") && (h(r) ? !a._parent : a._parent === r)),
86
+ S(t, (a) => P(a, "_id") && (h(r) ? !a._parent : a._parent === r)),
88
87
  "_id"
89
88
  );
90
- const o = (a) => $(t, (l) => l._parent === a).length > 0;
91
- return (n === "Heading" || n === "Paragraph" || n === "Link") && (s = j(s)), U(s, (a) => a ? /* @__PURE__ */ g(le, { ...e, key: a._id, block: a }, ({ _id: l, _type: k, repeaterItems: c, $repeaterItemsKey: u }) => k === "Repeater" ? v(c) && c.map((_, y) => /* @__PURE__ */ g(
92
- A,
89
+ const o = (a) => S(t, (l) => l._parent === a).length > 0;
90
+ return (n === "Heading" || n === "Paragraph" || n === "Link") && (s = j(s)), U(s, (a) => a ? /* @__PURE__ */ g(oe, { ...e, key: a._id, block: a }, ({ _id: l, _type: k, repeaterItems: c, $repeaterItemsKey: u }) => k === "Repeater" ? b(c) && c.map((_, y) => /* @__PURE__ */ g(
91
+ F,
93
92
  {
94
93
  ...e,
95
94
  parent: a._id,
@@ -97,7 +96,7 @@ const se = () => /* @__PURE__ */ f("div", {}), le = (e) => {
97
96
  repeaterData: { index: y, dataKey: u }
98
97
  }
99
98
  )) : o(l) ? /* @__PURE__ */ g(
100
- A,
99
+ F,
101
100
  {
102
101
  ...e,
103
102
  parent: a._id,
@@ -108,27 +107,27 @@ const se = () => /* @__PURE__ */ f("div", {}), le = (e) => {
108
107
  ) : null) : null);
109
108
  }, V = (e, t, r) => h(r) ? {} : Object.entries(r).reduce((i, [n, s]) => {
110
109
  const o = [];
111
- let a = R(e, { _id: t });
110
+ let a = A(e, { _id: t });
112
111
  for (; a; )
113
- o.push(a), a = R(e, { _id: a._parent });
114
- const l = R(o, { _type: s.block });
112
+ o.push(a), a = A(e, { _id: a._parent });
113
+ const l = A(o, { _type: s.block });
115
114
  return l && (i[n] = d(l, d(s, "prop"), null)), i;
116
115
  }, {});
117
- function xe(e) {
116
+ function Ce(e) {
118
117
  if (h(e.lang) && !h(e.fallbackLang))
119
118
  throw new Error("lang prop is required when fallbackLang is provided");
120
119
  if (h(e.blocks))
121
120
  return null;
122
121
  const t = e.lang ?? "en", r = e.fallbackLang ?? t;
123
- return /* @__PURE__ */ f(A, { ...e, lang: t, fallbackLang: r });
122
+ return /* @__PURE__ */ f(F, { ...e, lang: t, fallbackLang: r });
124
123
  }
125
- async function de(e) {
124
+ async function se(e) {
126
125
  const t = await e.dataProvider;
127
- return b(t, "$metadata") && L(e.dataProviderMetadataCallback) && e.dataProviderMetadataCallback(e.block, t.$metadata), e.children({
126
+ return P(t, "$metadata") && w(e.dataProviderMetadataCallback) && e.dataProviderMetadataCallback(e.block, t.$metadata), e.children({
128
127
  ...q(t, "$metadata")
129
128
  });
130
129
  }
131
- const ce = () => /* @__PURE__ */ f("div", {}), ue = async (e) => {
130
+ const le = () => /* @__PURE__ */ f("div", {}), de = async (e) => {
132
131
  const {
133
132
  block: t,
134
133
  lang: r,
@@ -140,40 +139,40 @@ const ce = () => /* @__PURE__ */ f("div", {}), ue = async (e) => {
140
139
  pageProps: l,
141
140
  dataProviderMetadataCallback: k,
142
141
  dataProviders: c
143
- } = e, u = C(t._type), _ = d(u, "component", null), y = d(e.repeaterData, "index", -1), M = d(e.repeaterData, "dataKey", ""), p = O(
142
+ } = e, u = $(t._type), _ = d(u, "component", null), y = d(e.repeaterData, "index", -1), M = d(e.repeaterData, "dataKey", ""), p = O(
144
143
  N(t, r === i ? "" : r, u),
145
144
  s,
146
145
  { index: y, key: M }
147
- ), T = E(t, !1), D = V(o, t._id, J(t._type)), B = b(u, "dataProvider") && L(u.dataProvider), P = {
146
+ ), T = E(t, !1), D = V(o, t._id, J(t._type)), B = P(u, "dataProvider") && w(u.dataProvider), v = {
148
147
  ...p,
149
148
  ...T,
150
149
  ...D
151
- }, w = {
150
+ }, I = {
152
151
  blockProps: {},
153
152
  inBuilder: !1,
154
153
  lang: r || i,
155
- ...P
156
- }, K = d(P, "_show", !0);
154
+ ...v
155
+ }, K = d(v, "_show", !0);
157
156
  if (H(_) || !K) return null;
158
157
  if (B) {
159
- const F = d(c, t._id, Promise.resolve({})), G = d(u, "suspenseFallback", ce);
160
- return /* @__PURE__ */ f(S, { fallback: g(G), children: /* @__PURE__ */ f(
161
- de,
158
+ const R = d(c, t._id, Promise.resolve({})), G = d(u, "suspenseFallback", le);
159
+ return /* @__PURE__ */ f(x, { fallback: g(G), children: /* @__PURE__ */ f(
160
+ se,
162
161
  {
163
162
  lang: r,
164
163
  pageProps: l,
165
- block: P,
166
- dataProvider: F,
164
+ block: v,
165
+ dataProvider: R,
167
166
  ...k ? { dataProviderMetadataCallback: k } : {},
168
167
  draft: a,
169
168
  children: (z) => g(_, {
170
- ...w,
169
+ ...I,
171
170
  ...z,
172
171
  children: n({
173
172
  _id: t._id,
174
173
  _type: t._type,
175
- ...v(p.repeaterItems) ? {
176
- repeaterItems: I(p.repeaterItems, t),
174
+ ...b(p.repeaterItems) ? {
175
+ repeaterItems: C(p.repeaterItems, t),
177
176
  $repeaterItemsKey: p.$repeaterItemsKey,
178
177
  repeaterTotalItems: p.repeaterTotalItems ?? -1
179
178
  } : {}
@@ -182,27 +181,27 @@ const ce = () => /* @__PURE__ */ f("div", {}), ue = async (e) => {
182
181
  }
183
182
  ) });
184
183
  }
185
- return /* @__PURE__ */ f(S, { children: g(_, {
186
- ...w,
184
+ return /* @__PURE__ */ f(x, { children: g(_, {
185
+ ...I,
187
186
  children: n({
188
187
  _id: t._id,
189
188
  _type: t._type,
190
- ...v(p.repeaterItems) ? {
191
- repeaterItems: I(p.repeaterItems, t),
189
+ ...b(p.repeaterItems) ? {
190
+ repeaterItems: C(p.repeaterItems, t),
192
191
  $repeaterItemsKey: p.$repeaterItemsKey,
193
192
  repeaterTotalItems: p.repeaterTotalItems ?? -1
194
193
  } : {}
195
194
  })
196
195
  }) });
197
- }, x = async (e) => {
196
+ }, L = async (e) => {
198
197
  const { blocks: t, parent: r, repeaterData: i, type: n } = e;
199
198
  let s = W(
200
- $(t, (a) => b(a, "_id") && (h(r) ? !a._parent : a._parent === r)),
199
+ S(t, (a) => P(a, "_id") && (h(r) ? !a._parent : a._parent === r)),
201
200
  "_id"
202
201
  );
203
- const o = (a) => $(t, (l) => l._parent === a).length > 0;
204
- return (n === "Heading" || n === "Paragraph" || n === "Link") && (s = j(s)), U(s, (a) => a ? /* @__PURE__ */ g(ue, { dataProviders: e.dataProviders, ...e, key: a._id, block: a }, ({ _id: l, _type: k, repeaterItems: c, $repeaterItemsKey: u }) => k === "Repeater" ? v(c) && c.map((_, y) => /* @__PURE__ */ g(
205
- x,
202
+ const o = (a) => S(t, (l) => l._parent === a).length > 0;
203
+ return (n === "Heading" || n === "Paragraph" || n === "Link") && (s = j(s)), U(s, (a) => a ? /* @__PURE__ */ g(de, { dataProviders: e.dataProviders, ...e, key: a._id, block: a }, ({ _id: l, _type: k, repeaterItems: c, $repeaterItemsKey: u }) => k === "Repeater" ? b(c) && c.map((_, y) => /* @__PURE__ */ g(
204
+ L,
206
205
  {
207
206
  ...e,
208
207
  parent: a._id,
@@ -210,7 +209,7 @@ const ce = () => /* @__PURE__ */ f("div", {}), ue = async (e) => {
210
209
  repeaterData: { index: y, dataKey: u }
211
210
  }
212
211
  )) : o(l) ? /* @__PURE__ */ g(
213
- x,
212
+ L,
214
213
  {
215
214
  ...e,
216
215
  parent: a._id,
@@ -220,20 +219,20 @@ const ce = () => /* @__PURE__ */ f("div", {}), ue = async (e) => {
220
219
  }
221
220
  ) : null) : null);
222
221
  };
223
- async function Le(e) {
222
+ async function $e(e) {
224
223
  if (h(e.lang) && !h(e.fallbackLang))
225
224
  throw new Error("lang prop is required when fallbackLang is provided");
226
225
  if (h(e.blocks))
227
226
  return null;
228
227
  const t = e.lang ?? "en", r = e.fallbackLang ?? t;
229
228
  if (e.dataProviders)
230
- return /* @__PURE__ */ f(x, { ...e, lang: t, fallbackLang: r, dataProviders: e.dataProviders });
229
+ return /* @__PURE__ */ f(L, { ...e, lang: t, fallbackLang: r, dataProviders: e.dataProviders });
231
230
  const n = e.blocks.filter((s) => {
232
- const o = C(s._type);
233
- return !!(X(o, "dataProvider") && Y(o.dataProvider));
231
+ const o = $(s._type);
232
+ return !!(P(o, "dataProvider") && w(o.dataProvider));
234
233
  }).reduce(
235
234
  (s, o) => {
236
- const a = C(o._type), l = {
235
+ const a = $(o._type), l = {
237
236
  pageProps: e.pageProps,
238
237
  block: o,
239
238
  lang: e.lang,
@@ -244,43 +243,43 @@ async function Le(e) {
244
243
  },
245
244
  {}
246
245
  );
247
- return /* @__PURE__ */ f(x, { ...e, lang: t, fallbackLang: r, dataProviders: n });
246
+ return /* @__PURE__ */ f(L, { ...e, lang: t, fallbackLang: r, dataProviders: n });
248
247
  }
249
- function Te(e, t) {
248
+ function Se(e, t) {
250
249
  const r = e.filter(({ _type: i }) => i === "GlobalBlock" || i === "PartialBlock");
251
250
  for (let i = 0; i < r.length; i++) {
252
251
  const n = r[i], s = d(n, "partialBlockId", d(n, "globalBlock", ""));
253
252
  if (s === "") continue;
254
- let o = Z(d(t, s, []));
253
+ let o = X(d(t, s, []));
255
254
  n._parent && (o == null ? void 0 : o.length) > 0 && (o = o.map((l) => (h(l._parent) && (l._parent = n._parent), l)));
256
255
  const a = e.indexOf(n);
257
256
  e.splice(a, 1, ...o);
258
257
  }
259
258
  return e;
260
259
  }
261
- const De = (e) => {
260
+ const xe = (e) => {
262
261
  if (!e) return [];
263
262
  try {
264
- return JSON.parse(ge(e)).filter((r) => !r._type.startsWith("@chai"));
263
+ return JSON.parse(ce(e)).filter((r) => !r._type.startsWith("@chai"));
265
264
  } catch {
266
265
  return [{ _type: "Paragraph", _id: "error", content: "Invalid JSON. Please check the JSON string." }];
267
266
  }
268
267
  };
269
- function ge(e) {
268
+ function ce(e) {
270
269
  const t = /(asset:\/\/|https:\/\/asset\.localhost\/)(?:localhost\/)?[^"']+/g;
271
270
  return e.replace(t, (r) => {
272
271
  const i = decodeURIComponent(r), n = i.indexOf("public");
273
272
  return n !== -1 ? i.substring(n + 6) : i;
274
273
  });
275
274
  }
276
- async function pe(e, t = [], r = !1) {
277
- return await ne({
275
+ async function ue(e, t = [], r = !1) {
276
+ return await ae({
278
277
  tailwindConfig: {
279
278
  darkMode: "class",
280
279
  safelist: t,
281
280
  theme: {
282
281
  extend: {
283
- ...re(),
282
+ ...te(),
284
283
  keyframes: {
285
284
  "accordion-down": {
286
285
  from: {
@@ -305,7 +304,7 @@ async function pe(e, t = [], r = !1) {
305
304
  }
306
305
  }
307
306
  },
308
- plugins: [te, ae, ee, ie, Q],
307
+ plugins: [Z, ee, Y, re, Q],
309
308
  corePlugins: { preflight: r }
310
309
  }
311
310
  }).generateStylesFromContent(
@@ -315,19 +314,19 @@ async function pe(e, t = [], r = !1) {
315
314
  e
316
315
  );
317
316
  }
318
- const fe = (e, t) => {
317
+ const ge = (e, t) => {
319
318
  const r = JSON.stringify(e).replace(/#styles:([^"]*)/g, (i, n) => `#styles:${n.replace(/,/g, " ")}`.replace(/#styles:/g, ""));
320
- return pe([r], [], t);
321
- }, Ke = async (e, t = !1) => await fe(e, t);
319
+ return ue([r], [], t);
320
+ }, Le = async (e, t = !1) => await ge(e, t);
322
321
  export {
323
- Le as AsyncRenderChaiBlocks,
324
- xe as RenderChaiBlocks,
325
- Ee as applyChaiDataBinding,
326
- Je as convertHTMLToChaiBlocks,
327
- De as convertToBlocks,
328
- Ae as getChaiThemeCssVariables,
329
- Te as getMergedPartialBlocks,
330
- Ke as getStylesForBlocks,
331
- Me as getThemeFontsCSSImport,
332
- Oe as getThemeFontsLinkMarkup
322
+ $e as AsyncRenderChaiBlocks,
323
+ Ce as RenderChaiBlocks,
324
+ Me as applyChaiDataBinding,
325
+ Oe as convertHTMLToChaiBlocks,
326
+ xe as convertToBlocks,
327
+ Ke as getChaiThemeCssVariables,
328
+ Se as getMergedPartialBlocks,
329
+ Le as getStylesForBlocks,
330
+ Re as getThemeFontsCSSImport,
331
+ Ae as getThemeFontsLinkMarkup
333
332
  };
@@ -1,5 +1,5 @@
1
1
  import { jsx as e, jsxs as c } from "react/jsx-runtime";
2
- import { d as N, N as D } from "./index-CCfSMyxt.js";
2
+ import { d as N, N as D } from "./index-DFvi9z_N.js";
3
3
  import { a1 as v, a3 as S, a6 as j, a9 as w, v as y } from "./tooltip-Bz2MxMHf.js";
4
4
  import "clsx";
5
5
  import "tailwind-merge";
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),u=require("./index-CgmYAq2I.cjs"),n=require("./tooltip-CzZ7Fvt7.cjs");require("clsx");require("tailwind-merge");const S=({isOpen:m,onClose:l,editor:t,rteElement:f})=>{const r=u.usePageExternalData(),j=o=>{if(!t)return;const i=`{{${o}}}`;t.commands.focus();const{from:p,to:g}=t.state.selection;if(p!==g)t.chain().deleteSelection().insertContent(i).run();else{const{state:c}=t,s=c.selection.from,x=c.doc.textBetween(Math.max(0,s-1),s),a=c.doc.textBetween(s,Math.min(s+1,c.doc.content.size));let d="";s>0&&x!==" "&&!/[.,!?;:]/.test(x)&&(d=" ");let h="";a&&a!==" "&&!/[.,!?;:]/.test(a)&&(h=" "),t.chain().insertContent(d+i+h).run()}};return e.jsx(n.Dialog,{open:m,onOpenChange:o=>!o&&l(),children:e.jsxs(n.DialogContent,{className:"max-h-[90vh] overflow-y-auto sm:max-w-[800px]",children:[e.jsx(n.DialogHeader,{children:e.jsxs(n.DialogTitle,{className:"flex items-center justify-between pr-8",children:[e.jsx("span",{children:"Rich Text Editor"}),Object.keys(r).length>0&&e.jsxs("div",{className:"flex items-center",children:[e.jsx("span",{className:"mr-2 text-sm text-muted-foreground",children:"Add field:"}),e.jsx("div",{className:"rte-path-selector",children:e.jsx(u.NestedPathSelector,{data:r,onSelect:j})})]})]})}),f,e.jsx("div",{className:"mt-4 flex justify-end",children:e.jsx(n.Button,{onClick:l,children:"Done"})})]})})};exports.default=S;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),u=require("./index-C4b6LcwL.cjs"),n=require("./tooltip-CzZ7Fvt7.cjs");require("clsx");require("tailwind-merge");const S=({isOpen:m,onClose:l,editor:t,rteElement:f})=>{const r=u.usePageExternalData(),j=o=>{if(!t)return;const i=`{{${o}}}`;t.commands.focus();const{from:p,to:g}=t.state.selection;if(p!==g)t.chain().deleteSelection().insertContent(i).run();else{const{state:c}=t,s=c.selection.from,x=c.doc.textBetween(Math.max(0,s-1),s),a=c.doc.textBetween(s,Math.min(s+1,c.doc.content.size));let d="";s>0&&x!==" "&&!/[.,!?;:]/.test(x)&&(d=" ");let h="";a&&a!==" "&&!/[.,!?;:]/.test(a)&&(h=" "),t.chain().insertContent(d+i+h).run()}};return e.jsx(n.Dialog,{open:m,onOpenChange:o=>!o&&l(),children:e.jsxs(n.DialogContent,{className:"max-h-[90vh] overflow-y-auto sm:max-w-[800px]",children:[e.jsx(n.DialogHeader,{children:e.jsxs(n.DialogTitle,{className:"flex items-center justify-between pr-8",children:[e.jsx("span",{children:"Rich Text Editor"}),Object.keys(r).length>0&&e.jsxs("div",{className:"flex items-center",children:[e.jsx("span",{className:"mr-2 text-sm text-muted-foreground",children:"Add field:"}),e.jsx("div",{className:"rte-path-selector",children:e.jsx(u.NestedPathSelector,{data:r,onSelect:j})})]})]})}),f,e.jsx("div",{className:"mt-4 flex justify-end",children:e.jsx(n.Button,{onClick:l,children:"Done"})})]})})};exports.default=S;
@@ -99,7 +99,7 @@ export declare const getChaiBuilderTailwindConfig: (content: string[]) => {
99
99
  };
100
100
 
101
101
  export declare const getChaiBuilderTheme: (themeOptions?: ChaiBuilderThemeOptions) => {
102
- fontFamily: any;
102
+ fontFamily: {};
103
103
  borderRadius: {
104
104
  lg: string;
105
105
  md: string;
@@ -109,7 +109,7 @@ export declare const getChaiBuilderTheme: (themeOptions?: ChaiBuilderThemeOption
109
109
  md?: undefined;
110
110
  sm?: undefined;
111
111
  };
112
- colors: any;
112
+ colors: {};
113
113
  container: {
114
114
  center: boolean;
115
115
  padding: string;
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": "3.1.24",
8
+ "version": "3.1.26",
9
9
  "type": "module",
10
10
  "repository": {
11
11
  "type": "git",
@@ -155,6 +155,7 @@
155
155
  "@tanstack/eslint-plugin-query": "^5.64.2",
156
156
  "@testing-library/react": "^16.2.0",
157
157
  "@types/lodash": "^4.17.14",
158
+ "@types/lodash-es": "^4.17.12",
158
159
  "@types/node": "^20.17.11",
159
160
  "@types/react": "^19.2.0",
160
161
  "@types/react-dom": "^19.2.0",
@@ -1 +0,0 @@
1
- "use strict";const T=require("./common-functions-BZmyleS1.cjs"),t=require("lodash-es"),_=require("himalaya"),E=require("lodash"),J=require("@chaibuilder/runtime"),z=require("tailwind-merge"),m="#styles:",Y="__ADD_BLOCK_INTERNAL_ROOT",K="@",V="#",M=s=>{if(s=s.replace(m,""),!s)return{baseClasses:"",classes:""};const n=s.split(/,(?![^\[]*\])/);if(n.length===1)return{baseClasses:"",classes:n[0].trim()};const[a,...e]=n;return{baseClasses:a.trim(),classes:e.join(",").trim().replace(/ +(?= )/g,"")}},U=s=>{const n=/(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|\S*?[?&]v=)|youtu\.be\/)([a-zA-Z0-9_-]{11})/,a=/(?:https?:\/\/)?(?:www\.)?(player)?.vimeo\.com/;return n.test(s)||a.test(s)},X=s=>{if(t.isEmpty(s))return s;const n=/<video[^>]+src=['"]([^'">]+)['"]/,a=/<iframe[^>]+src=['"]([^'">]+)['"]/,e=s.match(n),i=s.match(a),r=e?e[1]:i?i[1]:null,l=/(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|\S*?[?&]v=)|youtu\.be\/)([a-zA-Z0-9_-]{11})/,p=/(?:https?:\/\/)?(?:www\.)?player.vimeo\.com/;return r&&(l.test(r)||p.test(r))?r:s},W=["chai-name","data-chai-name"],Z={img:{alt:"alt",width:"width",height:"height",src:"image"},video:{src:"url",autoplay:"controls.autoPlay",muted:"controls.muted",loop:"controls.loop",controls:"controls.widgets"},a:{href:"link.href",target:"link.target",type:""},input:{placeholder:"placeholder",required:"required",type:"inputType",name:"fieldName"},textarea:{placeholder:"placeholder",required:"required",type:"inputType",name:"fieldName"},select:{placeholder:"placeholder",required:"required",multiple:"multiple",name:"fieldName"},form:{action:"action"}},G=(s,n)=>s.children.length===1&&t.includes(["Heading","Paragraph","Span","ListItem","Button","Label","TableCell","Link","RichText"],n._type),v=s=>s.map(n=>n.type==="text"?t.get(n,"content",""):t.isEmpty(n.children)?"":v(n.children)).join(""),B=s=>s===null?"":s,O=s=>{const n=t.compact(t.map(s.split(/\s+/),t.trim)),a=t.find(n,p=>/^w-/.test(p)),e=t.find(n,p=>/^h-/.test(p));if(!e||!a)return{height:"",width:""};const i=p=>{if(!p)return;const h=p.match(/^[wh]-(?:\[(.*?)\]|(.+))$/);if(!h)return;if(h[1])return h[1];const o=h[2];return/^\d+(\.\d+)?$/.test(o)?`${Number(o)*4}px`:o==="auto"||t.includes(o,"%")?o:"16px"},r=i(a),l=i(e);return{width:t.includes(r,"px")?r:"16px",height:t.includes(l,"px")?l:"16px"}},H=s=>{if(s.tagName==="svg")return{};const n={},a=Z[s.tagName]||{},e=s.attributes;return t.forEach(e,({key:i,value:r})=>{if(!t.includes(W,i))if(i==="bid"&&(n._bid=B(r)),a[i]){if(s.tagName==="img"&&i==="src"&&!r.startsWith("http")){const l=t.find(s.attributes,{key:"width"}),p=t.find(s.attributes,{key:"height"});l&&p?r=`https://picsum.photos/${l==null?void 0:l.value}x${p==null?void 0:p.value}`:r="https://picsum.photos/150x150"}t.set(n,a[i],B(r))}else t.includes(["style","class","srcset","bid"],i)||(t.has(n,"styles_attrs")||(n.styles_attrs={}),t.startsWith(i,"@")&&(i=i.replace("@","x-on:")),n.styles_attrs[`${i}`]=B(r))}),delete n.class,n},Q=(s,n="styles")=>{if(!s.attributes)return{[n]:`${m},`};const a=t.find(s.attributes,{key:"class"});if(a){const e=a.value;return{[n]:`${m},${e}`}}return{[n]:`${m},`}},tt=s=>{const n=t.get(s,"attributes",[]),a=n.find(o=>o.key==="data-chai-richtext"||o.key==="chai-richtext"),e=n.find(o=>o.key==="data-chai-lightbox"||o.key==="chai-lightbox"),i=n.find(o=>o.key==="data-chai-dropdown"||o.key==="chai-dropdown"),r=n.find(o=>o.key==="data-chai-dropdown-button"||o.key==="chai-dropdown-button"),l=n.find(o=>o.key==="data-chai-dropdown-content"||o.key==="chai-dropdown-content"),p=n.find(o=>o.key==="class"),h=p&&p.value.split(/\s+/).includes("rte");if(i)return{_type:"Dropdown"};if(r)return{_type:"DropdownButton"};if(l)return{_type:"DropdownContent"};if(a||h)return{_type:"Paragraph"};if(e)return{_type:"LightBoxLink"};switch(s.tagName){case"img":return{_type:"Image"};case"input":return{_type:"Input",showLabel:!1};case"hr":return{_type:"Divider"};case"br":return{_type:"LineBreak"};case"textarea":return{_type:"TextArea",showLabel:!1};case"audio":return{_type:"Audio"};case"canvas":return{_type:"Canvas"};case"video":case"iframe":return{_type:"CustomHTML"};case"svg":return{_type:"Icon"};case"select":return{_type:"Select",options:[]};case"option":return{_type:"Option"};case"ul":case"ol":case"dl":return{_type:"List",tag:s.tagName,_listType:s.tagName==="ol"?"list-decimal":"list-none"};case"li":case"dt":return{_type:"ListItem",tag:s.tagName};case"span":case"figcaption":case"legend":return{_type:"Span",tag:s.tagName};case"p":return{_type:"Paragraph",content:""};case"a":return{_type:"Link"};case"form":return{_type:"Form"};case"label":return{_type:"Label"};case"button":return{_type:"Button"};case"code":return{_type:"Box",_name:"Code"};case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":return{_type:"Heading",tag:s.tagName};case"table":return{_type:"Table"};case"tr":return{_type:"TableRow"};case"td":case"th":return{_type:"TableCell",tag:s.tagName};case"thead":return{_type:"TableHead"};case"tbody":return{_type:"TableBody"};case"tfoot":return{_type:"TableFooter"};default:{const o=t.get(s,"children",[]).length>0?"Box":"EmptyBox";return{_type:o,tag:s.tagName,_name:o=="EmptyBox"||s.tagName==="div"?o:t.capitalize(s.tagName)}}}},w=(s,n=null)=>t.flatMapDeep(s,a=>{var $,C,S,D,N,L,A,R,j,P;if(a.type==="comment")return[];let e={_id:T.generateUUID()};if(n&&(e._parent=n.block._id),a.type==="text")return t.isEmpty(t.get(a,"content",""))?[]:n&&G(n.node,n.block)?(t.set(n,"block.content",t.get(a,"content","")),[]):{...e,_type:"Text",content:t.get(a,"content","")};if(t.startsWith(a.tagName,"chai-")){const c=a.attributes,u=t.find(c,{key:"chai-type"}),d=(u==null?void 0:u.value)||t.startCase(a.tagName.replace("chai-","")).replace(/\s+/g,"");e._type=d,t.forEach(c,({key:y,value:q})=>{if(y==="about-this-component"||y==="chai-type"||y==="can-move"||y==="can-delete")return;if(y==="id"){e._id=q;return}const F=t.startsWith(y,"_")?y:t.camelCase(y);let x=B(q);typeof x=="string"&&t.startsWith(x,"#styles:")&&(x=x.replace("#styles:","#styles:,")),e[F]=x});const g=w(a.children,{block:e,node:a});return[e,...g]}const i=t.get(a,"attributes",[]),r=i.find(c=>c.key==="data-chai-richtext"||c.key==="chai-richtext"),l=i.find(c=>c.key==="class"),p=l&&l.value.split(/\s+/).includes("rte"),h=i.find(c=>c.key==="data-chai-lightbox"||c.key==="chai-lightbox"),o=i.find(c=>c.key==="data-chai-dropdown"||c.key==="chai-dropdown"),f=i.find(c=>c.key==="data-chai-dropdown-button"||c.key==="chai-dropdown-button"),k=i.find(c=>c.key==="data-chai-dropdown-content"||c.key==="chai-dropdown-content");if(e={...e,...tt(a),...H(a),...Q(a)},a.attributes){const c=a.attributes.find(u=>t.includes(W,u.key));c&&(e._name=c.value)}if(r||p)return e.content=_.stringify(a.children),t.has(e,"styles_attrs.data-chai-richtext")&&delete e.styles_attrs["data-chai-richtext"],t.has(e,"styles_attrs.chai-richtext")&&delete e.styles_attrs["chai-richtext"],[e];if(h){const c=["data-chai-lightbox","chai-lightbox","data-vbtype","data-autoplay","data-maxwidth","data-overlay","data-gall","href"];e={...e,href:(($=i.find(u=>u.key==="href"))==null?void 0:$.value)||"",hrefType:((C=i.find(u=>u.key==="data-vbtype"))==null?void 0:C.value)||"video",autoplay:((S=i.find(u=>u.key==="data-autoplay"))==null?void 0:S.value)==="true"?"true":"false",maxWidth:((N=(D=i.find(u=>u.key==="data-maxwidth"))==null?void 0:D.value)==null?void 0:N.replace("px",""))||"",backdropColor:((L=i.find(u=>u.key==="data-overlay"))==null?void 0:L.value)||"",galleryName:((A=i.find(u=>u.key==="data-gall"))==null?void 0:A.value)||""},t.forEach(c,u=>{t.has(e,`styles_attrs.${u}`)&&delete e.styles_attrs[u]})}if(o&&(delete e.styles_attrs,e.showDropdown=!1),k&&delete e.styles_attrs,f){delete e.styles_attrs;const c=t.filter(a.children||[],d=>(d==null?void 0:d.tagName)!=="span");e.content=v(c);const u=t.find(a.children||[],d=>(d==null?void 0:d.tagName)==="span"&&t.some(d.children||[],g=>(g==null?void 0:g.tagName)==="svg"));if(u){const d=t.find(u.children||[],g=>(g==null?void 0:g.tagName)==="svg");if(d){e.icon=_.stringify([d]);const{height:g,width:y}=et(d,"16px","16px");e.iconHeight=g,e.iconWidth=y}}return[e]}if(e._type==="Input"){const c=e.inputType||"text";c==="checkbox"?t.set(e,"_type","Checkbox"):c==="radio"&&t.set(e,"_type","Radio")}else if(a.tagName==="video"||a.tagName==="iframe"){const c=_.stringify([a]);return U(c)&&(t.set(e,"_type","Video"),t.set(e,"url",X(c)),t.set(e,"styles",`${m},`),t.set(e,"controls",{autoPlay:!1,muted:!0,loop:!1,controls:!1})),e.content=c,[e]}else if(a.tagName==="svg"){const c=t.get(t.find(a.attributes,{key:"class"}),"value",""),{height:u,width:d}=O(c);if(u&&d)e.styles=`${m}, ${T.cn(`w-${d} h-${u}`,c)}`.trim(),e.height=u==null?void 0:u.replace("px",""),e.width=d==null?void 0:d.replace("px","");else{const g=(R=t.find(a.attributes,{key:"height"}))==null?void 0:R.value,y=(j=t.find(a.attributes,{key:"width"}))==null?void 0:j.value;g&&y?(e.styles=`${m}, ${T.cn(`w-[${y}px] h-[${g}px]`,c)}`.trim(),e.height=g,e.width=y):e.styles=`${m}, ${T.cn("w-full h-full",c)}`.trim()}return a.attributes=t.filter(a.attributes,g=>!t.includes(["style","width","height","class"],g.key)),e.icon=_.stringify([a]),[e]}else if(a.tagName=="option"&&n&&((P=n.block)==null?void 0:P._type)==="Select")return n.block.options.push({label:v(a.children),...H(a)}),[];const b=w(a.children,{block:e,node:a});return[e,...b]}),et=(s,n,a)=>{var h,o;const e=t.get(s,"attributes",[]),{height:i,width:r}=O(t.get(t.find(e,{key:"class"}),"value",""));if(i&&r)return{height:`[${i}px]`,width:`[${r}px]`};const l=(h=t.find(e,{key:"height"}))==null?void 0:h.value,p=(o=t.find(e,{key:"width"}))==null?void 0:o.value;return{height:l?`[${l}px]`:a,width:p?`[${p}px]`:n}},st=s=>{s=s.replace(/(\w+)=\\?"(.*?)\\?"/g,(e,i,r)=>{let l=r.replace(/\\"/g,'"');return l=l.replace(/{([^}]+)}/g,p=>p.replace(/"/g,'\\"')),`${i}="${l.replace(/\\"/g,'"')}"`}),s=s.replace(/\\n/g,"").replace(/\\\\/g,"").replace(/\\([/<>])/g,"$1").replace(/\\./g,"").replace(/[\n\r\t\f\v]/g,""),s=s.replace(/\$name="[^"]*"/g,"");const n=s.match(/<body[^>]*>[\s\S]*?<\/body>/);return(n&&n.length>0?n[0].replace(/<body/,"<div").replace(/<\/body>/,"</div>"):s).replace(/\s+/g," ").replaceAll("> <","><").replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").trim()},at=(s,n)=>t.find(s,{_id:n}),nt=(s,n)=>t.isEmpty(n)?s.map(a=>(E.unset(a,"_bid"),a)):t.map(s,a=>{const e=t.isEmpty(a._bid)?void 0:at(n,a._bid);if(e){e._type==="Icon"&&t.get(a,"icon","").match(/chai-default-svg/)&&delete a.icon;const i={...e,...a};return E.unset(i,"_bid"),i}return E.unset(a,"_bid"),a}),rt=s=>{const n=_.parse(st(s));return t.isEmpty(s)?[]:t.flatten(w(n))};function ot(s,n,a){const e=t.get(a,"i18nProps",[]);if(t.isEmpty(n)||t.isEmpty(e))return s;const i=t.cloneDeep(s);return t.forEach(t.keys(i),r=>{if(t.includes(e,r)&&!t.isEmpty(n)){const l=t.get(i,r),p=t.get(i,`${r}-${n}`,"");t.isString(l)?i[r]=t.isString(p)&&!t.isEmpty(p.trim())&&p.trimStart()||l:i[r]=t.isEmpty(p)?l:p}}),i}const lt=t.memoize(s=>{const{baseClasses:n,classes:a}=M(s);return z.twMerge(n,a)});function ct(s,n){return t.get(s,`${n}_attrs`,{})}function pt(s,n=!0){const a={};return Object.keys(s).forEach(e=>{if(t.isString(s[e])&&s[e].startsWith(m)){const i=lt(s[e]),r=ct(s,e);a[e]={...!t.isEmpty(i)&&{className:i},...r,...n?{"data-style-prop":e,"data-block-parent":s._id,"data-style-id":`${e}-${s._id}`}:{}}}}),a}const ut=t.memoize(s=>{const n=J.getRegisteredChaiBlock(s),a=t.get(n,"schema.properties",{});return Object.fromEntries(Object.entries(a).filter(([,e])=>t.get(e,"runtime",!1)))}),dt=(s,n)=>{if(!t.isArray(s))return s;let a=s,e;return typeof n.limit=="number"&&n.limit>0&&(e=n.limit),e!==void 0&&(a=a.slice(0,e)),a},gt=(s,n)=>{const a=t.cloneDeep(s);return t.forEach(t.keys(a),e=>{if(t.isString(a[e])&&!t.startsWith(e,"_")){let i=a[e];e==="repeaterItems"&&(a.repeaterItemsBinding=i);const r=/\{\{(.*?)\}\}/g,l=i.match(r);l&&l.forEach(p=>{let h=p.slice(2,-2);const o=t.get(n,h,p);i=t.isArray(o)?o:i.replace(p,o)}),a[e]=i}}),a},ht=s=>{const n=t.last(s);return s.map(a=>{const e=Object.keys(a);for(let i=0;i<e.length;i++)if(t.isString(a[e[i]])&&t.startsWith(e[i],"content")){const r=a===n?"":" ";a[e[i]]=`${a[e[i]].trim()}${r}`}return a})},I=(s,n,{index:a,key:e},i)=>{if(t.isString(s)){let r=s;const l=/\{\{(.*?)\}\}/g,p=s.match(l);if(p){const h=i==="image"||i==="mobileImage";p.forEach(o=>{let f=o.slice(2,-2).trim(),k=e.slice(2,-2).trim();a!==-1&&t.startsWith(f,"$index.")?f=`${k}.${a}.${f.slice(7)}`:a!==-1&&t.startsWith(f,"$index")&&(f=`${k}.${a}`);const b=t.get(n,f);b===void 0?r=r.replace(o,""):h&&!t.isArray(b)?r=b:r=t.isArray(b)?b:r.replace(o,b)})}return r}if(t.isArray(s))return s.map(r=>I(r,n,{index:a,key:e},i));if(s&&typeof s=="object"){const r={};return t.forEach(t.keys(s),l=>{!t.startsWith(l,"_")&&l!=="$repeaterItemsKey"?r[l]=I(s[l],n,{index:a,key:e},l):r[l]=s[l]}),r}return s},yt=(s,n,{index:a,key:e})=>{let i=t.cloneDeep(s);return i.repeaterItems&&(i.$repeaterItemsKey=i.repeaterItems,t.startsWith(i.repeaterItems,`{{${V}`)&&(i.$repeaterItemsKey=i.repeaterItems=`${i.repeaterItems.replace("}}",`/${i._id}}}`)}`),!t.isEmpty(i.repeaterItems)&&i.pagination&&(i.repeaterTotalItems=`${i.repeaterItems.replace("}}",`/${i._id}/totalItems}}`)}`)),I(i,n,{index:a,key:e})};exports.COLLECTION_PREFIX=V;exports.REPEATER_PREFIX=K;exports.ROOT_TEMP_KEY=Y;exports.STYLES_KEY=m;exports.adjustSpacingInContentBlocks=ht;exports.applyBindingToBlockProps=yt;exports.applyChaiDataBinding=gt;exports.applyLanguage=ot;exports.applyLimit=dt;exports.getBlockRuntimeProps=ut;exports.getBlockTagAttributes=pt;exports.getBlocksFromHTML=rt;exports.getSplitChaiClasses=M;exports.mergeBlocksWithExisting=nt;