@grapesjs/studio-sdk-plugins 1.0.38-rc.0 → 1.0.39-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/dist/accordionComponent/index.cjs.js +5 -5
  2. package/dist/accordionComponent/index.es.js +70 -67
  3. package/dist/accordionComponent/index.js +39 -0
  4. package/dist/accordionComponent/index.umd.js +4 -4
  5. package/dist/aiChat/components/AiChatHeader.d.ts +4 -5
  6. package/dist/aiChat/components/AiChatInput/index.d.ts +4 -5
  7. package/dist/aiChat/components/AiChatMessage.d.ts +7 -8
  8. package/dist/aiChat/components/index.d.ts +1 -1
  9. package/dist/aiChat/components/utils.d.ts +1 -1
  10. package/dist/aiChat/index.cjs.js +10 -376
  11. package/dist/aiChat/index.es.js +4569 -28851
  12. package/dist/aiChat/index.js +10 -376
  13. package/dist/aiChat/index.umd.js +11 -377
  14. package/dist/aiChat/server/index.cjs.d.ts +0 -1
  15. package/dist/aiChat/server/index.cjs.js +45 -45
  16. package/dist/aiChat/server/index.d.ts +0 -1
  17. package/dist/aiChat/server/index.es.d.ts +0 -1
  18. package/dist/aiChat/server/index.es.js +371 -427
  19. package/dist/aiChat/server/index.js +45 -45
  20. package/dist/aiChat/server/index.umd.js +41 -41
  21. package/dist/aiChat/server/stream.test.d.ts +1 -0
  22. package/dist/aiChat/types.d.ts +18 -4
  23. package/dist/aiChat/typesSchema.d.ts +13 -0
  24. package/dist/animationComponent/index.cjs.js +3 -3
  25. package/dist/animationComponent/index.es.js +49 -46
  26. package/dist/animationComponent/index.js +519 -0
  27. package/dist/animationComponent/index.umd.js +3 -3
  28. package/dist/canvasAbsoluteMode/index.cjs.js +1 -1
  29. package/dist/canvasAbsoluteMode/index.es.js +115 -112
  30. package/dist/canvasAbsoluteMode/index.js +1 -0
  31. package/dist/canvasAbsoluteMode/index.umd.js +1 -1
  32. package/dist/canvasEmptyState/index.cjs.js +1 -1
  33. package/dist/canvasEmptyState/index.es.js +71 -68
  34. package/dist/canvasEmptyState/index.js +1 -0
  35. package/dist/canvasEmptyState/index.umd.js +1 -1
  36. package/dist/canvasFullSize/index.cjs.js +3 -3
  37. package/dist/canvasFullSize/index.es.js +69 -66
  38. package/dist/canvasFullSize/index.js +10 -0
  39. package/dist/canvasFullSize/index.umd.js +4 -4
  40. package/dist/canvasGridMode/index.cjs.js +7 -7
  41. package/dist/canvasGridMode/index.es.js +142 -139
  42. package/dist/canvasGridMode/index.js +26 -0
  43. package/dist/canvasGridMode/index.umd.js +7 -7
  44. package/dist/canvasScreenshot/index.cjs.js +1 -1
  45. package/dist/canvasScreenshot/index.es.js +78 -75
  46. package/dist/canvasScreenshot/index.js +1 -0
  47. package/dist/canvasScreenshot/index.umd.js +1 -1
  48. package/dist/dataSourceEjs/EjsExporter.d.ts +1 -1
  49. package/dist/dataSourceEjs/index.cjs.js +3 -3
  50. package/dist/dataSourceEjs/index.es.js +40 -37
  51. package/dist/dataSourceEjs/index.js +21 -0
  52. package/dist/dataSourceEjs/index.umd.js +3 -3
  53. package/dist/dataSourceHandlebars/HandlebarsExporter.d.ts +2 -2
  54. package/dist/dataSourceHandlebars/constants.d.ts +1 -1
  55. package/dist/dataSourceHandlebars/index.cjs.js +4 -4
  56. package/dist/dataSourceHandlebars/index.es.js +58 -55
  57. package/dist/dataSourceHandlebars/index.js +10 -0
  58. package/dist/dataSourceHandlebars/index.umd.js +2 -2
  59. package/dist/dialogComponent/index.cjs.js +11 -11
  60. package/dist/dialogComponent/index.es.js +72 -69
  61. package/dist/dialogComponent/index.js +59 -0
  62. package/dist/dialogComponent/index.umd.js +11 -11
  63. package/dist/flexComponent/index.cjs.js +6 -6
  64. package/dist/flexComponent/index.es.js +151 -142
  65. package/dist/flexComponent/index.js +33 -0
  66. package/dist/flexComponent/index.umd.js +8 -8
  67. package/dist/flexComponent/typesSchema.d.ts +1 -1
  68. package/dist/fsLightboxComponent/index.cjs.js +3 -3
  69. package/dist/fsLightboxComponent/index.es.js +93 -90
  70. package/dist/fsLightboxComponent/index.js +6 -0
  71. package/dist/fsLightboxComponent/index.umd.js +3 -3
  72. package/dist/googleFontsAssetProvider/index.cjs.js +1 -1
  73. package/dist/googleFontsAssetProvider/index.es.js +112 -109
  74. package/dist/googleFontsAssetProvider/index.js +1 -0
  75. package/dist/googleFontsAssetProvider/index.umd.js +1 -1
  76. package/dist/googleFontsAssetProvider/utils.d.ts +1 -1
  77. package/dist/iconifyComponent/index.cjs.js +2 -2
  78. package/dist/iconifyComponent/index.es.js +80 -77
  79. package/dist/iconifyComponent/index.js +3 -0
  80. package/dist/iconifyComponent/index.umd.js +2 -2
  81. package/dist/index.cjs.d.ts +1 -0
  82. package/dist/index.cjs.js +970 -82
  83. package/dist/index.d.ts +1 -0
  84. package/dist/index.es.d.ts +1 -0
  85. package/dist/index.es.js +7422 -6145
  86. package/dist/index.umd.js +975 -87
  87. package/dist/layoutSidebarButtons/index.cjs.js +1 -1
  88. package/dist/layoutSidebarButtons/index.es.js +95 -92
  89. package/dist/layoutSidebarButtons/index.js +1 -0
  90. package/dist/layoutSidebarButtons/index.umd.js +1 -1
  91. package/dist/lightGalleryComponent/index.cjs.js +1 -1
  92. package/dist/lightGalleryComponent/index.es.js +164 -161
  93. package/dist/lightGalleryComponent/index.js +1 -0
  94. package/dist/lightGalleryComponent/index.umd.js +1 -1
  95. package/dist/lightGalleryComponent/utils.d.ts +1 -1
  96. package/dist/linkImageComponent/index.cjs.js +2 -2
  97. package/dist/linkImageComponent/index.es.js +60 -57
  98. package/dist/linkImageComponent/index.js +12 -0
  99. package/dist/linkImageComponent/index.umd.js +2 -2
  100. package/dist/listPagesComponent/index.cjs.js +4 -4
  101. package/dist/listPagesComponent/index.es.js +57 -54
  102. package/dist/listPagesComponent/index.js +11 -0
  103. package/dist/listPagesComponent/index.umd.js +4 -4
  104. package/dist/listPagesComponent/utils.d.ts +1 -1
  105. package/dist/presetBlockLibrary/blocks.d.ts +6 -0
  106. package/dist/presetBlockLibrary/blocks.test.d.ts +2 -0
  107. package/dist/presetBlockLibrary/emailBlocks.d.ts +53 -0
  108. package/dist/presetBlockLibrary/index.cjs.d.ts +3 -0
  109. package/dist/presetBlockLibrary/index.cjs.js +889 -0
  110. package/dist/presetBlockLibrary/index.d.ts +3 -0
  111. package/dist/presetBlockLibrary/index.es.d.ts +3 -0
  112. package/dist/presetBlockLibrary/index.es.js +1408 -0
  113. package/dist/presetBlockLibrary/index.js +889 -0
  114. package/dist/presetBlockLibrary/index.test.d.ts +1 -0
  115. package/dist/presetBlockLibrary/index.umd.js +889 -0
  116. package/dist/presetBlockLibrary/shared.d.ts +3 -0
  117. package/dist/presetBlockLibrary/types.d.ts +24 -0
  118. package/dist/presetBlockLibrary/typesSchema.d.ts +47 -0
  119. package/dist/presetPrintable/index.cjs.js +3 -3
  120. package/dist/presetPrintable/index.es.js +133 -130
  121. package/dist/presetPrintable/index.js +32 -0
  122. package/dist/presetPrintable/index.umd.js +4 -4
  123. package/dist/prosemirror/index.cjs.js +8 -8
  124. package/dist/prosemirror/index.es.js +552 -549
  125. package/dist/prosemirror/index.js +10 -0
  126. package/dist/prosemirror/index.umd.js +9 -9
  127. package/dist/prosemirror/toolbar.d.ts +2 -2
  128. package/dist/prosemirror/types.d.ts +5 -5
  129. package/dist/rendererReact/index.cjs.js +1 -1
  130. package/dist/rendererReact/index.es.js +137 -134
  131. package/dist/rendererReact/index.js +1 -1
  132. package/dist/rendererReact/index.umd.js +1 -1
  133. package/dist/rteTinyMce/index.cjs.js +2 -2
  134. package/dist/rteTinyMce/index.es.js +74 -71
  135. package/dist/rteTinyMce/index.js +104 -0
  136. package/dist/rteTinyMce/index.umd.js +2 -2
  137. package/dist/shapeDividerComponent/index.cjs.js +4 -4
  138. package/dist/shapeDividerComponent/index.es.js +91 -88
  139. package/dist/shapeDividerComponent/index.js +97 -0
  140. package/dist/shapeDividerComponent/index.umd.js +4 -4
  141. package/dist/swiperComponent/index.cjs.js +7 -7
  142. package/dist/swiperComponent/index.es.js +95 -92
  143. package/dist/swiperComponent/index.js +45 -0
  144. package/dist/swiperComponent/index.umd.js +5 -5
  145. package/dist/tableComponent/index.cjs.js +1 -1
  146. package/dist/tableComponent/index.es.js +181 -178
  147. package/dist/tableComponent/index.js +1 -0
  148. package/dist/tableComponent/index.umd.js +1 -1
  149. package/dist/tableComponent/types.d.ts +3 -3
  150. package/dist/types.d.ts +14 -14
  151. package/dist/utils.d.ts +3 -2
  152. package/dist/utilsDataSources.d.ts +1 -1
  153. package/dist/youtubeAssetProvider/index.cjs.js +1 -1
  154. package/dist/youtubeAssetProvider/index.es.js +90 -87
  155. package/dist/youtubeAssetProvider/index.js +1 -0
  156. package/dist/youtubeAssetProvider/index.umd.js +1 -1
  157. package/package.json +182 -34
  158. package/dist/aiChat/server/models.d.ts +0 -15
