@grapesjs/studio-sdk-plugins 1.0.18 → 1.0.19-rc.0
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/canvasGridMode/commands/moveCommand.d.ts +2 -0
- package/dist/canvasGridMode/commands/resizeCommand.d.ts +6 -0
- package/dist/canvasGridMode/commands/updateCommand.d.ts +2 -0
- package/dist/canvasGridMode/index.cjs.d.ts +3 -0
- package/dist/canvasGridMode/index.cjs.js +26 -0
- package/dist/canvasGridMode/index.d.ts +3 -0
- package/dist/canvasGridMode/index.es.d.ts +3 -0
- package/dist/canvasGridMode/index.es.js +673 -0
- package/dist/canvasGridMode/index.umd.js +26 -0
- package/dist/canvasGridMode/styleManager.d.ts +3 -0
- package/dist/canvasGridMode/types.d.ts +16 -0
- package/dist/canvasGridMode/typesSchema.d.ts +36 -0
- package/dist/canvasGridMode/utils.d.ts +151 -0
- package/dist/googleFontsAssetProvider/index.cjs.js +1 -1
- package/dist/googleFontsAssetProvider/index.es.js +45 -45
- package/dist/googleFontsAssetProvider/index.umd.js +1 -1
- package/dist/iconifyComponent/index.cjs.js +2 -2
- package/dist/iconifyComponent/index.es.js +47 -47
- package/dist/iconifyComponent/index.umd.js +2 -2
- package/dist/index.cjs.d.ts +2 -0
- package/dist/index.cjs.js +87 -51
- package/dist/index.d.ts +2 -0
- package/dist/index.es.d.ts +2 -0
- package/dist/index.es.js +5518 -4841
- package/dist/index.umd.js +79 -43
- package/dist/layoutSidebarButtons/index.cjs.js +1 -1
- package/dist/layoutSidebarButtons/index.es.js +80 -80
- package/dist/layoutSidebarButtons/index.umd.js +1 -1
- package/dist/presetPrintable/index.cjs.d.ts +3 -0
- package/dist/presetPrintable/index.cjs.js +12 -0
- package/dist/presetPrintable/index.d.ts +3 -0
- package/dist/presetPrintable/index.es.d.ts +3 -0
- package/dist/presetPrintable/index.es.js +215 -0
- package/dist/presetPrintable/index.umd.js +12 -0
- package/dist/presetPrintable/types.d.ts +17 -0
- package/dist/presetPrintable/typesSchema.d.ts +13 -0
- package/dist/presetPrintable/utils.d.ts +5 -0
- package/dist/prosemirror/index.cjs.js +1 -1
- package/dist/prosemirror/index.es.js +1 -1
- package/dist/prosemirror/index.umd.js +1 -1
- package/dist/rteTinyMce/index.cjs.js +2 -2
- package/dist/rteTinyMce/index.es.js +18 -18
- package/dist/rteTinyMce/index.umd.js +2 -2
- package/dist/tableComponent/index.cjs.js +1 -1
- package/dist/tableComponent/index.es.js +41 -41
- package/dist/tableComponent/index.umd.js +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/youtubeAssetProvider/index.cjs.js +1 -1
- package/dist/youtubeAssetProvider/index.es.js +54 -54
- package/dist/youtubeAssetProvider/index.umd.js +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
(function(D,I){typeof exports=="object"&&typeof module<"u"?module.exports=I():typeof define=="function"&&define.amd?define(I):(D=typeof globalThis<"u"?globalThis:D||self,D.StudioSdkPlugins_canvasGridMode=I())})(this,function(){"use strict";const D="app.grapesjs.com",I="app-stage.grapesjs.com",U=[D,I,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],st="license:check:start",at="license:check:end",it=()=>typeof window<"u",lt=({isDev:t,isStage:e})=>`${t?"":`https://${e?I:D}`}/api`,ct=()=>{const t=it()&&window.location.hostname;return!!t&&(U.includes(t)||U.some(e=>t.endsWith(e)))};function Y(t){return typeof t=="function"}async function pt({path:t,baseApiUrl:e,method:r="GET",headers:o={},params:n,body:i}){const l=`${e||lt({isDev:!1,isStage:!1})}${t}`,c={method:r,headers:{"Content-Type":"application/json",...o}};i&&(c.body=JSON.stringify(i));const p=n?new URLSearchParams(n).toString():"",a=p?`?${p}`:"",d=await fetch(`${l}${a}`,c);if(!d.ok)throw new Error(`HTTP error! status: ${d.status}`);return d.json()}var _=(t=>(t.free="free",t.startup="startup",t.business="business",t.enterprise="enterprise",t))(_||{});const H={[_.free]:0,[_.startup]:10,[_.business]:20,[_.enterprise]:30};function dt(t){const e=t;return e.init=r=>o=>t(o,r),e}const ut=t=>dt(t);async function gt({editor:t,plan:e,pluginName:r,licenseKey:o,cleanup:n}){let i="",s=!1;const l=ct(),c=a=>{console.warn("Cleanup plugin:",r,"Reason:",a),n()},p=(a={})=>{var S;const{error:d,sdkLicense:u}=a,g=(S=a.plan)==null?void 0:S.category;if(!(u||a.license)||d)c(d||"Invalid license");else if(g){const f=H[e],b=H[g];f>b&&c({pluginRequiredPlan:e,licensePlan:g})}};t.on(st,a=>{i=a==null?void 0:a.baseApiUrl,s=!0}),t.on(at,a=>{p(a)}),setTimeout(async()=>{if(!s){if(l)return;if(o){const a=await mt({licenseKey:o,pluginName:r,baseApiUrl:i});a&&p(a)}else c("The `licenseKey` option not provided")}},2e3)}async function mt(t){const{licenseKey:e,pluginName:r,baseApiUrl:o}=t;try{return(await pt({baseApiUrl:o,path:`/sdk/${e||"na"}`,method:"POST",params:{d:window.location.hostname,pn:r}})).result||{}}catch(n){return console.error("Error during SDK license check:",n),!1}}const F="canvasGridMode",z="component-grid-mode",N="grid-mode",W="gjs-drag-grid-spot",X=`${W}__grid-item`,q=`${W}__grid-target`,K=`${W}__snapped`,ft=`${W}__container`,yt=()=>{const t="data-gjs-drag-grid-style",e=document,r="var(--gs-theme-cl-cmp-bg1, var(--gjs-color-highlight))",o="var(--gs-theme-cl-cmp-bg2, var(--gjs-color-blue))",n=e.querySelector(`style[${t}]`)||e.createElement("style");n.setAttribute(t,"true"),n.innerHTML=`
|
|
2
|
+
.${X} {
|
|
3
|
+
outline: 2px solid ${o};
|
|
4
|
+
background: ${r};
|
|
5
|
+
outline-offset: -2px;
|
|
6
|
+
border-radius: 3px;
|
|
7
|
+
width: 100%;
|
|
8
|
+
height: 100%;
|
|
9
|
+
opacity: 0.1;
|
|
10
|
+
}
|
|
11
|
+
.${K} {
|
|
12
|
+
width: 100%;
|
|
13
|
+
height: 100%;
|
|
14
|
+
outline: 2px solid ${o};
|
|
15
|
+
outline-offset: -2px;
|
|
16
|
+
position: absolute;
|
|
17
|
+
}
|
|
18
|
+
.${q} {
|
|
19
|
+
position: absolute;
|
|
20
|
+
z-index: -1;
|
|
21
|
+
background: ${r};
|
|
22
|
+
outline: 1px solid ${o};
|
|
23
|
+
outline-offset: -1px;
|
|
24
|
+
opacity: 0.35;
|
|
25
|
+
}
|
|
26
|
+
`,e.head.appendChild(n)};function J(t){const{editor:e,type:r}=t,o=Ct(e,t.component),n=k(e,o.component);if(!$t(e,o,n,r))return{target:o,container:n,startScroll:B(e).scroll,shadowContainerEl:document.createElement("div"),shadowSnappedEl:document.createElement("div"),shadowTargetEl:document.createElement("div"),spot:e.Canvas.addSpot({type:N,component:n.component})}}function Q(t){const{editor:e,shadowTargetEl:r,shadowSnappedEl:o,shadowContainerEl:n,spotEl:i,target:s,container:l}=t,{Canvas:c}=e,p=e.config.stylePrefix;i==null||i.appendChild(n),n==null||n.appendChild(r),n==null||n.appendChild(o),ht(n,l),wt(r,s,l),St(o,s),bt(n,l.el),s.el.style.opacity="0";const a=c.getSpots().filter(d=>d.type!==N);e.em.stopDefault({preserveSelected:!0}),c.removeSpots(a),c.startAutoscroll(),c.getBody().classList.add(`${p}is__grabbing`)}function Z(t){const{editor:e,shadowSnappedEl:r,shadowContainerEl:o,target:n,cancelled:i}=t,{Canvas:s}=e,l=e.config.stylePrefix,{component:c}=n;if(!i){const p=window.getComputedStyle(r);c.addStyle({"grid-area":p.gridArea,width:"",height:""})}n.el.style.opacity="",o.contains(r)&&(o==null||o.removeChild(r)),e.getModel().runDefault({preserveSelected:1}),s.stopAutoscroll(),s.getBody().classList.remove(`${l}is__grabbing`),s.removeSpots({type:N}),e.select(c)}function ht(t,{rows:e,columns:r}){const o=[];for(let n=0;n<r.length;n++){o[n]=[];for(let i=0;i<e.length;i++){const s=document.createElement("div");s.className=X,s.style.gridArea=`${i+1} / ${n+1}`,o[n][i]=s,t.appendChild(s)}}return o}function wt(t,e,r){return t.className=q,t.style.top=`${e.offset.top-r.offset.top}px`,t.style.left=`${e.offset.left-r.offset.left}px`,t.style.width=`${e.offset.width+e.margin.left+e.margin.right}px`,t.style.height=`${e.offset.height+e.margin.top+e.margin.bottom}px`,t}function St(t,e){const r=et(e.el,e.computedStyles);return t.className=K,t.style.gridArea=`${r.row.start} / ${r.column.start} / ${r.row.end} / ${r.column.end}`,t}function bt(t,e){const r=window.getComputedStyle(e);t.className=ft,t.style.position="relative",t.style.display=r.display,t.style.gap=r.gap,t.style.padding=r.padding,t.style.border=r.border,t.style.gridTemplateColumns=r.gridTemplateColumns,t.style.gridTemplateRows=r.gridTemplateRows}function V(t,e){if(e){if(Array.isArray(e))return[...e].pop()}else return[...t.getSelectedAll()].pop();return e}function Ct(t,e){const r=V(t,e),o=r.getEl(),n=window.getComputedStyle(o);return{component:r,el:o,offset:t.Canvas.offset(o),margin:{top:parseFloat(n.marginTop),right:parseFloat(n.marginRight),bottom:parseFloat(n.marginBottom),left:parseFloat(n.marginLeft)},computedStyles:n}}function k(t,e){const r=e.parent(),o=r.getEl(),n=window.getComputedStyle(o);return{component:r,el:o,offset:t.Canvas.offset(o),computedStyles:n,padding:{top:parseFloat(n.paddingTop),right:parseFloat(n.paddingRight),bottom:parseFloat(n.paddingBottom),left:parseFloat(n.paddingLeft)},columns:n.gridTemplateColumns.split(" ").map(s=>parseFloat(s)),rows:n.gridTemplateRows.split(" ").map(s=>parseFloat(s)),gap:{column:parseInt(n.columnGap),row:parseInt(n.rowGap)}}}function T(t,e,r,o,n=1){let i=0;for(let s=e;s<=t.length;s++){if(i+(t[s-1]+o)*n>r)return s;i+=o+t[s-1]}return t.length+1}function B(t){const{scrollY:e,scrollX:r}=t.Canvas.getWindow();return{scroll:{top:e,left:r}}}function $t(t,e,r,o){const n=i=>t.em.logWarning(i);return o==="draggable"&&e.component.get(o)===!1?(n(`[${F}] The element is not ${o}`),!0):r.computedStyles.display!=="grid"?(n(`[${F}] The container does not have style display:grid`),!0):!1}function O(t,e,r={}){const o=V(t,e),n=o==null?void 0:o.parent(),i=n==null?void 0:n.getEl();if(!n||!i)return!1;const{enableGrid:s}=r,l=window.getComputedStyle(i).display==="grid";return Y(s)?s({component:o,parent:n,isParentGrid:l}):l}const tt=t=>t.split(" ").map(e=>parseFloat(e));function et(t,e){const r=t.ownerDocument.defaultView,o=e||r.getComputedStyle(t),n=o.gridArea.split("/").some(w=>isNaN(parseInt(w.trim()))),i={isComputed:n,raw:o.gridArea};if(!n)return{...i,row:{start:parseInt(o.gridRowStart),end:parseInt(o.gridRowEnd)},column:{start:parseInt(o.gridColumnStart),end:parseInt(o.gridColumnEnd)}};const s=t.parentElement,l=r.getComputedStyle(s),c=parseFloat(l.columnGap)||0,p=parseFloat(l.rowGap)||0,a=tt(l.gridTemplateColumns),d=tt(l.gridTemplateRows),u=parseFloat(l.paddingLeft)||0,g=parseFloat(l.paddingTop)||0,h=s.getBoundingClientRect(),S=t.getBoundingClientRect(),f=(w,C,R,G,A)=>{let x=1,E=G+A;for(let P=0;P<C.length;P++){const M=C[P],L=E+M;if(w>=E&&w<L)return x;E=L+R,x++}return-1},b=f(S.left,a,c,h.left,u),v=f(S.right-1,a,c,h.left,u)+1,m=f(S.top,d,p,h.top,g),y=f(S.bottom-1,d,p,h.top,g)+1;return{...i,row:{start:m,end:y},column:{start:b,end:v}}}function vt(t){t.Commands.add(z,{stop(){},run(e,r,o={}){const n=J({editor:e,component:o.target,type:"draggable"});if(!n){this.stopCommand();return}const{spot:i,target:s,shadowContainerEl:l,shadowSnappedEl:c,shadowTargetEl:p,startScroll:a}=n;let{container:d}=n,u;new e.Utils.Dragger({doc:s.el.ownerDocument,onStart:()=>{u=setTimeout(()=>{Q({editor:e,shadowTargetEl:p,shadowSnappedEl:c,shadowContainerEl:l,spotEl:i.attributes.spotEl,target:s,container:d}),d=k(e,s.component)},10)},onEnd:(h,S,{cancelled:f})=>{clearTimeout(u),Z({editor:e,shadowSnappedEl:c,shadowContainerEl:l,target:s,cancelled:f}),this.stopCommand(),e.em.set("_cmpDrag",1)},setPosition:({x:h,y:S})=>{const{scroll:f}=B(e),{columns:b,rows:v,gap:m,offset:y,padding:w}=d,{offset:C,margin:R}=s,G=C.top-y.top-w.top-R.top+S-a.top+f.top,A=C.left-y.left-w.left-R.left+h-a.left+f.left,x=Math.min(T(b,1,A,m.column,.5),b.length),E=Math.min(T(v,1,G,m.row,.5),v.length),P=Math.min(T(b,x,C.width,m.column)+1,b.length+1),M=Math.min(T(v,E,C.height,m.row)+1,v.length+1);c.style.gridArea=`${E} / ${x} / ${M} / ${P}`,p.style.top=`${G+w.top}px`,p.style.left=`${A+w.left}px`}}).start(o.event)}})}function Et(t,e){const r=J({editor:t,component:e.target,type:"resizable"});if(!r)return;const{onMove:o,onEnd:n}=e.options||{},{spot:i,target:s,shadowContainerEl:l,shadowSnappedEl:c,shadowTargetEl:p}=r;let{container:a}=r,d="",u;return{onStart:g=>{d=g.target.dataset.gjsHandler||"",u=setTimeout(()=>{Q({editor:t,shadowTargetEl:p,shadowSnappedEl:c,shadowContainerEl:l,spotEl:i.attributes.spotEl,target:s,container:a}),a=k(t,s.component)},10),t.trigger("component:resize",{...s,type:"start"})},onEnd:(g,h)=>{const{startDim:S,rectDim:f}=h.resizer,b=JSON.stringify(S)===JSON.stringify(f);clearTimeout(u),Z({editor:t,shadowSnappedEl:c,shadowContainerEl:l,target:s,cancelled:b}),n==null||n(g,h)},onMove:g=>{var rt;const h=g;if(((rt=h.target)==null?void 0:rt.nodeName)==="I")return;const{scroll:S}=B(t),f=et(c);let b=0,v=0,m=0,y=0;const w=s.margin.left,C=s.margin.top,R=s.margin.bottom,G=s.margin.right,{width:A,top:x,left:E,height:P}=s.offset,M=h.clientX,L=h.clientY,$={t:x-C,l:E-w,h:P+C+R,w:A+w+G};d.startsWith("t")?($.t=L-C,$.h=x+P+C+R-L):d.startsWith("b")&&($.h=L-x+C+R),d.endsWith("l")?($.l=M-w,$.w=E+A+w+G-M):d.endsWith("r")&&($.w=M-E+w+G),d.endsWith("l")&&(m=S.left,f.column.start=T(a.columns,1,$.l-a.offset.left-m-a.padding.left,a.gap.column,.5)),d.startsWith("t")&&(b=S.top,f.row.start=T(a.rows,1,$.t-a.offset.top+b-a.padding.top,a.gap.row,.5)),d.endsWith("r")&&(y=S.left,f.column.end=Math.max(T(a.columns,f.column.start,$.w-y,a.gap.column,.5),f.column.start+1)),d.startsWith("b")&&(v=S.top,f.row.end=Math.max(T(a.rows,f.row.start,$.h+v,a.gap.row,.5),f.row.start+1)),c.style.gridArea=`${f.row.start} / ${f.column.start} / ${f.row.end} / ${f.column.end}`,p.style.width=`${$.w+y+m}px`,p.style.height=`${$.h+v-b}px`,p.style.left=`${$.l-a.offset.left-m}px`,p.style.top=`${$.t-a.offset.top+b}px`,o==null||o(g)}}}const nt=["px","%","em","rem","vw","vh"],xt=(t,e)=>{const r=t.Styles.getSectors().find(o=>!!o.getProperty(e));return{sector:r,property:r?r.getProperty(e):void 0}},Tt=(t,e)=>xt(t,e),Rt=(t,{x:e,y:r,mergable:o}={})=>{const n={property:`${t}-x`,type:"integer",units:nt,...e},i={property:`${t}-y`,type:"integer",units:nt,...r};return{property:t,type:"composite",properties:[n,i],...o&&{fromStyle(s,{name:l,separator:c,property:p}){const[a,d]=p.getProperties(),[u,g]=(s[l]||"").split(c);return{[a.getId()]:s[a.getName()]||u||"",[d.getId()]:s[d.getName()]||g||u||""}},toStyle(s,{name:l,property:c}){const[p,a]=c.getProperties(),d=s[p.getId()],u=s[a.getId()];return{[l]:d===u?d:`${d} ${u}`}}}}},j={display:["grid"]};function Gt(t=""){const e=/^repeat\(\s*(\d+)\s*,\s*(.+)\s*\)$/i,r=/^minmax\(\s*(.+?)\s*,\s*(.+?)\s*\)$/i,o=t.match(e);if(!o)return null;const n=parseInt(o[1],10),i=o[2];let s=i,l=i;const c=i.match(r);return c&&(s=c[1],l=c[2]),{total:n,min:s===l?"":s,max:l}}function Pt(t={}){let e="",r="",o="",n="";const i=S=>S.split("/").map(f=>f.trim()).filter(Boolean),s=t["grid-area"]||"",l=t["grid-column"]||"",c=t["grid-row"]||"",p=i(s),a=i(l),d=i(c),u=p.length,g=a.length,h=d.length;return u===4?(o=p[0],e=p[1],n=p[2],r=p[3]):u===3?(o=p[0],e=p[1],n=p[2]):u===2?(o=p[0],e=p[1]):u===1&&(o=p[0]),g===2?(e=a[0],r=a[1]):g===1&&(e=a[0]),h===2?(o=d[0],n=d[1]):h===1&&(o=d[0]),{columnStart:e,columnEnd:r,rowStart:o,rowEnd:n}}function ot(t){const{property:e,label:r}=t,o="1",n="1fr";return{property:e,label:r,type:"composite",requires:j,generic:!0,properties:[{name:" ",property:`${e}-repeat`,type:"number",full:!0,min:1,default:"1"},{label:"Min size",property:`${e}-min`,type:"number",min:0,units:["px","%"],default:"0"},{label:"Max size",property:`${e}-max`,type:"number",min:1,units:["fr","px","%"],default:"1"}],fromStyle(i,s){const{name:l,property:c}=s,[p,a,d]=c.getProperties(),u=i[l],g=Gt(u),h=(g==null?void 0:g.max)??n;return{[p.id]:(g==null?void 0:g.total)??o,[a.id]:(g==null?void 0:g.min)??"",[d.id]:h===n?"":h}},toStyle(i,{name:s,property:l}){const[c,p,a]=l.getProperties(),d=i[c.id],u=i[p.id],g=i[a.id]||n,h=u&&g?`minmax(${u}, ${g})`:g;return{[s]:`repeat(${d||o}, ${h})`}}}}function At(t,e){if(!e.styleableGrid)return;const{property:r,...o}=Tt(t,"display");if(!r)return;const n=r.getOption("grid"),i=o.sector;n||r.addOption({id:"grid",label:"Grid"}),i.addProperty(ot({label:"Columns",property:"grid-template-columns"}),{}),i.addProperty(ot({label:"Rows",property:"grid-template-rows"}),{}),i.addProperty({id:"grid-gap",requires:j,...Rt("gap",{x:{id:"grid-row-gap",label:"Row",property:"row-gap",min:0,default:"0"},y:{id:"grid-column-gap",label:"Column",property:"column-gap",min:0,default:"0"},mergable:!0})},{}),i.addProperty({type:"composite",property:"grid-area",label:"Grid area",requiresParent:j,generic:!0,properties:[{label:"Row start",property:"grid-row-start",type:"integer",default:"auto"},{label:"Row end",property:"grid-row-end",type:"integer",default:"auto"},{label:"Column start",property:"grid-column-start",type:"integer",default:"auto"},{label:"Column end",property:"grid-column-end",type:"integer",default:"auto"}],fromStyle(s){const l=Pt(s);return{"grid-column-start":s["grid-column-start"]||l.columnStart,"grid-column-end":s["grid-column-end"]||l.columnEnd,"grid-row-start":s["grid-row-start"]||l.rowStart,"grid-row-end":s["grid-row-end"]||l.rowEnd}},toStyle(s,{name:l}){const c=s["grid-row-start"]||"auto",p=s["grid-row-end"]||"auto",a=s["grid-column-start"]||"auto",d=s["grid-column-end"]||"auto";return{[l]:`${c} / ${a} / ${p} / ${d}`}}},{})}return ut(function(t,e={}){const r={itemResizable:!0,...e},{Canvas:o,Commands:n,Components:i}=t,{itemResizable:s}=r,l=o.events,c=n.events,p=i.events,a=`${c.runBeforeCommand}tlb-move`,d=`${c.runBeforeCommand}resize`;let u;vt(t);const g=({options:m})=>{O(t,m.target,r)&&(t.runCommand(z,{...m}),m.abort=!0)},h=({options:m})=>{O(t,m.target,r)&&Object.assign(m.options,Et(t,m))},S=()=>{const m=o.getSpots({type:N}).pop();if(!m)return;let y=m.attributes.spotEl;y||(y=document.createElement("div"),y.className=W,m.set({spotEl:y})),Object.entries(m.getStyle()).forEach(([w,C])=>y.style.setProperty(w,C)),u==null||u.appendChild(y)},f=({spot:m})=>{const y=m.attributes.spotEl;m.type!==N||!y||u==null||u.removeChild(y)};if(s){const m=y=>{const w=Y(s)?s({component:y}):s;return typeof w=="boolean"?w:{tl:!1,tc:!1,tr:!1,cl:!1,cr:!1,bl:!1,bc:!1,br:!1,...w}};t.on(p.resizeInit,y=>{const{component:w}=y;if(O(t,w,r)){const C=m(w);y.resizable=C}})}const b=[[a,g],[d,h],[l.spot,S],[l.spotRemove,f]];b.forEach(([m,y])=>{t.on(m,y)}),t.onReady(()=>{u=o.getSpotsEl(),yt(),At(t,r)});const v=()=>{delete t.Commands.commands[z],b.forEach(([m,y])=>{t.off(m,y)})};gt({editor:t,licenseKey:r.licenseKey,plan:_.startup,pluginName:F,cleanup:v})})});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CanvasSpotProps, ResizerOptions } from 'grapesjs';
|
|
2
|
+
import { CanvasGridModeOptions as CanvasGridModeOptionsSchema } from './typesSchema';
|
|
3
|
+
import { Component } from '../types';
|
|
4
|
+
export interface CanvasGridModeOptions extends Omit<CanvasGridModeOptionsSchema, 'enableGrid' | 'itemResizable'> {
|
|
5
|
+
enableGrid?: (props: {
|
|
6
|
+
component: Component;
|
|
7
|
+
parent: Component;
|
|
8
|
+
isParentGrid?: boolean;
|
|
9
|
+
}) => boolean;
|
|
10
|
+
itemResizable?: boolean | ((props: {
|
|
11
|
+
component: Component;
|
|
12
|
+
}) => boolean | ResizerOptions);
|
|
13
|
+
}
|
|
14
|
+
export interface SpotGridDragProps extends CanvasSpotProps {
|
|
15
|
+
spotEl?: HTMLElement;
|
|
16
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { SDKPluginOptions } from '../utils';
|
|
2
|
+
export interface CanvasGridModeOptions extends SDKPluginOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Provide a custom logic to enable the grid mode.
|
|
5
|
+
* @examples
|
|
6
|
+
* enableGrid: ({ component, isParentGrid }) => {
|
|
7
|
+
* if (isParentGrid && component.is('image')) {
|
|
8
|
+
* return true; // enable grid mode only for images
|
|
9
|
+
* }
|
|
10
|
+
* }
|
|
11
|
+
*/
|
|
12
|
+
enableGrid?: '__fn__';
|
|
13
|
+
/**
|
|
14
|
+
* Make grid items resizable when selected. Could also be a function for custom logic.
|
|
15
|
+
* @default true
|
|
16
|
+
* @examples
|
|
17
|
+
* itemResizable: ({ component }) => {
|
|
18
|
+
* if (component.is('text')) {
|
|
19
|
+
* // Make the text component resizable only on the right and left sides.
|
|
20
|
+
* return { cr: true, cl: true };
|
|
21
|
+
* } else if (component.is('image')) {
|
|
22
|
+
* // Disable resizing for images
|
|
23
|
+
* return false;
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* // Enable resizing for all other components
|
|
27
|
+
* return true;
|
|
28
|
+
* }
|
|
29
|
+
*/
|
|
30
|
+
itemResizable?: object;
|
|
31
|
+
/**
|
|
32
|
+
* Allow to edit grid properties in Style Manager.
|
|
33
|
+
* @default false
|
|
34
|
+
*/
|
|
35
|
+
styleableGrid?: boolean;
|
|
36
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { Component, Editor } from '../types';
|
|
2
|
+
import { CanvasGridModeOptions, SpotGridDragProps } from './types';
|
|
3
|
+
export declare const PLUGIN_NAME = "canvasGridMode";
|
|
4
|
+
export declare const COMMAND_DRAG_GRID = "component-grid-mode";
|
|
5
|
+
export declare const SPOT_TYPE_GRID = "grid-mode";
|
|
6
|
+
export declare const clsSpotGridDrag = "gjs-drag-grid-spot";
|
|
7
|
+
export declare const clsSpotGridDragCell = "gjs-drag-grid-spot__grid-item";
|
|
8
|
+
export declare const clsSpotGridDragTarget = "gjs-drag-grid-spot__grid-target";
|
|
9
|
+
export declare const clsSpotGridDragSnapped = "gjs-drag-grid-spot__snapped";
|
|
10
|
+
export declare const clsSpotGridDragContainer = "gjs-drag-grid-spot__container";
|
|
11
|
+
export declare const createDefaultSpotStyleEl: () => void;
|
|
12
|
+
export declare function onGridDragInit(props: {
|
|
13
|
+
editor: Editor;
|
|
14
|
+
component: Component | Component[];
|
|
15
|
+
type: string;
|
|
16
|
+
}): {
|
|
17
|
+
target: {
|
|
18
|
+
component: Component;
|
|
19
|
+
el: HTMLElement;
|
|
20
|
+
offset: {
|
|
21
|
+
top: number;
|
|
22
|
+
left: number;
|
|
23
|
+
width: number;
|
|
24
|
+
height: number;
|
|
25
|
+
};
|
|
26
|
+
margin: {
|
|
27
|
+
top: number;
|
|
28
|
+
right: number;
|
|
29
|
+
bottom: number;
|
|
30
|
+
left: number;
|
|
31
|
+
};
|
|
32
|
+
computedStyles: CSSStyleDeclaration;
|
|
33
|
+
};
|
|
34
|
+
container: {
|
|
35
|
+
component: Component;
|
|
36
|
+
el: HTMLElement;
|
|
37
|
+
offset: {
|
|
38
|
+
top: number;
|
|
39
|
+
left: number;
|
|
40
|
+
width: number;
|
|
41
|
+
height: number;
|
|
42
|
+
};
|
|
43
|
+
computedStyles: CSSStyleDeclaration;
|
|
44
|
+
padding: {
|
|
45
|
+
top: number;
|
|
46
|
+
right: number;
|
|
47
|
+
bottom: number;
|
|
48
|
+
left: number;
|
|
49
|
+
};
|
|
50
|
+
columns: number[];
|
|
51
|
+
rows: number[];
|
|
52
|
+
gap: {
|
|
53
|
+
column: number;
|
|
54
|
+
row: number;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
startScroll: {
|
|
58
|
+
top: number;
|
|
59
|
+
left: number;
|
|
60
|
+
};
|
|
61
|
+
shadowContainerEl: HTMLDivElement;
|
|
62
|
+
shadowSnappedEl: HTMLDivElement;
|
|
63
|
+
shadowTargetEl: HTMLDivElement;
|
|
64
|
+
spot: import('grapesjs').CanvasSpot<SpotGridDragProps>;
|
|
65
|
+
} | undefined;
|
|
66
|
+
export declare function onGridDragStart(props: {
|
|
67
|
+
editor: Editor;
|
|
68
|
+
shadowTargetEl: HTMLElement;
|
|
69
|
+
shadowSnappedEl: HTMLElement;
|
|
70
|
+
shadowContainerEl: HTMLElement;
|
|
71
|
+
spotEl: HTMLElement | undefined;
|
|
72
|
+
target: ReturnType<typeof getTarget>;
|
|
73
|
+
container: ReturnType<typeof getContainer>;
|
|
74
|
+
}): void;
|
|
75
|
+
export declare function onGridDragEnd(props: {
|
|
76
|
+
editor: Editor;
|
|
77
|
+
shadowSnappedEl: HTMLElement;
|
|
78
|
+
shadowContainerEl: HTMLElement;
|
|
79
|
+
target: ReturnType<typeof getTarget>;
|
|
80
|
+
cancelled?: boolean;
|
|
81
|
+
}): void;
|
|
82
|
+
export declare function setShadowCells(containerEl: HTMLElement, { rows, columns }: {
|
|
83
|
+
rows: number[];
|
|
84
|
+
columns: number[];
|
|
85
|
+
}): HTMLElement[][];
|
|
86
|
+
export declare function setShadowTargetStyle(el: HTMLElement, target: ReturnType<typeof getTarget>, container: ReturnType<typeof getContainer>): HTMLElement;
|
|
87
|
+
export declare function setShadowSnappedStyle(el: HTMLElement, target: ReturnType<typeof getTarget>): HTMLElement;
|
|
88
|
+
export declare function setShadowContainerStyle(el: HTMLElement, containerEl: HTMLElement): void;
|
|
89
|
+
export declare function findTarget(editor: Editor, target?: Component | Component[]): Component;
|
|
90
|
+
export declare function getTarget(editor: Editor, target?: Component | Component[]): {
|
|
91
|
+
component: Component;
|
|
92
|
+
el: HTMLElement;
|
|
93
|
+
offset: {
|
|
94
|
+
top: number;
|
|
95
|
+
left: number;
|
|
96
|
+
width: number;
|
|
97
|
+
height: number;
|
|
98
|
+
};
|
|
99
|
+
margin: {
|
|
100
|
+
top: number;
|
|
101
|
+
right: number;
|
|
102
|
+
bottom: number;
|
|
103
|
+
left: number;
|
|
104
|
+
};
|
|
105
|
+
computedStyles: CSSStyleDeclaration;
|
|
106
|
+
};
|
|
107
|
+
export declare function getContainer(editor: Editor, target: Component): {
|
|
108
|
+
component: Component;
|
|
109
|
+
el: HTMLElement;
|
|
110
|
+
offset: {
|
|
111
|
+
top: number;
|
|
112
|
+
left: number;
|
|
113
|
+
width: number;
|
|
114
|
+
height: number;
|
|
115
|
+
};
|
|
116
|
+
computedStyles: CSSStyleDeclaration;
|
|
117
|
+
padding: {
|
|
118
|
+
top: number;
|
|
119
|
+
right: number;
|
|
120
|
+
bottom: number;
|
|
121
|
+
left: number;
|
|
122
|
+
};
|
|
123
|
+
columns: number[];
|
|
124
|
+
rows: number[];
|
|
125
|
+
gap: {
|
|
126
|
+
column: number;
|
|
127
|
+
row: number;
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
export declare function getGridPosition(items: number[], start: number, minSize: number, gap: number, fraction?: number): number;
|
|
131
|
+
export declare function getWindowScroll(editor: Editor): {
|
|
132
|
+
scroll: {
|
|
133
|
+
top: number;
|
|
134
|
+
left: number;
|
|
135
|
+
};
|
|
136
|
+
};
|
|
137
|
+
export declare function shouldTerminate(editor: Editor, target: ReturnType<typeof getTarget>, container: ReturnType<typeof getContainer>, prop: string): boolean;
|
|
138
|
+
export declare function isGrid(editor: Editor, target?: Component | Component[], pluginOptions?: CanvasGridModeOptions): boolean;
|
|
139
|
+
export declare function findComponentInGrid(editor: Editor, target: Component, opts?: CanvasGridModeOptions): Component | undefined;
|
|
140
|
+
export declare function getGridItemArea(gridItemEl: HTMLElement, style?: CSSStyleDeclaration): {
|
|
141
|
+
row: {
|
|
142
|
+
start: number;
|
|
143
|
+
end: number;
|
|
144
|
+
};
|
|
145
|
+
column: {
|
|
146
|
+
start: number;
|
|
147
|
+
end: number;
|
|
148
|
+
};
|
|
149
|
+
isComputed: boolean;
|
|
150
|
+
raw: string;
|
|
151
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var p=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(p||{}),b=(e=>(e.toastAdd="studio:toastAdd",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.sidebarLeftSet="studio:sidebarLeft:set",e.sidebarLeftGet="studio:sidebarLeft:get",e.sidebarLeftToggle="studio:sidebarLeft:toggle",e.sidebarRightSet="studio:sidebarRight:set",e.sidebarRightGet="studio:sidebarRight:get",e.sidebarRightToggle="studio:sidebarRight:toggle",e.sidebarTopSet="studio:sidebarTop:set",e.sidebarTopGet="studio:sidebarTop:get",e.sidebarTopToggle="studio:sidebarTop:toggle",e.sidebarBottomSet="studio:sidebarBottom:set",e.sidebarBottomGet="studio:sidebarBottom:get",e.sidebarBottomToggle="studio:sidebarBottom:toggle",e.symbolAdd="studio:symbolAdd",e.symbolDetach="studio:symbolDetach",e.symbolOverride="studio:symbolOverride",e.symbolPropagateStyles="studio:propagateStyles",e.getPagesConfig="studio:getPagesConfig",e.setPagesConfig="studio:setPagesConfig",e.getPageSettings="studio:getPageSettings",e.setPageSettings="studio:setPageSettings",e.projectFiles="studio:projectFiles",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.getStateContextMenu="studio:getStateContextMenu",e.setStateContextMenu="studio:setStateContextMenu",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e.layoutUpdate="studio:layoutUpdate",e.layoutGet="studio:layoutGet",e.layoutConfigGet="studio:layoutConfigGet",e.layoutConfigSet="studio:layoutConfigSet",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e))(b||{});const A="app.grapesjs.com",T="app-stage.grapesjs.com",v=[A,T,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],
|
|
1
|
+
"use strict";var p=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(p||{}),b=(e=>(e.toastAdd="studio:toastAdd",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.sidebarLeftSet="studio:sidebarLeft:set",e.sidebarLeftGet="studio:sidebarLeft:get",e.sidebarLeftToggle="studio:sidebarLeft:toggle",e.sidebarRightSet="studio:sidebarRight:set",e.sidebarRightGet="studio:sidebarRight:get",e.sidebarRightToggle="studio:sidebarRight:toggle",e.sidebarTopSet="studio:sidebarTop:set",e.sidebarTopGet="studio:sidebarTop:get",e.sidebarTopToggle="studio:sidebarTop:toggle",e.sidebarBottomSet="studio:sidebarBottom:set",e.sidebarBottomGet="studio:sidebarBottom:get",e.sidebarBottomToggle="studio:sidebarBottom:toggle",e.symbolAdd="studio:symbolAdd",e.symbolDetach="studio:symbolDetach",e.symbolOverride="studio:symbolOverride",e.symbolPropagateStyles="studio:propagateStyles",e.getPagesConfig="studio:getPagesConfig",e.setPagesConfig="studio:setPagesConfig",e.getPageSettings="studio:getPageSettings",e.setPageSettings="studio:setPageSettings",e.projectFiles="studio:projectFiles",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.getStateContextMenu="studio:getStateContextMenu",e.setStateContextMenu="studio:setStateContextMenu",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e.layoutUpdate="studio:layoutUpdate",e.layoutGet="studio:layoutGet",e.layoutConfigGet="studio:layoutConfigGet",e.layoutConfigSet="studio:layoutConfigSet",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e))(b||{});const A="app.grapesjs.com",T="app-stage.grapesjs.com",v=[A,T,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],D="license:check:start",G="license:check:end",$=()=>typeof window<"u",k=({isDev:e,isStage:t})=>`${e?"":`https://${t?T:A}`}/api`,x=()=>{const e=$()&&window.location.hostname;return!!e&&(v.includes(e)||v.some(t=>e.endsWith(t)))};async function F({path:e,baseApiUrl:t,method:o="GET",headers:s={},params:n,body:a}){const l=`${t||k({isDev:!1,isStage:!1})}${e}`,c={method:o,headers:{"Content-Type":"application/json",...s}};a&&(c.body=JSON.stringify(a));const u=n?new URLSearchParams(n).toString():"",i=u?`?${u}`:"",g=await fetch(`${l}${i}`,c);if(!g.ok)throw new Error(`HTTP error! status: ${g.status}`);return g.json()}const w={[p.free]:0,[p.startup]:10,[p.business]:20,[p.enterprise]:30};function U(e){const t=e;return t.init=o=>s=>e(s,o),t}const O=e=>U(e);async function M({editor:e,plan:t,pluginName:o,licenseKey:s,cleanup:n}){let a="",r=!1;const l=x(),c=i=>{console.warn("Cleanup plugin:",o,"Reason:",i),n()},u=(i={})=>{var P;const{error:g,sdkLicense:f}=i,d=(P=i.plan)==null?void 0:P.category;if(!(f||i.license)||g)c(g||"Invalid license");else if(d){const L=w[t],R=w[d];L>R&&c({pluginRequiredPlan:t,licensePlan:d})}};e.on(D,i=>{a=i==null?void 0:i.baseApiUrl,r=!0}),e.on(G,i=>{u(i)}),setTimeout(async()=>{if(!r){if(l)return;if(s){const i=await B({licenseKey:s,pluginName:o,baseApiUrl:a});i&&u(i)}else c("The `licenseKey` option not provided")}},2e3)}async function B(e){const{licenseKey:t,pluginName:o,baseApiUrl:s}=e;try{return(await F({baseApiUrl:s,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:o}})).result||{}}catch(n){return console.error("Error during SDK license check:",n),!1}}const E=e=>{const{family:t,menu:o,axes:s}=e,n=!!s,a=Object.assign({},...e.variants.map(r=>{var i,g;let l,c;if(n){const f=s.find(d=>d.tag==="wght");if(f){const{start:d,end:y}=f;l=`${d} ${y}`}}return l||(l=((i=r.match(/\d+/))==null?void 0:i[0])??"400"),c=((g=r.match(/[a-zA-Z]+/))==null?void 0:g[0])==="italic"?"italic":void 0,{[r]:{family:t,source:e.files[r],variant:r,options:{style:c,weight:l}}}}));return{family:t,menuVariant:{family:`assetManagerMenu-${t}`,source:o,variant:"menu"},variants:a}},I=e=>({id:`${e.family}/${e.version}`,type:"font",src:e.menu,name:e.family,customData:{font:E(e),needsLoading:!0}}),W=e=>{if(e.customData.needsLoading){e.customData.needsLoading=!1;const{font:t}=e.customData,{family:o,source:s,options:n}=t.menuVariant,a=new FontFace(o,`url("${s}")`,n);document.fonts.add(a),a.load().catch(()=>{})}};let h;const j=e=>{const t=[];for(const o of Object.keys(e)){let s=e[o];s&&(Array.isArray(s)?t.push(...s.map(n=>[o,n.toString()])):(s=s.toString(),t.push([o,s])))}return new URLSearchParams(t)},N=e=>{const{apiKey:t,searchParams:o}=e,s=(n={})=>{const a="https://www.googleapis.com/webfonts/v1/webfonts",r=j(n);return`${a}?${r}`};return{id:"google-fonts",types:["font"],label:({editor:n})=>n.I18n.t("googleFontsAssetProvider.providerLabel"),search:{reloadOnInput:!1},async onLoad(){var u;if(h)return h;const n={key:t,sort:"alpha",subset:"latin",capability:["WOFF2","VF"]},a=o==null?void 0:o(),r={...n,...a},c=await(await fetch(s(r))).json();return(u=c.items)!=null&&u.length?(h=c.items.map(I),h):[]},itemLayout:n=>{const a=h.find(r=>r.id===n.assetProps.id);return W(a),{type:"column",onClick:()=>n.onSelect(a),htmlAttrs:{title:a.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"text",content:a.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:a.customData.font.menuVariant.family,fontSize:"24px",paddingLeft:"8px",paddingRight:"8px"}}]}}}},K={googleFontsAssetProvider:{searchBtn:"Search on Google Fonts",modalTitle:"Select Font",providerLabel:"Google Fonts"}},_="googleFontsAssetProvider",V=function(e,t){const{i18n:o={}}=t,s=N(t);e.runCommand(b.assetProviderAdd,{provider:s}),e.I18n.addMessages({en:K,...o}),M({editor:e,licenseKey:t.licenseKey,plan:p.startup,pluginName:_,cleanup:()=>{e.runCommand(b.assetProviderRemove,{id:s.id})}})},H=O(V);module.exports=H;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var p = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(p || {}), b = /* @__PURE__ */ ((e) => (e.toastAdd = "studio:toastAdd", e.dialogOpen = "studio:dialogOpen", e.dialogClose = "studio:dialogClose", e.sidebarLeftSet = "studio:sidebarLeft:set", e.sidebarLeftGet = "studio:sidebarLeft:get", e.sidebarLeftToggle = "studio:sidebarLeft:toggle", e.sidebarRightSet = "studio:sidebarRight:set", e.sidebarRightGet = "studio:sidebarRight:get", e.sidebarRightToggle = "studio:sidebarRight:toggle", e.sidebarTopSet = "studio:sidebarTop:set", e.sidebarTopGet = "studio:sidebarTop:get", e.sidebarTopToggle = "studio:sidebarTop:toggle", e.sidebarBottomSet = "studio:sidebarBottom:set", e.sidebarBottomGet = "studio:sidebarBottom:get", e.sidebarBottomToggle = "studio:sidebarBottom:toggle", e.symbolAdd = "studio:symbolAdd", e.symbolDetach = "studio:symbolDetach", e.symbolOverride = "studio:symbolOverride", e.symbolPropagateStyles = "studio:propagateStyles", e.getPagesConfig = "studio:getPagesConfig", e.setPagesConfig = "studio:setPagesConfig", e.getPageSettings = "studio:getPageSettings", e.setPageSettings = "studio:setPageSettings", e.projectFiles = "studio:projectFiles", e.canvasReload = "studio:canvasReload", e.getBlocksPanel = "studio:getBlocksPanel", e.setBlocksPanel = "studio:setBlocksPanel", e.getStateContextMenu = "studio:getStateContextMenu", e.setStateContextMenu = "studio:setStateContextMenu", e.contextMenuComponent = "studio:contextMenuComponent", e.layoutAdd = "studio:layoutAdd", e.layoutRemove = "studio:layoutRemove", e.layoutToggle = "studio:layoutToggle", e.layoutUpdate = "studio:layoutUpdate", e.layoutGet = "studio:layoutGet", e.layoutConfigGet = "studio:layoutConfigGet", e.layoutConfigSet = "studio:layoutConfigSet", e.getStateTheme = "studio:getStateTheme", e.setStateTheme = "studio:setStateTheme", e.assetProviderGet = "studio:assetProviderGet", e.assetProviderAdd = "studio:assetProviderAdd", e.assetProviderRemove = "studio:assetProviderRemove", e.fontGet = "studio:fontGet", e.fontAdd = "studio:fontAdd", e.fontRemove = "studio:fontRemove", e))(b || {});
|
|
1
|
+
var p = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(p || {}), b = /* @__PURE__ */ ((e) => (e.toastAdd = "studio:toastAdd", e.dialogOpen = "studio:dialogOpen", e.dialogClose = "studio:dialogClose", e.sidebarLeftSet = "studio:sidebarLeft:set", e.sidebarLeftGet = "studio:sidebarLeft:get", e.sidebarLeftToggle = "studio:sidebarLeft:toggle", e.sidebarRightSet = "studio:sidebarRight:set", e.sidebarRightGet = "studio:sidebarRight:get", e.sidebarRightToggle = "studio:sidebarRight:toggle", e.sidebarTopSet = "studio:sidebarTop:set", e.sidebarTopGet = "studio:sidebarTop:get", e.sidebarTopToggle = "studio:sidebarTop:toggle", e.sidebarBottomSet = "studio:sidebarBottom:set", e.sidebarBottomGet = "studio:sidebarBottom:get", e.sidebarBottomToggle = "studio:sidebarBottom:toggle", e.symbolAdd = "studio:symbolAdd", e.symbolDetach = "studio:symbolDetach", e.symbolOverride = "studio:symbolOverride", e.symbolPropagateStyles = "studio:propagateStyles", e.getPagesConfig = "studio:getPagesConfig", e.setPagesConfig = "studio:setPagesConfig", e.getPageSettings = "studio:getPageSettings", e.setPageSettings = "studio:setPageSettings", e.projectFiles = "studio:projectFiles", e.canvasReload = "studio:canvasReload", e.getBlocksPanel = "studio:getBlocksPanel", e.setBlocksPanel = "studio:setBlocksPanel", e.getStateContextMenu = "studio:getStateContextMenu", e.setStateContextMenu = "studio:setStateContextMenu", e.contextMenuComponent = "studio:contextMenuComponent", e.layoutAdd = "studio:layoutAdd", e.layoutRemove = "studio:layoutRemove", e.layoutToggle = "studio:layoutToggle", e.layoutUpdate = "studio:layoutUpdate", e.layoutGet = "studio:layoutGet", e.layoutConfigGet = "studio:layoutConfigGet", e.layoutConfigSet = "studio:layoutConfigSet", e.getStateTheme = "studio:getStateTheme", e.setStateTheme = "studio:setStateTheme", e.assetProviderGet = "studio:assetProviderGet", e.assetProviderAdd = "studio:assetProviderAdd", e.assetProviderRemove = "studio:assetProviderRemove", e.fontGet = "studio:fontGet", e.fontAdd = "studio:fontAdd", e.fontRemove = "studio:fontRemove", e.toggleStateDataSource = "studio:toggleStateDataSource", e.getStateDataSource = "studio:getStateDataSource", e))(b || {});
|
|
2
2
|
const A = "app.grapesjs.com", T = "app-stage.grapesjs.com", v = [
|
|
3
3
|
A,
|
|
4
4
|
T,
|
|
@@ -10,8 +10,8 @@ const A = "app.grapesjs.com", T = "app-stage.grapesjs.com", v = [
|
|
|
10
10
|
// For stackblitz.com demos
|
|
11
11
|
"-sandpack.codesandbox.io"
|
|
12
12
|
// For Sandpack demos
|
|
13
|
-
],
|
|
14
|
-
const e =
|
|
13
|
+
], D = "license:check:start", G = "license:check:end", $ = () => typeof window < "u", k = ({ isDev: e, isStage: t }) => `${e ? "" : `https://${t ? T : A}`}/api`, x = () => {
|
|
14
|
+
const e = $() && window.location.hostname;
|
|
15
15
|
return !!e && (v.includes(e) || v.some((t) => e.endsWith(t)));
|
|
16
16
|
};
|
|
17
17
|
async function F({
|
|
@@ -20,20 +20,20 @@ async function F({
|
|
|
20
20
|
method: o = "GET",
|
|
21
21
|
headers: s = {},
|
|
22
22
|
params: n,
|
|
23
|
-
body:
|
|
23
|
+
body: a
|
|
24
24
|
}) {
|
|
25
|
-
const l = `${t ||
|
|
25
|
+
const l = `${t || k({ isDev: !1, isStage: !1 })}${e}`, c = {
|
|
26
26
|
method: o,
|
|
27
27
|
headers: {
|
|
28
28
|
"Content-Type": "application/json",
|
|
29
29
|
...s
|
|
30
30
|
}
|
|
31
31
|
};
|
|
32
|
-
|
|
33
|
-
const u = n ? new URLSearchParams(n).toString() : "",
|
|
34
|
-
if (!
|
|
35
|
-
throw new Error(`HTTP error! status: ${
|
|
36
|
-
return
|
|
32
|
+
a && (c.body = JSON.stringify(a));
|
|
33
|
+
const u = n ? new URLSearchParams(n).toString() : "", i = u ? `?${u}` : "", g = await fetch(`${l}${i}`, c);
|
|
34
|
+
if (!g.ok)
|
|
35
|
+
throw new Error(`HTTP error! status: ${g.status}`);
|
|
36
|
+
return g.json();
|
|
37
37
|
}
|
|
38
38
|
const w = {
|
|
39
39
|
[p.free]: 0,
|
|
@@ -53,29 +53,29 @@ async function M({
|
|
|
53
53
|
licenseKey: s,
|
|
54
54
|
cleanup: n
|
|
55
55
|
}) {
|
|
56
|
-
let
|
|
57
|
-
const l =
|
|
58
|
-
console.warn("Cleanup plugin:", o, "Reason:",
|
|
59
|
-
}, u = (
|
|
56
|
+
let a = "", r = !1;
|
|
57
|
+
const l = x(), c = (i) => {
|
|
58
|
+
console.warn("Cleanup plugin:", o, "Reason:", i), n();
|
|
59
|
+
}, u = (i = {}) => {
|
|
60
60
|
var P;
|
|
61
|
-
const { error:
|
|
62
|
-
if (!(f ||
|
|
63
|
-
c(
|
|
64
|
-
else if (
|
|
65
|
-
const L = w[t], R = w[
|
|
66
|
-
L > R && c({ pluginRequiredPlan: t, licensePlan:
|
|
61
|
+
const { error: g, sdkLicense: f } = i, d = (P = i.plan) == null ? void 0 : P.category;
|
|
62
|
+
if (!(f || i.license) || g)
|
|
63
|
+
c(g || "Invalid license");
|
|
64
|
+
else if (d) {
|
|
65
|
+
const L = w[t], R = w[d];
|
|
66
|
+
L > R && c({ pluginRequiredPlan: t, licensePlan: d });
|
|
67
67
|
}
|
|
68
68
|
};
|
|
69
|
-
e.on(
|
|
70
|
-
|
|
71
|
-
}), e.on(
|
|
72
|
-
u(
|
|
69
|
+
e.on(D, (i) => {
|
|
70
|
+
a = i == null ? void 0 : i.baseApiUrl, r = !0;
|
|
71
|
+
}), e.on(G, (i) => {
|
|
72
|
+
u(i);
|
|
73
73
|
}), setTimeout(async () => {
|
|
74
74
|
if (!r) {
|
|
75
75
|
if (l) return;
|
|
76
76
|
if (s) {
|
|
77
|
-
const
|
|
78
|
-
|
|
77
|
+
const i = await B({ licenseKey: s, pluginName: o, baseApiUrl: a });
|
|
78
|
+
i && u(i);
|
|
79
79
|
} else
|
|
80
80
|
c("The `licenseKey` option not provided");
|
|
81
81
|
}
|
|
@@ -98,19 +98,19 @@ async function B(e) {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
const E = (e) => {
|
|
101
|
-
const { family: t, menu: o, axes: s } = e, n = !!s,
|
|
101
|
+
const { family: t, menu: o, axes: s } = e, n = !!s, a = Object.assign(
|
|
102
102
|
{},
|
|
103
103
|
...e.variants.map((r) => {
|
|
104
|
-
var
|
|
104
|
+
var i, g;
|
|
105
105
|
let l, c;
|
|
106
106
|
if (n) {
|
|
107
|
-
const f = s.find((
|
|
107
|
+
const f = s.find((d) => d.tag === "wght");
|
|
108
108
|
if (f) {
|
|
109
|
-
const { start:
|
|
110
|
-
l = `${
|
|
109
|
+
const { start: d, end: y } = f;
|
|
110
|
+
l = `${d} ${y}`;
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
|
-
return l || (l = ((
|
|
113
|
+
return l || (l = ((i = r.match(/\d+/)) == null ? void 0 : i[0]) ?? "400"), c = ((g = r.match(/[a-zA-Z]+/)) == null ? void 0 : g[0]) === "italic" ? "italic" : void 0, {
|
|
114
114
|
[r]: {
|
|
115
115
|
family: t,
|
|
116
116
|
source: e.files[r],
|
|
@@ -130,7 +130,7 @@ const E = (e) => {
|
|
|
130
130
|
source: o,
|
|
131
131
|
variant: "menu"
|
|
132
132
|
},
|
|
133
|
-
variants:
|
|
133
|
+
variants: a
|
|
134
134
|
};
|
|
135
135
|
}, I = (e) => ({
|
|
136
136
|
id: `${e.family}/${e.version}`,
|
|
@@ -141,8 +141,8 @@ const E = (e) => {
|
|
|
141
141
|
}), W = (e) => {
|
|
142
142
|
if (e.customData.needsLoading) {
|
|
143
143
|
e.customData.needsLoading = !1;
|
|
144
|
-
const { font: t } = e.customData, { family: o, source: s, options: n } = t.menuVariant,
|
|
145
|
-
document.fonts.add(
|
|
144
|
+
const { font: t } = e.customData, { family: o, source: s, options: n } = t.menuVariant, a = new FontFace(o, `url("${s}")`, n);
|
|
145
|
+
document.fonts.add(a), a.load().catch(() => {
|
|
146
146
|
});
|
|
147
147
|
}
|
|
148
148
|
};
|
|
@@ -156,8 +156,8 @@ const j = (e) => {
|
|
|
156
156
|
return new URLSearchParams(t);
|
|
157
157
|
}, N = (e) => {
|
|
158
158
|
const { apiKey: t, searchParams: o } = e, s = (n = {}) => {
|
|
159
|
-
const
|
|
160
|
-
return `${
|
|
159
|
+
const a = "https://www.googleapis.com/webfonts/v1/webfonts", r = j(n);
|
|
160
|
+
return `${a}?${r}`;
|
|
161
161
|
};
|
|
162
162
|
return {
|
|
163
163
|
id: "google-fonts",
|
|
@@ -173,19 +173,19 @@ const j = (e) => {
|
|
|
173
173
|
sort: "alpha",
|
|
174
174
|
subset: "latin",
|
|
175
175
|
capability: ["WOFF2", "VF"]
|
|
176
|
-
},
|
|
176
|
+
}, a = o == null ? void 0 : o(), r = {
|
|
177
177
|
...n,
|
|
178
|
-
...
|
|
178
|
+
...a
|
|
179
179
|
}, c = await (await fetch(s(r))).json();
|
|
180
180
|
return (u = c.items) != null && u.length ? (h = c.items.map(I), h) : [];
|
|
181
181
|
},
|
|
182
182
|
itemLayout: (n) => {
|
|
183
|
-
const
|
|
184
|
-
return W(
|
|
183
|
+
const a = h.find((r) => r.id === n.assetProps.id);
|
|
184
|
+
return W(a), {
|
|
185
185
|
type: "column",
|
|
186
|
-
onClick: () => n.onSelect(
|
|
186
|
+
onClick: () => n.onSelect(a),
|
|
187
187
|
htmlAttrs: {
|
|
188
|
-
title:
|
|
188
|
+
title: a.name
|
|
189
189
|
},
|
|
190
190
|
style: {
|
|
191
191
|
borderWidth: "1px",
|
|
@@ -196,12 +196,12 @@ const j = (e) => {
|
|
|
196
196
|
children: [
|
|
197
197
|
{
|
|
198
198
|
type: "text",
|
|
199
|
-
content:
|
|
199
|
+
content: a.name,
|
|
200
200
|
style: {
|
|
201
201
|
overflow: "hidden",
|
|
202
202
|
textOverflow: "ellipsis",
|
|
203
203
|
whiteSpace: "nowrap",
|
|
204
|
-
fontFamily:
|
|
204
|
+
fontFamily: a.customData.font.menuVariant.family,
|
|
205
205
|
fontSize: "24px",
|
|
206
206
|
paddingLeft: "8px",
|
|
207
207
|
paddingRight: "8px"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(l,f){typeof exports=="object"&&typeof module<"u"?module.exports=f():typeof define=="function"&&define.amd?define(f):(l=typeof globalThis<"u"?globalThis:l||self,l.StudioSdkPlugins_googleFontsAssetProvider=f())})(this,function(){"use strict";var l=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(l||{}),f=(e=>(e.toastAdd="studio:toastAdd",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.sidebarLeftSet="studio:sidebarLeft:set",e.sidebarLeftGet="studio:sidebarLeft:get",e.sidebarLeftToggle="studio:sidebarLeft:toggle",e.sidebarRightSet="studio:sidebarRight:set",e.sidebarRightGet="studio:sidebarRight:get",e.sidebarRightToggle="studio:sidebarRight:toggle",e.sidebarTopSet="studio:sidebarTop:set",e.sidebarTopGet="studio:sidebarTop:get",e.sidebarTopToggle="studio:sidebarTop:toggle",e.sidebarBottomSet="studio:sidebarBottom:set",e.sidebarBottomGet="studio:sidebarBottom:get",e.sidebarBottomToggle="studio:sidebarBottom:toggle",e.symbolAdd="studio:symbolAdd",e.symbolDetach="studio:symbolDetach",e.symbolOverride="studio:symbolOverride",e.symbolPropagateStyles="studio:propagateStyles",e.getPagesConfig="studio:getPagesConfig",e.setPagesConfig="studio:setPagesConfig",e.getPageSettings="studio:getPageSettings",e.setPageSettings="studio:setPageSettings",e.projectFiles="studio:projectFiles",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.getStateContextMenu="studio:getStateContextMenu",e.setStateContextMenu="studio:setStateContextMenu",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e.layoutUpdate="studio:layoutUpdate",e.layoutGet="studio:layoutGet",e.layoutConfigGet="studio:layoutConfigGet",e.layoutConfigSet="studio:layoutConfigSet",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e))(f||{});const y="app.grapesjs.com",P="app-stage.grapesjs.com",v=[y,P,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],L="license:check:start",R="license:check:end",x=()=>typeof window<"u",
|
|
1
|
+
(function(l,f){typeof exports=="object"&&typeof module<"u"?module.exports=f():typeof define=="function"&&define.amd?define(f):(l=typeof globalThis<"u"?globalThis:l||self,l.StudioSdkPlugins_googleFontsAssetProvider=f())})(this,function(){"use strict";var l=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(l||{}),f=(e=>(e.toastAdd="studio:toastAdd",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.sidebarLeftSet="studio:sidebarLeft:set",e.sidebarLeftGet="studio:sidebarLeft:get",e.sidebarLeftToggle="studio:sidebarLeft:toggle",e.sidebarRightSet="studio:sidebarRight:set",e.sidebarRightGet="studio:sidebarRight:get",e.sidebarRightToggle="studio:sidebarRight:toggle",e.sidebarTopSet="studio:sidebarTop:set",e.sidebarTopGet="studio:sidebarTop:get",e.sidebarTopToggle="studio:sidebarTop:toggle",e.sidebarBottomSet="studio:sidebarBottom:set",e.sidebarBottomGet="studio:sidebarBottom:get",e.sidebarBottomToggle="studio:sidebarBottom:toggle",e.symbolAdd="studio:symbolAdd",e.symbolDetach="studio:symbolDetach",e.symbolOverride="studio:symbolOverride",e.symbolPropagateStyles="studio:propagateStyles",e.getPagesConfig="studio:getPagesConfig",e.setPagesConfig="studio:setPagesConfig",e.getPageSettings="studio:getPageSettings",e.setPageSettings="studio:setPageSettings",e.projectFiles="studio:projectFiles",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.getStateContextMenu="studio:getStateContextMenu",e.setStateContextMenu="studio:setStateContextMenu",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e.layoutUpdate="studio:layoutUpdate",e.layoutGet="studio:layoutGet",e.layoutConfigGet="studio:layoutConfigGet",e.layoutConfigSet="studio:layoutConfigSet",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e))(f||{});const y="app.grapesjs.com",P="app-stage.grapesjs.com",v=[y,P,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],L="license:check:start",R="license:check:end",x=()=>typeof window<"u",D=({isDev:e,isStage:t})=>`${e?"":`https://${t?P:y}`}/api`,k=()=>{const e=x()&&window.location.hostname;return!!e&&(v.includes(e)||v.some(t=>e.endsWith(t)))};async function G({path:e,baseApiUrl:t,method:o="GET",headers:s={},params:n,body:i}){const u=`${t||D({isDev:!1,isStage:!1})}${e}`,c={method:o,headers:{"Content-Type":"application/json",...s}};i&&(c.body=JSON.stringify(i));const d=n?new URLSearchParams(n).toString():"",a=d?`?${d}`:"",g=await fetch(`${u}${a}`,c);if(!g.ok)throw new Error(`HTTP error! status: ${g.status}`);return g.json()}const w={[l.free]:0,[l.startup]:10,[l.business]:20,[l.enterprise]:30};function $(e){const t=e;return t.init=o=>s=>e(s,o),t}const F=e=>$(e);async function U({editor:e,plan:t,pluginName:o,licenseKey:s,cleanup:n}){let i="",r=!1;const u=k(),c=a=>{console.warn("Cleanup plugin:",o,"Reason:",a),n()},d=(a={})=>{var T;const{error:g,sdkLicense:b}=a,p=(T=a.plan)==null?void 0:T.category;if(!(b||a.license)||g)c(g||"Invalid license");else if(p){const _=w[t],K=w[p];_>K&&c({pluginRequiredPlan:t,licensePlan:p})}};e.on(L,a=>{i=a==null?void 0:a.baseApiUrl,r=!0}),e.on(R,a=>{d(a)}),setTimeout(async()=>{if(!r){if(u)return;if(s){const a=await O({licenseKey:s,pluginName:o,baseApiUrl:i});a&&d(a)}else c("The `licenseKey` option not provided")}},2e3)}async function O(e){const{licenseKey:t,pluginName:o,baseApiUrl:s}=e;try{return(await G({baseApiUrl:s,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:o}})).result||{}}catch(n){return console.error("Error during SDK license check:",n),!1}}const M=e=>{const{family:t,menu:o,axes:s}=e,n=!!s,i=Object.assign({},...e.variants.map(r=>{var a,g;let u,c;if(n){const b=s.find(p=>p.tag==="wght");if(b){const{start:p,end:A}=b;u=`${p} ${A}`}}return u||(u=((a=r.match(/\d+/))==null?void 0:a[0])??"400"),c=((g=r.match(/[a-zA-Z]+/))==null?void 0:g[0])==="italic"?"italic":void 0,{[r]:{family:t,source:e.files[r],variant:r,options:{style:c,weight:u}}}}));return{family:t,menuVariant:{family:`assetManagerMenu-${t}`,source:o,variant:"menu"},variants:i}},B=e=>({id:`${e.family}/${e.version}`,type:"font",src:e.menu,name:e.family,customData:{font:M(e),needsLoading:!0}}),E=e=>{if(e.customData.needsLoading){e.customData.needsLoading=!1;const{font:t}=e.customData,{family:o,source:s,options:n}=t.menuVariant,i=new FontFace(o,`url("${s}")`,n);document.fonts.add(i),i.load().catch(()=>{})}};let h;const I=e=>{const t=[];for(const o of Object.keys(e)){let s=e[o];s&&(Array.isArray(s)?t.push(...s.map(n=>[o,n.toString()])):(s=s.toString(),t.push([o,s])))}return new URLSearchParams(t)},j=e=>{const{apiKey:t,searchParams:o}=e,s=(n={})=>{const i="https://www.googleapis.com/webfonts/v1/webfonts",r=I(n);return`${i}?${r}`};return{id:"google-fonts",types:["font"],label:({editor:n})=>n.I18n.t("googleFontsAssetProvider.providerLabel"),search:{reloadOnInput:!1},async onLoad(){var d;if(h)return h;const n={key:t,sort:"alpha",subset:"latin",capability:["WOFF2","VF"]},i=o==null?void 0:o(),r={...n,...i},c=await(await fetch(s(r))).json();return(d=c.items)!=null&&d.length?(h=c.items.map(B),h):[]},itemLayout:n=>{const i=h.find(r=>r.id===n.assetProps.id);return E(i),{type:"column",onClick:()=>n.onSelect(i),htmlAttrs:{title:i.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"text",content:i.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:i.customData.font.menuVariant.family,fontSize:"24px",paddingLeft:"8px",paddingRight:"8px"}}]}}}},W={googleFontsAssetProvider:{searchBtn:"Search on Google Fonts",modalTitle:"Select Font",providerLabel:"Google Fonts"}},N="googleFontsAssetProvider";return F(function(e,t){const{i18n:o={}}=t,s=j(t);e.runCommand(f.assetProviderAdd,{provider:s}),e.I18n.addMessages({en:W,...o}),U({editor:e,licenseKey:t.licenseKey,plan:l.startup,pluginName:N,cleanup:()=>{e.runCommand(f.assetProviderRemove,{id:s.id})}})})});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";var L=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(L||{}),x=(e=>(e.Info="info",e.Error="error",e.Success="success",e.Warning="warning",e))(x||{}),f=(e=>(e.toastAdd="studio:toastAdd",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.sidebarLeftSet="studio:sidebarLeft:set",e.sidebarLeftGet="studio:sidebarLeft:get",e.sidebarLeftToggle="studio:sidebarLeft:toggle",e.sidebarRightSet="studio:sidebarRight:set",e.sidebarRightGet="studio:sidebarRight:get",e.sidebarRightToggle="studio:sidebarRight:toggle",e.sidebarTopSet="studio:sidebarTop:set",e.sidebarTopGet="studio:sidebarTop:get",e.sidebarTopToggle="studio:sidebarTop:toggle",e.sidebarBottomSet="studio:sidebarBottom:set",e.sidebarBottomGet="studio:sidebarBottom:get",e.sidebarBottomToggle="studio:sidebarBottom:toggle",e.symbolAdd="studio:symbolAdd",e.symbolDetach="studio:symbolDetach",e.symbolOverride="studio:symbolOverride",e.symbolPropagateStyles="studio:propagateStyles",e.getPagesConfig="studio:getPagesConfig",e.setPagesConfig="studio:setPagesConfig",e.getPageSettings="studio:getPageSettings",e.setPageSettings="studio:setPageSettings",e.projectFiles="studio:projectFiles",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.getStateContextMenu="studio:getStateContextMenu",e.setStateContextMenu="studio:setStateContextMenu",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e.layoutUpdate="studio:layoutUpdate",e.layoutGet="studio:layoutGet",e.layoutConfigGet="studio:layoutConfigGet",e.layoutConfigSet="studio:layoutConfigSet",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e))(f||{});const
|
|
1
|
+
"use strict";var L=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(L||{}),x=(e=>(e.Info="info",e.Error="error",e.Success="success",e.Warning="warning",e))(x||{}),f=(e=>(e.toastAdd="studio:toastAdd",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.sidebarLeftSet="studio:sidebarLeft:set",e.sidebarLeftGet="studio:sidebarLeft:get",e.sidebarLeftToggle="studio:sidebarLeft:toggle",e.sidebarRightSet="studio:sidebarRight:set",e.sidebarRightGet="studio:sidebarRight:get",e.sidebarRightToggle="studio:sidebarRight:toggle",e.sidebarTopSet="studio:sidebarTop:set",e.sidebarTopGet="studio:sidebarTop:get",e.sidebarTopToggle="studio:sidebarTop:toggle",e.sidebarBottomSet="studio:sidebarBottom:set",e.sidebarBottomGet="studio:sidebarBottom:get",e.sidebarBottomToggle="studio:sidebarBottom:toggle",e.symbolAdd="studio:symbolAdd",e.symbolDetach="studio:symbolDetach",e.symbolOverride="studio:symbolOverride",e.symbolPropagateStyles="studio:propagateStyles",e.getPagesConfig="studio:getPagesConfig",e.setPagesConfig="studio:setPagesConfig",e.getPageSettings="studio:getPageSettings",e.setPageSettings="studio:setPageSettings",e.projectFiles="studio:projectFiles",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.getStateContextMenu="studio:getStateContextMenu",e.setStateContextMenu="studio:setStateContextMenu",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e.layoutUpdate="studio:layoutUpdate",e.layoutGet="studio:layoutGet",e.layoutConfigGet="studio:layoutConfigGet",e.layoutConfigSet="studio:layoutConfigSet",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e))(f||{});const N={ratioDefault:!0,tc:!1,cl:!1,cr:!1,bc:!1},w=`<svg viewBox="0 0 24 24">
|
|
2
2
|
<path d="M19 0H9C7.9 0 7 .9 7 2V18C7 19.1 7.9 20 9 20H19C20.1 20 21 19.1 21 18V2C21 .9 20.1 0 19 0M19 18H9V2H19V18M3 4V22C3 23.1 3.9 24 5 24H17V22H5V4H3M14 5L11 10L14 15L17 10L14 5Z" />
|
|
3
|
-
</svg>`,R="layout-icon-picker",
|
|
3
|
+
</svg>`,R="layout-icon-picker",j="icons-layout-",_="icons-list-layout",$="gs-iconify-picker",A="__iconify_collection",H="https://api.iconify.design",I=new Map;let T;const B=({collectionId:e})=>`https://cdn.jsdelivr.net/npm/@iconify-json/${e}@latest/icons.json`;async function C({collectionId:e,editor:o}){try{if(I.has(e))return I.get(e);const t=await fetch(B({collectionId:e}));if(!t.ok)throw new Error(`Failed to fetch collection: ${t.statusText}`);const n=await t.json();return I.set(e,n),n}catch(t){console.error("Error fetching collection",t),o.runCommand(f.toastAdd,q());return}}async function G({collectionIds:e,editor:o}){try{if(T)return T;const t=e?`?prefixes=${e.join(",")}`:"",n=await fetch(`${H}/collections${t}`);if(!n.ok)throw new Error(`Failed to fetch collections: ${n.statusText}`);return T=await n.json(),T}catch(t){console.error("Error fetching collections",t),o.runCommand(f.toastAdd,D());return}}function P(){return{type:"button",label:"Open Icon Picker",name:"onActive",changeProp:!0,command(e){var o;(o=e.getSelected())==null||o.trigger("active")}}}async function W({collectionIds:e,editor:o,component:t}){const n=await G({collectionIds:e,editor:o});if(!n)return;const a=({icon:s,collectionId:c,iconId:i})=>{t.components(s),t.set({collectionId:c,iconId:i})},g=Object.entries(n).map(([s,c])=>({id:s,...c})).sort((s,c)=>s.name.localeCompare(c.name)),u=t.get("collectionId")??g[0].id;o.runCommand(f.layoutToggle,{id:R,placer:{type:"dialog",size:"l",title:"Select Icon"},header:!1,layout:{type:"column",style:{height:500,gap:10},children:[V({collectionsList:g,collectionId:u,editor:o,handleClick:a}),{id:_,type:"column",grow:!0}]}});const r=await C({collectionId:u,editor:o});r&&E({editor:o,collection:r,handleClick:a,collectionId:u})}function F({editor:e,collection:o}){e.em.set(A,o)}function K(e){return e.em.get(A)}function E(e){const{editor:o}=e,t={id:j,layout:Y(e),header:!1,style:{height:"100%"},placer:{type:"static",layoutId:_}};o.runCommand(f.layoutRemove,{id:t.id,force:!0}),setTimeout(()=>o.runCommand(f.layoutAdd,t),10)}function V(e){const{collectionsList:o,collectionId:t,editor:n,handleClick:a}=e,g=o.map(({id:u,name:r,total:s})=>({id:u,label:`${r} (${s})`})).sort((u,r)=>u.label.localeCompare(r.label));return{type:"column",style:{gap:10},className:`${$}__header`,children:[{type:"selectField",value:t,options:g,emptyState:"Select an icon collection",onChange:async({setState:u,value:r})=>{const s=await C({collectionId:r,editor:n});s&&(u({value:r}),F({editor:n,collection:s}),E({editor:n,collection:s,handleClick:a,collectionId:r}))}},{type:"inputField",value:"",placeholder:"Search icons inside collection...",editorEvents:{[`change:${A}`]:({setState:u})=>u({value:""})},onInput:({setState:u,value:r,editor:s})=>{const c=K(s);if(!c)return;const i=Object.fromEntries(Object.entries(c.icons).filter(([d])=>d.includes(r)));u({value:r}),E({editor:s,collection:c,handleClick:a,collectionId:r,collectionFiltered:{...c,icons:i}})}}]}}function Y({collection:e,collectionFiltered:o,handleClick:t}){const{height:n=24,width:a=24,icons:g,prefix:u}=o||e,r=Object.entries(g).map(([s,{body:c}])=>({name:s,body:c}),{});return{type:"column",className:`${$}__content`,style:{height:"100%"},children:{type:"virtualList",items:r,itemLayout:({item:s})=>[{type:"custom",render:c=>{const{editor:i,addEl:d,removeEl:h}=c,l=document.createElementNS("http://www.w3.org/2000/svg","svg");l.setAttribute("xmlns","http://www.w3.org/2000/svg"),l.innerHTML=s.body,l.setAttribute("viewBox",`0 0 ${a} ${n}`);const{cssWidth:p,cssHeight:y}=z(a,n);l.style.cssText=`width: ${p}px; height: ${y}px; cursor: pointer;`,l.addEventListener("mouseover",()=>{l.style.border="2px solid currentColor",l.style.borderRadius="4px",l.style.padding="4px"}),l.addEventListener("mouseout",()=>{l.style.border="none"});const b=()=>{const v=l.cloneNode(!0);v.removeAttribute("style");const M=v.outerHTML;t({icon:M,collectionId:u,iconId:s.name}),i==null||i.runCommand(f.layoutRemove,{id:R})};return l.addEventListener("click",b),d(l),()=>{l.removeEventListener("click",b),h(l)}}}]}}}function z(e,o){const t=e/o;let n=48,a=48;return t>1?a=48/t:t<1&&(n=48*t),{cssWidth:n,cssHeight:a}}function D(){return{id:"toast-error-getCollections",header:"Error",content:"Error fetching collections",variant:x.Error}}function q(){return{...D(),id:"toast-error-getCollection",content:"Error fetching collection"}}const U="app.grapesjs.com",m="app-stage.grapesjs.com",k=[U,m,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],J="license:check:start",S="license:check:end",X=()=>typeof window<"u",Z=({isDev:e,isStage:o})=>`${e?"":`https://${o?m:U}`}/api`,Q=()=>{const e=X()&&window.location.hostname;return!!e&&(k.includes(e)||k.some(o=>e.endsWith(o)))};async function ee({path:e,baseApiUrl:o,method:t="GET",headers:n={},params:a,body:g}){const r=`${o||Z({isDev:!1,isStage:!1})}${e}`,s={method:t,headers:{"Content-Type":"application/json",...n}};g&&(s.body=JSON.stringify(g));const c=a?new URLSearchParams(a).toString():"",i=c?`?${c}`:"",d=await fetch(`${r}${i}`,s);if(!d.ok)throw new Error(`HTTP error! status: ${d.status}`);return d.json()}const O={[L.free]:0,[L.startup]:10,[L.business]:20,[L.enterprise]:30};function te(e){const o=e;return o.init=t=>n=>e(n,t),o}const oe=e=>te(e);async function ne({editor:e,plan:o,pluginName:t,licenseKey:n,cleanup:a}){let g="",u=!1;const r=Q(),s=i=>{console.warn("Cleanup plugin:",t,"Reason:",i),a()},c=(i={})=>{var y;const{error:d,sdkLicense:h}=i,l=(y=i.plan)==null?void 0:y.category;if(!(h||i.license)||d)s(d||"Invalid license");else if(l){const b=O[o],v=O[l];b>v&&s({pluginRequiredPlan:o,licensePlan:l})}};e.on(J,i=>{g=i==null?void 0:i.baseApiUrl,u=!0}),e.on(S,i=>{c(i)}),setTimeout(async()=>{if(!u){if(r)return;if(n){const i=await se({licenseKey:n,pluginName:t,baseApiUrl:g});i&&c(i)}else s("The `licenseKey` option not provided")}},2e3)}async function se(e){const{licenseKey:o,pluginName:t,baseApiUrl:n}=e;try{return(await ee({baseApiUrl:n,path:`/sdk/${o||"na"}`,method:"POST",params:{d:window.location.hostname,pn:t}})).result||{}}catch(a){return console.error("Error during SDK license check:",a),!1}}const ie=(e,o)=>{var t;return!!((t=e==null?void 0:e.hasAttribute)!=null&&t.call(e,o))},ce="iconifyComponent",re=function(e,o={}){var l;const{Components:t,Blocks:n}=e,{collections:a,extendIconComponent:g=!0,licenseKey:u,block:r={}}=o,s="icon",c="iconify",i="Iconify",d="data-type-iconify",h={events:()=>({dblclick:"onActive"}),onActive(){W({collectionIds:a,editor:e,component:this.model})}};if(t.addType(c,{block:r&&{label:i,media:w,content:{type:c},category:"Extra",activate:!0,...r},isComponent:p=>ie(p,d),model:{defaults:{name:i,icon:w,droppable:!1,attributes:{[d]:!0},resizable:N,components:w,style:{width:"50px",height:"50px"},traits:[P()]},init(){this.listenTo(this.components(),"change add",this.disableLayers),this.disableLayers()},disableLayers(){this.components().forEach(p=>p.set({layerable:!1,locked:!0}))}},view:h}),g){const p=(l=t.getType(s))==null?void 0:l.model,[y,b,...v]=p.getDefaults().traits;t.addType(s,{model:{defaults:{traits:[y,b,P(),...v]}},view:h})}ne({editor:e,licenseKey:u,plan:L.startup,pluginName:ce,cleanup:()=>{n.remove(c),t.removeType(c)}})},le=oe(re);module.exports=le;
|