@useinsider/guido 3.0.0-beta.a32411b → 3.0.0-beta.e99f1c8

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 (37) hide show
  1. package/dist/components/organisms/header/EditorActions.vue.js +8 -10
  2. package/dist/components/organisms/header/EditorActions.vue2.js +30 -40
  3. package/dist/components/organisms/onboarding/GenericOnboarding.vue.js +1 -1
  4. package/dist/components/organisms/onboarding/GenericOnboarding.vue2.js +1 -1
  5. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue.js +1 -1
  6. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue2.js +2 -2
  7. package/dist/config/i18n/en/labels.json.js +3 -8
  8. package/dist/config/migrator/itemsBlockMigrator.js +131 -135
  9. package/dist/config/migrator/recommendationMigrator.js +54 -58
  10. package/dist/extensions/Blocks/Items/block.js +21 -30
  11. package/dist/extensions/Blocks/Items/iconsRegistry.js +6 -7
  12. package/dist/extensions/Blocks/Items/items.css.js +0 -48
  13. package/dist/extensions/Blocks/Recommendation/block.js +13 -22
  14. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +4 -5
  15. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +0 -48
  16. package/dist/extensions/Blocks/common-control.js +4 -12
  17. package/dist/guido.css +1 -1
  18. package/dist/src/components/Guido.vue.d.ts +1 -1
  19. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +1 -1
  20. package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +1 -1
  21. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
  22. package/dist/src/components/wrappers/WpModal.vue.d.ts +2 -2
  23. package/dist/src/extensions/Blocks/Items/block.d.ts +1 -3
  24. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +1 -3
  25. package/dist/src/extensions/Blocks/common-control.d.ts +0 -5
  26. package/package.json +1 -1
  27. package/dist/components/organisms/header/MigrationConfirmModal.vue.js +0 -17
  28. package/dist/components/organisms/header/MigrationConfirmModal.vue2.js +0 -39
  29. package/dist/enums/block.js +0 -4
  30. package/dist/src/@types/extensions/block.d.ts +0 -2
  31. package/dist/src/components/organisms/header/MigrationConfirmModal.vue.d.ts +0 -6
  32. package/dist/src/enums/block.d.ts +0 -4
  33. package/dist/src/stores/template.d.ts +0 -29
  34. package/dist/src/utils/migrationBannerHtml.d.ts +0 -2
  35. package/dist/static/assets/info.svg.js +0 -5
  36. package/dist/stores/template.js +0 -15
  37. package/dist/utils/migrationBannerHtml.js +0 -21
@@ -1,13 +1,11 @@
1
1
  var h = Object.defineProperty;
