@grapesjs/studio-sdk-plugins 1.0.37 → 1.0.38-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 (93) hide show
  1. package/dist/accordionComponent/index.cjs.js +3 -3
  2. package/dist/accordionComponent/index.es.js +12 -12
  3. package/dist/accordionComponent/index.umd.js +3 -3
  4. package/dist/aiChat/index.cjs.js +85 -85
  5. package/dist/aiChat/index.es.js +9759 -9332
  6. package/dist/aiChat/index.js +85 -85
  7. package/dist/aiChat/index.umd.js +86 -86
  8. package/dist/aiChat/locales/en.d.ts +11 -0
  9. package/dist/aiChat/server/index.cjs.js +1 -1
  10. package/dist/aiChat/server/index.es.js +1 -1
  11. package/dist/aiChat/server/index.js +1 -1
  12. package/dist/aiChat/server/index.umd.js +1 -1
  13. package/dist/aiChat/types.d.ts +1 -1
  14. package/dist/animationComponent/index.cjs.js +3 -3
  15. package/dist/animationComponent/index.es.js +10 -10
  16. package/dist/animationComponent/index.umd.js +3 -3
  17. package/dist/canvasAbsoluteMode/index.cjs.js +1 -1
  18. package/dist/canvasAbsoluteMode/index.es.js +10 -10
  19. package/dist/canvasAbsoluteMode/index.umd.js +1 -1
  20. package/dist/canvasEmptyState/index.cjs.js +1 -1
  21. package/dist/canvasEmptyState/index.es.js +1 -1
  22. package/dist/canvasEmptyState/index.umd.js +1 -1
  23. package/dist/canvasFullSize/index.cjs.js +4 -4
  24. package/dist/canvasFullSize/index.es.js +15 -15
  25. package/dist/canvasFullSize/index.umd.js +3 -3
  26. package/dist/canvasGridMode/index.cjs.js +2 -2
  27. package/dist/canvasGridMode/index.es.js +233 -228
  28. package/dist/canvasGridMode/index.umd.js +2 -2
  29. package/dist/canvasScreenshot/index.cjs.js +1 -1
  30. package/dist/canvasScreenshot/index.es.js +11 -11
  31. package/dist/canvasScreenshot/index.umd.js +1 -1
  32. package/dist/dataSourceEjs/index.cjs.js +2 -2
  33. package/dist/dataSourceEjs/index.es.js +5 -5
  34. package/dist/dataSourceEjs/index.umd.js +1 -1
  35. package/dist/dataSourceHandlebars/index.cjs.js +1 -1
  36. package/dist/dataSourceHandlebars/index.es.js +105 -105
  37. package/dist/dataSourceHandlebars/index.umd.js +5 -5
  38. package/dist/dialogComponent/index.cjs.js +3 -3
  39. package/dist/dialogComponent/index.es.js +18 -18
  40. package/dist/dialogComponent/index.umd.js +3 -3
  41. package/dist/flexComponent/index.cjs.js +1 -1
  42. package/dist/flexComponent/index.es.js +1 -1
  43. package/dist/flexComponent/index.umd.js +3 -3
  44. package/dist/fsLightboxComponent/index.cjs.js +1 -1
  45. package/dist/fsLightboxComponent/index.es.js +7 -7
  46. package/dist/fsLightboxComponent/index.umd.js +2 -2
  47. package/dist/googleFontsAssetProvider/index.cjs.js +1 -1
  48. package/dist/googleFontsAssetProvider/index.es.js +12 -12
  49. package/dist/googleFontsAssetProvider/index.umd.js +1 -1
  50. package/dist/iconifyComponent/index.cjs.js +2 -2
  51. package/dist/iconifyComponent/index.es.js +61 -61
  52. package/dist/iconifyComponent/index.umd.js +2 -2
  53. package/dist/index.cjs.js +24 -24
  54. package/dist/index.es.js +335 -330
  55. package/dist/index.umd.js +25 -25
  56. package/dist/layoutSidebarButtons/index.cjs.js +1 -1
  57. package/dist/layoutSidebarButtons/index.es.js +15 -15
  58. package/dist/layoutSidebarButtons/index.umd.js +1 -1
  59. package/dist/lightGalleryComponent/index.cjs.js +1 -1
  60. package/dist/lightGalleryComponent/index.es.js +20 -20
  61. package/dist/lightGalleryComponent/index.umd.js +1 -1
  62. package/dist/linkImageComponent/index.cjs.js +1 -1
  63. package/dist/linkImageComponent/index.es.js +1 -1
  64. package/dist/linkImageComponent/index.umd.js +2 -2
  65. package/dist/listPagesComponent/index.cjs.js +2 -2
  66. package/dist/listPagesComponent/index.es.js +10 -10
  67. package/dist/listPagesComponent/index.umd.js +2 -2
  68. package/dist/presetPrintable/index.cjs.js +5 -5
  69. package/dist/presetPrintable/index.es.js +47 -47
  70. package/dist/presetPrintable/index.umd.js +4 -4
  71. package/dist/prosemirror/index.cjs.js +1 -1
  72. package/dist/prosemirror/index.es.js +1 -1
  73. package/dist/prosemirror/index.umd.js +1 -1
  74. package/dist/rendererReact/index.cjs.js +1 -1
  75. package/dist/rendererReact/index.es.js +16 -16
  76. package/dist/rendererReact/index.js +1 -1
  77. package/dist/rendererReact/index.umd.js +1 -1
  78. package/dist/rteTinyMce/index.cjs.js +2 -2
  79. package/dist/rteTinyMce/index.es.js +27 -27
  80. package/dist/rteTinyMce/index.umd.js +1 -1
  81. package/dist/shapeDividerComponent/index.cjs.js +1 -1
  82. package/dist/shapeDividerComponent/index.es.js +10 -10
  83. package/dist/shapeDividerComponent/index.umd.js +2 -2
  84. package/dist/swiperComponent/index.cjs.js +1 -1
  85. package/dist/swiperComponent/index.es.js +1 -1
  86. package/dist/swiperComponent/index.umd.js +1 -1
  87. package/dist/tableComponent/index.cjs.js +1 -1
  88. package/dist/tableComponent/index.es.js +9 -9
  89. package/dist/tableComponent/index.umd.js +1 -1
  90. package/dist/youtubeAssetProvider/index.cjs.js +1 -1
  91. package/dist/youtubeAssetProvider/index.es.js +5 -5
  92. package/dist/youtubeAssetProvider/index.umd.js +1 -1
  93. package/package.json +1 -1