@@ -1,8 +1,8 @@
1
- const C = "app.grapesjs.com", z = "app-stage.grapesjs.com", X = "app2.grapesjs.com", Z = "app-stage2.grapesjs.com", O = [
1
+ const C = "app.grapesjs.com", z = "app-stage.grapesjs.com", Z = "app2.grapesjs.com", Q = "app-stage2.grapesjs.com", I = [
2
2
  C,
3
- X,
4
- z,
5
3
  Z,
4
+ z,
5
+ Q,
6
6
  "localhost",
7
7
  "127.0.0.1",
8
8
  ".local-credentialless.webcontainer.io",
@@ -15,14 +15,14 @@ const C = "app.grapesjs.com", z = "app-stage.grapesjs.com", X = "app2.grapesjs.c
15
15
  // For Claude mcp app
16
16
  ".web-sandbox.oaiusercontent.com"
17
17
  // For OpenAI mcp app
18
- ], Q = "license:check:end", ee = () => typeof window < "u", I = (e, n = {}) => {
19
- const t = se(e) ? { id: e, src: e } : e;
20
- return new Promise((o, a) => {
18
+ ], ee = "license:check:end", te = () => typeof window < "u", O = (e, n = {}) => {
19
+ const t = ae(e) ? { id: e, src: e } : e;
20
+ return new Promise((o, s) => {
21
21
  var d, u;
22
- const { loadedScripts: r } = n, { id: c, src: i } = t, l = document.querySelector(`script[src="${i}"]`);
22
+ const { loadedScripts: a } = n, { id: c, src: i } = t, l = document.querySelector(`script[src="${i}"]`);
23
23
  if (l) {
24
- if ((d = n.onScript) == null || d.call(n, l), r && !r.get(i)) {
25
- l.addEventListener("load", () => o(c)), l.addEventListener("error", () => a(c));
24
+ if ((d = n.onScript) == null || d.call(n, l), a && !a.get(i)) {
25
+ l.addEventListener("load", () => o(c)), l.addEventListener("error", () => s(c));
26
26
  return;
27
27
  }
28
28
  return o(c);
@@ -30,20 +30,20 @@ const C = "app.grapesjs.com", z = "app-stage.grapesjs.com", X = "app2.grapesjs.c
30
30
  const g = window.define;
31
31
  window.define = void 0;
32
32
  const f = () => {
33
- r == null || r.set(i, !0), window.define = g;
34
- }, s = document.createElement("script");
35
- s.src = i, s.onload = () => {
33
+ a == null || a.set(i, !0), window.define = g;
34
+ }, r = document.createElement("script");
35
+ r.src = i, r.onload = () => {
36
36
  o(c), f();
37
- }, s.onerror = () => {
38
- a(c), f();
39
- }, document.head.appendChild(s), (u = n.onScript) == null || u.call(n, s);
37
+ }, r.onerror = () => {
38
+ s(c), f();
39
+ }, document.head.appendChild(r), (u = n.onScript) == null || u.call(n, r);
40
40
  });
41
- }, te = ({
41
+ }, oe = ({
42
42
  isDev: e,
43
43
  isStage: n,
44
44
  isPlatform: t
45
- }) => `${e ? "" : `https://${n ? z : C}`}/${t ? "platform-api" : "api"}`, oe = () => {
46
- if (!ee()) return "";
45
+ }) => `${e ? "" : `https://${n ? z : C}`}/${t ? "platform-api" : "api"}`, ne = () => {
46
+ if (!te()) return "";
47
47
  const { hostname: e } = window.location;
48
48
  if (e) return e;
49
49
  try {
@@ -51,58 +51,61 @@ const C = "app.grapesjs.com", z = "app-stage.grapesjs.com", X = "app2.grapesjs.c
51
51
  } catch {
52
52
  return "";
53
53
  }
54
- }, ne = () => {
55
- const e = oe();
56
- return !!e && (O.includes(e) || O.some((n) => e.endsWith(n)));
57
- }, se = (e) => typeof e == "string";
58
- async function ae({
54
+ }, se = () => {
55
+ const e = ne();
56
+ return !!e && (I.includes(e) || I.some((n) => e.endsWith(n)));
57
+ }, ae = (e) => typeof e == "string";
58
+ async function re({
59
59
  path: e,
60
60
  baseApiUrl: n,
61
61
  method: t = "GET",
62
62
  headers: o = {},
63
- params: a,
64
- body: r
63
+ params: s,
64
+ body: a
65
65
  }) {
66
- const i = `${n || te({ isDev: !1, isStage: !1 })}${e}`, l = {
66
+ const i = `${n || oe({ isDev: !1, isStage: !1 })}${e}`, l = {
67
67
  method: t,
68
68
  headers: {
69
69
  "Content-Type": "application/json",
70
70
  ...o
71
71
  }
72
72
  };
73
- r && (l.body = JSON.stringify(r));
74
- const g = a ? new URLSearchParams(a).toString() : "", f = g ? `?${g}` : "", s = await fetch(`${i}${f}`, l);
75
- if (!s.ok)
76
- throw new Error(`HTTP error! status: ${s.status}`);
77
- return s.json();
73
+ a && (l.body = JSON.stringify(a));
74
+ const g = s ? new URLSearchParams(s).toString() : "", f = g ? `?${g}` : "", r = await fetch(`${i}${f}`, l);
75
+ if (!r.ok)
76
+ throw new Error(`HTTP error! status: ${r.status}`);
77
+ return r.json();
78
78
  }
79
- var k = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(k || {}), j = /* @__PURE__ */ ((e) => (e.toastAdd = "studio:toastAdd", e.toastRemove = "studio:toastRemove", e.dialogOpen = "studio:dialogOpen", e.dialogClose = "studio:dialogClose", e.dialogExportCode = "studio:dialogExportCode", e.dialogImportCode = "studio:dialogImportCode", e.openEditCode = "studio:openEditCode", e.sidebarLeftSet = "studio:sidebarLeft:set", e.sidebarLeftGet = "studio:sidebarLeft:get", e.sidebarLeftToggle = "studio:sidebarLeft:toggle", e.sidebarRightSet = "studio:sidebarRight:set", e.sidebarRightGet = "studio:sidebarRight:get", e.sidebarRightToggle = "studio:sidebarRight:toggle", e.sidebarTopSet = "studio:sidebarTop:set", e.sidebarTopGet = "studio:sidebarTop:get", e.sidebarTopToggle = "studio:sidebarTop:toggle", e.sidebarBottomSet = "studio:sidebarBottom:set", e.sidebarBottomGet = "studio:sidebarBottom:get", e.sidebarBottomToggle = "studio:sidebarBottom:toggle", e.symbolAdd = "studio:symbolAdd", e.symbolDetach = "studio:symbolDetach", e.symbolOverride = "studio:symbolOverride", e.symbolPropagateStyles = "studio:propagateStyles", e.getPagesConfig = "studio:getPagesConfig", e.setPagesConfig = "studio:setPagesConfig", e.getPageSettings = "studio:getPageSettings", e.setPageSettings = "studio:setPageSettings", e.clearPage = "studio:clearPage", e.projectFiles = "studio:projectFiles", e.validateCode = "studio:validateCode", e.canvasReload = "studio:canvasReload", e.getBlocksPanel = "studio:getBlocksPanel", e.setBlocksPanel = "studio:setBlocksPanel", e.getStateContextMenu = "studio:getStateContextMenu", e.setStateContextMenu = "studio:setStateContextMenu", e.contextMenuComponent = "studio:contextMenuComponent", e.layoutAdd = "studio:layoutAdd", e.layoutRemove = "studio:layoutRemove", e.layoutToggle = "studio:layoutToggle", e.layoutUpdate = "studio:layoutUpdate", e.layoutGet = "studio:layoutGet", e.layoutConfigGet = "studio:layoutConfigGet", e.layoutConfigSet = "studio:layoutConfigSet", e.layoutComponentAdd = "studio:layoutComponentAdd", e.layoutComponentGet = "studio:layoutComponentGet", e.layoutComponentRemove = "studio:layoutComponentRemove", e.layoutComponentRender = "studio:layoutComponentRender", e.getStateTheme = "studio:getStateTheme", e.setStateTheme = "studio:setStateTheme", e.settings = "studio:settings", e.assetProviderGet = "studio:assetProviderGet", e.assetProviderAdd = "studio:assetProviderAdd", e.assetProviderRemove = "studio:assetProviderRemove", e.fontGet = "studio:fontGet", e.fontAdd = "studio:fontAdd", e.fontRemove = "studio:fontRemove", e.fontManagerOpen = "studio:fontManagerOpen", e.menuFontLoad = "studio:menuFontLoad", e.toggleStateDataSource = "studio:toggleStateDataSource", e.getStateDataSource = "studio:getStateDataSource", e.dataSourceSetGlobalData = "studio:dataSourceSetGlobalData", e.dataSourceSetImporter = "studio:dataSourceSetImporter", e.dataSourceSetExporter = "studio:dataSourceSetExporter", e.setDragAbsolute = "studio:setDragAbsolute", e))(j || {});
79
+ var k = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(k || {}), j = /* @__PURE__ */ ((e) => (e.toastAdd = "studio:toastAdd", e.toastRemove = "studio:toastRemove", e.dialogOpen = "studio:dialogOpen", e.dialogClose = "studio:dialogClose", e.dialogExportCode = "studio:dialogExportCode", e.dialogImportCode = "studio:dialogImportCode", e.openEditCode = "studio:openEditCode", e.openBlocks = "studio:openBlocks", e.appendComponent = "studio:appendComponent", e.sidebarLeftSet = "studio:sidebarLeft:set", e.sidebarLeftGet = "studio:sidebarLeft:get", e.sidebarLeftToggle = "studio:sidebarLeft:toggle", e.sidebarRightSet = "studio:sidebarRight:set", e.sidebarRightGet = "studio:sidebarRight:get", e.sidebarRightToggle = "studio:sidebarRight:toggle", e.sidebarTopSet = "studio:sidebarTop:set", e.sidebarTopGet = "studio:sidebarTop:get", e.sidebarTopToggle = "studio:sidebarTop:toggle", e.sidebarBottomSet = "studio:sidebarBottom:set", e.sidebarBottomGet = "studio:sidebarBottom:get", e.sidebarBottomToggle = "studio:sidebarBottom:toggle", e.symbolAdd = "studio:symbolAdd", e.symbolDetach = "studio:symbolDetach", e.symbolOverride = "studio:symbolOverride", e.symbolPropagateStyles = "studio:propagateStyles", e.getPagesConfig = "studio:getPagesConfig", e.setPagesConfig = "studio:setPagesConfig", e.getPageSettings = "studio:getPageSettings", e.setPageSettings = "studio:setPageSettings", e.clearPage = "studio:clearPage", e.projectFiles = "studio:projectFiles", e.validateCode = "studio:validateCode", e.canvasReload = "studio:canvasReload", e.getBlocksPanel = "studio:getBlocksPanel", e.setBlocksPanel = "studio:setBlocksPanel", e.getStateContextMenu = "studio:getStateContextMenu", e.setStateContextMenu = "studio:setStateContextMenu", e.contextMenuComponent = "studio:contextMenuComponent", e.layoutAdd = "studio:layoutAdd", e.layoutRemove = "studio:layoutRemove", e.layoutToggle = "studio:layoutToggle", e.layoutUpdate = "studio:layoutUpdate", e.layoutGet = "studio:layoutGet", e.layoutConfigGet = "studio:layoutConfigGet", e.layoutConfigSet = "studio:layoutConfigSet", e.layoutComponentAdd = "studio:layoutComponentAdd", e.layoutComponentGet = "studio:layoutComponentGet", e.layoutComponentRemove = "studio:layoutComponentRemove", e.layoutComponentRender = "studio:layoutComponentRender", e.getStateTheme = "studio:getStateTheme", e.setStateTheme = "studio:setStateTheme", e.settings = "studio:settings", e.assetProviderGet = "studio:assetProviderGet", e.assetProviderAdd = "studio:assetProviderAdd", e.assetProviderRemove = "studio:assetProviderRemove", e.fontGet = "studio:fontGet", e.fontAdd = "studio:fontAdd", e.fontRemove = "studio:fontRemove", e.fontManagerOpen = "studio:fontManagerOpen", e.menuFontLoad = "studio:menuFontLoad", e.toggleStateDataSource = "studio:toggleStateDataSource", e.getStateDataSource = "studio:getStateDataSource", e.dataSourceSetGlobalData = "studio:dataSourceSetGlobalData", e.dataSourceSetImporter = "studio:dataSourceSetImporter", e.dataSourceSetExporter = "studio:dataSourceSetExporter", e.setDragAbsolute = "studio:setDragAbsolute", e))(j || {});
80
80
  const F = {
81
81
  [k.free]: 0,
82
82
  [k.startup]: 10,
83
83
  [k.business]: 20,
84
84
  [k.enterprise]: 30
85
85
  };
86
- function re(e) {
87
- const n = e;
88
- return n.init = (t) => (o) => e(o, t), n;
86
+ function ie(e, n) {
87
+ const t = e;
88
+ return t.init = (o) => {
89
+ const s = (a) => e(a, o);
90
+ return s.__gjsPluginId = n, s;
91
+ }, t;
89
92
  }
90
- const ie = (e) => /* @__PURE__ */ re(e);
91
- async function ce({
93
+ const ce = (e, n) => /* @__PURE__ */ ie(e, n);
94
+ async function le({
92
95
  editor: e,
93
96
  plan: n,
94
97
  pluginName: t,
95
98
  licenseKey: o,
96
- onLicenseCheckResponse: a,
97
- cleanup: r
99
+ onLicenseCheckResponse: s,
100
+ cleanup: a
98
101
  }) {
99
102
  let c = "", i;
100
- const l = (s) => {
101
- console.warn("Cleanup plugin:", t, "Reason:", s), r();
102
- }, g = (s = {}) => {
103
+ const l = (r) => {
104
+ console.warn("Cleanup plugin:", t, "Reason:", r), a(e, t);
105
+ }, g = (r = {}) => {
103
106
  var p;
104
- const { error: d, sdkLicense: u } = s, m = (p = s.plan) == null ? void 0 : p.category;
105
- if (!(u || s.license) || d)
107
+ const { error: d, sdkLicense: u } = r, m = (p = r.plan) == null ? void 0 : p.category;
108
+ if (!(u || r.license) || d)
106
109
  l(d || "Invalid license");
107
110
  else if (m) {
108
111
  const h = F[n], L = F[m];
@@ -110,37 +113,37 @@ async function ce({
110
113
  }
111
114
  };
112
115
  e.Commands.has(j.settings) && (i = e.runCommand(j.settings), c = (i == null ? void 0 : i.baseUrl) || "");
113
- const f = (s) => {
114
- a == null || a(s), s && g(s);
116
+ const f = (r) => {
117
+ s == null || s(r), r && g(r);
115
118
  };
116
119
  if (!i) {
117
120
  e.onReady(async () => {
118
- if (!ne())
121
+ if (!se())
119
122
  if (o) {
120
- const s = await pe({ licenseKey: o, pluginName: t, baseApiUrl: c });
121
- f(s);
123
+ const r = await de({ licenseKey: o, pluginName: t, baseApiUrl: c });
124
+ f(r);
122
125
  } else
123
126
  l("The `licenseKey` option not provided");
124
127
  });
125
128
  return;
126
129
  }
127
130
  if (i.licensePlan || i.licenseError) {
128
- const s = le(i);
129
- f(s);
131
+ const r = pe(i);
132
+ f(r);
130
133
  return;
131
134
  }
132
- e.on(Q, (s) => f(s));
135
+ e.on(ee, (r) => f(r));
133
136
  }
134
- const le = (e) => ({
137
+ const pe = (e) => ({
135
138
  sdkLicense: e.license,
136
139
  license: e.license,
137
140
  error: e.licenseError,
138
141
  plan: e.licensePlan
139
142
  });
140
- async function pe(e) {
143
+ async function de(e) {
141
144
  const { licenseKey: n, pluginName: t, baseApiUrl: o } = e;
142
145
  try {
143
- return (await ae({
146
+ return (await re({
144
147
  baseApiUrl: o,
145
148
  path: `/sdk/${n || "na"}`,
146
149
  method: "POST",
@@ -149,36 +152,36 @@ async function pe(e) {
149
152
  pn: t
150
153
  }
151
154
  })).result || {};
152
- } catch (a) {
153
- return console.error("Error during SDK license check:", a), !1;
155
+ } catch (s) {
156
+ return console.error("Error during SDK license check:", s), !1;
154
157
  }
155
158
  }
156
- const de = (e) => (n) => {
159
+ const ge = (e) => (n) => {
157
160
  var t;
158
161
  return ((t = n.getAttribute) == null ? void 0 : t.call(n, V)) === e;
159
- }, ge = (...e) => (n, t) => e.some((o) => t.is(o)), K = (e, n, t) => {
160
- const { doc: o = document } = t, a = t.target || o.head, r = a.querySelector(`style[${e}]`) || o.createElement("style");
161
- r.setAttribute(e, "true"), r.innerHTML = n, !a.contains(r) && a.appendChild(r);
162
- }, ue = "gjs-plg-", q = "data-gs-plg-", V = "data-type-role";
162
+ }, ue = (...e) => (n, t) => e.some((o) => t.is(o)), K = (e, n, t) => {
163
+ const { doc: o = document } = t, s = t.target || o.head, a = s.querySelector(`style[${e}]`) || o.createElement("style");
164
+ a.setAttribute(e, "true"), a.innerHTML = n, !s.contains(a) && s.appendChild(a);
165
+ }, he = "gjs-plg-", q = "data-gs-plg-", V = "data-type-role";
163
166
  function N(e, n, t) {
164
- let o, a, r, c, i;
167
+ let o, s, a, c, i;
165
168
  const l = n === void 0 ? 100 : n;
166
169
  function g() {
167
- const s = Date.now() - c;
168
- s < l && s >= 0 ? o = setTimeout(g, l - s) : (o = null, i = e.apply(r, a), r = a = null);
170
+ const r = Date.now() - c;
171
+ r < l && r >= 0 ? o = setTimeout(g, l - r) : (o = null, i = e.apply(a, s), a = s = null);
169
172
  }
170
173
  const f = function() {
171
- return r = this, a = arguments, c = Date.now(), o || (o = setTimeout(g, l)), i;
174
+ return a = this, s = arguments, c = Date.now(), o || (o = setTimeout(g, l)), i;
172
175
  };
173
176
  return f.clear = function() {
174
177
  o && (clearTimeout(o), o = null);
175
178
  }, f.flush = function() {
176
- o && (i = e.apply(r, a), r = a = null, clearTimeout(o), o = null);
179
+ o && (i = e.apply(a, s), a = s = null, clearTimeout(o), o = null);
177
180
  }, f;
178
181
  }
179
182
  const A = "page-break";
180
183
  var y = /* @__PURE__ */ ((e) => (e.A5 = "a5", e.A5Portrait = "a5-portrait", e.A4 = "a4", e.A3 = "a3", e.B5 = "b5", e.B4 = "b4", e.letter = "letter", e.legal = "legal", e.ledger = "ledger", e))(y || {});
181
- function _(e, n) {
184
+ function H(e, n) {
182
185
  const o = {
183
186
  mm: 3.7795275590551185,
184
187
  // 1mm ≈ 3.78px
@@ -193,35 +196,35 @@ function _(e, n) {
193
196
  };
194
197
  return o[n] ? e * o[n] : null;
195
198
  }
196
- const he = (e, n) => {
197
- const { name: t, id: o, width: a, height: r, unit: c } = e, { fixedHeight: i } = n, l = `${a}${c}`, g = `${r}${c}`;
199
+ const fe = (e, n) => {
200
+ const { name: t, id: o, width: s, height: a, unit: c } = e, { fixedHeight: i } = n, l = `${s}${c}`, g = `${a}${c}`;
198
201
  return {
199
202
  id: o || t.toLowerCase().replace(/\s/g, "-"),
200
203
  name: `${t} (${l} x ${g})`,
201
- sizeH: r,
202
- sizeW: a,
204
+ sizeH: a,
205
+ sizeW: s,
203
206
  sizeUnit: c,
204
207
  widthMedia: "",
205
208
  width: l,
206
- minHeight: i ? "0" : `${_(r, c)}px`,
209
+ minHeight: i ? "0" : `${H(a, c)}px`,
207
210
  height: i ? g : void 0
208
211
  };
209
- }, M = "page-breaks", D = "gjs-page-breaks-spot", H = (e) => e.type === M;
210
- function fe(e) {
211
- const { Devices: n } = e, { height: t, minHeight: o } = n.getSelected().attributes, r = parseFloat(`${t && t !== "auto" ? t : o}`), c = e.getWrapper(), i = c == null ? void 0 : c.getEl(), l = [];
212
+ }, M = "page-breaks", D = "gjs-page-breaks-spot", G = (e) => e.type === M;
213
+ function ve(e) {
214
+ const { Devices: n } = e, { height: t, minHeight: o } = n.getSelected().attributes, a = parseFloat(`${t && t !== "auto" ? t : o}`), c = e.getWrapper(), i = c == null ? void 0 : c.getEl(), l = [];
212
215
  if (!c || !i)
213
216
  return l;
214
- const g = i.getBoundingClientRect().height, s = c.findType(A).map((u) => u.getEl()).filter(Boolean).map((u) => ({ top: u.offsetTop, height: u.offsetHeight }));
217
+ const g = i.getBoundingClientRect().height, r = c.findType(A).map((u) => u.getEl()).filter(Boolean).map((u) => ({ top: u.offsetTop, height: u.offsetHeight }));
215
218
  let d = 0;
216
219
  for (; d < g; ) {
217
- const u = s.find((m) => m.top > d && m.top < d + r);
218
- u ? (d = u.top + u.height, l.push(u.top)) : (d += r, d < g && l.push(d));
220
+ const u = r.find((m) => m.top > d && m.top < d + a);
221
+ u ? (d = u.top + u.height, l.push(u.top)) : (d += a, d < g && l.push(d));
219
222
  }
220
223
  return l;
221
224
  }
222
- function ve(e, n) {
223
- const { Canvas: t } = e, o = t.events, a = e.events;
224
- let r;
225
+ function be(e, n) {
226
+ const { Canvas: t } = e, o = t.events, s = e.events;
227
+ let a;
225
228
  const c = () => {
226
229
  K(
227
230
  `${q}preset-printable-spots`,
@@ -252,30 +255,30 @@ function ve(e, n) {
252
255
  return t.getSpots(p).pop() || t.addSpot(p);
253
256
  }, l = ({ spot: p }) => {
254
257
  const { spotEl: h } = p.attributes;
255
- !H(p) || !h || !r || r.removeChild(h);
258
+ !G(p) || !h || !a || a.removeChild(h);
256
259
  }, g = ({ spot: p }) => {
257
- if (!H(p) || !r) return;
260
+ if (!G(p) || !a) return;
258
261
  let { spotEl: h } = p.attributes;
259
- h || (h = document.createElement("div"), h.className = `${D}__items`, p.set({ spotEl: h })), r.appendChild(h);
262
+ h || (h = document.createElement("div"), h.className = `${D}__items`, p.set({ spotEl: h })), a.appendChild(h);
260
263
  }, f = ({ spot: p }) => {
261
264
  const { spotEl: h, pageBreaks: L = [] } = p.attributes;
262
- !H(p) || !h || !r || (Object.entries(p.getStyle()).forEach(([$, x]) => h.style.setProperty($, x)), h.innerHTML = "", L.forEach(($, x) => {
265
+ !G(p) || !h || !a || (Object.entries(p.getStyle()).forEach(([$, x]) => h.style.setProperty($, x)), h.innerHTML = "", L.forEach(($, x) => {
263
266
  const T = document.createElement("div");
264
267
  T.setAttribute("data-page-number", `${x + 2}`), T.className = D, T.style.top = `${$}px`, h.appendChild(T);
265
268
  }));
266
- }, s = N(() => {
269
+ }, r = N(() => {
267
270
  if (e.em.destroyed) return;
268
271
  const p = i();
269
- p && p.set({ pageBreaks: fe(e), up: (p.attributes.up || 0) + 1 });
270
- }, 150), d = N(s, 200), u = () => {
271
- r = t.getSpotsEl(), i();
272
+ p && p.set({ pageBreaks: ve(e), up: (p.attributes.up || 0) + 1 });
273
+ }, 150), d = N(r, 200), u = () => {
274
+ a = t.getSpotsEl(), i();
272
275
  }, m = () => {
273
276
  const p = i();
274
277
  p && p.set({ up: (p.attributes.up || 0) + 1 });
275
278
  }, w = [
276
- ["component:input", s],
279
+ ["component:input", r],
277
280
  ["frame:scroll", m],
278
- [a.update, s],
281
+ [s.update, r],
279
282
  [o.spotAdd, g],
280
283
  [o.spotUpdate, f],
281
284
  [o.spotRemove, l],
@@ -284,19 +287,19 @@ function ve(e, n) {
284
287
  return w.forEach(([p, h]) => e.on(p, h)), e.onReady(() => {
285
288
  c(), new ResizeObserver(m).observe(t.getElement().parentElement);
286
289
  }), () => {
287
- w.forEach(([p, h]) => e.off(p, h)), s.clear(), d.clear();
290
+ w.forEach(([p, h]) => e.off(p, h)), r.clear(), d.clear();
288
291
  };
289
292
  }
290
- var S = /* @__PURE__ */ ((e) => (e.print = "presetPrintable:print", e))(S || {});
293
+ var U = /* @__PURE__ */ ((e) => (e.print = "presetPrintable:print", e))(U || {});
291
294
  const W = (e) => new Promise((n) => {
292
295
  const t = document.createElement("iframe");
293
296
  t.style.cssText = "position: absolute; width: 0; height: 0; border: 0; opacity: 0; pointer-events: none;", t.srcdoc = e.content, t.onload = () => n(t), document.body.appendChild(t);
294
297
  });
295
- function be(e, n) {
298
+ function me(e, n) {
296
299
  const { Commands: t, Pages: o } = e;
297
300
  return t.add(
298
- S.print,
299
- async (a, r, c = {}) => {
301
+ U.print,
302
+ async (s, a, c = {}) => {
300
303
  const i = {
301
304
  page: c.allPages ? void 0 : o.getSelected(),
302
305
  styles: "inline",
@@ -304,60 +307,60 @@ function be(e, n) {
304
307
  // Avoid DataSource exporter
305
308
  exporter: null
306
309
  }
307
- }, g = (await t.run(j.projectFiles, i)).filter((d) => d.filename.endsWith(".html")), f = g.map((d) => d.content).join('<div style="break-before: page;"></div>'), s = [];
310
+ }, g = (await t.run(j.projectFiles, i)).filter((d) => d.filename.endsWith(".html")), f = g.map((d) => d.content).join('<div style="break-before: page;"></div>'), r = [];
308
311
  if (c.separatePrints)
309
312
  for (const d of g)
310
- s.push(await W(d));
313
+ r.push(await W(d));
311
314
  else
312
- s.push(await W({ content: f, filename: "", mimeType: "" }));
313
- for (const d of s) {
315
+ r.push(await W({ content: f, filename: "", mimeType: "" }));
316
+ for (const d of r) {
314
317
  const u = d.contentWindow;
315
318
  u.focus(), u.print();
316
319
  }
317
- setTimeout(() => s.forEach((d) => d.remove()), 1e3);
320
+ setTimeout(() => r.forEach((d) => d.remove()), 1e3);
318
321
  }
319
- ), t.add("presetPrintable:exp", async (a) => {
320
- await I("https://cdn.jsdelivr.net/npm/html2canvas@1.4.1/dist/html2canvas.min.js"), await I("https://cdn.jsdelivr.net/npm/jspdf@3.0.0/dist/jspdf.umd.min.js");
321
- const { Devices: r, Canvas: c } = a, { sizeW: i, sizeH: l, sizeUnit: g } = r.getSelected().attributes, f = c.getFrameEl().contentDocument, s = "px", d = [_(i, g), _(l, g)], u = new window.jspdf.jsPDF({ unit: s, format: d }), m = f.body;
322
+ ), t.add("presetPrintable:exp", async (s) => {
323
+ await O("https://cdn.jsdelivr.net/npm/html2canvas@1.4.1/dist/html2canvas.min.js"), await O("https://cdn.jsdelivr.net/npm/jspdf@3.0.0/dist/jspdf.umd.min.js");
324
+ const { Devices: a, Canvas: c } = s, { sizeW: i, sizeH: l, sizeUnit: g } = a.getSelected().attributes, f = c.getFrameEl().contentDocument, r = "px", d = [H(i, g), H(l, g)], u = new window.jspdf.jsPDF({ unit: r, format: d }), m = f.body;
322
325
  u.html(m, { callback: (w) => w.save() });
323
326
  }), () => {
324
- delete e.Commands.commands[S.print];
327
+ delete e.Commands.commands[U.print];
325
328
  };
326
329
  }
327
- function me(e, n) {
328
- const { blockPageBreak: t = {} } = n, { Components: o, Blocks: a } = e, r = "Page Break", c = `${ue}${A}`;
330
+ function ye(e, n) {
331
+ const { blockPageBreak: t = {} } = n, { Components: o, Blocks: s } = e, a = "Page Break", c = `${he}${A}`;
329
332
  return o.addType(A, {
330
333
  block: t && {
331
- label: r,
334
+ label: a,
332
335
  media: '<svg viewBox="0 0 24 24"><path d="M18 20H6v-2H4v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2h-2v2M14 2H6a2 2 0 0 0-2 2v8h2V4h8v4h4v4h2V8l-6-6m-3 14H8v-2h3v2m5 0h-3v-2h3v2M3 14h3v2H3v-2m18 2h-3v-2h3v2Z"/></svg>',
333
336
  category: "Extra",
334
337
  select: !0,
335
338
  ...t
336
339
  },
337
- isComponent: de(A),
340
+ isComponent: ge(A),
338
341
  model: {
339
342
  defaults: {
340
- name: r,
343
+ name: a,
341
344
  classes: c,
342
345
  attributes: { [V]: A },
343
346
  emptyState: !0,
344
347
  stylable: !1,
345
348
  droppable: !1,
346
- draggable: ge("wrapper"),
349
+ draggable: ue("wrapper"),
347
350
  styles: `.${c} { break-before: page; }`,
348
351
  traits: []
349
352
  }
350
353
  }
351
354
  }), () => {
352
- o.removeType(A), a.remove(A);
355
+ o.removeType(A), s.remove(A);
353
356
  };
354
357
  }
355
- const ye = "presetPrintable", we = k.free, Pe = function(e, n = {}) {
356
- var U;
358
+ const Y = "presetPrintable", we = k.free, Pe = function(e, n = {}) {
359
+ var S;
357
360
  const t = {
358
361
  selectedDevice: y.A4,
359
362
  ...n
360
- }, { Canvas: o, Devices: a, Blocks: r } = e, c = o.events, i = e.events, l = t.selectedDevice || a.getConfig().default, g = [
363
+ }, { Canvas: o, Devices: s, Blocks: a } = e, c = o.events, i = e.events, l = t.selectedDevice || s.getConfig().default, g = [
361
364
  { id: y.A5, name: "A5", width: 148, height: 210, unit: "mm" },
362
365
  { id: y.A5Portrait, name: "A5 Portrait", width: 210, height: 148, unit: "mm" },
363
366
  { id: y.A4, name: "A4", width: 210, height: 297, unit: "mm" },
@@ -367,12 +370,12 @@ const ye = "presetPrintable", we = k.free, Pe = function(e, n = {}) {
367
370
  { id: y.letter, name: "Letter", width: 8.5, height: 11, unit: "in" },
368
371
  { id: y.legal, name: "Legal", width: 8.5, height: 14, unit: "in" },
369
372
  { id: y.ledger, name: "Ledger", width: 11, height: 17, unit: "in" }
370
- ], s = (((U = t.devices) == null ? void 0 : U.call(t, { items: g })) || g).map((v) => he(v, t));
371
- a.devices.reset(s);
372
- const d = l && a.get(l) || a.getAll().at(0);
373
- a.select(d), ["map", "video"].forEach((v) => r.remove(v));
373
+ ], r = (((S = t.devices) == null ? void 0 : S.call(t, { items: g })) || g).map((v) => fe(v, t));
374
+ s.devices.reset(r);
375
+ const d = l && s.get(l) || s.getAll().at(0);
376
+ s.select(d), ["map", "video"].forEach((v) => a.remove(v));
374
377
  const m = (v = {}) => {
375
- const b = "page-rule", { rules: P } = e.Css, { width: E, height: B, minHeight: R } = a.getSelected().attributes, Y = B && B !== "auto" ? B : R, G = P.where({ id: b }).pop(), J = G || P.add(
378
+ const b = "page-rule", { rules: P } = e.Css, { width: E, height: B, minHeight: R } = s.getSelected().attributes, J = B && B !== "auto" ? B : R, _ = P.where({ id: b }).pop(), X = _ || P.add(
376
379
  {
377
380
  id: b,
378
381
  selectors: [],
@@ -380,12 +383,12 @@ const ye = "presetPrintable", we = k.free, Pe = function(e, n = {}) {
380
383
  },
381
384
  { at: 0 }
382
385
  );
383
- (v.fromDeviceChange || !G) && J.addStyle({
384
- size: `${E} ${Y}`,
385
- ...!G && { margin: "0" }
386
+ (v.fromDeviceChange || !_) && X.addStyle({
387
+ size: `${E} ${J}`,
388
+ ...!_ && { margin: "0" }
386
389
  });
387
390
  }, w = (v, b = {}) => {
388
- const P = v.document, { minHeight: E } = a.getSelected().attributes, R = `
391
+ const P = v.document, { minHeight: E } = s.getSelected().attributes, R = `
389
392
  ${!!parseFloat(`${E}`) ? `
390
393
  [data-gjs-type="wrapper"] { min-height: ${E}; }
391
394
  ` : `
@@ -410,7 +413,7 @@ const ye = "presetPrintable", we = k.free, Pe = function(e, n = {}) {
410
413
  R.scrollTop > 0 && R.scrollTo(0, 0);
411
414
  });
412
415
  }
413
- }), e.on(a.events.select, () => {
416
+ }), e.on(s.events.select, () => {
414
417
  var b;
415
418
  const v = (b = o.getFrameEl().contentDocument) == null ? void 0 : b.defaultView;
416
419
  v && w(v, { fromDeviceChange: !0 });
@@ -426,21 +429,21 @@ const ye = "presetPrintable", we = k.free, Pe = function(e, n = {}) {
426
429
  });
427
430
  }, h = [[i.projectLoad, p]];
428
431
  h.forEach(([v, b]) => e.on(v, b));
429
- const L = ve(e, t), $ = be(e), x = me(e, t);
432
+ const L = be(e, t), $ = me(e), x = ye(e, t);
430
433
  e.onReady(() => {
431
434
  e.UndoManager.clear();
432
435
  });
433
436
  const T = () => {
434
437
  h.forEach(([v, b]) => e.off(v, b)), L(), $(), x();
435
438
  };
436
- e.on(i.destroy, T), ce({
439
+ e.on(i.destroy, T), le({
437
440
  editor: e,
438
441
  licenseKey: t.licenseKey,
439
442
  plan: we,
440
- pluginName: ye,
443
+ pluginName: Y,
441
444
  cleanup: T
442
445
  });
443
- }, Ee = ie(Pe);
446
+ }, Ee = ce(Pe, Y);
444
447
  export {
445
448
  Ee as default
446
449
  };
@@ -0,0 +1,32 @@
1
+ "use strict";const C="app.grapesjs.com",z="app-stage.grapesjs.com",Z="app2.grapesjs.com",Q="app-stage2.grapesjs.com",I=[C,Z,z,Q,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io",".claudemcpcontent.com",".web-sandbox.oaiusercontent.com"],ee="license:check:end",te=()=>typeof window<"u",O=(e,n={})=>{const t=ae(e)?{id:e,src:e}:e;return new Promise((o,s)=>{var d,u;const{loadedScripts:a}=n,{id:c,src:i}=t,l=document.querySelector(`script[src="${i}"]`);if(l){if((d=n.onScript)==null||d.call(n,l),a&&!a.get(i)){l.addEventListener("load",()=>o(c)),l.addEventListener("error",()=>s(c));return}return o(c)}const g=window.define;window.define=void 0;const f=()=>{a==null||a.set(i,!0),window.define=g},r=document.createElement("script");r.src=i,r.onload=()=>{o(c),f()},r.onerror=()=>{s(c),f()},document.head.appendChild(r),(u=n.onScript)==null||u.call(n,r)})},oe=({isDev:e,isStage:n,isPlatform:t})=>`${e?"":`https://${n?z:C}`}/${t?"platform-api":"api"}`,ne=()=>{if(!te())return"";const{hostname:e}=window.location;if(e)return e;try{return window.parent.location.hostname||""}catch{return""}},se=()=>{const e=ne();return!!e&&(I.includes(e)||I.some(n=>e.endsWith(n)))},ae=e=>typeof e=="string";async function re({path:e,baseApiUrl:n,method:t="GET",headers:o={},params:s,body:a}){const i=`${n||oe({isDev:!1,isStage:!1})}${e}`,l={method:t,headers:{"Content-Type":"application/json",...o}};a&&(l.body=JSON.stringify(a));const g=s?new URLSearchParams(s).toString():"",f=g?`?${g}`:"",r=await fetch(`${i}${f}`,l);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}var k=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(k||{}),j=(e=>(e.toastAdd="studio:toastAdd",e.toastRemove="studio:toastRemove",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.dialogExportCode="studio:dialogExportCode",e.dialogImportCode="studio:dialogImportCode",e.openEditCode="studio:openEditCode",e.openBlocks="studio:openBlocks",e.appendComponent="studio:appendComponent",e.sidebarLeftSet="studio:sidebarLeft:set",e.sidebarLeftGet="studio:sidebarLeft:get",e.sidebarLeftToggle="studio:sidebarLeft:toggle",e.sidebarRightSet="studio:sidebarRight:set",e.sidebarRightGet="studio:sidebarRight:get",e.sidebarRightToggle="studio:sidebarRight:toggle",e.sidebarTopSet="studio:sidebarTop:set",e.sidebarTopGet="studio:sidebarTop:get",e.sidebarTopToggle="studio:sidebarTop:toggle",e.sidebarBottomSet="studio:sidebarBottom:set",e.sidebarBottomGet="studio:sidebarBottom:get",e.sidebarBottomToggle="studio:sidebarBottom:toggle",e.symbolAdd="studio:symbolAdd",e.symbolDetach="studio:symbolDetach",e.symbolOverride="studio:symbolOverride",e.symbolPropagateStyles="studio:propagateStyles",e.getPagesConfig="studio:getPagesConfig",e.setPagesConfig="studio:setPagesConfig",e.getPageSettings="studio:getPageSettings",e.setPageSettings="studio:setPageSettings",e.clearPage="studio:clearPage",e.projectFiles="studio:projectFiles",e.validateCode="studio:validateCode",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.getStateContextMenu="studio:getStateContextMenu",e.setStateContextMenu="studio:setStateContextMenu",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e.layoutUpdate="studio:layoutUpdate",e.layoutGet="studio:layoutGet",e.layoutConfigGet="studio:layoutConfigGet",e.layoutConfigSet="studio:layoutConfigSet",e.layoutComponentAdd="studio:layoutComponentAdd",e.layoutComponentGet="studio:layoutComponentGet",e.layoutComponentRemove="studio:layoutComponentRemove",e.layoutComponentRender="studio:layoutComponentRender",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.settings="studio:settings",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.dataSourceSetGlobalData="studio:dataSourceSetGlobalData",e.dataSourceSetImporter="studio:dataSourceSetImporter",e.dataSourceSetExporter="studio:dataSourceSetExporter",e.setDragAbsolute="studio:setDragAbsolute",e))(j||{});const F={[k.free]:0,[k.startup]:10,[k.business]:20,[k.enterprise]:30};function ie(e,n){const t=e;return t.init=o=>{const s=a=>e(a,o);return s.__gjsPluginId=n,s},t}const ce=(e,n)=>ie(e,n);async function le({editor:e,plan:n,pluginName:t,licenseKey:o,onLicenseCheckResponse:s,cleanup:a}){let c="",i;const l=r=>{console.warn("Cleanup plugin:",t,"Reason:",r),a(e,t)},g=(r={})=>{var p;const{error:d,sdkLicense:u}=r,m=(p=r.plan)==null?void 0:p.category;if(!(u||r.license)||d)l(d||"Invalid license");else if(m){const h=F[n],L=F[m];h>L&&l({pluginRequiredPlan:n,licensePlan:m})}};e.Commands.has(j.settings)&&(i=e.runCommand(j.settings),c=(i==null?void 0:i.baseUrl)||"");const f=r=>{s==null||s(r),r&&g(r)};if(!i){e.onReady(async()=>{if(!se())if(o){const r=await de({licenseKey:o,pluginName:t,baseApiUrl:c});f(r)}else l("The `licenseKey` option not provided")});return}if(i.licensePlan||i.licenseError){const r=pe(i);f(r);return}e.on(ee,r=>f(r))}const pe=e=>({sdkLicense:e.license,license:e.license,error:e.licenseError,plan:e.licensePlan});async function de(e){const{licenseKey:n,pluginName:t,baseApiUrl:o}=e;try{return(await re({baseApiUrl:o,path:`/sdk/${n||"na"}`,method:"POST",params:{d:window.location.hostname,pn:t}})).result||{}}catch(s){return console.error("Error during SDK license check:",s),!1}}const ge=e=>n=>{var t;return((t=n.getAttribute)==null?void 0:t.call(n,V))===e},ue=(...e)=>(n,t)=>e.some(o=>t.is(o)),K=(e,n,t)=>{const{doc:o=document}=t,s=t.target||o.head,a=s.querySelector(`style[${e}]`)||o.createElement("style");a.setAttribute(e,"true"),a.innerHTML=n,!s.contains(a)&&s.appendChild(a)},he="gjs-plg-",q="data-gs-plg-",V="data-type-role";function N(e,n,t){let o,s,a,c,i;const l=n===void 0?100:n;function g(){const r=Date.now()-c;r<l&&r>=0?o=setTimeout(g,l-r):(o=null,i=e.apply(a,s),a=s=null)}const f=function(){return a=this,s=arguments,c=Date.now(),o||(o=setTimeout(g,l)),i};return f.clear=function(){o&&(clearTimeout(o),o=null)},f.flush=function(){o&&(i=e.apply(a,s),a=s=null,clearTimeout(o),o=null)},f}const A="page-break";var y=(e=>(e.A5="a5",e.A5Portrait="a5-portrait",e.A4="a4",e.A3="a3",e.B5="b5",e.B4="b4",e.letter="letter",e.legal="legal",e.ledger="ledger",e))(y||{});function H(e,n){const o={mm:3.7795275590551185,cm:37.79527559055118,in:96,pt:1.3333333333333333,pc:16};return o[n]?e*o[n]:null}const fe=(e,n)=>{const{name:t,id:o,width:s,height:a,unit:c}=e,{fixedHeight:i}=n,l=`${s}${c}`,g=`${a}${c}`;return{id:o||t.toLowerCase().replace(/\s/g,"-"),name:`${t} (${l} x ${g})`,sizeH:a,sizeW:s,sizeUnit:c,widthMedia:"",width:l,minHeight:i?"0":`${H(a,c)}px`,height:i?g:void 0}},M="page-breaks",D="gjs-page-breaks-spot",G=e=>e.type===M;function ve(e){const{Devices:n}=e,{height:t,minHeight:o}=n.getSelected().attributes,a=parseFloat(`${t&&t!=="auto"?t:o}`),c=e.getWrapper(),i=c==null?void 0:c.getEl(),l=[];if(!c||!i)return l;const g=i.getBoundingClientRect().height,r=c.findType(A).map(u=>u.getEl()).filter(Boolean).map(u=>({top:u.offsetTop,height:u.offsetHeight}));let d=0;for(;d<g;){const u=r.find(m=>m.top>d&&m.top<d+a);u?(d=u.top+u.height,l.push(u.top)):(d+=a,d<g&&l.push(d))}return l}function be(e,n){const{Canvas:t}=e,o=t.events,s=e.events;let a;const c=()=>{K(`${q}preset-printable-spots`,`.${D} {
2
+ position: absolute;
3
+ left: 0;
4
+ width: 100%;
5
+ border-top: 1px dashed var(--gs-theme-cl-cmp-bg2, var(--gjs-color-blue));
6
+ color: var(--gs-theme-cl-prm-txt, var(--gjs-font-color));
7
+ }
8
+ .${D}::after {
9
+ background-color: var(--gs-theme-cl-cmp-bg1, var(--gjs-color-highlight));
10
+ content: attr(data-page-number);
11
+ display: block;
12
+ padding: 0 0.5rem;
13
+ border-radius: 2px;
14
+ position: absolute;
15
+ top: -2px;
16
+ right: 0;
17
+ transform: translate(100%, -50%);
18
+ }
19
+ `,{target:window.document.head})},i=()=>{if(n.enablePageBreaksSpot===!1)return;const p={id:M,type:M,component:e.getWrapper()};return t.getSpots(p).pop()||t.addSpot(p)},l=({spot:p})=>{const{spotEl:h}=p.attributes;!G(p)||!h||!a||a.removeChild(h)},g=({spot:p})=>{if(!G(p)||!a)return;let{spotEl:h}=p.attributes;h||(h=document.createElement("div"),h.className=`${D}__items`,p.set({spotEl:h})),a.appendChild(h)},f=({spot:p})=>{const{spotEl:h,pageBreaks:L=[]}=p.attributes;!G(p)||!h||!a||(Object.entries(p.getStyle()).forEach(([$,x])=>h.style.setProperty($,x)),h.innerHTML="",L.forEach(($,x)=>{const T=document.createElement("div");T.setAttribute("data-page-number",`${x+2}`),T.className=D,T.style.top=`${$}px`,h.appendChild(T)}))},r=N(()=>{if(e.em.destroyed)return;const p=i();p&&p.set({pageBreaks:ve(e),up:(p.attributes.up||0)+1})},150),d=N(r,200),u=()=>{a=t.getSpotsEl(),i()},m=()=>{const p=i();p&&p.set({up:(p.attributes.up||0)+1})},w=[["component:input",r],["frame:scroll",m],[s.update,r],[o.spotAdd,g],[o.spotUpdate,f],[o.spotRemove,l],[o.frameLoadBody,u]];return w.forEach(([p,h])=>e.on(p,h)),e.onReady(()=>{c(),new ResizeObserver(m).observe(t.getElement().parentElement)}),()=>{w.forEach(([p,h])=>e.off(p,h)),r.clear(),d.clear()}}var U=(e=>(e.print="presetPrintable:print",e))(U||{});const W=e=>new Promise(n=>{const t=document.createElement("iframe");t.style.cssText="position: absolute; width: 0; height: 0; border: 0; opacity: 0; pointer-events: none;",t.srcdoc=e.content,t.onload=()=>n(t),document.body.appendChild(t)});function me(e,n){const{Commands:t,Pages:o}=e;return t.add(U.print,async(s,a,c={})=>{const i={page:c.allPages?void 0:o.getSelected(),styles:"inline",optionsHtml:{exporter:null}},g=(await t.run(j.projectFiles,i)).filter(d=>d.filename.endsWith(".html")),f=g.map(d=>d.content).join('<div style="break-before: page;"></div>'),r=[];if(c.separatePrints)for(const d of g)r.push(await W(d));else r.push(await W({content:f,filename:"",mimeType:""}));for(const d of r){const u=d.contentWindow;u.focus(),u.print()}setTimeout(()=>r.forEach(d=>d.remove()),1e3)}),t.add("presetPrintable:exp",async s=>{await O("https://cdn.jsdelivr.net/npm/html2canvas@1.4.1/dist/html2canvas.min.js"),await O("https://cdn.jsdelivr.net/npm/jspdf@3.0.0/dist/jspdf.umd.min.js");const{Devices:a,Canvas:c}=s,{sizeW:i,sizeH:l,sizeUnit:g}=a.getSelected().attributes,f=c.getFrameEl().contentDocument,r="px",d=[H(i,g),H(l,g)],u=new window.jspdf.jsPDF({unit:r,format:d}),m=f.body;u.html(m,{callback:w=>w.save()})}),()=>{delete e.Commands.commands[U.print]}}function ye(e,n){const{blockPageBreak:t={}}=n,{Components:o,Blocks:s}=e,a="Page Break",c=`${he}${A}`;return o.addType(A,{block:t&&{label:a,media:'<svg viewBox="0 0 24 24"><path d="M18 20H6v-2H4v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2h-2v2M14 2H6a2 2 0 0 0-2 2v8h2V4h8v4h4v4h2V8l-6-6m-3 14H8v-2h3v2m5 0h-3v-2h3v2M3 14h3v2H3v-2m18 2h-3v-2h3v2Z"/></svg>',category:"Extra",select:!0,...t},isComponent:ge(A),model:{defaults:{name:a,classes:c,attributes:{[V]:A},emptyState:!0,stylable:!1,droppable:!1,draggable:ue("wrapper"),styles:`.${c} { break-before: page; }`,traits:[]}}}),()=>{o.removeType(A),s.remove(A)}}const Y="presetPrintable",we=k.free,Pe=function(e,n={}){var S;const t={selectedDevice:y.A4,...n},{Canvas:o,Devices:s,Blocks:a}=e,c=o.events,i=e.events,l=t.selectedDevice||s.getConfig().default,g=[{id:y.A5,name:"A5",width:148,height:210,unit:"mm"},{id:y.A5Portrait,name:"A5 Portrait",width:210,height:148,unit:"mm"},{id:y.A4,name:"A4",width:210,height:297,unit:"mm"},{id:y.A3,name:"A3",width:297,height:420,unit:"mm"},{id:y.B5,name:"B5",width:176,height:250,unit:"mm"},{id:y.B4,name:"B4",width:250,height:353,unit:"mm"},{id:y.letter,name:"Letter",width:8.5,height:11,unit:"in"},{id:y.legal,name:"Legal",width:8.5,height:14,unit:"in"},{id:y.ledger,name:"Ledger",width:11,height:17,unit:"in"}],r=(((S=t.devices)==null?void 0:S.call(t,{items:g}))||g).map(v=>fe(v,t));s.devices.reset(r);const d=l&&s.get(l)||s.getAll().at(0);s.select(d),["map","video"].forEach(v=>a.remove(v));const m=(v={})=>{const b="page-rule",{rules:P}=e.Css,{width:E,height:B,minHeight:R}=s.getSelected().attributes,J=B&&B!=="auto"?B:R,_=P.where({id:b}).pop(),X=_||P.add({id:b,selectors:[],selectorsAdd:"@page"},{at:0});(v.fromDeviceChange||!_)&&X.addStyle({size:`${E} ${J}`,...!_&&{margin:"0"}})},w=(v,b={})=>{const P=v.document,{minHeight:E}=s.getSelected().attributes,R=`
20
+ ${!!parseFloat(`${E}`)?`
21
+ [data-gjs-type="wrapper"] { min-height: ${E}; }
22
+ `:`
23
+ body {
24
+ overflow: hidden;
25
+ }
26
+
27
+ [data-gjs-type="wrapper"] {
28
+ overflow: hidden;
29
+ height: 100dvh;
30
+ }
31
+ `}
32
+ `;K(`${q}preset-printable`,R,{doc:P,target:P.head}),m(b)};e.on(c.frameLoadBody,v=>{const b=v.window;if(w(b),t.fixedHeight){const E=v.model.getComponent().getEl();E==null||E.addEventListener("scroll",B=>{const R=B.target;R.scrollTop>0&&R.scrollTo(0,0)})}}),e.on(s.events.select,()=>{var b;const v=(b=o.getFrameEl().contentDocument)==null?void 0:b.defaultView;v&&w(v,{fromDeviceChange:!0})});const p=()=>{const b=e.Css.getRules().filter(P=>P.selectorsToString()==="body").pop();b==null||b.addStyle({"margin-top":"","margin-right":"","margin-bottom":"","margin-left":"",margin:"0"})},h=[[i.projectLoad,p]];h.forEach(([v,b])=>e.on(v,b));const L=be(e,t),$=me(e),x=ye(e,t);e.onReady(()=>{e.UndoManager.clear()});const T=()=>{h.forEach(([v,b])=>e.off(v,b)),L(),$(),x()};e.on(i.destroy,T),le({editor:e,licenseKey:t.licenseKey,plan:we,pluginName:Y,cleanup:T})},Ee=ce(Pe,Y);module.exports=Ee;