@grapesjs/studio-sdk-plugins 1.0.28 → 1.0.29

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 (50) hide show
  1. package/dist/canvasAbsoluteMode/index.cjs.js +1 -1
  2. package/dist/canvasAbsoluteMode/index.es.js +98 -97
  3. package/dist/canvasAbsoluteMode/index.umd.js +1 -1
  4. package/dist/canvasFullSize/index.cjs.js +8 -7
  5. package/dist/canvasFullSize/index.es.js +145 -138
  6. package/dist/canvasFullSize/index.umd.js +9 -8
  7. package/dist/canvasFullSize/typesSchema.d.ts +5 -0
  8. package/dist/googleFontsAssetProvider/index.cjs.js +1 -1
  9. package/dist/googleFontsAssetProvider/index.es.js +11 -11
  10. package/dist/googleFontsAssetProvider/index.umd.js +1 -1
  11. package/dist/iconifyComponent/index.cjs.js +2 -2
  12. package/dist/iconifyComponent/index.es.js +13 -13
  13. package/dist/iconifyComponent/index.umd.js +2 -2
  14. package/dist/index.cjs.d.ts +1 -0
  15. package/dist/index.cjs.js +192 -95
  16. package/dist/index.d.ts +1 -0
  17. package/dist/index.es.d.ts +1 -0
  18. package/dist/index.es.js +7577 -7242
  19. package/dist/index.umd.js +192 -95
  20. package/dist/layoutSidebarButtons/index.cjs.js +1 -1
  21. package/dist/layoutSidebarButtons/index.es.js +156 -154
  22. package/dist/layoutSidebarButtons/index.umd.js +1 -1
  23. package/dist/presetPrintable/index.cjs.js +4 -4
  24. package/dist/presetPrintable/index.es.js +59 -59
  25. package/dist/presetPrintable/index.umd.js +1 -1
  26. package/dist/prosemirror/index.cjs.js +5 -5
  27. package/dist/prosemirror/index.es.js +100 -100
  28. package/dist/prosemirror/index.umd.js +1 -1
  29. package/dist/rteTinyMce/index.cjs.js +2 -2
  30. package/dist/rteTinyMce/index.es.js +10 -10
  31. package/dist/rteTinyMce/index.umd.js +1 -1
  32. package/dist/shapeDividerComponent/index.cjs.d.ts +3 -0
  33. package/dist/shapeDividerComponent/index.cjs.js +97 -0
  34. package/dist/shapeDividerComponent/index.d.ts +3 -0
  35. package/dist/shapeDividerComponent/index.es.d.ts +3 -0
  36. package/dist/shapeDividerComponent/index.es.js +427 -0
  37. package/dist/shapeDividerComponent/index.umd.js +97 -0
  38. package/dist/shapeDividerComponent/shared.d.ts +3 -0
  39. package/dist/shapeDividerComponent/types.d.ts +10 -0
  40. package/dist/shapeDividerComponent/typesSchema.d.ts +9 -0
  41. package/dist/swiperComponent/index.cjs.js +9 -9
  42. package/dist/swiperComponent/index.es.js +130 -122
  43. package/dist/swiperComponent/index.umd.js +5 -5
  44. package/dist/tableComponent/index.cjs.js +1 -1
  45. package/dist/tableComponent/index.es.js +9 -9
  46. package/dist/tableComponent/index.umd.js +1 -1
  47. package/dist/youtubeAssetProvider/index.cjs.js +1 -1
  48. package/dist/youtubeAssetProvider/index.es.js +34 -34
  49. package/dist/youtubeAssetProvider/index.umd.js +1 -1
  50. package/package.json +2 -2
