@useinsider/guido 2.2.0-beta.eeefcc3 → 3.0.0-beta.5b2298c

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 (126) hide show
  1. package/README.md +41 -2
  2. package/dist/@types/config/schemas.js +1 -1
  3. package/dist/components/Guido.vue.js +1 -1
  4. package/dist/components/Guido.vue2.js +66 -66
  5. package/dist/components/organisms/base/Toaster.vue.js +4 -4
  6. package/dist/components/organisms/base/Toaster.vue2.js +12 -9
  7. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +5 -5
  8. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue2.js +2 -2
  9. package/dist/components/organisms/extensions/recommendation/FilterItem.vue.js +11 -13
  10. package/dist/components/organisms/extensions/recommendation/FilterItem.vue2.js +54 -23
  11. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue.js +7 -5
  12. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +34 -21
  13. package/dist/components/organisms/extensions/recommendation/Filters.vue.js +11 -11
  14. package/dist/components/organisms/extensions/recommendation/Filters.vue2.js +48 -36
  15. package/dist/components/organisms/extensions/recommendation/LogicAdapter.vue2.js +11 -9
  16. package/dist/components/organisms/header/EditorActions.vue.js +10 -8
  17. package/dist/components/organisms/header/EditorActions.vue2.js +40 -30
  18. package/dist/components/organisms/header/MigrationConfirmModal.vue.js +17 -0
  19. package/dist/components/organisms/header/MigrationConfirmModal.vue2.js +39 -0
  20. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue.js +1 -1
  21. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue2.js +19 -19
  22. package/dist/composables/useRecommendation.js +9 -9
  23. package/dist/composables/useSave.js +16 -12
  24. package/dist/composables/useStripo.js +66 -62
  25. package/dist/composables/useStripoEventHandler.js +27 -12
  26. package/dist/composables/useSyncModuleExtractor.js +45 -0
  27. package/dist/config/compiler/utils/recommendationCompilerUtils.js +1 -1
  28. package/dist/config/i18n/en/labels.json.js +8 -3
  29. package/dist/config/migrator/itemsBlockMigrator.js +135 -131
  30. package/dist/config/migrator/recommendationMigrator.js +59 -55
  31. package/dist/enums/block.js +4 -0
  32. package/dist/enums/unsubscribe.js +25 -21
  33. package/dist/extensions/Blocks/Items/block.js +30 -21
  34. package/dist/extensions/Blocks/Items/iconsRegistry.js +7 -6
  35. package/dist/extensions/Blocks/Items/items.css.js +48 -0
  36. package/dist/extensions/Blocks/Recommendation/block.js +22 -13
  37. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +36 -33
  38. package/dist/extensions/Blocks/Recommendation/constants/layout.js +16 -14
  39. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +15 -13
  40. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +9 -9
  41. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +1 -1
  42. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +41 -29
  43. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +16 -16
  44. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +30 -32
  45. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +194 -104
  46. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +9 -9
  47. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +46 -38
  48. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +16 -16
  49. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +291 -217
  50. package/dist/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js +14 -14
  51. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +10 -10
  52. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +5 -5
  53. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +14 -14
  54. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +9 -9
  55. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +3 -3
  56. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +1 -1
  57. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +9 -9
  58. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +3 -3
  59. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +13 -13
  60. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +3 -3
  61. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +223 -99
  62. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +5 -4
  63. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +48 -0
  64. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +172 -85
  65. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +2 -2
  66. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +1 -1
  67. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +2 -2
  68. package/dist/extensions/Blocks/Recommendation/templates/utils.js +32 -32
  69. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +8 -8
  70. package/dist/extensions/Blocks/Recommendation/validation/filterSchema.js +29 -0
  71. package/dist/extensions/Blocks/Unsubscribe/block.js +29 -29
  72. package/dist/extensions/Blocks/Unsubscribe/control.js +12 -9
  73. package/dist/extensions/Blocks/Unsubscribe/elements/preview.js +13 -11
  74. package/dist/extensions/Blocks/Unsubscribe/styles.css.js +31 -1
  75. package/dist/extensions/Blocks/common-control.js +12 -4
  76. package/dist/guido.css +1 -1
  77. package/dist/services/stripoApi.js +55 -19
  78. package/dist/src/@types/config/schemas.d.ts +1 -1
  79. package/dist/src/@types/events.d.ts +38 -2
  80. package/dist/src/@types/extensions/block.d.ts +2 -0
  81. package/dist/src/components/Guido.vue.d.ts +2 -2
  82. package/dist/src/components/organisms/extensions/recommendation/FilterItem.vue.d.ts +1 -0
  83. package/dist/src/components/organisms/extensions/recommendation/Filters.vue.d.ts +17 -1
  84. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +1 -1
  85. package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +1 -1
  86. package/dist/src/components/organisms/header/MigrationConfirmModal.vue.d.ts +6 -0
  87. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
  88. package/dist/src/components/wrappers/WpModal.vue.d.ts +2 -2
  89. package/dist/src/composables/useGuidoActions.d.ts +1 -1
  90. package/dist/src/composables/useSave.d.ts +2 -2
  91. package/dist/src/composables/useStripo.d.ts +2 -2
  92. package/dist/src/composables/useSyncModuleExtractor.d.ts +4 -0
  93. package/dist/src/enums/block.d.ts +4 -0
  94. package/dist/src/enums/unsubscribe.d.ts +3 -0
  95. package/dist/src/extensions/Blocks/Items/block.d.ts +3 -1
  96. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +3 -1
  97. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +6 -0
  98. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +3 -3
  99. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +6 -2
  100. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +8 -1
  101. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +38 -10
  102. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +27 -14
  103. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +50 -17
  104. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +19 -2
  105. package/dist/src/extensions/Blocks/Recommendation/templates/grid/migration.d.ts +1 -1
  106. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +4 -2
  107. package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +1 -1
  108. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +1 -1
  109. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +8 -0
  110. package/dist/src/extensions/Blocks/Recommendation/validation/filterSchema.d.ts +15 -0
  111. package/dist/src/extensions/Blocks/Unsubscribe/control.d.ts +1 -0
  112. package/dist/src/extensions/Blocks/common-control.d.ts +5 -0
  113. package/dist/src/mock/api/settings.d.ts +2 -0
  114. package/dist/src/services/stripoApi.d.ts +5 -0
  115. package/dist/src/stores/editor.d.ts +23 -0
  116. package/dist/src/stores/template.d.ts +29 -0
  117. package/dist/src/utils/migrationBannerHtml.d.ts +2 -0
  118. package/dist/src/utils/templatePreparation.d.ts +1 -1
  119. package/dist/static/assets/info.svg.js +5 -0
  120. package/dist/static/styles/customEditorStyle.css.js +50 -23
  121. package/dist/stores/editor.js +2 -1
  122. package/dist/stores/template.js +15 -0
  123. package/dist/stores/unsubscribe.js +37 -34
  124. package/dist/utils/migrationBannerHtml.js +21 -0
  125. package/dist/utils/templatePreparation.js +1 -1
  126. package/package.json +2 -2