2
- var T = (d, e, t) => e in d ? h(d, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : d[e] = t;
3
- var A = (d, e, t) => T(d, typeof e != "symbol" ? e + "" : e, t);
4
- import { BLOCK_ID as S } from "../../extensions/Blocks/Recommendation/block.js";
5
- import P, { prepareProductRows as q } from "../../extensions/Blocks/Recommendation/templates/grid/migration.js";
6
- import { useTemplateStore as w } from "../../stores/template.js";
7
- import { getDefaultProducts as $ } from "../../extensions/Blocks/Recommendation/templates/utils.js";
8
- class B {
2
+ var T = (A, e, t) => e in A ? h(A, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : A[e] = t;
3
+ var m = (A, e, t) => T(A, typeof e != "symbol" ? e + "" : e, t);
4
+ import P, { prepareProductRows as S } from "../../extensions/Blocks/Recommendation/templates/grid/migration.js";
5
+ import { getDefaultProducts as q } from "../../extensions/Blocks/Recommendation/templates/utils.js";
6
+ class w {
9
7
  constructor() {
10
- A(this, "parser");
8
+ m(this, "parser");
11
9
  this.parser = new DOMParser();
12
10
  }
13
11
  migrate(e) {
@@ -15,14 +13,12 @@ class B {
15
13
  const t = this.parser.parseFromString(e, "text/html"), s = t.querySelectorAll(
16
14
  'td.ins-recommendation-v3-block-1, td.product-block[esd-handler-name*="EmailRecommendationV3"]'
17
15
  );
18
- return w().$patch((i) => {
19
- i.migrations = { ...i.migrations, [S]: s.length };
20
- }), s.length === 0 ? e : (s.forEach((i) => {
21
- const r = i.getAttribute("id"), n = this.extractBgColor(i), u = this.extractTitle(i), c = this.extractProductRows(i), l = P.replace("{-{-TITLE-}-}", u).replace("{-{-PRODUCT_ROWS-}-}", c), a = this.parser.parseFromString(
22
- `<table id="tempDoc"><tbody><tr>${l}</tr></tbody></table>`,
16
+ return s.length === 0 ? e : (s.forEach((o) => {
17
+ const l = o.getAttribute("id"), r = this.extractBgColor(o), i = this.extractTitle(o), u = this.extractProductRows(o), c = P.replace("{-{-TITLE-}-}", i).replace("{-{-PRODUCT_ROWS-}-}", u), a = this.parser.parseFromString(
18
+ `<table id="tempDoc"><tbody><tr>${c}</tr></tbody></table>`,
23
19
  "text/html"
24
20
  ).querySelector(".recommendation-block-v2");
25
- a && i.parentNode && (r && a.setAttribute("id", r), n && a.setAttribute("bgcolor", n), i.parentNode.replaceChild(a, i));
21
+ a && o.parentNode && (l && a.setAttribute("id", l), r && a.setAttribute("bgcolor", r), o.parentNode.replaceChild(a, o));
26
22
  }), t.documentElement.outerHTML);
27
23
  } catch (t) {
28
24
  return console.error("RecommendationMigrator failed:", t), e;
@@ -68,7 +64,7 @@ class B {
68
64
  * @returns HTML string for the title block
69
65
  */
70
66
  extractTitle(e) {
71
- var g, a;
67
+ var a, g;
72
68
  const t = e.querySelector(".ext-recommendation-title");
73
69
  if (!t)
74
70
  return this.buildTitleBlock({
@@ -80,7 +76,7 @@ class B {
80
76
  });
81
77
  const s = t.querySelector("p");
82
78
  if (!s) {
83
- const p = ((g = t.textContent) == null ? void 0 : g.trim()) || "You May Also Like!", b = t.getAttribute("align") || "center";
79
+ const p = ((a = t.textContent) == null ? void 0 : a.trim()) || "You May Also Like!", b = t.getAttribute("align") || "center";
84
80
  return this.buildTitleBlock({
85
81
  text: p,
86
82
  isBold: !0,
@@ -89,13 +85,13 @@ class B {
89
85
  styles: "font-size: 28px; color: #333333;"
90
86
  });
91
87
  }
92
- const o = ((a = s.textContent) == null ? void 0 : a.trim()) || "You May Also Like!", i = t.getAttribute("align") || s.getAttribute("align") || "center", r = s.getAttribute("style") || "", n = /font-weight\s*:\s*bold/i.test(r) || !!s.querySelector("b, strong"), u = /font-style\s*:\s*italic/i.test(r) || !!s.querySelector("i, em"), c = this.removeStyleProperties(r, ["font-weight", "font-style"]), l = this.convertInlineToBlock(c);
88
+ const o = ((g = s.textContent) == null ? void 0 : g.trim()) || "You May Also Like!", l = t.getAttribute("align") || s.getAttribute("align") || "center", r = s.getAttribute("style") || "", i = /font-weight\s*:\s*bold/i.test(r) || !!s.querySelector("b, strong"), u = /font-style\s*:\s*italic/i.test(r) || !!s.querySelector("i, em"), c = this.removeStyleProperties(r, ["font-weight", "font-style"]), n = this.convertInlineToBlock(c);
93
89
  return this.buildTitleBlock({
94
90
  text: o,
95
- isBold: n,
91
+ isBold: i,
96
92
  isItalic: u,
97
- align: i,
98
- styles: l
93
+ align: l,
94
+ styles: n
99
95
  });
100
96
  }
101
97
  /**
@@ -107,8 +103,8 @@ class B {
107
103
  const t = this.extractProductConfig(e);
108
104
  if (!t)
109
105
  return console.warn("[RecommendationMigrator] No product config found, using defaults"), this.generateProductRows(6, 3, {});
110
- const { totalCount: s, productsPerRow: o } = t, i = this.extractProductStyles(e);
111
- return this.generateProductRows(s, o, i);
106
+ const { totalCount: s, productsPerRow: o } = t, l = this.extractProductStyles(e);
107
+ return this.generateProductRows(s, o, l);
112
108
  }
113
109
  /**
114
110
  * Extracts Stripo padding/margin utility classes from a class string
@@ -156,12 +152,12 @@ class B {
156
152
  * @returns HTML string for product rows with applied styles
157
153
  */
158
154
  generateProductRows(e, t, s) {
159
- const o = $(), i = [];
160
- for (let n = 0; n < e; n++) {
161
- const u = o[n % o.length];
162
- i.push({ ...u });
155
+ const o = q(), l = [];
156
+ for (let i = 0; i < e; i++) {
157
+ const u = o[i % o.length];
158
+ l.push({ ...u });
163
159
  }
164
- let r = q(i, t);
160
+ let r = S(l, t);
165
161
  return r = this.applyExtractedStyles(r, s), r;
166
162
  }
167
163
  /**
@@ -175,30 +171,30 @@ class B {
175
171
  return console.warn("[RecommendationMigrator] No product card found, using default styles"), t;
176
172
  const o = this.extractCardBgColor(s);
177
173
  o && (t.cardBgColor = o);
178
- const i = s.querySelector(".ext-product-image");
179
- if (i) {
180
- const l = i.querySelector("img"), g = l == null ? void 0 : l.getAttribute("width"), a = i.getAttribute("style") || "", p = i.getAttribute("align") || "center", b = i.getAttribute("class") || "", m = this.extractStripoClasses(b);
181
- t.imageWidth = g || "120", t.imageAlign = p, t.imageTdStyle = a, t.imageClasses = m;
174
+ const l = s.querySelector(".ext-product-image");
175
+ if (l) {
176
+ const n = l.querySelector("img"), a = n == null ? void 0 : n.getAttribute("width"), g = l.getAttribute("style") || "", p = l.getAttribute("align") || "center", b = l.getAttribute("class") || "", d = this.extractStripoClasses(b);
177
+ t.imageWidth = a || "120", t.imageAlign = p, t.imageTdStyle = g, t.imageClasses = d;
182
178
  }
183
179
  const r = s.querySelector(".ext-product-name");
184
180
  if (r) {
185
- const l = r.querySelector("p"), g = (l == null ? void 0 : l.getAttribute("style")) || "", a = r.getAttribute("align") || "center", p = r.getAttribute("style") || "", b = r.getAttribute("class") || "", m = this.extractStripoClasses(b);
186
- t.nameStyle = g, t.nameAlign = a, t.nameTdStyle = p, t.nameClasses = m;
181
+ const n = r.querySelector("p"), a = (n == null ? void 0 : n.getAttribute("style")) || "", g = r.getAttribute("align") || "center", p = r.getAttribute("style") || "", b = r.getAttribute("class") || "", d = this.extractStripoClasses(b);
182
+ t.nameStyle = a, t.nameAlign = g, t.nameTdStyle = p, t.nameClasses = d;
187
183
  }
188
- const n = s.querySelector(".ext-product-price");
189
- if (n) {
190
- const l = n.querySelector("p"), g = (l == null ? void 0 : l.getAttribute("style")) || "", a = n.getAttribute("align") || "center", p = n.getAttribute("style") || "", b = n.getAttribute("class") || "", m = this.extractStripoClasses(b);
191
- t.priceStyle = g, t.priceAlign = a, t.priceTdStyle = p, t.priceClasses = m;
184
+ const i = s.querySelector(".ext-product-price");
185
+ if (i) {
186
+ const n = i.querySelector("p"), a = (n == null ? void 0 : n.getAttribute("style")) || "", g = i.getAttribute("align") || "center", p = i.getAttribute("style") || "", b = i.getAttribute("class") || "", d = this.extractStripoClasses(b);
187
+ t.priceStyle = a, t.priceAlign = g, t.priceTdStyle = p, t.priceClasses = d;
192
188
  }
193
189
  const u = s.querySelector(".ext-product-original-price");
194
190
  if (u) {
195
- const l = u.querySelector("p"), g = (l == null ? void 0 : l.getAttribute("style")) || "", a = u.getAttribute("align") || "center", p = u.getAttribute("style") || "", b = u.getAttribute("class") || "", m = this.extractStripoClasses(b);
196
- t.oldPriceStyle = g, t.oldPriceAlign = a, t.oldPriceTdStyle = p, t.oldPriceClasses = m;
191
+ const n = u.querySelector("p"), a = (n == null ? void 0 : n.getAttribute("style")) || "", g = u.getAttribute("align") || "center", p = u.getAttribute("style") || "", b = u.getAttribute("class") || "", d = this.extractStripoClasses(b);
192
+ t.oldPriceStyle = a, t.oldPriceAlign = g, t.oldPriceTdStyle = p, t.oldPriceClasses = d;
197
193
  }
198
194
  const c = s.querySelector(".ext-product-button");
199
195
  if (c) {
200
- const l = c.querySelector(".es-button-border"), g = c.querySelector("a.es-button"), a = (l == null ? void 0 : l.getAttribute("style")) || "", p = (g == null ? void 0 : g.getAttribute("style")) || "", b = c.getAttribute("align") || "center", m = c.getAttribute("style") || "", f = c.getAttribute("class") || "", C = this.extractStripoClasses(f), y = ((c == null ? void 0 : c.textContent) || "").trim();
201
- t.buttonBorderStyle = a, t.buttonLinkStyle = p, t.buttonAlign = b, t.buttonTdStyle = m, t.buttonClasses = C, t.buttonText = y;
196
+ const n = c.querySelector(".es-button-border"), a = c.querySelector("a.es-button"), g = (n == null ? void 0 : n.getAttribute("style")) || "", p = (a == null ? void 0 : a.getAttribute("style")) || "", b = c.getAttribute("align") || "center", d = c.getAttribute("style") || "", f = c.getAttribute("class") || "", C = this.extractStripoClasses(f), y = ((c == null ? void 0 : c.textContent) || "").trim();
197
+ t.buttonBorderStyle = g, t.buttonLinkStyle = p, t.buttonAlign = b, t.buttonTdStyle = d, t.buttonClasses = C, t.buttonText = y;
202
198
  }
203
199
  return t;
204
200
  }
@@ -219,36 +215,36 @@ class B {
219
215
  const c = `${r.getAttribute("class") || ""} ${t.imageClasses}`.trim();
220
216
  r.setAttribute("class", c);
221
217
  }
222
- const n = r.querySelector("img");
223
- n && t.imageWidth && n.setAttribute("width", t.imageWidth);
218
+ const i = r.querySelector("img");
219
+ i && t.imageWidth && i.setAttribute("width", t.imageWidth);
224
220
  }), (t.nameStyle || t.nameAlign || t.nameTdStyle || t.nameClasses) && s.querySelectorAll(".product-name").forEach((r) => {
225
221
  if (t.nameAlign && r.setAttribute("align", t.nameAlign), t.nameTdStyle && r.setAttribute("style", t.nameTdStyle), t.nameClasses) {
226
222
  const c = `${r.getAttribute("class") || ""} ${t.nameClasses}`.trim();
227
223
  r.setAttribute("class", c);
228
224
  }
229
- const n = r.querySelector("p");
230
- n && t.nameStyle && n.setAttribute("style", t.nameStyle);
225
+ const i = r.querySelector("p");
226
+ i && t.nameStyle && i.setAttribute("style", t.nameStyle);
231
227
  }), (t.priceStyle || t.priceAlign || t.priceTdStyle || t.priceClasses) && s.querySelectorAll(".product-price").forEach((r) => {
232
228
  if (t.priceAlign && r.setAttribute("align", t.priceAlign), t.priceTdStyle && r.setAttribute("style", t.priceTdStyle), t.priceClasses) {
233
229
  const c = `${r.getAttribute("class") || ""} ${t.priceClasses}`.trim();
234
230
  r.setAttribute("class", c);
235
231
  }
236
- const n = r.querySelector("p");
237
- n && t.priceStyle && n.setAttribute("style", t.priceStyle);
232
+ const i = r.querySelector("p");
233
+ i && t.priceStyle && i.setAttribute("style", t.priceStyle);
238
234
  }), (t.oldPriceStyle || t.oldPriceAlign || t.oldPriceTdStyle || t.oldPriceClasses) && s.querySelectorAll(".product-old-price").forEach((r) => {
239
235
  if (t.oldPriceAlign && r.setAttribute("align", t.oldPriceAlign), t.oldPriceTdStyle && r.setAttribute("style", t.oldPriceTdStyle), t.oldPriceClasses) {
240
236
  const c = `${r.getAttribute("class") || ""} ${t.oldPriceClasses}`.trim();
241
237
  r.setAttribute("class", c);
242
238
  }
243
- const n = r.querySelector("p");
244
- n && t.oldPriceStyle && n.setAttribute("style", t.oldPriceStyle);
239
+ const i = r.querySelector("p");
240
+ i && t.oldPriceStyle && i.setAttribute("style", t.oldPriceStyle);
245
241
  }), (t.buttonBorderStyle || t.buttonLinkStyle || t.buttonAlign || t.buttonTdStyle || t.buttonClasses) && s.querySelectorAll(".product-button").forEach((r) => {
246
242
  if (t.buttonAlign && r.setAttribute("align", t.buttonAlign), t.buttonTdStyle && r.setAttribute("style", t.buttonTdStyle), t.buttonClasses) {
247
- const l = `${r.getAttribute("class") || ""} ${t.buttonClasses}`.trim();
248
- r.setAttribute("class", l);
243
+ const n = `${r.getAttribute("class") || ""} ${t.buttonClasses}`.trim();
244
+ r.setAttribute("class", n);
249
245
  }
250
- const n = r.querySelector(".es-button-border");
251
- n && t.buttonBorderStyle && n.setAttribute("style", t.buttonBorderStyle);
246
+ const i = r.querySelector(".es-button-border");
247
+ i && t.buttonBorderStyle && i.setAttribute("style", t.buttonBorderStyle);
252
248
  const u = r.querySelector("a.es-button");
253
249
  u && (t.buttonLinkStyle && u.setAttribute("style", t.buttonLinkStyle), t.buttonText && (u.textContent = t.buttonText));
254
250
  });
@@ -274,8 +270,8 @@ class B {
274
270
  * Removes specified style properties from a style string
275
271
  */
276
272
  removeStyleProperties(e, t) {
277
- return e ? t.reduce((o, i) => {
278
- const r = new RegExp(`${i}\\s*:\\s*[^;]*;?`, "gi");
273
+ return e ? t.reduce((o, l) => {
274
+ const r = new RegExp(`${l}\\s*:\\s*[^;]*;?`, "gi");
279
275
  return o.replace(r, "");
280
276
  }, e).replace(/;\s*;/g, ";").replace(/^;|;$/g, "").trim() : "";
281
277
  }
@@ -289,9 +285,9 @@ class B {
289
285
  return /display\s*:/i.test(t) || (t = t ? `${t}; display: block` : "display: block"), t.replace(/;\s*;/g, ";").replace(/^;|;$/g, "").replace(/"/g, "'").trim();
290
286
  }
291
287
  }
292
- function v(d) {
293
- return new B().migrate(d);
288
+ function k(A) {
289
+ return new w().migrate(A);
294
290
  }
295
291
  export {
296
- v as migrateRecommendation
292
+ k as migrateRecommendation
297
293
  };
@@ -1,20 +1,18 @@
1
- import { BlockId as g } from "../../../enums/block.js";
2
- import { useOnboardingStore as p } from "../../../stores/onboarding.js";
3
- import { getMigrationBannerHtml as f } from "../../../utils/migrationBannerHtml.js";
4
- import { Block as u, BlockCompositionType as I, ModificationDescription as o } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
- import { SETTINGS_ENUMS as a, DefaultConfigValues as i } from "./enums/settingsEnums.js";
6
- import { getDefaultTemplate as C } from "./template.js";
7
- import { getItemsBlockContainer as y, getItemsBlockConfig as b, getDefaultItemsBlockConfig as h } from "./utils/nodeConfigUtils.js";
8
- const c = g.Items;
9
- class E extends u {
1
+ import { useOnboardingStore as d } from "../../../stores/onboarding.js";
2
+ import { Block as g, BlockCompositionType as f, ModificationDescription as o } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
3
+ import { SETTINGS_ENUMS as c, DefaultConfigValues as i } from "./enums/settingsEnums.js";
4
+ import { getDefaultTemplate as p } from "./template.js";
5
+ import { getItemsBlockContainer as u, getItemsBlockConfig as C, getDefaultItemsBlockConfig as I } from "./utils/nodeConfigUtils.js";
6
+ const y = "items-block";
7
+ class B extends g {
10
8
  getId() {
11
- return c;
9
+ return y;
12
10
  }
13
11
  getIcon() {
14
12
  return "items-icon";
15
13
  }
16
14
  getBlockCompositionType() {
17
- return I.CONTAINER;
15
+ return f.CONTAINER;
18
16
  }
19
17
  getName() {
20
18
  return this.api.translate("Items");
@@ -22,17 +20,10 @@ class E extends u {
22
20
  getDescription() {
23
21
  return this.api.translate("Items lets you display personalized products based on user behavior.");
24
22
  }
25
- getSettingsPanelTitleHtml() {
26
- return f(
27
- c,
28
- this.api.translate("Items"),
29
- this.api.translate("This block is switched from the Old Version to the New Version. We recommend you check the Items block and test your message to ensure it works properly.")
30
- );
31
- }
32
23
  getTemplate() {
33
- return C({
34
- orientation: a.ORIENTATION.VERTICAL,
35
- itemsType: a.ITEMS_TYPE.CART_ITEMS,
24
+ return p({
25
+ orientation: c.ORIENTATION.VERTICAL,
26
+ itemsType: c.ITEMS_TYPE.CART_ITEMS,
36
27
  itemId: "{{Abandoned Cart Item (1) Url}}",
37
28
  currencySymbol: i.productPriceCurrencySymbolControlValue,
38
29
  currencyLocation: i.productPriceCurrencyLocationControlValue,
@@ -43,21 +34,21 @@ class E extends u {
43
34
  return !1;
44
35
  }
45
36
  onCreated(n) {
46
- const l = this.api.getDocumentModifier(), r = this.api.getDocumentRootCssNode();
47
- r.querySelector('[product-attr="imageSrc"] img') || l.modifyCss(r).appendRule('[product-attr="imageSrc"] img {object-fit: contain;}');
48
- const e = y(n);
37
+ const s = this.api.getDocumentModifier(), r = this.api.getDocumentRootCssNode();
38
+ r.querySelector('[product-attr="imageSrc"] img') || s.modifyCss(r).appendRule('[product-attr="imageSrc"] img {object-fit: contain;}');
39
+ const e = u(n);
49
40
  if (!e)
50
41
  return;
51
- const s = e.getNodeConfig(), m = s && Object.keys(s).length > 0, t = b(n);
42
+ const a = e.getNodeConfig(), l = a && Object.keys(a).length > 0, t = C(n);
52
43
  if (t != null && t.initialized)
53
- m ? t.blockInstanceId || this.api.getDocumentModifier().modifyHtml(e).setNodeConfig({ ...t, blockInstanceId: String(Date.now()) }).apply(new o("Assign block instance ID to block")) : this.api.getDocumentModifier().modifyHtml(e).setNodeConfig(t).apply(new o("Migrate legacy config to nodeConfig"));
44
+ l ? t.blockInstanceId || this.api.getDocumentModifier().modifyHtml(e).setNodeConfig({ ...t, blockInstanceId: String(Date.now()) }).apply(new o("Assign block instance ID to block")) : this.api.getDocumentModifier().modifyHtml(e).setNodeConfig(t).apply(new o("Migrate legacy config to nodeConfig"));
54
45
  else {
55
- const d = h();
56
- this.api.getDocumentModifier().modifyHtml(e).setNodeConfig(d).apply(new o("Initialize Items block with default configuration")), p().startOnboarding("itemsOnboarding");
46
+ const m = I();
47
+ this.api.getDocumentModifier().modifyHtml(e).setNodeConfig(m).apply(new o("Initialize Items block with default configuration")), d().startOnboarding("itemsOnboarding");
57
48
  }
58
49
  }
59
50
  }
60
51
  export {
61
- c as BLOCK_ID,
62
- E as ItemsBlock
52
+ y as BLOCK_ID,
53
+ B as ItemsBlock
63
54
  };
@@ -1,6 +1,5 @@
1
- import o from "../../../static/assets/info.svg.js";
2
- import { IconsRegistry as r } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
3
- class s extends r {
1
+ import { IconsRegistry as o } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ class i extends o {
4
3
  registerIconsSvg(t) {
5
4
  t["items-icon"] = `
6
5
  <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
@@ -20,14 +19,14 @@ class s extends r {
20
19
  </svg>
21
20
  `, t["horizontal-orientation"] = `
22
21
  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
23
- <path d="M10 19H4C3.44772 19 3 18.5523 3 18V2C3 1.44772 3.44772 1 4 1H10V19Z" stroke="currentColor"
22
+ <path d="M10 19H4C3.44772 19 3 18.5523 3 18V2C3 1.44772 3.44772 1 4 1H10V19Z" stroke="currentColor"
24
23
  stroke-width="2" fill="none"/>
25
- <path d="M17 2V18C17 18.5523 16.5523 19 16 19H10V1H16C16.5523 1 17 1.44772 17 2Z" stroke="currentColor"
24
+ <path d="M17 2V18C17 18.5523 16.5523 19 16 19H10V1H16C16.5523 1 17 1.44772 17 2Z" stroke="currentColor"
26
25
  stroke-width="2" fill="none"/>
27
26
  </svg>
28
- `, t["migration-info-icon"] = o;
27
+ `;
29
28
  }
30
29
  }
31
30
  export {
32
- s as ItemsIconsRegistry
31
+ i as ItemsIconsRegistry
33
32
  };
@@ -17,54 +17,6 @@ const n = `/* Utils */
17
17
  .container:has(.items-controls-container) {
18
18
  padding: 0
19
19
  }
20
-
21
- /* ─── Migration Info Box ─────────────────────────────────────────────── */
22
- /* Shown in the settings panel title when a block was migrated from legacy */
23
-
24
- /* Layout variables for positioning the absolutely-placed info box */
25
- :host {
26
- --items-migration-padding: 16px;
27
- --items-migration-title-height: 61px;
28
- --items-migration-box-height: 98px;
29
- }
30
-
31
- /* Push tabs down when info box is present inside the control panel header */
32
- .control-panel-header:has(.items-block-migration-info) {
33
- position: relative;
34
- margin-bottom: calc(2 * var(--items-migration-padding) + var(--items-migration-box-height));
35
- }
36
-
37
- /* Info box container */
38
- .items-block-migration-info {
39
- display: flex;
40
- align-items: flex-start;
41
- gap: 8px;
42
- padding: 12px;
43
- background: var(--guido-color-background-onpage-message-info);
44
- border: 1px solid var(--guido-color-border-onpage-message-info);
45
- border-radius: 4px;
46
- box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.07);
47
- position: absolute;
48
- left: var(--items-migration-padding);
49
- right: var(--items-migration-padding);
50
- top: calc(var(--items-migration-padding) + var(--items-migration-title-height));
51
- }
52
-
53
- /* Icon — 18x19 icon inside a 24x24 bounding box (matches Figma) */
54
- .items-block-migration-info__icon {
55
- flex-shrink: 0;
56
- width: 24px;
57
- height: 24px;
58
- }
59
-
60
- /* Text content */
61
- .items-block-migration-info__text {
62
- margin: 4px 0;
63
- white-space: normal;
64
- font-size: 13px;
65
- font-weight: 400;
66
- line-height: 16px;
67
- }
68
20
  `;
69
21
  export {
70
22
  n as default
@@ -1,15 +1,13 @@
1
- var f = Object.defineProperty;
2
- var h = (r, o, t) => o in r ? f(r, o, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[o] = t;
3
- var g = (r, o, t) => h(r, typeof o != "symbol" ? o + "" : o, t);
4
- import { BlockId as I } from "../../../enums/block.js";
5
- import { getMigrationBannerHtml as k } from "../../../utils/migrationBannerHtml.js";
6
- import { Block as B, BlockCompositionType as _, ModificationDescription as R } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
1
+ var p = Object.defineProperty;
2
+ var f = (r, o, t) => o in r ? p(r, o, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[o] = t;
3
+ var g = (r, o, t) => f(r, typeof o != "symbol" ? o + "" : o, t);
4
+ import { Block as h, BlockCompositionType as I, ModificationDescription as _ } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
7
5
  import { ensureMobileCssRulesExist as d } from "./controls/mobileLayout/cssRules.js";
8
6
  import { RecommendationConfigService as s } from "./services/configService.js";
9
7
  import { useRecommendationExtensionStore as u } from "./store/recommendation.js";
10
- import { getDefaultTemplate as A } from "./templates/grid/template.js";
11
- const p = I.Recommendation, c = "recommendation-block-v2", a = "recommendation-id";
12
- class T extends B {
8
+ import { getDefaultTemplate as k } from "./templates/grid/template.js";
9
+ const B = "recommendation-block", c = "recommendation-block-v2", a = "recommendation-id";
10
+ class y extends h {
13
11
  constructor() {
14
12
  super();
15
13
  /**
@@ -19,13 +17,13 @@ class T extends B {
19
17
  g(this, "_pendingBlockId", null);
20
18
  }
21
19
  getId() {
22
- return p;
20
+ return B;
23
21
  }
24
22
  getIcon() {
25
23
  return "recommendation-icon";
26
24
  }
27
25
  getBlockCompositionType() {
28
- return _.CONTAINER;
26
+ return I.CONTAINER;
29
27
  }
30
28
  getName() {
31
29
  return this.api.translate("Recommendation Block");
@@ -33,13 +31,6 @@ class T extends B {
33
31
  getDescription() {
34
32
  return this.api.translate("Recommendation Block Title Description");
35
33
  }
36
- getSettingsPanelTitleHtml() {
37
- return k(
38
- p,
39
- this.api.translate("Recommendation Block"),
40
- this.api.translate("This block is switched from the Old Version to the New Version. We recommend you check the Recommendation block and test your message to ensure it works properly.")
41
- );
42
- }
43
34
  /**
44
35
  * Returns the template HTML for a new recommendation block.
45
36
  * Generates a unique recommendation ID and embeds the instance class
@@ -49,7 +40,7 @@ class T extends B {
49
40
  */
50
41
  getTemplate() {
51
42
  const t = this._generateNextId();
52
- return this._pendingBlockId = t, A(t);
43
+ return this._pendingBlockId = t, k(t);
53
44
  }
54
45
  /**
55
46
  * Called when a new block is dropped into the template
@@ -124,7 +115,7 @@ class T extends B {
124
115
  if (!n)
125
116
  return;
126
117
  const i = this.api.getDocumentModifier();
127
- i.modifyHtml(n).setAttribute(a, e.toString()), i.apply(new R(`Assign recommendation ID ${e}`));
118
+ i.modifyHtml(n).setAttribute(a, e.toString()), i.apply(new _(`Assign recommendation ID ${e}`));
128
119
  }
129
120
  /**
130
121
  * Gets the recommendation-id from a block node
@@ -158,6 +149,6 @@ class T extends B {
158
149
  }
159
150
  }
160
151
  export {
161
- p as BLOCK_ID,
162
- T as RecommendationBlock
152
+ B as BLOCK_ID,
153
+ y as RecommendationBlock
163
154
  };
@@ -1,6 +1,5 @@
1
- import r from "../../../static/assets/info.svg.js";
2
- import { IconsRegistry as t } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
3
- class h extends t {
1
+ import { IconsRegistry as r } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ class o extends r {
4
3
  registerIconsSvg(C) {
5
4
  C["recommendation-icon"] = `
6
5
  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
@@ -60,9 +59,9 @@ class h extends t {
60
59
  <circle cx="3" cy="16" r="1" stroke="currentColor" stroke-width="1"/>
61
60
  <rect x="7" y="15" width="11" height="2" rx="1"/>
62
61
  </svg>
63
- `, C["migration-info-icon"] = r;
62
+ `;
64
63
  }
65
64
  }
66
65
  export {
67
- h as RecommendationIconsRegistry
66
+ o as RecommendationIconsRegistry
68
67
  };
@@ -22,54 +22,6 @@ const n = `/* Utils */
22
22
  ue-orderable.orderable-disabled .droppable-icon {
23
23
  display: none;
24
24
  }
25
-
26
- /* ─── Migration Info Box ─────────────────────────────────────────────── */
27
- /* Shown in the settings panel title when a block was migrated from legacy */
28
-
29
- /* Layout variables for positioning the absolutely-placed info box */
30
- :host {
31
- --rec-migration-padding: 16px;
32
- --rec-migration-title-height: 61px;
33
- --rec-migration-box-height: 98px;
34
- }
35
-
36
- /* Push tabs down when info box is present inside the control panel header */
37
- .control-panel-header:has(.recommendation-block-migration-info) {
38
- position: relative;
39
- margin-bottom: calc(2 * var(--rec-migration-padding) + var(--rec-migration-box-height));
40
- }
41
-
42
- /* Info box container */
43
- .recommendation-block-migration-info {
44
- display: flex;
45
- align-items: flex-start;
46
- gap: 8px;
47
- padding: 12px;
48
- background: var(--guido-color-background-onpage-message-info);
49
- border: 1px solid var(--guido-color-border-onpage-message-info);
50
- border-radius: 4px;
51
- box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.07);
52
- position: absolute;
53
- left: var(--rec-migration-padding);
54
- right: var(--rec-migration-padding);
55
- top: calc(var(--rec-migration-padding) + var(--rec-migration-title-height));
56
- }
57
-
58
- /* Icon — 18x19 icon inside a 24x24 bounding box (matches Figma) */
59
- .recommendation-block-migration-info__icon {
60
- flex-shrink: 0;
61
- width: 24px;
62
- height: 24px;
63
- }
64
-
65
- /* Text content */
66
- .recommendation-block-migration-info__text {
67
- margin: 4px 0;
68
- white-space: normal;
69
- font-size: 13px;
70
- font-weight: 400;
71
- line-height: 16px;
72
- }
73
25
  `;
74
26
  export {
75
27
  n as default
@@ -1,5 +1,5 @@
1
- var l = Object.defineProperty;
2
- var O = (T, r, e) => r in T ? l(T, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : T[r] = e;
1
+ var I = Object.defineProperty;
2
+ var O = (T, r, e) => r in T ? I(T, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : T[r] = e;
3
3
  var u = (T, r, e) => O(T, typeof r != "symbol" ? r + "" : r, e);
4
4
  import { Control as c, UIElementType as n, UEAttr as $ } from "../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
5
  class _ extends c {
@@ -129,14 +129,6 @@ class _ extends c {
129
129
  </${n.BUTTON}>
130
130
  `;
131
131
  }
132
- _GuIcon({ src: e, className: t = "" }) {
133
- return `
134
- <${n.ICON}
135
- ${$.ICON.src}="${e}"
136
- ${t ? `class="${t}"` : ""}>
137
- </${n.ICON}>
138
- `;
139
- }
140
132
  /**
141
133
  *
142
134
  * @param param0
@@ -175,9 +167,9 @@ class _ extends c {
175
167
  _GuOrderable(e, t) {
176
168
  let E = "";
177
169
  t.forEach((a) => {
178
- const I = $.ORDERABLE_ITEM && "name" in $.ORDERABLE_ITEM ? $.ORDERABLE_ITEM.name : "name";
170
+ const l = $.ORDERABLE_ITEM && "name" in $.ORDERABLE_ITEM ? $.ORDERABLE_ITEM.name : "name";
179
171
  E += `
180
- <${n.ORDERABLE_ITEM} ${I}="${a.key}">
172
+ <${n.ORDERABLE_ITEM} ${l}="${a.key}">
181
173
  ${a.content}
182
174
  </${n.ORDERABLE_ITEM}>
183
175
  `;
package/dist/guido.css CHANGED
@@ -1 +1 @@
1
- .gap-16[data-v-3b53a736],.gap-16[data-v-0e1b0c54]{gap:16px}[data-v-cd76c125] .in-button-v2__wrapper{line-height:0}[data-v-22226124] .in-segments-wrapper__button_selected,[data-v-22226124] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb;color:#0010ac;border-color:#0010ac}[data-v-079d2bf7] .in-progress-wrapper__progress p span:last-child{display:none!important}.view-options-wrapper[data-v-195ab6d4]{position:relative;display:inline-block}.new-tag[data-v-195ab6d4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-195ab6d4] .guido__view-option-selection-desktop svg,[data-v-195ab6d4] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-195ab6d4] .in-segments-wrapper__button_selected,[data-v-195ab6d4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-195ab6d4] .in-tooltip-wrapper__icon{cursor:pointer}.editor-toolbar[data-v-173c3a40]{gap:4px}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history[data-v-64c52560]{gap:8px}.version-history__toolbar[data-v-64c52560]{gap:4px}.view-options-wrapper[data-v-d405ca59]{position:relative;display:inline-block}.new-tag[data-v-d405ca59]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-d405ca59] .guido__verion-history-view-option-selection-desktop svg,[data-v-d405ca59] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-d405ca59] .in-segments-wrapper__button_selected,[data-v-d405ca59] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-d405ca59] .in-tooltip-wrapper__icon{cursor:pointer}.editor-actions[data-v-a289b9e9]{gap:4px}.header-wrapper[data-v-5c02dcc7]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.guido-editor__wrapper[data-v-a26d7792]{position:relative;width:100%;height:calc(100vh - 128px)}.guido-editor__container[data-v-a26d7792]{width:100%;height:calc(100vh - 128px)}.guido-editor__no-header[data-v-a26d7792]{height:calc(100vh - 75px)}[data-v-293f1c47] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-df672485]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-df672485]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-df672485]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-df672485]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-df672485]{object-fit:cover;transform:scale(1)}[data-v-43c617a7] .guido__verion-history-view-option-selection-desktop svg,[data-v-43c617a7] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-43c617a7] .in-segments-wrapper__button_selected,[data-v-43c617a7] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.error-list[data-v-c3fd5d4b]{gap:16px}.desktop-browser-header[data-v-d86c5af5]{height:79px;min-height:79px}.desktop-browser-header__left[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:378px}.desktop-browser-header__center[data-v-d86c5af5]{height:79px;background-repeat:repeat-x;background-size:auto 100%;background-position:left top}.desktop-browser-header__right[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:112px}.desktop-preview[data-v-988f8da6]{min-width:602px;height:70vh;min-height:583px;border-radius:10px}.desktop-preview iframe[data-v-988f8da6]{min-height:504px}.iframe-wrapper[data-v-e0424e99]{width:258px}.iframe-scaled[data-v-e0424e99]{width:320px;height:124.0310077519%;transform:scale(.80625);transform-origin:top left}.cropped-text[data-v-eb3d05d7]{width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-preview-wrapper__phone[data-v-3f472f96]{width:282px}.mobile-preview-wrapper__phone img[data-v-3f472f96]{object-fit:cover;border-radius:44px}.mobile-preview-wrapper__content[data-v-3f472f96]{width:258px;height:450px;left:12px}[data-v-d3c52b44] .vueperslides__bullets,[data-v-dd1a237a] .vueperslides__bullets{pointer-events:none!important}[data-v-dd1a237a] .vueperslides__parallax-wrapper{height:110px!important}[data-v-a408dcea] .vueperslides__bullets{pointer-events:none!important}[data-v-a408dcea] .vueperslides__parallax-wrapper{height:110px!important}
1
+ .gap-16[data-v-3b53a736],.gap-16[data-v-0e1b0c54]{gap:16px}[data-v-cd76c125] .in-button-v2__wrapper{line-height:0}[data-v-22226124] .in-segments-wrapper__button_selected,[data-v-22226124] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb;color:#0010ac;border-color:#0010ac}[data-v-079d2bf7] .in-progress-wrapper__progress p span:last-child{display:none!important}.view-options-wrapper[data-v-195ab6d4]{position:relative;display:inline-block}.new-tag[data-v-195ab6d4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-195ab6d4] .guido__view-option-selection-desktop svg,[data-v-195ab6d4] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-195ab6d4] .in-segments-wrapper__button_selected,[data-v-195ab6d4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-195ab6d4] .in-tooltip-wrapper__icon{cursor:pointer}.editor-toolbar[data-v-173c3a40]{gap:4px}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history[data-v-64c52560]{gap:8px}.version-history__toolbar[data-v-64c52560]{gap:4px}.view-options-wrapper[data-v-d405ca59]{position:relative;display:inline-block}.new-tag[data-v-d405ca59]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-d405ca59] .guido__verion-history-view-option-selection-desktop svg,[data-v-d405ca59] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-d405ca59] .in-segments-wrapper__button_selected,[data-v-d405ca59] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-d405ca59] .in-tooltip-wrapper__icon{cursor:pointer}.editor-actions[data-v-17dd4d8b]{gap:4px}.header-wrapper[data-v-5c02dcc7]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.guido-editor__wrapper[data-v-a26d7792]{position:relative;width:100%;height:calc(100vh - 128px)}.guido-editor__container[data-v-a26d7792]{width:100%;height:calc(100vh - 128px)}.guido-editor__no-header[data-v-a26d7792]{height:calc(100vh - 75px)}[data-v-293f1c47] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-df672485]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-df672485]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-df672485]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-df672485]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-df672485]{object-fit:cover;transform:scale(1)}[data-v-43c617a7] .guido__verion-history-view-option-selection-desktop svg,[data-v-43c617a7] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-43c617a7] .in-segments-wrapper__button_selected,[data-v-43c617a7] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.error-list[data-v-c3fd5d4b]{gap:16px}.desktop-browser-header[data-v-d86c5af5]{height:79px;min-height:79px}.desktop-browser-header__left[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:378px}.desktop-browser-header__center[data-v-d86c5af5]{height:79px;background-repeat:repeat-x;background-size:auto 100%;background-position:left top}.desktop-browser-header__right[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:112px}.desktop-preview[data-v-988f8da6]{min-width:602px;height:70vh;min-height:583px;border-radius:10px}.desktop-preview iframe[data-v-988f8da6]{min-height:504px}.iframe-wrapper[data-v-e0424e99]{width:258px}.iframe-scaled[data-v-e0424e99]{width:320px;height:124.0310077519%;transform:scale(.80625);transform-origin:top left}.cropped-text[data-v-eb3d05d7]{width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-preview-wrapper__phone[data-v-3f472f96]{width:282px}.mobile-preview-wrapper__phone img[data-v-3f472f96]{object-fit:cover;border-radius:44px}.mobile-preview-wrapper__content[data-v-3f472f96]{width:258px;height:450px;left:12px}[data-v-29b9af29] .vueperslides__bullets,[data-v-dd1a237a] .vueperslides__bullets{pointer-events:none!important}[data-v-dd1a237a] .vueperslides__parallax-wrapper{height:110px!important}[data-v-d073b1dc] .vueperslides__bullets{pointer-events:none!important}[data-v-d073b1dc] .vueperslides__parallax-wrapper{height:110px!important}
@@ -11,7 +11,7 @@ declare const _default: import("vue").DefineComponent<__VLS_TypePropsToOption<__
11
11
  close: () => void;
12
12
  };
13
13
  hasChanges: import("vue").ComputedRef<boolean>;
14
- saveSilent: () => void | undefined;
14
+ saveSilent: () => Promise<Omit<SavedTemplateDetails, "metadata"> | undefined> | undefined;
15
15
  }, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {
16
16
  "dynamic-content:open": (detail: {
17
17
  text: string;
@@ -1,4 +1,4 @@
1
1
  declare const _default: import("vue").DefineComponent<{}, {
2
- handleSave: (isSilent: boolean) => void;
2
+ handleSave: (isSilent: boolean) => Promise<Omit<import("../../../@types/stripo").SavedTemplateDetails, "metadata"> | undefined>;
3
3
  }, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
4
4
  export default _default;
@@ -1,4 +1,4 @@
1
1
  declare const _default: import("vue").DefineComponent<{}, {
2
- handleSave: (isSilent: boolean) => void | undefined;
2
+ handleSave: (isSilent: boolean) => Promise<Omit<import("../../../@types/stripo.js").SavedTemplateDetails, "metadata"> | undefined> | undefined;
3
3
  }, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
4
4
  export default _default;