@grapesjs/studio-sdk-plugins 1.0.21 → 1.0.22-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.
Files changed (66) hide show
  1. package/dist/animationComponent/components/Animation.d.ts +6 -0
  2. package/dist/animationComponent/components/AnimationGroup.d.ts +4 -0
  3. package/dist/animationComponent/index.cjs.d.ts +3 -0
  4. package/dist/animationComponent/index.cjs.js +507 -0
  5. package/dist/animationComponent/index.d.ts +3 -0
  6. package/dist/animationComponent/index.es.d.ts +3 -0
  7. package/dist/animationComponent/index.es.js +1111 -0
  8. package/dist/animationComponent/index.umd.js +507 -0
  9. package/dist/animationComponent/shared.d.ts +3 -0
  10. package/dist/animationComponent/types.d.ts +28 -0
  11. package/dist/animationComponent/typesSchema.d.ts +48 -0
  12. package/dist/animationComponent/utils.d.ts +19 -0
  13. package/dist/dataSourceEjs/EjsExporter.d.ts +13 -0
  14. package/dist/dataSourceEjs/EjsImporter.d.ts +29 -0
  15. package/dist/dataSourceEjs/index.cjs.d.ts +2 -2
  16. package/dist/dataSourceEjs/index.cjs.js +24 -3
  17. package/dist/dataSourceEjs/index.d.ts +2 -2
  18. package/dist/dataSourceEjs/index.es.d.ts +2 -2
  19. package/dist/dataSourceEjs/index.es.js +697 -114
  20. package/dist/dataSourceEjs/index.umd.js +24 -3
  21. package/dist/dataSourceEjs/shared.d.ts +3 -0
  22. package/dist/dataSourceEjs/types.d.ts +2 -2
  23. package/dist/dataSourceEjs/typesSchema.d.ts +3 -0
  24. package/dist/dataSourceHandlebars/HandlebarsExporter.d.ts +16 -0
  25. package/dist/dataSourceHandlebars/HandlebarsImporter.d.ts +20 -0
  26. package/dist/dataSourceHandlebars/helperImplementations.d.ts +1 -0
  27. package/dist/dataSourceHandlebars/index.cjs.js +20 -1
  28. package/dist/dataSourceHandlebars/index.es.js +401 -99
  29. package/dist/dataSourceHandlebars/index.umd.js +20 -1
  30. package/dist/dataSourceHandlebars/shared.d.ts +3 -0
  31. package/dist/dataSourceHandlebars/types.d.ts +2 -2
  32. package/dist/dataSourceHandlebars/typesSchema.d.ts +3 -0
  33. package/dist/googleFontsAssetProvider/index.cjs.js +1 -1
  34. package/dist/googleFontsAssetProvider/index.es.js +29 -29
  35. package/dist/googleFontsAssetProvider/index.umd.js +1 -1
  36. package/dist/iconifyComponent/index.cjs.js +2 -2
  37. package/dist/iconifyComponent/index.es.js +64 -64
  38. package/dist/iconifyComponent/index.umd.js +2 -2
  39. package/dist/index.cjs.d.ts +1 -0
  40. package/dist/index.cjs.js +587 -51
  41. package/dist/index.d.ts +1 -0
  42. package/dist/index.es.d.ts +1 -0
  43. package/dist/index.es.js +4809 -3046
  44. package/dist/index.umd.js +584 -48
  45. package/dist/layoutSidebarButtons/index.cjs.js +1 -1
  46. package/dist/layoutSidebarButtons/index.es.js +59 -59
  47. package/dist/layoutSidebarButtons/index.umd.js +1 -1
  48. package/dist/presetPrintable/index.cjs.js +3 -3
  49. package/dist/presetPrintable/index.es.js +136 -131
  50. package/dist/presetPrintable/index.umd.js +4 -4
  51. package/dist/prosemirror/index.cjs.js +1 -1
  52. package/dist/prosemirror/index.es.js +1 -1
  53. package/dist/prosemirror/index.umd.js +1 -1
  54. package/dist/rteTinyMce/index.cjs.js +2 -2
  55. package/dist/rteTinyMce/index.es.js +67 -67
  56. package/dist/rteTinyMce/index.umd.js +2 -2
  57. package/dist/tableComponent/index.cjs.js +1 -1
  58. package/dist/tableComponent/index.es.js +14 -14
  59. package/dist/tableComponent/index.umd.js +1 -1
  60. package/dist/utilsDataSources.d.ts +28 -0
  61. package/dist/youtubeAssetProvider/index.cjs.js +1 -1
  62. package/dist/youtubeAssetProvider/index.es.js +26 -26
  63. package/dist/youtubeAssetProvider/index.umd.js +1 -1
  64. package/package.json +2 -1
  65. package/dist/dataSourceEjs/EjsStrategy.d.ts +0 -15
  66. package/dist/dataSourceHandlebars/HandlebarsStrategy.d.ts +0 -17
