@grapesjs/studio-sdk-plugins 1.0.31 → 1.0.32

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.
@@ -1,8 +1,8 @@
1
- const F = "app.grapesjs.com", W = "app-stage.grapesjs.com", V = "app2.grapesjs.com", Y = "app-stage2.grapesjs.com", G = [
2
- F,
3
- V,
1
+ const W = "app.grapesjs.com", C = "app-stage.grapesjs.com", X = "app2.grapesjs.com", Z = "app-stage2.grapesjs.com", U = [
4
2
  W,
5
- Y,
3
+ X,
4
+ C,
5
+ Z,
6
6
  "localhost",
7
7
  "127.0.0.1",
8
8
  ".local-credentialless.webcontainer.io",
@@ -11,13 +11,13 @@ const F = "app.grapesjs.com", W = "app-stage.grapesjs.com", V = "app2.grapesjs.c
11
11
  // For stackblitz.com demos
12
12
  "-sandpack.codesandbox.io"
13
13
  // For Sandpack demos
14
- ], J = "license:check:start", X = "license:check:end", Z = () => typeof window < "u", U = (e, n = {}) => {
15
- const t = te(e) ? { id: e, src: e } : e;
14
+ ], Q = "license:check:start", ee = "license:check:end", te = () => typeof window < "u", O = (e, o = {}) => {
15
+ const t = ne(e) ? { id: e, src: e } : e;
16
16
  return new Promise((s, a) => {
17
17
  var g, h;
18
- const { loadedScripts: o } = n, { id: i, src: p } = t, c = document.querySelector(`script[src="${p}"]`);
18
+ const { loadedScripts: n } = o, { id: i, src: p } = t, c = document.querySelector(`script[src="${p}"]`);
19
19
  if (c) {
20
- if ((g = n.onScript) == null || g.call(n, c), o && !o.get(p)) {
20
+ if ((g = o.onScript) == null || g.call(o, c), n && !n.get(p)) {
21
21
  c.addEventListener("load", () => s(i)), c.addEventListener("error", () => a(i));
22
22
  return;
23
23
  }
@@ -26,60 +26,60 @@ const F = "app.grapesjs.com", W = "app-stage.grapesjs.com", V = "app2.grapesjs.c
26
26
  const u = window.define;
27
27
  window.define = void 0;
28
28
  const l = () => {
29
- o == null || o.set(p, !0), window.define = u;
29
+ n == null || n.set(p, !0), window.define = u;
30
30
  }, r = document.createElement("script");
31
31
  r.src = p, r.onload = () => {
32
32
  s(i), l();
33
33
  }, r.onerror = () => {
34
34
  a(i), l();
35
- }, document.head.appendChild(r), (h = n.onScript) == null || h.call(n, r);
35
+ }, document.head.appendChild(r), (h = o.onScript) == null || h.call(o, r);
36
36
  });
37
- }, Q = ({ isDev: e, isStage: n }) => `${e ? "" : `https://${n ? W : F}`}/api`, ee = () => {
38
- const e = Z() && window.location.hostname;
39
- return !!e && (G.includes(e) || G.some((n) => e.endsWith(n)));
40
- }, te = (e) => typeof e == "string";
41
- async function se({
37
+ }, se = ({ isDev: e, isStage: o }) => `${e ? "" : `https://${o ? C : W}`}/api`, oe = () => {
38
+ const e = te() && window.location.hostname;
39
+ return !!e && (U.includes(e) || U.some((o) => e.endsWith(o)));
40
+ }, ne = (e) => typeof e == "string";
41
+ async function ae({
42
42
  path: e,
43
- baseApiUrl: n,
43
+ baseApiUrl: o,
44
44
  method: t = "GET",
45
45
  headers: s = {},
46
46
  params: a,
47
- body: o
47
+ body: n
48
48
  }) {
49
- const p = `${n || Q({ isDev: !1, isStage: !1 })}${e}`, c = {
49
+ const p = `${o || se({ isDev: !1, isStage: !1 })}${e}`, c = {
50
50
  method: t,
51
51
  headers: {
52
52
  "Content-Type": "application/json",
53
53
  ...s
54
54
  }
55
55
  };
56
- o && (c.body = JSON.stringify(o));
56
+ n && (c.body = JSON.stringify(n));
57
57
  const u = a ? new URLSearchParams(a).toString() : "", l = u ? `?${u}` : "", r = await fetch(`${p}${l}`, c);
58
58
  if (!r.ok)
59
59
  throw new Error(`HTTP error! status: ${r.status}`);
60
60
  return r.json();
61
61
  }
62
- var B = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(B || {}), z = /* @__PURE__ */ ((e) => (e.toastAdd = "studio:toastAdd", e.toastRemove = "studio:toastRemove", 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.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.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 || {});
63
- const O = {
64
- [B.free]: 0,
65
- [B.startup]: 10,
66
- [B.business]: 20,
67
- [B.enterprise]: 30
62
+ var R = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(R || {}), z = /* @__PURE__ */ ((e) => (e.toastAdd = "studio:toastAdd", e.toastRemove = "studio:toastRemove", e.dialogOpen = "studio:dialogOpen", e.dialogClose = "studio:dialogClose", e.dialogExportCode = "studio:dialogExportCode", 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.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 || {});
63
+ const I = {
64
+ [R.free]: 0,
65
+ [R.startup]: 10,
66
+ [R.business]: 20,
67
+ [R.enterprise]: 30
68
68
  };
69
- function ne(e) {
70
- const n = e;
71
- return n.init = (t) => (s) => e(s, t), n;
69
+ function ie(e) {
70
+ const o = e;
71
+ return o.init = (t) => (s) => e(s, t), o;
72
72
  }
73
- const oe = (e) => /* @__PURE__ */ ne(e);
74
- async function ae({
73
+ const re = (e) => /* @__PURE__ */ ie(e);
74
+ async function ce({
75
75
  editor: e,
76
- plan: n,
76
+ plan: o,
77
77
  pluginName: t,
78
78
  licenseKey: s,
79
79
  cleanup: a
80
80
  }) {
81
- let o = "", i = !1;
82
- const p = ee(), c = (l) => {
81
+ let n = "", i = !1;
82
+ const p = oe(), c = (l) => {
83
83
  console.warn("Cleanup plugin:", t, "Reason:", l), a();
84
84
  }, u = (l = {}) => {
85
85
  var w;
@@ -87,31 +87,31 @@ async function ae({
87
87
  if (!(g || l.license) || r)
88
88
  c(r || "Invalid license");
89
89
  else if (h) {
90
- const d = O[n], f = O[h];
91
- d > f && c({ pluginRequiredPlan: n, licensePlan: h });
90
+ const d = I[o], f = I[h];
91
+ d > f && c({ pluginRequiredPlan: o, licensePlan: h });
92
92
  }
93
93
  };
94
- e.on(J, (l) => {
95
- o = l == null ? void 0 : l.baseApiUrl, i = !0;
96
- }), e.on(X, (l) => {
94
+ e.on(Q, (l) => {
95
+ n = l == null ? void 0 : l.baseApiUrl, i = !0;
96
+ }), e.on(ee, (l) => {
97
97
  u(l);
98
98
  }), setTimeout(async () => {
99
99
  if (!i) {
100
100
  if (p) return;
101
101
  if (s) {
102
- const l = await ie({ licenseKey: s, pluginName: t, baseApiUrl: o });
102
+ const l = await le({ licenseKey: s, pluginName: t, baseApiUrl: n });
103
103
  l && u(l);
104
104
  } else
105
105
  c("The `licenseKey` option not provided");
106
106
  }
107
107
  }, 2e3);
108
108
  }
109
- async function ie(e) {
110
- const { licenseKey: n, pluginName: t, baseApiUrl: s } = e;
109
+ async function le(e) {
110
+ const { licenseKey: o, pluginName: t, baseApiUrl: s } = e;
111
111
  try {
112
- return (await se({
112
+ return (await ae({
113
113
  baseApiUrl: s,
114
- path: `/sdk/${n || "na"}`,
114
+ path: `/sdk/${o || "na"}`,
115
115
  method: "POST",
116
116
  params: {
117
117
  d: window.location.hostname,
@@ -122,32 +122,32 @@ async function ie(e) {
122
122
  return console.error("Error during SDK license check:", a), !1;
123
123
  }
124
124
  }
125
- const re = (e) => (n) => {
125
+ const de = (e) => (o) => {
126
126
  var t;
127
- return ((t = n.getAttribute) == null ? void 0 : t.call(n, q)) === e;
128
- }, ce = (...e) => (n, t) => e.some((s) => t.is(s)), K = (e, n, t) => {
129
- const { doc: s = document } = t, a = t.target || s.head, o = a.querySelector(`style[${e}]`) || s.createElement("style");
130
- o.setAttribute(e, "true"), o.innerHTML = n, !a.contains(o) && a.appendChild(o);
131
- }, le = "gjs-plg-", C = "data-gs-plg-", q = "data-type-role";
132
- function I(e, n, t) {
133
- let s, a, o, i, p;
134
- const c = n === void 0 ? 100 : n;
127
+ return ((t = o.getAttribute) == null ? void 0 : t.call(o, V)) === e;
128
+ }, pe = (...e) => (o, t) => e.some((s) => t.is(s)), K = (e, o, t) => {
129
+ const { doc: s = document } = t, a = t.target || s.head, n = a.querySelector(`style[${e}]`) || s.createElement("style");
130
+ n.setAttribute(e, "true"), n.innerHTML = o, !a.contains(n) && a.appendChild(n);
131
+ }, ge = "gjs-plg-", q = "data-gs-plg-", V = "data-type-role";
132
+ function N(e, o, t) {
133
+ let s, a, n, i, p;
134
+ const c = o === void 0 ? 100 : o;
135
135
  function u() {
136
136
  const r = Date.now() - i;
137
- r < c && r >= 0 ? s = setTimeout(u, c - r) : (s = null, p = e.apply(o, a), o = a = null);
137
+ r < c && r >= 0 ? s = setTimeout(u, c - r) : (s = null, p = e.apply(n, a), n = a = null);
138
138
  }
139
139
  const l = function() {
140
- return o = this, a = arguments, i = Date.now(), s || (s = setTimeout(u, c)), p;
140
+ return n = this, a = arguments, i = Date.now(), s || (s = setTimeout(u, c)), p;
141
141
  };
142
142
  return l.clear = function() {
143
143
  s && (clearTimeout(s), s = null);
144
144
  }, l.flush = function() {
145
- s && (p = e.apply(o, a), o = a = null, clearTimeout(s), s = null);
145
+ s && (p = e.apply(n, a), n = a = null, clearTimeout(s), s = null);
146
146
  }, l;
147
147
  }
148
148
  const A = "page-break";
149
149
  var m = /* @__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))(m || {});
150
- function j(e, n) {
150
+ function _(e, o) {
151
151
  const s = {
152
152
  mm: 3.7795275590551185,
153
153
  // 1mm ≈ 3.78px
@@ -160,40 +160,40 @@ function j(e, n) {
160
160
  pc: 16
161
161
  // 1pc ≈ 16px
162
162
  };
163
- return s[n] ? e * s[n] : null;
163
+ return s[o] ? e * s[o] : null;
164
164
  }
165
- const de = (e, n) => {
166
- const { name: t, id: s, width: a, height: o, unit: i } = e, { fixedHeight: p } = n, c = `${a}${i}`, u = `${o}${i}`;
165
+ const ue = (e, o) => {
166
+ const { name: t, id: s, width: a, height: n, unit: i } = e, { fixedHeight: p } = o, c = `${a}${i}`, u = `${n}${i}`;
167
167
  return {
168
168
  id: s || t.toLowerCase().replace(/\s/g, "-"),
169
169
  name: `${t} (${c} x ${u})`,
170
- sizeH: o,
170
+ sizeH: n,
171
171
  sizeW: a,
172
172
  sizeUnit: i,
173
173
  widthMedia: "",
174
174
  width: c,
175
- minHeight: p ? "0" : `${j(o, i)}px`,
175
+ minHeight: p ? "0" : `${_(n, i)}px`,
176
176
  height: p ? u : void 0
177
177
  };
178
- }, _ = "page-breaks", S = "gjs-page-breaks-spot", D = (e) => e.type === _;
179
- function pe(e) {
180
- const { Devices: n } = e, { height: t, minHeight: s } = n.getSelected().attributes, o = parseFloat(`${t && t !== "auto" ? t : s}`), i = e.getWrapper(), p = i == null ? void 0 : i.getEl(), c = [];
178
+ }, H = "page-breaks", S = "gjs-page-breaks-spot", j = (e) => e.type === H;
179
+ function he(e) {
180
+ const { Devices: o } = e, { height: t, minHeight: s } = o.getSelected().attributes, n = parseFloat(`${t && t !== "auto" ? t : s}`), i = e.getWrapper(), p = i == null ? void 0 : i.getEl(), c = [];
181
181
  if (!i || !p)
182
182
  return c;
183
183
  const u = p.getBoundingClientRect().height, r = i.findType(A).map((h) => h.getEl()).filter(Boolean).map((h) => ({ top: h.offsetTop, height: h.offsetHeight }));
184
184
  let g = 0;
185
185
  for (; g < u; ) {
186
- const h = r.find((y) => y.top > g && y.top < g + o);
187
- h ? (g = h.top + h.height, c.push(h.top)) : (g += o, g < u && c.push(g));
186
+ const h = r.find((y) => y.top > g && y.top < g + n);
187
+ h ? (g = h.top + h.height, c.push(h.top)) : (g += n, g < u && c.push(g));
188
188
  }
189
189
  return c;
190
190
  }
191
- function ge(e, n) {
191
+ function fe(e, o) {
192
192
  const { Canvas: t } = e, s = t.events, a = e.events;
193
- let o;
193
+ let n;
194
194
  const i = () => {
195
195
  K(
196
- `${C}preset-printable-spots`,
196
+ `${q}preset-printable-spots`,
197
197
  `.${S} {
198
198
  position: absolute;
199
199
  left: 0;
@@ -216,28 +216,28 @@ function ge(e, n) {
216
216
  { target: window.document.head }
217
217
  );
218
218
  }, p = () => {
219
- if (n.enablePageBreaksSpot === !1) return;
220
- const d = { id: _, type: _, component: e.getWrapper() };
219
+ if (o.enablePageBreaksSpot === !1) return;
220
+ const d = { id: H, type: H, component: e.getWrapper() };
221
221
  return t.getSpots(d).pop() || t.addSpot(d);
222
222
  }, c = ({ spot: d }) => {
223
223
  const { spotEl: f } = d.attributes;
224
- !D(d) || !f || !o || o.removeChild(f);
224
+ !j(d) || !f || !n || n.removeChild(f);
225
225
  }, u = ({ spot: d }) => {
226
- if (!D(d) || !o) return;
226
+ if (!j(d) || !n) return;
227
227
  let { spotEl: f } = d.attributes;
228
- f || (f = document.createElement("div"), f.className = `${S}__items`, d.set({ spotEl: f })), o.appendChild(f);
228
+ f || (f = document.createElement("div"), f.className = `${S}__items`, d.set({ spotEl: f })), n.appendChild(f);
229
229
  }, l = ({ spot: d }) => {
230
230
  const { spotEl: f, pageBreaks: x = [] } = d.attributes;
231
- !D(d) || !f || !o || (Object.entries(d.getStyle()).forEach(([k, R]) => f.style.setProperty(k, R)), f.innerHTML = "", x.forEach((k, R) => {
232
- const T = document.createElement("div");
233
- T.setAttribute("data-page-number", `${R + 2}`), T.className = S, T.style.top = `${k}px`, f.appendChild(T);
231
+ !j(d) || !f || !n || (Object.entries(d.getStyle()).forEach(([L, $]) => f.style.setProperty(L, $)), f.innerHTML = "", x.forEach((L, $) => {
232
+ const E = document.createElement("div");
233
+ E.setAttribute("data-page-number", `${$ + 2}`), E.className = S, E.style.top = `${L}px`, f.appendChild(E);
234
234
  }));
235
- }, r = I(() => {
235
+ }, r = N(() => {
236
236
  if (e.em.destroyed) return;
237
237
  const d = p();
238
- d && d.set({ pageBreaks: pe(e), up: (d.attributes.up || 0) + 1 });
239
- }, 150), g = I(r, 200), h = () => {
240
- o = t.getSpotsEl(), p();
238
+ d && d.set({ pageBreaks: he(e), up: (d.attributes.up || 0) + 1 });
239
+ }, 150), g = N(r, 200), h = () => {
240
+ n = t.getSpotsEl(), p();
241
241
  }, y = () => {
242
242
  const d = p();
243
243
  d && d.set({ up: (d.attributes.up || 0) + 1 });
@@ -256,16 +256,16 @@ function ge(e, n) {
256
256
  w.forEach(([d, f]) => e.off(d, f)), r.clear(), g.clear();
257
257
  };
258
258
  }
259
- var H = /* @__PURE__ */ ((e) => (e.print = "presetPrintable:print", e))(H || {});
260
- const N = (e) => new Promise((n) => {
259
+ var M = /* @__PURE__ */ ((e) => (e.print = "presetPrintable:print", e))(M || {});
260
+ const F = (e) => new Promise((o) => {
261
261
  const t = document.createElement("iframe");
262
- 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);
262
+ t.style.cssText = "position: absolute; width: 0; height: 0; border: 0; opacity: 0; pointer-events: none;", t.srcdoc = e.content, t.onload = () => o(t), document.body.appendChild(t);
263
263
  });
264
- function ue(e, n) {
264
+ function ve(e, o) {
265
265
  const { Commands: t, Pages: s } = e;
266
266
  return t.add(
267
- H.print,
268
- async (a, o, i = {}) => {
267
+ M.print,
268
+ async (a, n, i = {}) => {
269
269
  const p = {
270
270
  page: i.allPages ? void 0 : s.getSelected(),
271
271
  styles: "inline",
@@ -276,9 +276,9 @@ function ue(e, n) {
276
276
  }, u = (await t.run(z.projectFiles, p)).filter((g) => g.filename.endsWith(".html")), l = u.map((g) => g.content).join('<div style="break-before: page;"></div>'), r = [];
277
277
  if (i.separatePrints)
278
278
  for (const g of u)
279
- r.push(await N(g));
279
+ r.push(await F(g));
280
280
  else
281
- r.push(await N({ content: l, filename: "", mimeType: "" }));
281
+ r.push(await F({ content: l, filename: "", mimeType: "" }));
282
282
  for (const g of r) {
283
283
  const h = g.contentWindow;
284
284
  h.focus(), h.print();
@@ -286,33 +286,33 @@ function ue(e, n) {
286
286
  setTimeout(() => r.forEach((g) => g.remove()), 1e3);
287
287
  }
288
288
  ), t.add("presetPrintable:exp", async (a) => {
289
- await U("https://cdn.jsdelivr.net/npm/html2canvas@1.4.1/dist/html2canvas.min.js"), await U("https://cdn.jsdelivr.net/npm/jspdf@3.0.0/dist/jspdf.umd.min.js");
290
- const { Devices: o, Canvas: i } = a, { sizeW: p, sizeH: c, sizeUnit: u } = o.getSelected().attributes, l = i.getFrameEl().contentDocument, r = "px", g = [j(p, u), j(c, u)], h = new window.jspdf.jsPDF({ unit: r, format: g }), y = l.body;
289
+ 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");
290
+ const { Devices: n, Canvas: i } = a, { sizeW: p, sizeH: c, sizeUnit: u } = n.getSelected().attributes, l = i.getFrameEl().contentDocument, r = "px", g = [_(p, u), _(c, u)], h = new window.jspdf.jsPDF({ unit: r, format: g }), y = l.body;
291
291
  h.html(y, { callback: (w) => w.save() });
292
292
  }), () => {
293
- delete e.Commands.commands[H.print];
293
+ delete e.Commands.commands[M.print];
294
294
  };
295
295
  }
296
- function he(e, n) {
297
- const { blockPageBreak: t = {} } = n, { Components: s, Blocks: a } = e, o = "Page Break", i = `${le}${A}`;
296
+ function be(e, o) {
297
+ const { blockPageBreak: t = {} } = o, { Components: s, Blocks: a } = e, n = "Page Break", i = `${ge}${A}`;
298
298
  return s.addType(A, {
299
299
  block: t && {
300
- label: o,
300
+ label: n,
301
301
  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>',
302
302
  category: "Extra",
303
303
  select: !0,
304
304
  ...t
305
305
  },
306
- isComponent: re(A),
306
+ isComponent: de(A),
307
307
  model: {
308
308
  defaults: {
309
- name: o,
309
+ name: n,
310
310
  classes: i,
311
- attributes: { [q]: A },
311
+ attributes: { [V]: A },
312
312
  emptyState: !0,
313
313
  stylable: !1,
314
314
  droppable: !1,
315
- draggable: ce("wrapper"),
315
+ draggable: pe("wrapper"),
316
316
  styles: `.${i} { break-before: page; }`,
317
317
  traits: []
318
318
  }
@@ -321,12 +321,12 @@ function he(e, n) {
321
321
  s.removeType(A), a.remove(A);
322
322
  };
323
323
  }
324
- const fe = "presetPrintable", ve = B.free, be = function(e, n = {}) {
325
- var M;
324
+ const me = "presetPrintable", ye = R.free, we = function(e, o = {}) {
325
+ var G;
326
326
  const t = {
327
327
  selectedDevice: m.A4,
328
- ...n
329
- }, { Canvas: s, Devices: a, Blocks: o } = e, i = s.events, p = e.events, c = t.selectedDevice || a.getConfig().default, u = [
328
+ ...o
329
+ }, { Canvas: s, Devices: a, Blocks: n } = e, i = s.events, p = e.events, c = t.selectedDevice || a.getConfig().default, u = [
330
330
  { id: m.A5, name: "A5", width: 148, height: 210, unit: "mm" },
331
331
  { id: m.A5Portrait, name: "A5 Portrait", width: 210, height: 148, unit: "mm" },
332
332
  { id: m.A4, name: "A4", width: 210, height: 297, unit: "mm" },
@@ -336,27 +336,27 @@ const fe = "presetPrintable", ve = B.free, be = function(e, n = {}) {
336
336
  { id: m.letter, name: "Letter", width: 8.5, height: 11, unit: "in" },
337
337
  { id: m.legal, name: "Legal", width: 8.5, height: 14, unit: "in" },
338
338
  { id: m.ledger, name: "Ledger", width: 11, height: 17, unit: "in" }
339
- ], r = (((M = t.devices) == null ? void 0 : M.call(t, { items: u })) || u).map((v) => de(v, t));
339
+ ], r = (((G = t.devices) == null ? void 0 : G.call(t, { items: u })) || u).map((v) => ue(v, t));
340
340
  a.devices.reset(r);
341
341
  const g = c && a.get(c) || a.getAll().at(0);
342
- a.select(g), ["map", "video"].forEach((v) => o.remove(v));
343
- const y = () => {
344
- const v = "page-rule", { rules: b } = e.Css, { width: E, height: P, minHeight: L } = a.getSelected().attributes, $ = P && P !== "auto" ? P : L;
345
- (b.where({ id: v }).pop() || b.add(
342
+ a.select(g), ["map", "video"].forEach((v) => n.remove(v));
343
+ const y = (v = {}) => {
344
+ const b = "page-rule", { rules: P } = e.Css, { width: T, height: B, minHeight: k } = a.getSelected().attributes, Y = B && B !== "auto" ? B : k, D = P.where({ id: b }).pop(), J = D || P.add(
346
345
  {
347
- id: v,
346
+ id: b,
348
347
  selectors: [],
349
348
  selectorsAdd: "@page"
350
349
  },
351
350
  { at: 0 }
352
- )).setStyle({
353
- size: `${E} ${$}`,
354
- margin: "0"
351
+ );
352
+ (v.fromDeviceChange || !D) && J.addStyle({
353
+ size: `${T} ${Y}`,
354
+ ...!D && { margin: "0" }
355
355
  });
356
- }, w = (v) => {
357
- const b = v.document, { minHeight: E } = a.getSelected().attributes, L = `
358
- ${!!parseFloat(`${E}`) ? `
359
- [data-gjs-type="wrapper"] { min-height: ${E}; }
356
+ }, w = (v, b = {}) => {
357
+ const P = v.document, { minHeight: T } = a.getSelected().attributes, k = `
358
+ ${!!parseFloat(`${T}`) ? `
359
+ [data-gjs-type="wrapper"] { min-height: ${T}; }
360
360
  ` : `
361
361
  body {
362
362
  overflow: hidden;
@@ -368,24 +368,24 @@ const fe = "presetPrintable", ve = B.free, be = function(e, n = {}) {
368
368
  }
369
369
  `}
370
370
  `;
371
- K(`${C}preset-printable`, L, { doc: b, target: b.head }), y();
371
+ K(`${q}preset-printable`, k, { doc: P, target: P.head }), y(b);
372
372
  };
373
373
  e.on(i.frameLoadBody, (v) => {
374
374
  const b = v.window;
375
375
  if (w(b), t.fixedHeight) {
376
- const P = v.model.getComponent().getEl();
377
- P == null || P.addEventListener("scroll", (L) => {
378
- const $ = L.target;
379
- $.scrollTop > 0 && $.scrollTo(0, 0);
376
+ const T = v.model.getComponent().getEl();
377
+ T == null || T.addEventListener("scroll", (B) => {
378
+ const k = B.target;
379
+ k.scrollTop > 0 && k.scrollTo(0, 0);
380
380
  });
381
381
  }
382
382
  }), e.on(a.events.select, () => {
383
383
  var b;
384
384
  const v = (b = s.getFrameEl().contentDocument) == null ? void 0 : b.defaultView;
385
- v && w(v);
385
+ v && w(v, { fromDeviceChange: !0 });
386
386
  });
387
387
  const d = () => {
388
- const b = e.Css.getRules().filter((E) => E.selectorsToString() === "body").pop();
388
+ const b = e.Css.getRules().filter((P) => P.selectorsToString() === "body").pop();
389
389
  b == null || b.addStyle({
390
390
  "margin-top": "",
391
391
  "margin-right": "",
@@ -395,21 +395,21 @@ const fe = "presetPrintable", ve = B.free, be = function(e, n = {}) {
395
395
  });
396
396
  }, f = [[p.projectLoad, d]];
397
397
  f.forEach(([v, b]) => e.on(v, b));
398
- const x = ge(e, t), k = ue(e), R = he(e, t);
398
+ const x = fe(e, t), L = ve(e), $ = be(e, t);
399
399
  e.onReady(() => {
400
400
  e.UndoManager.clear();
401
401
  });
402
- const T = () => {
403
- f.forEach(([v, b]) => e.off(v, b)), x(), k(), R();
402
+ const E = () => {
403
+ f.forEach(([v, b]) => e.off(v, b)), x(), L(), $();
404
404
  };
405
- e.on(p.destroy, T), ae({
405
+ e.on(p.destroy, E), ce({
406
406
  editor: e,
407
407
  licenseKey: t.licenseKey,
408
- plan: ve,
409
- pluginName: fe,
410
- cleanup: T
408
+ plan: ye,
409
+ pluginName: me,
410
+ cleanup: E
411
411
  });
412
- }, ye = oe(be);
412
+ }, Pe = re(we);
413
413
  export {
414
- ye as default
414
+ Pe as default
415
415
  };
@@ -1,11 +1,11 @@
1
- (function(B,k){typeof exports=="object"&&typeof module<"u"?module.exports=k():typeof define=="function"&&define.amd?define(k):(B=typeof globalThis<"u"?globalThis:B||self,B.StudioSdkPlugins_presetPrintable=k())})(this,function(){"use strict";const B="app.grapesjs.com",k="app-stage.grapesjs.com",O=[B,"app2.grapesjs.com",k,"app-stage2.grapesjs.com","localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],V="license:check:start",Y="license:check:end",J=()=>typeof window<"u",U=(e,n={})=>{const t=Q(e)?{id:e,src:e}:e;return new Promise((s,a)=>{var g,h;const{loadedScripts:o}=n,{id:i,src:p}=t,c=document.querySelector(`script[src="${p}"]`);if(c){if((g=n.onScript)==null||g.call(n,c),o&&!o.get(p)){c.addEventListener("load",()=>s(i)),c.addEventListener("error",()=>a(i));return}return s(i)}const u=window.define;window.define=void 0;const l=()=>{o==null||o.set(p,!0),window.define=u},r=document.createElement("script");r.src=p,r.onload=()=>{s(i),l()},r.onerror=()=>{a(i),l()},document.head.appendChild(r),(h=n.onScript)==null||h.call(n,r)})},X=({isDev:e,isStage:n})=>`${e?"":`https://${n?k:B}`}/api`,Z=()=>{const e=J()&&window.location.hostname;return!!e&&(O.includes(e)||O.some(n=>e.endsWith(n)))},Q=e=>typeof e=="string";async function ee({path:e,baseApiUrl:n,method:t="GET",headers:s={},params:a,body:o}){const p=`${n||X({isDev:!1,isStage:!1})}${e}`,c={method:t,headers:{"Content-Type":"application/json",...s}};o&&(c.body=JSON.stringify(o));const u=a?new URLSearchParams(a).toString():"",l=u?`?${u}`:"",r=await fetch(`${p}${l}`,c);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}var R=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(R||{}),I=(e=>(e.toastAdd="studio:toastAdd",e.toastRemove="studio:toastRemove",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.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.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))(I||{});const N={[R.free]:0,[R.startup]:10,[R.business]:20,[R.enterprise]:30};function te(e){const n=e;return n.init=t=>s=>e(s,t),n}const se=e=>te(e);async function ne({editor:e,plan:n,pluginName:t,licenseKey:s,cleanup:a}){let o="",i=!1;const p=Z(),c=l=>{console.warn("Cleanup plugin:",t,"Reason:",l),a()},u=(l={})=>{var w;const{error:r,sdkLicense:g}=l,h=(w=l.plan)==null?void 0:w.category;if(!(g||l.license)||r)c(r||"Invalid license");else if(h){const d=N[n],f=N[h];d>f&&c({pluginRequiredPlan:n,licensePlan:h})}};e.on(V,l=>{o=l==null?void 0:l.baseApiUrl,i=!0}),e.on(Y,l=>{u(l)}),setTimeout(async()=>{if(!i){if(p)return;if(s){const l=await oe({licenseKey:s,pluginName:t,baseApiUrl:o});l&&u(l)}else c("The `licenseKey` option not provided")}},2e3)}async function oe(e){const{licenseKey:n,pluginName:t,baseApiUrl:s}=e;try{return(await ee({baseApiUrl:s,path:`/sdk/${n||"na"}`,method:"POST",params:{d:window.location.hostname,pn:t}})).result||{}}catch(a){return console.error("Error during SDK license check:",a),!1}}const ae=e=>n=>{var t;return((t=n.getAttribute)==null?void 0:t.call(n,z))===e},ie=(...e)=>(n,t)=>e.some(s=>t.is(s)),F=(e,n,t)=>{const{doc:s=document}=t,a=t.target||s.head,o=a.querySelector(`style[${e}]`)||s.createElement("style");o.setAttribute(e,"true"),o.innerHTML=n,!a.contains(o)&&a.appendChild(o)},re="gjs-plg-",W="data-gs-plg-",z="data-type-role";function K(e,n,t){let s,a,o,i,p;const c=n===void 0?100:n;function u(){const r=Date.now()-i;r<c&&r>=0?s=setTimeout(u,c-r):(s=null,p=e.apply(o,a),o=a=null)}const l=function(){return o=this,a=arguments,i=Date.now(),s||(s=setTimeout(u,c)),p};return l.clear=function(){s&&(clearTimeout(s),s=null)},l.flush=function(){s&&(p=e.apply(o,a),o=a=null,clearTimeout(s),s=null)},l}const T="page-break";var m=(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))(m||{});function _(e,n){const s={mm:3.7795275590551185,cm:37.79527559055118,in:96,pt:1.3333333333333333,pc:16};return s[n]?e*s[n]:null}const ce=(e,n)=>{const{name:t,id:s,width:a,height:o,unit:i}=e,{fixedHeight:p}=n,c=`${a}${i}`,u=`${o}${i}`;return{id:s||t.toLowerCase().replace(/\s/g,"-"),name:`${t} (${c} x ${u})`,sizeH:o,sizeW:a,sizeUnit:i,widthMedia:"",width:c,minHeight:p?"0":`${_(o,i)}px`,height:p?u:void 0}},j="page-breaks",x="gjs-page-breaks-spot",M=e=>e.type===j;function le(e){const{Devices:n}=e,{height:t,minHeight:s}=n.getSelected().attributes,o=parseFloat(`${t&&t!=="auto"?t:s}`),i=e.getWrapper(),p=i==null?void 0:i.getEl(),c=[];if(!i||!p)return c;const u=p.getBoundingClientRect().height,r=i.findType(T).map(h=>h.getEl()).filter(Boolean).map(h=>({top:h.offsetTop,height:h.offsetHeight}));let g=0;for(;g<u;){const h=r.find(y=>y.top>g&&y.top<g+o);h?(g=h.top+h.height,c.push(h.top)):(g+=o,g<u&&c.push(g))}return c}function de(e,n){const{Canvas:t}=e,s=t.events,a=e.events;let o;const i=()=>{F(`${W}preset-printable-spots`,`.${x} {
1
+ (function(B,k){typeof exports=="object"&&typeof module<"u"?module.exports=k():typeof define=="function"&&define.amd?define(k):(B=typeof globalThis<"u"?globalThis:B||self,B.StudioSdkPlugins_presetPrintable=k())})(this,function(){"use strict";const B="app.grapesjs.com",k="app-stage.grapesjs.com",U=[B,"app2.grapesjs.com",k,"app-stage2.grapesjs.com","localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],Y="license:check:start",J="license:check:end",X=()=>typeof window<"u",I=(e,n={})=>{const t=ee(e)?{id:e,src:e}:e;return new Promise((s,a)=>{var g,h;const{loadedScripts:o}=n,{id:i,src:p}=t,c=document.querySelector(`script[src="${p}"]`);if(c){if((g=n.onScript)==null||g.call(n,c),o&&!o.get(p)){c.addEventListener("load",()=>s(i)),c.addEventListener("error",()=>a(i));return}return s(i)}const u=window.define;window.define=void 0;const l=()=>{o==null||o.set(p,!0),window.define=u},r=document.createElement("script");r.src=p,r.onload=()=>{s(i),l()},r.onerror=()=>{a(i),l()},document.head.appendChild(r),(h=n.onScript)==null||h.call(n,r)})},Z=({isDev:e,isStage:n})=>`${e?"":`https://${n?k:B}`}/api`,Q=()=>{const e=X()&&window.location.hostname;return!!e&&(U.includes(e)||U.some(n=>e.endsWith(n)))},ee=e=>typeof e=="string";async function te({path:e,baseApiUrl:n,method:t="GET",headers:s={},params:a,body:o}){const p=`${n||Z({isDev:!1,isStage:!1})}${e}`,c={method:t,headers:{"Content-Type":"application/json",...s}};o&&(c.body=JSON.stringify(o));const u=a?new URLSearchParams(a).toString():"",l=u?`?${u}`:"",r=await fetch(`${p}${l}`,c);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return r.json()}var R=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(R||{}),N=(e=>(e.toastAdd="studio:toastAdd",e.toastRemove="studio:toastRemove",e.dialogOpen="studio:dialogOpen",e.dialogClose="studio:dialogClose",e.dialogExportCode="studio:dialogExportCode",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.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))(N||{});const F={[R.free]:0,[R.startup]:10,[R.business]:20,[R.enterprise]:30};function se(e){const n=e;return n.init=t=>s=>e(s,t),n}const ne=e=>se(e);async function oe({editor:e,plan:n,pluginName:t,licenseKey:s,cleanup:a}){let o="",i=!1;const p=Q(),c=l=>{console.warn("Cleanup plugin:",t,"Reason:",l),a()},u=(l={})=>{var w;const{error:r,sdkLicense:g}=l,h=(w=l.plan)==null?void 0:w.category;if(!(g||l.license)||r)c(r||"Invalid license");else if(h){const d=F[n],f=F[h];d>f&&c({pluginRequiredPlan:n,licensePlan:h})}};e.on(Y,l=>{o=l==null?void 0:l.baseApiUrl,i=!0}),e.on(J,l=>{u(l)}),setTimeout(async()=>{if(!i){if(p)return;if(s){const l=await ae({licenseKey:s,pluginName:t,baseApiUrl:o});l&&u(l)}else c("The `licenseKey` option not provided")}},2e3)}async function ae(e){const{licenseKey:n,pluginName:t,baseApiUrl:s}=e;try{return(await te({baseApiUrl:s,path:`/sdk/${n||"na"}`,method:"POST",params:{d:window.location.hostname,pn:t}})).result||{}}catch(a){return console.error("Error during SDK license check:",a),!1}}const ie=e=>n=>{var t;return((t=n.getAttribute)==null?void 0:t.call(n,z))===e},re=(...e)=>(n,t)=>e.some(s=>t.is(s)),W=(e,n,t)=>{const{doc:s=document}=t,a=t.target||s.head,o=a.querySelector(`style[${e}]`)||s.createElement("style");o.setAttribute(e,"true"),o.innerHTML=n,!a.contains(o)&&a.appendChild(o)},ce="gjs-plg-",C="data-gs-plg-",z="data-type-role";function K(e,n,t){let s,a,o,i,p;const c=n===void 0?100:n;function u(){const r=Date.now()-i;r<c&&r>=0?s=setTimeout(u,c-r):(s=null,p=e.apply(o,a),o=a=null)}const l=function(){return o=this,a=arguments,i=Date.now(),s||(s=setTimeout(u,c)),p};return l.clear=function(){s&&(clearTimeout(s),s=null)},l.flush=function(){s&&(p=e.apply(o,a),o=a=null,clearTimeout(s),s=null)},l}const E="page-break";var m=(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))(m||{});function _(e,n){const s={mm:3.7795275590551185,cm:37.79527559055118,in:96,pt:1.3333333333333333,pc:16};return s[n]?e*s[n]:null}const le=(e,n)=>{const{name:t,id:s,width:a,height:o,unit:i}=e,{fixedHeight:p}=n,c=`${a}${i}`,u=`${o}${i}`;return{id:s||t.toLowerCase().replace(/\s/g,"-"),name:`${t} (${c} x ${u})`,sizeH:o,sizeW:a,sizeUnit:i,widthMedia:"",width:c,minHeight:p?"0":`${_(o,i)}px`,height:p?u:void 0}},j="page-breaks",D="gjs-page-breaks-spot",M=e=>e.type===j;function de(e){const{Devices:n}=e,{height:t,minHeight:s}=n.getSelected().attributes,o=parseFloat(`${t&&t!=="auto"?t:s}`),i=e.getWrapper(),p=i==null?void 0:i.getEl(),c=[];if(!i||!p)return c;const u=p.getBoundingClientRect().height,r=i.findType(E).map(h=>h.getEl()).filter(Boolean).map(h=>({top:h.offsetTop,height:h.offsetHeight}));let g=0;for(;g<u;){const h=r.find(y=>y.top>g&&y.top<g+o);h?(g=h.top+h.height,c.push(h.top)):(g+=o,g<u&&c.push(g))}return c}function pe(e,n){const{Canvas:t}=e,s=t.events,a=e.events;let o;const i=()=>{W(`${C}preset-printable-spots`,`.${D} {
2
2
  position: absolute;
3
3
  left: 0;
4
4
  width: 100%;
5
5
  border-top: 1px dashed var(--gs-theme-cl-cmp-bg2, var(--gjs-color-blue));
6
6
  color: var(--gs-theme-cl-prm-txt, var(--gjs-font-color));
7
7
  }
8
- .${x}::after {
8
+ .${D}::after {
9
9
  background-color: var(--gs-theme-cl-cmp-bg1, var(--gjs-color-highlight));
10
10
  content: attr(data-page-number);
11
11
  display: block;
@@ -16,9 +16,9 @@
16
16
  right: 0;
17
17
  transform: translate(100%, -50%);
18
18
  }
19
- `,{target:window.document.head})},p=()=>{if(n.enablePageBreaksSpot===!1)return;const d={id:j,type:j,component:e.getWrapper()};return t.getSpots(d).pop()||t.addSpot(d)},c=({spot:d})=>{const{spotEl:f}=d.attributes;!M(d)||!f||!o||o.removeChild(f)},u=({spot:d})=>{if(!M(d)||!o)return;let{spotEl:f}=d.attributes;f||(f=document.createElement("div"),f.className=`${x}__items`,d.set({spotEl:f})),o.appendChild(f)},l=({spot:d})=>{const{spotEl:f,pageBreaks:G=[]}=d.attributes;!M(d)||!f||!o||(Object.entries(d.getStyle()).forEach(([L,S])=>f.style.setProperty(L,S)),f.innerHTML="",G.forEach((L,S)=>{const E=document.createElement("div");E.setAttribute("data-page-number",`${S+2}`),E.className=x,E.style.top=`${L}px`,f.appendChild(E)}))},r=K(()=>{if(e.em.destroyed)return;const d=p();d&&d.set({pageBreaks:le(e),up:(d.attributes.up||0)+1})},150),g=K(r,200),h=()=>{o=t.getSpotsEl(),p()},y=()=>{const d=p();d&&d.set({up:(d.attributes.up||0)+1})},w=[["component:input",r],["frame:scroll",y],[a.update,r],[s.spotAdd,u],[s.spotUpdate,l],[s.spotRemove,c],[s.frameLoadBody,h]];return w.forEach(([d,f])=>e.on(d,f)),e.onReady(()=>{i(),new ResizeObserver(y).observe(t.getElement().parentElement)}),()=>{w.forEach(([d,f])=>e.off(d,f)),r.clear(),g.clear()}}var H=(e=>(e.print="presetPrintable:print",e))(H||{});const C=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 pe(e,n){const{Commands:t,Pages:s}=e;return t.add(H.print,async(a,o,i={})=>{const p={page:i.allPages?void 0:s.getSelected(),styles:"inline",optionsHtml:{exporter:null}},u=(await t.run(I.projectFiles,p)).filter(g=>g.filename.endsWith(".html")),l=u.map(g=>g.content).join('<div style="break-before: page;"></div>'),r=[];if(i.separatePrints)for(const g of u)r.push(await C(g));else r.push(await C({content:l,filename:"",mimeType:""}));for(const g of r){const h=g.contentWindow;h.focus(),h.print()}setTimeout(()=>r.forEach(g=>g.remove()),1e3)}),t.add("presetPrintable:exp",async a=>{await U("https://cdn.jsdelivr.net/npm/html2canvas@1.4.1/dist/html2canvas.min.js"),await U("https://cdn.jsdelivr.net/npm/jspdf@3.0.0/dist/jspdf.umd.min.js");const{Devices:o,Canvas:i}=a,{sizeW:p,sizeH:c,sizeUnit:u}=o.getSelected().attributes,l=i.getFrameEl().contentDocument,r="px",g=[_(p,u),_(c,u)],h=new window.jspdf.jsPDF({unit:r,format:g}),y=l.body;h.html(y,{callback:w=>w.save()})}),()=>{delete e.Commands.commands[H.print]}}function ge(e,n){const{blockPageBreak:t={}}=n,{Components:s,Blocks:a}=e,o="Page Break",i=`${re}${T}`;return s.addType(T,{block:t&&{label:o,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:ae(T),model:{defaults:{name:o,classes:i,attributes:{[z]:T},emptyState:!0,stylable:!1,droppable:!1,draggable:ie("wrapper"),styles:`.${i} { break-before: page; }`,traits:[]}}}),()=>{s.removeType(T),a.remove(T)}}const ue="presetPrintable",he=R.free;return se(function(e,n={}){var q;const t={selectedDevice:m.A4,...n},{Canvas:s,Devices:a,Blocks:o}=e,i=s.events,p=e.events,c=t.selectedDevice||a.getConfig().default,u=[{id:m.A5,name:"A5",width:148,height:210,unit:"mm"},{id:m.A5Portrait,name:"A5 Portrait",width:210,height:148,unit:"mm"},{id:m.A4,name:"A4",width:210,height:297,unit:"mm"},{id:m.A3,name:"A3",width:297,height:420,unit:"mm"},{id:m.B5,name:"B5",width:176,height:250,unit:"mm"},{id:m.B4,name:"B4",width:250,height:353,unit:"mm"},{id:m.letter,name:"Letter",width:8.5,height:11,unit:"in"},{id:m.legal,name:"Legal",width:8.5,height:14,unit:"in"},{id:m.ledger,name:"Ledger",width:11,height:17,unit:"in"}],r=(((q=t.devices)==null?void 0:q.call(t,{items:u}))||u).map(v=>ce(v,t));a.devices.reset(r);const g=c&&a.get(c)||a.getAll().at(0);a.select(g),["map","video"].forEach(v=>o.remove(v));const y=()=>{const v="page-rule",{rules:b}=e.Css,{width:A,height:P,minHeight:$}=a.getSelected().attributes,D=P&&P!=="auto"?P:$;(b.where({id:v}).pop()||b.add({id:v,selectors:[],selectorsAdd:"@page"},{at:0})).setStyle({size:`${A} ${D}`,margin:"0"})},w=v=>{const b=v.document,{minHeight:A}=a.getSelected().attributes,$=`
20
- ${!!parseFloat(`${A}`)?`
21
- [data-gjs-type="wrapper"] { min-height: ${A}; }
19
+ `,{target:window.document.head})},p=()=>{if(n.enablePageBreaksSpot===!1)return;const d={id:j,type:j,component:e.getWrapper()};return t.getSpots(d).pop()||t.addSpot(d)},c=({spot:d})=>{const{spotEl:f}=d.attributes;!M(d)||!f||!o||o.removeChild(f)},u=({spot:d})=>{if(!M(d)||!o)return;let{spotEl:f}=d.attributes;f||(f=document.createElement("div"),f.className=`${D}__items`,d.set({spotEl:f})),o.appendChild(f)},l=({spot:d})=>{const{spotEl:f,pageBreaks:G=[]}=d.attributes;!M(d)||!f||!o||(Object.entries(d.getStyle()).forEach(([$,x])=>f.style.setProperty($,x)),f.innerHTML="",G.forEach(($,x)=>{const A=document.createElement("div");A.setAttribute("data-page-number",`${x+2}`),A.className=D,A.style.top=`${$}px`,f.appendChild(A)}))},r=K(()=>{if(e.em.destroyed)return;const d=p();d&&d.set({pageBreaks:de(e),up:(d.attributes.up||0)+1})},150),g=K(r,200),h=()=>{o=t.getSpotsEl(),p()},y=()=>{const d=p();d&&d.set({up:(d.attributes.up||0)+1})},w=[["component:input",r],["frame:scroll",y],[a.update,r],[s.spotAdd,u],[s.spotUpdate,l],[s.spotRemove,c],[s.frameLoadBody,h]];return w.forEach(([d,f])=>e.on(d,f)),e.onReady(()=>{i(),new ResizeObserver(y).observe(t.getElement().parentElement)}),()=>{w.forEach(([d,f])=>e.off(d,f)),r.clear(),g.clear()}}var H=(e=>(e.print="presetPrintable:print",e))(H||{});const q=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 ge(e,n){const{Commands:t,Pages:s}=e;return t.add(H.print,async(a,o,i={})=>{const p={page:i.allPages?void 0:s.getSelected(),styles:"inline",optionsHtml:{exporter:null}},u=(await t.run(N.projectFiles,p)).filter(g=>g.filename.endsWith(".html")),l=u.map(g=>g.content).join('<div style="break-before: page;"></div>'),r=[];if(i.separatePrints)for(const g of u)r.push(await q(g));else r.push(await q({content:l,filename:"",mimeType:""}));for(const g of r){const h=g.contentWindow;h.focus(),h.print()}setTimeout(()=>r.forEach(g=>g.remove()),1e3)}),t.add("presetPrintable:exp",async a=>{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");const{Devices:o,Canvas:i}=a,{sizeW:p,sizeH:c,sizeUnit:u}=o.getSelected().attributes,l=i.getFrameEl().contentDocument,r="px",g=[_(p,u),_(c,u)],h=new window.jspdf.jsPDF({unit:r,format:g}),y=l.body;h.html(y,{callback:w=>w.save()})}),()=>{delete e.Commands.commands[H.print]}}function ue(e,n){const{blockPageBreak:t={}}=n,{Components:s,Blocks:a}=e,o="Page Break",i=`${ce}${E}`;return s.addType(E,{block:t&&{label:o,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:ie(E),model:{defaults:{name:o,classes:i,attributes:{[z]:E},emptyState:!0,stylable:!1,droppable:!1,draggable:re("wrapper"),styles:`.${i} { break-before: page; }`,traits:[]}}}),()=>{s.removeType(E),a.remove(E)}}const he="presetPrintable",fe=R.free;return ne(function(e,n={}){var V;const t={selectedDevice:m.A4,...n},{Canvas:s,Devices:a,Blocks:o}=e,i=s.events,p=e.events,c=t.selectedDevice||a.getConfig().default,u=[{id:m.A5,name:"A5",width:148,height:210,unit:"mm"},{id:m.A5Portrait,name:"A5 Portrait",width:210,height:148,unit:"mm"},{id:m.A4,name:"A4",width:210,height:297,unit:"mm"},{id:m.A3,name:"A3",width:297,height:420,unit:"mm"},{id:m.B5,name:"B5",width:176,height:250,unit:"mm"},{id:m.B4,name:"B4",width:250,height:353,unit:"mm"},{id:m.letter,name:"Letter",width:8.5,height:11,unit:"in"},{id:m.legal,name:"Legal",width:8.5,height:14,unit:"in"},{id:m.ledger,name:"Ledger",width:11,height:17,unit:"in"}],r=(((V=t.devices)==null?void 0:V.call(t,{items:u}))||u).map(v=>le(v,t));a.devices.reset(r);const g=c&&a.get(c)||a.getAll().at(0);a.select(g),["map","video"].forEach(v=>o.remove(v));const y=(v={})=>{const b="page-rule",{rules:P}=e.Css,{width:T,height:L,minHeight:S}=a.getSelected().attributes,ve=L&&L!=="auto"?L:S,O=P.where({id:b}).pop(),be=O||P.add({id:b,selectors:[],selectorsAdd:"@page"},{at:0});(v.fromDeviceChange||!O)&&be.addStyle({size:`${T} ${ve}`,...!O&&{margin:"0"}})},w=(v,b={})=>{const P=v.document,{minHeight:T}=a.getSelected().attributes,S=`
20
+ ${!!parseFloat(`${T}`)?`
21
+ [data-gjs-type="wrapper"] { min-height: ${T}; }
22
22
  `:`
23
23
  body {
24
24
  overflow: hidden;
@@ -29,4 +29,4 @@
29
29
  height: 100dvh;
30
30
  }
31
31
  `}
32
- `;F(`${W}preset-printable`,$,{doc:b,target:b.head}),y()};e.on(i.frameLoadBody,v=>{const b=v.window;if(w(b),t.fixedHeight){const P=v.model.getComponent().getEl();P==null||P.addEventListener("scroll",$=>{const D=$.target;D.scrollTop>0&&D.scrollTo(0,0)})}}),e.on(a.events.select,()=>{var b;const v=(b=s.getFrameEl().contentDocument)==null?void 0:b.defaultView;v&&w(v)});const d=()=>{const b=e.Css.getRules().filter(A=>A.selectorsToString()==="body").pop();b==null||b.addStyle({"margin-top":"","margin-right":"","margin-bottom":"","margin-left":"",margin:"0"})},f=[[p.projectLoad,d]];f.forEach(([v,b])=>e.on(v,b));const G=de(e,t),L=pe(e),S=ge(e,t);e.onReady(()=>{e.UndoManager.clear()});const E=()=>{f.forEach(([v,b])=>e.off(v,b)),G(),L(),S()};e.on(p.destroy,E),ne({editor:e,licenseKey:t.licenseKey,plan:he,pluginName:ue,cleanup:E})})});
32
+ `;W(`${C}preset-printable`,S,{doc:P,target:P.head}),y(b)};e.on(i.frameLoadBody,v=>{const b=v.window;if(w(b),t.fixedHeight){const T=v.model.getComponent().getEl();T==null||T.addEventListener("scroll",L=>{const S=L.target;S.scrollTop>0&&S.scrollTo(0,0)})}}),e.on(a.events.select,()=>{var b;const v=(b=s.getFrameEl().contentDocument)==null?void 0:b.defaultView;v&&w(v,{fromDeviceChange:!0})});const d=()=>{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"})},f=[[p.projectLoad,d]];f.forEach(([v,b])=>e.on(v,b));const G=pe(e,t),$=ge(e),x=ue(e,t);e.onReady(()=>{e.UndoManager.clear()});const A=()=>{f.forEach(([v,b])=>e.off(v,b)),G(),$(),x()};e.on(p.destroy,A),oe({editor:e,licenseKey:t.licenseKey,plan:fe,pluginName:he,cleanup:A})})});
@@ -19,6 +19,9 @@ export interface CreateDevicePrintableProps {
19
19
  unit: string;
20
20
  id?: string;
21
21
  }
22
+ export interface UpdatePrintStyleOptions {
23
+ fromDeviceChange?: boolean;
24
+ }
22
25
  export interface SpotPageBreaksProps extends CanvasSpotProps {
23
26
  pageBreaks?: number[];
24
27
  spotEl?: HTMLElement;