@@ -1 +1 @@
1
- "use strict";var d=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(d||{}),y=(e=>(e.toastAdd="studio:toastAdd",e.toastRemove="studio:toastRemove",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.dialogExportCode="studio:dialogExportCode",e.dialogImportCode="studio:dialogImportCode",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.clearPage="studio:clearPage",e.projectFiles="studio:projectFiles",e.validateCode="studio:validateCode",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.layoutComponentAdd="studio:layoutComponentAdd",e.layoutComponentGet="studio:layoutComponentGet",e.layoutComponentRemove="studio:layoutComponentRemove",e.layoutComponentRender="studio:layoutComponentRender",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.settings="studio:settings",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",T="app-stage.grapesjs.com",I="app2.grapesjs.com",$="app-stage2.grapesjs.com",w=[x,I,T,$,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io",".claudemcpcontent.com",".web-sandbox.oaiusercontent.com"],E="license:check:end",M=()=>typeof window<"u",U=({isDev:e,isStage:t,isPlatform:s})=>`${e?"":`https://${t?T:x}`}/${s?"platform-api":"api"}`,j=()=>{if(!M())return"";const{hostname:e}=window.location;if(e)return e;try{return window.parent.location.hostname||""}catch{return""}},k=()=>{const e=j();return!!e&&(w.includes(e)||w.some(t=>e.endsWith(t)))};async function B({path:e,baseApiUrl:t,method:s="GET",headers:o={},params:n,body:i}){const a=`${t||U({isDev:!1,isStage:!1})}${e}`,l={method:s,headers:{"Content-Type":"application/json",...o}};i&&(l.body=JSON.stringify(i));const p=n?new URLSearchParams(n).toString():"",u=p?`?${p}`:"",r=await fetch(`${a}${u}`,l);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}const F={[d.free]:0,[d.startup]:10,[d.business]:20,[d.enterprise]:30};function N(e){const t=e;return t.init=s=>o=>e(o,s),t}const W=e=>N(e);async function _({editor:e,plan:t,pluginName:s,licenseKey:o,onLicenseCheckResponse:n,cleanup:i}){let c="",a;const l=r=>{console.warn("Cleanup plugin:",s,"Reason:",r),i()},p=(r={})=>{var A;const{error:g,sdkLicense:f}=r,b=(A=r.plan)==null?void 0:A.category;if(!(f||r.license)||g)l(g||"Invalid license");else if(b){const G=F[t],O=F[b];G>O&&l({pluginRequiredPlan:t,licensePlan:b})}};e.Commands.has(y.settings)&&(a=e.runCommand(y.settings),c=(a==null?void 0:a.baseUrl)||"");const u=r=>{n==null||n(r),r&&p(r)};if(!a){e.onReady(async()=>{if(!k())if(o){const r=await K({licenseKey:o,pluginName:s,baseApiUrl:c});u(r)}else l("The `licenseKey` option not provided")});return}if(a.licensePlan||a.licenseError){const r=V(a);u(r);return}e.on(E,r=>u(r))}const V=e=>({sdkLicense:e.license,license:e.license,error:e.licenseError,plan:e.licensePlan});async function K(e){const{licenseKey:t,pluginName:s,baseApiUrl:o}=e;try{return(await B({baseApiUrl:o,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:s}})).result||{}}catch(n){return console.error("Error during SDK license check:",n),!1}}const v=e=>e.replaceAll('"',"").replaceAll("'",""),P=e=>e.includes(",")?e:/\s/.test(e)?`'${v(e)}'`:v(e),L=(e,t,s)=>({family:e,variant:t,...s}),D=(e,t)=>{e=P(e);const{menuVariant:s,variants:o}=t;return{family:e,familyLabel:v(e),menuVariant:s&&L(P(`menuFont-${v(e)}`),"regular",s),variants:Object.assign({},...Object.entries(o).map(([n,i])=>({[n]:L(e,n,i)})))}},R=(e,t)=>{var a;const s=D(e.family,e),o=s.menuVariant??((a=Object.values(s.variants))==null?void 0:a[0]);if(!o)return"Arial, Helvetica, sans-serif";const{source:n,descriptors:i}=o,c=v(o.family);if(!t){const l=new FontFace(c,`url("${n}")`,i),p=Array.from(document.fonts.values()).filter(u=>u.family===c);for(const u of p)document.fonts.delete(u);document.fonts.add(l),l.load().catch(()=>{})}return P(c)},H=e=>{const{family:t,menu:s,axes:o}=e,n=!!o,i=Object.assign({},...e.variants.map(c=>{var u,r;let a,l;if(n){const g=o.find(f=>f.tag==="wght");if(g){const{start:f,end:b}=g;a=`${f} ${b}`}}return a||(a=((u=c.match(/\d+/))==null?void 0:u[0])??"400"),l=((r=c.match(/[a-zA-Z]+/))==null?void 0:r[0])==="italic"?"italic":void 0,{[c]:{source:e.files[c],descriptors:{style:l,weight:a}}}}));return D(t,{menuVariant:{source:s},variants:i})},z=e=>({id:`${e.family}/${e.version}`,type:"font",src:e.menu,name:e.family,customData:{font:H(e),needsLoading:!0}}),q=e=>{const{font:t}=e.customData;return e.customData.needsLoading?(e.customData.needsLoading=!1,R(t)):R(t,!0)};let h;const J=e=>{const t=[];for(const s of Object.keys(e)){let o=e[s];o&&(Array.isArray(o)?t.push(...o.map(n=>[s,n.toString()])):(o=o.toString(),t.push([s,o])))}return new URLSearchParams(t)},Q=e=>{const{apiKey:t,searchParams:s}=e,o=(n={})=>{const i="https://www.googleapis.com/webfonts/v1/webfonts",c=J(n);return`${i}?${c}`};return{id:"google-fonts",types:["font"],label:({editor:n})=>n.I18n.t("googleFontsAssetProvider.providerLabel"),search:{reloadOnInput:!1},async onLoad(){var p;if(h)return h;const n={key:t,sort:"alpha",subset:"latin",capability:["WOFF2","VF"]},i=s==null?void 0:s(),c={...n,...i},l=await(await fetch(o(c))).json();return(p=l.items)!=null&&p.length?(h=l.items.map(z),h):[]},itemLayout:n=>{const i=h.find(a=>a.id===n.assetProps.id),c=q(i);return{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:c,fontSize:"24px",paddingLeft:"8px",paddingRight:"8px"}},{type:"text",content:i.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"}},X="googleFontsAssetProvider",Y=d.startup,S=function(e,t){const{i18n:s={}}=t,o=Q(t);e.runCommand(y.assetProviderAdd,{provider:o}),e.I18n.addMessages({en:Z,...s}),_({editor:e,licenseKey:t.licenseKey,plan:Y,pluginName:X,cleanup:()=>{e.runCommand(y.assetProviderRemove,{id:o.id})}})},m=W(S);module.exports=m;
1
+ "use strict";var d=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(d||{}),y=(e=>(e.toastAdd="studio:toastAdd",e.toastRemove="studio:toastRemove",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.dialogExportCode="studio:dialogExportCode",e.dialogImportCode="studio:dialogImportCode",e.openEditCode="studio:openEditCode",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.clearPage="studio:clearPage",e.projectFiles="studio:projectFiles",e.validateCode="studio:validateCode",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.layoutComponentAdd="studio:layoutComponentAdd",e.layoutComponentGet="studio:layoutComponentGet",e.layoutComponentRemove="studio:layoutComponentRemove",e.layoutComponentRender="studio:layoutComponentRender",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.settings="studio:settings",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",T="app-stage.grapesjs.com",I="app2.grapesjs.com",$="app-stage2.grapesjs.com",w=[x,I,T,$,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io",".claudemcpcontent.com",".web-sandbox.oaiusercontent.com"],E="license:check:end",M=()=>typeof window<"u",U=({isDev:e,isStage:t,isPlatform:s})=>`${e?"":`https://${t?T:x}`}/${s?"platform-api":"api"}`,j=()=>{if(!M())return"";const{hostname:e}=window.location;if(e)return e;try{return window.parent.location.hostname||""}catch{return""}},k=()=>{const e=j();return!!e&&(w.includes(e)||w.some(t=>e.endsWith(t)))};async function B({path:e,baseApiUrl:t,method:s="GET",headers:o={},params:n,body:i}){const a=`${t||U({isDev:!1,isStage:!1})}${e}`,l={method:s,headers:{"Content-Type":"application/json",...o}};i&&(l.body=JSON.stringify(i));const p=n?new URLSearchParams(n).toString():"",u=p?`?${p}`:"",r=await fetch(`${a}${u}`,l);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}const F={[d.free]:0,[d.startup]:10,[d.business]:20,[d.enterprise]:30};function N(e){const t=e;return t.init=s=>o=>e(o,s),t}const W=e=>N(e);async function _({editor:e,plan:t,pluginName:s,licenseKey:o,onLicenseCheckResponse:n,cleanup:i}){let c="",a;const l=r=>{console.warn("Cleanup plugin:",s,"Reason:",r),i()},p=(r={})=>{var A;const{error:g,sdkLicense:f}=r,b=(A=r.plan)==null?void 0:A.category;if(!(f||r.license)||g)l(g||"Invalid license");else if(b){const G=F[t],O=F[b];G>O&&l({pluginRequiredPlan:t,licensePlan:b})}};e.Commands.has(y.settings)&&(a=e.runCommand(y.settings),c=(a==null?void 0:a.baseUrl)||"");const u=r=>{n==null||n(r),r&&p(r)};if(!a){e.onReady(async()=>{if(!k())if(o){const r=await K({licenseKey:o,pluginName:s,baseApiUrl:c});u(r)}else l("The `licenseKey` option not provided")});return}if(a.licensePlan||a.licenseError){const r=V(a);u(r);return}e.on(E,r=>u(r))}const V=e=>({sdkLicense:e.license,license:e.license,error:e.licenseError,plan:e.licensePlan});async function K(e){const{licenseKey:t,pluginName:s,baseApiUrl:o}=e;try{return(await B({baseApiUrl:o,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:s}})).result||{}}catch(n){return console.error("Error during SDK license check:",n),!1}}const v=e=>e.replaceAll('"',"").replaceAll("'",""),P=e=>e.includes(",")?e:/\s/.test(e)?`'${v(e)}'`:v(e),L=(e,t,s)=>({family:e,variant:t,...s}),D=(e,t)=>{e=P(e);const{menuVariant:s,variants:o}=t;return{family:e,familyLabel:v(e),menuVariant:s&&L(P(`menuFont-${v(e)}`),"regular",s),variants:Object.assign({},...Object.entries(o).map(([n,i])=>({[n]:L(e,n,i)})))}},R=(e,t)=>{var a;const s=D(e.family,e),o=s.menuVariant??((a=Object.values(s.variants))==null?void 0:a[0]);if(!o)return"Arial, Helvetica, sans-serif";const{source:n,descriptors:i}=o,c=v(o.family);if(!t){const l=new FontFace(c,`url("${n}")`,i),p=Array.from(document.fonts.values()).filter(u=>u.family===c);for(const u of p)document.fonts.delete(u);document.fonts.add(l),l.load().catch(()=>{})}return P(c)},H=e=>{const{family:t,menu:s,axes:o}=e,n=!!o,i=Object.assign({},...e.variants.map(c=>{var u,r;let a,l;if(n){const g=o.find(f=>f.tag==="wght");if(g){const{start:f,end:b}=g;a=`${f} ${b}`}}return a||(a=((u=c.match(/\d+/))==null?void 0:u[0])??"400"),l=((r=c.match(/[a-zA-Z]+/))==null?void 0:r[0])==="italic"?"italic":void 0,{[c]:{source:e.files[c],descriptors:{style:l,weight:a}}}}));return D(t,{menuVariant:{source:s},variants:i})},z=e=>({id:`${e.family}/${e.version}`,type:"font",src:e.menu,name:e.family,customData:{font:H(e),needsLoading:!0}}),q=e=>{const{font:t}=e.customData;return e.customData.needsLoading?(e.customData.needsLoading=!1,R(t)):R(t,!0)};let h;const J=e=>{const t=[];for(const s of Object.keys(e)){let o=e[s];o&&(Array.isArray(o)?t.push(...o.map(n=>[s,n.toString()])):(o=o.toString(),t.push([s,o])))}return new URLSearchParams(t)},Q=e=>{const{apiKey:t,searchParams:s}=e,o=(n={})=>{const i="https://www.googleapis.com/webfonts/v1/webfonts",c=J(n);return`${i}?${c}`};return{id:"google-fonts",types:["font"],label:({editor:n})=>n.I18n.t("googleFontsAssetProvider.providerLabel"),search:{reloadOnInput:!1},async onLoad(){var p;if(h)return h;const n={key:t,sort:"alpha",subset:"latin",capability:["WOFF2","VF"]},i=s==null?void 0:s(),c={...n,...i},l=await(await fetch(o(c))).json();return(p=l.items)!=null&&p.length?(h=l.items.map(z),h):[]},itemLayout:n=>{const i=h.find(a=>a.id===n.assetProps.id),c=q(i);return{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:c,fontSize:"24px",paddingLeft:"8px",paddingRight:"8px"}},{type:"text",content:i.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"}},X="googleFontsAssetProvider",Y=d.startup,S=function(e,t){const{i18n:s={}}=t,o=Q(t);e.runCommand(y.assetProviderAdd,{provider:o}),e.I18n.addMessages({en:Z,...s}),_({editor:e,licenseKey:t.licenseKey,plan:Y,pluginName:X,cleanup:()=>{e.runCommand(y.assetProviderRemove,{id:o.id})}})},m=W(S);module.exports=m;
@@ -1,4 +1,4 @@
1
- var d = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(d || {}), y = /* @__PURE__ */ ((e) => (e.toastAdd = "studio:toastAdd", e.toastRemove = "studio:toastRemove", e.dialogOpen = "studio:dialogOpen", e.dialogClose = "studio:dialogClose", e.dialogExportCode = "studio:dialogExportCode", e.dialogImportCode = "studio:dialogImportCode", 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.clearPage = "studio:clearPage", e.projectFiles = "studio:projectFiles", e.validateCode = "studio:validateCode", 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.layoutComponentAdd = "studio:layoutComponentAdd", e.layoutComponentGet = "studio:layoutComponentGet", e.layoutComponentRemove = "studio:layoutComponentRemove", e.layoutComponentRender = "studio:layoutComponentRender", e.getStateTheme = "studio:getStateTheme", e.setStateTheme = "studio:setStateTheme", e.settings = "studio:settings", 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 || {});
1
+ var g = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(g || {}), y = /* @__PURE__ */ ((e) => (e.toastAdd = "studio:toastAdd", e.toastRemove = "studio:toastRemove", e.dialogOpen = "studio:dialogOpen", e.dialogClose = "studio:dialogClose", e.dialogExportCode = "studio:dialogExportCode", e.dialogImportCode = "studio:dialogImportCode", e.openEditCode = "studio:openEditCode", 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.clearPage = "studio:clearPage", e.projectFiles = "studio:projectFiles", e.validateCode = "studio:validateCode", 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.layoutComponentAdd = "studio:layoutComponentAdd", e.layoutComponentGet = "studio:layoutComponentGet", e.layoutComponentRemove = "studio:layoutComponentRemove", e.layoutComponentRender = "studio:layoutComponentRender", e.getStateTheme = "studio:getStateTheme", e.setStateTheme = "studio:setStateTheme", e.settings = "studio:settings", 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
2
  const x = "app.grapesjs.com", T = "app-stage.grapesjs.com", I = "app2.grapesjs.com", $ = "app-stage2.grapesjs.com", w = [
3
3
  x,
4
4
  I,
@@ -55,10 +55,10 @@ async function B({
55
55
  return r.json();
56
56
  }
57
57
  const F = {
58
- [d.free]: 0,
59
- [d.startup]: 10,
60
- [d.business]: 20,
61
- [d.enterprise]: 30
58
+ [g.free]: 0,
59
+ [g.startup]: 10,
60
+ [g.business]: 20,
61
+ [g.enterprise]: 30
62
62
  };
63
63
  function N(e) {
64
64
  const t = e;
@@ -78,9 +78,9 @@ async function _({
78
78
  console.warn("Cleanup plugin:", s, "Reason:", r), i();
79
79
  }, p = (r = {}) => {
80
80
  var A;
81
- const { error: g, sdkLicense: f } = r, b = (A = r.plan) == null ? void 0 : A.category;
82
- if (!(f || r.license) || g)
83
- l(g || "Invalid license");
81
+ const { error: d, sdkLicense: f } = r, b = (A = r.plan) == null ? void 0 : A.category;
82
+ if (!(f || r.license) || d)
83
+ l(d || "Invalid license");
84
84
  else if (b) {
85
85
  const G = F[t], O = F[b];
86
86
  G > O && l({ pluginRequiredPlan: t, licensePlan: b });
@@ -169,9 +169,9 @@ const v = (e) => e.replaceAll('"', "").replaceAll("'", ""), P = (e) => e.include
169
169
  var u, r;
170
170
  let a, l;
171
171
  if (n) {
172
- const g = o.find((f) => f.tag === "wght");
173
- if (g) {
174
- const { start: f, end: b } = g;
172
+ const d = o.find((f) => f.tag === "wght");
173
+ if (d) {
174
+ const { start: f, end: b } = d;
175
175
  a = `${f} ${b}`;
176
176
  }
177
177
  }
@@ -285,7 +285,7 @@ const J = (e) => {
285
285
  modalTitle: "Select Font",
286
286
  providerLabel: "Google Fonts"
287
287
  }
288
- }, X = "googleFontsAssetProvider", Y = d.startup, S = function(e, t) {
288
+ }, X = "googleFontsAssetProvider", Y = g.startup, S = function(e, t) {
289
289
  const { i18n: s = {} } = t, o = Q(t);
290
290
  e.runCommand(y.assetProviderAdd, { provider: o }), e.I18n.addMessages({
291
291
  en: Z,
@@ -1 +1 @@
1
- (function(d,g){typeof exports=="object"&&typeof module<"u"?module.exports=g():typeof define=="function"&&define.amd?define(g):(d=typeof globalThis<"u"?globalThis:d||self,d.StudioSdkPlugins_googleFontsAssetProvider=g())})(this,function(){"use strict";var d=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(d||{}),g=(e=>(e.toastAdd="studio:toastAdd",e.toastRemove="studio:toastRemove",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.dialogExportCode="studio:dialogExportCode",e.dialogImportCode="studio:dialogImportCode",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.clearPage="studio:clearPage",e.projectFiles="studio:projectFiles",e.validateCode="studio:validateCode",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.layoutComponentAdd="studio:layoutComponentAdd",e.layoutComponentGet="studio:layoutComponentGet",e.layoutComponentRemove="studio:layoutComponentRemove",e.layoutComponentRender="studio:layoutComponentRender",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.settings="studio:settings",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))(g||{});const A="app.grapesjs.com",w="app-stage.grapesjs.com",F=[A,"app2.grapesjs.com",w,"app-stage2.grapesjs.com","localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io",".claudemcpcontent.com",".web-sandbox.oaiusercontent.com"],O="license:check:end",G=()=>typeof window<"u",I=({isDev:e,isStage:t,isPlatform:s})=>`${e?"":`https://${t?w:A}`}/${s?"platform-api":"api"}`,$=()=>{if(!G())return"";const{hostname:e}=window.location;if(e)return e;try{return window.parent.location.hostname||""}catch{return""}},M=()=>{const e=$();return!!e&&(F.includes(e)||F.some(t=>e.endsWith(t)))};async function E({path:e,baseApiUrl:t,method:s="GET",headers:o={},params:n,body:i}){const a=`${t||I({isDev:!1,isStage:!1})}${e}`,l={method:s,headers:{"Content-Type":"application/json",...o}};i&&(l.body=JSON.stringify(i));const p=n?new URLSearchParams(n).toString():"",u=p?`?${p}`:"",r=await fetch(`${a}${u}`,l);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}const x={[d.free]:0,[d.startup]:10,[d.business]:20,[d.enterprise]:30};function U(e){const t=e;return t.init=s=>o=>e(o,s),t}const j=e=>U(e);async function k({editor:e,plan:t,pluginName:s,licenseKey:o,onLicenseCheckResponse:n,cleanup:i}){let c="",a;const l=r=>{console.warn("Cleanup plugin:",s,"Reason:",r),i()},p=(r={})=>{var D;const{error:f,sdkLicense:y}=r,v=(D=r.plan)==null?void 0:D.category;if(!(y||r.license)||f)l(f||"Invalid license");else if(v){const Q=x[t],Z=x[v];Q>Z&&l({pluginRequiredPlan:t,licensePlan:v})}};e.Commands.has(g.settings)&&(a=e.runCommand(g.settings),c=(a==null?void 0:a.baseUrl)||"");const u=r=>{n==null||n(r),r&&p(r)};if(!a){e.onReady(async()=>{if(!M())if(o){const r=await B({licenseKey:o,pluginName:s,baseApiUrl:c});u(r)}else l("The `licenseKey` option not provided")});return}if(a.licensePlan||a.licenseError){const r=N(a);u(r);return}e.on(O,r=>u(r))}const N=e=>({sdkLicense:e.license,license:e.license,error:e.licenseError,plan:e.licensePlan});async function B(e){const{licenseKey:t,pluginName:s,baseApiUrl:o}=e;try{return(await E({baseApiUrl:o,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:s}})).result||{}}catch(n){return console.error("Error during SDK license check:",n),!1}}const h=e=>e.replaceAll('"',"").replaceAll("'",""),P=e=>e.includes(",")?e:/\s/.test(e)?`'${h(e)}'`:h(e),L=(e,t,s)=>({family:e,variant:t,...s}),R=(e,t)=>{e=P(e);const{menuVariant:s,variants:o}=t;return{family:e,familyLabel:h(e),menuVariant:s&&L(P(`menuFont-${h(e)}`),"regular",s),variants:Object.assign({},...Object.entries(o).map(([n,i])=>({[n]:L(e,n,i)})))}},T=(e,t)=>{var a;const s=R(e.family,e),o=s.menuVariant??((a=Object.values(s.variants))==null?void 0:a[0]);if(!o)return"Arial, Helvetica, sans-serif";const{source:n,descriptors:i}=o,c=h(o.family);if(!t){const l=new FontFace(c,`url("${n}")`,i),p=Array.from(document.fonts.values()).filter(u=>u.family===c);for(const u of p)document.fonts.delete(u);document.fonts.add(l),l.load().catch(()=>{})}return P(c)},_=e=>{const{family:t,menu:s,axes:o}=e,n=!!o,i=Object.assign({},...e.variants.map(c=>{var u,r;let a,l;if(n){const f=o.find(y=>y.tag==="wght");if(f){const{start:y,end:v}=f;a=`${y} ${v}`}}return a||(a=((u=c.match(/\d+/))==null?void 0:u[0])??"400"),l=((r=c.match(/[a-zA-Z]+/))==null?void 0:r[0])==="italic"?"italic":void 0,{[c]:{source:e.files[c],descriptors:{style:l,weight:a}}}}));return R(t,{menuVariant:{source:s},variants:i})},W=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 b;const K=e=>{const t=[];for(const s of Object.keys(e)){let o=e[s];o&&(Array.isArray(o)?t.push(...o.map(n=>[s,n.toString()])):(o=o.toString(),t.push([s,o])))}return new URLSearchParams(t)},H=e=>{const{apiKey:t,searchParams:s}=e,o=(n={})=>{const i="https://www.googleapis.com/webfonts/v1/webfonts",c=K(n);return`${i}?${c}`};return{id:"google-fonts",types:["font"],label:({editor:n})=>n.I18n.t("googleFontsAssetProvider.providerLabel"),search:{reloadOnInput:!1},async onLoad(){var p;if(b)return b;const n={key:t,sort:"alpha",subset:"latin",capability:["WOFF2","VF"]},i=s==null?void 0:s(),c={...n,...i},l=await(await fetch(o(c))).json();return(p=l.items)!=null&&p.length?(b=l.items.map(W),b):[]},itemLayout:n=>{const i=b.find(a=>a.id===n.assetProps.id),c=V(i);return{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:c,fontSize:"24px",paddingLeft:"8px",paddingRight:"8px"}},{type:"text",content:i.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=d.startup;return j(function(e,t){const{i18n:s={}}=t,o=H(t);e.runCommand(g.assetProviderAdd,{provider:o}),e.I18n.addMessages({en:z,...s}),k({editor:e,licenseKey:t.licenseKey,plan:J,pluginName:q,cleanup:()=>{e.runCommand(g.assetProviderRemove,{id:o.id})}})})});
1
+ (function(d,g){typeof exports=="object"&&typeof module<"u"?module.exports=g():typeof define=="function"&&define.amd?define(g):(d=typeof globalThis<"u"?globalThis:d||self,d.StudioSdkPlugins_googleFontsAssetProvider=g())})(this,function(){"use strict";var d=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(d||{}),g=(e=>(e.toastAdd="studio:toastAdd",e.toastRemove="studio:toastRemove",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.dialogExportCode="studio:dialogExportCode",e.dialogImportCode="studio:dialogImportCode",e.openEditCode="studio:openEditCode",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.clearPage="studio:clearPage",e.projectFiles="studio:projectFiles",e.validateCode="studio:validateCode",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.layoutComponentAdd="studio:layoutComponentAdd",e.layoutComponentGet="studio:layoutComponentGet",e.layoutComponentRemove="studio:layoutComponentRemove",e.layoutComponentRender="studio:layoutComponentRender",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.settings="studio:settings",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))(g||{});const A="app.grapesjs.com",w="app-stage.grapesjs.com",F=[A,"app2.grapesjs.com",w,"app-stage2.grapesjs.com","localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io",".claudemcpcontent.com",".web-sandbox.oaiusercontent.com"],O="license:check:end",G=()=>typeof window<"u",I=({isDev:e,isStage:t,isPlatform:s})=>`${e?"":`https://${t?w:A}`}/${s?"platform-api":"api"}`,$=()=>{if(!G())return"";const{hostname:e}=window.location;if(e)return e;try{return window.parent.location.hostname||""}catch{return""}},E=()=>{const e=$();return!!e&&(F.includes(e)||F.some(t=>e.endsWith(t)))};async function M({path:e,baseApiUrl:t,method:s="GET",headers:o={},params:n,body:i}){const a=`${t||I({isDev:!1,isStage:!1})}${e}`,l={method:s,headers:{"Content-Type":"application/json",...o}};i&&(l.body=JSON.stringify(i));const p=n?new URLSearchParams(n).toString():"",u=p?`?${p}`:"",r=await fetch(`${a}${u}`,l);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}const x={[d.free]:0,[d.startup]:10,[d.business]:20,[d.enterprise]:30};function U(e){const t=e;return t.init=s=>o=>e(o,s),t}const j=e=>U(e);async function k({editor:e,plan:t,pluginName:s,licenseKey:o,onLicenseCheckResponse:n,cleanup:i}){let c="",a;const l=r=>{console.warn("Cleanup plugin:",s,"Reason:",r),i()},p=(r={})=>{var D;const{error:f,sdkLicense:y}=r,v=(D=r.plan)==null?void 0:D.category;if(!(y||r.license)||f)l(f||"Invalid license");else if(v){const Q=x[t],Z=x[v];Q>Z&&l({pluginRequiredPlan:t,licensePlan:v})}};e.Commands.has(g.settings)&&(a=e.runCommand(g.settings),c=(a==null?void 0:a.baseUrl)||"");const u=r=>{n==null||n(r),r&&p(r)};if(!a){e.onReady(async()=>{if(!E())if(o){const r=await B({licenseKey:o,pluginName:s,baseApiUrl:c});u(r)}else l("The `licenseKey` option not provided")});return}if(a.licensePlan||a.licenseError){const r=N(a);u(r);return}e.on(O,r=>u(r))}const N=e=>({sdkLicense:e.license,license:e.license,error:e.licenseError,plan:e.licensePlan});async function B(e){const{licenseKey:t,pluginName:s,baseApiUrl:o}=e;try{return(await M({baseApiUrl:o,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:s}})).result||{}}catch(n){return console.error("Error during SDK license check:",n),!1}}const h=e=>e.replaceAll('"',"").replaceAll("'",""),P=e=>e.includes(",")?e:/\s/.test(e)?`'${h(e)}'`:h(e),L=(e,t,s)=>({family:e,variant:t,...s}),R=(e,t)=>{e=P(e);const{menuVariant:s,variants:o}=t;return{family:e,familyLabel:h(e),menuVariant:s&&L(P(`menuFont-${h(e)}`),"regular",s),variants:Object.assign({},...Object.entries(o).map(([n,i])=>({[n]:L(e,n,i)})))}},T=(e,t)=>{var a;const s=R(e.family,e),o=s.menuVariant??((a=Object.values(s.variants))==null?void 0:a[0]);if(!o)return"Arial, Helvetica, sans-serif";const{source:n,descriptors:i}=o,c=h(o.family);if(!t){const l=new FontFace(c,`url("${n}")`,i),p=Array.from(document.fonts.values()).filter(u=>u.family===c);for(const u of p)document.fonts.delete(u);document.fonts.add(l),l.load().catch(()=>{})}return P(c)},_=e=>{const{family:t,menu:s,axes:o}=e,n=!!o,i=Object.assign({},...e.variants.map(c=>{var u,r;let a,l;if(n){const f=o.find(y=>y.tag==="wght");if(f){const{start:y,end:v}=f;a=`${y} ${v}`}}return a||(a=((u=c.match(/\d+/))==null?void 0:u[0])??"400"),l=((r=c.match(/[a-zA-Z]+/))==null?void 0:r[0])==="italic"?"italic":void 0,{[c]:{source:e.files[c],descriptors:{style:l,weight:a}}}}));return R(t,{menuVariant:{source:s},variants:i})},W=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 b;const K=e=>{const t=[];for(const s of Object.keys(e)){let o=e[s];o&&(Array.isArray(o)?t.push(...o.map(n=>[s,n.toString()])):(o=o.toString(),t.push([s,o])))}return new URLSearchParams(t)},H=e=>{const{apiKey:t,searchParams:s}=e,o=(n={})=>{const i="https://www.googleapis.com/webfonts/v1/webfonts",c=K(n);return`${i}?${c}`};return{id:"google-fonts",types:["font"],label:({editor:n})=>n.I18n.t("googleFontsAssetProvider.providerLabel"),search:{reloadOnInput:!1},async onLoad(){var p;if(b)return b;const n={key:t,sort:"alpha",subset:"latin",capability:["WOFF2","VF"]},i=s==null?void 0:s(),c={...n,...i},l=await(await fetch(o(c))).json();return(p=l.items)!=null&&p.length?(b=l.items.map(W),b):[]},itemLayout:n=>{const i=b.find(a=>a.id===n.assetProps.id),c=V(i);return{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:c,fontSize:"24px",paddingLeft:"8px",paddingRight:"8px"}},{type:"text",content:i.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=d.startup;return j(function(e,t){const{i18n:s={}}=t,o=H(t);e.runCommand(g.assetProviderAdd,{provider:o}),e.I18n.addMessages({en:z,...s}),k({editor:e,licenseKey:t.licenseKey,plan:J,pluginName:q,cleanup:()=>{e.runCommand(g.assetProviderRemove,{id:o.id})}})})});
@@ -1,3 +1,3 @@
1
- "use strict";const k="app.grapesjs.com",D="app-stage.grapesjs.com",B="app2.grapesjs.com",H="app-stage2.grapesjs.com",O=[k,B,D,H,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io",".claudemcpcontent.com",".web-sandbox.oaiusercontent.com"],F="license:check:end",C=()=>typeof window<"u",W=({isDev:e,isStage:t,isPlatform:o})=>`${e?"":`https://${t?D:k}`}/${o?"platform-api":"api"}`,m=()=>{if(!C())return"";const{hostname:e}=window.location;if(e)return e;try{return window.parent.location.hostname||""}catch{return""}},K=()=>{const e=m();return!!e&&(O.includes(e)||O.some(t=>e.endsWith(t)))};async function V({path:e,baseApiUrl:t,method:o="GET",headers:r={},params:l,body:g}){const s=`${t||W({isDev:!1,isStage:!1})}${e}`,n={method:o,headers:{"Content-Type":"application/json",...r}};g&&(n.body=JSON.stringify(g));const c=l?new URLSearchParams(l).toString():"",p=c?`?${c}`:"",i=await fetch(`${s}${p}`,n);if(!i.ok)throw new Error(`HTTP error! status: ${i.status}`);return i.json()}var w=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(w||{}),_=(e=>(e.Info="info",e.Error="error",e.Success="success",e.Warning="warning",e))(_||{}),y=(e=>(e.toastAdd="studio:toastAdd",e.toastRemove="studio:toastRemove",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.dialogExportCode="studio:dialogExportCode",e.dialogImportCode="studio:dialogImportCode",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.clearPage="studio:clearPage",e.projectFiles="studio:projectFiles",e.validateCode="studio:validateCode",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.layoutComponentAdd="studio:layoutComponentAdd",e.layoutComponentGet="studio:layoutComponentGet",e.layoutComponentRemove="studio:layoutComponentRemove",e.layoutComponentRender="studio:layoutComponentRender",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.settings="studio:settings",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={[w.free]:0,[w.startup]:10,[w.business]:20,[w.enterprise]:30};function Y(e){const t=e;return t.init=o=>r=>e(r,o),t}const z=e=>Y(e);async function q({editor:e,plan:t,pluginName:o,licenseKey:r,onLicenseCheckResponse:l,cleanup:g}){let a="",s;const n=i=>{console.warn("Cleanup plugin:",o,"Reason:",i),g()},c=(i={})=>{var b;const{error:h,sdkLicense:u}=i,d=(b=i.plan)==null?void 0:b.category;if(!(u||i.license)||h)n(h||"Invalid license");else if(d){const f=x[t],v=x[d];f>v&&n({pluginRequiredPlan:t,licensePlan:d})}};e.Commands.has(y.settings)&&(s=e.runCommand(y.settings),a=(s==null?void 0:s.baseUrl)||"");const p=i=>{l==null||l(i),i&&c(i)};if(!s){e.onReady(async()=>{if(!K())if(r){const i=await X({licenseKey:r,pluginName:o,baseApiUrl:a});p(i)}else n("The `licenseKey` option not provided")});return}if(s.licensePlan||s.licenseError){const i=J(s);p(i);return}e.on(F,i=>p(i))}const J=e=>({sdkLicense:e.license,license:e.license,error:e.licenseError,plan:e.licensePlan});async function X(e){const{licenseKey:t,pluginName:o,baseApiUrl:r}=e;try{return(await V({baseApiUrl:r,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:o}})).result||{}}catch(l){return console.error("Error during SDK license check:",l),!1}}const Z=(e,t)=>{var o;return!!((o=e==null?void 0:e.hasAttribute)!=null&&o.call(e,t))},Q="iconifyComponent",S=w.startup,ee={ratioDefault:!0,tc:!1,cl:!1,cr:!1,bc:!1},T=`<svg viewBox="0 0 24 24">
1
+ "use strict";const k="app.grapesjs.com",D="app-stage.grapesjs.com",B="app2.grapesjs.com",H="app-stage2.grapesjs.com",O=[k,B,D,H,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io",".claudemcpcontent.com",".web-sandbox.oaiusercontent.com"],F="license:check:end",C=()=>typeof window<"u",W=({isDev:e,isStage:t,isPlatform:o})=>`${e?"":`https://${t?D:k}`}/${o?"platform-api":"api"}`,K=()=>{if(!C())return"";const{hostname:e}=window.location;if(e)return e;try{return window.parent.location.hostname||""}catch{return""}},V=()=>{const e=K();return!!e&&(O.includes(e)||O.some(t=>e.endsWith(t)))};async function m({path:e,baseApiUrl:t,method:o="GET",headers:i={},params:l,body:g}){const s=`${t||W({isDev:!1,isStage:!1})}${e}`,n={method:o,headers:{"Content-Type":"application/json",...i}};g&&(n.body=JSON.stringify(g));const c=l?new URLSearchParams(l).toString():"",p=c?`?${c}`:"",r=await fetch(`${s}${p}`,n);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}var w=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(w||{}),_=(e=>(e.Info="info",e.Error="error",e.Success="success",e.Warning="warning",e))(_||{}),y=(e=>(e.toastAdd="studio:toastAdd",e.toastRemove="studio:toastRemove",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.dialogExportCode="studio:dialogExportCode",e.dialogImportCode="studio:dialogImportCode",e.openEditCode="studio:openEditCode",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.clearPage="studio:clearPage",e.projectFiles="studio:projectFiles",e.validateCode="studio:validateCode",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.layoutComponentAdd="studio:layoutComponentAdd",e.layoutComponentGet="studio:layoutComponentGet",e.layoutComponentRemove="studio:layoutComponentRemove",e.layoutComponentRender="studio:layoutComponentRender",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.settings="studio:settings",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={[w.free]:0,[w.startup]:10,[w.business]:20,[w.enterprise]:30};function Y(e){const t=e;return t.init=o=>i=>e(i,o),t}const z=e=>Y(e);async function q({editor:e,plan:t,pluginName:o,licenseKey:i,onLicenseCheckResponse:l,cleanup:g}){let a="",s;const n=r=>{console.warn("Cleanup plugin:",o,"Reason:",r),g()},c=(r={})=>{var b;const{error:h,sdkLicense:u}=r,d=(b=r.plan)==null?void 0:b.category;if(!(u||r.license)||h)n(h||"Invalid license");else if(d){const f=x[t],v=x[d];f>v&&n({pluginRequiredPlan:t,licensePlan:d})}};e.Commands.has(y.settings)&&(s=e.runCommand(y.settings),a=(s==null?void 0:s.baseUrl)||"");const p=r=>{l==null||l(r),r&&c(r)};if(!s){e.onReady(async()=>{if(!V())if(i){const r=await X({licenseKey:i,pluginName:o,baseApiUrl:a});p(r)}else n("The `licenseKey` option not provided")});return}if(s.licensePlan||s.licenseError){const r=J(s);p(r);return}e.on(F,r=>p(r))}const J=e=>({sdkLicense:e.license,license:e.license,error:e.licenseError,plan:e.licensePlan});async function X(e){const{licenseKey:t,pluginName:o,baseApiUrl:i}=e;try{return(await m({baseApiUrl:i,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:o}})).result||{}}catch(l){return console.error("Error during SDK license check:",l),!1}}const Z=(e,t)=>{var o;return!!((o=e==null?void 0:e.hasAttribute)!=null&&o.call(e,t))},Q="iconifyComponent",S=w.startup,ee={ratioDefault:!0,tc:!1,cl:!1,cr:!1,bc:!1},E=`<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",te="icons-layout-",G="icons-list-layout",M="gs-iconify-picker",A="__iconify_collection",oe="https://api.iconify.design",E=new Map;let L;const ne=({collectionId:e})=>`https://cdn.jsdelivr.net/npm/@iconify-json/${e}@latest/icons.json`;async function N({collectionId:e,editor:t}){try{if(E.has(e))return E.get(e);const o=await fetch(ne({collectionId:e}));if(!o.ok)throw new Error(`Failed to fetch collection: ${o.statusText}`);const r=await o.json();return E.set(e,r),r}catch(o){console.error("Error fetching collection",o),t.runCommand(y.toastAdd,le());return}}async function se({collectionIds:e,editor:t}){try{if(L)return L;const o=e?`?prefixes=${e.join(",")}`:"",r=await fetch(`${oe}/collections${o}`);if(!r.ok)throw new Error(`Failed to fetch collections: ${r.statusText}`);return L=await r.json(),L}catch(o){console.error("Error fetching collections",o),t.runCommand(y.toastAdd,j());return}}function R(){return{type:"button",label:"Open Icon Picker",name:"onActive",changeProp:!0,command(e){var t;(t=e.getSelected())==null||t.trigger("active")}}}async function re({collectionIds:e,editor:t,component:o}){const r=await se({collectionIds:e,editor:t});if(!r)return;const l=({icon:n,collectionId:c,iconId:p})=>{o.components(n),o.set({collectionId:c,iconId:p})},g=Object.entries(r).map(([n,c])=>({id:n,...c})).sort((n,c)=>n.name.localeCompare(c.name)),a=o.get("collectionId")??g[0].id;t.runCommand(y.layoutToggle,{id:$,placer:{type:"dialog",size:"l",title:"Select Icon"},header:!1,layout:{type:"column",style:{height:500,gap:10},children:[ce({collectionsList:g,collectionId:a,editor:t,handleClick:l}),{id:G,type:"column",grow:!0}]}});const s=await N({collectionId:a,editor:t});s&&(U({editor:t,collection:s}),P({editor:t,collection:s,handleClick:l,collectionId:a}))}function U({editor:e,collection:t}){e.em.set(A,t)}function ie(e){return e.em.get(A)}function P(e){const{editor:t}=e;t.runCommand(y.layoutUpdate,{id:te,layout:ae(e),header:!1,style:{height:"100%"},placer:{type:"static",layoutId:G}})}function ce(e){const{collectionsList:t,collectionId:o,editor:r,handleClick:l}=e,g=t.map(({id:a,name:s,total:n})=>({id:a,label:`${s} (${n})`})).sort((a,s)=>a.label.localeCompare(s.label));return{type:"column",style:{gap:10},className:`${M}__header`,children:[{type:"selectField",value:o,options:g,emptyState:"Select an icon collection",onChange:async({setState:a,value:s})=>{const n=await N({collectionId:s,editor:r});n&&(a({value:s}),U({editor:r,collection:n}),P({editor:r,collection:n,handleClick:l,collectionId:s}))}},{type:"inputField",value:"",placeholder:"Search icons inside collection...",editorEvents:{[`change:${A}`]:({setState:a})=>a({value:""})},onInput:({setState:a,value:s,editor:n})=>{const c=ie(n);if(!c)return;const p=Object.fromEntries(Object.entries(c.icons).filter(([i])=>i.includes(s)));a({value:s}),P({editor:n,collection:c,handleClick:l,collectionId:o,collectionFiltered:{...c,icons:p}})}}]}}function ae({collection:e,collectionFiltered:t,handleClick:o}){const{height:r=24,width:l=24,icons:g,prefix:a}=t||e,s=Object.entries(g).map(([n,c])=>({name:n,...c}),{});return{type:"column",className:`${M}__content`,style:{height:"100%"},children:{type:"virtualList",items:s,itemLayout:({item:n})=>({type:"custom",render:c=>{const{editor:p,addEl:i,removeEl:h}=c,u=document.createElementNS("http://www.w3.org/2000/svg","svg");u.setAttribute("xmlns","http://www.w3.org/2000/svg"),u.innerHTML=n.body;const d=n.width||l,I=n.height||r;u.setAttribute("viewBox",`0 0 ${d} ${I}`),u.style.cssText="width: 48px; height: 48px; cursor: pointer; border-radius: 4px; transition: padding 0.1s ease-in-out;";const b=[["click",()=>{const f=u.cloneNode(!0);f.removeAttribute("style");const v=f.outerHTML;o({icon:v,collectionId:a,iconId:n.name}),p==null||p.runCommand(y.layoutRemove,{id:$})}],["pointerover",()=>{u.style.border="2px solid currentColor",u.style.padding="4px"}],["pointerout",()=>{u.style.border="",u.style.padding=""}]];return b.forEach(([f,v])=>u.addEventListener(f,v)),i(u),()=>{b.forEach(([f,v])=>u.removeEventListener(f,v)),h(u)}}})}}}function j(){return{id:"toast-error-getCollections",header:"Error",content:"Error fetching collections",variant:_.Error}}function le(){return{...j(),id:"toast-error-getCollection",content:"Error fetching collection"}}const ue=function(e,t={}){var u;const{Components:o,Blocks:r}=e,{collections:l,extendIconComponent:g=!0,licenseKey:a,block:s={}}=t,n="icon",c="iconify",p="Iconify",i="data-type-iconify",h={events:()=>({dblclick:"onActive"}),onActive(){re({collectionIds:l,editor:e,component:this.model})}};if(o.addType(c,{block:s&&{label:p,media:T,content:{type:c},category:"Extra",activate:!0,...s},isComponent:d=>Z(d,i),model:{defaults:{name:p,icon:T,droppable:!1,attributes:{[i]:!0},resizable:ee,components:T,style:{width:"50px",height:"50px"},traits:[R()]},init(){this.listenTo(this.components(),"change add",this.disableLayers),this.disableLayers()},disableLayers(){this.components().forEach(d=>d.set({layerable:!1,locked:!0}))}},view:h}),g){const d=(u=o.getType(n))==null?void 0:u.model,[I,b,...f]=d.getDefaults().traits;o.addType(n,{model:{defaults:{traits:[I,b,R(),...f]}},view:h})}q({editor:e,licenseKey:a,plan:S,pluginName:Q,cleanup:()=>{r.remove(c),o.removeType(c)}})},pe=z(ue);module.exports=pe;
3
+ </svg>`,$="layout-icon-picker",te="icons-layout-",G="icons-list-layout",M="gs-iconify-picker",A="__iconify_collection",oe="https://api.iconify.design",T=new Map;let L;const ne=({collectionId:e})=>`https://cdn.jsdelivr.net/npm/@iconify-json/${e}@latest/icons.json`;async function N({collectionId:e,editor:t}){try{if(T.has(e))return T.get(e);const o=await fetch(ne({collectionId:e}));if(!o.ok)throw new Error(`Failed to fetch collection: ${o.statusText}`);const i=await o.json();return T.set(e,i),i}catch(o){console.error("Error fetching collection",o),t.runCommand(y.toastAdd,le());return}}async function se({collectionIds:e,editor:t}){try{if(L)return L;const o=e?`?prefixes=${e.join(",")}`:"",i=await fetch(`${oe}/collections${o}`);if(!i.ok)throw new Error(`Failed to fetch collections: ${i.statusText}`);return L=await i.json(),L}catch(o){console.error("Error fetching collections",o),t.runCommand(y.toastAdd,j());return}}function R(){return{type:"button",label:"Open Icon Picker",name:"onActive",changeProp:!0,command(e){var t;(t=e.getSelected())==null||t.trigger("active")}}}async function ie({collectionIds:e,editor:t,component:o}){const i=await se({collectionIds:e,editor:t});if(!i)return;const l=({icon:n,collectionId:c,iconId:p})=>{o.components(n),o.set({collectionId:c,iconId:p})},g=Object.entries(i).map(([n,c])=>({id:n,...c})).sort((n,c)=>n.name.localeCompare(c.name)),a=o.get("collectionId")??g[0].id;t.runCommand(y.layoutToggle,{id:$,placer:{type:"dialog",size:"l",title:"Select Icon"},header:!1,layout:{type:"column",style:{height:500,gap:10},children:[ce({collectionsList:g,collectionId:a,editor:t,handleClick:l}),{id:G,type:"column",grow:!0}]}});const s=await N({collectionId:a,editor:t});s&&(U({editor:t,collection:s}),P({editor:t,collection:s,handleClick:l,collectionId:a}))}function U({editor:e,collection:t}){e.em.set(A,t)}function re(e){return e.em.get(A)}function P(e){const{editor:t}=e;t.runCommand(y.layoutUpdate,{id:te,layout:ae(e),header:!1,style:{height:"100%"},placer:{type:"static",layoutId:G}})}function ce(e){const{collectionsList:t,collectionId:o,editor:i,handleClick:l}=e,g=t.map(({id:a,name:s,total:n})=>({id:a,label:`${s} (${n})`})).sort((a,s)=>a.label.localeCompare(s.label));return{type:"column",style:{gap:10},className:`${M}__header`,children:[{type:"selectField",value:o,options:g,emptyState:"Select an icon collection",onChange:async({setState:a,value:s})=>{const n=await N({collectionId:s,editor:i});n&&(a({value:s}),U({editor:i,collection:n}),P({editor:i,collection:n,handleClick:l,collectionId:s}))}},{type:"inputField",value:"",placeholder:"Search icons inside collection...",editorEvents:{[`change:${A}`]:({setState:a})=>a({value:""})},onInput:({setState:a,value:s,editor:n})=>{const c=re(n);if(!c)return;const p=Object.fromEntries(Object.entries(c.icons).filter(([r])=>r.includes(s)));a({value:s}),P({editor:n,collection:c,handleClick:l,collectionId:o,collectionFiltered:{...c,icons:p}})}}]}}function ae({collection:e,collectionFiltered:t,handleClick:o}){const{height:i=24,width:l=24,icons:g,prefix:a}=t||e,s=Object.entries(g).map(([n,c])=>({name:n,...c}),{});return{type:"column",className:`${M}__content`,style:{height:"100%"},children:{type:"virtualList",items:s,itemLayout:({item:n})=>({type:"custom",render:c=>{const{editor:p,addEl:r,removeEl:h}=c,u=document.createElementNS("http://www.w3.org/2000/svg","svg");u.setAttribute("xmlns","http://www.w3.org/2000/svg"),u.innerHTML=n.body;const d=n.width||l,I=n.height||i;u.setAttribute("viewBox",`0 0 ${d} ${I}`),u.style.cssText="width: 48px; height: 48px; cursor: pointer; border-radius: 4px; transition: padding 0.1s ease-in-out;";const b=[["click",()=>{const f=u.cloneNode(!0);f.removeAttribute("style");const v=f.outerHTML;o({icon:v,collectionId:a,iconId:n.name}),p==null||p.runCommand(y.layoutRemove,{id:$})}],["pointerover",()=>{u.style.border="2px solid currentColor",u.style.padding="4px"}],["pointerout",()=>{u.style.border="",u.style.padding=""}]];return b.forEach(([f,v])=>u.addEventListener(f,v)),r(u),()=>{b.forEach(([f,v])=>u.removeEventListener(f,v)),h(u)}}})}}}function j(){return{id:"toast-error-getCollections",header:"Error",content:"Error fetching collections",variant:_.Error}}function le(){return{...j(),id:"toast-error-getCollection",content:"Error fetching collection"}}const ue=function(e,t={}){var u;const{Components:o,Blocks:i}=e,{collections:l,extendIconComponent:g=!0,licenseKey:a,block:s={}}=t,n="icon",c="iconify",p="Iconify",r="data-type-iconify",h={events:()=>({dblclick:"onActive"}),onActive(){ie({collectionIds:l,editor:e,component:this.model})}};if(o.addType(c,{block:s&&{label:p,media:E,content:{type:c},category:"Extra",activate:!0,...s},isComponent:d=>Z(d,r),model:{defaults:{name:p,icon:E,droppable:!1,attributes:{[r]:!0},resizable:ee,components:E,style:{width:"50px",height:"50px"},traits:[R()]},init(){this.listenTo(this.components(),"change add",this.disableLayers),this.disableLayers()},disableLayers(){this.components().forEach(d=>d.set({layerable:!1,locked:!0}))}},view:h}),g){const d=(u=o.getType(n))==null?void 0:u.model,[I,b,...f]=d.getDefaults().traits;o.addType(n,{model:{defaults:{traits:[I,b,R(),...f]}},view:h})}q({editor:e,licenseKey:a,plan:S,pluginName:Q,cleanup:()=>{i.remove(c),o.removeType(c)}})},pe=z(ue);module.exports=pe;
@@ -19,7 +19,7 @@ const k = "app.grapesjs.com", D = "app-stage.grapesjs.com", B = "app2.grapesjs.c
19
19
  isDev: e,
20
20
  isStage: t,
21
21
  isPlatform: o
22
- }) => `${e ? "" : `https://${t ? D : k}`}/${o ? "platform-api" : "api"}`, m = () => {
22
+ }) => `${e ? "" : `https://${t ? D : k}`}/${o ? "platform-api" : "api"}`, K = () => {
23
23
  if (!C()) return "";
24
24
  const { hostname: e } = window.location;
25
25
  if (e) return e;
@@ -28,15 +28,15 @@ const k = "app.grapesjs.com", D = "app-stage.grapesjs.com", B = "app2.grapesjs.c
28
28
  } catch {
29
29
  return "";
30
30
  }
31
- }, K = () => {
32
- const e = m();
31
+ }, V = () => {
32
+ const e = K();
33
33
  return !!e && (O.includes(e) || O.some((t) => e.endsWith(t)));
34
34
  };
35
- async function V({
35
+ async function m({
36
36
  path: e,
37
37
  baseApiUrl: t,
38
38
  method: o = "GET",
39
- headers: r = {},
39
+ headers: i = {},
40
40
  params: l,
41
41
  body: g
42
42
  }) {
@@ -44,16 +44,16 @@ async function V({
44
44
  method: o,
45
45
  headers: {
46
46
  "Content-Type": "application/json",
47
- ...r
47
+ ...i
48
48
  }
49
49
  };
50
50
  g && (n.body = JSON.stringify(g));
51
- const c = l ? new URLSearchParams(l).toString() : "", p = c ? `?${c}` : "", i = await fetch(`${s}${p}`, n);
52
- if (!i.ok)
53
- throw new Error(`HTTP error! status: ${i.status}`);
54
- return i.json();
51
+ const c = l ? new URLSearchParams(l).toString() : "", p = c ? `?${c}` : "", r = await fetch(`${s}${p}`, n);
52
+ if (!r.ok)
53
+ throw new Error(`HTTP error! status: ${r.status}`);
54
+ return r.json();
55
55
  }
56
- var w = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(w || {}), _ = /* @__PURE__ */ ((e) => (e.Info = "info", e.Error = "error", e.Success = "success", e.Warning = "warning", e))(_ || {}), y = /* @__PURE__ */ ((e) => (e.toastAdd = "studio:toastAdd", e.toastRemove = "studio:toastRemove", e.dialogOpen = "studio:dialogOpen", e.dialogClose = "studio:dialogClose", e.dialogExportCode = "studio:dialogExportCode", e.dialogImportCode = "studio:dialogImportCode", 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.clearPage = "studio:clearPage", e.projectFiles = "studio:projectFiles", e.validateCode = "studio:validateCode", 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.layoutComponentAdd = "studio:layoutComponentAdd", e.layoutComponentGet = "studio:layoutComponentGet", e.layoutComponentRemove = "studio:layoutComponentRemove", e.layoutComponentRender = "studio:layoutComponentRender", e.getStateTheme = "studio:getStateTheme", e.setStateTheme = "studio:setStateTheme", e.settings = "studio:settings", 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 || {});
56
+ var w = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(w || {}), _ = /* @__PURE__ */ ((e) => (e.Info = "info", e.Error = "error", e.Success = "success", e.Warning = "warning", e))(_ || {}), y = /* @__PURE__ */ ((e) => (e.toastAdd = "studio:toastAdd", e.toastRemove = "studio:toastRemove", e.dialogOpen = "studio:dialogOpen", e.dialogClose = "studio:dialogClose", e.dialogExportCode = "studio:dialogExportCode", e.dialogImportCode = "studio:dialogImportCode", e.openEditCode = "studio:openEditCode", 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.clearPage = "studio:clearPage", e.projectFiles = "studio:projectFiles", e.validateCode = "studio:validateCode", 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.layoutComponentAdd = "studio:layoutComponentAdd", e.layoutComponentGet = "studio:layoutComponentGet", e.layoutComponentRemove = "studio:layoutComponentRemove", e.layoutComponentRender = "studio:layoutComponentRender", e.getStateTheme = "studio:getStateTheme", e.setStateTheme = "studio:setStateTheme", e.settings = "studio:settings", 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 || {});
57
57
  const x = {
58
58
  [w.free]: 0,
59
59
  [w.startup]: 10,
@@ -62,24 +62,24 @@ const x = {
62
62
  };
63
63
  function Y(e) {
64
64
  const t = e;
65
- return t.init = (o) => (r) => e(r, o), t;
65
+ return t.init = (o) => (i) => e(i, o), t;
66
66
  }
67
67
  const z = (e) => /* @__PURE__ */ Y(e);
68
68
  async function q({
69
69
  editor: e,
70
70
  plan: t,
71
71
  pluginName: o,
72
- licenseKey: r,
72
+ licenseKey: i,
73
73
  onLicenseCheckResponse: l,
74
74
  cleanup: g
75
75
  }) {
76
76
  let a = "", s;
77
- const n = (i) => {
78
- console.warn("Cleanup plugin:", o, "Reason:", i), g();
79
- }, c = (i = {}) => {
77
+ const n = (r) => {
78
+ console.warn("Cleanup plugin:", o, "Reason:", r), g();
79
+ }, c = (r = {}) => {
80
80
  var b;
81
- const { error: h, sdkLicense: u } = i, d = (b = i.plan) == null ? void 0 : b.category;
82
- if (!(u || i.license) || h)
81
+ const { error: h, sdkLicense: u } = r, d = (b = r.plan) == null ? void 0 : b.category;
82
+ if (!(u || r.license) || h)
83
83
  n(h || "Invalid license");
84
84
  else if (d) {
85
85
  const f = x[t], v = x[d];
@@ -87,26 +87,26 @@ async function q({
87
87
  }
88
88
  };
89
89
  e.Commands.has(y.settings) && (s = e.runCommand(y.settings), a = (s == null ? void 0 : s.baseUrl) || "");
90
- const p = (i) => {
91
- l == null || l(i), i && c(i);
90
+ const p = (r) => {
91
+ l == null || l(r), r && c(r);
92
92
  };
93
93
  if (!s) {
94
94
  e.onReady(async () => {
95
- if (!K())
96
- if (r) {
97
- const i = await X({ licenseKey: r, pluginName: o, baseApiUrl: a });
98
- p(i);
95
+ if (!V())
96
+ if (i) {
97
+ const r = await X({ licenseKey: i, pluginName: o, baseApiUrl: a });
98
+ p(r);
99
99
  } else
100
100
  n("The `licenseKey` option not provided");
101
101
  });
102
102
  return;
103
103
  }
104
104
  if (s.licensePlan || s.licenseError) {
105
- const i = J(s);
106
- p(i);
105
+ const r = J(s);
106
+ p(r);
107
107
  return;
108
108
  }
109
- e.on(F, (i) => p(i));
109
+ e.on(F, (r) => p(r));
110
110
  }
111
111
  const J = (e) => ({
112
112
  sdkLicense: e.license,
@@ -115,10 +115,10 @@ const J = (e) => ({
115
115
  plan: e.licensePlan
116
116
  });
117
117
  async function X(e) {
118
- const { licenseKey: t, pluginName: o, baseApiUrl: r } = e;
118
+ const { licenseKey: t, pluginName: o, baseApiUrl: i } = e;
119
119
  try {
120
- return (await V({
121
- baseApiUrl: r,
120
+ return (await m({
121
+ baseApiUrl: i,
122
122
  path: `/sdk/${t || "na"}`,
123
123
  method: "POST",
124
124
  params: {
@@ -133,18 +133,18 @@ async function X(e) {
133
133
  const Z = (e, t) => {
134
134
  var o;
135
135
  return !!((o = e == null ? void 0 : e.hasAttribute) != null && o.call(e, t));
136
- }, Q = "iconifyComponent", S = w.startup, ee = { ratioDefault: !0, tc: !1, cl: !1, cr: !1, bc: !1 }, T = `<svg viewBox="0 0 24 24">
136
+ }, Q = "iconifyComponent", S = w.startup, ee = { ratioDefault: !0, tc: !1, cl: !1, cr: !1, bc: !1 }, E = `<svg viewBox="0 0 24 24">
137
137
  <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" />
138
- </svg>`, $ = "layout-icon-picker", te = "icons-layout-", G = "icons-list-layout", M = "gs-iconify-picker", A = "__iconify_collection", oe = "https://api.iconify.design", E = /* @__PURE__ */ new Map();
138
+ </svg>`, $ = "layout-icon-picker", te = "icons-layout-", G = "icons-list-layout", M = "gs-iconify-picker", A = "__iconify_collection", oe = "https://api.iconify.design", T = /* @__PURE__ */ new Map();
139
139
  let L;
140
140
  const ne = ({ collectionId: e }) => `https://cdn.jsdelivr.net/npm/@iconify-json/${e}@latest/icons.json`;
141
141
  async function N({ collectionId: e, editor: t }) {
142
142
  try {
143
- if (E.has(e)) return E.get(e);
143
+ if (T.has(e)) return T.get(e);
144
144
  const o = await fetch(ne({ collectionId: e }));
145
145
  if (!o.ok) throw new Error(`Failed to fetch collection: ${o.statusText}`);
146
- const r = await o.json();
147
- return E.set(e, r), r;
146
+ const i = await o.json();
147
+ return T.set(e, i), i;
148
148
  } catch (o) {
149
149
  console.error("Error fetching collection", o), t.runCommand(y.toastAdd, le());
150
150
  return;
@@ -153,9 +153,9 @@ async function N({ collectionId: e, editor: t }) {
153
153
  async function se({ collectionIds: e, editor: t }) {
154
154
  try {
155
155
  if (L) return L;
156
- const o = e ? `?prefixes=${e.join(",")}` : "", r = await fetch(`${oe}/collections${o}`);
157
- if (!r.ok) throw new Error(`Failed to fetch collections: ${r.statusText}`);
158
- return L = await r.json(), L;
156
+ const o = e ? `?prefixes=${e.join(",")}` : "", i = await fetch(`${oe}/collections${o}`);
157
+ if (!i.ok) throw new Error(`Failed to fetch collections: ${i.statusText}`);
158
+ return L = await i.json(), L;
159
159
  } catch (o) {
160
160
  console.error("Error fetching collections", o), t.runCommand(y.toastAdd, j());
161
161
  return;
@@ -173,12 +173,12 @@ function R() {
173
173
  }
174
174
  };
175
175
  }
176
- async function re({ collectionIds: e, editor: t, component: o }) {
177
- const r = await se({ collectionIds: e, editor: t });
178
- if (!r) return;
176
+ async function ie({ collectionIds: e, editor: t, component: o }) {
177
+ const i = await se({ collectionIds: e, editor: t });
178
+ if (!i) return;
179
179
  const l = ({ icon: n, collectionId: c, iconId: p }) => {
180
180
  o.components(n), o.set({ collectionId: c, iconId: p });
181
- }, g = Object.entries(r).map(([n, c]) => ({ id: n, ...c })).sort((n, c) => n.name.localeCompare(c.name)), a = o.get("collectionId") ?? g[0].id;
181
+ }, g = Object.entries(i).map(([n, c]) => ({ id: n, ...c })).sort((n, c) => n.name.localeCompare(c.name)), a = o.get("collectionId") ?? g[0].id;
182
182
  t.runCommand(y.layoutToggle, {
183
183
  id: $,
184
184
  placer: { type: "dialog", size: "l", title: "Select Icon" },
@@ -208,7 +208,7 @@ async function re({ collectionIds: e, editor: t, component: o }) {
208
208
  function U({ editor: e, collection: t }) {
209
209
  e.em.set(A, t);
210
210
  }
211
- function ie(e) {
211
+ function re(e) {
212
212
  return e.em.get(A);
213
213
  }
214
214
  function P(e) {
@@ -222,7 +222,7 @@ function P(e) {
222
222
  });
223
223
  }
224
224
  function ce(e) {
225
- const { collectionsList: t, collectionId: o, editor: r, handleClick: l } = e, g = t.map(({ id: a, name: s, total: n }) => ({ id: a, label: `${s} (${n})` })).sort((a, s) => a.label.localeCompare(s.label));
225
+ const { collectionsList: t, collectionId: o, editor: i, handleClick: l } = e, g = t.map(({ id: a, name: s, total: n }) => ({ id: a, label: `${s} (${n})` })).sort((a, s) => a.label.localeCompare(s.label));
226
226
  return {
227
227
  type: "column",
228
228
  style: { gap: 10 },
@@ -234,9 +234,9 @@ function ce(e) {
234
234
  options: g,
235
235
  emptyState: "Select an icon collection",
236
236
  onChange: async ({ setState: a, value: s }) => {
237
- const n = await N({ collectionId: s, editor: r });
238
- n && (a({ value: s }), U({ editor: r, collection: n }), P({
239
- editor: r,
237
+ const n = await N({ collectionId: s, editor: i });
238
+ n && (a({ value: s }), U({ editor: i, collection: n }), P({
239
+ editor: i,
240
240
  collection: n,
241
241
  handleClick: l,
242
242
  collectionId: s
@@ -251,10 +251,10 @@ function ce(e) {
251
251
  [`change:${A}`]: ({ setState: a }) => a({ value: "" })
252
252
  },
253
253
  onInput: ({ setState: a, value: s, editor: n }) => {
254
- const c = ie(n);
254
+ const c = re(n);
255
255
  if (!c) return;
256
256
  const p = Object.fromEntries(
257
- Object.entries(c.icons).filter(([i]) => i.includes(s))
257
+ Object.entries(c.icons).filter(([r]) => r.includes(s))
258
258
  );
259
259
  a({ value: s }), P({
260
260
  editor: n,
@@ -273,7 +273,7 @@ function ae({
273
273
  collectionFiltered: t,
274
274
  handleClick: o
275
275
  }) {
276
- const { height: r = 24, width: l = 24, icons: g, prefix: a } = t || e, s = Object.entries(g).map(([n, c]) => ({ name: n, ...c }), {});
276
+ const { height: i = 24, width: l = 24, icons: g, prefix: a } = t || e, s = Object.entries(g).map(([n, c]) => ({ name: n, ...c }), {});
277
277
  return {
278
278
  type: "column",
279
279
  className: `${M}__content`,
@@ -284,9 +284,9 @@ function ae({
284
284
  itemLayout: ({ item: n }) => ({
285
285
  type: "custom",
286
286
  render: (c) => {
287
- const { editor: p, addEl: i, removeEl: h } = c, u = document.createElementNS("http://www.w3.org/2000/svg", "svg");
287
+ const { editor: p, addEl: r, removeEl: h } = c, u = document.createElementNS("http://www.w3.org/2000/svg", "svg");
288
288
  u.setAttribute("xmlns", "http://www.w3.org/2000/svg"), u.innerHTML = n.body;
289
- const d = n.width || l, I = n.height || r;
289
+ const d = n.width || l, I = n.height || i;
290
290
  u.setAttribute("viewBox", `0 0 ${d} ${I}`), u.style.cssText = "width: 48px; height: 48px; cursor: pointer; border-radius: 4px; transition: padding 0.1s ease-in-out;";
291
291
  const b = [
292
292
  [
@@ -311,7 +311,7 @@ function ae({
311
311
  }
312
312
  ]
313
313
  ];
314
- return b.forEach(([f, v]) => u.addEventListener(f, v)), i(u), () => {
314
+ return b.forEach(([f, v]) => u.addEventListener(f, v)), r(u), () => {
315
315
  b.forEach(([f, v]) => u.removeEventListener(f, v)), h(u);
316
316
  };
317
317
  }
@@ -336,32 +336,32 @@ function le() {
336
336
  }
337
337
  const ue = function(e, t = {}) {
338
338
  var u;
339
- const { Components: o, Blocks: r } = e, { collections: l, extendIconComponent: g = !0, licenseKey: a, block: s = {} } = t, n = "icon", c = "iconify", p = "Iconify", i = "data-type-iconify", h = {
339
+ const { Components: o, Blocks: i } = e, { collections: l, extendIconComponent: g = !0, licenseKey: a, block: s = {} } = t, n = "icon", c = "iconify", p = "Iconify", r = "data-type-iconify", h = {
340
340
  events: () => ({
341
341
  dblclick: "onActive"
342
342
  }),
343
343
  onActive() {
344
- re({ collectionIds: l, editor: e, component: this.model });
344
+ ie({ collectionIds: l, editor: e, component: this.model });
345
345
  }
346
346
  };
347
347
  if (o.addType(c, {
348
348
  block: s && {
349
349
  label: p,
350
- media: T,
350
+ media: E,
351
351
  content: { type: c },
352
352
  category: "Extra",
353
353
  activate: !0,
354
354
  ...s
355
355
  },
356
- isComponent: (d) => Z(d, i),
356
+ isComponent: (d) => Z(d, r),
357
357
  model: {
358
358
  defaults: {
359
359
  name: p,
360
- icon: T,
360
+ icon: E,
361
361
  droppable: !1,
362
- attributes: { [i]: !0 },
362
+ attributes: { [r]: !0 },
363
363
  resizable: ee,
364
- components: T,
364
+ components: E,
365
365
  style: { width: "50px", height: "50px" },
366
366
  traits: [R()]
367
367
  },
@@ -390,7 +390,7 @@ const ue = function(e, t = {}) {
390
390
  plan: S,
391
391
  pluginName: Q,
392
392
  cleanup: () => {
393
- r.remove(c), o.removeType(c);
393
+ i.remove(c), o.removeType(c);
394
394
  }
395
395
  });
396
396
  }, pe = z(ue);
@@ -1,3 +1,3 @@
1
- (function(w,I){typeof exports=="object"&&typeof module<"u"?module.exports=I():typeof define=="function"&&define.amd?define(I):(w=typeof globalThis<"u"?globalThis:w||self,w.StudioSdkPlugins_iconifyComponent=I())})(this,function(){"use strict";const w="app.grapesjs.com",I="app-stage.grapesjs.com",D=[w,"app2.grapesjs.com",I,"app-stage2.grapesjs.com","localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io",".claudemcpcontent.com",".web-sandbox.oaiusercontent.com"],B="license:check:end",H=()=>typeof window<"u",F=({isDev:e,isStage:t,isPlatform:o})=>`${e?"":`https://${t?I:w}`}/${o?"platform-api":"api"}`,C=()=>{if(!H())return"";const{hostname:e}=window.location;if(e)return e;try{return window.parent.location.hostname||""}catch{return""}},m=()=>{const e=C();return!!e&&(D.includes(e)||D.some(t=>e.endsWith(t)))};async function W({path:e,baseApiUrl:t,method:o="GET",headers:i={},params:l,body:g}){const s=`${t||F({isDev:!1,isStage:!1})}${e}`,n={method:o,headers:{"Content-Type":"application/json",...i}};g&&(n.body=JSON.stringify(g));const c=l?new URLSearchParams(l).toString():"",p=c?`?${c}`:"",r=await fetch(`${s}${p}`,n);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}var T=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(T||{}),R=(e=>(e.Info="info",e.Error="error",e.Success="success",e.Warning="warning",e))(R||{}),y=(e=>(e.toastAdd="studio:toastAdd",e.toastRemove="studio:toastRemove",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.dialogExportCode="studio:dialogExportCode",e.dialogImportCode="studio:dialogImportCode",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.clearPage="studio:clearPage",e.projectFiles="studio:projectFiles",e.validateCode="studio:validateCode",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.layoutComponentAdd="studio:layoutComponentAdd",e.layoutComponentGet="studio:layoutComponentGet",e.layoutComponentRemove="studio:layoutComponentRemove",e.layoutComponentRender="studio:layoutComponentRender",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.settings="studio:settings",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 _={[T.free]:0,[T.startup]:10,[T.business]:20,[T.enterprise]:30};function K(e){const t=e;return t.init=o=>i=>e(i,o),t}const V=e=>K(e);async function Y({editor:e,plan:t,pluginName:o,licenseKey:i,onLicenseCheckResponse:l,cleanup:g}){let a="",s;const n=r=>{console.warn("Cleanup plugin:",o,"Reason:",r),g()},c=(r={})=>{var b;const{error:h,sdkLicense:u}=r,d=(b=r.plan)==null?void 0:b.category;if(!(u||r.license)||h)n(h||"Invalid license");else if(d){const f=_[t],v=_[d];f>v&&n({pluginRequiredPlan:t,licensePlan:d})}};e.Commands.has(y.settings)&&(s=e.runCommand(y.settings),a=(s==null?void 0:s.baseUrl)||"");const p=r=>{l==null||l(r),r&&c(r)};if(!s){e.onReady(async()=>{if(!m())if(i){const r=await q({licenseKey:i,pluginName:o,baseApiUrl:a});p(r)}else n("The `licenseKey` option not provided")});return}if(s.licensePlan||s.licenseError){const r=z(s);p(r);return}e.on(B,r=>p(r))}const z=e=>({sdkLicense:e.license,license:e.license,error:e.licenseError,plan:e.licensePlan});async function q(e){const{licenseKey:t,pluginName:o,baseApiUrl:i}=e;try{return(await W({baseApiUrl:i,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:o}})).result||{}}catch(l){return console.error("Error during SDK license check:",l),!1}}const J=(e,t)=>{var o;return!!((o=e==null?void 0:e.hasAttribute)!=null&&o.call(e,t))},X="iconifyComponent",Z=T.startup,Q={ratioDefault:!0,tc:!1,cl:!1,cr:!1,bc:!1},P=`<svg viewBox="0 0 24 24">
1
+ (function(w,I){typeof exports=="object"&&typeof module<"u"?module.exports=I():typeof define=="function"&&define.amd?define(I):(w=typeof globalThis<"u"?globalThis:w||self,w.StudioSdkPlugins_iconifyComponent=I())})(this,function(){"use strict";const w="app.grapesjs.com",I="app-stage.grapesjs.com",D=[w,"app2.grapesjs.com",I,"app-stage2.grapesjs.com","localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io",".claudemcpcontent.com",".web-sandbox.oaiusercontent.com"],B="license:check:end",H=()=>typeof window<"u",C=({isDev:e,isStage:t,isPlatform:o})=>`${e?"":`https://${t?I:w}`}/${o?"platform-api":"api"}`,F=()=>{if(!H())return"";const{hostname:e}=window.location;if(e)return e;try{return window.parent.location.hostname||""}catch{return""}},W=()=>{const e=F();return!!e&&(D.includes(e)||D.some(t=>e.endsWith(t)))};async function m({path:e,baseApiUrl:t,method:o="GET",headers:i={},params:l,body:d}){const s=`${t||C({isDev:!1,isStage:!1})}${e}`,n={method:o,headers:{"Content-Type":"application/json",...i}};d&&(n.body=JSON.stringify(d));const c=l?new URLSearchParams(l).toString():"",p=c?`?${c}`:"",r=await fetch(`${s}${p}`,n);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}var T=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(T||{}),R=(e=>(e.Info="info",e.Error="error",e.Success="success",e.Warning="warning",e))(R||{}),y=(e=>(e.toastAdd="studio:toastAdd",e.toastRemove="studio:toastRemove",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.dialogExportCode="studio:dialogExportCode",e.dialogImportCode="studio:dialogImportCode",e.openEditCode="studio:openEditCode",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.clearPage="studio:clearPage",e.projectFiles="studio:projectFiles",e.validateCode="studio:validateCode",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.layoutComponentAdd="studio:layoutComponentAdd",e.layoutComponentGet="studio:layoutComponentGet",e.layoutComponentRemove="studio:layoutComponentRemove",e.layoutComponentRender="studio:layoutComponentRender",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.settings="studio:settings",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 _={[T.free]:0,[T.startup]:10,[T.business]:20,[T.enterprise]:30};function K(e){const t=e;return t.init=o=>i=>e(i,o),t}const V=e=>K(e);async function Y({editor:e,plan:t,pluginName:o,licenseKey:i,onLicenseCheckResponse:l,cleanup:d}){let a="",s;const n=r=>{console.warn("Cleanup plugin:",o,"Reason:",r),d()},c=(r={})=>{var b;const{error:h,sdkLicense:u}=r,g=(b=r.plan)==null?void 0:b.category;if(!(u||r.license)||h)n(h||"Invalid license");else if(g){const f=_[t],v=_[g];f>v&&n({pluginRequiredPlan:t,licensePlan:g})}};e.Commands.has(y.settings)&&(s=e.runCommand(y.settings),a=(s==null?void 0:s.baseUrl)||"");const p=r=>{l==null||l(r),r&&c(r)};if(!s){e.onReady(async()=>{if(!W())if(i){const r=await q({licenseKey:i,pluginName:o,baseApiUrl:a});p(r)}else n("The `licenseKey` option not provided")});return}if(s.licensePlan||s.licenseError){const r=z(s);p(r);return}e.on(B,r=>p(r))}const z=e=>({sdkLicense:e.license,license:e.license,error:e.licenseError,plan:e.licensePlan});async function q(e){const{licenseKey:t,pluginName:o,baseApiUrl:i}=e;try{return(await m({baseApiUrl:i,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:o}})).result||{}}catch(l){return console.error("Error during SDK license check:",l),!1}}const J=(e,t)=>{var o;return!!((o=e==null?void 0:e.hasAttribute)!=null&&o.call(e,t))},X="iconifyComponent",Z=T.startup,Q={ratioDefault:!0,tc:!1,cl:!1,cr:!1,bc:!1},P=`<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>`,k="layout-icon-picker",S="icons-layout-",M="icons-list-layout",$="gs-iconify-picker",A="__iconify_collection",ee="https://api.iconify.design",O=new Map;let L;const te=({collectionId:e})=>`https://cdn.jsdelivr.net/npm/@iconify-json/${e}@latest/icons.json`;async function G({collectionId:e,editor:t}){try{if(O.has(e))return O.get(e);const o=await fetch(te({collectionId:e}));if(!o.ok)throw new Error(`Failed to fetch collection: ${o.statusText}`);const i=await o.json();return O.set(e,i),i}catch(o){console.error("Error fetching collection",o),t.runCommand(y.toastAdd,ce());return}}async function oe({collectionIds:e,editor:t}){try{if(L)return L;const o=e?`?prefixes=${e.join(",")}`:"",i=await fetch(`${ee}/collections${o}`);if(!i.ok)throw new Error(`Failed to fetch collections: ${i.statusText}`);return L=await i.json(),L}catch(o){console.error("Error fetching collections",o),t.runCommand(y.toastAdd,j());return}}function N(){return{type:"button",label:"Open Icon Picker",name:"onActive",changeProp:!0,command(e){var t;(t=e.getSelected())==null||t.trigger("active")}}}async function ne({collectionIds:e,editor:t,component:o}){const i=await oe({collectionIds:e,editor:t});if(!i)return;const l=({icon:n,collectionId:c,iconId:p})=>{o.components(n),o.set({collectionId:c,iconId:p})},g=Object.entries(i).map(([n,c])=>({id:n,...c})).sort((n,c)=>n.name.localeCompare(c.name)),a=o.get("collectionId")??g[0].id;t.runCommand(y.layoutToggle,{id:k,placer:{type:"dialog",size:"l",title:"Select Icon"},header:!1,layout:{type:"column",style:{height:500,gap:10},children:[ie({collectionsList:g,collectionId:a,editor:t,handleClick:l}),{id:M,type:"column",grow:!0}]}});const s=await G({collectionId:a,editor:t});s&&(U({editor:t,collection:s}),x({editor:t,collection:s,handleClick:l,collectionId:a}))}function U({editor:e,collection:t}){e.em.set(A,t)}function se(e){return e.em.get(A)}function x(e){const{editor:t}=e;t.runCommand(y.layoutUpdate,{id:S,layout:re(e),header:!1,style:{height:"100%"},placer:{type:"static",layoutId:M}})}function ie(e){const{collectionsList:t,collectionId:o,editor:i,handleClick:l}=e,g=t.map(({id:a,name:s,total:n})=>({id:a,label:`${s} (${n})`})).sort((a,s)=>a.label.localeCompare(s.label));return{type:"column",style:{gap:10},className:`${$}__header`,children:[{type:"selectField",value:o,options:g,emptyState:"Select an icon collection",onChange:async({setState:a,value:s})=>{const n=await G({collectionId:s,editor:i});n&&(a({value:s}),U({editor:i,collection:n}),x({editor:i,collection:n,handleClick:l,collectionId:s}))}},{type:"inputField",value:"",placeholder:"Search icons inside collection...",editorEvents:{[`change:${A}`]:({setState:a})=>a({value:""})},onInput:({setState:a,value:s,editor:n})=>{const c=se(n);if(!c)return;const p=Object.fromEntries(Object.entries(c.icons).filter(([r])=>r.includes(s)));a({value:s}),x({editor:n,collection:c,handleClick:l,collectionId:o,collectionFiltered:{...c,icons:p}})}}]}}function re({collection:e,collectionFiltered:t,handleClick:o}){const{height:i=24,width:l=24,icons:g,prefix:a}=t||e,s=Object.entries(g).map(([n,c])=>({name:n,...c}),{});return{type:"column",className:`${$}__content`,style:{height:"100%"},children:{type:"virtualList",items:s,itemLayout:({item:n})=>({type:"custom",render:c=>{const{editor:p,addEl:r,removeEl:h}=c,u=document.createElementNS("http://www.w3.org/2000/svg","svg");u.setAttribute("xmlns","http://www.w3.org/2000/svg"),u.innerHTML=n.body;const d=n.width||l,E=n.height||i;u.setAttribute("viewBox",`0 0 ${d} ${E}`),u.style.cssText="width: 48px; height: 48px; cursor: pointer; border-radius: 4px; transition: padding 0.1s ease-in-out;";const b=[["click",()=>{const f=u.cloneNode(!0);f.removeAttribute("style");const v=f.outerHTML;o({icon:v,collectionId:a,iconId:n.name}),p==null||p.runCommand(y.layoutRemove,{id:k})}],["pointerover",()=>{u.style.border="2px solid currentColor",u.style.padding="4px"}],["pointerout",()=>{u.style.border="",u.style.padding=""}]];return b.forEach(([f,v])=>u.addEventListener(f,v)),r(u),()=>{b.forEach(([f,v])=>u.removeEventListener(f,v)),h(u)}}})}}}function j(){return{id:"toast-error-getCollections",header:"Error",content:"Error fetching collections",variant:R.Error}}function ce(){return{...j(),id:"toast-error-getCollection",content:"Error fetching collection"}}return V(function(e,t={}){var u;const{Components:o,Blocks:i}=e,{collections:l,extendIconComponent:g=!0,licenseKey:a,block:s={}}=t,n="icon",c="iconify",p="Iconify",r="data-type-iconify",h={events:()=>({dblclick:"onActive"}),onActive(){ne({collectionIds:l,editor:e,component:this.model})}};if(o.addType(c,{block:s&&{label:p,media:P,content:{type:c},category:"Extra",activate:!0,...s},isComponent:d=>J(d,r),model:{defaults:{name:p,icon:P,droppable:!1,attributes:{[r]:!0},resizable:Q,components:P,style:{width:"50px",height:"50px"},traits:[N()]},init(){this.listenTo(this.components(),"change add",this.disableLayers),this.disableLayers()},disableLayers(){this.components().forEach(d=>d.set({layerable:!1,locked:!0}))}},view:h}),g){const d=(u=o.getType(n))==null?void 0:u.model,[E,b,...f]=d.getDefaults().traits;o.addType(n,{model:{defaults:{traits:[E,b,N(),...f]}},view:h})}Y({editor:e,licenseKey:a,plan:Z,pluginName:X,cleanup:()=>{i.remove(c),o.removeType(c)}})})});
3
+ </svg>`,k="layout-icon-picker",S="icons-layout-",M="icons-list-layout",$="gs-iconify-picker",A="__iconify_collection",ee="https://api.iconify.design",O=new Map;let E;const te=({collectionId:e})=>`https://cdn.jsdelivr.net/npm/@iconify-json/${e}@latest/icons.json`;async function G({collectionId:e,editor:t}){try{if(O.has(e))return O.get(e);const o=await fetch(te({collectionId:e}));if(!o.ok)throw new Error(`Failed to fetch collection: ${o.statusText}`);const i=await o.json();return O.set(e,i),i}catch(o){console.error("Error fetching collection",o),t.runCommand(y.toastAdd,ce());return}}async function oe({collectionIds:e,editor:t}){try{if(E)return E;const o=e?`?prefixes=${e.join(",")}`:"",i=await fetch(`${ee}/collections${o}`);if(!i.ok)throw new Error(`Failed to fetch collections: ${i.statusText}`);return E=await i.json(),E}catch(o){console.error("Error fetching collections",o),t.runCommand(y.toastAdd,j());return}}function N(){return{type:"button",label:"Open Icon Picker",name:"onActive",changeProp:!0,command(e){var t;(t=e.getSelected())==null||t.trigger("active")}}}async function ne({collectionIds:e,editor:t,component:o}){const i=await oe({collectionIds:e,editor:t});if(!i)return;const l=({icon:n,collectionId:c,iconId:p})=>{o.components(n),o.set({collectionId:c,iconId:p})},d=Object.entries(i).map(([n,c])=>({id:n,...c})).sort((n,c)=>n.name.localeCompare(c.name)),a=o.get("collectionId")??d[0].id;t.runCommand(y.layoutToggle,{id:k,placer:{type:"dialog",size:"l",title:"Select Icon"},header:!1,layout:{type:"column",style:{height:500,gap:10},children:[ie({collectionsList:d,collectionId:a,editor:t,handleClick:l}),{id:M,type:"column",grow:!0}]}});const s=await G({collectionId:a,editor:t});s&&(U({editor:t,collection:s}),x({editor:t,collection:s,handleClick:l,collectionId:a}))}function U({editor:e,collection:t}){e.em.set(A,t)}function se(e){return e.em.get(A)}function x(e){const{editor:t}=e;t.runCommand(y.layoutUpdate,{id:S,layout:re(e),header:!1,style:{height:"100%"},placer:{type:"static",layoutId:M}})}function ie(e){const{collectionsList:t,collectionId:o,editor:i,handleClick:l}=e,d=t.map(({id:a,name:s,total:n})=>({id:a,label:`${s} (${n})`})).sort((a,s)=>a.label.localeCompare(s.label));return{type:"column",style:{gap:10},className:`${$}__header`,children:[{type:"selectField",value:o,options:d,emptyState:"Select an icon collection",onChange:async({setState:a,value:s})=>{const n=await G({collectionId:s,editor:i});n&&(a({value:s}),U({editor:i,collection:n}),x({editor:i,collection:n,handleClick:l,collectionId:s}))}},{type:"inputField",value:"",placeholder:"Search icons inside collection...",editorEvents:{[`change:${A}`]:({setState:a})=>a({value:""})},onInput:({setState:a,value:s,editor:n})=>{const c=se(n);if(!c)return;const p=Object.fromEntries(Object.entries(c.icons).filter(([r])=>r.includes(s)));a({value:s}),x({editor:n,collection:c,handleClick:l,collectionId:o,collectionFiltered:{...c,icons:p}})}}]}}function re({collection:e,collectionFiltered:t,handleClick:o}){const{height:i=24,width:l=24,icons:d,prefix:a}=t||e,s=Object.entries(d).map(([n,c])=>({name:n,...c}),{});return{type:"column",className:`${$}__content`,style:{height:"100%"},children:{type:"virtualList",items:s,itemLayout:({item:n})=>({type:"custom",render:c=>{const{editor:p,addEl:r,removeEl:h}=c,u=document.createElementNS("http://www.w3.org/2000/svg","svg");u.setAttribute("xmlns","http://www.w3.org/2000/svg"),u.innerHTML=n.body;const g=n.width||l,L=n.height||i;u.setAttribute("viewBox",`0 0 ${g} ${L}`),u.style.cssText="width: 48px; height: 48px; cursor: pointer; border-radius: 4px; transition: padding 0.1s ease-in-out;";const b=[["click",()=>{const f=u.cloneNode(!0);f.removeAttribute("style");const v=f.outerHTML;o({icon:v,collectionId:a,iconId:n.name}),p==null||p.runCommand(y.layoutRemove,{id:k})}],["pointerover",()=>{u.style.border="2px solid currentColor",u.style.padding="4px"}],["pointerout",()=>{u.style.border="",u.style.padding=""}]];return b.forEach(([f,v])=>u.addEventListener(f,v)),r(u),()=>{b.forEach(([f,v])=>u.removeEventListener(f,v)),h(u)}}})}}}function j(){return{id:"toast-error-getCollections",header:"Error",content:"Error fetching collections",variant:R.Error}}function ce(){return{...j(),id:"toast-error-getCollection",content:"Error fetching collection"}}return V(function(e,t={}){var u;const{Components:o,Blocks:i}=e,{collections:l,extendIconComponent:d=!0,licenseKey:a,block:s={}}=t,n="icon",c="iconify",p="Iconify",r="data-type-iconify",h={events:()=>({dblclick:"onActive"}),onActive(){ne({collectionIds:l,editor:e,component:this.model})}};if(o.addType(c,{block:s&&{label:p,media:P,content:{type:c},category:"Extra",activate:!0,...s},isComponent:g=>J(g,r),model:{defaults:{name:p,icon:P,droppable:!1,attributes:{[r]:!0},resizable:Q,components:P,style:{width:"50px",height:"50px"},traits:[N()]},init(){this.listenTo(this.components(),"change add",this.disableLayers),this.disableLayers()},disableLayers(){this.components().forEach(g=>g.set({layerable:!1,locked:!0}))}},view:h}),d){const g=(u=o.getType(n))==null?void 0:u.model,[L,b,...f]=g.getDefaults().traits;o.addType(n,{model:{defaults:{traits:[L,b,N(),...f]}},view:h})}Y({editor:e,licenseKey:a,plan:Z,pluginName:X,cleanup:()=>{i.remove(c),o.removeType(c)}})})});