@@ -1,17 +1,17 @@
1
1
  var d = Object.defineProperty;
2
- var _ = (n, i, e) => i in n ? d(n, i, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[i] = e;
3
- var u = (n, i, e) => _(n, typeof i != "symbol" ? i + "" : i, e);
2
+ var h = (n, i, e) => i in n ? d(n, i, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[i] = e;
3
+ var u = (n, i, e) => h(n, typeof i != "symbol" ? i + "" : i, e);
4
4
  import { PAGE_TYPES as E } from "../../../enums/unsubscribe.js";
5
5
  import { useUnsubscribeStore as c } from "../../../stores/unsubscribe.js";
6
- import { Block as h, BlockCompositionType as S, ModificationDescription as b } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
6
+ import { Block as _, BlockCompositionType as S, ModificationDescription as b } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
7
7
  import { getDefaultTemplate as L } from "./template.js";
8
8
  import { UNSUBSCRIBE_EVENTS as a, DATA_ATTRIBUTES as o } from "./utils/constants.js";
9
9
  import { parsePageList as p } from "./utils/utils.js";
10
- const g = "unsubscribe-block", v = 'a[data-unsubscribe-link="true"]', f = ".unsubscribe-block-v2", B = "{{ins-unsubscribe-link}}", T = {
10
+ const v = "unsubscribe-block", g = 'a[data-unsubscribe-link="true"]', f = ".unsubscribe-block-v2", T = "{{ins-unsubscribe-link}}", B = {
11
11
  [E.GLOBAL_UNSUBSCRIBE]: "{{ins-global-unsubscribe-link}}",
12
12
  [E.SUBSCRIPTION_PREFERENCE_CENTER]: "{{ins-preferences-unsubscribe-link}}"
13
13
  };
14
- class R extends h {
14
+ class R extends _ {
15
15
  constructor() {
16
16
  super();
17
17
  u(this, "selectEventListener", null);
@@ -19,7 +19,7 @@ class R extends h {
19
19
  u(this, "currentNode");
20
20
  }
21
21
  getId() {
22
- return g;
22
+ return v;
23
23
  }
24
24
  getIcon() {
25
25
  return "unsubscribe-icon";
@@ -47,8 +47,8 @@ class R extends h {
47
47
  }
48
48
  _setupSelectEventListener() {
49
49
  this._removeSelectEventListener(), this.selectEventListener = (e) => {
50
- const s = e, { collectionType: t, selectedPages: r } = s.detail;
51
- this._updateBlock(t, r.join(","));
50
+ const r = e, { collectionType: s, selectedPages: t } = r.detail;
51
+ this._updateBlock(s, t.join(","));
52
52
  }, document.addEventListener(a.SELECT, this.selectEventListener);
53
53
  }
54
54
  _removeSelectEventListener() {
@@ -74,17 +74,17 @@ class R extends h {
74
74
  _removeEventListeners() {
75
75
  this._removeSelectEventListener(), this._removeCancelEventListener();
76
76
  }
77
- _updateBlock(e, s) {
77
+ _updateBlock(e, r) {
78
78
  if (!this.currentNode || !("querySelector" in this.currentNode))
79
79
  return;
80
- const t = this.currentNode.querySelector(v);
81
- if (!t)
80
+ const s = this.currentNode.querySelector(g);
81
+ if (!s)
82
82
  return;
83
- const r = this._getMergeTag(e);
84
- this.api.getDocumentModifier().modifyHtml(t).setAttribute("href", r).apply(new b(`Updated unsubscribe link to ${r}`)), this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute(o.PAGE_TYPE, e.toString()).setAttribute(o.PAGE_LIST, s).apply(new b("Updated unsubscribe block metadata"));
83
+ const t = this._getMergeTag(e);
84
+ this.api.getDocumentModifier().modifyHtml(s).setAttribute("href", t).apply(new b(`Updated unsubscribe link to ${t}`)), this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute(o.PAGE_TYPE, e.toString()).setAttribute(o.PAGE_LIST, r).apply(new b("Updated unsubscribe block metadata"));
85
85
  }
86
86
  _getMergeTag(e) {
87
- return T[e] ?? B;
87
+ return B[e] ?? T;
88
88
  }
89
89
  _openDrawer() {
90
90
  if (!(this.currentNode && this.currentNode.getAttribute("data-unsubscribe-page-type")))
@@ -97,24 +97,24 @@ class R extends h {
97
97
  }
98
98
  _checkExistingBlocks() {
99
99
  const e = c();
100
- e.isGlobalUnsubscribeDisabled = !1, e.isSubscriptionPreferencesCenterDisabled = !1, this.api.getDocumentRoot().querySelectorAll(f).forEach((t) => {
101
- if ("getAttribute" in t) {
102
- const r = t.getAttribute(o.PAGE_TYPE);
103
- if (r) {
104
- const l = Number(r);
100
+ e.isGlobalUnsubscribeDisabled = !1, e.isSubscriptionPreferencesCenterDisabled = !1, this.api.getDocumentRoot().querySelectorAll(f).forEach((s) => {
101
+ if ("getAttribute" in s) {
102
+ const t = s.getAttribute(o.PAGE_TYPE);
103
+ if (t) {
104
+ const l = Number(t);
105
105
  l === E.GLOBAL_UNSUBSCRIBE ? e.isGlobalUnsubscribeDisabled = !0 : l === E.SUBSCRIPTION_PREFERENCE_CENTER && (e.isSubscriptionPreferencesCenterDisabled = !0);
106
106
  }
107
107
  }
108
108
  });
109
109
  }
110
- _loadBlockState(e) {
110
+ async _loadBlockState(e) {
111
111
  if (!("getAttribute" in e))
112
112
  return;
113
- const s = e.getAttribute(o.PAGE_TYPE), t = e.getAttribute(o.PAGE_LIST);
114
- if (!s || !t)
113
+ const r = e.getAttribute(o.PAGE_TYPE), s = e.getAttribute(o.PAGE_LIST);
114
+ if (!r || !s)
115
115
  return;
116
- const r = c(), l = Number(s), m = p(t);
117
- r.setCollectionWithoutAutoSelection(l), r.loadSelectedTemplates(m);
116
+ const t = c(), l = Number(r), m = p(s);
117
+ await t.fetchTemplates(), t.setCollectionWithoutAutoSelection(l), t.loadSelectedTemplates(m);
118
118
  }
119
119
  _resetStoreState() {
120
120
  c().$reset();
@@ -122,14 +122,14 @@ class R extends h {
122
122
  _removeBlockTemplatesFromStore(e) {
123
123
  if (!("getAttribute" in e))
124
124
  return;
125
- const s = e.getAttribute(o.PAGE_LIST);
126
- if (!s)
125
+ const r = e.getAttribute(o.PAGE_LIST);
126
+ if (!r)
127
127
  return;
128
- const t = c(), r = p(s);
129
- t.removeUnsubscribePages(r);
128
+ const s = c(), t = p(r);
129
+ s.removeUnsubscribePages(t);
130
130
  }
131
131
  }
132
132
  export {
133
- g as UNSUBSCRIBE_BLOCK_ID,
133
+ v as UNSUBSCRIBE_BLOCK_ID,
134
134
  R as UnsubscribeBlock
135
135
  };
@@ -1,18 +1,18 @@
1
- var h = Object.defineProperty;
2
- var d = (a, s, e) => s in a ? h(a, s, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[s] = e;
3
- var u = (a, s, e) => d(a, typeof s != "symbol" ? s + "" : s, e);
1
+ var d = Object.defineProperty;
2
+ var h = (a, s, e) => s in a ? d(a, s, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[s] = e;
3
+ var u = (a, s, e) => h(a, typeof s != "symbol" ? s + "" : s, e);
4
4
  import { useUnsubscribeStore as l } from "../../../stores/unsubscribe.js";
5
5
  import { Control as T, UEAttr as i, UIElementType as n } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
6
6
  import { DATA_ATTRIBUTES as p } from "./utils/constants.js";
7
7
  import { parsePageList as _ } from "./utils/utils.js";
8
- const g = "ui-elements-unsubscribe", r = {
8
+ const v = "ui-elements-unsubscribe", r = {
9
9
  SELECT_BUTTON: "selectTemplateButton",
10
10
  PREV_BUTTON: "prevButton",
11
11
  NEXT_BUTTON: "nextButton",
12
12
  COUNTER_TEXT: "counterText",
13
13
  PREVIEW_IMAGE: "previewImage"
14
14
  };
15
- class N extends T {
15
+ class B extends T {
16
16
  constructor() {
17
17
  super(...arguments);
18
18
  u(this, "currentPreviewIndex", 0);
@@ -22,7 +22,7 @@ class N extends T {
22
22
  u(this, "lastParsedAttribute");
23
23
  }
24
24
  getId() {
25
- return g;
25
+ return v;
26
26
  }
27
27
  getTemplate() {
28
28
  return `
@@ -35,7 +35,7 @@ class N extends T {
35
35
  onTemplateNodeUpdated(e) {
36
36
  if (this.currentNode = e, "getAttribute" in this.currentNode) {
37
37
  const t = this.currentNode.getAttribute(p.PAGE_LIST);
38
- t && (t !== this.lastParsedAttribute && (this.currentPages = _(t), this.lastParsedAttribute = t, this.currentPreviewIndex = 0), this._updatePreview(), this._updateCounter());
38
+ t && (t !== this.lastParsedAttribute && (this.currentPages = _(t), this.lastParsedAttribute = t, this.currentPreviewIndex = 0), this._updateCounter(), this._loadAndUpdatePreview());
39
39
  }
40
40
  }
41
41
  onRender() {
@@ -73,6 +73,9 @@ class N extends T {
73
73
  _onNextClick() {
74
74
  this.currentPreviewIndex < this.totalTemplates - 1 && (this.currentPreviewIndex++, this._updatePreview(), this._updateCounter());
75
75
  }
76
+ async _loadAndUpdatePreview() {
77
+ await l().fetchTemplates(), this._updatePreview(), this._updateCounter();
78
+ }
76
79
  _updatePreview() {
77
80
  var e;
78
81
  if ((e = this.currentPages) != null && e.length)
@@ -162,6 +165,6 @@ class N extends T {
162
165
  }
163
166
  }
164
167
  export {
165
- g as UNSUBSCRIBE_CONTROL_ID,
166
- N as UnsubscribeControl
168
+ v as UNSUBSCRIBE_CONTROL_ID,
169
+ B as UnsubscribeControl
167
170
  };
@@ -1,12 +1,12 @@
1
- var r = Object.defineProperty;
2
- var n = (i, t, e) => t in i ? r(i, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[t] = e;
3
- var s = (i, t, e) => n(i, typeof t != "symbol" ? t + "" : t, e);
4
- import { UIElement as m } from "../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
- const E = "unsubscribe-preview", l = "img", c = "Unsubscribe page preview";
6
- class o extends m {
1
+ var n = Object.defineProperty;
2
+ var m = (s, i, e) => i in s ? n(s, i, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[i] = e;
3
+ var r = (s, i, e) => m(s, typeof i != "symbol" ? i + "" : i, e);
4
+ import { UIElement as l } from "../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
+ const E = "unsubscribe-preview", c = "img", a = "Unsubscribe page preview", g = "is-loaded";
6
+ class d extends l {
7
7
  constructor() {
8
8
  super(...arguments);
9
- s(this, "imgElement");
9
+ r(this, "imgElement");
10
10
  }
11
11
  getId() {
12
12
  return E;
@@ -14,19 +14,21 @@ class o extends m {
14
14
  getTemplate() {
15
15
  return `
16
16
  <div class="unsubscribe-preview-image-container">
17
+ <div class="unsubscribe-preview-loader"></div>
17
18
  <img
18
19
  src=""
19
- alt="${c}"
20
+ alt="${a}"
20
21
  class="unsubscribe-preview-image"
21
22
  />
22
23
  </div>
23
24
  `;
24
25
  }
25
26
  onRender(e) {
26
- this.imgElement = e.querySelector(l);
27
+ this.imgElement = e.querySelector(c);
27
28
  }
28
29
  setValue(e) {
29
- this.imgElement && (this.imgElement.src = e);
30
+ var t;
31
+ this.imgElement && (this.imgElement.src = e, (t = this.imgElement.parentElement) == null || t.classList.add(g));
30
32
  }
31
33
  getValue() {
32
34
  var e;
@@ -38,5 +40,5 @@ class o extends m {
38
40
  }
39
41
  export {
40
42
  E as PREVIEW_UI_ELEMENT_ID,
41
- o as PreviewUIElement
43
+ d as PreviewUIElement
42
44
  };
@@ -29,12 +29,42 @@ const n = `/* Unsubscribe Extension Styles */
29
29
  display: flex;
30
30
  align-items: center;
31
31
  justify-content: center;
32
+ position: relative;
32
33
  }
33
34
 
34
- .unsubscribe-preview-image {
35
+ .unsubscribe-preview-image-container .unsubscribe-preview-image {
35
36
  object-fit: cover;
36
37
  width: 100%;
37
38
  height: auto;
39
+ display: none;
40
+ }
41
+
42
+ .unsubscribe-preview-image-container.is-loaded .unsubscribe-preview-image {
43
+ display: block;
44
+ }
45
+
46
+ .unsubscribe-preview-image-container.is-loaded .unsubscribe-preview-loader {
47
+ display: none;
48
+ }
49
+
50
+ /* Loading shimmer */
51
+ .unsubscribe-preview-loader {
52
+ width: 100%;
53
+ height: 200px;
54
+ border-radius: 4px;
55
+ background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
56
+ background-size: 200% 100%;
57
+ animation: unsubscribe-shimmer 1.5s infinite;
58
+ }
59
+
60
+ @keyframes unsubscribe-shimmer {
61
+ 0% {
62
+ background-position: 200% 0;
63
+ }
64
+
65
+ 100% {
66
+ background-position: -200% 0;
67
+ }
38
68
  }
39
69
  `;
40
70
  export {
@@ -1,5 +1,5 @@
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;
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;
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,6 +129,14 @@ 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
+ }
132
140
  /**
133
141
  *
134
142
  * @param param0
@@ -167,9 +175,9 @@ class _ extends c {
167
175
  _GuOrderable(e, t) {
168
176
  let E = "";
169
177
  t.forEach((a) => {
170
- const l = $.ORDERABLE_ITEM && "name" in $.ORDERABLE_ITEM ? $.ORDERABLE_ITEM.name : "name";
178
+ const I = $.ORDERABLE_ITEM && "name" in $.ORDERABLE_ITEM ? $.ORDERABLE_ITEM.name : "name";
171
179
  E += `
172
- <${n.ORDERABLE_ITEM} ${l}="${a.key}">
180
+ <${n.ORDERABLE_ITEM} ${I}="${a.key}">
173
181
  ${a.content}
174
182
  </${n.ORDERABLE_ITEM}>
175
183
  `;
package/dist/guido.css CHANGED
@@ -1 +1 @@
1
- .gap-16[data-v-6562e38c],.gap-16[data-v-1ccb6d4a]{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-913a3417] .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-16abb398]{position:relative;width:100%;height:calc(100vh - 128px)}.guido-editor__container[data-v-16abb398]{width:100%;height:calc(100vh - 128px)}.guido-editor__no-header[data-v-16abb398]{height:calc(100vh - 75px)}[data-v-293f1c47] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-a86fc486]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-a86fc486]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-a86fc486]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-a86fc486]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-a86fc486]{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-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,47 +1,83 @@
1
- import { useHttp as l } from "../composables/useHttp.js";
2
- import { useToaster as u } from "../composables/useToaster.js";
3
- import { MAX_DEFAULT_TEMPLATE_ID as d } from "../enums/defaults.js";
4
- import f from "../static/templates/empty/index.html.js";
5
- import g from "../static/templates/empty/style.css.js";
6
- const D = () => {
7
- const { get: o } = l(), { handleError: a } = u();
1
+ import { useHttp as d } from "../composables/useHttp.js";
2
+ import { useToaster as m } from "../composables/useToaster.js";
3
+ import { MAX_DEFAULT_TEMPLATE_ID as y } from "../enums/defaults.js";
4
+ import g from "../static/templates/empty/index.html.js";
5
+ import f from "../static/templates/empty/style.css.js";
6
+ const E = () => {
7
+ const { get: s, post: c } = d(), { handleError: r } = m();
8
8
  return {
9
9
  getToken: async () => {
10
10
  try {
11
- const t = Number(localStorage.getItem("ins-guido-test-instance")), { data: e } = await o(`/stripo/get-user-token?test=${t}`);
11
+ const t = Number(localStorage.getItem("ins-guido-test-instance")), { data: e } = await s(`/stripo/get-user-token?test=${t}`);
12
12
  return e.body.token;
13
13
  } catch (t) {
14
- return a(t, "Failed to fetch token"), "";
14
+ return r(t, "Failed to fetch token"), "";
15
15
  }
16
16
  },
17
17
  getCustomFonts: async () => {
18
18
  try {
19
- const { data: t = [] } = await o("/stripo/get-partner-custom-fonts");
19
+ const { data: t = [] } = await s("/stripo/get-partner-custom-fonts");
20
20
  return t.map((e) => ({
21
21
  ...e,
22
22
  active: !0
23
23
  }));
24
24
  } catch (t) {
25
- return a(t, "Failed to fetch custom fonts"), [];
25
+ return r(t, "Failed to fetch custom fonts"), [];
26
26
  }
27
27
  },
28
28
  getDefaultTemplate: async () => {
29
29
  const t = {
30
- html: f,
31
- css: g
30
+ html: g,
31
+ css: f
32
32
  };
33
33
  try {
34
- const e = new URLSearchParams(window.location.search), c = e.get("default-template"), p = e.get("master"), s = c ? parseInt(c) : 0, m = s >= 1 && s <= d ? s : 0;
35
- if (!m && !p)
34
+ const e = new URLSearchParams(window.location.search), u = e.get("default-template"), l = e.get("master"), a = u ? parseInt(u) : 0, i = a >= 1 && a <= y ? a : 0;
35
+ if (!i && !l)
36
36
  return t;
37
- const i = `/stripo/default-template/${m}`, { data: n } = await o(i), r = typeof n == "string" ? JSON.parse(n) : n;
38
- return !r || typeof r != "object" || !("html" in r) || !("css" in r) ? t : r;
37
+ const p = `/stripo/default-template/${i}`, { data: n } = await s(p), o = typeof n == "string" ? JSON.parse(n) : n;
38
+ return !o || typeof o != "object" || !("html" in o) || !("css" in o) ? t : o;
39
39
  } catch (e) {
40
- return a(e, "Failed to fetch default template"), t;
40
+ return r(e, "Failed to fetch default template"), t;
41
+ }
42
+ },
43
+ getSyncModulesStatus: async () => {
44
+ try {
45
+ const { data: t } = await s("/newsletter/settings/synchronisation-in-modules-status");
46
+ return t.status;
47
+ } catch (t) {
48
+ return r(t, "Failed to fetch sync modules status"), !1;
49
+ }
50
+ },
51
+ updateSyncModule: async (t) => {
52
+ try {
53
+ return await c(`/stripo/stripo-modules/${t.moduleId}/update`), !0;
54
+ } catch (e) {
55
+ return r(e, "Failed to update sync module"), !1;
56
+ }
57
+ },
58
+ getSyncModule: async (t) => {
59
+ try {
60
+ const { data: e } = await s(`/stripo/stripo-modules/${t}/get`);
61
+ return e;
62
+ } catch (e) {
63
+ return r(e, "Failed to get sync module"), {
64
+ id: 0,
65
+ stripoId: 0,
66
+ unsubscriptionPreferencePages: []
67
+ };
68
+ }
69
+ },
70
+ setSyncModuleUnsubscriptionPages: async (t) => {
71
+ if (t.length === 0)
72
+ return !0;
73
+ try {
74
+ return await c("/stripo/stripo-modules/set-unsubscription-preference-pages", t), !0;
75
+ } catch (e) {
76
+ return r(e, "Failed to set unsubscription preference pages"), !1;
41
77
  }
42
78
  }
43
79
  };
44
80
  };
45
81
  export {
46
- D as useStripoApi
82
+ E as useStripoApi
47
83
  };
@@ -12,7 +12,7 @@ import * as v from 'valibot';
12
12
  * @param data - The template details to validate
13
13
  * @returns Promise<boolean> - true if valid, false to cancel save
14
14
  */
15
- export type ExternalValidationHandler = (data: SavedTemplateDetails) => Promise<boolean>;
15
+ export type ExternalValidationHandler = (data: Omit<SavedTemplateDetails, 'metadata'>) => Promise<boolean>;
16
16
  /**
17
17
  * Message type constants for email templates
18
18
  */
@@ -1,6 +1,42 @@
1
- export type StripoEventType = 'save' | 'export' | 'close' | 'autosave' | 'publish' | 'export:requested' | 'export:ready';
1
+ export type StripoEventType = 'save' | 'export' | 'close' | 'autosave' | 'publish' | 'export:requested' | 'export:ready' | 'module_updated' | 'module_dropped';
2
+ export interface ModuleUpdatedParams {
3
+ target: string;
4
+ blockType: string;
5
+ moduleId: number;
6
+ moduleCategory: string | null;
7
+ syncModule: boolean;
8
+ }
9
+ export interface ModuleDroppedParams {
10
+ target: string;
11
+ blockType: string;
12
+ moduleId: number;
13
+ syncModule: boolean;
14
+ }
15
+ export interface SyncModuleUnsubscribePayload {
16
+ stripoModuleId: string;
17
+ unsubscriptionPreferencePages: number[];
18
+ type: string;
19
+ }
20
+ export interface SyncModuleExtractResult {
21
+ unsubscribePayload: SyncModuleUnsubscribePayload[];
22
+ stripoModules: number[];
23
+ }
24
+ export interface SyncModuleResponse {
25
+ id: number;
26
+ stripoId: number;
27
+ unsubscriptionPreferencePages: UnsubscriptionPreferencePage[];
28
+ }
29
+ export interface UnsubscriptionPreferencePage {
30
+ id: number;
31
+ name: string;
32
+ type: number;
33
+ status: number;
34
+ isVisible: number;
35
+ thumbnail: string;
36
+ createdAt: string;
37
+ }
2
38
  export interface EventHandler {
3
- (params: Record<string, string>): void | Promise<void>;
39
+ (params: Record<string, unknown>): void | Promise<void>;
4
40
  }
5
41
  export interface EventHandlers {
6
42
  [eventType: string]: EventHandler;
@@ -0,0 +1,2 @@
1
+ import { BlockId as BlockIdEnum } from '@@/Enums/block';
2
+ export type BlockId = `${BlockIdEnum}`;
@@ -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: () => Promise<SavedTemplateDetails | undefined> | undefined;
14
+ saveSilent: () => void | 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;
@@ -24,7 +24,7 @@ declare const _default: import("vue").DefineComponent<__VLS_TypePropsToOption<__
24
24
  } | null, position?: PositionData | undefined) => void;
25
25
  back: () => void;
26
26
  "save:start": () => void;
27
- "save:complete": (data: Omit<SavedTemplateDetails, "forceRecreate">) => void;
27
+ "save:complete": (data: SavedTemplateDetails) => void;
28
28
  "on-change": (hasChanges: boolean) => void;
29
29
  ready: () => void;
30
30
  "onboarding:finished": () => void;
@@ -3,6 +3,7 @@ type __VLS_Props = {
3
3
  filter: Filter;
4
4
  index: number;
5
5
  hasLogicAdapter?: boolean;
6
+ submitted: boolean;
6
7
  };
7
8
  declare const _default: import("vue").DefineComponent<__VLS_TypePropsToOption<__VLS_Props>, {}, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {
8
9
  "delete-filter": (filter: Filter) => void;
@@ -1,2 +1,18 @@
1
- declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {}, string, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
1
+ type __VLS_Props = {
2
+ submitted: boolean;
3
+ };
4
+ declare const _default: import("vue").DefineComponent<__VLS_TypePropsToOption<__VLS_Props>, {
5
+ switchToGroup: (groupId: number) => void;
6
+ }, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {
7
+ "reset-validation": () => void;
8
+ }, string, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToOption<__VLS_Props>>>, {}>;
2
9
  export default _default;
10
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
11
+ type __VLS_TypePropsToOption<T> = {
12
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
13
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
14
+ } : {
15
+ type: import('vue').PropType<T[K]>;
16
+ required: true;
17
+ };
18
+ };
@@ -1,4 +1,4 @@
1
1
  declare const _default: import("vue").DefineComponent<{}, {
2
- handleSave: (isSilent: boolean) => Promise<import("../../../@types/stripo").SavedTemplateDetails | undefined>;
2
+ handleSave: (isSilent: boolean) => void;
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) => Promise<import("../../../@types/stripo.js").SavedTemplateDetails | undefined> | undefined;
2
+ handleSave: (isSilent: boolean) => void | 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;
@@ -0,0 +1,6 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {
2
+ open: () => void;
3
+ }, {}, {}, {}, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, {
4
+ confirm: () => void;
5
+ }, string, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
6
+ export default _default;
@@ -1,4 +1,4 @@
1
1
  declare const _default: import("vue").DefineComponent<{}, {
2
- handleSave: (isSilent: boolean) => Promise<import("../../../@types/stripo.js").SavedTemplateDetails | undefined> | undefined;
2
+ handleSave: (isSilent: boolean) => void | 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;
@@ -3,7 +3,7 @@ type __VLS_Props = {
3
3
  id: string;
4
4
  title: string;
5
5
  description?: string;
6
- size?: 'small' | 'medium' | 'large';
6
+ size?: 'X-small' | 'small' | 'medium' | 'large';
7
7
  footerButtonOptions?: FooterButtonGroup;
8
8
  closeButtonStatus?: boolean;
9
9
  closeOnOutsideClick?: boolean;
@@ -33,7 +33,7 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_WithDefaults<
33
33
  footerStatus: boolean;
34
34
  }>>>, {
35
35
  description: string;
36
- size: "small" | "medium" | "large";
36
+ size: "X-small" | "small" | "medium" | "large";
37
37
  closeOnOutsideClick: boolean;
38
38
  footerButtonOptions: FooterButtonGroup;
39
39
  closeButtonStatus: boolean;
@@ -2,7 +2,7 @@ import type { SavedTemplateDetails } from '@@/Types/stripo';
2
2
  import type { InjectionKey } from 'vue';
3
3
  export type BackHandler = () => void;
4
4
  export type SaveStartHandler = () => void;
5
- export type SaveCompleteHandler = (template: Omit<SavedTemplateDetails, 'forceRecreate'>) => void;
5
+ export type SaveCompleteHandler = (template: Omit<SavedTemplateDetails, 'metadata'>) => void;
6
6
  export type TestEmailClickHandler = () => void;
7
7
  export declare const BACK_KEY: InjectionKey<BackHandler>;
8
8
  export declare const SAVE_START_KEY: InjectionKey<SaveStartHandler>;
@@ -1,4 +1,4 @@
1
- import { SavedTemplateDetails } from '@@/Types/stripo';
1
+ import type { SavedTemplateDetails } from '@@/Types/stripo';
2
2
  export declare const useSave: () => {
3
- save: (isSilent?: boolean) => Promise<SavedTemplateDetails | undefined>;
3
+ save: (isSilent?: boolean) => Promise<Omit<SavedTemplateDetails, "metadata"> | undefined>;
4
4
  };
@@ -1,4 +1,4 @@
1
- import type { Metadata, Template } from '@@/Types/stripo';
2
- export declare const useStripo: (metadata: Metadata) => {
1
+ import type { Metadata, Options, Template } from '@@/Types/stripo';
2
+ export declare const useStripo: (metadata: Metadata, options: Options) => {
3
3
  initPlugin: (template: Template) => Promise<void>;
4
4
  };
@@ -0,0 +1,4 @@
1
+ import type { SyncModuleExtractResult } from '@@/Types/events';
2
+ export declare const useSyncModuleExtractor: () => {
3
+ extractSyncModuleData: (html: string) => SyncModuleExtractResult;
4
+ };
@@ -0,0 +1,4 @@
1
+ export declare enum BlockId {
2
+ Items = "items-block",
3
+ Recommendation = "recommendation-block"
4
+ }