@@ -1 +1,20 @@
1
- (function(o,u){typeof exports=="object"&&typeof module<"u"?module.exports=u():typeof define=="function"&&define.amd?define(u):(o=typeof globalThis<"u"?globalThis:o||self,o.StudioSdkPlugins_dataSourceHandlebars=u())})(this,function(){"use strict";var o=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(o||{}),u=(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.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.setDragAbsolute="studio:setDragAbsolute",e))(u||{});const h="app.grapesjs.com",b="app-stage.grapesjs.com",y=[h,b,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],$="license:check:start",x="license:check:end",I=()=>typeof window<"u",v=({isDev:e,isStage:t})=>`${e?"":`https://${t?b:h}`}/api`,A=()=>{const e=I()&&window.location.hostname;return!!e&&(y.includes(e)||y.some(t=>e.endsWith(t)))};async function E({path:e,baseApiUrl:t,method:n="GET",headers:s={},params:r,body:a}){const p=`${t||v({isDev:!1,isStage:!1})}${e}`,c={method:n,headers:{"Content-Type":"application/json",...s}};a&&(c.body=JSON.stringify(a));const l=r?new URLSearchParams(r).toString():"",i=l?`?${l}`:"",g=await fetch(`${p}${i}`,c);if(!g.ok)throw new Error(`HTTP error! status: ${g.status}`);return g.json()}const P={[o.free]:0,[o.startup]:10,[o.business]:20,[o.enterprise]:30};function L(e){const t=e;return t.init=n=>s=>e(s,n),t}const _=e=>L(e);async function D({editor:e,plan:t,pluginName:n,licenseKey:s,cleanup:r}){let a="",f=!1;const p=A(),c=i=>{console.warn("Cleanup plugin:",n,"Reason:",i),r()},l=(i={})=>{var T;const{error:g,sdkLicense:N}=i,d=(T=i.plan)==null?void 0:T.category;if(!(N||i.license)||g)c(g||"Invalid license");else if(d){const j=P[t],O=P[d];j>O&&c({pluginRequiredPlan:t,licensePlan:d})}};e.on($,i=>{a=i==null?void 0:i.baseApiUrl,f=!0}),e.on(x,i=>{l(i)}),setTimeout(async()=>{if(!f){if(p)return;if(s){const i=await R({licenseKey:s,pluginName:n,baseApiUrl:a});i&&l(i)}else c("The `licenseKey` option not provided")}},2e3)}async function R(e){const{licenseKey:t,pluginName:n,baseApiUrl:s}=e;try{return(await E({baseApiUrl:s,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:n}})).result||{}}catch(r){return console.error("Error during SDK license check:",r),!1}}class w{getHelperId(t,n){return{equals:`${n==="string"?"str":n==="number"?"num":"any"}Equals`,isTruthy:"isTruthy",isFalsy:"isFalsy",isDefined:"isDefined",isNull:"isNull",isUndefined:"isUndefined",isArray:"isArray",isObject:"isObject",isString:"isString",isNumber:"isNumber",isBoolean:"isBoolean",isDefaultValue:"isDefaultValue",">":"numGt","<":"numLt",">=":"numGte","<=":"numLte","=":"numEq","!=":"numNeq",contains:"strContains",startsWith:"strStartsWith",endsWith:"strEndsWith",equalsIgnoreCase:"strEqualsIgnoreCase",trimEquals:"strTrimEquals"}[t]||t}getVariableSyntax({collectionId:t,variableType:n,path:s,defaultValue:r}){let a=s;return t&&(a=[this._sanitizeVariableName(t),n,s].filter(Boolean).join(".")),r?`{{#if ${s}}}{{{${a}}}}{{else}}${r}{{/if}}`:`{{{${a}}}}`}getCollectionStartSyntax(t){const{collectionId:n,dataSource:s}=t,r=s==null?void 0:s.path;let a="";if(t.startIndex!==void 0||t.endIndex!==void 0){const l=t.startIndex??0,i=t.endIndex!==void 0?t.endIndex:"";i!==""?a=` (slice ${r} ${l} ${i})`:a=` (slice ${r} ${l})`}const p=` as |${this._sanitizeVariableName(n)}|`;return`{{#each ${a||r}${p}}}`}getCollectionEndSyntax(){return"{{/each}}"}getConditionalStartSyntax(t){if(!t)return"";if(t.logicalOperator==="and"||t.logicalOperator==="or"){const n=this.getHelperId(t.logicalOperator),s=t.statements.map(r=>this._parseCondition(r)).join(", ");return`{{#if (${n} ${s})}}`}else return`{{#if ${this._parseCondition(t)}}}`}_parseCondition(t){if(!t)return"";if(t.operator==="and"||t.operator==="or"){const n=this.getHelperId(t.operator),s=t.statements.map(r=>this._parseCondition(r)).join(" ");return`(${n} ${s})`}else{const n=this.getHelperId(t.operator,this._getTypeHint(t)),s=this._parseValue(t.left),r=this._parseValue(t.right);return`(${n} ${s} ${r})`}}_getTypeHint(t){return["contains","startsWith","endsWith","equalsIgnoreCase","trimEquals"].includes(t.operator)?"string":[">","<",">=","<=","=","!="].includes(t.operator)?"number":"any"}_parseValue(t){return typeof t=="object"?this.getVariableSyntax(t):typeof t=="string"?`'${t.replace(/'/g,"\\'")}'`:String(t)}_sanitizeVariableName(t){return t.replace(/[^a-zA-Z0-9_$]/g,"_")}getConditionElseSyntax(){return"{{else}}"}getConditionalEndSyntax(){return"{{/if}}"}}const G="dataSourceHandlebars";return _(function(e,t={}){const n=({options:r})=>{const a=r.exportConfig;a.exportPreset==="handlebarsjs"&&(r.exportConfig={...a,exportStrategy:new w})},s=`${e.Commands.events.runBeforeCommand}${u.projectFiles}`;e.on(s,n),D({editor:e,licenseKey:t.licenseKey,plan:o.startup,pluginName:G,cleanup:()=>{e.off(s,n)}})})});
1
+ (function(h,d){typeof exports=="object"&&typeof module<"u"?module.exports=d(require("handlebars/dist/cjs/handlebars")):typeof define=="function"&&define.amd?define(["handlebars/dist/cjs/handlebars"],d):(h=typeof globalThis<"u"?globalThis:h||self,h.StudioSdkPlugins_dataSourceHandlebars=d(h.Handlebars))})(this,function(h){"use strict";const d="app.grapesjs.com",$="app-stage.grapesjs.com",b=[d,$,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],E="license:check:start",v="license:check:end",I=()=>typeof window<"u",P=({isDev:s,isStage:t})=>`${s?"":`https://${t?$:d}`}/api`,T=()=>{const s=I()&&window.location.hostname;return!!s&&(b.includes(s)||b.some(t=>s.endsWith(t)))};async function k({path:s,baseApiUrl:t,method:n="GET",headers:e={},params:a,body:r}){const o=`${t||P({isDev:!1,isStage:!1})}${s}`,u={method:n,headers:{"Content-Type":"application/json",...e}};r&&(u.body=JSON.stringify(r));const l=a?new URLSearchParams(a).toString():"",c=l?`?${l}`:"",g=await fetch(`${o}${c}`,u);if(!g.ok)throw new Error(`HTTP error! status: ${g.status}`);return g.json()}var p=(s=>(s.free="free",s.startup="startup",s.business="business",s.enterprise="enterprise",s))(p||{});const x={[p.free]:0,[p.startup]:10,[p.business]:20,[p.enterprise]:30};function L(s){const t=s;return t.init=n=>e=>s(e,n),t}const w=s=>L(s);async function N({editor:s,plan:t,pluginName:n,licenseKey:e,cleanup:a}){let r="",i=!1;const o=T(),u=c=>{console.warn("Cleanup plugin:",n,"Reason:",c),a()},l=(c={})=>{var C;const{error:g,sdkLicense:W}=c,y=(C=c.plan)==null?void 0:C.category;if(!(W||c.license)||g)u(g||"Invalid license");else if(y){const A=x[t],G=x[y];A>G&&u({pluginRequiredPlan:t,licensePlan:y})}};s.on(E,c=>{r=c==null?void 0:c.baseApiUrl,i=!0}),s.on(v,c=>{l(c)}),setTimeout(async()=>{if(!i){if(o)return;if(e){const c=await H({licenseKey:e,pluginName:n,baseApiUrl:r});c&&l(c)}else u("The `licenseKey` option not provided")}},2e3)}async function H(s){const{licenseKey:t,pluginName:n,baseApiUrl:e}=s;try{return(await k({baseApiUrl:e,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:n}})).result||{}}catch(a){return console.error("Error during SDK license check:",a),!1}}var m=(s=>(s.variable="data-variable",s.condition="data-condition",s.conditionTrue="data-condition-true-content",s.conditionFalse="data-condition-false-content",s.collection="data-collection",s.collectionItem="data-collection-item",s))(m||{});class M{constructor(t){this.strategy=t,this.requiredHelpers=new Set,this.helperLibrary={}}registerHelper(t){this.helperLibrary[t]&&this.requiredHelpers.add(t)}generateVariable(t){return this.strategy.getVariableSyntax(t)}generateCollectionStart(t){return this.registerHelper("slice"),this.strategy.getCollectionStartSyntax(t)}generateCollectionEnd(){return this.strategy.getCollectionEndSyntax()}generateConditionalStart(t){return this.strategy.getConditionalStartSyntax(t)}generateConditionElse(){return this.strategy.getConditionElseSyntax()}generateConditionalEnd(){return this.strategy.getConditionalEndSyntax()}reset(){this.requiredHelpers.clear()}}function _(s){return typeof s=="object"&&s.type===m.variable}function f({component:s,value:t,getCustomPath:n}){if(_(t)&&!t.collectionId&&n){const e=t.path??"",a=e.split(".");return{...t,path:n({component:s,path:e,paths:a})}}return t}const j=s=>{S(s,m.variable,{toHTML(t){var i;const n=this.tagName,e=this.__attrToString(t),a=(i=this.getDataResolver)==null?void 0:i.call(this),r=f({component:this,value:a,getCustomPath:t==null?void 0:t.getCustomPath});return`<${n}${e?` ${e}`:""}>${t.exporter.generateVariable(r)}</${n}>`}}),S(s,m.condition,{toHTML(t){var l,c;const n=t.exporter,e=t==null?void 0:t.getCustomPath,a=this.components(),[r,i]=(a==null?void 0:a.models)??[],o=(l=this.getDataResolver)==null?void 0:l.call(this),u=((c=this.resolveCondition)==null?void 0:c.call(this,o==null?void 0:o.condition,e))??{};return`
2
+ ${n.generateConditionalStart(u)}
3
+ ${(r==null?void 0:r.toHTML(t))??""}
4
+ ${n.generateConditionElse()}
5
+ ${(i==null?void 0:i.toHTML(t))??""}
6
+ ${n.generateConditionalEnd()}
7
+ `},resolveCondition(t,n){var a,r;if(!t)return{};if(t.operator==="and"||t.operator==="or")return{operator:t.operator,statements:((r=(a=t.statements)==null?void 0:a.map)==null?void 0:r.call(a,i=>{var o;return((o=this.resolveCondition)==null?void 0:o.call(this,i,n))??{}}))??[]};const e={component:this,getCustomPath:n};return{...t,left:f({...e,value:t.left}),right:f({...e,value:t.right})}}}),S(s,m.collection,{toHTML(t){const n=t.exporter,e=this.tagName,a=this.__attrToString(t),r=this.getDataResolver(),i={...r,dataSource:f({component:this,value:r==null?void 0:r.dataSource,getCustomPath:t==null?void 0:t.getCustomPath})},o=this.components().at(0);return`
8
+ <${e}${a?` ${a}`:""}>${n.generateCollectionStart(i)}
9
+ ${(o==null?void 0:o.toHTML(t))??""}
10
+ ${n.generateCollectionEnd()}</${e}>
11
+ `}})},S=(s,t,n)=>{const e=s.Components.getType(t);if(!e){console.warn(`Component type ${t} not found`);return}const{model:a}=e;s.Components.addType(t,{model:{...n,toHTML(r={}){var o;const{exporter:i}=r;return i?i.export?i.export({component:this}):((o=n.toHTML)==null?void 0:o.call(this,r))??"":a.prototype.toHTML.call(this,r)??""}}})},B=(s,t)=>(s.config.optsHtml={...s.config.optsHtml,exporter:new M(t)},j(s),()=>{s.config.optsHtml.exporter=void 0}),O=(s,t)=>{const n=a=>{const{input:r}=a,{contains:i}=t;(!i||r.includes(i))&&(a.input=t.importer.import(r))},e=s.Parser.events.htmlBefore;return s.on(e,n),()=>{s.off(e,n)}};class D{getHelperId(t,n){return{equals:`${n==="string"?"str":n==="number"?"num":"any"}Equals`,isTruthy:"isTruthy",isFalsy:"isFalsy",isDefined:"isDefined",isNull:"isNull",isUndefined:"isUndefined",isArray:"isArray",isObject:"isObject",isString:"isString",isNumber:"isNumber",isBoolean:"isBoolean",isDefaultValue:"isDefaultValue",">":"numGt","<":"numLt",">=":"numGte","<=":"numLte","=":"numEq","!=":"numNeq",contains:"strContains",startsWith:"strStartsWith",endsWith:"strEndsWith",equalsIgnoreCase:"strEqualsIgnoreCase",trimEquals:"strTrimEquals"}[t]||t}getFullPath({collectionId:t,path:n}){let e=n;return t&&(e=[this._sanitizeVariableName(t),n].filter(Boolean).join(".")),e||""}getVariableSyntax(t){const{defaultValue:n}=t,e=this.getFullPath(t);return n?`{{#if ${e}}}{{{${e}}}}{{else}}${n}{{/if}}`:`{{{${e}}}}`}getCollectionStartSyntax(t){const{collectionId:n,dataSource:e}=t,a=e==null?void 0:e.path;let r="";if(t.startIndex!==void 0||t.endIndex!==void 0){const l=t.startIndex??0,c=t.endIndex!==void 0?t.endIndex:"";c!==""?r=` (slice ${a} ${l} ${c})`:r=` (slice ${a} ${l})`}const o=` as |${this._sanitizeVariableName(n)}|`;return`{{#each ${r||a}${o}}}`}getCollectionEndSyntax(){return"{{/each}}"}getConditionalStartSyntax(t){if(!t)return"";const n=t,e=t;if(e.statements&&e.logicalOperator==="and"||e.logicalOperator==="or"){const{statements:a}=e,r=e.logicalOperator,i=a.map(u=>this._parseCondition(u)).join(", ");return`{{#if ${a.length>1?`(${r} ${i})`:i}}}`}else return`{{#if ${this._parseCondition(n)}}}`}_parseCondition(t){if(!t)return"";const n=t,e=t;if(e.statements&&e.logicalOperator==="and"||e.logicalOperator==="or"){const{statements:a}=e,r=e.logicalOperator,i=e.statements.map(o=>this._parseCondition(o)).join(" ");return a.length>1?`(${r} ${i})`:i}else{const a=this.getHelperId(n.operator,this._getTypeHint(t)),r=this._parseValue(n.left),i=this._parseValue(n.right);return`(${a} ${r} ${i})`}}_getTypeHint(t){return["contains","startsWith","endsWith","equalsIgnoreCase","trimEquals"].includes(t.operator)?"string":[">","<",">=","<=","=","!="].includes(t.operator)?"number":"any"}_parseValue(t){return typeof t=="object"?this.getFullPath(t):typeof t=="string"?`'${t.replace(/'/g,"\\'")}'`:String(t)}_sanitizeVariableName(t){return t.replace(/[^a-zA-Z0-9_$]/g,"_")}getConditionElseSyntax(){return"{{else}}"}getConditionalEndSyntax(){return"{{/if}}"}}class V{constructor(){this.messages=[],this.collectionStack=[]}import(t){this.messages=[],this.collectionStack=[];const n=this.parse(t);return this.astToGrapesJS(n)}parse(t){try{return h.parse(t)}catch(n){if(n instanceof Error&&n.message.includes("Parse error")){const e=n.message.match(/line (\d+)/),a=e?parseInt(e[1]):0,r=n.message.match(/column (\d+)/),i=r?parseInt(r[1]):0;throw new Error(`Handlebars syntax error at line ${a}, column ${i}: ${n.message}`)}throw n}}astToGrapesJS(t){switch(t.type){case"Program":return this.handleProgram(t);case"ContentStatement":return this.handleContentStatement(t);case"MustacheStatement":return this.handleMustacheStatement(t);case"BlockStatement":return this.handleBlockStatement(t);case"PartialStatement":return this.handlePartialStatement(t);case"CommentStatement":return this.handleCommentStatement(t);case"ElementNode":return this.handleElementNode(t);case"TextNode":return this.handleTextNode(t);default:return this.addMessage("warning",`Unsupported node type: ${t.type}`,t.loc),""}}handleProgram(t){let n="";if(t.body)for(const e of t.body)n+=this.astToGrapesJS(e);return n}handleContentStatement(t){return t.value||""}handleMustacheStatement(t,n={}){const e=this.getExpressionString(t.path),a=n;if(this.collectionStack.length>0)if(e.startsWith("@")){const r=e.split("/");let i=0;const o=r[r.length-1];for(let l=0;l<r.length-1;l++)r[l]===".."&&i++;const u=Math.max(0,this.collectionStack.length-1-i);if(u>=0&&u<this.collectionStack.length){const l=this.collectionStack[u];o==="index"||o==="@index"?(a.collectionId=l,a.variableType="currentIndex"):o==="key"||o==="@key"?(a.collectionId=l,a.variableType="currentKey"):o==="first"||o==="@first"?(a.collectionId=l,a.variableType="isFirst"):o==="last"||o==="@last"?(a.collectionId=l,a.variableType="isLast"):a.path=e}else a.path=e}else{const r=e.split("/");let i=0;for(;r[0]==="..";)i++,r.shift();const o=r.join("/"),u=this.collectionStack.length-1-i;if(u>=0&&u<this.collectionStack.length){const l=this.collectionStack[u];o==="this"?(a.collectionId=l,a.variableType="currentItem"):(a.collectionId=l,a.variableType="currentItem",a.path=o.startsWith("this.")?o.split(".").slice(1).join("."):o)}else a.path=`globalData.${r.join(".")}`}else a.path=e;return`<data-variable data-gjs-data-resolver='${JSON.stringify(a)}'></data-variable>`}handleBlockStatement(t){const n=t.path.original;switch(n){case"if":case"unless":return this.handleConditionalBlock(t,n);case"each":return this.handleEachBlock(t);default:return this.addMessage("warning",`Unsupported block helper: ${n}`,t.loc),this.handleGenericBlock(t)}}handleConditionalBlock(t,n){const r={logicalOperator:"and",statements:[{left:{type:"data-variable",path:this.getExpressionString(t.params[0])},operator:n==="unless"?"isFalsy":"isTruthy"}]},i=this.handleProgram(t.program),o=t.inverse?this.handleProgram(t.inverse):"";return t.params[0].type==="PathExpression"?this.handleMustacheStatement(t.program.body[0],{defaultValue:o}):`
12
+ <data-condition data-gjs-data-resolver='${JSON.stringify({condition:r})}'>
13
+ <data-condition-true-content>${i}</data-condition-true-content>
14
+ <data-condition-false-content>${o}</data-condition-false-content>
15
+ </data-condition>
16
+ `}handleEachBlock(t){const n=this.getExpressionString(t.params[0]),e=`collection-${Math.random().toString(36).substring(2,10)}`;this.collectionStack.push(e);const a=this.handleProgram(t.program);return this.collectionStack.pop(),`
17
+ <data-collection data-gjs-data-resolver='${JSON.stringify({dataSource:{type:"data-variable",path:n},collectionId:e})}'>
18
+ <data-collection-item>${a}</data-collection-item>
19
+ </data-collection>
20
+ `}handleCommentStatement(t){return`<!--${t.value}-->`}handleElementNode(t){let n="";if(t.attributes)for(const a of t.attributes)a.value.type==="TextNode"?n+=` ${a.name}="${a.value.chars}"`:(this.addMessage("warning",`Complex attribute values not fully supported: ${a.name}`,t.loc),n+=` ${a.name}="${this.getExpressionString(a.value)}"`);let e="";if(t.children)for(const a of t.children)e+=this.astToGrapesJS(a);return`<${t.tag}${n}>${e}</${t.tag}>`}handleTextNode(t){return t.chars||""}handlePartialStatement(t){return this.addMessage("warning",`Partials are not fully supported: ${t.name.original}`,t.loc),`{{> ${t.name.original}}}`}handleGenericBlock(t){const n=this.handleProgram(t.program);return`<!-- Unsupported block: ${t.path.original} -->${n}`}getExpressionString(t){return t.type==="PathExpression"?t.original:t.type==="StringLiteral"?t.value:t.type==="NumberLiteral"?t.value.toString():t.type==="BooleanLiteral"?t.value?"true":"false":t.type==="SubExpression"?this.getExpressionString(t.params[0]):t.type==="Hash"?`{${t.pairs.map(e=>`${e.key}=${this.getExpressionString(e.value)}`).join(", ")}}`:(this.addMessage("warning",`Complex expression type not fully supported: ${t.type}`,t.loc),"")}addMessage(t,n,e){this.messages.push({type:t,message:n,location:e?{line:e.start.line,column:e.start.column}:void 0})}}const q="dataSourceHandlebars",U=p.startup;return w(function(s,t={}){const n=B(s,new D),e=O(s,{contains:"{{",importer:new V});N({editor:s,licenseKey:t.licenseKey,plan:U,pluginName:q,cleanup:()=>{n(),e()}})})});
@@ -0,0 +1,3 @@
1
+ import { SdkPlanCategories } from '../utils';
2
+ export declare const PLUGIN_NAME = "dataSourceHandlebars";
3
+ export declare const PLUGIN_PLAN = SdkPlanCategories.startup;
@@ -1,3 +1,3 @@
1
- import { SDKPluginOptions } from '../utils';
2
- export interface DataSourceHandlebarsOptions extends SDKPluginOptions {
1
+ import { DataSourceHandlebarsOptions as PluginSchema } from './typesSchema';
2
+ export interface DataSourceHandlebarsOptions extends PluginSchema {
3
3
  }
@@ -0,0 +1,3 @@
1
+ import { SDKPluginOptions } from '../utils';
2
+ export interface DataSourceHandlebarsOptions extends SDKPluginOptions {
3
+ }
@@ -1 +1 @@
1
- "use strict";var p=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(p||{}),y=(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.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.setDragAbsolute="studio:setDragAbsolute",e))(y||{});const R="app.grapesjs.com",x="app-stage.grapesjs.com",w=[R,x,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],G="license:check:start",$="license:check:end",I=()=>typeof window<"u",U=({isDev:e,isStage:t})=>`${e?"":`https://${t?x:R}`}/api`,M=()=>{const e=I()&&window.location.hostname;return!!e&&(w.includes(e)||w.some(t=>e.endsWith(t)))};async function j({path:e,baseApiUrl:t,method:s="GET",headers:n={},params:o,body:a}){const l=`${t||U({isDev:!1,isStage:!1})}${e}`,c={method:s,headers:{"Content-Type":"application/json",...n}};a&&(c.body=JSON.stringify(a));const u=o?new URLSearchParams(o).toString():"",r=u?`?${u}`:"",g=await fetch(`${l}${r}`,c);if(!g.ok)throw new Error(`HTTP error! status: ${g.status}`);return g.json()}const L={[p.free]:0,[p.startup]:10,[p.business]:20,[p.enterprise]:30};function B(e){const t=e;return t.init=s=>n=>e(n,s),t}const E=e=>B(e);async function N({editor:e,plan:t,pluginName:s,licenseKey:n,cleanup:o}){let a="",i=!1;const l=M(),c=r=>{console.warn("Cleanup plugin:",s,"Reason:",r),o()},u=(r={})=>{var A;const{error:g,sdkLicense:f}=r,d=(A=r.plan)==null?void 0:A.category;if(!(f||r.license)||g)c(g||"Invalid license");else if(d){const O=L[t],k=L[d];O>k&&c({pluginRequiredPlan:t,licensePlan:d})}};e.on(G,r=>{a=r==null?void 0:r.baseApiUrl,i=!0}),e.on($,r=>{u(r)}),setTimeout(async()=>{if(!i){if(l)return;if(n){const r=await W({licenseKey:n,pluginName:s,baseApiUrl:a});r&&u(r)}else c("The `licenseKey` option not provided")}},2e3)}async function W(e){const{licenseKey:t,pluginName:s,baseApiUrl:n}=e;try{return(await j({baseApiUrl:n,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:s}})).result||{}}catch(o){return console.error("Error during SDK license check:",o),!1}}const b=e=>e.replaceAll('"',"").replaceAll("'",""),v=e=>e.includes(",")?e:/\s/.test(e)?`"${b(e)}"`:b(e),F=(e,t,s)=>({family:e,variant:t,...s}),D=(e,t)=>{e=v(e);const{menuVariant:s,variants:n}=t;return{family:e,familyLabel:b(e),menuVariant:s&&F(v(`menuFont-${b(e)}`),"regular",s),variants:Object.assign({},...Object.entries(n).map(([o,a])=>({[o]:F(e,o,a)})))}},T=(e,t)=>{var l;const s=D(e.family,e),n=s.menuVariant??((l=Object.values(s.variants))==null?void 0:l[0]);if(!n)return"Arial, Helvetica, sans-serif";const{source:o,descriptors:a}=n,i=b(n.family);if(!t){const c=new FontFace(i,`url("${o}")`,a),u=Array.from(document.fonts.values()).filter(r=>r.family===i);for(const r of u)document.fonts.delete(r);document.fonts.add(c),c.load().catch(()=>{})}return v(i)},_=e=>{const{family:t,menu:s,axes:n}=e,o=!!n,a=Object.assign({},...e.variants.map(i=>{var r,g;let l,c;if(o){const f=n.find(d=>d.tag==="wght");if(f){const{start:d,end:P}=f;l=`${d} ${P}`}}return l||(l=((r=i.match(/\d+/))==null?void 0:r[0])??"400"),c=((g=i.match(/[a-zA-Z]+/))==null?void 0:g[0])==="italic"?"italic":void 0,{[i]:{source:e.files[i],descriptors:{style:c,weight:l}}}}));return D(t,{menuVariant:{source:s},variants:a})},K=e=>({id:`${e.family}/${e.version}`,type:"font",src:e.menu,name:e.family,customData:{font:_(e),needsLoading:!0}}),V=e=>{const{font:t}=e.customData;return e.customData.needsLoading?(e.customData.needsLoading=!1,T(t)):T(t,!0)};let h;const H=e=>{const t=[];for(const s of Object.keys(e)){let n=e[s];n&&(Array.isArray(n)?t.push(...n.map(o=>[s,o.toString()])):(n=n.toString(),t.push([s,n])))}return new URLSearchParams(t)},z=e=>{const{apiKey:t,searchParams:s}=e,n=(o={})=>{const a="https://www.googleapis.com/webfonts/v1/webfonts",i=H(o);return`${a}?${i}`};return{id:"google-fonts",types:["font"],label:({editor:o})=>o.I18n.t("googleFontsAssetProvider.providerLabel"),search:{reloadOnInput:!1},async onLoad(){var u;if(h)return h;const o={key:t,sort:"alpha",subset:"latin",capability:["WOFF2","VF"]},a=s==null?void 0:s(),i={...o,...a},c=await(await fetch(n(i))).json();return(u=c.items)!=null&&u.length?(h=c.items.map(K),h):[]},itemLayout:o=>{const a=h.find(l=>l.id===o.assetProps.id),i=V(a);return{type:"column",onClick:()=>o.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:i,fontSize:"24px",paddingLeft:"8px",paddingRight:"8px"}},{type:"text",content:a.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:"16px",paddingLeft:"8px",paddingRight:"8px"}}]}}}},q={googleFontsAssetProvider:{searchBtn:"Search on Google Fonts",modalTitle:"Select Font",providerLabel:"Google Fonts"}},J="googleFontsAssetProvider",Q=p.startup,Z=function(e,t){const{i18n:s={}}=t,n=z(t);e.runCommand(y.assetProviderAdd,{provider:n}),e.I18n.addMessages({en:q,...s}),N({editor:e,licenseKey:t.licenseKey,plan:Q,pluginName:J,cleanup:()=>{e.runCommand(y.assetProviderRemove,{id:n.id})}})},S=E(Z);module.exports=S;
1
+ "use strict";var p=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(p||{}),y=(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.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.dataSourceSetGlobalData="studio:dataSourceSetGlobalData",e.dataSourceSetImporter="studio:dataSourceSetImporter",e.dataSourceSetExporter="studio:dataSourceSetExporter",e.setDragAbsolute="studio:setDragAbsolute",e))(y||{});const x="app.grapesjs.com",R="app-stage.grapesjs.com",w=[x,R,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],k="license:check:start",$="license:check:end",I=()=>typeof window<"u",U=({isDev:e,isStage:t})=>`${e?"":`https://${t?R:x}`}/api`,E=()=>{const e=I()&&window.location.hostname;return!!e&&(w.includes(e)||w.some(t=>e.endsWith(t)))};async function M({path:e,baseApiUrl:t,method:s="GET",headers:n={},params:o,body:a}){const l=`${t||U({isDev:!1,isStage:!1})}${e}`,c={method:s,headers:{"Content-Type":"application/json",...n}};a&&(c.body=JSON.stringify(a));const u=o?new URLSearchParams(o).toString():"",r=u?`?${u}`:"",g=await fetch(`${l}${r}`,c);if(!g.ok)throw new Error(`HTTP error! status: ${g.status}`);return g.json()}const L={[p.free]:0,[p.startup]:10,[p.business]:20,[p.enterprise]:30};function j(e){const t=e;return t.init=s=>n=>e(n,s),t}const B=e=>j(e);async function N({editor:e,plan:t,pluginName:s,licenseKey:n,cleanup:o}){let a="",i=!1;const l=E(),c=r=>{console.warn("Cleanup plugin:",s,"Reason:",r),o()},u=(r={})=>{var A;const{error:g,sdkLicense:f}=r,d=(A=r.plan)==null?void 0:A.category;if(!(f||r.license)||g)c(g||"Invalid license");else if(d){const G=L[t],O=L[d];G>O&&c({pluginRequiredPlan:t,licensePlan:d})}};e.on(k,r=>{a=r==null?void 0:r.baseApiUrl,i=!0}),e.on($,r=>{u(r)}),setTimeout(async()=>{if(!i){if(l)return;if(n){const r=await W({licenseKey:n,pluginName:s,baseApiUrl:a});r&&u(r)}else c("The `licenseKey` option not provided")}},2e3)}async function W(e){const{licenseKey:t,pluginName:s,baseApiUrl:n}=e;try{return(await M({baseApiUrl:n,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:s}})).result||{}}catch(o){return console.error("Error during SDK license check:",o),!1}}const b=e=>e.replaceAll('"',"").replaceAll("'",""),v=e=>e.includes(",")?e:/\s/.test(e)?`"${b(e)}"`:b(e),F=(e,t,s)=>({family:e,variant:t,...s}),D=(e,t)=>{e=v(e);const{menuVariant:s,variants:n}=t;return{family:e,familyLabel:b(e),menuVariant:s&&F(v(`menuFont-${b(e)}`),"regular",s),variants:Object.assign({},...Object.entries(n).map(([o,a])=>({[o]:F(e,o,a)})))}},T=(e,t)=>{var l;const s=D(e.family,e),n=s.menuVariant??((l=Object.values(s.variants))==null?void 0:l[0]);if(!n)return"Arial, Helvetica, sans-serif";const{source:o,descriptors:a}=n,i=b(n.family);if(!t){const c=new FontFace(i,`url("${o}")`,a),u=Array.from(document.fonts.values()).filter(r=>r.family===i);for(const r of u)document.fonts.delete(r);document.fonts.add(c),c.load().catch(()=>{})}return v(i)},S=e=>{const{family:t,menu:s,axes:n}=e,o=!!n,a=Object.assign({},...e.variants.map(i=>{var r,g;let l,c;if(o){const f=n.find(d=>d.tag==="wght");if(f){const{start:d,end:P}=f;l=`${d} ${P}`}}return l||(l=((r=i.match(/\d+/))==null?void 0:r[0])??"400"),c=((g=i.match(/[a-zA-Z]+/))==null?void 0:g[0])==="italic"?"italic":void 0,{[i]:{source:e.files[i],descriptors:{style:c,weight:l}}}}));return D(t,{menuVariant:{source:s},variants:a})},_=e=>({id:`${e.family}/${e.version}`,type:"font",src:e.menu,name:e.family,customData:{font:S(e),needsLoading:!0}}),K=e=>{const{font:t}=e.customData;return e.customData.needsLoading?(e.customData.needsLoading=!1,T(t)):T(t,!0)};let h;const V=e=>{const t=[];for(const s of Object.keys(e)){let n=e[s];n&&(Array.isArray(n)?t.push(...n.map(o=>[s,o.toString()])):(n=n.toString(),t.push([s,n])))}return new URLSearchParams(t)},H=e=>{const{apiKey:t,searchParams:s}=e,n=(o={})=>{const a="https://www.googleapis.com/webfonts/v1/webfonts",i=V(o);return`${a}?${i}`};return{id:"google-fonts",types:["font"],label:({editor:o})=>o.I18n.t("googleFontsAssetProvider.providerLabel"),search:{reloadOnInput:!1},async onLoad(){var u;if(h)return h;const o={key:t,sort:"alpha",subset:"latin",capability:["WOFF2","VF"]},a=s==null?void 0:s(),i={...o,...a},c=await(await fetch(n(i))).json();return(u=c.items)!=null&&u.length?(h=c.items.map(_),h):[]},itemLayout:o=>{const a=h.find(l=>l.id===o.assetProps.id),i=K(a);return{type:"column",onClick:()=>o.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:i,fontSize:"24px",paddingLeft:"8px",paddingRight:"8px"}},{type:"text",content:a.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:"16px",paddingLeft:"8px",paddingRight:"8px"}}]}}}},z={googleFontsAssetProvider:{searchBtn:"Search on Google Fonts",modalTitle:"Select Font",providerLabel:"Google Fonts"}},q="googleFontsAssetProvider",J=p.startup,Q=function(e,t){const{i18n:s={}}=t,n=H(t);e.runCommand(y.assetProviderAdd,{provider:n}),e.I18n.addMessages({en:z,...s}),N({editor:e,licenseKey:t.licenseKey,plan:J,pluginName:q,cleanup:()=>{e.runCommand(y.assetProviderRemove,{id:n.id})}})},Z=B(Q);module.exports=Z;
@@ -1,7 +1,7 @@
1
- var p = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(p || {}), y = /* @__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.fontManagerOpen = "studio:fontManagerOpen", e.menuFontLoad = "studio:menuFontLoad", e.toggleStateDataSource = "studio:toggleStateDataSource", e.getStateDataSource = "studio:getStateDataSource", e.setDragAbsolute = "studio:setDragAbsolute", e))(y || {});
2
- const R = "app.grapesjs.com", x = "app-stage.grapesjs.com", w = [
3
- R,
1
+ var p = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(p || {}), y = /* @__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.fontManagerOpen = "studio:fontManagerOpen", e.menuFontLoad = "studio:menuFontLoad", e.toggleStateDataSource = "studio:toggleStateDataSource", e.getStateDataSource = "studio:getStateDataSource", e.dataSourceSetGlobalData = "studio:dataSourceSetGlobalData", e.dataSourceSetImporter = "studio:dataSourceSetImporter", e.dataSourceSetExporter = "studio:dataSourceSetExporter", e.setDragAbsolute = "studio:setDragAbsolute", e))(y || {});
2
+ const x = "app.grapesjs.com", R = "app-stage.grapesjs.com", w = [
4
3
  x,
4
+ R,
5
5
  "localhost",
6
6
  "127.0.0.1",
7
7
  ".local-credentialless.webcontainer.io",
@@ -10,11 +10,11 @@ const R = "app.grapesjs.com", x = "app-stage.grapesjs.com", w = [
10
10
  // For stackblitz.com demos
11
11
  "-sandpack.codesandbox.io"
12
12
  // For Sandpack demos
13
- ], G = "license:check:start", $ = "license:check:end", I = () => typeof window < "u", U = ({ isDev: e, isStage: t }) => `${e ? "" : `https://${t ? x : R}`}/api`, M = () => {
13
+ ], k = "license:check:start", $ = "license:check:end", I = () => typeof window < "u", U = ({ isDev: e, isStage: t }) => `${e ? "" : `https://${t ? R : x}`}/api`, E = () => {
14
14
  const e = I() && window.location.hostname;
15
15
  return !!e && (w.includes(e) || w.some((t) => e.endsWith(t)));
16
16
  };
17
- async function j({
17
+ async function M({
18
18
  path: e,
19
19
  baseApiUrl: t,
20
20
  method: s = "GET",
@@ -41,11 +41,11 @@ const L = {
41
41
  [p.business]: 20,
42
42
  [p.enterprise]: 30
43
43
  };
44
- function B(e) {
44
+ function j(e) {
45
45
  const t = e;
46
46
  return t.init = (s) => (n) => e(n, s), t;
47
47
  }
48
- const E = (e) => /* @__PURE__ */ B(e);
48
+ const B = (e) => /* @__PURE__ */ j(e);
49
49
  async function N({
50
50
  editor: e,
51
51
  plan: t,
@@ -54,7 +54,7 @@ async function N({
54
54
  cleanup: o
55
55
  }) {
56
56
  let r = "", i = !1;
57
- const l = M(), c = (a) => {
57
+ const l = E(), c = (a) => {
58
58
  console.warn("Cleanup plugin:", s, "Reason:", a), o();
59
59
  }, u = (a = {}) => {
60
60
  var A;
@@ -62,11 +62,11 @@ async function N({
62
62
  if (!(f || a.license) || g)
63
63
  c(g || "Invalid license");
64
64
  else if (d) {
65
- const O = L[t], k = L[d];
66
- O > k && c({ pluginRequiredPlan: t, licensePlan: d });
65
+ const G = L[t], O = L[d];
66
+ G > O && c({ pluginRequiredPlan: t, licensePlan: d });
67
67
  }
68
68
  };
69
- e.on(G, (a) => {
69
+ e.on(k, (a) => {
70
70
  r = a == null ? void 0 : a.baseApiUrl, i = !0;
71
71
  }), e.on($, (a) => {
72
72
  u(a);
@@ -84,7 +84,7 @@ async function N({
84
84
  async function W(e) {
85
85
  const { licenseKey: t, pluginName: s, baseApiUrl: n } = e;
86
86
  try {
87
- return (await j({
87
+ return (await M({
88
88
  baseApiUrl: n,
89
89
  path: `/sdk/${t || "na"}`,
90
90
  method: "POST",
@@ -129,7 +129,7 @@ const b = (e) => e.replaceAll('"', "").replaceAll("'", ""), v = (e) => e.include
129
129
  });
130
130
  }
131
131
  return v(i);
132
- }, _ = (e) => {
132
+ }, S = (e) => {
133
133
  const { family: t, menu: s, axes: n } = e, o = !!n, r = Object.assign(
134
134
  {},
135
135
  ...e.variants.map((i) => {
@@ -159,27 +159,27 @@ const b = (e) => e.replaceAll('"', "").replaceAll("'", ""), v = (e) => e.include
159
159
  },
160
160
  variants: r
161
161
  });
162
- }, K = (e) => ({
162
+ }, _ = (e) => ({
163
163
  id: `${e.family}/${e.version}`,
164
164
  type: "font",
165
165
  src: e.menu,
166
166
  name: e.family,
167
- customData: { font: _(e), needsLoading: !0 }
168
- }), V = (e) => {
167
+ customData: { font: S(e), needsLoading: !0 }
168
+ }), K = (e) => {
169
169
  const { font: t } = e.customData;
170
170
  return e.customData.needsLoading ? (e.customData.needsLoading = !1, T(t)) : T(t, !0);
171
171
  };
172
172
  let h;
173
- const H = (e) => {
173
+ const V = (e) => {
174
174
  const t = [];
175
175
  for (const s of Object.keys(e)) {
176
176
  let n = e[s];
177
177
  n && (Array.isArray(n) ? t.push(...n.map((o) => [s, o.toString()])) : (n = n.toString(), t.push([s, n])));
178
178
  }
179
179
  return new URLSearchParams(t);
180
- }, z = (e) => {
180
+ }, H = (e) => {
181
181
  const { apiKey: t, searchParams: s } = e, n = (o = {}) => {
182
- const r = "https://www.googleapis.com/webfonts/v1/webfonts", i = H(o);
182
+ const r = "https://www.googleapis.com/webfonts/v1/webfonts", i = V(o);
183
183
  return `${r}?${i}`;
184
184
  };
185
185
  return {
@@ -200,10 +200,10 @@ const H = (e) => {
200
200
  ...o,
201
201
  ...r
202
202
  }, c = await (await fetch(n(i))).json();
203
- return (u = c.items) != null && u.length ? (h = c.items.map(K), h) : [];
203
+ return (u = c.items) != null && u.length ? (h = c.items.map(_), h) : [];
204
204
  },
205
205
  itemLayout: (o) => {
206
- const r = h.find((l) => l.id === o.assetProps.id), i = V(r);
206
+ const r = h.find((l) => l.id === o.assetProps.id), i = K(r);
207
207
  return {
208
208
  type: "column",
209
209
  onClick: () => o.onSelect(r),
@@ -246,27 +246,27 @@ const H = (e) => {
246
246
  };
247
247
  }
248
248
  };
249
- }, q = {
249
+ }, z = {
250
250
  googleFontsAssetProvider: {
251
251
  searchBtn: "Search on Google Fonts",
252
252
  modalTitle: "Select Font",
253
253
  providerLabel: "Google Fonts"
254
254
  }
255
- }, J = "googleFontsAssetProvider", Q = p.startup, Z = function(e, t) {
256
- const { i18n: s = {} } = t, n = z(t);
255
+ }, q = "googleFontsAssetProvider", J = p.startup, Q = function(e, t) {
256
+ const { i18n: s = {} } = t, n = H(t);
257
257
  e.runCommand(y.assetProviderAdd, { provider: n }), e.I18n.addMessages({
258
- en: q,
258
+ en: z,
259
259
  ...s
260
260
  }), N({
261
261
  editor: e,
262
262
  licenseKey: t.licenseKey,
263
- plan: Q,
264
- pluginName: J,
263
+ plan: J,
264
+ pluginName: q,
265
265
  cleanup: () => {
266
266
  e.runCommand(y.assetProviderRemove, { id: n.id });
267
267
  }
268
268
  });
269
- }, S = E(Z);
269
+ }, Z = B(Q);
270
270
  export {
271
- S as default
271
+ Z as default
272
272
  };
@@ -1 +1 @@
1
- (function(d,p){typeof exports=="object"&&typeof module<"u"?module.exports=p():typeof define=="function"&&define.amd?define(p):(d=typeof globalThis<"u"?globalThis:d||self,d.StudioSdkPlugins_googleFontsAssetProvider=p())})(this,function(){"use strict";var d=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(d||{}),p=(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.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.setDragAbsolute="studio:setDragAbsolute",e))(p||{});const P="app.grapesjs.com",A="app-stage.grapesjs.com",w=[P,A,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],D="license:check:start",O="license:check:end",G=()=>typeof window<"u",$=({isDev:e,isStage:t})=>`${e?"":`https://${t?A:P}`}/api`,I=()=>{const e=G()&&window.location.hostname;return!!e&&(w.includes(e)||w.some(t=>e.endsWith(t)))};async function U({path:e,baseApiUrl:t,method:s="GET",headers:n={},params:o,body:a}){const l=`${t||$({isDev:!1,isStage:!1})}${e}`,c={method:s,headers:{"Content-Type":"application/json",...n}};a&&(c.body=JSON.stringify(a));const u=o?new URLSearchParams(o).toString():"",r=u?`?${u}`:"",g=await fetch(`${l}${r}`,c);if(!g.ok)throw new Error(`HTTP error! status: ${g.status}`);return g.json()}const L={[d.free]:0,[d.startup]:10,[d.business]:20,[d.enterprise]:30};function M(e){const t=e;return t.init=s=>n=>e(n,s),t}const j=e=>M(e);async function B({editor:e,plan:t,pluginName:s,licenseKey:n,cleanup:o}){let a="",i=!1;const l=I(),c=r=>{console.warn("Cleanup plugin:",s,"Reason:",r),o()},u=(r={})=>{var k;const{error:g,sdkLicense:y}=r,f=(k=r.plan)==null?void 0:k.category;if(!(y||r.license)||g)c(g||"Invalid license");else if(f){const S=L[t],J=L[f];S>J&&c({pluginRequiredPlan:t,licensePlan:f})}};e.on(D,r=>{a=r==null?void 0:r.baseApiUrl,i=!0}),e.on(O,r=>{u(r)}),setTimeout(async()=>{if(!i){if(l)return;if(n){const r=await E({licenseKey:n,pluginName:s,baseApiUrl:a});r&&u(r)}else c("The `licenseKey` option not provided")}},2e3)}async function E(e){const{licenseKey:t,pluginName:s,baseApiUrl:n}=e;try{return(await U({baseApiUrl:n,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:s}})).result||{}}catch(o){return console.error("Error during SDK license check:",o),!1}}const h=e=>e.replaceAll('"',"").replaceAll("'",""),v=e=>e.includes(",")?e:/\s/.test(e)?`"${h(e)}"`:h(e),F=(e,t,s)=>({family:e,variant:t,...s}),T=(e,t)=>{e=v(e);const{menuVariant:s,variants:n}=t;return{family:e,familyLabel:h(e),menuVariant:s&&F(v(`menuFont-${h(e)}`),"regular",s),variants:Object.assign({},...Object.entries(n).map(([o,a])=>({[o]:F(e,o,a)})))}},x=(e,t)=>{var l;const s=T(e.family,e),n=s.menuVariant??((l=Object.values(s.variants))==null?void 0:l[0]);if(!n)return"Arial, Helvetica, sans-serif";const{source:o,descriptors:a}=n,i=h(n.family);if(!t){const c=new FontFace(i,`url("${o}")`,a),u=Array.from(document.fonts.values()).filter(r=>r.family===i);for(const r of u)document.fonts.delete(r);document.fonts.add(c),c.load().catch(()=>{})}return v(i)},N=e=>{const{family:t,menu:s,axes:n}=e,o=!!n,a=Object.assign({},...e.variants.map(i=>{var r,g;let l,c;if(o){const y=n.find(f=>f.tag==="wght");if(y){const{start:f,end:R}=y;l=`${f} ${R}`}}return l||(l=((r=i.match(/\d+/))==null?void 0:r[0])??"400"),c=((g=i.match(/[a-zA-Z]+/))==null?void 0:g[0])==="italic"?"italic":void 0,{[i]:{source:e.files[i],descriptors:{style:c,weight:l}}}}));return T(t,{menuVariant:{source:s},variants:a})},W=e=>({id:`${e.family}/${e.version}`,type:"font",src:e.menu,name:e.family,customData:{font:N(e),needsLoading:!0}}),_=e=>{const{font:t}=e.customData;return e.customData.needsLoading?(e.customData.needsLoading=!1,x(t)):x(t,!0)};let b;const K=e=>{const t=[];for(const s of Object.keys(e)){let n=e[s];n&&(Array.isArray(n)?t.push(...n.map(o=>[s,o.toString()])):(n=n.toString(),t.push([s,n])))}return new URLSearchParams(t)},V=e=>{const{apiKey:t,searchParams:s}=e,n=(o={})=>{const a="https://www.googleapis.com/webfonts/v1/webfonts",i=K(o);return`${a}?${i}`};return{id:"google-fonts",types:["font"],label:({editor:o})=>o.I18n.t("googleFontsAssetProvider.providerLabel"),search:{reloadOnInput:!1},async onLoad(){var u;if(b)return b;const o={key:t,sort:"alpha",subset:"latin",capability:["WOFF2","VF"]},a=s==null?void 0:s(),i={...o,...a},c=await(await fetch(n(i))).json();return(u=c.items)!=null&&u.length?(b=c.items.map(W),b):[]},itemLayout:o=>{const a=b.find(l=>l.id===o.assetProps.id),i=_(a);return{type:"column",onClick:()=>o.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:i,fontSize:"24px",paddingLeft:"8px",paddingRight:"8px"}},{type:"text",content:a.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:"16px",paddingLeft:"8px",paddingRight:"8px"}}]}}}},H={googleFontsAssetProvider:{searchBtn:"Search on Google Fonts",modalTitle:"Select Font",providerLabel:"Google Fonts"}},z="googleFontsAssetProvider",q=d.startup;return j(function(e,t){const{i18n:s={}}=t,n=V(t);e.runCommand(p.assetProviderAdd,{provider:n}),e.I18n.addMessages({en:H,...s}),B({editor:e,licenseKey:t.licenseKey,plan:q,pluginName:z,cleanup:()=>{e.runCommand(p.assetProviderRemove,{id:n.id})}})})});
1
+ (function(d,p){typeof exports=="object"&&typeof module<"u"?module.exports=p():typeof define=="function"&&define.amd?define(p):(d=typeof globalThis<"u"?globalThis:d||self,d.StudioSdkPlugins_googleFontsAssetProvider=p())})(this,function(){"use strict";var d=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(d||{}),p=(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.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.dataSourceSetGlobalData="studio:dataSourceSetGlobalData",e.dataSourceSetImporter="studio:dataSourceSetImporter",e.dataSourceSetExporter="studio:dataSourceSetExporter",e.setDragAbsolute="studio:setDragAbsolute",e))(p||{});const P="app.grapesjs.com",A="app-stage.grapesjs.com",w=[P,A,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],G="license:check:start",k="license:check:end",O=()=>typeof window<"u",$=({isDev:e,isStage:t})=>`${e?"":`https://${t?A:P}`}/api`,I=()=>{const e=O()&&window.location.hostname;return!!e&&(w.includes(e)||w.some(t=>e.endsWith(t)))};async function U({path:e,baseApiUrl:t,method:s="GET",headers:n={},params:o,body:a}){const l=`${t||$({isDev:!1,isStage:!1})}${e}`,c={method:s,headers:{"Content-Type":"application/json",...n}};a&&(c.body=JSON.stringify(a));const u=o?new URLSearchParams(o).toString():"",r=u?`?${u}`:"",g=await fetch(`${l}${r}`,c);if(!g.ok)throw new Error(`HTTP error! status: ${g.status}`);return g.json()}const L={[d.free]:0,[d.startup]:10,[d.business]:20,[d.enterprise]:30};function E(e){const t=e;return t.init=s=>n=>e(n,s),t}const M=e=>E(e);async function j({editor:e,plan:t,pluginName:s,licenseKey:n,cleanup:o}){let a="",i=!1;const l=I(),c=r=>{console.warn("Cleanup plugin:",s,"Reason:",r),o()},u=(r={})=>{var D;const{error:g,sdkLicense:y}=r,f=(D=r.plan)==null?void 0:D.category;if(!(y||r.license)||g)c(g||"Invalid license");else if(f){const q=L[t],J=L[f];q>J&&c({pluginRequiredPlan:t,licensePlan:f})}};e.on(G,r=>{a=r==null?void 0:r.baseApiUrl,i=!0}),e.on(k,r=>{u(r)}),setTimeout(async()=>{if(!i){if(l)return;if(n){const r=await B({licenseKey:n,pluginName:s,baseApiUrl:a});r&&u(r)}else c("The `licenseKey` option not provided")}},2e3)}async function B(e){const{licenseKey:t,pluginName:s,baseApiUrl:n}=e;try{return(await U({baseApiUrl:n,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:s}})).result||{}}catch(o){return console.error("Error during SDK license check:",o),!1}}const h=e=>e.replaceAll('"',"").replaceAll("'",""),v=e=>e.includes(",")?e:/\s/.test(e)?`"${h(e)}"`:h(e),F=(e,t,s)=>({family:e,variant:t,...s}),T=(e,t)=>{e=v(e);const{menuVariant:s,variants:n}=t;return{family:e,familyLabel:h(e),menuVariant:s&&F(v(`menuFont-${h(e)}`),"regular",s),variants:Object.assign({},...Object.entries(n).map(([o,a])=>({[o]:F(e,o,a)})))}},x=(e,t)=>{var l;const s=T(e.family,e),n=s.menuVariant??((l=Object.values(s.variants))==null?void 0:l[0]);if(!n)return"Arial, Helvetica, sans-serif";const{source:o,descriptors:a}=n,i=h(n.family);if(!t){const c=new FontFace(i,`url("${o}")`,a),u=Array.from(document.fonts.values()).filter(r=>r.family===i);for(const r of u)document.fonts.delete(r);document.fonts.add(c),c.load().catch(()=>{})}return v(i)},N=e=>{const{family:t,menu:s,axes:n}=e,o=!!n,a=Object.assign({},...e.variants.map(i=>{var r,g;let l,c;if(o){const y=n.find(f=>f.tag==="wght");if(y){const{start:f,end:R}=y;l=`${f} ${R}`}}return l||(l=((r=i.match(/\d+/))==null?void 0:r[0])??"400"),c=((g=i.match(/[a-zA-Z]+/))==null?void 0:g[0])==="italic"?"italic":void 0,{[i]:{source:e.files[i],descriptors:{style:c,weight:l}}}}));return T(t,{menuVariant:{source:s},variants:a})},S=e=>({id:`${e.family}/${e.version}`,type:"font",src:e.menu,name:e.family,customData:{font:N(e),needsLoading:!0}}),W=e=>{const{font:t}=e.customData;return e.customData.needsLoading?(e.customData.needsLoading=!1,x(t)):x(t,!0)};let b;const _=e=>{const t=[];for(const s of Object.keys(e)){let n=e[s];n&&(Array.isArray(n)?t.push(...n.map(o=>[s,o.toString()])):(n=n.toString(),t.push([s,n])))}return new URLSearchParams(t)},K=e=>{const{apiKey:t,searchParams:s}=e,n=(o={})=>{const a="https://www.googleapis.com/webfonts/v1/webfonts",i=_(o);return`${a}?${i}`};return{id:"google-fonts",types:["font"],label:({editor:o})=>o.I18n.t("googleFontsAssetProvider.providerLabel"),search:{reloadOnInput:!1},async onLoad(){var u;if(b)return b;const o={key:t,sort:"alpha",subset:"latin",capability:["WOFF2","VF"]},a=s==null?void 0:s(),i={...o,...a},c=await(await fetch(n(i))).json();return(u=c.items)!=null&&u.length?(b=c.items.map(S),b):[]},itemLayout:o=>{const a=b.find(l=>l.id===o.assetProps.id),i=W(a);return{type:"column",onClick:()=>o.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:i,fontSize:"24px",paddingLeft:"8px",paddingRight:"8px"}},{type:"text",content:a.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:"16px",paddingLeft:"8px",paddingRight:"8px"}}]}}}},V={googleFontsAssetProvider:{searchBtn:"Search on Google Fonts",modalTitle:"Select Font",providerLabel:"Google Fonts"}},H="googleFontsAssetProvider",z=d.startup;return M(function(e,t){const{i18n:s={}}=t,n=K(t);e.runCommand(p.assetProviderAdd,{provider:n}),e.I18n.addMessages({en:V,...s}),j({editor:e,licenseKey:t.licenseKey,plan:z,pluginName:H,cleanup:()=>{e.runCommand(p.assetProviderRemove,{id:n.id})}})})});
@@ -1,3 +1,3 @@
1
- "use strict";const x="app.grapesjs.com",R="app-stage.grapesjs.com",P=[x,R,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],C="license:check:start",G="license:check:end",H=()=>typeof window<"u",B=({isDev:e,isStage:o})=>`${e?"":`https://${o?R:x}`}/api`,m=()=>{const e=H()&&window.location.hostname;return!!e&&(P.includes(e)||P.some(o=>e.endsWith(o)))};async function F({path:e,baseApiUrl:o,method:t="GET",headers:n={},params:a,body:g}){const r=`${o||B({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()}var L=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(L||{}),_=(e=>(e.Info="info",e.Error="error",e.Success="success",e.Warning="warning",e))(_||{}),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.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.setDragAbsolute="studio:setDragAbsolute",e))(f||{});const k={[L.free]:0,[L.startup]:10,[L.business]:20,[L.enterprise]:30};function W(e){const o=e;return o.init=t=>n=>e(n,t),o}const K=e=>W(e);async function V({editor:e,plan:o,pluginName:t,licenseKey:n,cleanup:a}){let g="",u=!1;const r=m(),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=k[o],v=k[l];b>v&&s({pluginRequiredPlan:o,licensePlan:l})}};e.on(C,i=>{g=i==null?void 0:i.baseApiUrl,u=!0}),e.on(G,i=>{c(i)}),setTimeout(async()=>{if(!u){if(r)return;if(n){const i=await Y({licenseKey:n,pluginName:t,baseApiUrl:g});i&&c(i)}else s("The `licenseKey` option not provided")}},2e3)}async function Y(e){const{licenseKey:o,pluginName:t,baseApiUrl:n}=e;try{return(await F({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 z=(e,o)=>{var t;return!!((t=e==null?void 0:e.hasAttribute)!=null&&t.call(e,o))},q="iconifyComponent",J=L.startup,X={ratioDefault:!0,tc:!1,cl:!1,cr:!1,bc:!1},w=`<svg viewBox="0 0 24 24">
1
+ "use strict";const x="app.grapesjs.com",R="app-stage.grapesjs.com",P=[x,R,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],j="license:check:start",H="license:check:end",B=()=>typeof window<"u",C=({isDev:e,isStage:o})=>`${e?"":`https://${o?R:x}`}/api`,F=()=>{const e=B()&&window.location.hostname;return!!e&&(P.includes(e)||P.some(o=>e.endsWith(o)))};async function W({path:e,baseApiUrl:o,method:t="GET",headers:n={},params:l,body:g}){const r=`${o||C({isDev:!1,isStage:!1})}${e}`,s={method:t,headers:{"Content-Type":"application/json",...n}};g&&(s.body=JSON.stringify(g));const c=l?new URLSearchParams(l).toString():"",i=c?`?${c}`:"",d=await fetch(`${r}${i}`,s);if(!d.ok)throw new Error(`HTTP error! status: ${d.status}`);return d.json()}var L=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(L||{}),_=(e=>(e.Info="info",e.Error="error",e.Success="success",e.Warning="warning",e))(_||{}),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.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.dataSourceSetGlobalData="studio:dataSourceSetGlobalData",e.dataSourceSetImporter="studio:dataSourceSetImporter",e.dataSourceSetExporter="studio:dataSourceSetExporter",e.setDragAbsolute="studio:setDragAbsolute",e))(f||{});const k={[L.free]:0,[L.startup]:10,[L.business]:20,[L.enterprise]:30};function m(e){const o=e;return o.init=t=>n=>e(n,t),o}const K=e=>m(e);async function S({editor:e,plan:o,pluginName:t,licenseKey:n,cleanup:l}){let g="",u=!1;const r=F(),s=i=>{console.warn("Cleanup plugin:",t,"Reason:",i),l()},c=(i={})=>{var y;const{error:d,sdkLicense:h}=i,a=(y=i.plan)==null?void 0:y.category;if(!(h||i.license)||d)s(d||"Invalid license");else if(a){const b=k[o],v=k[a];b>v&&s({pluginRequiredPlan:o,licensePlan:a})}};e.on(j,i=>{g=i==null?void 0:i.baseApiUrl,u=!0}),e.on(H,i=>{c(i)}),setTimeout(async()=>{if(!u){if(r)return;if(n){const i=await V({licenseKey:n,pluginName:t,baseApiUrl:g});i&&c(i)}else s("The `licenseKey` option not provided")}},2e3)}async function V(e){const{licenseKey:o,pluginName:t,baseApiUrl:n}=e;try{return(await W({baseApiUrl:n,path:`/sdk/${o||"na"}`,method:"POST",params:{d:window.location.hostname,pn:t}})).result||{}}catch(l){return console.error("Error during SDK license check:",l),!1}}const Y=(e,o)=>{var t;return!!((t=e==null?void 0:e.hasAttribute)!=null&&t.call(e,o))},z="iconifyComponent",q=L.startup,J={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>`,$="layout-icon-picker",Z="icons-layout-",D="icons-list-layout",M="gs-iconify-picker",A="__iconify_collection",Q="https://api.iconify.design",I=new Map;let T;const S=({collectionId:e})=>`https://cdn.jsdelivr.net/npm/@iconify-json/${e}@latest/icons.json`;async function N({collectionId:e,editor:o}){try{if(I.has(e))return I.get(e);const t=await fetch(S({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,re());return}}async function ee({collectionIds:e,editor:o}){try{if(T)return T;const t=e?`?prefixes=${e.join(",")}`:"",n=await fetch(`${Q}/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,U());return}}function O(){return{type:"button",label:"Open Icon Picker",name:"onActive",changeProp:!0,command(e){var o;(o=e.getSelected())==null||o.trigger("active")}}}async function te({collectionIds:e,editor:o,component:t}){const n=await ee({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:$,placer:{type:"dialog",size:"l",title:"Select Icon"},header:!1,layout:{type:"column",style:{height:500,gap:10},children:[se({collectionsList:g,collectionId:u,editor:o,handleClick:a}),{id:D,type:"column",grow:!0}]}});const r=await N({collectionId:u,editor:o});r&&E({editor:o,collection:r,handleClick:a,collectionId:u})}function oe({editor:e,collection:o}){e.em.set(A,o)}function ne(e){return e.em.get(A)}function E(e){const{editor:o}=e,t={id:Z,layout:ie(e),header:!1,style:{height:"100%"},placer:{type:"static",layoutId:D}};o.runCommand(f.layoutRemove,{id:t.id,force:!0}),setTimeout(()=>o.runCommand(f.layoutAdd,t),10)}function se(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:`${M}__header`,children:[{type:"selectField",value:t,options:g,emptyState:"Select an icon collection",onChange:async({setState:u,value:r})=>{const s=await N({collectionId:r,editor:n});s&&(u({value:r}),oe({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=ne(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 ie({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:`${M}__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}=ce(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 j=v.outerHTML;t({icon:j,collectionId:u,iconId:s.name}),i==null||i.runCommand(f.layoutRemove,{id:$})};return l.addEventListener("click",b),d(l),()=>{l.removeEventListener("click",b),h(l)}}}]}}}function ce(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 U(){return{id:"toast-error-getCollections",header:"Error",content:"Error fetching collections",variant:_.Error}}function re(){return{...U(),id:"toast-error-getCollection",content:"Error fetching collection"}}const le=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(){te({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=>z(p,d),model:{defaults:{name:i,icon:w,droppable:!1,attributes:{[d]:!0},resizable:X,components:w,style:{width:"50px",height:"50px"},traits:[O()]},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,O(),...v]}},view:h})}V({editor:e,licenseKey:u,plan:J,pluginName:q,cleanup:()=>{n.remove(c),t.removeType(c)}})},ae=K(le);module.exports=ae;
3
+ </svg>`,$="layout-icon-picker",X="icons-layout-",D="icons-list-layout",M="gs-iconify-picker",A="__iconify_collection",Z="https://api.iconify.design",I=new Map;let T;const Q=({collectionId:e})=>`https://cdn.jsdelivr.net/npm/@iconify-json/${e}@latest/icons.json`;async function N({collectionId:e,editor:o}){try{if(I.has(e))return I.get(e);const t=await fetch(Q({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,re());return}}async function ee({collectionIds:e,editor:o}){try{if(T)return T;const t=e?`?prefixes=${e.join(",")}`:"",n=await fetch(`${Z}/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,U());return}}function O(){return{type:"button",label:"Open Icon Picker",name:"onActive",changeProp:!0,command(e){var o;(o=e.getSelected())==null||o.trigger("active")}}}async function te({collectionIds:e,editor:o,component:t}){const n=await ee({collectionIds:e,editor:o});if(!n)return;const l=({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:$,placer:{type:"dialog",size:"l",title:"Select Icon"},header:!1,layout:{type:"column",style:{height:500,gap:10},children:[se({collectionsList:g,collectionId:u,editor:o,handleClick:l}),{id:D,type:"column",grow:!0}]}});const r=await N({collectionId:u,editor:o});r&&E({editor:o,collection:r,handleClick:l,collectionId:u})}function oe({editor:e,collection:o}){e.em.set(A,o)}function ne(e){return e.em.get(A)}function E(e){const{editor:o}=e,t={id:X,layout:ie(e),header:!1,style:{height:"100%"},placer:{type:"static",layoutId:D}};o.runCommand(f.layoutRemove,{id:t.id,force:!0}),setTimeout(()=>o.runCommand(f.layoutAdd,t),10)}function se(e){const{collectionsList:o,collectionId:t,editor:n,handleClick:l}=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:`${M}__header`,children:[{type:"selectField",value:t,options:g,emptyState:"Select an icon collection",onChange:async({setState:u,value:r})=>{const s=await N({collectionId:r,editor:n});s&&(u({value:r}),oe({editor:n,collection:s}),E({editor:n,collection:s,handleClick:l,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=ne(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:l,collectionId:r,collectionFiltered:{...c,icons:i}})}}]}}function ie({collection:e,collectionFiltered:o,handleClick:t}){const{height:n=24,width:l=24,icons:g,prefix:u}=o||e,r=Object.entries(g).map(([s,{body:c}])=>({name:s,body:c}),{});return{type:"column",className:`${M}__content`,style:{height:"100%"},children:{type:"virtualList",items:r,itemLayout:({item:s})=>[{type:"custom",render:c=>{const{editor:i,addEl:d,removeEl:h}=c,a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("xmlns","http://www.w3.org/2000/svg"),a.innerHTML=s.body,a.setAttribute("viewBox",`0 0 ${l} ${n}`);const{cssWidth:p,cssHeight:y}=ce(l,n);a.style.cssText=`width: ${p}px; height: ${y}px; cursor: pointer;`,a.addEventListener("mouseover",()=>{a.style.border="2px solid currentColor",a.style.borderRadius="4px",a.style.padding="4px"}),a.addEventListener("mouseout",()=>{a.style.border="none"});const b=()=>{const v=a.cloneNode(!0);v.removeAttribute("style");const G=v.outerHTML;t({icon:G,collectionId:u,iconId:s.name}),i==null||i.runCommand(f.layoutRemove,{id:$})};return a.addEventListener("click",b),d(a),()=>{a.removeEventListener("click",b),h(a)}}}]}}}function ce(e,o){const t=e/o;let n=48,l=48;return t>1?l=48/t:t<1&&(n=48*t),{cssWidth:n,cssHeight:l}}function U(){return{id:"toast-error-getCollections",header:"Error",content:"Error fetching collections",variant:_.Error}}function re(){return{...U(),id:"toast-error-getCollection",content:"Error fetching collection"}}const ae=function(e,o={}){var a;const{Components:t,Blocks:n}=e,{collections:l,extendIconComponent:g=!0,licenseKey:u,block:r={}}=o,s="icon",c="iconify",i="Iconify",d="data-type-iconify",h={events:()=>({dblclick:"onActive"}),onActive(){te({collectionIds:l,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=>Y(p,d),model:{defaults:{name:i,icon:w,droppable:!1,attributes:{[d]:!0},resizable:J,components:w,style:{width:"50px",height:"50px"},traits:[O()]},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=(a=t.getType(s))==null?void 0:a.model,[y,b,...v]=p.getDefaults().traits;t.addType(s,{model:{defaults:{traits:[y,b,O(),...v]}},view:h})}S({editor:e,licenseKey:u,plan:q,pluginName:z,cleanup:()=>{n.remove(c),t.removeType(c)}})},le=K(ae);module.exports=le;