@grapesjs/studio-sdk-plugins 1.0.21 → 1.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/animationComponent/components/Animation.d.ts +6 -0
  2. package/dist/animationComponent/components/AnimationGroup.d.ts +4 -0
  3. package/dist/animationComponent/index.cjs.d.ts +3 -0
  4. package/dist/animationComponent/index.cjs.js +507 -0
  5. package/dist/animationComponent/index.d.ts +3 -0
  6. package/dist/animationComponent/index.es.d.ts +3 -0
  7. package/dist/animationComponent/index.es.js +1111 -0
  8. package/dist/animationComponent/index.umd.js +507 -0
  9. package/dist/animationComponent/shared.d.ts +3 -0
  10. package/dist/animationComponent/types.d.ts +28 -0
  11. package/dist/animationComponent/typesSchema.d.ts +48 -0
  12. package/dist/animationComponent/utils.d.ts +19 -0
  13. package/dist/dataSourceEjs/EjsExporter.d.ts +13 -0
  14. package/dist/dataSourceEjs/EjsImporter.d.ts +29 -0
  15. package/dist/dataSourceEjs/index.cjs.d.ts +2 -2
  16. package/dist/dataSourceEjs/index.cjs.js +24 -3
  17. package/dist/dataSourceEjs/index.d.ts +2 -2
  18. package/dist/dataSourceEjs/index.es.d.ts +2 -2
  19. package/dist/dataSourceEjs/index.es.js +697 -114
  20. package/dist/dataSourceEjs/index.umd.js +24 -3
  21. package/dist/dataSourceEjs/shared.d.ts +3 -0
  22. package/dist/dataSourceEjs/types.d.ts +2 -2
  23. package/dist/dataSourceEjs/typesSchema.d.ts +3 -0
  24. package/dist/dataSourceHandlebars/HandlebarsExporter.d.ts +16 -0
  25. package/dist/dataSourceHandlebars/HandlebarsImporter.d.ts +20 -0
  26. package/dist/dataSourceHandlebars/helperImplementations.d.ts +1 -0
  27. package/dist/dataSourceHandlebars/index.cjs.js +20 -1
  28. package/dist/dataSourceHandlebars/index.es.js +401 -99
  29. package/dist/dataSourceHandlebars/index.umd.js +20 -1
  30. package/dist/dataSourceHandlebars/shared.d.ts +3 -0
  31. package/dist/dataSourceHandlebars/types.d.ts +2 -2
  32. package/dist/dataSourceHandlebars/typesSchema.d.ts +3 -0
  33. package/dist/googleFontsAssetProvider/index.cjs.js +1 -1
  34. package/dist/googleFontsAssetProvider/index.es.js +29 -29
  35. package/dist/googleFontsAssetProvider/index.umd.js +1 -1
  36. package/dist/iconifyComponent/index.cjs.js +2 -2
  37. package/dist/iconifyComponent/index.es.js +64 -64
  38. package/dist/iconifyComponent/index.umd.js +2 -2
  39. package/dist/index.cjs.d.ts +1 -0
  40. package/dist/index.cjs.js +587 -51
  41. package/dist/index.d.ts +1 -0
  42. package/dist/index.es.d.ts +1 -0
  43. package/dist/index.es.js +4809 -3046
  44. package/dist/index.umd.js +584 -48
  45. package/dist/layoutSidebarButtons/index.cjs.js +1 -1
  46. package/dist/layoutSidebarButtons/index.es.js +59 -59
  47. package/dist/layoutSidebarButtons/index.umd.js +1 -1
  48. package/dist/presetPrintable/index.cjs.js +3 -3
  49. package/dist/presetPrintable/index.es.js +136 -131
  50. package/dist/presetPrintable/index.umd.js +4 -4
  51. package/dist/prosemirror/index.cjs.js +1 -1
  52. package/dist/prosemirror/index.es.js +1 -1
  53. package/dist/prosemirror/index.umd.js +1 -1
  54. package/dist/rteTinyMce/index.cjs.js +2 -2
  55. package/dist/rteTinyMce/index.es.js +67 -67
  56. package/dist/rteTinyMce/index.umd.js +2 -2
  57. package/dist/tableComponent/index.cjs.js +1 -1
  58. package/dist/tableComponent/index.es.js +14 -14
  59. package/dist/tableComponent/index.umd.js +1 -1
  60. package/dist/utilsDataSources.d.ts +28 -0
  61. package/dist/youtubeAssetProvider/index.cjs.js +1 -1
  62. package/dist/youtubeAssetProvider/index.es.js +26 -26
  63. package/dist/youtubeAssetProvider/index.umd.js +1 -1
  64. package/package.json +2 -1
  65. package/dist/dataSourceEjs/EjsStrategy.d.ts +0 -15
  66. package/dist/dataSourceHandlebars/HandlebarsStrategy.d.ts +0 -17
@@ -14,7 +14,7 @@ function re(e, t, o) {
14
14
  l && (a = e.apply(s, n), s = n = null, clearTimeout(l), l = null);
15
15
  }, d;
16
16
  }