@@ -1,24 +1,24 @@
1
- function q(e, i, n) {
2
- let s, a, c, d, m;
1
+ function X(e, i, t) {
2
+ let s, o, c, h, m;
3
3
  const r = i;
4
- function l() {
5
- const u = Date.now() - d;
6
- u < r && u >= 0 ? s = setTimeout(l, r - u) : (s = null, m = e.apply(c, a), c = a = null);
4
+ function d() {
5
+ const l = Date.now() - h;
6
+ l < r && l >= 0 ? s = setTimeout(d, r - l) : (s = null, m = e.apply(c, o), c = o = null);
7
7
  }
8
- const o = function() {
9
- return c = this, a = arguments, d = Date.now(), s || (s = setTimeout(l, r)), m;
8
+ const a = function() {
9
+ return c = this, o = arguments, h = Date.now(), s || (s = setTimeout(d, r)), m;
10
10
  };
11
- return o.clear = function() {
11
+ return a.clear = function() {
12
12
  s && (clearTimeout(s), s = null);
13
- }, o.flush = function() {
14
- s && (m = e.apply(c, a), c = a = null, clearTimeout(s), s = null);
15
- }, o;
13
+ }, a.flush = function() {
14
+ s && (m = e.apply(c, o), c = o = null, clearTimeout(s), s = null);
15
+ }, a;
16
16
  }
17
- const _ = "app.grapesjs.com", k = "app-stage.grapesjs.com", B = "app2.grapesjs.com", X = "app-stage2.grapesjs.com", V = [
18
- _,
19
- B,
17
+ const U = "app.grapesjs.com", k = "app-stage.grapesjs.com", Y = "app2.grapesjs.com", J = "app-stage2.grapesjs.com", j = [
18
+ U,
19
+ Y,
20
20
  k,
21
- X,
21
+ J,
22
22
  "localhost",
23
23
  "127.0.0.1",
24
24
  ".local-credentialless.webcontainer.io",
@@ -27,112 +27,112 @@ const _ = "app.grapesjs.com", k = "app-stage.grapesjs.com", B = "app2.grapesjs.c
27
27
  // For stackblitz.com demos
28
28
  "-sandpack.codesandbox.io"
29
29
  // For Sandpack demos
30
- ], Y = "license:check:start", Z = "license:check:end", J = () => typeof window < "u", Q = ({ isDev: e, isStage: i }) => `${e ? "" : `https://${i ? k : _}`}/api`, ee = () => {
31
- const e = J() && window.location.hostname;
32
- return !!e && (V.includes(e) || V.some((i) => e.endsWith(i)));
30
+ ], Q = "license:check:start", ee = "license:check:end", te = () => typeof window < "u", ne = ({ isDev: e, isStage: i }) => `${e ? "" : `https://${i ? k : U}`}/api`, se = () => {
31
+ const e = te() && window.location.hostname;
32
+ return !!e && (j.includes(e) || j.some((i) => e.endsWith(i)));
33
33
  };
34
- async function te({
34
+ async function oe({
35
35
  path: e,
36
36
  baseApiUrl: i,
37
- method: n = "GET",
37
+ method: t = "GET",
38
38
  headers: s = {},
39
- params: a,
39
+ params: o,
40
40
  body: c
41
41
  }) {
42
- const m = `${i || Q({ isDev: !1, isStage: !1 })}${e}`, r = {
43
- method: n,
42
+ const m = `${i || ne({ isDev: !1, isStage: !1 })}${e}`, r = {
43
+ method: t,
44
44
  headers: {
45
45
  "Content-Type": "application/json",
46
46
  ...s
47
47
  }
48
48
  };
49
49
  c && (r.body = JSON.stringify(c));
50
- const l = a ? new URLSearchParams(a).toString() : "", o = l ? `?${l}` : "", u = await fetch(`${m}${o}`, r);
51
- if (!u.ok)
52
- throw new Error(`HTTP error! status: ${u.status}`);
53
- return u.json();
50
+ const d = o ? new URLSearchParams(o).toString() : "", a = d ? `?${d}` : "", l = await fetch(`${m}${a}`, r);
51
+ if (!l.ok)
52
+ throw new Error(`HTTP error! status: ${l.status}`);
53
+ return l.json();
54
54
  }
55
- var v = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(v || {});
56
- const O = {
57
- [v.free]: 0,
58
- [v.startup]: 10,
59
- [v.business]: 20,
60
- [v.enterprise]: 30
55
+ var y = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(y || {});
56
+ const I = {
57
+ [y.free]: 0,
58
+ [y.startup]: 10,
59
+ [y.business]: 20,
60
+ [y.enterprise]: 30
61
61
  };
62
- function ne(e) {
62
+ function ae(e) {
63
63
  const i = e;
64
- return i.init = (n) => (s) => e(s, n), i;
64
+ return i.init = (t) => (s) => e(s, t), i;
65
65
  }
66
- const se = (e) => /* @__PURE__ */ ne(e);
67
- async function oe({
66
+ const ie = (e) => /* @__PURE__ */ ae(e);
67
+ async function ce({
68
68
  editor: e,
69
69
  plan: i,
70
- pluginName: n,
70
+ pluginName: t,
71
71
  licenseKey: s,
72
- cleanup: a
72
+ cleanup: o
73
73
  }) {
74
- let c = "", d = !1;
75
- const m = ee(), r = (o) => {
76
- console.warn("Cleanup plugin:", n, "Reason:", o), a();
77
- }, l = (o = {}) => {
78
- var b;
79
- const { error: u, sdkLicense: w } = o, g = (b = o.plan) == null ? void 0 : b.category;
80
- if (!(w || o.license) || u)
81
- r(u || "Invalid license");
82
- else if (g) {
83
- const S = O[i], A = O[g];
84
- S > A && r({ pluginRequiredPlan: i, licensePlan: g });
74
+ let c = "", h = !1;
75
+ const m = se(), r = (a) => {
76
+ console.warn("Cleanup plugin:", t, "Reason:", a), o();
77
+ }, d = (a = {}) => {
78
+ var v;
79
+ const { error: l, sdkLicense: g } = a, w = (v = a.plan) == null ? void 0 : v.category;
80
+ if (!(g || a.license) || l)
81
+ r(l || "Invalid license");
82
+ else if (w) {
83
+ const S = I[i], E = I[w];
84
+ S > E && r({ pluginRequiredPlan: i, licensePlan: w });
85
85
  }
86
86
  };
87
- e.on(Y, (o) => {
88
- c = o == null ? void 0 : o.baseApiUrl, d = !0;
89
- }), e.on(Z, (o) => {
90
- l(o);
87
+ e.on(Q, (a) => {
88
+ c = a == null ? void 0 : a.baseApiUrl, h = !0;
89
+ }), e.on(ee, (a) => {
90
+ d(a);
91
91
  }), setTimeout(async () => {
92
- if (!d) {
92
+ if (!h) {
93
93
  if (m) return;
94
94
  if (s) {
95
- const o = await ae({ licenseKey: s, pluginName: n, baseApiUrl: c });
96
- o && l(o);
95
+ const a = await re({ licenseKey: s, pluginName: t, baseApiUrl: c });
96
+ a && d(a);
97
97
  } else
98
98
  r("The `licenseKey` option not provided");
99
99
  }
100
100
  }, 2e3);
101
101
  }
102
- async function ae(e) {
103
- const { licenseKey: i, pluginName: n, baseApiUrl: s } = e;
102
+ async function re(e) {
103
+ const { licenseKey: i, pluginName: t, baseApiUrl: s } = e;
104
104
  try {
105
- return (await te({
105
+ return (await oe({
106
106
  baseApiUrl: s,
107
107
  path: `/sdk/${i || "na"}`,
108
108
  method: "POST",
109
109
  params: {
110
110
  d: window.location.hostname,
111
- pn: n
111
+ pn: t
112
112
  }
113
113
  })).result || {};
114
- } catch (a) {
115
- return console.error("Error during SDK license check:", a), !1;
114
+ } catch (o) {
115
+ return console.error("Error during SDK license check:", o), !1;
116
116
  }
117
117
  }
118
- const U = "canvasFullSize", ie = v.startup, ce = (e, i) => {
119
- const { rule: n, ruleView: s } = i, { style: a } = n.attributes;
120
- if (a && a[e]) {
121
- const c = a[e], d = /([0-9.]+)(vh|dvh|lvh|svh)/g, m = d.test(c), r = s.frameView.model;
118
+ const N = "data-gs-plg-", O = "canvasFullSize", le = y.startup, ue = (e, i) => {
119
+ const { rule: t, ruleView: s } = i, { style: o } = t.attributes;
120
+ if (o && o[e]) {
121
+ const c = o[e], h = /([0-9.]+)(vh|dvh|lvh|svh)/g, m = h.test(c), r = s.frameView.model;
122
122
  if (m && r.hasAutoHeight()) {
123
- const l = c.replace(d, (u, w) => `${window.innerHeight * (parseFloat(w) / 100)}px`), o = n.toCSS({
123
+ const d = c.replace(h, (l, g) => `${window.innerHeight * (parseFloat(g) / 100)}px`), a = t.toCSS({
124
124
  style: {
125
- ...a,
126
- [e]: l
125
+ ...o,
126
+ [e]: d
127
127
  }
128
128
  });
129
- i.css = o;
129
+ i.css = a;
130
130
  }
131
131
  }
132
- }, re = (e) => {
133
- ["height", "min-height", "max-height"].forEach((i) => ce(i, e));
134
- }, le = function(e, i = {}) {
135
- const { Canvas: n, Commands: s, Devices: a, Css: c } = e, d = {
132
+ }, pe = (e) => {
133
+ ["height", "min-height", "max-height"].forEach((i) => ue(i, e));
134
+ }, me = function(e, i = {}) {
135
+ const { Canvas: t, Commands: s, Devices: o, Css: c } = e, h = {
136
136
  deviceMaxWidth: 1200,
137
137
  deviceMinHeigth: 500,
138
138
  canvasOffsetY: 30,
@@ -144,82 +144,89 @@ const U = "canvasFullSize", ie = v.startup, ce = (e, i) => {
144
144
  }, {
145
145
  canvasOffsetY: m,
146
146
  canvasOffsetX: r,
147
- canvasTransition: l,
148
- deviceMaxWidth: o,
149
- deviceMinHeigth: u,
147
+ canvasTransition: d,
148
+ deviceMaxWidth: a,
149
+ deviceMinHeigth: l,
150
+ deviceFixedHeight: g,
150
151
  frameBorderRadius: w,
151
- frameTransition: g
152
- } = d, y = `${u}px`, b = n.events, S = "core:preview", A = `${s.events.stopCommand}${S}`, L = n.getConfig(), M = `${U}:disable`, R = a.getAll().map((t) => ({ ...t.attributes })), W = l * 1e3, j = { x: r, y: m };
153
- let C = {}, x, E;
154
- L.scrollableCanvas = !0, a.getAll().map((t) => {
155
- !t.get("width") && t.set("width", `${o}px`), !t.get("height") && t.set("height", "auto"), !t.get("minHeight") && t.set("minHeight", y);
152
+ frameTransition: M
153
+ } = h, v = `${l}px`, S = t.events, E = "core:preview", W = `${s.events.stopCommand}${E}`, D = t.getConfig(), P = `${O}:disable`, z = o.getAll().map((n) => ({ ...n.attributes })), F = d * 1e3, x = { x: r, y: m };
154
+ let b = {}, H, C;
155
+ D.scrollableCanvas = !g, o.getAll().map((n) => {
156
+ !n.get("width") && n.set("width", `${a}px`), !n.get("height") && n.set("height", g ? "100vh" : "auto"), !n.get("minHeight") && n.set("minHeight", v);
156
157
  });
157
- const H = (t) => {
158
- const p = "data-gs-plg-full-size", h = document.querySelector(`style[${p}]`);
159
- if (t && h)
160
- return h.remove();
161
- const f = h || document.createElement("style"), T = n.getZoomMultiplier();
162
- f.setAttribute(p, "true"), f.innerHTML = `
163
- .gjs-frame-wrapper { transition: width ${g}s !important; }
158
+ const L = (n) => {
159
+ const u = `${N}canvas-full-size`, p = document.querySelector(`style[${u}]`);
160
+ if (n && p)
161
+ return p.remove();
162
+ const f = p || document.createElement("style"), T = t.getZoomMultiplier();
163
+ f.setAttribute(u, "true"), f.innerHTML = `
164
+ .gjs-frame-wrapper { transition: width ${M}s !important; }
164
165
  .gjs-frame-wrapper__bottom { height: ${m * T}px }
165
166
  .gjs-frame { border-radius: ${w}px }
166
- `, !h && document.body.appendChild(f);
167
+ `, !p && document.body.appendChild(f);
167
168
  };
168
- e.on(b.frameLoadHead, (t) => {
169
- if (!L.scrollableCanvas) return;
170
- const { window: p } = t, h = p.document, f = h.head, T = "data-gs-plg-wrapper-style", D = f.querySelector(`style[${T}]`) || h.createElement("style");
171
- D.setAttribute(T, "true"), D.innerHTML = `
172
- [data-gjs-type="wrapper"] { min-height: ${y}; }
173
- [data-gjs-type="mjml"] { min-height: ${y} !important; }
174
- [data-gjs-type="mj-body"] { min-height: ${y} !important; }
175
- `, !f.contains(D) && f.appendChild(D);
169
+ e.on(S.frameLoadHead, (n) => {
170
+ if (!D.scrollableCanvas) return;
171
+ const { window: u } = n, p = u.document, f = p.head, T = `${N}canvas-full-size-wrappers`, A = f.querySelector(`style[${T}]`) || p.createElement("style");
172
+ A.setAttribute(T, "true"), A.innerHTML = `
173
+ body { height: auto !important; }
174
+ [data-gjs-type="wrapper"] { min-height: ${v} !important; }
175
+ [data-gjs-type="mjml"] { min-height: ${v} !important; }
176
+ [data-gjs-type="mj-body"] { min-height: ${v} !important; }
177
+ `, !f.contains(A) && f.appendChild(A);
176
178
  });
177
- const I = () => x.style.display = "none", z = () => x.style.display = "", $ = q(() => {
178
- n.fitViewport({
179
- zoom: (t) => t > 100 ? 100 : t,
179
+ const R = () => H.style.display = "none", K = () => H.style.display = "", G = () => {
180
+ var f;
181
+ if (!g) return;
182
+ const n = t.getZoomMultiplier(), p = t.getRect().height * n - m * 2;
183
+ (f = o.getSelected()) == null || f.set("height", `${Math.max(p, l)}px`), t.fitViewport({ zoom: t.getZoom(), gap: x });
184
+ }, $ = X(() => {
185
+ t.fitViewport({
186
+ zoom: (n) => n > 100 ? 100 : n,
180
187
  ignoreHeight: !0,
181
- gap: j
182
- }), H(), setTimeout(() => {
183
- var p, h;
184
- const { em: t } = e;
185
- t.destroyed || ((h = (p = e.getSelected()) == null ? void 0 : p.getEl()) == null || h.scrollIntoView({ block: "nearest" }), e.refresh({ tools: !0 }), z(), s.isActive(S) ? t.stopDefault() : t.runDefault());
186
- }, W);
187
- }, 100), K = (t = {}) => {
188
- t.options && t.options.from !== "fitViewport" && n.fitViewport({
189
- zoom: n.getZoom(),
188
+ gap: x
189
+ }), G(), L(), setTimeout(() => {
190
+ var u, p;
191
+ const { em: n } = e;
192
+ n.destroyed || ((p = (u = e.getSelected()) == null ? void 0 : u.getEl()) == null || p.scrollIntoView({ block: "nearest" }), e.refresh({ tools: !0 }), K(), s.isActive(E) ? n.stopDefault() : n.runDefault());
193
+ }, F);
194
+ }, 100), Z = (n = {}) => {
195
+ n.options && n.options.from !== "fitViewport" && t.fitViewport({
196
+ zoom: t.getZoom(),
190
197
  ignoreHeight: !0,
191
- gap: j
198
+ gap: x
192
199
  });
193
- }, F = () => {
194
- I(), $();
195
- }, G = () => {
196
- C.overflowX = "hidden", C.overflowY = "auto";
197
- }, N = () => {
198
- E == null || E.disconnect(), $.clear();
199
- }, P = [
200
- [a.events.select, F],
201
- [b.zoom, K],
202
- [A, G],
203
- [e.events.destroy, N],
204
- [c.events.mountBefore, re]
200
+ }, q = () => {
201
+ R(), $();
202
+ }, B = () => {
203
+ b.overflowX = "hidden", b.overflowY = "auto";
204
+ }, V = () => {
205
+ C == null || C.disconnect(), $.clear();
206
+ }, _ = [
207
+ [o.events.select, q],
208
+ [S.zoom, Z],
209
+ [W, B],
210
+ [e.events.destroy, V],
211
+ [c.events.mountBefore, pe]
205
212
  ];
206
- s.add(M, () => {
207
- a.devices.reset(R), L.scrollableCanvas = !1, n.getModel().updateDevice(), n.setZoom(100), n.setCoords(0, 0), C.overflowY = "hidden", H(!0), P.forEach(([t, p]) => e.off(t, p)), N(), s.run("studio:canvasReload");
208
- }), P.forEach(([t, p]) => e.on(t, p)), e.onReady(() => {
209
- const t = n.getElement(), p = n.getFramesEl(), h = n.getCanvasView();
210
- x = n.getSpotsEl(), C = t.style, C.overflowX = "hidden", p.style.transition = `transform ${l}s`, document.removeEventListener("keypress", h.onKeyPress), H(), E = new ResizeObserver(() => {
211
- I(), $();
212
- }), E.observe(t.parentElement), $();
213
- }), oe({
213
+ s.add(P, () => {
214
+ o.devices.reset(z), D.scrollableCanvas = !1, t.getModel().updateDevice(), t.setZoom(100), t.setCoords(0, 0), b.overflowY = "hidden", L(!0), _.forEach(([n, u]) => e.off(n, u)), V(), s.run("studio:canvasReload");
215
+ }), _.forEach(([n, u]) => e.on(n, u)), e.onReady(() => {
216
+ const n = t.getElement(), u = t.getFramesEl(), p = t.getCanvasView();
217
+ H = t.getSpotsEl(), b = n.style, b.overflowX = "hidden", u.style.transition = `transform ${d}s`, document.removeEventListener("keypress", p.onKeyPress), L(), C = new ResizeObserver(() => {
218
+ R(), $();
219
+ }), C.observe(n.parentElement), $();
220
+ }), ce({
214
221
  editor: e,
215
- licenseKey: d.licenseKey,
216
- plan: ie,
217
- pluginName: U,
222
+ licenseKey: h.licenseKey,
223
+ plan: le,
224
+ pluginName: O,
218
225
  cleanup: () => {
219
- e.runCommand(M);
226
+ e.runCommand(P);
220
227
  }
221
228
  });
222
- }, ue = se(le);
229
+ }, de = ie(me);
223
230
  export {
224
- ue as default
231
+ de as default
225
232
  };
@@ -1,9 +1,10 @@
1
- (function(y,g){typeof exports=="object"&&typeof module<"u"?module.exports=g():typeof define=="function"&&define.amd?define(g):(y=typeof globalThis<"u"?globalThis:y||self,y.StudioSdkPlugins_canvasFullSize=g())})(this,function(){"use strict";function y(e,a,n){let s,i,c,d,m;const r=a;function l(){const u=Date.now()-d;u<r&&u>=0?s=setTimeout(l,r-u):(s=null,m=e.apply(c,i),c=i=null)}const o=function(){return c=this,i=arguments,d=Date.now(),s||(s=setTimeout(l,r)),m};return o.clear=function(){s&&(clearTimeout(s),s=null)},o.flush=function(){s&&(m=e.apply(c,i),c=i=null,clearTimeout(s),s=null)},o}const g="app.grapesjs.com",N="app-stage.grapesjs.com",O=[g,"app2.grapesjs.com",N,"app-stage2.grapesjs.com","localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],W="license:check:start",z="license:check:end",F=()=>typeof window<"u",K=({isDev:e,isStage:a})=>`${e?"":`https://${a?N:g}`}/api`,G=()=>{const e=F()&&window.location.hostname;return!!e&&(O.includes(e)||O.some(a=>e.endsWith(a)))};async function q({path:e,baseApiUrl:a,method:n="GET",headers:s={},params:i,body:c}){const m=`${a||K({isDev:!1,isStage:!1})}${e}`,r={method:n,headers:{"Content-Type":"application/json",...s}};c&&(r.body=JSON.stringify(c));const l=i?new URLSearchParams(i).toString():"",o=l?`?${l}`:"",u=await fetch(`${m}${o}`,r);if(!u.ok)throw new Error(`HTTP error! status: ${u.status}`);return u.json()}var v=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(v||{});const P={[v.free]:0,[v.startup]:10,[v.business]:20,[v.enterprise]:30};function B(e){const a=e;return a.init=n=>s=>e(s,n),a}const X=e=>B(e);async function Y({editor:e,plan:a,pluginName:n,licenseKey:s,cleanup:i}){let c="",d=!1;const m=G(),r=o=>{console.warn("Cleanup plugin:",n,"Reason:",o),i()},l=(o={})=>{var C;const{error:u,sdkLicense:b}=o,w=(C=o.plan)==null?void 0:C.category;if(!(b||o.license)||u)r(u||"Invalid license");else if(w){const D=P[a],L=P[w];D>L&&r({pluginRequiredPlan:a,licensePlan:w})}};e.on(W,o=>{c=o==null?void 0:o.baseApiUrl,d=!0}),e.on(z,o=>{l(o)}),setTimeout(async()=>{if(!d){if(m)return;if(s){const o=await Z({licenseKey:s,pluginName:n,baseApiUrl:c});o&&l(o)}else r("The `licenseKey` option not provided")}},2e3)}async function Z(e){const{licenseKey:a,pluginName:n,baseApiUrl:s}=e;try{return(await q({baseApiUrl:s,path:`/sdk/${a||"na"}`,method:"POST",params:{d:window.location.hostname,pn:n}})).result||{}}catch(i){return console.error("Error during SDK license check:",i),!1}}const _="canvasFullSize",J=v.startup,Q=(e,a)=>{const{rule:n,ruleView:s}=a,{style:i}=n.attributes;if(i&&i[e]){const c=i[e],d=/([0-9.]+)(vh|dvh|lvh|svh)/g,m=d.test(c),r=s.frameView.model;if(m&&r.hasAutoHeight()){const l=c.replace(d,(u,b)=>`${window.innerHeight*(parseFloat(b)/100)}px`),o=n.toCSS({style:{...i,[e]:l}});a.css=o}}},ee=e=>{["height","min-height","max-height"].forEach(a=>Q(a,e))};return X(function(e,a={}){const{Canvas:n,Commands:s,Devices:i,Css:c}=e,d={deviceMaxWidth:1200,deviceMinHeigth:500,canvasOffsetY:30,canvasOffsetX:50,canvasTransition:.3,frameBorderRadius:5,frameTransition:.3,...a},{canvasOffsetY:m,canvasOffsetX:r,canvasTransition:l,deviceMaxWidth:o,deviceMinHeigth:u,frameBorderRadius:b,frameTransition:w}=d,S=`${u}px`,C=n.events,D="core:preview",L=`${s.events.stopCommand}${D}`,M=n.getConfig(),j=`${_}:disable`,te=i.getAll().map(t=>({...t.attributes})),ne=l*1e3,V={x:r,y:m};let E={},H,T;M.scrollableCanvas=!0,i.getAll().map(t=>{!t.get("width")&&t.set("width",`${o}px`),!t.get("height")&&t.set("height","auto"),!t.get("minHeight")&&t.set("minHeight",S)});const I=t=>{const p="data-gs-plg-full-size",f=document.querySelector(`style[${p}]`);if(t&&f)return f.remove();const h=f||document.createElement("style"),A=n.getZoomMultiplier();h.setAttribute(p,"true"),h.innerHTML=`
2
- .gjs-frame-wrapper { transition: width ${w}s !important; }
3
- .gjs-frame-wrapper__bottom { height: ${m*A}px }
1
+ (function(S,w){typeof exports=="object"&&typeof module<"u"?module.exports=w():typeof define=="function"&&define.amd?define(w):(S=typeof globalThis<"u"?globalThis:S||self,S.StudioSdkPlugins_canvasFullSize=w())})(this,function(){"use strict";function S(e,a,t){let s,o,c,h,d;const r=a;function m(){const l=Date.now()-h;l<r&&l>=0?s=setTimeout(m,r-l):(s=null,d=e.apply(c,o),c=o=null)}const i=function(){return c=this,o=arguments,h=Date.now(),s||(s=setTimeout(m,r)),d};return i.clear=function(){s&&(clearTimeout(s),s=null)},i.flush=function(){s&&(d=e.apply(c,o),c=o=null,clearTimeout(s),s=null)},i}const w="app.grapesjs.com",P="app-stage.grapesjs.com",I=[w,"app2.grapesjs.com",P,"app-stage2.grapesjs.com","localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],W="license:check:start",F="license:check:end",G=()=>typeof window<"u",K=({isDev:e,isStage:a})=>`${e?"":`https://${a?P:w}`}/api`,Z=()=>{const e=G()&&window.location.hostname;return!!e&&(I.includes(e)||I.some(a=>e.endsWith(a)))};async function q({path:e,baseApiUrl:a,method:t="GET",headers:s={},params:o,body:c}){const d=`${a||K({isDev:!1,isStage:!1})}${e}`,r={method:t,headers:{"Content-Type":"application/json",...s}};c&&(r.body=JSON.stringify(c));const m=o?new URLSearchParams(o).toString():"",i=m?`?${m}`:"",l=await fetch(`${d}${i}`,r);if(!l.ok)throw new Error(`HTTP error! status: ${l.status}`);return l.json()}var y=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(y||{});const N={[y.free]:0,[y.startup]:10,[y.business]:20,[y.enterprise]:30};function B(e){const a=e;return a.init=t=>s=>e(s,t),a}const X=e=>B(e);async function Y({editor:e,plan:a,pluginName:t,licenseKey:s,cleanup:o}){let c="",h=!1;const d=Z(),r=i=>{console.warn("Cleanup plugin:",t,"Reason:",i),o()},m=(i={})=>{var v;const{error:l,sdkLicense:g}=i,b=(v=i.plan)==null?void 0:v.category;if(!(g||i.license)||l)r(l||"Invalid license");else if(b){const E=N[a],$=N[b];E>$&&r({pluginRequiredPlan:a,licensePlan:b})}};e.on(W,i=>{c=i==null?void 0:i.baseApiUrl,h=!0}),e.on(F,i=>{m(i)}),setTimeout(async()=>{if(!h){if(d)return;if(s){const i=await J({licenseKey:s,pluginName:t,baseApiUrl:c});i&&m(i)}else r("The `licenseKey` option not provided")}},2e3)}async function J(e){const{licenseKey:a,pluginName:t,baseApiUrl:s}=e;try{return(await q({baseApiUrl:s,path:`/sdk/${a||"na"}`,method:"POST",params:{d:window.location.hostname,pn:t}})).result||{}}catch(o){return console.error("Error during SDK license check:",o),!1}}const O="data-gs-plg-",R="canvasFullSize",Q=y.startup,ee=(e,a)=>{const{rule:t,ruleView:s}=a,{style:o}=t.attributes;if(o&&o[e]){const c=o[e],h=/([0-9.]+)(vh|dvh|lvh|svh)/g,d=h.test(c),r=s.frameView.model;if(d&&r.hasAutoHeight()){const m=c.replace(h,(l,g)=>`${window.innerHeight*(parseFloat(g)/100)}px`),i=t.toCSS({style:{...o,[e]:m}});a.css=i}}},te=e=>{["height","min-height","max-height"].forEach(a=>ee(a,e))};return X(function(e,a={}){const{Canvas:t,Commands:s,Devices:o,Css:c}=e,h={deviceMaxWidth:1200,deviceMinHeigth:500,canvasOffsetY:30,canvasOffsetX:50,canvasTransition:.3,frameBorderRadius:5,frameTransition:.3,...a},{canvasOffsetY:d,canvasOffsetX:r,canvasTransition:m,deviceMaxWidth:i,deviceMinHeigth:l,deviceFixedHeight:g,frameBorderRadius:b,frameTransition:j}=h,v=`${l}px`,E=t.events,$="core:preview",ne=`${s.events.stopCommand}${$}`,M=t.getConfig(),V=`${R}:disable`,se=o.getAll().map(n=>({...n.attributes})),oe=m*1e3,H={x:r,y:d};let C={},L,T;M.scrollableCanvas=!g,o.getAll().map(n=>{!n.get("width")&&n.set("width",`${i}px`),!n.get("height")&&n.set("height",g?"100vh":"auto"),!n.get("minHeight")&&n.set("minHeight",v)});const _=n=>{const u=`${O}canvas-full-size`,p=document.querySelector(`style[${u}]`);if(n&&p)return p.remove();const f=p||document.createElement("style"),D=t.getZoomMultiplier();f.setAttribute(u,"true"),f.innerHTML=`
2
+ .gjs-frame-wrapper { transition: width ${j}s !important; }
3
+ .gjs-frame-wrapper__bottom { height: ${d*D}px }
4
4
  .gjs-frame { border-radius: ${b}px }
5
- `,!f&&document.body.appendChild(h)};e.on(C.frameLoadHead,t=>{if(!M.scrollableCanvas)return;const{window:p}=t,f=p.document,h=f.head,A="data-gs-plg-wrapper-style",x=h.querySelector(`style[${A}]`)||f.createElement("style");x.setAttribute(A,"true"),x.innerHTML=`
6
- [data-gjs-type="wrapper"] { min-height: ${S}; }
7
- [data-gjs-type="mjml"] { min-height: ${S} !important; }
8
- [data-gjs-type="mj-body"] { min-height: ${S} !important; }
9
- `,!h.contains(x)&&h.appendChild(x)});const U=()=>H.style.display="none",se=()=>H.style.display="",$=y(()=>{n.fitViewport({zoom:t=>t>100?100:t,ignoreHeight:!0,gap:V}),I(),setTimeout(()=>{var p,f;const{em:t}=e;t.destroyed||((f=(p=e.getSelected())==null?void 0:p.getEl())==null||f.scrollIntoView({block:"nearest"}),e.refresh({tools:!0}),se(),s.isActive(D)?t.stopDefault():t.runDefault())},ne)},100),oe=(t={})=>{t.options&&t.options.from!=="fitViewport"&&n.fitViewport({zoom:n.getZoom(),ignoreHeight:!0,gap:V})},ie=()=>{U(),$()},ae=()=>{E.overflowX="hidden",E.overflowY="auto"},k=()=>{T==null||T.disconnect(),$.clear()},R=[[i.events.select,ie],[C.zoom,oe],[L,ae],[e.events.destroy,k],[c.events.mountBefore,ee]];s.add(j,()=>{i.devices.reset(te),M.scrollableCanvas=!1,n.getModel().updateDevice(),n.setZoom(100),n.setCoords(0,0),E.overflowY="hidden",I(!0),R.forEach(([t,p])=>e.off(t,p)),k(),s.run("studio:canvasReload")}),R.forEach(([t,p])=>e.on(t,p)),e.onReady(()=>{const t=n.getElement(),p=n.getFramesEl(),f=n.getCanvasView();H=n.getSpotsEl(),E=t.style,E.overflowX="hidden",p.style.transition=`transform ${l}s`,document.removeEventListener("keypress",f.onKeyPress),I(),T=new ResizeObserver(()=>{U(),$()}),T.observe(t.parentElement),$()}),Y({editor:e,licenseKey:d.licenseKey,plan:J,pluginName:_,cleanup:()=>{e.runCommand(j)}})})});
5
+ `,!p&&document.body.appendChild(f)};e.on(E.frameLoadHead,n=>{if(!M.scrollableCanvas)return;const{window:u}=n,p=u.document,f=p.head,D=`${O}canvas-full-size-wrappers`,x=f.querySelector(`style[${D}]`)||p.createElement("style");x.setAttribute(D,"true"),x.innerHTML=`
6
+ body { height: auto !important; }
7
+ [data-gjs-type="wrapper"] { min-height: ${v} !important; }
8
+ [data-gjs-type="mjml"] { min-height: ${v} !important; }
9
+ [data-gjs-type="mj-body"] { min-height: ${v} !important; }
10
+ `,!f.contains(x)&&f.appendChild(x)});const U=()=>L.style.display="none",ie=()=>L.style.display="",ae=()=>{var f;if(!g)return;const n=t.getZoomMultiplier(),p=t.getRect().height*n-d*2;(f=o.getSelected())==null||f.set("height",`${Math.max(p,l)}px`),t.fitViewport({zoom:t.getZoom(),gap:H})},A=S(()=>{t.fitViewport({zoom:n=>n>100?100:n,ignoreHeight:!0,gap:H}),ae(),_(),setTimeout(()=>{var u,p;const{em:n}=e;n.destroyed||((p=(u=e.getSelected())==null?void 0:u.getEl())==null||p.scrollIntoView({block:"nearest"}),e.refresh({tools:!0}),ie(),s.isActive($)?n.stopDefault():n.runDefault())},oe)},100),ce=(n={})=>{n.options&&n.options.from!=="fitViewport"&&t.fitViewport({zoom:t.getZoom(),ignoreHeight:!0,gap:H})},re=()=>{U(),A()},le=()=>{C.overflowX="hidden",C.overflowY="auto"},k=()=>{T==null||T.disconnect(),A.clear()},z=[[o.events.select,re],[E.zoom,ce],[ne,le],[e.events.destroy,k],[c.events.mountBefore,te]];s.add(V,()=>{o.devices.reset(se),M.scrollableCanvas=!1,t.getModel().updateDevice(),t.setZoom(100),t.setCoords(0,0),C.overflowY="hidden",_(!0),z.forEach(([n,u])=>e.off(n,u)),k(),s.run("studio:canvasReload")}),z.forEach(([n,u])=>e.on(n,u)),e.onReady(()=>{const n=t.getElement(),u=t.getFramesEl(),p=t.getCanvasView();L=t.getSpotsEl(),C=n.style,C.overflowX="hidden",u.style.transition=`transform ${m}s`,document.removeEventListener("keypress",p.onKeyPress),_(),T=new ResizeObserver(()=>{U(),A()}),T.observe(n.parentElement),A()}),Y({editor:e,licenseKey:h.licenseKey,plan:Q,pluginName:R,cleanup:()=>{e.runCommand(V)}})})});
@@ -10,6 +10,11 @@ export interface CanvasFullSizeOptions extends SDKPluginOptions {
10
10
  * @default 500
11
11
  */
12
12
  deviceMinHeigth?: number;
13
+ /**
14
+ * This option disables scrollable canvas area and keeps the iframe's height fixed.
15
+ * @default false
16
+ */
17
+ deviceFixedHeight?: boolean;
13
18
  /**
14
19
  * Offset for the canvas on the Y axis (margin between the canvas and content frame).
15
20
  * @default 30
@@ -1 +1 @@
1
- "use strict";var p=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(p||{}),y=(e=>(e.toastAdd="studio:toastAdd",e.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.projectFiles="studio:projectFiles",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.getStateContextMenu="studio:getStateContextMenu",e.setStateContextMenu="studio:setStateContextMenu",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e.layoutUpdate="studio:layoutUpdate",e.layoutGet="studio:layoutGet",e.layoutConfigGet="studio:layoutConfigGet",e.layoutConfigSet="studio:layoutConfigSet",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.dataSourceSetGlobalData="studio:dataSourceSetGlobalData",e.dataSourceSetImporter="studio:dataSourceSetImporter",e.dataSourceSetExporter="studio:dataSourceSetExporter",e.setDragAbsolute="studio:setDragAbsolute",e))(y||{});const R="app.grapesjs.com",x="app-stage.grapesjs.com",I="app2.grapesjs.com",k="app-stage2.grapesjs.com",w=[R,I,x,k,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],$="license:check:start",M="license:check:end",U=()=>typeof window<"u",E=({isDev:e,isStage:t})=>`${e?"":`https://${t?x:R}`}/api`,j=()=>{const e=U()&&window.location.hostname;return!!e&&(w.includes(e)||w.some(t=>e.endsWith(t)))};async function N({path:e,baseApiUrl:t,method:s="GET",headers:o={},params:n,body:r}){const l=`${t||E({isDev:!1,isStage:!1})}${e}`,c={method:s,headers:{"Content-Type":"application/json",...o}};r&&(c.body=JSON.stringify(r));const u=n?new URLSearchParams(n).toString():"",a=u?`?${u}`:"",g=await fetch(`${l}${a}`,c);if(!g.ok)throw new Error(`HTTP error! status: ${g.status}`);return g.json()}const L={[p.free]:0,[p.startup]:10,[p.business]:20,[p.enterprise]:30};function B(e){const t=e;return t.init=s=>o=>e(o,s),t}const W=e=>B(e);async function _({editor:e,plan:t,pluginName:s,licenseKey:o,cleanup:n}){let r="",i=!1;const l=j(),c=a=>{console.warn("Cleanup plugin:",s,"Reason:",a),n()},u=(a={})=>{var A;const{error:g,sdkLicense:f}=a,d=(A=a.plan)==null?void 0:A.category;if(!(f||a.license)||g)c(g||"Invalid license");else if(d){const O=L[t],G=L[d];O>G&&c({pluginRequiredPlan:t,licensePlan:d})}};e.on($,a=>{r=a==null?void 0:a.baseApiUrl,i=!0}),e.on(M,a=>{u(a)}),setTimeout(async()=>{if(!i){if(l)return;if(o){const a=await S({licenseKey:o,pluginName:s,baseApiUrl:r});a&&u(a)}else c("The `licenseKey` option not provided")}},2e3)}async function S(e){const{licenseKey:t,pluginName:s,baseApiUrl:o}=e;try{return(await N({baseApiUrl:o,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:s}})).result||{}}catch(n){return console.error("Error during SDK license check:",n),!1}}const b=e=>e.replaceAll('"',"").replaceAll("'",""),v=e=>e.includes(",")?e:/\s/.test(e)?`'${b(e)}'`:b(e),F=(e,t,s)=>({family:e,variant:t,...s}),D=(e,t)=>{e=v(e);const{menuVariant:s,variants:o}=t;return{family:e,familyLabel:b(e),menuVariant:s&&F(v(`menuFont-${b(e)}`),"regular",s),variants:Object.assign({},...Object.entries(o).map(([n,r])=>({[n]:F(e,n,r)})))}},T=(e,t)=>{var l;const s=D(e.family,e),o=s.menuVariant??((l=Object.values(s.variants))==null?void 0:l[0]);if(!o)return"Arial, Helvetica, sans-serif";const{source:n,descriptors:r}=o,i=b(o.family);if(!t){const c=new FontFace(i,`url("${n}")`,r),u=Array.from(document.fonts.values()).filter(a=>a.family===i);for(const a of u)document.fonts.delete(a);document.fonts.add(c),c.load().catch(()=>{})}return v(i)},K=e=>{const{family:t,menu:s,axes:o}=e,n=!!o,r=Object.assign({},...e.variants.map(i=>{var a,g;let l,c;if(n){const f=o.find(d=>d.tag==="wght");if(f){const{start:d,end:P}=f;l=`${d} ${P}`}}return l||(l=((a=i.match(/\d+/))==null?void 0:a[0])??"400"),c=((g=i.match(/[a-zA-Z]+/))==null?void 0:g[0])==="italic"?"italic":void 0,{[i]:{source:e.files[i],descriptors:{style:c,weight:l}}}}));return D(t,{menuVariant:{source:s},variants:r})},V=e=>({id:`${e.family}/${e.version}`,type:"font",src:e.menu,name:e.family,customData:{font:K(e),needsLoading:!0}}),H=e=>{const{font:t}=e.customData;return e.customData.needsLoading?(e.customData.needsLoading=!1,T(t)):T(t,!0)};let h;const z=e=>{const t=[];for(const s of Object.keys(e)){let o=e[s];o&&(Array.isArray(o)?t.push(...o.map(n=>[s,n.toString()])):(o=o.toString(),t.push([s,o])))}return new URLSearchParams(t)},q=e=>{const{apiKey:t,searchParams:s}=e,o=(n={})=>{const r="https://www.googleapis.com/webfonts/v1/webfonts",i=z(n);return`${r}?${i}`};return{id:"google-fonts",types:["font"],label:({editor:n})=>n.I18n.t("googleFontsAssetProvider.providerLabel"),search:{reloadOnInput:!1},async onLoad(){var u;if(h)return h;const n={key:t,sort:"alpha",subset:"latin",capability:["WOFF2","VF"]},r=s==null?void 0:s(),i={...n,...r},c=await(await fetch(o(i))).json();return(u=c.items)!=null&&u.length?(h=c.items.map(V),h):[]},itemLayout:n=>{const r=h.find(l=>l.id===n.assetProps.id),i=H(r);return{type:"column",onClick:()=>n.onSelect(r),htmlAttrs:{title:r.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"text",content:r.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:i,fontSize:"24px",paddingLeft:"8px",paddingRight:"8px"}},{type:"text",content:r.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:"16px",paddingLeft:"8px",paddingRight:"8px"}}]}}}},J={googleFontsAssetProvider:{searchBtn:"Search on Google Fonts",modalTitle:"Select Font",providerLabel:"Google Fonts"}},Q="googleFontsAssetProvider",Z=p.startup,X=function(e,t){const{i18n:s={}}=t,o=q(t);e.runCommand(y.assetProviderAdd,{provider:o}),e.I18n.addMessages({en:J,...s}),_({editor:e,licenseKey:t.licenseKey,plan:Z,pluginName:Q,cleanup:()=>{e.runCommand(y.assetProviderRemove,{id:o.id})}})},Y=W(X);module.exports=Y;
1
+ "use strict";var p=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(p||{}),v=(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))(v||{});const R="app.grapesjs.com",x="app-stage.grapesjs.com",I="app2.grapesjs.com",k="app-stage2.grapesjs.com",w=[R,I,x,k,"localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],$="license:check:start",M="license:check:end",U=()=>typeof window<"u",E=({isDev:e,isStage:t})=>`${e?"":`https://${t?x:R}`}/api`,j=()=>{const e=U()&&window.location.hostname;return!!e&&(w.includes(e)||w.some(t=>e.endsWith(t)))};async function N({path:e,baseApiUrl:t,method:s="GET",headers:o={},params:n,body:r}){const l=`${t||E({isDev:!1,isStage:!1})}${e}`,c={method:s,headers:{"Content-Type":"application/json",...o}};r&&(c.body=JSON.stringify(r));const u=n?new URLSearchParams(n).toString():"",a=u?`?${u}`:"",g=await fetch(`${l}${a}`,c);if(!g.ok)throw new Error(`HTTP error! status: ${g.status}`);return g.json()}const L={[p.free]:0,[p.startup]:10,[p.business]:20,[p.enterprise]:30};function B(e){const t=e;return t.init=s=>o=>e(o,s),t}const W=e=>B(e);async function _({editor:e,plan:t,pluginName:s,licenseKey:o,cleanup:n}){let r="",i=!1;const l=j(),c=a=>{console.warn("Cleanup plugin:",s,"Reason:",a),n()},u=(a={})=>{var A;const{error:g,sdkLicense:f}=a,d=(A=a.plan)==null?void 0:A.category;if(!(f||a.license)||g)c(g||"Invalid license");else if(d){const O=L[t],G=L[d];O>G&&c({pluginRequiredPlan:t,licensePlan:d})}};e.on($,a=>{r=a==null?void 0:a.baseApiUrl,i=!0}),e.on(M,a=>{u(a)}),setTimeout(async()=>{if(!i){if(l)return;if(o){const a=await K({licenseKey:o,pluginName:s,baseApiUrl:r});a&&u(a)}else c("The `licenseKey` option not provided")}},2e3)}async function K(e){const{licenseKey:t,pluginName:s,baseApiUrl:o}=e;try{return(await N({baseApiUrl:o,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:s}})).result||{}}catch(n){return console.error("Error during SDK license check:",n),!1}}const b=e=>e.replaceAll('"',"").replaceAll("'",""),y=e=>e.includes(",")?e:/\s/.test(e)?`'${b(e)}'`:b(e),F=(e,t,s)=>({family:e,variant:t,...s}),D=(e,t)=>{e=y(e);const{menuVariant:s,variants:o}=t;return{family:e,familyLabel:b(e),menuVariant:s&&F(y(`menuFont-${b(e)}`),"regular",s),variants:Object.assign({},...Object.entries(o).map(([n,r])=>({[n]:F(e,n,r)})))}},T=(e,t)=>{var l;const s=D(e.family,e),o=s.menuVariant??((l=Object.values(s.variants))==null?void 0:l[0]);if(!o)return"Arial, Helvetica, sans-serif";const{source:n,descriptors:r}=o,i=b(o.family);if(!t){const c=new FontFace(i,`url("${n}")`,r),u=Array.from(document.fonts.values()).filter(a=>a.family===i);for(const a of u)document.fonts.delete(a);document.fonts.add(c),c.load().catch(()=>{})}return y(i)},S=e=>{const{family:t,menu:s,axes:o}=e,n=!!o,r=Object.assign({},...e.variants.map(i=>{var a,g;let l,c;if(n){const f=o.find(d=>d.tag==="wght");if(f){const{start:d,end:P}=f;l=`${d} ${P}`}}return l||(l=((a=i.match(/\d+/))==null?void 0:a[0])??"400"),c=((g=i.match(/[a-zA-Z]+/))==null?void 0:g[0])==="italic"?"italic":void 0,{[i]:{source:e.files[i],descriptors:{style:c,weight:l}}}}));return D(t,{menuVariant:{source:s},variants:r})},V=e=>({id:`${e.family}/${e.version}`,type:"font",src:e.menu,name:e.family,customData:{font:S(e),needsLoading:!0}}),H=e=>{const{font:t}=e.customData;return e.customData.needsLoading?(e.customData.needsLoading=!1,T(t)):T(t,!0)};let h;const z=e=>{const t=[];for(const s of Object.keys(e)){let o=e[s];o&&(Array.isArray(o)?t.push(...o.map(n=>[s,n.toString()])):(o=o.toString(),t.push([s,o])))}return new URLSearchParams(t)},q=e=>{const{apiKey:t,searchParams:s}=e,o=(n={})=>{const r="https://www.googleapis.com/webfonts/v1/webfonts",i=z(n);return`${r}?${i}`};return{id:"google-fonts",types:["font"],label:({editor:n})=>n.I18n.t("googleFontsAssetProvider.providerLabel"),search:{reloadOnInput:!1},async onLoad(){var u;if(h)return h;const n={key:t,sort:"alpha",subset:"latin",capability:["WOFF2","VF"]},r=s==null?void 0:s(),i={...n,...r},c=await(await fetch(o(i))).json();return(u=c.items)!=null&&u.length?(h=c.items.map(V),h):[]},itemLayout:n=>{const r=h.find(l=>l.id===n.assetProps.id),i=H(r);return{type:"column",onClick:()=>n.onSelect(r),htmlAttrs:{title:r.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"text",content:r.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:i,fontSize:"24px",paddingLeft:"8px",paddingRight:"8px"}},{type:"text",content:r.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:"16px",paddingLeft:"8px",paddingRight:"8px"}}]}}}},J={googleFontsAssetProvider:{searchBtn:"Search on Google Fonts",modalTitle:"Select Font",providerLabel:"Google Fonts"}},Q="googleFontsAssetProvider",Z=p.startup,X=function(e,t){const{i18n:s={}}=t,o=q(t);e.runCommand(v.assetProviderAdd,{provider:o}),e.I18n.addMessages({en:J,...s}),_({editor:e,licenseKey:t.licenseKey,plan:Z,pluginName:Q,cleanup:()=>{e.runCommand(v.assetProviderRemove,{id:o.id})}})},Y=W(X);module.exports=Y;
@@ -1,4 +1,4 @@
1
- var p = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(p || {}), y = /* @__PURE__ */ ((e) => (e.toastAdd = "studio:toastAdd", e.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.projectFiles = "studio:projectFiles", e.canvasReload = "studio:canvasReload", e.getBlocksPanel = "studio:getBlocksPanel", e.setBlocksPanel = "studio:setBlocksPanel", e.getStateContextMenu = "studio:getStateContextMenu", e.setStateContextMenu = "studio:setStateContextMenu", e.contextMenuComponent = "studio:contextMenuComponent", e.layoutAdd = "studio:layoutAdd", e.layoutRemove = "studio:layoutRemove", e.layoutToggle = "studio:layoutToggle", e.layoutUpdate = "studio:layoutUpdate", e.layoutGet = "studio:layoutGet", e.layoutConfigGet = "studio:layoutConfigGet", e.layoutConfigSet = "studio:layoutConfigSet", e.getStateTheme = "studio:getStateTheme", e.setStateTheme = "studio:setStateTheme", e.assetProviderGet = "studio:assetProviderGet", e.assetProviderAdd = "studio:assetProviderAdd", e.assetProviderRemove = "studio:assetProviderRemove", e.fontGet = "studio:fontGet", e.fontAdd = "studio:fontAdd", e.fontRemove = "studio:fontRemove", e.fontManagerOpen = "studio:fontManagerOpen", e.menuFontLoad = "studio:menuFontLoad", e.toggleStateDataSource = "studio:toggleStateDataSource", e.getStateDataSource = "studio:getStateDataSource", e.dataSourceSetGlobalData = "studio:dataSourceSetGlobalData", e.dataSourceSetImporter = "studio:dataSourceSetImporter", e.dataSourceSetExporter = "studio:dataSourceSetExporter", e.setDragAbsolute = "studio:setDragAbsolute", e))(y || {});
1
+ var p = /* @__PURE__ */ ((e) => (e.free = "free", e.startup = "startup", e.business = "business", e.enterprise = "enterprise", e))(p || {}), v = /* @__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))(v || {});
2
2
  const R = "app.grapesjs.com", x = "app-stage.grapesjs.com", I = "app2.grapesjs.com", k = "app-stage2.grapesjs.com", w = [
3
3
  R,
4
4
  I,
@@ -76,14 +76,14 @@ async function _({
76
76
  if (!i) {
77
77
  if (l) return;
78
78
  if (o) {
79
- const a = await S({ licenseKey: o, pluginName: s, baseApiUrl: r });
79
+ const a = await K({ licenseKey: o, pluginName: s, baseApiUrl: r });
80
80
  a && u(a);
81
81
  } else
82
82
  c("The `licenseKey` option not provided");
83
83
  }
84
84
  }, 2e3);
85
85
  }
86
- async function S(e) {
86
+ async function K(e) {
87
87
  const { licenseKey: t, pluginName: s, baseApiUrl: o } = e;
88
88
  try {
89
89
  return (await N({
@@ -99,14 +99,14 @@ async function S(e) {
99
99
  return console.error("Error during SDK license check:", n), !1;
100
100
  }
101
101
  }
102
- const b = (e) => e.replaceAll('"', "").replaceAll("'", ""), v = (e) => e.includes(",") ? e : /\s/.test(e) ? `'${b(e)}'` : b(e), F = (e, t, s) => ({ family: e, variant: t, ...s }), D = (e, t) => {
103
- e = v(e);
102
+ const b = (e) => e.replaceAll('"', "").replaceAll("'", ""), y = (e) => e.includes(",") ? e : /\s/.test(e) ? `'${b(e)}'` : b(e), F = (e, t, s) => ({ family: e, variant: t, ...s }), D = (e, t) => {
103
+ e = y(e);
104
104
  const { menuVariant: s, variants: o } = t;
105
105
  return {
106
106
  family: e,
107
107
  familyLabel: b(e),
108
108
  menuVariant: s && F(
109
- v(`menuFont-${b(e)}`),
109
+ y(`menuFont-${b(e)}`),
110
110
  "regular",
111
111
  s
112
112
  ),
@@ -130,8 +130,8 @@ const b = (e) => e.replaceAll('"', "").replaceAll("'", ""), v = (e) => e.include
130
130
  document.fonts.add(c), c.load().catch(() => {
131
131
  });
132
132
  }
133
- return v(i);
134
- }, K = (e) => {
133
+ return y(i);
134
+ }, S = (e) => {
135
135
  const { family: t, menu: s, axes: o } = e, n = !!o, r = Object.assign(
136
136
  {},
137
137
  ...e.variants.map((i) => {
@@ -166,7 +166,7 @@ const b = (e) => e.replaceAll('"', "").replaceAll("'", ""), v = (e) => e.include
166
166
  type: "font",
167
167
  src: e.menu,
168
168
  name: e.family,
169
- customData: { font: K(e), needsLoading: !0 }
169
+ customData: { font: S(e), needsLoading: !0 }
170
170
  }), H = (e) => {
171
171
  const { font: t } = e.customData;
172
172
  return e.customData.needsLoading ? (e.customData.needsLoading = !1, T(t)) : T(t, !0);
@@ -256,7 +256,7 @@ const z = (e) => {
256
256
  }
257
257
  }, Q = "googleFontsAssetProvider", Z = p.startup, X = function(e, t) {
258
258
  const { i18n: s = {} } = t, o = q(t);
259
- e.runCommand(y.assetProviderAdd, { provider: o }), e.I18n.addMessages({
259
+ e.runCommand(v.assetProviderAdd, { provider: o }), e.I18n.addMessages({
260
260
  en: J,
261
261
  ...s
262
262
  }), _({
@@ -265,7 +265,7 @@ const z = (e) => {
265
265
  plan: Z,
266
266
  pluginName: Q,
267
267
  cleanup: () => {
268
- e.runCommand(y.assetProviderRemove, { id: o.id });
268
+ e.runCommand(v.assetProviderRemove, { id: o.id });
269
269
  }
270
270
  });
271
271
  }, Y = W(X);
@@ -1 +1 @@
1
- (function(d,p){typeof exports=="object"&&typeof module<"u"?module.exports=p():typeof define=="function"&&define.amd?define(p):(d=typeof globalThis<"u"?globalThis:d||self,d.StudioSdkPlugins_googleFontsAssetProvider=p())})(this,function(){"use strict";var d=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(d||{}),p=(e=>(e.toastAdd="studio:toastAdd",e.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.projectFiles="studio:projectFiles",e.canvasReload="studio:canvasReload",e.getBlocksPanel="studio:getBlocksPanel",e.setBlocksPanel="studio:setBlocksPanel",e.getStateContextMenu="studio:getStateContextMenu",e.setStateContextMenu="studio:setStateContextMenu",e.contextMenuComponent="studio:contextMenuComponent",e.layoutAdd="studio:layoutAdd",e.layoutRemove="studio:layoutRemove",e.layoutToggle="studio:layoutToggle",e.layoutUpdate="studio:layoutUpdate",e.layoutGet="studio:layoutGet",e.layoutConfigGet="studio:layoutConfigGet",e.layoutConfigSet="studio:layoutConfigSet",e.getStateTheme="studio:getStateTheme",e.setStateTheme="studio:setStateTheme",e.assetProviderGet="studio:assetProviderGet",e.assetProviderAdd="studio:assetProviderAdd",e.assetProviderRemove="studio:assetProviderRemove",e.fontGet="studio:fontGet",e.fontAdd="studio:fontAdd",e.fontRemove="studio:fontRemove",e.fontManagerOpen="studio:fontManagerOpen",e.menuFontLoad="studio:menuFontLoad",e.toggleStateDataSource="studio:toggleStateDataSource",e.getStateDataSource="studio:getStateDataSource",e.dataSourceSetGlobalData="studio:dataSourceSetGlobalData",e.dataSourceSetImporter="studio:dataSourceSetImporter",e.dataSourceSetExporter="studio:dataSourceSetExporter",e.setDragAbsolute="studio:setDragAbsolute",e))(p||{});const P="app.grapesjs.com",A="app-stage.grapesjs.com",w=[P,"app2.grapesjs.com",A,"app-stage2.grapesjs.com","localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],O="license:check:start",G="license:check:end",I=()=>typeof window<"u",k=({isDev:e,isStage:t})=>`${e?"":`https://${t?A:P}`}/api`,$=()=>{const e=I()&&window.location.hostname;return!!e&&(w.includes(e)||w.some(t=>e.endsWith(t)))};async function M({path:e,baseApiUrl:t,method:s="GET",headers:n={},params:o,body:a}){const l=`${t||k({isDev:!1,isStage:!1})}${e}`,c={method:s,headers:{"Content-Type":"application/json",...n}};a&&(c.body=JSON.stringify(a));const u=o?new URLSearchParams(o).toString():"",r=u?`?${u}`:"",g=await fetch(`${l}${r}`,c);if(!g.ok)throw new Error(`HTTP error! status: ${g.status}`);return g.json()}const L={[d.free]:0,[d.startup]:10,[d.business]:20,[d.enterprise]:30};function E(e){const t=e;return t.init=s=>n=>e(n,s),t}const U=e=>E(e);async function j({editor:e,plan:t,pluginName:s,licenseKey:n,cleanup:o}){let a="",i=!1;const l=$(),c=r=>{console.warn("Cleanup plugin:",s,"Reason:",r),o()},u=(r={})=>{var x;const{error:g,sdkLicense:y}=r,f=(x=r.plan)==null?void 0:x.category;if(!(y||r.license)||g)c(g||"Invalid license");else if(f){const q=L[t],J=L[f];q>J&&c({pluginRequiredPlan:t,licensePlan:f})}};e.on(O,r=>{a=r==null?void 0:r.baseApiUrl,i=!0}),e.on(G,r=>{u(r)}),setTimeout(async()=>{if(!i){if(l)return;if(n){const r=await N({licenseKey:n,pluginName:s,baseApiUrl:a});r&&u(r)}else c("The `licenseKey` option not provided")}},2e3)}async function N(e){const{licenseKey:t,pluginName:s,baseApiUrl:n}=e;try{return(await M({baseApiUrl:n,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:s}})).result||{}}catch(o){return console.error("Error during SDK license check:",o),!1}}const h=e=>e.replaceAll('"',"").replaceAll("'",""),v=e=>e.includes(",")?e:/\s/.test(e)?`'${h(e)}'`:h(e),T=(e,t,s)=>({family:e,variant:t,...s}),F=(e,t)=>{e=v(e);const{menuVariant:s,variants:n}=t;return{family:e,familyLabel:h(e),menuVariant:s&&T(v(`menuFont-${h(e)}`),"regular",s),variants:Object.assign({},...Object.entries(n).map(([o,a])=>({[o]:T(e,o,a)})))}},D=(e,t)=>{var l;const s=F(e.family,e),n=s.menuVariant??((l=Object.values(s.variants))==null?void 0:l[0]);if(!n)return"Arial, Helvetica, sans-serif";const{source:o,descriptors:a}=n,i=h(n.family);if(!t){const c=new FontFace(i,`url("${o}")`,a),u=Array.from(document.fonts.values()).filter(r=>r.family===i);for(const r of u)document.fonts.delete(r);document.fonts.add(c),c.load().catch(()=>{})}return v(i)},_=e=>{const{family:t,menu:s,axes:n}=e,o=!!n,a=Object.assign({},...e.variants.map(i=>{var r,g;let l,c;if(o){const y=n.find(f=>f.tag==="wght");if(y){const{start:f,end:R}=y;l=`${f} ${R}`}}return l||(l=((r=i.match(/\d+/))==null?void 0:r[0])??"400"),c=((g=i.match(/[a-zA-Z]+/))==null?void 0:g[0])==="italic"?"italic":void 0,{[i]:{source:e.files[i],descriptors:{style:c,weight:l}}}}));return F(t,{menuVariant:{source:s},variants:a})},B=e=>({id:`${e.family}/${e.version}`,type:"font",src:e.menu,name:e.family,customData:{font:_(e),needsLoading:!0}}),S=e=>{const{font:t}=e.customData;return e.customData.needsLoading?(e.customData.needsLoading=!1,D(t)):D(t,!0)};let b;const W=e=>{const t=[];for(const s of Object.keys(e)){let n=e[s];n&&(Array.isArray(n)?t.push(...n.map(o=>[s,o.toString()])):(n=n.toString(),t.push([s,n])))}return new URLSearchParams(t)},K=e=>{const{apiKey:t,searchParams:s}=e,n=(o={})=>{const a="https://www.googleapis.com/webfonts/v1/webfonts",i=W(o);return`${a}?${i}`};return{id:"google-fonts",types:["font"],label:({editor:o})=>o.I18n.t("googleFontsAssetProvider.providerLabel"),search:{reloadOnInput:!1},async onLoad(){var u;if(b)return b;const o={key:t,sort:"alpha",subset:"latin",capability:["WOFF2","VF"]},a=s==null?void 0:s(),i={...o,...a},c=await(await fetch(n(i))).json();return(u=c.items)!=null&&u.length?(b=c.items.map(B),b):[]},itemLayout:o=>{const a=b.find(l=>l.id===o.assetProps.id),i=S(a);return{type:"column",onClick:()=>o.onSelect(a),htmlAttrs:{title:a.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"text",content:a.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:i,fontSize:"24px",paddingLeft:"8px",paddingRight:"8px"}},{type:"text",content:a.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:"16px",paddingLeft:"8px",paddingRight:"8px"}}]}}}},V={googleFontsAssetProvider:{searchBtn:"Search on Google Fonts",modalTitle:"Select Font",providerLabel:"Google Fonts"}},H="googleFontsAssetProvider",z=d.startup;return U(function(e,t){const{i18n:s={}}=t,n=K(t);e.runCommand(p.assetProviderAdd,{provider:n}),e.I18n.addMessages({en:V,...s}),j({editor:e,licenseKey:t.licenseKey,plan:z,pluginName:H,cleanup:()=>{e.runCommand(p.assetProviderRemove,{id:n.id})}})})});
1
+ (function(d,p){typeof exports=="object"&&typeof module<"u"?module.exports=p():typeof define=="function"&&define.amd?define(p):(d=typeof globalThis<"u"?globalThis:d||self,d.StudioSdkPlugins_googleFontsAssetProvider=p())})(this,function(){"use strict";var d=(e=>(e.free="free",e.startup="startup",e.business="business",e.enterprise="enterprise",e))(d||{}),p=(e=>(e.toastAdd="studio:toastAdd",e.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))(p||{});const P="app.grapesjs.com",A="app-stage.grapesjs.com",w=[P,"app2.grapesjs.com",A,"app-stage2.grapesjs.com","localhost","127.0.0.1",".local-credentialless.webcontainer.io",".local.webcontainer.io","-sandpack.codesandbox.io"],O="license:check:start",G="license:check:end",I=()=>typeof window<"u",k=({isDev:e,isStage:t})=>`${e?"":`https://${t?A:P}`}/api`,$=()=>{const e=I()&&window.location.hostname;return!!e&&(w.includes(e)||w.some(t=>e.endsWith(t)))};async function M({path:e,baseApiUrl:t,method:s="GET",headers:n={},params:o,body:r}){const l=`${t||k({isDev:!1,isStage:!1})}${e}`,c={method:s,headers:{"Content-Type":"application/json",...n}};r&&(c.body=JSON.stringify(r));const u=o?new URLSearchParams(o).toString():"",a=u?`?${u}`:"",g=await fetch(`${l}${a}`,c);if(!g.ok)throw new Error(`HTTP error! status: ${g.status}`);return g.json()}const L={[d.free]:0,[d.startup]:10,[d.business]:20,[d.enterprise]:30};function E(e){const t=e;return t.init=s=>n=>e(n,s),t}const U=e=>E(e);async function j({editor:e,plan:t,pluginName:s,licenseKey:n,cleanup:o}){let r="",i=!1;const l=$(),c=a=>{console.warn("Cleanup plugin:",s,"Reason:",a),o()},u=(a={})=>{var x;const{error:g,sdkLicense:y}=a,f=(x=a.plan)==null?void 0:x.category;if(!(y||a.license)||g)c(g||"Invalid license");else if(f){const q=L[t],J=L[f];q>J&&c({pluginRequiredPlan:t,licensePlan:f})}};e.on(O,a=>{r=a==null?void 0:a.baseApiUrl,i=!0}),e.on(G,a=>{u(a)}),setTimeout(async()=>{if(!i){if(l)return;if(n){const a=await N({licenseKey:n,pluginName:s,baseApiUrl:r});a&&u(a)}else c("The `licenseKey` option not provided")}},2e3)}async function N(e){const{licenseKey:t,pluginName:s,baseApiUrl:n}=e;try{return(await M({baseApiUrl:n,path:`/sdk/${t||"na"}`,method:"POST",params:{d:window.location.hostname,pn:s}})).result||{}}catch(o){return console.error("Error during SDK license check:",o),!1}}const h=e=>e.replaceAll('"',"").replaceAll("'",""),v=e=>e.includes(",")?e:/\s/.test(e)?`'${h(e)}'`:h(e),T=(e,t,s)=>({family:e,variant:t,...s}),F=(e,t)=>{e=v(e);const{menuVariant:s,variants:n}=t;return{family:e,familyLabel:h(e),menuVariant:s&&T(v(`menuFont-${h(e)}`),"regular",s),variants:Object.assign({},...Object.entries(n).map(([o,r])=>({[o]:T(e,o,r)})))}},D=(e,t)=>{var l;const s=F(e.family,e),n=s.menuVariant??((l=Object.values(s.variants))==null?void 0:l[0]);if(!n)return"Arial, Helvetica, sans-serif";const{source:o,descriptors:r}=n,i=h(n.family);if(!t){const c=new FontFace(i,`url("${o}")`,r),u=Array.from(document.fonts.values()).filter(a=>a.family===i);for(const a of u)document.fonts.delete(a);document.fonts.add(c),c.load().catch(()=>{})}return v(i)},_=e=>{const{family:t,menu:s,axes:n}=e,o=!!n,r=Object.assign({},...e.variants.map(i=>{var a,g;let l,c;if(o){const y=n.find(f=>f.tag==="wght");if(y){const{start:f,end:R}=y;l=`${f} ${R}`}}return l||(l=((a=i.match(/\d+/))==null?void 0:a[0])??"400"),c=((g=i.match(/[a-zA-Z]+/))==null?void 0:g[0])==="italic"?"italic":void 0,{[i]:{source:e.files[i],descriptors:{style:c,weight:l}}}}));return F(t,{menuVariant:{source:s},variants:r})},B=e=>({id:`${e.family}/${e.version}`,type:"font",src:e.menu,name:e.family,customData:{font:_(e),needsLoading:!0}}),S=e=>{const{font:t}=e.customData;return e.customData.needsLoading?(e.customData.needsLoading=!1,D(t)):D(t,!0)};let b;const W=e=>{const t=[];for(const s of Object.keys(e)){let n=e[s];n&&(Array.isArray(n)?t.push(...n.map(o=>[s,o.toString()])):(n=n.toString(),t.push([s,n])))}return new URLSearchParams(t)},K=e=>{const{apiKey:t,searchParams:s}=e,n=(o={})=>{const r="https://www.googleapis.com/webfonts/v1/webfonts",i=W(o);return`${r}?${i}`};return{id:"google-fonts",types:["font"],label:({editor:o})=>o.I18n.t("googleFontsAssetProvider.providerLabel"),search:{reloadOnInput:!1},async onLoad(){var u;if(b)return b;const o={key:t,sort:"alpha",subset:"latin",capability:["WOFF2","VF"]},r=s==null?void 0:s(),i={...o,...r},c=await(await fetch(n(i))).json();return(u=c.items)!=null&&u.length?(b=c.items.map(B),b):[]},itemLayout:o=>{const r=b.find(l=>l.id===o.assetProps.id),i=S(r);return{type:"column",onClick:()=>o.onSelect(r),htmlAttrs:{title:r.name},style:{borderWidth:"1px",borderRadius:8,overflow:"hidden",cursor:"pointer"},children:[{type:"text",content:r.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontFamily:i,fontSize:"24px",paddingLeft:"8px",paddingRight:"8px"}},{type:"text",content:r.name,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:"16px",paddingLeft:"8px",paddingRight:"8px"}}]}}}},V={googleFontsAssetProvider:{searchBtn:"Search on Google Fonts",modalTitle:"Select Font",providerLabel:"Google Fonts"}},H="googleFontsAssetProvider",z=d.startup;return U(function(e,t){const{i18n:s={}}=t,n=K(t);e.runCommand(p.assetProviderAdd,{provider:n}),e.I18n.addMessages({en:V,...s}),j({editor:e,licenseKey:t.licenseKey,plan:z,pluginName:H,cleanup:()=>{e.runCommand(p.assetProviderRemove,{id:n.id})}})})});