17
- const F = "app.grapesjs.com", O = "app-stage.grapesjs.com", L = [
17
+ const F = "app.grapesjs.com", O = "app-stage.grapesjs.com", T = [
18
18
  F,
19
19
  O,
20
20
  "localhost",
@@ -27,7 +27,7 @@ const F = "app.grapesjs.com", O = "app-stage.grapesjs.com", L = [
27
27
  // For Sandpack demos
28
28
  ], ie = "license:check:start", he = "license:check:end", de = () => typeof window < "u", ve = ({ isDev: e, isStage: t }) => `${e ? "" : `https://${t ? O : F}`}/api`, ue = () => {
29
29
  const e = de() && window.location.hostname;
30
- return !!e && (L.includes(e) || L.some((t) => e.endsWith(t)));
30
+ return !!e && (T.includes(e) || T.some((t) => e.endsWith(t)));
31
31
  };
32
32
  function U(e) {
33
33
  return typeof e == "function";
@@ -53,8 +53,8 @@ async function be({
53
53
  throw new Error(`HTTP error! status: ${u.status}`);
54
54
  return u.json();
55
55
  }
56
- var y = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(y || {}), $ = /* @__PURE__ */ ((e) => (e.toastAdd = "studio:toastAdd", e.dialogOpen = "studio:dialogOpen", e.dialogClose = "studio:dialogClose", e.sidebarLeftSet = "studio:sidebarLeft:set", e.sidebarLeftGet = "studio:sidebarLeft:get", e.sidebarLeftToggle = "studio:sidebarLeft:toggle", e.sidebarRightSet = "studio:sidebarRight:set", e.sidebarRightGet = "studio:sidebarRight:get", e.sidebarRightToggle = "studio:sidebarRight:toggle", e.sidebarTopSet = "studio:sidebarTop:set", e.sidebarTopGet = "studio:sidebarTop:get", e.sidebarTopToggle = "studio:sidebarTop:toggle", e.sidebarBottomSet = "studio:sidebarBottom:set", e.sidebarBottomGet = "studio:sidebarBottom:get", e.sidebarBottomToggle = "studio:sidebarBottom:toggle", e.symbolAdd = "studio:symbolAdd", e.symbolDetach = "studio:symbolDetach", e.symbolOverride = "studio:symbolOverride", e.symbolPropagateStyles = "studio:propagateStyles", e.getPagesConfig = "studio:getPagesConfig", e.setPagesConfig = "studio:setPagesConfig", e.getPageSettings = "studio:getPageSettings", e.setPageSettings = "studio:setPageSettings", e.projectFiles = "studio:projectFiles", e.canvasReload = "studio:canvasReload", e.getBlocksPanel = "studio:getBlocksPanel", e.setBlocksPanel = "studio:setBlocksPanel", e.getStateContextMenu = "studio:getStateContextMenu", e.setStateContextMenu = "studio:setStateContextMenu", e.contextMenuComponent = "studio:contextMenuComponent", e.layoutAdd = "studio:layoutAdd", e.layoutRemove = "studio:layoutRemove", e.layoutToggle = "studio:layoutToggle", e.layoutUpdate = "studio:layoutUpdate", e.layoutGet = "studio:layoutGet", e.layoutConfigGet = "studio:layoutConfigGet", e.layoutConfigSet = "studio:layoutConfigSet", e.getStateTheme = "studio:getStateTheme", e.setStateTheme = "studio:setStateTheme", e.assetProviderGet = "studio:assetProviderGet", e.assetProviderAdd = "studio:assetProviderAdd", e.assetProviderRemove = "studio:assetProviderRemove", e.fontGet = "studio:fontGet", e.fontAdd = "studio:fontAdd", e.fontRemove = "studio:fontRemove", e.fontManagerOpen = "studio:fontManagerOpen", e.menuFontLoad = "studio:menuFontLoad", e.toggleStateDataSource = "studio:toggleStateDataSource", e.getStateDataSource = "studio:getStateDataSource", e.setDragAbsolute = "studio:setDragAbsolute", e))($ || {});
57
- const S = {
56
+ var y = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(y || {}), $ = /* @__PURE__ */ ((e) => (e.toastAdd = "studio:toastAdd", e.dialogOpen = "studio:dialogOpen", e.dialogClose = "studio:dialogClose", e.sidebarLeftSet = "studio:sidebarLeft:set", e.sidebarLeftGet = "studio:sidebarLeft:get", e.sidebarLeftToggle = "studio:sidebarLeft:toggle", e.sidebarRightSet = "studio:sidebarRight:set", e.sidebarRightGet = "studio:sidebarRight:get", e.sidebarRightToggle = "studio:sidebarRight:toggle", e.sidebarTopSet = "studio:sidebarTop:set", e.sidebarTopGet = "studio:sidebarTop:get", e.sidebarTopToggle = "studio:sidebarTop:toggle", e.sidebarBottomSet = "studio:sidebarBottom:set", e.sidebarBottomGet = "studio:sidebarBottom:get", e.sidebarBottomToggle = "studio:sidebarBottom:toggle", e.symbolAdd = "studio:symbolAdd", e.symbolDetach = "studio:symbolDetach", e.symbolOverride = "studio:symbolOverride", e.symbolPropagateStyles = "studio:propagateStyles", e.getPagesConfig = "studio:getPagesConfig", e.setPagesConfig = "studio:setPagesConfig", e.getPageSettings = "studio:getPageSettings", e.setPageSettings = "studio:setPageSettings", e.projectFiles = "studio:projectFiles", e.canvasReload = "studio:canvasReload", e.getBlocksPanel = "studio:getBlocksPanel", e.setBlocksPanel = "studio:setBlocksPanel", e.getStateContextMenu = "studio:getStateContextMenu", e.setStateContextMenu = "studio:setStateContextMenu", e.contextMenuComponent = "studio:contextMenuComponent", e.layoutAdd = "studio:layoutAdd", e.layoutRemove = "studio:layoutRemove", e.layoutToggle = "studio:layoutToggle", e.layoutUpdate = "studio:layoutUpdate", e.layoutGet = "studio:layoutGet", e.layoutConfigGet = "studio:layoutConfigGet", e.layoutConfigSet = "studio:layoutConfigSet", e.getStateTheme = "studio:getStateTheme", e.setStateTheme = "studio:setStateTheme", e.assetProviderGet = "studio:assetProviderGet", e.assetProviderAdd = "studio:assetProviderAdd", e.assetProviderRemove = "studio:assetProviderRemove", e.fontGet = "studio:fontGet", e.fontAdd = "studio:fontAdd", e.fontRemove = "studio:fontRemove", e.fontManagerOpen = "studio:fontManagerOpen", e.menuFontLoad = "studio:menuFontLoad", e.toggleStateDataSource = "studio:toggleStateDataSource", e.getStateDataSource = "studio:getStateDataSource", e.dataSourceSetGlobalData = "studio:dataSourceSetGlobalData", e.dataSourceSetImporter = "studio:dataSourceSetImporter", e.dataSourceSetExporter = "studio:dataSourceSetExporter", e.setDragAbsolute = "studio:setDragAbsolute", e))($ || {});
57
+ const L = {
58
58
  [y.free]: 0,
59
59
  [y.startup]: 10,
60
60
  [y.business]: 20,
@@ -81,7 +81,7 @@ async function fe({
81
81
  if (!(f || d.license) || u)
82
82
  c(u || "Invalid license");
83
83
  else if (w) {
84
- const V = S[t], z = S[w];
84
+ const V = L[t], z = L[w];
85
85
  V > z && c({ pluginRequiredPlan: t, licensePlan: w });
86
86
  }
87
87
  };
@@ -401,7 +401,7 @@ const v = {
401
401
  }
402
402
  ]
403
403
  }, ...q(e)];
404
- }, T = (e) => {
404
+ }, S = (e) => {
405
405
  const t = e.attributes.attributes || {}, o = parseInt(`${t.rowspan || 1}`, 10), l = parseInt(`${t.colspan || 1}`, 10);
406
406
  return { rowspan: o, colspan: l };
407
407
  };
@@ -409,7 +409,7 @@ function se(e) {
409
409
  const t = [];
410
410
  return e.components().forEach((o, l) => {
411
411
  o.components().each((n, s) => {
412
- const { rowspan: r, colspan: a } = T(n);
412
+ const { rowspan: r, colspan: a } = S(n);
413
413
  if (t[l])
414
414
  for (; t[l][s]; )
415
415
  s++;
@@ -458,7 +458,7 @@ function ne(e) {
458
458
  for (let o = 0; o < e[t].length; o++) {
459
459
  const n = e[t][o].cell;
460
460
  if (n.em.selected.hasComponent(n)) {
461
- const { rowspan: s, colspan: r } = T(n);
461
+ const { rowspan: s, colspan: r } = S(n);
462
462
  if (r > 1 || s > 1) {
463
463
  n.addAttributes({ colspan: 1, rowspan: 1 });
464
464
  for (let a = 0; a < r - 1; a++) {
@@ -494,7 +494,7 @@ const B = (e, t = {}) => {
494
494
  endPos: s
495
495
  };
496
496
  };
497
- function Te(e, t = {}) {
497
+ function Se(e, t = {}) {
498
498
  const o = B(e), { startPos: l, endPos: n } = o;
499
499
  let { grid: s } = o;
500
500
  const { em: r } = e;
@@ -520,14 +520,14 @@ function Te(e, t = {}) {
520
520
  }), r.setSelected(P), Me(e);
521
521
  }
522
522
  }
523
- const ae = "Cell settings", De = "Merge cells", Le = "Split cell", Se = (e) => e.closestType(g), H = (e) => {
523
+ const ae = "Cell settings", De = "Merge cells", Te = "Split cell", Le = (e) => e.closestType(g), H = (e) => {
524
524
  var t;
525
- return (t = Se(e)) == null ? void 0 : t.parent();
525
+ return (t = Le(e)) == null ? void 0 : t.parent();
526
526
  }, Ee = (e) => {
527
527
  const t = e.editor.getSelectedAll(), o = H(t[0]), l = t[0];
528
528
  if (!o || !(l != null && l.is(b)) || t.length > 1)
529
529
  return !1;
530
- const { rowspan: n, colspan: s } = T(l);
530
+ const { rowspan: n, colspan: s } = S(l);
531
531
  return !(s < 2 && n < 2);
532
532
  }, Ge = (e) => {
533
533
  const o = e.editor.getSelectedAll()[0], l = H(o), { grid: n } = B(l);
@@ -549,7 +549,7 @@ const ae = "Cell settings", De = "Merge cells", Le = "Split cell", Se = (e) => e
549
549
  const { editor: t } = e;
550
550
  if (!ce(e)) return;
551
551
  const o = t.getSelectedAll(), l = H(o[0]);
552
- Te(l, { mergeContent: !0 });
552
+ Se(l, { mergeContent: !0 });
553
553
  }, Ne = (e) => {
554
554
  M(e, {
555
555
  id: "tableCellSettings",
@@ -579,7 +579,7 @@ const ae = "Cell settings", De = "Merge cells", Le = "Split cell", Se = (e) => e
579
579
  },
580
580
  {
581
581
  id: i.tableCellSplit,
582
- label: Le,
582
+ label: Te,
583
583
  icon: v[i.tableCellSplit],
584
584
  onClick: () => Ge(e),
585
585
  disabled: !Ee(e)
@@ -1 +1 @@
1
- (function(V,w){typeof exports=="object"&&typeof module<"u"?module.exports=w():typeof define=="function"&&define.amd?define(w):(V=typeof globalThis<"u"?globalThis:V||self,V.StudioSdkPlugins_tableComponent=w())})(this,function(){"use strict";function V(e,t,o){let l,s,n,r,a;const c=t;function h(){const u=Date.now()-r;u<c&&u>=0?l=setTimeout(h,c-u):(l=null,a=e.apply(n,s),n=s=null)}const d=function(){return n=this,s=arguments,r=Date.now(),l||(l=setTimeout(h,c)),a};return d.clear=function(){l&&(clearTimeout(l),l=null)},d.flush=function(){l&&(a=e.apply(n,s),n=s=null,clearTimeout(l),l=null)},d}const w="app.grapesjs.com",L="app-stage.grapesjs.com",E=[w,L,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],ie="license:check:start",he="license:check:end",de=()=>typeof window<"u",ve=({isDev:e,isStage:t})=>`${e?"":`https://${t?L:w}`}/api`,ue=()=>{const e=de()&&window.location.hostname;return!!e&&(E.includes(e)||E.some(t=>e.endsWith(t)))};function G(e){return typeof e=="function"}async function be({path:e,baseApiUrl:t,method:o="GET",headers:l={},params:s,body:n}){const a=`${t||ve({isDev:!1,isStage:!1})}${e}`,c={method:o,headers:{"Content-Type":"application/json",...l}};n&&(c.body=JSON.stringify(n));const h=s?new URLSearchParams(s).toString():"",d=h?`?${h}`:"",u=await fetch(`${a}${d}`,c);if(!u.ok)throw new Error(`HTTP error! status: ${u.status}`);return u.json()}var y=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(y||{}),Z=(e=>(e.toastAdd="studio:toastAdd",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.sidebarLeftSet="studio:sidebarLeft:set",e.sidebarLeftGet="studio:sidebarLeft:get",e.sidebarLeftToggle="studio:sidebarLeft:toggle",e.sidebarRightSet="studio:sidebarRight:set",e.sidebarRightGet="studio:sidebarRight:get",e.sidebarRightToggle="studio:sidebarRight:toggle",e.sidebarTopSet="studio:sidebarTop:set",e.sidebarTopGet="studio:sidebarTop:get",e.sidebarTopToggle="studio:sidebarTop:toggle",e.sidebarBottomSet="studio:sidebarBottom:set",e.sidebarBottomGet="studio:sidebarBottom:get",e.sidebarBottomToggle="studio:sidebarBottom:toggle",e.symbolAdd="studio:symbolAdd",e.symbolDetach="studio:symbolDetach",e.symbolOverride="studio:symbolOverride",e.symbolPropagateStyles="studio:propagateStyles",e.getPagesConfig="studio:getPagesConfig",e.setPagesConfig="studio:setPagesConfig",e.getPageSettings="studio:getPageSettings",e.setPageSettings="studio:setPageSettings",e.projectFiles="studio:projectFiles",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.getStateContextMenu="studio:getStateContextMenu",e.setStateContextMenu="studio:setStateContextMenu",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e.layoutUpdate="studio:layoutUpdate",e.layoutGet="studio:layoutGet",e.layoutConfigGet="studio:layoutConfigGet",e.layoutConfigSet="studio:layoutConfigSet",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.setDragAbsolute="studio:setDragAbsolute",e))(Z||{});const N={[y.free]:0,[y.startup]:10,[y.business]:20,[y.enterprise]:30};function ge(e){const t=e;return t.init=o=>l=>e(l,o),t}const pe=e=>ge(e);async function fe({editor:e,plan:t,pluginName:o,licenseKey:l,cleanup:s}){let n="",r=!1;const a=ue(),c=d=>{console.warn("Cleanup plugin:",o,"Reason:",d),s()},h=(d={})=>{var m;const{error:u,sdkLicense:f}=d,P=(m=d.plan)==null?void 0:m.category;if(!(f||d.license)||u)c(u||"Invalid license");else if(P){const A=N[t],k=N[P];A>k&&c({pluginRequiredPlan:t,licensePlan:P})}};e.on(ie,d=>{n=d==null?void 0:d.baseApiUrl,r=!0}),e.on(he,d=>{h(d)}),setTimeout(async()=>{if(!r){if(a)return;if(l){const d=await me({licenseKey:l,pluginName:o,baseApiUrl:n});d&&h(d)}else c("The `licenseKey` option not provided")}},2e3)}async function me(e){const{licenseKey:t,pluginName:o,baseApiUrl:l}=e;try{return(await be({baseApiUrl:l,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:o}})).result||{}}catch(s){return console.error("Error during SDK license check:",s),!1}}const we="tableComponent",ye=y.startup;var i=(e=>(e.table="table",e.tableSettings="tableSettings",e.tableDelete="tableDelete",e.tableHead="tableHead",e.tableFoot="tableFoot",e.tableCellItems="tableCellItems",e.tableCellProperties="tableCellProperties",e.tableCellMerge="tableCellMerge",e.tableCellSplit="tableCellSplit",e.tableRowItems="tableRowItems",e.tableRowInsertBefore="tableRowInsertBefore",e.tableRowInsertAfter="tableRowInsertAfter",e.tableRowDelete="tableRowDelete",e.tableRowProperties="tableRowProperties",e.tableRowCut="tableRowCut",e.tableRowCopy="tableRowCopy",e.tableRowPasteBefore="tableRowPasteBefore",e.tableRowPasteAfter="tableRowPasteAfter",e.tableColumn="tableColumn",e.tableColumnItems="tableColumnItems",e.tableColumnInsertBefore="tableColumnInsertBefore",e.tableColumnInsertAfter="tableColumnInsertAfter",e.tableColumnDelete="tableColumnDelete",e.tableColumnCut="tableColumnCut",e.tableColumnCopy="tableColumnCopy",e.tableColumnPasteBefore="tableColumnPasteBefore",e.tableColumnPasteAfter="tableColumnPasteAfter",e))(i||{});const v={table:'<svg viewBox="0 0 24 24"><path d="M5 4h14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2m0 4v4h6V8H5m8 0v4h6V8h-6m-8 6v4h6v-4H5m8 0v4h6v-4h-6Z"/></svg>',tableSettings:'<svg viewBox="0 0 24 24"><path d="M5 4h14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2m0 4v4h6V8H5m8 0v4h6V8h-6m-8 6v4h6v-4H5m8 0v4h6v-4h-6Z"/></svg>',tableDelete:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zM5 6v12h14V6H5z"/><path d="m14.4 8.6 1 1-2.3 2.4 2.3 2.4-1 1-2.4-2.3-2.4 2.3-1-1 2.3-2.4-2.3-2.4 1-1 2.4 2.3z"/></svg>',tableHead:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-8 11H5v3h6v-3Zm8 0h-6v3h6v-3Zm0-5h-6v3h6v-3ZM5 13h6v-3H5v3Z"/></svg>',tableFoot:'<svg viewBox="0 0 24 24" data-test="1" style="transform: rotate(180deg);"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-8 11H5v3h6v-3Zm8 0h-6v3h6v-3Zm0-5h-6v3h6v-3ZM5 13h6v-3H5v3Z"/></svg>',tableColumn:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm0 9h-4v5h4v-5Zm-6 0H9v5h4v-5Zm0-7H9v5h4V6Zm6 0h-4v5h4V6Z"/></svg>',tableCellItems:"",tableCellProperties:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6l2-2h14zm-8 9H5v5h6v-5zm8 0h-6v5h6v-5zm-8-7H5v5h6V6z"/></svg>',tableCellMerge:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6l2-2h14zM5 16v2h3v-2H5zm14-5h-9v7h9v-7zm0-5h-4v3h4V6zM8 6H5v3h3V6zm5 0h-3v3h3V6zm-8 8h3v-3H5v3z"/></svg>',tableCellSplit:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zM8 15.5H5V18h3v-2.5zm11-5h-9V18h9v-7.5zm-2.5 1 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2-2-2 1-1 2 2 2-2zm-8.5-1H5v3h3v-3zM19 6h-4v2.5h4V6zM8 6H5v2.5h3V6zm5 0h-3v2.5h3V6z"/></svg>',tableRowItems:"",tableRowInsertBefore:'<svg viewBox="0 0 24 24"><path d="M6 4a1 1 0 1 1 0 2H5v6h14V6h-1a1 1 0 0 1 0-2h2c.6 0 1 .4 1 1v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5c0-.6.4-1 1-1h2zm5 10H5v4h6v-4zm8 0h-6v4h6v-4zM12 3c.5 0 1 .4 1 .9V6h2a1 1 0 0 1 0 2h-2v2a1 1 0 0 1-2 .1V8H9a1 1 0 0 1 0-2h2V4c0-.6.4-1 1-1z"/></svg>',tableRowInsertAfter:'<svg viewBox="0 0 24 24"><path d="M12 13c.5 0 1 .4 1 .9V16h2a1 1 0 0 1 .1 2H13v2a1 1 0 0 1-2 .1V18H9a1 1 0 0 1-.1-2H11v-2c0-.6.4-1 1-1zm6 7a1 1 0 0 1 0-2h1v-6H5v6h1a1 1 0 0 1 0 2H4a1 1 0 0 1-1-1V6c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v13c0 .5-.4 1-.9 1H18zM11 6H5v4h6V6zm8 0h-6v4h6V6z"/></svg>',tableRowDelete:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v3h2.5v2H5v2h2.5v2H5v3h14v-3h-2.5v-2H19v-2h-2.5V9H19V6zm-4.7 1.8 1.2 1L13 12l2.6 3.3-1.2 1-2.3-3-2.3 3-1.2-1L11 12 8.5 8.7l1.2-1 2.3 3 2.3-3z"/></svg>',tableRowProperties:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zM5 15v3h6v-3H5zm14 0h-6v3h6v-3zm0-9h-6v3h6V6zM5 9h6V6H5v3z"/></svg>',tableRowCut:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M22 3v5H9l3 3 2-2h4l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8.7.6 1 1.3 1 2.2.2.8 0 1.5-.6 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 0 1-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2a3 3 0 0 1 1-2.2A3.7 3.7 0 0 1 8.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 0 1 0-2c0-.4.3-.7.5-1l2 2V3h14zM8.5 15.3h-.3a2.6 2.6 0 0 0-.8.4 2.5 2.5 0 0 0-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 0 0 .8-.3L9 18l.4-.4.2-.4.1-.4v-.7a1 1 0 0 0-.2-.5 1 1 0 0 0-.4-.2h-.5zm7 0H15a1 1 0 0 0-.4.3 1 1 0 0 0-.2.5 1.5 1.5 0 0 0 0 .7v.4a2.8 2.8 0 0 0 .5.7h.1a2.8 2.8 0 0 0 .8.6l.4.1h.7l.5-.2.2-.5v-.7a2.6 2.6 0 0 0-.3-.8 2.4 2.4 0 0 0-.7-.7 2.5 2.5 0 0 0-.8-.3h-.3zM12 11.6c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4zm8.5-7.1h-11v2h11v-2z"/></svg>',tableRowCopy:'<svg viewBox="0 0 24 24"><path d="M22 11v7H6v-7h16zm-2 2H8v3h12v-3zm-1-6v2H4v5H2V7h17z"/></svg>',tableRowPasteBefore:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h12v-4h2v4c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h3.3A3 3 0 0 1 12 1zm10 7v5H8V8h14zm-1.5 1.5h-11v2h11v-2zM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></svg>',tableRowPasteAfter:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V11h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h14c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h3.3A3 3 0 0 1 12 1zm10 11v5H8v-5h14zm-1.5 1.5h-11v2h11v-2zM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></svg>',tableColumnItems:"",tableColumnInsertBefore:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a1 1 0 0 1-1-1v-2a1 1 0 0 1 2 0v1h8V6H5v1a1 1 0 1 1-2 0V5c0-.6.4-1 1-1h15zm0 9h-4v5h4v-5zM8 8c.5 0 1 .4 1 .9V11h2a1 1 0 0 1 .1 2H9v2a1 1 0 0 1-2 .1V13H5a1 1 0 0 1-.1-2H7V9c0-.6.4-1 1-1zm11-2h-4v5h4V6z"/></svg>',tableColumnInsertAfter:'<svg viewBox="0 0 24 24"><path d="M20 4c.6 0 1 .4 1 1v2a1 1 0 0 1-2 0V6h-8v12h8v-1a1 1 0 0 1 2 0v2c0 .5-.4 1-.9 1H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h15zM9 13H5v5h4v-5zm7-5c.5 0 1 .4 1 .9V11h2a1 1 0 0 1 .1 2H17v2a1 1 0 0 1-2 .1V13h-2a1 1 0 0 1-.1-2H15V9c0-.6.4-1 1-1zM9 6H5v5h4V6z"/></svg>',tableColumnDelete:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zm-4 4h-2V6h-2v2H9V6H5v12h4v-2h2v2h2v-2h2v2h4V6h-4v2zm.3.5 1 1.2-3 2.3 3 2.3-1 1.2L12 13l-3.3 2.6-1-1.2 3-2.3-3-2.3 1-1.2L12 11l3.3-2.5z"/></svg>',tableColumnCut:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M7.2 4.5a3 3 0 0 1 2.2 1A3.7 3.7 0 0 1 10.5 8v.5l1 1 4-4 1-.5a3.3 3.3 0 0 1 2 0c.4 0 .7.3 1 .5L17 8h4v13h-6V10l-1.5 1.5.5.5v4l-2.5-2.5-1 1v.5c0 .4 0 .8-.3 1.2-.2.5-.4.9-.8 1.2-.6.7-1.3 1-2.2 1-.8.2-1.5 0-2-.6l-.5-.8-.2-1c0-.4 0-.8.3-1.2A3.9 3.9 0 0 1 7 12.7c.5-.2 1-.3 1.5-.2l1-1-1-1c-.5 0-1 0-1.5-.2-.5-.1-1-.4-1.4-.9-.4-.3-.6-.7-.8-1.2L4.5 7c0-.4 0-.7.2-1 0-.3.3-.6.5-.8.5-.5 1.2-.8 2-.7zm12.3 5h-3v10h3v-10zM8 13.8h-.3l-.4.2a2.8 2.8 0 0 0-.7.4v.1a2.8 2.8 0 0 0-.6.8l-.1.4v.7l.2.5.5.2h.7a2.6 2.6 0 0 0 .8-.3 2.4 2.4 0 0 0 .7-.7 2.5 2.5 0 0 0 .3-.8 1.5 1.5 0 0 0 0-.8 1 1 0 0 0-.2-.4 1 1 0 0 0-.5-.2H8zm3.5-3.7c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4zM7 5.8h-.4a1 1 0 0 0-.5.3 1 1 0 0 0-.2.5v.7a2.5 2.5 0 0 0 .3.8l.2.3h.1l.4.4.4.2.4.1h.7L9 9l.2-.4a1.6 1.6 0 0 0 0-.8 2.6 2.6 0 0 0-.3-.8 2.5 2.5 0 0 0-1.2-1l-.4-.1H7z"/></svg>',tableColumnCopy:'<svg viewBox="0 0 24 24"><path d="M17 6v16h-7V6h7zm-2 2h-3v12h3V8zm-2-6v2H8v15H6V2h7z"/></svg>',tableColumnPasteBefore:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V18c0 1-.8 2-1.9 2H11v-2h7V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v2H4V5c0-1 .8-2 1.9-2h3.3A3 3 0 0 1 12 1zm-2 7v12H4V8h6zM8.5 9.5h-3v9h3v-9zM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></svg>',tableColumnPasteAfter:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h7v2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h3.3A3 3 0 0 1 12 1zm8 7v12h-6V8h6zm-1.5 1.5h-3v9h3v-9zM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></svg>'},p="table",F="thead",O="tfoot",I="tbody",g="row",b="cell",M="clipboardTable",Ce=[p,F,O,I,g,b],B=e=>e.em.get(M)||[],He=e=>e.every(t=>t.is(b)),T=(e,t)=>{const{editor:o,event:l,opts:s}=e,n=l.currentTarget||l.target,{x:r,y:a,width:c,height:h}=n.getBoundingClientRect(),d={style:{width:240,height:300},placer:{type:"popover",closeOnClickAway:!0,x:r,y:a,w:c,h},layout:{type:"tabs",value:"props",tabs:[{id:"styles",label:"Styles",children:{type:"panelStyles"}},{id:"props",label:"Properties",children:{type:"panelProperties",style:{padding:"14px 7px"}}}]},...t};G(s.openSettings)?s.openSettings({...e,layoutProps:d}):o.runCommand(Z.layoutToggle,d)},Re=(e,{rows:t=1,cells:o=5,text:l}={})=>({type:e,components:Array.from(Array(t).keys()).map(s=>({type:g,components:Array.from(Array(o).keys()).map(n=>({type:b,components:l?{type:"text",content:G(l)?l({y:s,x:n}):l}:void 0}))}))}),U="Table settings",$=e=>{const{component:t}=e;return t.is(p)?t:t.closestType(p)},Pe=e=>{var t;(t=$(e))==null||t.remove(e.opts)},Ve=e=>{const t=$(e);t&&(e.editor.select(t),T(e,{id:"tableSettings",header:{label:U}}))},W=e=>[{id:i.table,icon:v[i.table],label:"Table",items:[{id:i.tableSettings,label:U,icon:v[i.tableSettings],onClick:({event:o})=>Ve({...e,event:o})},{id:i.tableDelete,label:"Delete table",icon:v[i.tableDelete],onClick:()=>Pe(e)}]}],_=({editor:e})=>{const t=B(e);return t.length&&He(t)},j=({component:e,editor:t,after:o})=>{if(!e.is(b))return;const l=e.closestType(p),s=e.closestType(g),n=e.index()+(o?1:0);l==null||l.findType(g).forEach(a=>a.append({type:b},{at:n}));const r=s==null?void 0:s.components().at(n);r&&t.select(r)},K=({component:e,opts:t})=>{if(!e.is(b))return;const o=e.closestType(p),l=e.index();o==null||o.findType(g).forEach(s=>{var n;return(n=s.components().at(l))==null?void 0:n.remove(t)})},q=({component:e,editor:t})=>{if(!e.is(b))return;const o=e.closestType(p),l=e.index(),s=(o==null?void 0:o.findType(g).map(n=>n.components().at(l)))||[];s.length&&t.em.set(M,s)},X=e=>{const{component:t,editor:o,after:l}=e;if(!t.is(b)||!_(e))return;const s=B(o),n=t.closestType(p),r=t.index()+(l?1:0);n==null||n.findType(g).forEach((a,c)=>{const h=s[c],d=(h==null?void 0:h.clone())||{type:b};a.append(d,{at:r})})},ze=e=>{const{component:t}=e;t.is(b)&&(q(e),K({...e,opts:{temporary:!0}}))},Ae=e=>{const t=_(e);return[{id:i.tableColumnItems,icon:v[i.tableColumn],label:"Column",items:[{id:i.tableColumnInsertBefore,label:"Insert column before",icon:v[i.tableColumnInsertBefore],onClick:()=>j(e)},{id:i.tableColumnInsertAfter,label:"Insert column after",icon:v[i.tableColumnInsertAfter],onClick:()=>j({...e,after:!0})},{id:i.tableColumnDelete,label:"Delete column",icon:v[i.tableColumnDelete],onClick:()=>K(e)},{id:i.tableColumnCut,label:"Cut column",icon:v[i.tableColumnCut],onClick:()=>ze(e)},{id:i.tableColumnCopy,label:"Copy column",icon:v[i.tableColumnCopy],onClick:()=>q(e)},{id:i.tableColumnPasteBefore,label:"Paste column before",icon:v[i.tableColumnPasteBefore],disabled:!t,onClick:()=>X(e)},{id:i.tableColumnPasteAfter,label:"Paste column after",icon:v[i.tableColumnPasteAfter],disabled:!t,onClick:()=>X({...e,after:!0})}]}]},Y="Row settings",Be=e=>e.every(t=>t.is(g)),C=e=>{const{component:t}=e,o=t.is(b),l=t.is(g);if(!(!o&&!l))return l?t:t.closestType(g)},J=e=>{const{component:t,editor:o,after:l}=e,s=C(e);if(!s)return;const n=s.index()+(l?1:0),r=s.components().length,a=Array.from(Array(r).keys()).map(()=>({type:b})),c=s.parent();if(c){const h=c.append({type:g,components:a},{at:n})[0];if(t.is(b)&&h){const d=t.index(),u=h.components().at(d);u&&o.select(u)}}},Q=e=>{var t;(t=C(e))==null||t.remove(e.opts)},ee=e=>{const t=C(e);t&&e.editor.em.set(M,[t])},te=e=>{var a;const{editor:t,after:o}=e,l=C(e);if(!l||!le(e))return;const n=B(t)[0],r=l.index()+(o?1:0);n&&((a=l.parent())==null||a.append(n.clone(),{at:r}))},xe=e=>{C(e)&&(ee(e),Q({...e,opts:{temporary:!0}}))},le=({editor:e})=>{const t=B(e);return t.length&&Be(t)},ke=e=>{const t=C(e);t&&(e.editor.select(t),T(e,{id:"tableRowSettings",header:{label:Y}}))},oe=e=>{const t=le(e);return[{id:i.tableRowItems,icon:v[i.tableRowProperties],label:"Row",items:[{id:i.tableRowInsertBefore,label:"Insert row before",icon:v[i.tableRowInsertBefore],onClick:()=>J(e)},{id:i.tableRowInsertAfter,label:"Insert row after",icon:v[i.tableRowInsertAfter],onClick:()=>J({...e,after:!0})},{id:i.tableRowDelete,label:"Delete row",icon:v[i.tableRowDelete],onClick:()=>Q(e)},{id:i.tableRowProperties,label:Y,icon:v[i.tableRowProperties],onClick:({event:l})=>ke({...e,event:l})},{id:i.tableRowCut,label:"Cut row",icon:v[i.tableRowCut],onClick:()=>xe(e)},{id:i.tableRowCopy,label:"Copy row",icon:v[i.tableRowCopy],onClick:()=>ee(e)},{id:i.tableRowPasteBefore,label:"Paste row before",icon:v[i.tableRowPasteBefore],disabled:!t,onClick:()=>te(e)},{id:i.tableRowPasteAfter,label:"Paste row after",icon:v[i.tableRowPasteAfter],disabled:!t,onClick:()=>te({...e,after:!0})}]},...W(e)]},D=e=>{const t=e.attributes.attributes||{},o=parseInt(`${t.rowspan||1}`,10),l=parseInt(`${t.colspan||1}`,10);return{rowspan:o,colspan:l}};function ne(e){const t=[];return e.components().forEach((o,l)=>{o.components().each((s,n)=>{const{rowspan:r,colspan:a}=D(s);if(t[l])for(;t[l][n];)n++;for(let c=l;c<l+r;c++){t[c]||(t[c]=[]);for(let h=n;h<n+a;h++)t[c][h]={real:c===l&&h===n,cell:s,rowspan:r,colspan:a}}})}),t}function H(e,t,o){var l;return(l=e[o])==null?void 0:l[t]}const S=e=>e.closestType(g);function Ie(e,{x:t,y:o,rows:l,cols:s}){var a;let n=S(e[o][t].cell),r;for(let c=1;c<=l;c++)if(n=(a=n==null?void 0:n.parent())==null?void 0:a.components().at(n.index()+1),n){for(r=t;r>=0;r--){const{cell:h}=e[o+c][r],d=S(h);if(d===n){for(let u=1;u<=s;u++){const f=h.index();d.append({type:b},{at:f+1})}break}}if(r===-1){const d=n.components().at(0).index();for(let u=1;u<=s;u++)n.append({type:b},{at:d})}}}function se(e){for(let t=0;t<e.length;t++)for(let o=0;o<e[t].length;o++){const s=e[t][o].cell;if(s.em.selected.hasComponent(s)){const{rowspan:n,colspan:r}=D(s);if(r>1||n>1){s.addAttributes({colspan:1,rowspan:1});for(let a=0;a<r-1;a++){const c=s.index();S(s).append({type:b},{at:c+1})}Ie(e,{x:o,y:t,rows:n-1,cols:r})}}}}function Me(e){const t=[];e.components().forEach(o=>{o.components().length||t.push(o)}),t.forEach(o=>o.remove())}const x=(e,t={})=>{var r;const o=ne(e),{em:l}=e;let s,n;for(let a=0;a<o.length;a++)for(let c=0;c<o[a].length;c++){const h=o[a][c];if((r=t.selected)!=null&&r.includes(h.cell)||l.selected.hasComponent(h.cell)){const d={x:c,y:a};s||(s=d),n=d}}return{grid:o,startPos:s,endPos:n}};function Te(e,t={}){const o=x(e),{startPos:l,endPos:s}=o;let{grid:n}=o;const{em:r}=e;if(!l||!s)return;const a=l.x,c=l.y,h=s.x,d=s.y,u=H(n,a,c),f=H(n,h,d);if(u&&f){se(n),n=ne(e);const P=[],z=H(n,a,c).cell;z.addAttributes({colspan:h-a+1,rowspan:d-c+1});for(let m=c;m<=d;m++)for(let A=a;A<=h;A++){const k=H(n,A,m);if(!k)continue;const{cell:re}=k;re!==z&&P.push(re)}P.forEach(m=>{t.mergeContent&&z.append(m.components().models),m.remove()}),r.setSelected(z),Me(e)}}const ae="Cell settings",De="Merge cells",Se="Split cell",Le=e=>e.closestType(g),R=e=>{var t;return(t=Le(e))==null?void 0:t.parent()},Ee=e=>{const t=e.editor.getSelectedAll(),o=R(t[0]),l=t[0];if(!o||!(l!=null&&l.is(b))||t.length>1)return!1;const{rowspan:s,colspan:n}=D(l);return!(n<2&&s<2)},Ge=e=>{const o=e.editor.getSelectedAll()[0],l=R(o),{grid:s}=x(l);se(s)},ce=e=>{const t=e.editor.getSelectedAll(),o=R(t[0]);if(!o||t.length<2||t.some(a=>!a.is(b)||R(a)!==o))return!1;const{grid:l,startPos:s,endPos:n}=x(o),{em:r}=o;if(!s||!n)return!1;for(let a=s.y;a<=n.y;a++)for(let c=s.x;c<=n.x;c++){const h=H(l,c,a);if(!h||!r.selected.hasComponent(h.cell))return!1}return!0},Ze=e=>{const{editor:t}=e;if(!ce(e))return;const o=t.getSelectedAll(),l=R(o[0]);Te(l,{mergeContent:!0})},Ne=e=>{T(e,{id:"tableCellSettings",header:{label:ae}})},Fe=e=>[{id:i.tableCellItems,icon:v[i.tableCellProperties],label:"Cell",items:[{id:i.tableCellProperties,label:ae,icon:v[i.tableCellProperties],onClick:({event:o})=>Ne({...e,event:o})},{id:i.tableCellMerge,label:De,icon:v[i.tableCellMerge],onClick:()=>Ze(e),disabled:!ce(e)},{id:i.tableCellSplit,label:Se,icon:v[i.tableCellSplit],onClick:()=>Ge(e),disabled:!Ee(e)}]},...Ae(e),...oe(e)],Oe=e=>{const t=e[0]&&R(e[0]);if(!t)return;const{grid:o,startPos:l,endPos:s}=x(t,{selected:e});if(!l||!s)return;const n=[];for(let r=l.y;r<=s.y;r++)for(let a=l.x;a<=s.x;a++){const c=H(o,a,r);c&&n.push(c.cell)}n.length&&t.em.setSelected(n,{fromCell:!0})};return pe(function(e,t={}){const o={block:{},...t},{Components:l}=e,s={copyable:!1,emptyState:!0,highlightable:!1,stylable:["color","font-family","font-size","font-weight","line-height","text-align","vertical-align","background-color","border-width","border-style","border-color"]};l.addType(p,{block:o.block&&{label:"Table",media:v.table,category:"Extra",content:{type:p,style:{width:"100%"}},select:!0,...o.block},model:{defaults:{emptyState:!0,highlightable:!1,icon:v.table,stylable:["width","height","margin","font-family","font-size","font-weight","line-height","text-align","background","background-color","border-width","border-style","border-color"],traits:[{type:"number",min:0,name:"cellspacing",label:"Cell spacing"},{type:"number",min:0,name:"cellpadding",label:"Cell padding"},{id:"tableCaption",type:"checkbox",label:"Caption",setValue({component:r,value:a,emitUpdate:c}){const h=r.find("caption")[0];a?!h&&r.append({type:"text",tagName:"caption",components:{type:"textnode",content:"Caption"}}):h==null||h.remove(),c(),e.refresh({tools:!0})},getValue(r){return!!r.component.find("caption")[0]}}],components:Re(I,{rows:5}),contextMenu:({items:r,editor:a,component:c})=>[...W({editor:a,component:c,opts:o}),...r]}}}),l.addType(F,{model:{defaults:{icon:v.tableHead,...s}}}),l.addType(O,{model:{defaults:{icon:v.tableFoot,...s}}}),l.addType(I,{model:{defaults:{icon:v.tableRowProperties,...s}}}),l.addType(g,{model:{defaults:{icon:v.tableRowProperties,emptyState:!0,highlightable:!1,stylable:["height","text-align","border-width","border-style","border-color"],traits:[],contextMenu:({items:r,editor:a,component:c})=>[...oe({editor:a,component:c,opts:o}),...r]}}}),l.addType(b,{model:{defaults:{icon:v.tableCellProperties,emptyState:{styleOut:"height: 1px"},stylable:["width","height","padding","background","background-color","text-align","vertical-align","border-width","border-style","border-color"],traits:[{id:"tableCellType",type:"select",options:[{value:"td",name:"Cell"},{value:"th",name:"Header Cell"}],label:"Cell type",name:"tagName",changeProp:!0},{id:"tableCellScope",type:"select",options:[{value:!1,name:"None"},{value:"row",name:"Row"},{value:"col",name:"Column"},{value:"rowgroup",name:"Row group"},{value:"colgroup",name:"Column group"}],label:"Scope",name:"scope"}],contextMenu:({items:r,editor:a,component:c})=>[...Fe({editor:a,component:c,opts:o}),...r]}}});const n=V((r,a)=>{var u;const c=e.getSelectedAll(),h=!!((u=a==null?void 0:a.event)!=null&&u.shiftKey);if(c.length<2||!h||a.fromCell)return;const d=c.map(f=>f.is(b)?f:f.closestType(b)).filter(Boolean);d.length===c.length&&Oe(d)},0);e.on("component:select",n),fe({editor:e,plan:ye,pluginName:we,licenseKey:o.licenseKey,cleanup:()=>{e.off("component:select",n),e.Blocks.remove(p),Ce.forEach(r=>l.removeType(r))}})})});
1
+ (function(V,w){typeof exports=="object"&&typeof module<"u"?module.exports=w():typeof define=="function"&&define.amd?define(w):(V=typeof globalThis<"u"?globalThis:V||self,V.StudioSdkPlugins_tableComponent=w())})(this,function(){"use strict";function V(e,t,o){let l,s,n,r,a;const c=t;function h(){const u=Date.now()-r;u<c&&u>=0?l=setTimeout(h,c-u):(l=null,a=e.apply(n,s),n=s=null)}const d=function(){return n=this,s=arguments,r=Date.now(),l||(l=setTimeout(h,c)),a};return d.clear=function(){l&&(clearTimeout(l),l=null)},d.flush=function(){l&&(a=e.apply(n,s),n=s=null,clearTimeout(l),l=null)},d}const w="app.grapesjs.com",L="app-stage.grapesjs.com",E=[w,L,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],ie="license:check:start",he="license:check:end",de=()=>typeof window<"u",ve=({isDev:e,isStage:t})=>`${e?"":`https://${t?L:w}`}/api`,ue=()=>{const e=de()&&window.location.hostname;return!!e&&(E.includes(e)||E.some(t=>e.endsWith(t)))};function G(e){return typeof e=="function"}async function be({path:e,baseApiUrl:t,method:o="GET",headers:l={},params:s,body:n}){const a=`${t||ve({isDev:!1,isStage:!1})}${e}`,c={method:o,headers:{"Content-Type":"application/json",...l}};n&&(c.body=JSON.stringify(n));const h=s?new URLSearchParams(s).toString():"",d=h?`?${h}`:"",u=await fetch(`${a}${d}`,c);if(!u.ok)throw new Error(`HTTP error! status: ${u.status}`);return u.json()}var y=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(y||{}),Z=(e=>(e.toastAdd="studio:toastAdd",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.sidebarLeftSet="studio:sidebarLeft:set",e.sidebarLeftGet="studio:sidebarLeft:get",e.sidebarLeftToggle="studio:sidebarLeft:toggle",e.sidebarRightSet="studio:sidebarRight:set",e.sidebarRightGet="studio:sidebarRight:get",e.sidebarRightToggle="studio:sidebarRight:toggle",e.sidebarTopSet="studio:sidebarTop:set",e.sidebarTopGet="studio:sidebarTop:get",e.sidebarTopToggle="studio:sidebarTop:toggle",e.sidebarBottomSet="studio:sidebarBottom:set",e.sidebarBottomGet="studio:sidebarBottom:get",e.sidebarBottomToggle="studio:sidebarBottom:toggle",e.symbolAdd="studio:symbolAdd",e.symbolDetach="studio:symbolDetach",e.symbolOverride="studio:symbolOverride",e.symbolPropagateStyles="studio:propagateStyles",e.getPagesConfig="studio:getPagesConfig",e.setPagesConfig="studio:setPagesConfig",e.getPageSettings="studio:getPageSettings",e.setPageSettings="studio:setPageSettings",e.projectFiles="studio:projectFiles",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.getStateContextMenu="studio:getStateContextMenu",e.setStateContextMenu="studio:setStateContextMenu",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e.layoutUpdate="studio:layoutUpdate",e.layoutGet="studio:layoutGet",e.layoutConfigGet="studio:layoutConfigGet",e.layoutConfigSet="studio:layoutConfigSet",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.dataSourceSetGlobalData="studio:dataSourceSetGlobalData",e.dataSourceSetImporter="studio:dataSourceSetImporter",e.dataSourceSetExporter="studio:dataSourceSetExporter",e.setDragAbsolute="studio:setDragAbsolute",e))(Z||{});const N={[y.free]:0,[y.startup]:10,[y.business]:20,[y.enterprise]:30};function ge(e){const t=e;return t.init=o=>l=>e(l,o),t}const pe=e=>ge(e);async function fe({editor:e,plan:t,pluginName:o,licenseKey:l,cleanup:s}){let n="",r=!1;const a=ue(),c=d=>{console.warn("Cleanup plugin:",o,"Reason:",d),s()},h=(d={})=>{var m;const{error:u,sdkLicense:f}=d,P=(m=d.plan)==null?void 0:m.category;if(!(f||d.license)||u)c(u||"Invalid license");else if(P){const A=N[t],I=N[P];A>I&&c({pluginRequiredPlan:t,licensePlan:P})}};e.on(ie,d=>{n=d==null?void 0:d.baseApiUrl,r=!0}),e.on(he,d=>{h(d)}),setTimeout(async()=>{if(!r){if(a)return;if(l){const d=await me({licenseKey:l,pluginName:o,baseApiUrl:n});d&&h(d)}else c("The `licenseKey` option not provided")}},2e3)}async function me(e){const{licenseKey:t,pluginName:o,baseApiUrl:l}=e;try{return(await be({baseApiUrl:l,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:o}})).result||{}}catch(s){return console.error("Error during SDK license check:",s),!1}}const we="tableComponent",ye=y.startup;var i=(e=>(e.table="table",e.tableSettings="tableSettings",e.tableDelete="tableDelete",e.tableHead="tableHead",e.tableFoot="tableFoot",e.tableCellItems="tableCellItems",e.tableCellProperties="tableCellProperties",e.tableCellMerge="tableCellMerge",e.tableCellSplit="tableCellSplit",e.tableRowItems="tableRowItems",e.tableRowInsertBefore="tableRowInsertBefore",e.tableRowInsertAfter="tableRowInsertAfter",e.tableRowDelete="tableRowDelete",e.tableRowProperties="tableRowProperties",e.tableRowCut="tableRowCut",e.tableRowCopy="tableRowCopy",e.tableRowPasteBefore="tableRowPasteBefore",e.tableRowPasteAfter="tableRowPasteAfter",e.tableColumn="tableColumn",e.tableColumnItems="tableColumnItems",e.tableColumnInsertBefore="tableColumnInsertBefore",e.tableColumnInsertAfter="tableColumnInsertAfter",e.tableColumnDelete="tableColumnDelete",e.tableColumnCut="tableColumnCut",e.tableColumnCopy="tableColumnCopy",e.tableColumnPasteBefore="tableColumnPasteBefore",e.tableColumnPasteAfter="tableColumnPasteAfter",e))(i||{});const v={table:'<svg viewBox="0 0 24 24"><path d="M5 4h14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2m0 4v4h6V8H5m8 0v4h6V8h-6m-8 6v4h6v-4H5m8 0v4h6v-4h-6Z"/></svg>',tableSettings:'<svg viewBox="0 0 24 24"><path d="M5 4h14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2m0 4v4h6V8H5m8 0v4h6V8h-6m-8 6v4h6v-4H5m8 0v4h6v-4h-6Z"/></svg>',tableDelete:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zM5 6v12h14V6H5z"/><path d="m14.4 8.6 1 1-2.3 2.4 2.3 2.4-1 1-2.4-2.3-2.4 2.3-1-1 2.3-2.4-2.3-2.4 1-1 2.4 2.3z"/></svg>',tableHead:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-8 11H5v3h6v-3Zm8 0h-6v3h6v-3Zm0-5h-6v3h6v-3ZM5 13h6v-3H5v3Z"/></svg>',tableFoot:'<svg viewBox="0 0 24 24" data-test="1" style="transform: rotate(180deg);"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-8 11H5v3h6v-3Zm8 0h-6v3h6v-3Zm0-5h-6v3h6v-3ZM5 13h6v-3H5v3Z"/></svg>',tableColumn:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm0 9h-4v5h4v-5Zm-6 0H9v5h4v-5Zm0-7H9v5h4V6Zm6 0h-4v5h4V6Z"/></svg>',tableCellItems:"",tableCellProperties:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6l2-2h14zm-8 9H5v5h6v-5zm8 0h-6v5h6v-5zm-8-7H5v5h6V6z"/></svg>',tableCellMerge:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6l2-2h14zM5 16v2h3v-2H5zm14-5h-9v7h9v-7zm0-5h-4v3h4V6zM8 6H5v3h3V6zm5 0h-3v3h3V6zm-8 8h3v-3H5v3z"/></svg>',tableCellSplit:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zM8 15.5H5V18h3v-2.5zm11-5h-9V18h9v-7.5zm-2.5 1 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2-2-2 1-1 2 2 2-2zm-8.5-1H5v3h3v-3zM19 6h-4v2.5h4V6zM8 6H5v2.5h3V6zm5 0h-3v2.5h3V6z"/></svg>',tableRowItems:"",tableRowInsertBefore:'<svg viewBox="0 0 24 24"><path d="M6 4a1 1 0 1 1 0 2H5v6h14V6h-1a1 1 0 0 1 0-2h2c.6 0 1 .4 1 1v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5c0-.6.4-1 1-1h2zm5 10H5v4h6v-4zm8 0h-6v4h6v-4zM12 3c.5 0 1 .4 1 .9V6h2a1 1 0 0 1 0 2h-2v2a1 1 0 0 1-2 .1V8H9a1 1 0 0 1 0-2h2V4c0-.6.4-1 1-1z"/></svg>',tableRowInsertAfter:'<svg viewBox="0 0 24 24"><path d="M12 13c.5 0 1 .4 1 .9V16h2a1 1 0 0 1 .1 2H13v2a1 1 0 0 1-2 .1V18H9a1 1 0 0 1-.1-2H11v-2c0-.6.4-1 1-1zm6 7a1 1 0 0 1 0-2h1v-6H5v6h1a1 1 0 0 1 0 2H4a1 1 0 0 1-1-1V6c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v13c0 .5-.4 1-.9 1H18zM11 6H5v4h6V6zm8 0h-6v4h6V6z"/></svg>',tableRowDelete:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v3h2.5v2H5v2h2.5v2H5v3h14v-3h-2.5v-2H19v-2h-2.5V9H19V6zm-4.7 1.8 1.2 1L13 12l2.6 3.3-1.2 1-2.3-3-2.3 3-1.2-1L11 12 8.5 8.7l1.2-1 2.3 3 2.3-3z"/></svg>',tableRowProperties:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zM5 15v3h6v-3H5zm14 0h-6v3h6v-3zm0-9h-6v3h6V6zM5 9h6V6H5v3z"/></svg>',tableRowCut:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M22 3v5H9l3 3 2-2h4l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8.7.6 1 1.3 1 2.2.2.8 0 1.5-.6 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 0 1-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2a3 3 0 0 1 1-2.2A3.7 3.7 0 0 1 8.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 0 1 0-2c0-.4.3-.7.5-1l2 2V3h14zM8.5 15.3h-.3a2.6 2.6 0 0 0-.8.4 2.5 2.5 0 0 0-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 0 0 .8-.3L9 18l.4-.4.2-.4.1-.4v-.7a1 1 0 0 0-.2-.5 1 1 0 0 0-.4-.2h-.5zm7 0H15a1 1 0 0 0-.4.3 1 1 0 0 0-.2.5 1.5 1.5 0 0 0 0 .7v.4a2.8 2.8 0 0 0 .5.7h.1a2.8 2.8 0 0 0 .8.6l.4.1h.7l.5-.2.2-.5v-.7a2.6 2.6 0 0 0-.3-.8 2.4 2.4 0 0 0-.7-.7 2.5 2.5 0 0 0-.8-.3h-.3zM12 11.6c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4zm8.5-7.1h-11v2h11v-2z"/></svg>',tableRowCopy:'<svg viewBox="0 0 24 24"><path d="M22 11v7H6v-7h16zm-2 2H8v3h12v-3zm-1-6v2H4v5H2V7h17z"/></svg>',tableRowPasteBefore:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h12v-4h2v4c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h3.3A3 3 0 0 1 12 1zm10 7v5H8V8h14zm-1.5 1.5h-11v2h11v-2zM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></svg>',tableRowPasteAfter:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V11h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h14c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h3.3A3 3 0 0 1 12 1zm10 11v5H8v-5h14zm-1.5 1.5h-11v2h11v-2zM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></svg>',tableColumnItems:"",tableColumnInsertBefore:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a1 1 0 0 1-1-1v-2a1 1 0 0 1 2 0v1h8V6H5v1a1 1 0 1 1-2 0V5c0-.6.4-1 1-1h15zm0 9h-4v5h4v-5zM8 8c.5 0 1 .4 1 .9V11h2a1 1 0 0 1 .1 2H9v2a1 1 0 0 1-2 .1V13H5a1 1 0 0 1-.1-2H7V9c0-.6.4-1 1-1zm11-2h-4v5h4V6z"/></svg>',tableColumnInsertAfter:'<svg viewBox="0 0 24 24"><path d="M20 4c.6 0 1 .4 1 1v2a1 1 0 0 1-2 0V6h-8v12h8v-1a1 1 0 0 1 2 0v2c0 .5-.4 1-.9 1H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h15zM9 13H5v5h4v-5zm7-5c.5 0 1 .4 1 .9V11h2a1 1 0 0 1 .1 2H17v2a1 1 0 0 1-2 .1V13h-2a1 1 0 0 1-.1-2H15V9c0-.6.4-1 1-1zM9 6H5v5h4V6z"/></svg>',tableColumnDelete:'<svg viewBox="0 0 24 24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zm-4 4h-2V6h-2v2H9V6H5v12h4v-2h2v2h2v-2h2v2h4V6h-4v2zm.3.5 1 1.2-3 2.3 3 2.3-1 1.2L12 13l-3.3 2.6-1-1.2 3-2.3-3-2.3 1-1.2L12 11l3.3-2.5z"/></svg>',tableColumnCut:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M7.2 4.5a3 3 0 0 1 2.2 1A3.7 3.7 0 0 1 10.5 8v.5l1 1 4-4 1-.5a3.3 3.3 0 0 1 2 0c.4 0 .7.3 1 .5L17 8h4v13h-6V10l-1.5 1.5.5.5v4l-2.5-2.5-1 1v.5c0 .4 0 .8-.3 1.2-.2.5-.4.9-.8 1.2-.6.7-1.3 1-2.2 1-.8.2-1.5 0-2-.6l-.5-.8-.2-1c0-.4 0-.8.3-1.2A3.9 3.9 0 0 1 7 12.7c.5-.2 1-.3 1.5-.2l1-1-1-1c-.5 0-1 0-1.5-.2-.5-.1-1-.4-1.4-.9-.4-.3-.6-.7-.8-1.2L4.5 7c0-.4 0-.7.2-1 0-.3.3-.6.5-.8.5-.5 1.2-.8 2-.7zm12.3 5h-3v10h3v-10zM8 13.8h-.3l-.4.2a2.8 2.8 0 0 0-.7.4v.1a2.8 2.8 0 0 0-.6.8l-.1.4v.7l.2.5.5.2h.7a2.6 2.6 0 0 0 .8-.3 2.4 2.4 0 0 0 .7-.7 2.5 2.5 0 0 0 .3-.8 1.5 1.5 0 0 0 0-.8 1 1 0 0 0-.2-.4 1 1 0 0 0-.5-.2H8zm3.5-3.7c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4zM7 5.8h-.4a1 1 0 0 0-.5.3 1 1 0 0 0-.2.5v.7a2.5 2.5 0 0 0 .3.8l.2.3h.1l.4.4.4.2.4.1h.7L9 9l.2-.4a1.6 1.6 0 0 0 0-.8 2.6 2.6 0 0 0-.3-.8 2.5 2.5 0 0 0-1.2-1l-.4-.1H7z"/></svg>',tableColumnCopy:'<svg viewBox="0 0 24 24"><path d="M17 6v16h-7V6h7zm-2 2h-3v12h3V8zm-2-6v2H8v15H6V2h7z"/></svg>',tableColumnPasteBefore:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V18c0 1-.8 2-1.9 2H11v-2h7V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v2H4V5c0-1 .8-2 1.9-2h3.3A3 3 0 0 1 12 1zm-2 7v12H4V8h6zM8.5 9.5h-3v9h3v-9zM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></svg>',tableColumnPasteAfter:'<svg viewBox="0 0 24 24"><path fill-rule="evenodd" d="M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h7v2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h3.3A3 3 0 0 1 12 1zm8 7v12h-6V8h6zm-1.5 1.5h-3v9h3v-9zM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></svg>'},p="table",F="thead",O="tfoot",k="tbody",g="row",b="cell",M="clipboardTable",Ce=[p,F,O,k,g,b],x=e=>e.em.get(M)||[],He=e=>e.every(t=>t.is(b)),S=(e,t)=>{const{editor:o,event:l,opts:s}=e,n=l.currentTarget||l.target,{x:r,y:a,width:c,height:h}=n.getBoundingClientRect(),d={style:{width:240,height:300},placer:{type:"popover",closeOnClickAway:!0,x:r,y:a,w:c,h},layout:{type:"tabs",value:"props",tabs:[{id:"styles",label:"Styles",children:{type:"panelStyles"}},{id:"props",label:"Properties",children:{type:"panelProperties",style:{padding:"14px 7px"}}}]},...t};G(s.openSettings)?s.openSettings({...e,layoutProps:d}):o.runCommand(Z.layoutToggle,d)},Re=(e,{rows:t=1,cells:o=5,text:l}={})=>({type:e,components:Array.from(Array(t).keys()).map(s=>({type:g,components:Array.from(Array(o).keys()).map(n=>({type:b,components:l?{type:"text",content:G(l)?l({y:s,x:n}):l}:void 0}))}))}),U="Table settings",$=e=>{const{component:t}=e;return t.is(p)?t:t.closestType(p)},Pe=e=>{var t;(t=$(e))==null||t.remove(e.opts)},Ve=e=>{const t=$(e);t&&(e.editor.select(t),S(e,{id:"tableSettings",header:{label:U}}))},W=e=>[{id:i.table,icon:v[i.table],label:"Table",items:[{id:i.tableSettings,label:U,icon:v[i.tableSettings],onClick:({event:o})=>Ve({...e,event:o})},{id:i.tableDelete,label:"Delete table",icon:v[i.tableDelete],onClick:()=>Pe(e)}]}],_=({editor:e})=>{const t=x(e);return t.length&&He(t)},j=({component:e,editor:t,after:o})=>{if(!e.is(b))return;const l=e.closestType(p),s=e.closestType(g),n=e.index()+(o?1:0);l==null||l.findType(g).forEach(a=>a.append({type:b},{at:n}));const r=s==null?void 0:s.components().at(n);r&&t.select(r)},K=({component:e,opts:t})=>{if(!e.is(b))return;const o=e.closestType(p),l=e.index();o==null||o.findType(g).forEach(s=>{var n;return(n=s.components().at(l))==null?void 0:n.remove(t)})},q=({component:e,editor:t})=>{if(!e.is(b))return;const o=e.closestType(p),l=e.index(),s=(o==null?void 0:o.findType(g).map(n=>n.components().at(l)))||[];s.length&&t.em.set(M,s)},X=e=>{const{component:t,editor:o,after:l}=e;if(!t.is(b)||!_(e))return;const s=x(o),n=t.closestType(p),r=t.index()+(l?1:0);n==null||n.findType(g).forEach((a,c)=>{const h=s[c],d=(h==null?void 0:h.clone())||{type:b};a.append(d,{at:r})})},ze=e=>{const{component:t}=e;t.is(b)&&(q(e),K({...e,opts:{temporary:!0}}))},Ae=e=>{const t=_(e);return[{id:i.tableColumnItems,icon:v[i.tableColumn],label:"Column",items:[{id:i.tableColumnInsertBefore,label:"Insert column before",icon:v[i.tableColumnInsertBefore],onClick:()=>j(e)},{id:i.tableColumnInsertAfter,label:"Insert column after",icon:v[i.tableColumnInsertAfter],onClick:()=>j({...e,after:!0})},{id:i.tableColumnDelete,label:"Delete column",icon:v[i.tableColumnDelete],onClick:()=>K(e)},{id:i.tableColumnCut,label:"Cut column",icon:v[i.tableColumnCut],onClick:()=>ze(e)},{id:i.tableColumnCopy,label:"Copy column",icon:v[i.tableColumnCopy],onClick:()=>q(e)},{id:i.tableColumnPasteBefore,label:"Paste column before",icon:v[i.tableColumnPasteBefore],disabled:!t,onClick:()=>X(e)},{id:i.tableColumnPasteAfter,label:"Paste column after",icon:v[i.tableColumnPasteAfter],disabled:!t,onClick:()=>X({...e,after:!0})}]}]},Y="Row settings",xe=e=>e.every(t=>t.is(g)),C=e=>{const{component:t}=e,o=t.is(b),l=t.is(g);if(!(!o&&!l))return l?t:t.closestType(g)},J=e=>{const{component:t,editor:o,after:l}=e,s=C(e);if(!s)return;const n=s.index()+(l?1:0),r=s.components().length,a=Array.from(Array(r).keys()).map(()=>({type:b})),c=s.parent();if(c){const h=c.append({type:g,components:a},{at:n})[0];if(t.is(b)&&h){const d=t.index(),u=h.components().at(d);u&&o.select(u)}}},Q=e=>{var t;(t=C(e))==null||t.remove(e.opts)},ee=e=>{const t=C(e);t&&e.editor.em.set(M,[t])},te=e=>{var a;const{editor:t,after:o}=e,l=C(e);if(!l||!le(e))return;const n=x(t)[0],r=l.index()+(o?1:0);n&&((a=l.parent())==null||a.append(n.clone(),{at:r}))},Be=e=>{C(e)&&(ee(e),Q({...e,opts:{temporary:!0}}))},le=({editor:e})=>{const t=x(e);return t.length&&xe(t)},Ie=e=>{const t=C(e);t&&(e.editor.select(t),S(e,{id:"tableRowSettings",header:{label:Y}}))},oe=e=>{const t=le(e);return[{id:i.tableRowItems,icon:v[i.tableRowProperties],label:"Row",items:[{id:i.tableRowInsertBefore,label:"Insert row before",icon:v[i.tableRowInsertBefore],onClick:()=>J(e)},{id:i.tableRowInsertAfter,label:"Insert row after",icon:v[i.tableRowInsertAfter],onClick:()=>J({...e,after:!0})},{id:i.tableRowDelete,label:"Delete row",icon:v[i.tableRowDelete],onClick:()=>Q(e)},{id:i.tableRowProperties,label:Y,icon:v[i.tableRowProperties],onClick:({event:l})=>Ie({...e,event:l})},{id:i.tableRowCut,label:"Cut row",icon:v[i.tableRowCut],onClick:()=>Be(e)},{id:i.tableRowCopy,label:"Copy row",icon:v[i.tableRowCopy],onClick:()=>ee(e)},{id:i.tableRowPasteBefore,label:"Paste row before",icon:v[i.tableRowPasteBefore],disabled:!t,onClick:()=>te(e)},{id:i.tableRowPasteAfter,label:"Paste row after",icon:v[i.tableRowPasteAfter],disabled:!t,onClick:()=>te({...e,after:!0})}]},...W(e)]},T=e=>{const t=e.attributes.attributes||{},o=parseInt(`${t.rowspan||1}`,10),l=parseInt(`${t.colspan||1}`,10);return{rowspan:o,colspan:l}};function ne(e){const t=[];return e.components().forEach((o,l)=>{o.components().each((s,n)=>{const{rowspan:r,colspan:a}=T(s);if(t[l])for(;t[l][n];)n++;for(let c=l;c<l+r;c++){t[c]||(t[c]=[]);for(let h=n;h<n+a;h++)t[c][h]={real:c===l&&h===n,cell:s,rowspan:r,colspan:a}}})}),t}function H(e,t,o){var l;return(l=e[o])==null?void 0:l[t]}const D=e=>e.closestType(g);function ke(e,{x:t,y:o,rows:l,cols:s}){var a;let n=D(e[o][t].cell),r;for(let c=1;c<=l;c++)if(n=(a=n==null?void 0:n.parent())==null?void 0:a.components().at(n.index()+1),n){for(r=t;r>=0;r--){const{cell:h}=e[o+c][r],d=D(h);if(d===n){for(let u=1;u<=s;u++){const f=h.index();d.append({type:b},{at:f+1})}break}}if(r===-1){const d=n.components().at(0).index();for(let u=1;u<=s;u++)n.append({type:b},{at:d})}}}function se(e){for(let t=0;t<e.length;t++)for(let o=0;o<e[t].length;o++){const s=e[t][o].cell;if(s.em.selected.hasComponent(s)){const{rowspan:n,colspan:r}=T(s);if(r>1||n>1){s.addAttributes({colspan:1,rowspan:1});for(let a=0;a<r-1;a++){const c=s.index();D(s).append({type:b},{at:c+1})}ke(e,{x:o,y:t,rows:n-1,cols:r})}}}}function Me(e){const t=[];e.components().forEach(o=>{o.components().length||t.push(o)}),t.forEach(o=>o.remove())}const B=(e,t={})=>{var r;const o=ne(e),{em:l}=e;let s,n;for(let a=0;a<o.length;a++)for(let c=0;c<o[a].length;c++){const h=o[a][c];if((r=t.selected)!=null&&r.includes(h.cell)||l.selected.hasComponent(h.cell)){const d={x:c,y:a};s||(s=d),n=d}}return{grid:o,startPos:s,endPos:n}};function Se(e,t={}){const o=B(e),{startPos:l,endPos:s}=o;let{grid:n}=o;const{em:r}=e;if(!l||!s)return;const a=l.x,c=l.y,h=s.x,d=s.y,u=H(n,a,c),f=H(n,h,d);if(u&&f){se(n),n=ne(e);const P=[],z=H(n,a,c).cell;z.addAttributes({colspan:h-a+1,rowspan:d-c+1});for(let m=c;m<=d;m++)for(let A=a;A<=h;A++){const I=H(n,A,m);if(!I)continue;const{cell:re}=I;re!==z&&P.push(re)}P.forEach(m=>{t.mergeContent&&z.append(m.components().models),m.remove()}),r.setSelected(z),Me(e)}}const ae="Cell settings",Te="Merge cells",De="Split cell",Le=e=>e.closestType(g),R=e=>{var t;return(t=Le(e))==null?void 0:t.parent()},Ee=e=>{const t=e.editor.getSelectedAll(),o=R(t[0]),l=t[0];if(!o||!(l!=null&&l.is(b))||t.length>1)return!1;const{rowspan:s,colspan:n}=T(l);return!(n<2&&s<2)},Ge=e=>{const o=e.editor.getSelectedAll()[0],l=R(o),{grid:s}=B(l);se(s)},ce=e=>{const t=e.editor.getSelectedAll(),o=R(t[0]);if(!o||t.length<2||t.some(a=>!a.is(b)||R(a)!==o))return!1;const{grid:l,startPos:s,endPos:n}=B(o),{em:r}=o;if(!s||!n)return!1;for(let a=s.y;a<=n.y;a++)for(let c=s.x;c<=n.x;c++){const h=H(l,c,a);if(!h||!r.selected.hasComponent(h.cell))return!1}return!0},Ze=e=>{const{editor:t}=e;if(!ce(e))return;const o=t.getSelectedAll(),l=R(o[0]);Se(l,{mergeContent:!0})},Ne=e=>{S(e,{id:"tableCellSettings",header:{label:ae}})},Fe=e=>[{id:i.tableCellItems,icon:v[i.tableCellProperties],label:"Cell",items:[{id:i.tableCellProperties,label:ae,icon:v[i.tableCellProperties],onClick:({event:o})=>Ne({...e,event:o})},{id:i.tableCellMerge,label:Te,icon:v[i.tableCellMerge],onClick:()=>Ze(e),disabled:!ce(e)},{id:i.tableCellSplit,label:De,icon:v[i.tableCellSplit],onClick:()=>Ge(e),disabled:!Ee(e)}]},...Ae(e),...oe(e)],Oe=e=>{const t=e[0]&&R(e[0]);if(!t)return;const{grid:o,startPos:l,endPos:s}=B(t,{selected:e});if(!l||!s)return;const n=[];for(let r=l.y;r<=s.y;r++)for(let a=l.x;a<=s.x;a++){const c=H(o,a,r);c&&n.push(c.cell)}n.length&&t.em.setSelected(n,{fromCell:!0})};return pe(function(e,t={}){const o={block:{},...t},{Components:l}=e,s={copyable:!1,emptyState:!0,highlightable:!1,stylable:["color","font-family","font-size","font-weight","line-height","text-align","vertical-align","background-color","border-width","border-style","border-color"]};l.addType(p,{block:o.block&&{label:"Table",media:v.table,category:"Extra",content:{type:p,style:{width:"100%"}},select:!0,...o.block},model:{defaults:{emptyState:!0,highlightable:!1,icon:v.table,stylable:["width","height","margin","font-family","font-size","font-weight","line-height","text-align","background","background-color","border-width","border-style","border-color"],traits:[{type:"number",min:0,name:"cellspacing",label:"Cell spacing"},{type:"number",min:0,name:"cellpadding",label:"Cell padding"},{id:"tableCaption",type:"checkbox",label:"Caption",setValue({component:r,value:a,emitUpdate:c}){const h=r.find("caption")[0];a?!h&&r.append({type:"text",tagName:"caption",components:{type:"textnode",content:"Caption"}}):h==null||h.remove(),c(),e.refresh({tools:!0})},getValue(r){return!!r.component.find("caption")[0]}}],components:Re(k,{rows:5}),contextMenu:({items:r,editor:a,component:c})=>[...W({editor:a,component:c,opts:o}),...r]}}}),l.addType(F,{model:{defaults:{icon:v.tableHead,...s}}}),l.addType(O,{model:{defaults:{icon:v.tableFoot,...s}}}),l.addType(k,{model:{defaults:{icon:v.tableRowProperties,...s}}}),l.addType(g,{model:{defaults:{icon:v.tableRowProperties,emptyState:!0,highlightable:!1,stylable:["height","text-align","border-width","border-style","border-color"],traits:[],contextMenu:({items:r,editor:a,component:c})=>[...oe({editor:a,component:c,opts:o}),...r]}}}),l.addType(b,{model:{defaults:{icon:v.tableCellProperties,emptyState:{styleOut:"height: 1px"},stylable:["width","height","padding","background","background-color","text-align","vertical-align","border-width","border-style","border-color"],traits:[{id:"tableCellType",type:"select",options:[{value:"td",name:"Cell"},{value:"th",name:"Header Cell"}],label:"Cell type",name:"tagName",changeProp:!0},{id:"tableCellScope",type:"select",options:[{value:!1,name:"None"},{value:"row",name:"Row"},{value:"col",name:"Column"},{value:"rowgroup",name:"Row group"},{value:"colgroup",name:"Column group"}],label:"Scope",name:"scope"}],contextMenu:({items:r,editor:a,component:c})=>[...Fe({editor:a,component:c,opts:o}),...r]}}});const n=V((r,a)=>{var u;const c=e.getSelectedAll(),h=!!((u=a==null?void 0:a.event)!=null&&u.shiftKey);if(c.length<2||!h||a.fromCell)return;const d=c.map(f=>f.is(b)?f:f.closestType(b)).filter(Boolean);d.length===c.length&&Oe(d)},0);e.on("component:select",n),fe({editor:e,plan:ye,pluginName:we,licenseKey:o.licenseKey,cleanup:()=>{e.off("component:select",n),e.Blocks.remove(p),Ce.forEach(r=>l.removeType(r))}})})});
@@ -0,0 +1,28 @@
1
+ import { ConditionType, DataCollectionResolverProps, DataVariableResolverProps, GetCustomPath, IDataSourceExporter, ITemplateImporter } from '@studio/editor/src/typeConfigs/dataSources';
2
+ import { Component, Editor, LogicGroupProps } from 'grapesjs';
3
+ export declare class DataSourceExporter {
4
+ private strategy;
5
+ private requiredHelpers;
6
+ private helperLibrary;
7
+ constructor(strategy: IDataSourceExporter);
8
+ registerHelper(helperId: string): void;
9
+ generateVariable(options: DataVariableResolverProps): string;
10
+ generateCollectionStart(options: DataCollectionResolverProps): string;
11
+ generateCollectionEnd(): string;
12
+ generateConditionalStart(condition: any): string;
13
+ generateConditionElse(): string;
14
+ generateConditionalEnd(): string;
15
+ reset(): void;
16
+ }
17
+ export declare function resolveCustomDataPath({ component, value, getCustomPath }: {
18
+ component: Component;
19
+ value: any;
20
+ getCustomPath?: GetCustomPath;
21
+ }): any;
22
+ export declare const extendDataComponents: (editor: Editor) => void;
23
+ export declare const isLogicCondition: (condition: ConditionType) => condition is LogicGroupProps;
24
+ export declare const setupExporter: (editor: Editor, strategy: IDataSourceExporter) => () => void;
25
+ export declare const setupImporter: (editor: Editor, props: {
26
+ contains?: string;
27
+ importer: ITemplateImporter;
28
+ }) => () => void;
@@ -1 +1 @@
1
- "use strict";var p=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(p||{}),h=(e=>(e.toastAdd="studio:toastAdd",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.sidebarLeftSet="studio:sidebarLeft:set",e.sidebarLeftGet="studio:sidebarLeft:get",e.sidebarLeftToggle="studio:sidebarLeft:toggle",e.sidebarRightSet="studio:sidebarRight:set",e.sidebarRightGet="studio:sidebarRight:get",e.sidebarRightToggle="studio:sidebarRight:toggle",e.sidebarTopSet="studio:sidebarTop:set",e.sidebarTopGet="studio:sidebarTop:get",e.sidebarTopToggle="studio:sidebarTop:toggle",e.sidebarBottomSet="studio:sidebarBottom:set",e.sidebarBottomGet="studio:sidebarBottom:get",e.sidebarBottomToggle="studio:sidebarBottom:toggle",e.symbolAdd="studio:symbolAdd",e.symbolDetach="studio:symbolDetach",e.symbolOverride="studio:symbolOverride",e.symbolPropagateStyles="studio:propagateStyles",e.getPagesConfig="studio:getPagesConfig",e.setPagesConfig="studio:setPagesConfig",e.getPageSettings="studio:getPageSettings",e.setPageSettings="studio:setPageSettings",e.projectFiles="studio:projectFiles",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.getStateContextMenu="studio:getStateContextMenu",e.setStateContextMenu="studio:setStateContextMenu",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e.layoutUpdate="studio:layoutUpdate",e.layoutGet="studio:layoutGet",e.layoutConfigGet="studio:layoutConfigGet",e.layoutConfigSet="studio:layoutConfigSet",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.setDragAbsolute="studio:setDragAbsolute",e))(h||{});const P="app.grapesjs.com",A="app-stage.grapesjs.com",f=[P,A,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],R="license:check:start",I="license:check:end",U=()=>typeof window<"u",x=({isDev:e,isStage:o})=>`${e?"":`https://${o?A:P}`}/api`,G=()=>{const e=U()&&window.location.hostname;return!!e&&(f.includes(e)||f.some(o=>e.endsWith(o)))};async function O({path:e,baseApiUrl:o,method:a="GET",headers:n={},params:c,body:u}){const t=`${o||x({isDev:!1,isStage:!1})}${e}`,i={method:a,headers:{"Content-Type":"application/json",...n}};u&&(i.body=JSON.stringify(u));const l=c?new URLSearchParams(c).toString():"",s=l?`?${l}`:"",r=await fetch(`${t}${s}`,i);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}const v={[p.free]:0,[p.startup]:10,[p.business]:20,[p.enterprise]:30};function $(e){const o=e;return o.init=a=>n=>e(n,a),o}const D=e=>$(e);async function M({editor:e,plan:o,pluginName:a,licenseKey:n,cleanup:c}){let u="",d=!1;const t=G(),i=s=>{console.warn("Cleanup plugin:",a,"Reason:",s),c()},l=(s={})=>{var b;const{error:r,sdkLicense:y}=s,g=(b=s.plan)==null?void 0:b.category;if(!(y||s.license)||r)i(r||"Invalid license");else if(g){const L=v[o],k=v[g];L>k&&i({pluginRequiredPlan:o,licensePlan:g})}};e.on(R,s=>{u=s==null?void 0:s.baseApiUrl,d=!0}),e.on(I,s=>{l(s)}),setTimeout(async()=>{if(!d){if(t)return;if(n){const s=await B({licenseKey:n,pluginName:a,baseApiUrl:u});s&&l(s)}else i("The `licenseKey` option not provided")}},2e3)}async function B(e){const{licenseKey:o,pluginName:a,baseApiUrl:n}=e;try{return(await O({baseApiUrl:n,path:`/sdk/${o||"na"}`,method:"POST",params:{d:window.location.hostname,pn:a}})).result||{}}catch(c){return console.error("Error during SDK license check:",c),!1}}const E=e=>{const o={};for(const a of Object.keys(e)){let n=e[a];n&&(Array.isArray(n)?n=n.map(c=>c.toString()).join(","):n=n.toString(),o[a]=n)}return new URLSearchParams(o)},T="youtube-video",j=e=>{const{apiKey:o,searchParams:a,thumbnailQuality:n="high"}=e,c=(t={})=>{const l="https://www.googleapis.com/youtube/v3/search",s=E(t);return`${l}?${s}`},u=t=>{var i,l,s;return((i=t[n])==null?void 0:i.url)||((l=t.high)==null?void 0:l.url)||((s=t.medium)==null?void 0:s.url)||t.default.url},d=t=>{const i=u(t.snippet.thumbnails);return{id:t.id.videoId,src:`https://www.youtube.com/watch?v=${t.id.videoId}`,name:t.snippet.title,type:T,customData:{thumbnailUrl:i,videoItem:t}}};return{id:"youtube",types:[T],label:({editor:t})=>t.I18n.t("youtubeAssetProvider.providerLabel"),search:{reloadOnInput:!0,debounceMs:1e3},async onLoad({searchValue:t,pageCustomData:i}){var b;const l={maxResults:25,q:t,pageToken:i==null?void 0:i.token,type:["video"],key:o},s=a==null?void 0:a({searchValue:t}),r={...l,...s};r.part?r.part.includes("snippet")||r.part.push("snippet"):r.part=["snippet"];const g=await(await fetch(c(r))).json();return(b=g.items)!=null&&b.length?{items:g.items.map(d),nextPageCustomData:{token:g.nextPageToken},isLastPage:!g.nextPageToken}:{items:[],isLastPage:!0}},itemLayout:({assetProps:t,onSelect:i})=>({type:"column",onClick:()=>i(t),htmlAttrs:{title:t.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"custom",render:()=>{var l;return`<img src="${(l=t.customData)==null?void 0:l.thumbnailUrl}" alt="${t.name}" style="width: 100%; height: 100px; object-fit: cover">`}},{type:"text",content:t.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",paddingLeft:8,paddingRight:8}}]})}},N={youtubeAssetProvider:{searchBtn:"Search on YouTube",modalTitle:"Select YouTube Video",providerLabel:"YouTube Videos"}},W="youtubeAssetProvider",Y=p.startup,_=function(e,o){var l;const{skipVideoComponent:a,i18n:n={}}=o,c=j(o);e.runCommand(h.assetProviderAdd,{provider:c});const u="search-on-youtube",d="video",t=(l=e.Components.getType(d))==null?void 0:l.model.prototype,i=s=>{e.Assets.open({modalTitle:e.I18n.t("youtubeAssetProvider.modalTitle"),providerId:c.id,providers:[],types:[],select:r=>{e.Assets.close(),s.set({videoId:r.attributes.id})},content:{header:{addUrl:!1,upload:!1}}})};!a&&t&&e.Components.addType(d,{model:{getYoutubeTraits(){const[s,...r]=t.getYoutubeTraits.apply(this);return[s,{id:u,type:"button",label:e.I18n.t("youtubeAssetProvider.searchBtn"),command:()=>i(this)},...r]}},view:{events:()=>({dblclick:"onActive"}),onActive(){const{model:s}=this,r=s.get("provider")||"";r!=null&&r.startsWith("yt")&&i(s)}}}),e.I18n.addMessages({en:N,...n}),M({editor:e,licenseKey:o.licenseKey,plan:Y,pluginName:W,cleanup:()=>{e.runCommand(h.assetProviderRemove,{id:c.id}),!a&&t&&e.Components.addType(d,{model:{getYoutubeTraits(){return t.getYoutubeTraits.apply(this).filter(s=>s.id!==u)}}})}})},K=D(_);module.exports=K;
1
+ "use strict";var g=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(g||{}),h=(e=>(e.toastAdd="studio:toastAdd",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.sidebarLeftSet="studio:sidebarLeft:set",e.sidebarLeftGet="studio:sidebarLeft:get",e.sidebarLeftToggle="studio:sidebarLeft:toggle",e.sidebarRightSet="studio:sidebarRight:set",e.sidebarRightGet="studio:sidebarRight:get",e.sidebarRightToggle="studio:sidebarRight:toggle",e.sidebarTopSet="studio:sidebarTop:set",e.sidebarTopGet="studio:sidebarTop:get",e.sidebarTopToggle="studio:sidebarTop:toggle",e.sidebarBottomSet="studio:sidebarBottom:set",e.sidebarBottomGet="studio:sidebarBottom:get",e.sidebarBottomToggle="studio:sidebarBottom:toggle",e.symbolAdd="studio:symbolAdd",e.symbolDetach="studio:symbolDetach",e.symbolOverride="studio:symbolOverride",e.symbolPropagateStyles="studio:propagateStyles",e.getPagesConfig="studio:getPagesConfig",e.setPagesConfig="studio:setPagesConfig",e.getPageSettings="studio:getPageSettings",e.setPageSettings="studio:setPageSettings",e.projectFiles="studio:projectFiles",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.getStateContextMenu="studio:getStateContextMenu",e.setStateContextMenu="studio:setStateContextMenu",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e.layoutUpdate="studio:layoutUpdate",e.layoutGet="studio:layoutGet",e.layoutConfigGet="studio:layoutConfigGet",e.layoutConfigSet="studio:layoutConfigSet",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.dataSourceSetGlobalData="studio:dataSourceSetGlobalData",e.dataSourceSetImporter="studio:dataSourceSetImporter",e.dataSourceSetExporter="studio:dataSourceSetExporter",e.setDragAbsolute="studio:setDragAbsolute",e))(h||{});const P="app.grapesjs.com",A="app-stage.grapesjs.com",f=[P,A,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],R="license:check:start",I="license:check:end",U=()=>typeof window<"u",x=({isDev:e,isStage:o})=>`${e?"":`https://${o?A:P}`}/api`,G=()=>{const e=U()&&window.location.hostname;return!!e&&(f.includes(e)||f.some(o=>e.endsWith(o)))};async function D({path:e,baseApiUrl:o,method:a="GET",headers:n={},params:c,body:u}){const t=`${o||x({isDev:!1,isStage:!1})}${e}`,i={method:a,headers:{"Content-Type":"application/json",...n}};u&&(i.body=JSON.stringify(u));const l=c?new URLSearchParams(c).toString():"",s=l?`?${l}`:"",r=await fetch(`${t}${s}`,i);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}const v={[g.free]:0,[g.startup]:10,[g.business]:20,[g.enterprise]:30};function O(e){const o=e;return o.init=a=>n=>e(n,a),o}const $=e=>O(e);async function E({editor:e,plan:o,pluginName:a,licenseKey:n,cleanup:c}){let u="",d=!1;const t=G(),i=s=>{console.warn("Cleanup plugin:",a,"Reason:",s),c()},l=(s={})=>{var b;const{error:r,sdkLicense:y}=s,p=(b=s.plan)==null?void 0:b.category;if(!(y||s.license)||r)i(r||"Invalid license");else if(p){const L=v[o],k=v[p];L>k&&i({pluginRequiredPlan:o,licensePlan:p})}};e.on(R,s=>{u=s==null?void 0:s.baseApiUrl,d=!0}),e.on(I,s=>{l(s)}),setTimeout(async()=>{if(!d){if(t)return;if(n){const s=await M({licenseKey:n,pluginName:a,baseApiUrl:u});s&&l(s)}else i("The `licenseKey` option not provided")}},2e3)}async function M(e){const{licenseKey:o,pluginName:a,baseApiUrl:n}=e;try{return(await D({baseApiUrl:n,path:`/sdk/${o||"na"}`,method:"POST",params:{d:window.location.hostname,pn:a}})).result||{}}catch(c){return console.error("Error during SDK license check:",c),!1}}const B=e=>{const o={};for(const a of Object.keys(e)){let n=e[a];n&&(Array.isArray(n)?n=n.map(c=>c.toString()).join(","):n=n.toString(),o[a]=n)}return new URLSearchParams(o)},T="youtube-video",j=e=>{const{apiKey:o,searchParams:a,thumbnailQuality:n="high"}=e,c=(t={})=>{const l="https://www.googleapis.com/youtube/v3/search",s=B(t);return`${l}?${s}`},u=t=>{var i,l,s;return((i=t[n])==null?void 0:i.url)||((l=t.high)==null?void 0:l.url)||((s=t.medium)==null?void 0:s.url)||t.default.url},d=t=>{const i=u(t.snippet.thumbnails);return{id:t.id.videoId,src:`https://www.youtube.com/watch?v=${t.id.videoId}`,name:t.snippet.title,type:T,customData:{thumbnailUrl:i,videoItem:t}}};return{id:"youtube",types:[T],label:({editor:t})=>t.I18n.t("youtubeAssetProvider.providerLabel"),search:{reloadOnInput:!0,debounceMs:1e3},async onLoad({searchValue:t,pageCustomData:i}){var b;const l={maxResults:25,q:t,pageToken:i==null?void 0:i.token,type:["video"],key:o},s=a==null?void 0:a({searchValue:t}),r={...l,...s};r.part?r.part.includes("snippet")||r.part.push("snippet"):r.part=["snippet"];const p=await(await fetch(c(r))).json();return(b=p.items)!=null&&b.length?{items:p.items.map(d),nextPageCustomData:{token:p.nextPageToken},isLastPage:!p.nextPageToken}:{items:[],isLastPage:!0}},itemLayout:({assetProps:t,onSelect:i})=>({type:"column",onClick:()=>i(t),htmlAttrs:{title:t.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"custom",render:()=>{var l;return`<img src="${(l=t.customData)==null?void 0:l.thumbnailUrl}" alt="${t.name}" style="width: 100%; height: 100px; object-fit: cover">`}},{type:"text",content:t.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",paddingLeft:8,paddingRight:8}}]})}},N={youtubeAssetProvider:{searchBtn:"Search on YouTube",modalTitle:"Select YouTube Video",providerLabel:"YouTube Videos"}},W="youtubeAssetProvider",Y=g.startup,_=function(e,o){var l;const{skipVideoComponent:a,i18n:n={}}=o,c=j(o);e.runCommand(h.assetProviderAdd,{provider:c});const u="search-on-youtube",d="video",t=(l=e.Components.getType(d))==null?void 0:l.model.prototype,i=s=>{e.Assets.open({modalTitle:e.I18n.t("youtubeAssetProvider.modalTitle"),providerId:c.id,providers:[],types:[],select:r=>{e.Assets.close(),s.set({videoId:r.attributes.id})},content:{header:{addUrl:!1,upload:!1}}})};!a&&t&&e.Components.addType(d,{model:{getYoutubeTraits(){const[s,...r]=t.getYoutubeTraits.apply(this);return[s,{id:u,type:"button",label:e.I18n.t("youtubeAssetProvider.searchBtn"),command:()=>i(this)},...r]}},view:{events:()=>({dblclick:"onActive"}),onActive(){const{model:s}=this,r=s.get("provider")||"";r!=null&&r.startsWith("yt")&&i(s)}}}),e.I18n.addMessages({en:N,...n}),E({editor:e,licenseKey:o.licenseKey,plan:Y,pluginName:W,cleanup:()=>{e.runCommand(h.assetProviderRemove,{id:c.id}),!a&&t&&e.Components.addType(d,{model:{getYoutubeTraits(){return t.getYoutubeTraits.apply(this).filter(s=>s.id!==u)}}})}})},K=$(_);module.exports=K;
@@ -1,4 +1,4 @@
1
- var p = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(p || {}), h = /* @__PURE__ */ ((e) => (e.toastAdd = "studio:toastAdd", e.dialogOpen = "studio:dialogOpen", e.dialogClose = "studio:dialogClose", e.sidebarLeftSet = "studio:sidebarLeft:set", e.sidebarLeftGet = "studio:sidebarLeft:get", e.sidebarLeftToggle = "studio:sidebarLeft:toggle", e.sidebarRightSet = "studio:sidebarRight:set", e.sidebarRightGet = "studio:sidebarRight:get", e.sidebarRightToggle = "studio:sidebarRight:toggle", e.sidebarTopSet = "studio:sidebarTop:set", e.sidebarTopGet = "studio:sidebarTop:get", e.sidebarTopToggle = "studio:sidebarTop:toggle", e.sidebarBottomSet = "studio:sidebarBottom:set", e.sidebarBottomGet = "studio:sidebarBottom:get", e.sidebarBottomToggle = "studio:sidebarBottom:toggle", e.symbolAdd = "studio:symbolAdd", e.symbolDetach = "studio:symbolDetach", e.symbolOverride = "studio:symbolOverride", e.symbolPropagateStyles = "studio:propagateStyles", e.getPagesConfig = "studio:getPagesConfig", e.setPagesConfig = "studio:setPagesConfig", e.getPageSettings = "studio:getPageSettings", e.setPageSettings = "studio:setPageSettings", e.projectFiles = "studio:projectFiles", e.canvasReload = "studio:canvasReload", e.getBlocksPanel = "studio:getBlocksPanel", e.setBlocksPanel = "studio:setBlocksPanel", e.getStateContextMenu = "studio:getStateContextMenu", e.setStateContextMenu = "studio:setStateContextMenu", e.contextMenuComponent = "studio:contextMenuComponent", e.layoutAdd = "studio:layoutAdd", e.layoutRemove = "studio:layoutRemove", e.layoutToggle = "studio:layoutToggle", e.layoutUpdate = "studio:layoutUpdate", e.layoutGet = "studio:layoutGet", e.layoutConfigGet = "studio:layoutConfigGet", e.layoutConfigSet = "studio:layoutConfigSet", e.getStateTheme = "studio:getStateTheme", e.setStateTheme = "studio:setStateTheme", e.assetProviderGet = "studio:assetProviderGet", e.assetProviderAdd = "studio:assetProviderAdd", e.assetProviderRemove = "studio:assetProviderRemove", e.fontGet = "studio:fontGet", e.fontAdd = "studio:fontAdd", e.fontRemove = "studio:fontRemove", e.fontManagerOpen = "studio:fontManagerOpen", e.menuFontLoad = "studio:menuFontLoad", e.toggleStateDataSource = "studio:toggleStateDataSource", e.getStateDataSource = "studio:getStateDataSource", e.setDragAbsolute = "studio:setDragAbsolute", e))(h || {});
1
+ var g = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(g || {}), h = /* @__PURE__ */ ((e) => (e.toastAdd = "studio:toastAdd", e.dialogOpen = "studio:dialogOpen", e.dialogClose = "studio:dialogClose", e.sidebarLeftSet = "studio:sidebarLeft:set", e.sidebarLeftGet = "studio:sidebarLeft:get", e.sidebarLeftToggle = "studio:sidebarLeft:toggle", e.sidebarRightSet = "studio:sidebarRight:set", e.sidebarRightGet = "studio:sidebarRight:get", e.sidebarRightToggle = "studio:sidebarRight:toggle", e.sidebarTopSet = "studio:sidebarTop:set", e.sidebarTopGet = "studio:sidebarTop:get", e.sidebarTopToggle = "studio:sidebarTop:toggle", e.sidebarBottomSet = "studio:sidebarBottom:set", e.sidebarBottomGet = "studio:sidebarBottom:get", e.sidebarBottomToggle = "studio:sidebarBottom:toggle", e.symbolAdd = "studio:symbolAdd", e.symbolDetach = "studio:symbolDetach", e.symbolOverride = "studio:symbolOverride", e.symbolPropagateStyles = "studio:propagateStyles", e.getPagesConfig = "studio:getPagesConfig", e.setPagesConfig = "studio:setPagesConfig", e.getPageSettings = "studio:getPageSettings", e.setPageSettings = "studio:setPageSettings", e.projectFiles = "studio:projectFiles", e.canvasReload = "studio:canvasReload", e.getBlocksPanel = "studio:getBlocksPanel", e.setBlocksPanel = "studio:setBlocksPanel", e.getStateContextMenu = "studio:getStateContextMenu", e.setStateContextMenu = "studio:setStateContextMenu", e.contextMenuComponent = "studio:contextMenuComponent", e.layoutAdd = "studio:layoutAdd", e.layoutRemove = "studio:layoutRemove", e.layoutToggle = "studio:layoutToggle", e.layoutUpdate = "studio:layoutUpdate", e.layoutGet = "studio:layoutGet", e.layoutConfigGet = "studio:layoutConfigGet", e.layoutConfigSet = "studio:layoutConfigSet", e.getStateTheme = "studio:getStateTheme", e.setStateTheme = "studio:setStateTheme", e.assetProviderGet = "studio:assetProviderGet", e.assetProviderAdd = "studio:assetProviderAdd", e.assetProviderRemove = "studio:assetProviderRemove", e.fontGet = "studio:fontGet", e.fontAdd = "studio:fontAdd", e.fontRemove = "studio:fontRemove", e.fontManagerOpen = "studio:fontManagerOpen", e.menuFontLoad = "studio:menuFontLoad", e.toggleStateDataSource = "studio:toggleStateDataSource", e.getStateDataSource = "studio:getStateDataSource", e.dataSourceSetGlobalData = "studio:dataSourceSetGlobalData", e.dataSourceSetImporter = "studio:dataSourceSetImporter", e.dataSourceSetExporter = "studio:dataSourceSetExporter", e.setDragAbsolute = "studio:setDragAbsolute", e))(h || {});
2
2
  const P = "app.grapesjs.com", A = "app-stage.grapesjs.com", f = [
3
3
  P,
4
4
  A,
@@ -14,7 +14,7 @@ const P = "app.grapesjs.com", A = "app-stage.grapesjs.com", f = [
14
14
  const e = U() && window.location.hostname;
15
15
  return !!e && (f.includes(e) || f.some((o) => e.endsWith(o)));
16
16
  };
17
- async function O({
17
+ async function D({
18
18
  path: e,
19
19
  baseApiUrl: o,
20
20
  method: a = "GET",
@@ -36,17 +36,17 @@ async function O({
36
36
  return r.json();
37
37
  }
38
38
  const v = {
39
- [p.free]: 0,
40
- [p.startup]: 10,
41
- [p.business]: 20,
42
- [p.enterprise]: 30
39
+ [g.free]: 0,
40
+ [g.startup]: 10,
41
+ [g.business]: 20,
42
+ [g.enterprise]: 30
43
43
  };
44
- function $(e) {
44
+ function O(e) {
45
45
  const o = e;
46
46
  return o.init = (a) => (n) => e(n, a), o;
47
47
  }
48
- const D = (e) => /* @__PURE__ */ $(e);
49
- async function M({
48
+ const $ = (e) => /* @__PURE__ */ O(e);
49
+ async function E({
50
50
  editor: e,
51
51
  plan: o,
52
52
  pluginName: a,
@@ -58,12 +58,12 @@ async function M({
58
58
  console.warn("Cleanup plugin:", a, "Reason:", s), c();
59
59
  }, l = (s = {}) => {
60
60
  var b;
61
- const { error: r, sdkLicense: y } = s, g = (b = s.plan) == null ? void 0 : b.category;
61
+ const { error: r, sdkLicense: y } = s, p = (b = s.plan) == null ? void 0 : b.category;
62
62
  if (!(y || s.license) || r)
63
63
  i(r || "Invalid license");
64
- else if (g) {
65
- const L = v[o], k = v[g];
66
- L > k && i({ pluginRequiredPlan: o, licensePlan: g });
64
+ else if (p) {
65
+ const L = v[o], k = v[p];
66
+ L > k && i({ pluginRequiredPlan: o, licensePlan: p });
67
67
  }
68
68
  };
69
69
  e.on(R, (s) => {
@@ -74,17 +74,17 @@ async function M({
74
74
  if (!d) {
75
75
  if (t) return;
76
76
  if (n) {
77
- const s = await B({ licenseKey: n, pluginName: a, baseApiUrl: u });
77
+ const s = await M({ licenseKey: n, pluginName: a, baseApiUrl: u });
78
78
  s && l(s);
79
79
  } else
80
80
  i("The `licenseKey` option not provided");
81
81
  }
82
82
  }, 2e3);
83
83
  }
84
- async function B(e) {
84
+ async function M(e) {
85
85
  const { licenseKey: o, pluginName: a, baseApiUrl: n } = e;
86
86
  try {
87
- return (await O({
87
+ return (await D({
88
88
  baseApiUrl: n,
89
89
  path: `/sdk/${o || "na"}`,
90
90
  method: "POST",
@@ -97,7 +97,7 @@ async function B(e) {
97
97
  return console.error("Error during SDK license check:", c), !1;
98
98
  }
99
99
  }
100
- const E = (e) => {
100
+ const B = (e) => {
101
101
  const o = {};
102
102
  for (const a of Object.keys(e)) {
103
103
  let n = e[a];
@@ -106,7 +106,7 @@ const E = (e) => {
106
106
  return new URLSearchParams(o);
107
107
  }, T = "youtube-video", j = (e) => {
108
108
  const { apiKey: o, searchParams: a, thumbnailQuality: n = "high" } = e, c = (t = {}) => {
109
- const l = "https://www.googleapis.com/youtube/v3/search", s = E(t);
109
+ const l = "https://www.googleapis.com/youtube/v3/search", s = B(t);
110
110
  return `${l}?${s}`;
111
111
  }, u = (t) => {
112
112
  var i, l, s;
@@ -139,11 +139,11 @@ const E = (e) => {
139
139
  ...s
140
140
  };
141
141
  r.part ? r.part.includes("snippet") || r.part.push("snippet") : r.part = ["snippet"];
142
- const g = await (await fetch(c(r))).json();
143
- return (b = g.items) != null && b.length ? {
144
- items: g.items.map(d),
145
- nextPageCustomData: { token: g.nextPageToken },
146
- isLastPage: !g.nextPageToken
142
+ const p = await (await fetch(c(r))).json();
143
+ return (b = p.items) != null && b.length ? {
144
+ items: p.items.map(d),
145
+ nextPageCustomData: { token: p.nextPageToken },
146
+ isLastPage: !p.nextPageToken
147
147
  } : { items: [], isLastPage: !0 };
148
148
  },
149
149
  itemLayout: ({ assetProps: t, onSelect: i }) => ({
@@ -186,7 +186,7 @@ const E = (e) => {
186
186
  modalTitle: "Select YouTube Video",
187
187
  providerLabel: "YouTube Videos"
188
188
  }
189
- }, W = "youtubeAssetProvider", Y = p.startup, _ = function(e, o) {
189
+ }, W = "youtubeAssetProvider", Y = g.startup, _ = function(e, o) {
190
190
  var l;
191
191
  const { skipVideoComponent: a, i18n: n = {} } = o, c = j(o);
192
192
  e.runCommand(h.assetProviderAdd, { provider: c });
@@ -236,7 +236,7 @@ const E = (e) => {
236
236
  }), e.I18n.addMessages({
237
237
  en: N,
238
238
  ...n
239
- }), M({
239
+ }), E({
240
240
  editor: e,
241
241
  licenseKey: o.licenseKey,
242
242
  plan: Y,
@@ -251,7 +251,7 @@ const E = (e) => {
251
251
  });
252
252
  }
253
253
  });
254
- }, K = D(_);
254
+ }, K = $(_);
255
255
  export {
256
256
  K as default
257
257
  };
@@ -1 +1 @@
1
- (function(u,b){typeof exports=="object"&&typeof module<"u"?module.exports=b():typeof define=="function"&&define.amd?define(b):(u=typeof globalThis<"u"?globalThis:u||self,u.StudioSdkPlugins_youtubeAssetProvider=b())})(this,function(){"use strict";var u=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(u||{}),b=(e=>(e.toastAdd="studio:toastAdd",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.sidebarLeftSet="studio:sidebarLeft:set",e.sidebarLeftGet="studio:sidebarLeft:get",e.sidebarLeftToggle="studio:sidebarLeft:toggle",e.sidebarRightSet="studio:sidebarRight:set",e.sidebarRightGet="studio:sidebarRight:get",e.sidebarRightToggle="studio:sidebarRight:toggle",e.sidebarTopSet="studio:sidebarTop:set",e.sidebarTopGet="studio:sidebarTop:get",e.sidebarTopToggle="studio:sidebarTop:toggle",e.sidebarBottomSet="studio:sidebarBottom:set",e.sidebarBottomGet="studio:sidebarBottom:get",e.sidebarBottomToggle="studio:sidebarBottom:toggle",e.symbolAdd="studio:symbolAdd",e.symbolDetach="studio:symbolDetach",e.symbolOverride="studio:symbolOverride",e.symbolPropagateStyles="studio:propagateStyles",e.getPagesConfig="studio:getPagesConfig",e.setPagesConfig="studio:setPagesConfig",e.getPageSettings="studio:getPageSettings",e.setPageSettings="studio:setPageSettings",e.projectFiles="studio:projectFiles",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.getStateContextMenu="studio:getStateContextMenu",e.setStateContextMenu="studio:setStateContextMenu",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e.layoutUpdate="studio:layoutUpdate",e.layoutGet="studio:layoutGet",e.layoutConfigGet="studio:layoutConfigGet",e.layoutConfigSet="studio:layoutConfigSet",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.setDragAbsolute="studio:setDragAbsolute",e))(b||{});const f="app.grapesjs.com",y="app-stage.grapesjs.com",v=[f,y,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],w="license:check:start",L="license:check:end",k=()=>typeof window<"u",R=({isDev:e,isStage:o})=>`${e?"":`https://${o?y:f}`}/api`,I=()=>{const e=k()&&window.location.hostname;return!!e&&(v.includes(e)||v.some(o=>e.endsWith(o)))};async function U({path:e,baseApiUrl:o,method:a="GET",headers:n={},params:c,body:d}){const t=`${o||R({isDev:!1,isStage:!1})}${e}`,i={method:a,headers:{"Content-Type":"application/json",...n}};d&&(i.body=JSON.stringify(d));const l=c?new URLSearchParams(c).toString():"",s=l?`?${l}`:"",r=await fetch(`${t}${s}`,i);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}const T={[u.free]:0,[u.startup]:10,[u.business]:20,[u.enterprise]:30};function x(e){const o=e;return o.init=a=>n=>e(n,a),o}const G=e=>x(e);async function O({editor:e,plan:o,pluginName:a,licenseKey:n,cleanup:c}){let d="",p=!1;const t=I(),i=s=>{console.warn("Cleanup plugin:",a,"Reason:",s),c()},l=(s={})=>{var h;const{error:r,sdkLicense:A}=s,g=(h=s.plan)==null?void 0:h.category;if(!(A||s.license)||r)i(r||"Invalid license");else if(g){const W=T[o],Y=T[g];W>Y&&i({pluginRequiredPlan:o,licensePlan:g})}};e.on(w,s=>{d=s==null?void 0:s.baseApiUrl,p=!0}),e.on(L,s=>{l(s)}),setTimeout(async()=>{if(!p){if(t)return;if(n){const s=await $({licenseKey:n,pluginName:a,baseApiUrl:d});s&&l(s)}else i("The `licenseKey` option not provided")}},2e3)}async function $(e){const{licenseKey:o,pluginName:a,baseApiUrl:n}=e;try{return(await U({baseApiUrl:n,path:`/sdk/${o||"na"}`,method:"POST",params:{d:window.location.hostname,pn:a}})).result||{}}catch(c){return console.error("Error during SDK license check:",c),!1}}const D=e=>{const o={};for(const a of Object.keys(e)){let n=e[a];n&&(Array.isArray(n)?n=n.map(c=>c.toString()).join(","):n=n.toString(),o[a]=n)}return new URLSearchParams(o)},P="youtube-video",M=e=>{const{apiKey:o,searchParams:a,thumbnailQuality:n="high"}=e,c=(t={})=>{const l="https://www.googleapis.com/youtube/v3/search",s=D(t);return`${l}?${s}`},d=t=>{var i,l,s;return((i=t[n])==null?void 0:i.url)||((l=t.high)==null?void 0:l.url)||((s=t.medium)==null?void 0:s.url)||t.default.url},p=t=>{const i=d(t.snippet.thumbnails);return{id:t.id.videoId,src:`https://www.youtube.com/watch?v=${t.id.videoId}`,name:t.snippet.title,type:P,customData:{thumbnailUrl:i,videoItem:t}}};return{id:"youtube",types:[P],label:({editor:t})=>t.I18n.t("youtubeAssetProvider.providerLabel"),search:{reloadOnInput:!0,debounceMs:1e3},async onLoad({searchValue:t,pageCustomData:i}){var h;const l={maxResults:25,q:t,pageToken:i==null?void 0:i.token,type:["video"],key:o},s=a==null?void 0:a({searchValue:t}),r={...l,...s};r.part?r.part.includes("snippet")||r.part.push("snippet"):r.part=["snippet"];const g=await(await fetch(c(r))).json();return(h=g.items)!=null&&h.length?{items:g.items.map(p),nextPageCustomData:{token:g.nextPageToken},isLastPage:!g.nextPageToken}:{items:[],isLastPage:!0}},itemLayout:({assetProps:t,onSelect:i})=>({type:"column",onClick:()=>i(t),htmlAttrs:{title:t.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"custom",render:()=>{var l;return`<img src="${(l=t.customData)==null?void 0:l.thumbnailUrl}" alt="${t.name}" style="width: 100%; height: 100px; object-fit: cover">`}},{type:"text",content:t.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",paddingLeft:8,paddingRight:8}}]})}},B={youtubeAssetProvider:{searchBtn:"Search on YouTube",modalTitle:"Select YouTube Video",providerLabel:"YouTube Videos"}},j="youtubeAssetProvider",E=u.startup;return G(function(e,o){var l;const{skipVideoComponent:a,i18n:n={}}=o,c=M(o);e.runCommand(b.assetProviderAdd,{provider:c});const d="search-on-youtube",p="video",t=(l=e.Components.getType(p))==null?void 0:l.model.prototype,i=s=>{e.Assets.open({modalTitle:e.I18n.t("youtubeAssetProvider.modalTitle"),providerId:c.id,providers:[],types:[],select:r=>{e.Assets.close(),s.set({videoId:r.attributes.id})},content:{header:{addUrl:!1,upload:!1}}})};!a&&t&&e.Components.addType(p,{model:{getYoutubeTraits(){const[s,...r]=t.getYoutubeTraits.apply(this);return[s,{id:d,type:"button",label:e.I18n.t("youtubeAssetProvider.searchBtn"),command:()=>i(this)},...r]}},view:{events:()=>({dblclick:"onActive"}),onActive(){const{model:s}=this,r=s.get("provider")||"";r!=null&&r.startsWith("yt")&&i(s)}}}),e.I18n.addMessages({en:B,...n}),O({editor:e,licenseKey:o.licenseKey,plan:E,pluginName:j,cleanup:()=>{e.runCommand(b.assetProviderRemove,{id:c.id}),!a&&t&&e.Components.addType(p,{model:{getYoutubeTraits(){return t.getYoutubeTraits.apply(this).filter(s=>s.id!==d)}}})}})})});
1
+ (function(u,b){typeof exports=="object"&&typeof module<"u"?module.exports=b():typeof define=="function"&&define.amd?define(b):(u=typeof globalThis<"u"?globalThis:u||self,u.StudioSdkPlugins_youtubeAssetProvider=b())})(this,function(){"use strict";var u=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(u||{}),b=(e=>(e.toastAdd="studio:toastAdd",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.sidebarLeftSet="studio:sidebarLeft:set",e.sidebarLeftGet="studio:sidebarLeft:get",e.sidebarLeftToggle="studio:sidebarLeft:toggle",e.sidebarRightSet="studio:sidebarRight:set",e.sidebarRightGet="studio:sidebarRight:get",e.sidebarRightToggle="studio:sidebarRight:toggle",e.sidebarTopSet="studio:sidebarTop:set",e.sidebarTopGet="studio:sidebarTop:get",e.sidebarTopToggle="studio:sidebarTop:toggle",e.sidebarBottomSet="studio:sidebarBottom:set",e.sidebarBottomGet="studio:sidebarBottom:get",e.sidebarBottomToggle="studio:sidebarBottom:toggle",e.symbolAdd="studio:symbolAdd",e.symbolDetach="studio:symbolDetach",e.symbolOverride="studio:symbolOverride",e.symbolPropagateStyles="studio:propagateStyles",e.getPagesConfig="studio:getPagesConfig",e.setPagesConfig="studio:setPagesConfig",e.getPageSettings="studio:getPageSettings",e.setPageSettings="studio:setPageSettings",e.projectFiles="studio:projectFiles",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.getStateContextMenu="studio:getStateContextMenu",e.setStateContextMenu="studio:setStateContextMenu",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e.layoutUpdate="studio:layoutUpdate",e.layoutGet="studio:layoutGet",e.layoutConfigGet="studio:layoutConfigGet",e.layoutConfigSet="studio:layoutConfigSet",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.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))(b||{});const f="app.grapesjs.com",y="app-stage.grapesjs.com",v=[f,y,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],w="license:check:start",L="license:check:end",k=()=>typeof window<"u",R=({isDev:e,isStage:o})=>`${e?"":`https://${o?y:f}`}/api`,I=()=>{const e=k()&&window.location.hostname;return!!e&&(v.includes(e)||v.some(o=>e.endsWith(o)))};async function x({path:e,baseApiUrl:o,method:a="GET",headers:n={},params:c,body:d}){const t=`${o||R({isDev:!1,isStage:!1})}${e}`,i={method:a,headers:{"Content-Type":"application/json",...n}};d&&(i.body=JSON.stringify(d));const l=c?new URLSearchParams(c).toString():"",s=l?`?${l}`:"",r=await fetch(`${t}${s}`,i);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}const T={[u.free]:0,[u.startup]:10,[u.business]:20,[u.enterprise]:30};function U(e){const o=e;return o.init=a=>n=>e(n,a),o}const G=e=>U(e);async function D({editor:e,plan:o,pluginName:a,licenseKey:n,cleanup:c}){let d="",p=!1;const t=I(),i=s=>{console.warn("Cleanup plugin:",a,"Reason:",s),c()},l=(s={})=>{var h;const{error:r,sdkLicense:A}=s,g=(h=s.plan)==null?void 0:h.category;if(!(A||s.license)||r)i(r||"Invalid license");else if(g){const W=T[o],Y=T[g];W>Y&&i({pluginRequiredPlan:o,licensePlan:g})}};e.on(w,s=>{d=s==null?void 0:s.baseApiUrl,p=!0}),e.on(L,s=>{l(s)}),setTimeout(async()=>{if(!p){if(t)return;if(n){const s=await O({licenseKey:n,pluginName:a,baseApiUrl:d});s&&l(s)}else i("The `licenseKey` option not provided")}},2e3)}async function O(e){const{licenseKey:o,pluginName:a,baseApiUrl:n}=e;try{return(await x({baseApiUrl:n,path:`/sdk/${o||"na"}`,method:"POST",params:{d:window.location.hostname,pn:a}})).result||{}}catch(c){return console.error("Error during SDK license check:",c),!1}}const $=e=>{const o={};for(const a of Object.keys(e)){let n=e[a];n&&(Array.isArray(n)?n=n.map(c=>c.toString()).join(","):n=n.toString(),o[a]=n)}return new URLSearchParams(o)},P="youtube-video",E=e=>{const{apiKey:o,searchParams:a,thumbnailQuality:n="high"}=e,c=(t={})=>{const l="https://www.googleapis.com/youtube/v3/search",s=$(t);return`${l}?${s}`},d=t=>{var i,l,s;return((i=t[n])==null?void 0:i.url)||((l=t.high)==null?void 0:l.url)||((s=t.medium)==null?void 0:s.url)||t.default.url},p=t=>{const i=d(t.snippet.thumbnails);return{id:t.id.videoId,src:`https://www.youtube.com/watch?v=${t.id.videoId}`,name:t.snippet.title,type:P,customData:{thumbnailUrl:i,videoItem:t}}};return{id:"youtube",types:[P],label:({editor:t})=>t.I18n.t("youtubeAssetProvider.providerLabel"),search:{reloadOnInput:!0,debounceMs:1e3},async onLoad({searchValue:t,pageCustomData:i}){var h;const l={maxResults:25,q:t,pageToken:i==null?void 0:i.token,type:["video"],key:o},s=a==null?void 0:a({searchValue:t}),r={...l,...s};r.part?r.part.includes("snippet")||r.part.push("snippet"):r.part=["snippet"];const g=await(await fetch(c(r))).json();return(h=g.items)!=null&&h.length?{items:g.items.map(p),nextPageCustomData:{token:g.nextPageToken},isLastPage:!g.nextPageToken}:{items:[],isLastPage:!0}},itemLayout:({assetProps:t,onSelect:i})=>({type:"column",onClick:()=>i(t),htmlAttrs:{title:t.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"custom",render:()=>{var l;return`<img src="${(l=t.customData)==null?void 0:l.thumbnailUrl}" alt="${t.name}" style="width: 100%; height: 100px; object-fit: cover">`}},{type:"text",content:t.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",paddingLeft:8,paddingRight:8}}]})}},M={youtubeAssetProvider:{searchBtn:"Search on YouTube",modalTitle:"Select YouTube Video",providerLabel:"YouTube Videos"}},B="youtubeAssetProvider",j=u.startup;return G(function(e,o){var l;const{skipVideoComponent:a,i18n:n={}}=o,c=E(o);e.runCommand(b.assetProviderAdd,{provider:c});const d="search-on-youtube",p="video",t=(l=e.Components.getType(p))==null?void 0:l.model.prototype,i=s=>{e.Assets.open({modalTitle:e.I18n.t("youtubeAssetProvider.modalTitle"),providerId:c.id,providers:[],types:[],select:r=>{e.Assets.close(),s.set({videoId:r.attributes.id})},content:{header:{addUrl:!1,upload:!1}}})};!a&&t&&e.Components.addType(p,{model:{getYoutubeTraits(){const[s,...r]=t.getYoutubeTraits.apply(this);return[s,{id:d,type:"button",label:e.I18n.t("youtubeAssetProvider.searchBtn"),command:()=>i(this)},...r]}},view:{events:()=>({dblclick:"onActive"}),onActive(){const{model:s}=this,r=s.get("provider")||"";r!=null&&r.startsWith("yt")&&i(s)}}}),e.I18n.addMessages({en:M,...n}),D({editor:e,licenseKey:o.licenseKey,plan:j,pluginName:B,cleanup:()=>{e.runCommand(b.assetProviderRemove,{id:c.id}),!a&&t&&e.Components.addType(p,{model:{getYoutubeTraits(){return t.getYoutubeTraits.apply(this).filter(s=>s.id!==d)}}})}})})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grapesjs/studio-sdk-plugins",
3
- "version": "1.0.21",
3
+ "version": "1.0.22",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org"
6
6
  },
@@ -36,6 +36,7 @@
36
36
  "./*": "./*"
37
37
  },
38
38
  "dependencies": {
39
+ "handlebars": "^4.7.8",
39
40
  "prosemirror-commands": "^1.6.2",
40
41
  "prosemirror-history": "^1.4.1",
41
42
  "prosemirror-inputrules": "^1.4.0",
@@ -1,15 +0,0 @@
1
- import { DataVariableResolverProps } from '@studio/editor/src/components/DataVariablePicker';
2
- import { DataCollectionResolverProps } from '@studio/editor/src/components/public/types/StudioDataCollectionPickerSchema';
3
- import { ITemplateStrategy } from '@studio/editor/src/plugins/global/templateEngines/types';
4
- export declare class EjsStrategy implements ITemplateStrategy {
5
- getHelperId(): undefined;
6
- getVariableSyntax({ collectionId, variableType, path, defaultValue }: DataVariableResolverProps): string;
7
- getCollectionStartSyntax(options: DataCollectionResolverProps): string;
8
- private _sanitizeVariableName;
9
- getCollectionEndSyntax(): string;
10
- getConditionalStartSyntax(condition: any): string;
11
- private _parseCondition;
12
- private _parseValue;
13
- getConditionElseSyntax(): string;
14
- getConditionalEndSyntax(): string;
15
- }
@@ -1,17 +0,0 @@
1
- import { Operator } from '@studio/editor/src/components/DataConditionPicker/statementTypes';
2
- import { DataCollectionResolverProps } from '@studio/editor/src/components/public/types/StudioDataCollectionPickerSchema';
3
- import { DataVariableResolverProps } from '@studio/editor/src/components/public/types/StudioDataVariablePickerSchema';
4
- import { ITemplateStrategy } from '@studio/editor/src/plugins/global/templateEngines/types';
5
- export declare class HandlebarsStrategy implements ITemplateStrategy {
6
- getHelperId(operator: Operator, typeHint?: 'string' | 'number' | 'any'): string;
7
- getVariableSyntax({ collectionId, variableType, path, defaultValue }: DataVariableResolverProps): string;
8
- getCollectionStartSyntax(options: DataCollectionResolverProps): string;
9
- getCollectionEndSyntax(): string;
10
- getConditionalStartSyntax(condition: any): string;
11
- private _parseCondition;
12
- private _getTypeHint;
13
- private _parseValue;
14
- private _sanitizeVariableName;
15
- getConditionElseSyntax(): string;
16
- getConditionalEndSyntax(): string;
17
- }