@useinsider/guido 2.0.0-beta.6e688eb → 2.0.0-beta.7459e2a

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 (223) hide show
  1. package/README.md +2 -0
  2. package/dist/@types/config/schemas.js +55 -39
  3. package/dist/components/Guido.vue.js +1 -1
  4. package/dist/components/Guido.vue2.js +15 -17
  5. package/dist/components/organisms/email-preview/PreviewContainer.vue.js +3 -3
  6. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue.js +6 -6
  7. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue2.js +17 -13
  8. package/dist/components/organisms/email-preview/amp/AmpToggle.vue.js +6 -6
  9. package/dist/components/organisms/email-preview/amp/AmpToggle.vue2.js +14 -12
  10. package/dist/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue.js +18 -0
  11. package/dist/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue2.js +15 -0
  12. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue.js +16 -15
  13. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue2.js +14 -22
  14. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +3 -3
  15. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue.js +12 -11
  16. package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue.js +12 -10
  17. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue.js +11 -10
  18. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue2.js +15 -14
  19. package/dist/components/organisms/header/EditorActions.vue.js +21 -0
  20. package/dist/components/organisms/header/EditorActions.vue2.js +41 -0
  21. package/dist/components/organisms/header/EditorToolbar.vue.js +18 -0
  22. package/dist/components/organisms/header/EditorToolbar.vue2.js +17 -0
  23. package/dist/components/organisms/header/HeaderWrapper.vue.js +6 -5
  24. package/dist/components/organisms/header/LeftSlot.vue.js +11 -11
  25. package/dist/components/organisms/header/LeftSlot.vue2.js +27 -23
  26. package/dist/components/organisms/header/MiddleSlot.vue.js +7 -7
  27. package/dist/components/organisms/header/MiddleSlot.vue2.js +11 -15
  28. package/dist/components/organisms/header/RightSlot.vue.js +11 -14
  29. package/dist/components/organisms/header/RightSlot.vue2.js +13 -30
  30. package/dist/components/organisms/header/version-history/VersionHistory.vue.js +5 -5
  31. package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +15 -15
  32. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.js +1 -1
  33. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue2.js +20 -19
  34. package/dist/composables/useActionsApi.js +33 -30
  35. package/dist/composables/useConfig.js +29 -27
  36. package/dist/composables/useSave.js +13 -11
  37. package/dist/composables/useStripo.js +40 -40
  38. package/dist/config/migrator/index.js +9 -8
  39. package/dist/config/migrator/itemsBlockMigrator.js +334 -0
  40. package/dist/enums/academy.js +8 -0
  41. package/dist/enums/onboarding.js +1 -2
  42. package/dist/enums/unsubscribe.js +20 -21
  43. package/dist/extensions/Blocks/Items/block.js +36 -40
  44. package/dist/extensions/Blocks/Items/controls/button/link.js +22 -29
  45. package/dist/extensions/Blocks/Items/controls/cardComposition.js +66 -46
  46. package/dist/extensions/Blocks/Items/controls/image/link.js +23 -30
  47. package/dist/extensions/Blocks/Items/controls/name/trimming.js +25 -25
  48. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +19 -17
  49. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +31 -29
  50. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +44 -38
  51. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +21 -19
  52. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +29 -27
  53. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +93 -0
  54. package/dist/extensions/Blocks/Items/controls/settingsControl.js +158 -137
  55. package/dist/extensions/Blocks/Items/enums/controlEnums.js +2 -2
  56. package/dist/extensions/Blocks/Items/enums/productEnums.js +43 -45
  57. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +4 -5
  58. package/dist/extensions/Blocks/Items/extension.js +11 -9
  59. package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +58 -49
  60. package/dist/extensions/Blocks/Items/layouts/vertical.html.js +48 -59
  61. package/dist/extensions/Blocks/Items/settingsPanel.js +27 -26
  62. package/dist/extensions/Blocks/Items/store/items-block.js +11 -7
  63. package/dist/extensions/Blocks/Items/template.js +389 -141
  64. package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +176 -0
  65. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +69 -153
  66. package/dist/extensions/Blocks/Recommendation/constants.js +1 -9
  67. package/dist/extensions/Blocks/Recommendation/control.js +59 -74
  68. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +13 -0
  69. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +13 -0
  70. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +13 -0
  71. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +13 -0
  72. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +13 -0
  73. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +13 -0
  74. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +13 -0
  75. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +13 -0
  76. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +13 -0
  77. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +13 -0
  78. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +13 -0
  79. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +13 -0
  80. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +13 -0
  81. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +13 -0
  82. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +13 -0
  83. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +13 -0
  84. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +13 -0
  85. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +13 -0
  86. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +13 -0
  87. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +13 -0
  88. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +13 -0
  89. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +13 -0
  90. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +13 -0
  91. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +13 -0
  92. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +13 -0
  93. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +13 -0
  94. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +13 -0
  95. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +13 -0
  96. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +13 -0
  97. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +13 -0
  98. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +13 -0
  99. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +13 -0
  100. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +13 -0
  101. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +13 -0
  102. package/dist/extensions/Blocks/Recommendation/extension.js +42 -16
  103. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +72 -117
  104. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +64 -85
  105. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +17 -54
  106. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +45 -74
  107. package/dist/extensions/Blocks/Unsubscribe/extension.js +9 -9
  108. package/dist/extensions/Blocks/common-control.js +30 -32
  109. package/dist/extensions/Blocks/controlFactories.js +55 -45
  110. package/dist/guido.css +1 -1
  111. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +369 -285
  112. package/dist/package.json.js +1 -1
  113. package/dist/services/stripoApi.js +6 -10
  114. package/dist/src/@types/config/index.d.ts +2 -2
  115. package/dist/src/@types/config/schemas.d.ts +30 -0
  116. package/dist/src/@types/config/types.d.ts +7 -1
  117. package/dist/src/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue.d.ts +2 -0
  118. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +4 -0
  119. package/dist/src/components/organisms/header/EditorToolbar.vue.d.ts +2 -0
  120. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
  121. package/dist/src/composables/useActionsApi.d.ts +1 -0
  122. package/dist/src/composables/useConfig.d.ts +8 -0
  123. package/dist/src/config/migrator/itemsBlockMigrator.d.ts +6 -0
  124. package/dist/src/enums/academy.d.ts +12 -0
  125. package/dist/src/enums/onboarding.d.ts +0 -1
  126. package/dist/src/enums/unsubscribe.d.ts +0 -1
  127. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -2
  128. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +9 -0
  129. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -2
  130. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +1 -1
  131. package/dist/src/extensions/Blocks/Items/controls/price/singlePrice.d.ts +18 -0
  132. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +0 -4
  133. package/dist/src/extensions/Blocks/Items/enums/controlEnums.d.ts +1 -0
  134. package/dist/src/extensions/Blocks/Items/enums/productEnums.d.ts +24 -26
  135. package/dist/src/extensions/Blocks/Items/enums/settingsEnums.d.ts +1 -2
  136. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +2 -0
  137. package/dist/src/extensions/Blocks/Items/template.d.ts +22 -1
  138. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +76 -0
  139. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +3 -50
  140. package/dist/src/extensions/Blocks/Recommendation/constants.d.ts +0 -32
  141. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +2 -5
  142. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +5 -0
  143. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +5 -0
  144. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +5 -0
  145. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +5 -0
  146. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +5 -0
  147. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +5 -0
  148. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +5 -0
  149. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +5 -0
  150. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +5 -0
  151. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +5 -0
  152. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +5 -0
  153. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +5 -0
  154. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +5 -0
  155. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +5 -0
  156. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +5 -0
  157. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +5 -0
  158. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +5 -0
  159. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +5 -0
  160. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +5 -0
  161. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +5 -0
  162. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +5 -0
  163. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +5 -0
  164. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +5 -0
  165. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +5 -0
  166. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +5 -0
  167. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +5 -0
  168. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +5 -0
  169. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +5 -0
  170. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +5 -0
  171. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +5 -0
  172. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +5 -0
  173. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +5 -0
  174. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +5 -0
  175. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +5 -0
  176. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +3 -3
  177. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +7 -15
  178. package/dist/src/extensions/Blocks/common-control.d.ts +10 -11
  179. package/dist/src/stores/config.d.ts +164 -1
  180. package/dist/src/stores/editor.d.ts +21 -0
  181. package/dist/static/assets/desktop/desktop-mockup-center.svg.js +4 -0
  182. package/dist/static/assets/desktop/desktop-mockup-left.svg.js +4 -0
  183. package/dist/static/assets/desktop/desktop-mockup-right.svg.js +4 -0
  184. package/dist/static/assets/mobile/email-mockup.svg.js +4 -0
  185. package/dist/static/assets/mobile/inbox-mockup.svg.js +4 -0
  186. package/dist/static/styles/components/button.css.js +1 -1
  187. package/dist/static/styles/components/wide-panel.css.js +5 -1
  188. package/dist/static/styles/customEditorStyle.css.js +0 -13
  189. package/dist/stores/config.js +7 -0
  190. package/dist/stores/editor.js +1 -0
  191. package/dist/utils/pairProductVariables.js +61 -58
  192. package/dist/utils/templatePreparation.js +17 -17
  193. package/package.json +3 -3
  194. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue.js +0 -17
  195. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue2.js +0 -20
  196. package/dist/extensions/Blocks/Items/utils/configBlockUtils.js +0 -17
  197. package/dist/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.js +0 -28
  198. package/dist/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.js +0 -76
  199. package/dist/extensions/Blocks/Items/utils/updateAttributes.js +0 -46
  200. package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +0 -68
  201. package/dist/extensions/Blocks/Recommendation/controls/index.js +0 -245
  202. package/dist/extensions/Blocks/Recommendation/controls/nameTextTrimControl.js +0 -74
  203. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.js +0 -71
  204. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.js +0 -71
  205. package/dist/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.js +0 -71
  206. package/dist/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.js +0 -71
  207. package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +0 -188
  208. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +0 -25
  209. package/dist/src/extensions/Blocks/Items/utils/configBlockUtils.d.ts +0 -23
  210. package/dist/src/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.d.ts +0 -32
  211. package/dist/src/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.d.ts +0 -50
  212. package/dist/src/extensions/Blocks/Items/utils/updateAttributes.d.ts +0 -8
  213. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.d.ts +0 -25
  214. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +0 -592
  215. package/dist/src/extensions/Blocks/Recommendation/controls/nameTextTrimControl.d.ts +0 -16
  216. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.d.ts +0 -15
  217. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.d.ts +0 -15
  218. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.d.ts +0 -15
  219. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.d.ts +0 -15
  220. package/dist/src/extensions/Blocks/Recommendation/controls/spacingControl.d.ts +0 -60
  221. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +0 -19
  222. package/dist/static/assets/inbox-mockup.svg.js +0 -4
  223. package/dist/static/assets/phone-mockup.svg.js +0 -4
@@ -1,74 +1,77 @@
1
1
  import { productPairs as w } from "../extensions/Blocks/Items/enums/productEnums.js";
2
- function M(H) {
3
- const m = H.replaceAll("{%", "<!--{%").replaceAll("%}", "%}-->"), $ = new DOMParser().parseFromString(m, "text/html"), C = w.PAIRS_FOR_EXTENSION;
4
- Object.entries(C).forEach(([n, d]) => {
2
+ function P(k) {
3
+ const m = k.replaceAll("{%", "<!--{%").replaceAll("%}", "%}-->"), $ = new DOMParser().parseFromString(m, "text/html"), R = w.PAIRS_FOR_EXTENSION;
4
+ Object.entries(R).forEach(([n, l]) => {
5
5
  $.querySelectorAll(".ins-product-td").forEach((o) => {
6
- const h = o.getAttribute("data-number") || "1", _ = o.getAttribute("data-type") || "CART_ITEMS";
6
+ const E = o.getAttribute("data-number") || "1", b = o.getAttribute("data-type") || "CART_ITEMS";
7
7
  o.querySelectorAll(`[product-attr="${n}"]`).forEach((e) => {
8
8
  var y;
9
- const b = e.getAttribute("data-type") || _, u = e.getAttribute("data-number") || h, p = d[b];
9
+ const T = e.getAttribute("data-type") || b, u = e.getAttribute("data-number") || E, p = l[T];
10
10
  if (p)
11
11
  switch (n) {
12
12
  case "imageSrc": {
13
- let t = null, i = null;
14
- if (e.tagName === "IMG" ? (t = e, i = t.closest("a")) : (t = e.querySelector("img"), i = e.querySelector("a") || e.closest("a")), !t)
13
+ let t = null, c = null;
14
+ if (e.tagName === "IMG" ? (t = e, c = t.closest("a")) : (t = e.querySelector("img"), c = e.querySelector("a") || e.closest("a")), !t)
15
15
  break;
16
- const c = p.DEFAULT, a = p.ATTR;
17
- if (c && t.src) {
16
+ const i = p.DEFAULT, a = p.ATTR;
17
+ if (i && t.src) {
18
18
  const r = t.src;
19
- c.some((l) => {
20
- const s = l.split("/").pop() || "", F = r.split("/").pop() || "";
21
- return r.includes(l) || r.includes(s) || F === s;
19
+ i.some((d) => {
20
+ const s = d.split("/").pop() || "", _ = r.split("/").pop() || "";
21
+ return r.includes(d) || r.includes(s) || _ === s;
22
22
  }) && (t.src = `{{${a}_${u}}}`);
23
23
  }
24
- if (i) {
25
- const r = (y = C.itemLink) == null ? void 0 : y[b];
24
+ if (c) {
25
+ const r = (y = R.itemLink) == null ? void 0 : y[T];
26
26
  if (r) {
27
- const f = r.HREF, l = r.DEFAULT_HREF || "#!", s = i.href;
28
- (s === "#" || s === "" || s.endsWith("#!") || s.endsWith(l) || s === `${window.location.href}${l}` || !s || s === window.location.href) && (i.href = `{{${f}_${u}}}`);
27
+ const f = r.HREF, d = r.DEFAULT_HREF || "#!", s = c.href;
28
+ (s === "#" || s === "" || s.endsWith("#!") || s.endsWith(d) || s === `${window.location.href}${d}` || !s || s === window.location.href) && (c.href = `{{${f}_${u}}}`);
29
29
  }
30
30
  }
31
31
  break;
32
32
  }
33
33
  case "name": {
34
- const t = p, i = t.ATTR, c = t.DEFAULT_HREF || "#!", a = t.HREF;
35
- e.textContent && (e.textContent = `{{${i}_${u}}}`);
34
+ const t = p, c = t.ATTR, i = t.DEFAULT_HREF || "#!", a = t.HREF;
35
+ e.textContent && (e.textContent = `{{${c}_${u}}}`);
36
36
  const r = e.closest("a") || (e.tagName === "A" ? e : null);
37
37
  if (r && a) {
38
- const f = r.href, l = `${window.location.href}${c}`;
39
- (f === l || f.endsWith(c)) && (r.href = `{{${a}_${u}}}`);
38
+ const f = r.href, d = `${window.location.href}${i}`;
39
+ (f === d || f.endsWith(i)) && (r.href = `{{${a}_${u}}}`);
40
40
  }
41
41
  break;
42
42
  }
43
43
  case "price":
44
44
  case "originalPrice": {
45
- const t = p, c = e.getAttribute("data-formated") === "true", a = e.getAttribute("data-curency") || "before", r = c ? t.PRICE_FORMATTED : t.PRICE, f = t.CURRENCY;
46
- let l = `{{${r}_${u}}}`;
47
- if (f) {
48
- const s = `{{${f}_${u}}}`;
49
- l = a === "after" ? `${l} ${s}` : `${s} ${l}`;
45
+ const t = p, c = e.getAttribute("data-formated"), i = e.getAttribute("data-single_price"), a = c === "true", r = i === "true", f = e.getAttribute("data-curency") || "before";
46
+ let d;
47
+ r ? d = a ? t.SINGLE_PRICE_FORMATTED : t.SINGLE_PRICE : d = a ? t.PRICE_FORMATTED : t.PRICE;
48
+ const s = t.CURRENCY;
49
+ let _ = `{{${d}_${u}}}`;
50
+ if (s) {
51
+ const H = `{{${s}_${u}}}`;
52
+ _ = f === "after" ? `${_} ${H}` : `${H} ${_}`;
50
53
  }
51
- e.textContent = l;
54
+ e.textContent = _;
52
55
  break;
53
56
  }
54
57
  case "quantity": {
55
- const t = p, i = t.ATTR, c = t.DEFAULT;
56
- e.textContent && e.textContent.trim() === c && (e.textContent = `{{${i}_${u}}}`);
58
+ const t = p, c = t.ATTR, i = t.DEFAULT;
59
+ e.textContent && e.textContent.trim() === i && (e.textContent = `{{${c}_${u}}}`);
57
60
  break;
58
61
  }
59
62
  case "button": {
60
- const t = p, i = t.HREF, c = t.DEFAULT_HREF || "#!", a = e.tagName === "A" ? e : e.querySelector("a");
63
+ const t = p, c = t.HREF, i = t.DEFAULT_HREF || "#!", a = e.tagName === "A" ? e : e.querySelector("a");
61
64
  if (a) {
62
- const r = a.href || "", f = `${window.location.href}${c}`;
63
- (r === "" || r === "#" || r === f || r.endsWith(c) || r.endsWith("#!") || r === window.location.href) && (a.href = `{{${i}_${u}}}`);
65
+ const r = a.href || "", f = `${window.location.href}${i}`;
66
+ (r === "" || r === "#" || r === f || r.endsWith(i) || r.endsWith("#!") || r === window.location.href) && (a.href = `{{${c}_${u}}}`);
64
67
  }
65
68
  break;
66
69
  }
67
70
  case "itemLink": {
68
- const t = p, i = t.HREF, c = t.DEFAULT_HREF || "#!", a = e;
71
+ const t = p, c = t.HREF, i = t.DEFAULT_HREF || "#!", a = e;
69
72
  if (a.href) {
70
- const r = a.href, f = `${window.location.href}${c}`;
71
- (r === f || r.endsWith(c)) && (a.href = `{{${i}_${u}}}`);
73
+ const r = a.href, f = `${window.location.href}${i}`;
74
+ (r === f || r.endsWith(i)) && (a.href = `{{${c}_${u}}}`);
72
75
  }
73
76
  break;
74
77
  }
@@ -83,21 +86,21 @@ function M(H) {
83
86
  });
84
87
  });
85
88
  });
86
- const S = $.querySelectorAll(".ins-product-td"), R = [];
87
- S.forEach((n) => {
88
- const d = n.getAttribute("data-type") || "CART_ITEMS", A = n.getAttribute("data-number") || "1", o = n.getAttribute("data-nodup"), h = n.outerHTML;
89
- R.push({
89
+ const F = $.querySelectorAll(".ins-product-td"), S = [];
90
+ F.forEach((n) => {
91
+ const l = n.getAttribute("data-type") || "CART_ITEMS", A = n.getAttribute("data-number") || "1", o = n.getAttribute("data-nodup"), E = n.outerHTML;
92
+ S.push({
90
93
  element: n,
91
- outerHtml: h,
92
- type: d,
94
+ outerHtml: E,
95
+ type: l,
93
96
  number: A,
94
97
  nodup: o || void 0
95
98
  });
96
99
  });
97
- let E = $.body.innerHTML;
98
- R.reverse().forEach(({ outerHtml: n, type: d, number: A }) => {
100
+ let h = $.body.innerHTML;
101
+ S.reverse().forEach(({ outerHtml: n, type: l, number: A }) => {
99
102
  let o = "";
100
- switch (d) {
103
+ switch (l) {
101
104
  case "CART_ITEMS":
102
105
  o = "ins_apr_total_product_kind";
103
106
  break;
@@ -109,28 +112,28 @@ function M(H) {
109
112
  break;
110
113
  }
111
114
  if (o) {
112
- const _ = parseInt(A) - 1, b = `${`{% if ${o} > ${_} %}`}${n}{% endif %}`;
113
- E = E.replace(n, b);
115
+ const b = parseInt(A) - 1, T = `${`{% if ${o} > ${b} %}`}${n}{% endif %}`;
116
+ h = h.replace(n, T);
114
117
  }
115
118
  });
116
- const k = $.querySelectorAll('[product-attr="originalPrice"][data-type="CART_ITEMS"]'), T = [];
117
- return k.forEach((n) => {
118
- const d = n.getAttribute("data-number"), A = n.getAttribute("data-type");
119
- if (!d || A !== "CART_ITEMS")
119
+ const I = $.querySelectorAll('[product-attr="originalPrice"][data-type="CART_ITEMS"]'), g = [];
120
+ return I.forEach((n) => {
121
+ const l = n.getAttribute("data-number"), A = n.getAttribute("data-type");
122
+ if (!l || A !== "CART_ITEMS")
120
123
  return;
121
124
  const o = n.closest(".product-original-price-class");
122
125
  if (o) {
123
- const h = o.outerHTML;
124
- T.some((g) => g.tdOuterHtml === h) || T.push({ tdOuterHtml: h, number: d });
126
+ const E = o.outerHTML;
127
+ g.some((C) => C.tdOuterHtml === E) || g.push({ tdOuterHtml: E, number: l });
125
128
  }
126
- }), T.reverse().forEach(({ tdOuterHtml: n, number: d }) => {
127
- const A = `{% if ins_apr_price_${d} != ins_apr_originalprice_${d} %}`;
128
- if (!E.includes(A) && !n.includes("{% if")) {
129
- const h = `${A}${n}{% endif %}`;
130
- E = E.replace(n, h);
129
+ }), g.reverse().forEach(({ tdOuterHtml: n, number: l }) => {
130
+ const A = `{% if ins_apr_price_${l} != ins_apr_originalprice_${l} %}`;
131
+ if (!h.includes(A) && !n.includes("{% if")) {
132
+ const E = `${A}${n}{% endif %}`;
133
+ h = h.replace(n, E);
131
134
  }
132
- }), E.replaceAll("<!--{%", "{%").replaceAll("%}-->", "%}").replaceAll("&lt;!--{%", "{%").replaceAll("%}--&gt;", "%}");
135
+ }), h.replaceAll("<!--{%", "{%").replaceAll("%}-->", "%}").replaceAll("&lt;!--{%", "{%").replaceAll("%}--&gt;", "%}");
133
136
  }
134
137
  export {
135
- M as pairProductVariables
138
+ P as pairProductVariables
136
139
  };
@@ -1,29 +1,29 @@
1
- import { useActionsApi as S } from "../composables/useActionsApi.js";
2
- import { useHtmlCompiler as b } from "../composables/useHtmlCompiler.js";
3
- import { useDynamicContentStore as f } from "../stores/dynamic-content.js";
4
- import { useUnsubscribeStore as C } from "../stores/unsubscribe.js";
5
- const z = () => {
6
- const i = f(), t = C(), { getCompiledEmail: o, getTemplateData: s } = S(), { compileHtml: n } = b();
1
+ import { useActionsApi as b } from "../composables/useActionsApi.js";
2
+ import { useHtmlCompiler as f } from "../composables/useHtmlCompiler.js";
3
+ import { useDynamicContentStore as C } from "../stores/dynamic-content.js";
4
+ import { useUnsubscribeStore as T } from "../stores/unsubscribe.js";
5
+ const P = () => {
6
+ const i = C(), t = T(), { getCompiledEmail: o, getTemplateData: s, editorSave: n } = b(), { compileHtml: a } = f();
7
7
  return {
8
8
  prepareTemplateDetails: async () => {
9
- const { html: a, ampHtml: m = "", ampErrors: r = [] } = await o({
9
+ const { html: r, ampHtml: m = "", ampErrors: c = [] } = await o({
10
10
  minimize: !0,
11
11
  resetDataSavedFlag: !1
12
- }), { html: c, css: l, syncModulesIds: p = [] } = await s(), { compiledHtml: u, stats: e, appliedRules: d } = n(a), g = i.getSelectedDynamicContentList;
13
- return console.debug("HTML Compilation Stats:", {
12
+ }), { html: l, css: p, syncModulesIds: u = [] } = await s(), { compiledHtml: d, stats: e, appliedRules: g } = a(r), S = i.getSelectedDynamicContentList;
13
+ return n(), console.debug("HTML Compilation Stats:", {
14
14
  originalSize: e.originalSize,
15
15
  compiledSize: e.compiledSize,
16
16
  reduction: `${e.reductionPercentage.toFixed(2)}%`,
17
- appliedRules: d,
17
+ appliedRules: g,
18
18
  executionTime: `${e.executionTime.toFixed(2)}ms`
19
19
  }), {
20
- dynamicContentList: g,
21
- compiledHtml: u,
22
- rawHtml: c,
23
- css: l,
20
+ dynamicContentList: S,
21
+ compiledHtml: d,
22
+ rawHtml: l,
23
+ css: p,
24
24
  ampHtml: m,
25
- ampErrors: r,
26
- modules: p,
25
+ ampErrors: c,
26
+ modules: u,
27
27
  recommendation: {
28
28
  campaignUrls: {},
29
29
  configs: {}
@@ -37,5 +37,5 @@ const z = () => {
37
37
  };
38
38
  };
39
39
  export {
40
- z as useTemplatePreparation
40
+ P as useTemplatePreparation
41
41
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@useinsider/guido",
3
- "version": "2.0.0-beta.6e688eb",
3
+ "version": "2.0.0-beta.7459e2a",
4
4
  "description": "Guido is a Vue + TypeScript wrapper for Email Plugin. Easily embed the email editor in your Vue applications.",
5
5
  "main": "./dist/guido.umd.cjs",
6
6
  "module": "./dist/library.js",
@@ -31,7 +31,7 @@
31
31
  "author": "",
32
32
  "license": "ISC",
33
33
  "dependencies": {
34
- "@stripoinc/ui-editor-extensions": "3.3.0",
34
+ "@stripoinc/ui-editor-extensions": "3.5.0",
35
35
  "@useinsider/design-system-vue": "0.14.20",
36
36
  "@vueuse/core": "11.3.0",
37
37
  "lodash-es": "4.17.21",
@@ -85,7 +85,7 @@
85
85
  },
86
86
  "guido": {
87
87
  "stripo": {
88
- "version": "2.47.0"
88
+ "version": "2.52.0"
89
89
  }
90
90
  }
91
91
  }
@@ -1,17 +0,0 @@
1
- import e from "./EmailHeaderInfo.vue2.js";
2
- import c from "../../../../_virtual/_plugin-vue2_normalizer.js";
3
- var r = function() {
4
- var t = this, s = t._self._c, a = t._self._setupProxy;
5
- return s("div", { staticClass: "d-f a-i-c j-c-s-b w-1" }, [s("div", { staticClass: "d-f a-i-c" }, [s("div", { staticClass: "b-c-49 bor-r-100 w-5-s h-5-s d-f a-i-c j-c-c" }, [s(a.InIcons, { attrs: { name: "line-menu-profile" } })], 1), s("div", { staticClass: "d-f f-d-c ml-2" }, [s("p", { staticClass: "t-c-53 f-w-600 f-s-1 l-h-1" }, [t._v(" " + t._s(a.senderName) + " ")]), s("p", { staticClass: "t-c-55 f-w-400 f-s-12 l-h-1" }, [t._v(" " + t._s(a.subject) + " ")])])])]);
6
- }, i = [], n = /* @__PURE__ */ c(
7
- e,
8
- r,
9
- i,
10
- !1,
11
- null,
12
- null
13
- );
14
- const o = n.exports;
15
- export {
16
- o as default
17
- };
@@ -1,20 +0,0 @@
1
- import { defineComponent as i, computed as s } from "vue";
2
- import { useConfig as c } from "../../../../composables/useConfig.js";
3
- import { useTranslations as d } from "../../../../composables/useTranslations.js";
4
- import { InIcons as u } from "@useinsider/design-system-vue";
5
- const g = /* @__PURE__ */ i({
6
- __name: "EmailHeaderInfo",
7
- setup(f) {
8
- const { config: n } = c(), r = d(), a = s(() => {
9
- var e, t, o;
10
- return ((o = (t = (e = n.value) == null ? void 0 : e.editor) == null ? void 0 : t.emailHeader) == null ? void 0 : o.senderName) || r("settings.sender-name");
11
- }), m = s(() => {
12
- var e, t, o;
13
- return ((o = (t = (e = n.value) == null ? void 0 : e.editor) == null ? void 0 : t.emailHeader) == null ? void 0 : o.subject) || r("email-editor.default-subject");
14
- });
15
- return { __sfc: !0, config: n, trans: r, senderName: a, subject: m, InIcons: u };
16
- }
17
- });
18
- export {
19
- g as default
20
- };
@@ -1,17 +0,0 @@
1
- function r(t) {
2
- if (!t)
3
- return null;
4
- const n = t.closest(".items-block-v2");
5
- return n ? n.querySelector("esd-config-block") : null;
6
- }
7
- function o(t, n = !1) {
8
- return t == null ? n : t === "1" || t === "true";
9
- }
10
- function e(t, n = "") {
11
- return t || n;
12
- }
13
- export {
14
- o as attributeToBoolean,
15
- e as attributeToString,
16
- r as getConfigBlock
17
- };
@@ -1,28 +0,0 @@
1
- import { configAttributes as i } from "../enums/productEnums.js";
2
- import { getConfigBlock as c, attributeToBoolean as u, attributeToString as a } from "./configBlockUtils.js";
3
- function l(r, t) {
4
- const e = c(r);
5
- if (!e)
6
- return;
7
- const o = e.getAttribute(i[t.attributeName]), n = t.converter(o);
8
- t.storeSetter(n);
9
- }
10
- function b(r, t, e = !1) {
11
- return {
12
- attributeName: r,
13
- storeSetter: t,
14
- converter: (o) => u(o, e)
15
- };
16
- }
17
- function s(r, t, e = "") {
18
- return {
19
- attributeName: r,
20
- storeSetter: t,
21
- converter: (o) => a(o, e)
22
- };
23
- }
24
- export {
25
- b as createBooleanSyncConfig,
26
- s as createStringSyncConfig,
27
- l as syncAttributeFromConfigBlock
28
- };
@@ -1,76 +0,0 @@
1
- import { useItemsBlockStore as e } from "../store/items-block.js";
2
- import { syncAttributeFromConfigBlock as r, createBooleanSyncConfig as i, createStringSyncConfig as s } from "./syncAttributeFromConfigBlock.js";
3
- function m(t) {
4
- const o = e(), n = i(
5
- "PRODUCT_NAME_TRIMMING",
6
- (c) => o.setNameTrimming(c),
7
- !1
8
- );
9
- r(t, n);
10
- }
11
- function f(t) {
12
- const o = e(), n = i(
13
- "PRODUCT_PRICE_HIDE_DISCOUNT",
14
- (c) => o.setHideDiscount(c),
15
- !1
16
- );
17
- r(t, n);
18
- }
19
- function R(t) {
20
- const o = e(), n = i(
21
- "PRODUCT_PRICE_FORMATTED",
22
- (c) => o.setFormattedPrice(c),
23
- !0
24
- );
25
- r(t, n);
26
- }
27
- function O(t) {
28
- const o = e(), n = s(
29
- "PRODUCT_PRICE_CURRENCY_SYMBOL",
30
- (c) => o.setCurrencySymbol(c),
31
- ""
32
- );
33
- r(t, n);
34
- }
35
- function _(t) {
36
- const o = e(), n = s(
37
- "PRODUCT_PRICE_CURRENCY_LOCATION",
38
- (c) => o.setCurrencyLocation(c),
39
- "0"
40
- );
41
- r(t, n);
42
- }
43
- function I(t) {
44
- const o = e(), n = s(
45
- "PRODUCT_BUTTON_LINK",
46
- (c) => o.setButtonLink(c),
47
- ""
48
- );
49
- r(t, n);
50
- }
51
- function T(t) {
52
- const o = e(), n = s(
53
- "PRODUCT_IMAGE_LINK",
54
- (c) => o.setImageLink(c),
55
- ""
56
- );
57
- r(t, n);
58
- }
59
- function y(t) {
60
- const o = e(), n = s(
61
- "PRODUCT_ORIGINAL_PRICE_CONTROL_ORIENTATION",
62
- (c) => o.setPriceOrientation(c),
63
- "horizontal"
64
- );
65
- r(t, n);
66
- }
67
- export {
68
- I as syncButtonLinkFromAttributes,
69
- _ as syncCurrencyLocationFromAttributes,
70
- O as syncCurrencySymbolFromAttributes,
71
- R as syncFormattedPriceFromAttributes,
72
- f as syncHideDiscountFromAttributes,
73
- T as syncImageLinkFromAttributes,
74
- m as syncNameTrimmingFromAttributes,
75
- y as syncPriceOrientationFromAttributes
76
- };
@@ -1,46 +0,0 @@
1
- import { ModificationDescription as p } from "../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { configAttributes as t } from "../enums/productEnums.js";
3
- import { DefaultConfigValues as i } from "../enums/settingsEnums.js";
4
- import { useItemsBlockStore as s } from "../store/items-block.js";
5
- import { getConfigBlock as P } from "./configBlockUtils.js";
6
- function M(n, O) {
7
- const e = P(n);
8
- if (!e)
9
- return;
10
- const c = s(), {
11
- itemsType: r,
12
- itemIds: C,
13
- orientation: T,
14
- nameTrimming: _,
15
- hideDiscount: E,
16
- formattedPrice: R,
17
- currencySymbol: N,
18
- currencyLocation: m,
19
- priceOrientation: I,
20
- buttonLink: a,
21
- imageLink: f
22
- } = c, u = {
23
- "data-source": r,
24
- [t.TYPE]: r,
25
- [t.ITEMS_INDEX_SELECT_CONTROL_VALUE]: C,
26
- [t.ORIENTATION]: T,
27
- [t.PRODUCT_NAME_TRIMMING]: _ ? "1" : "0",
28
- [t.PRODUCT_PRICE_HIDE_DISCOUNT]: E ? "1" : "0",
29
- [t.PRODUCT_PRICE_FORMATTED]: R ? "1" : "0",
30
- [t.PRODUCT_PRICE_CURRENCY_SYMBOL]: N || "",
31
- [t.PRODUCT_PRICE_CURRENCY_LOCATION]: m || "0",
32
- [t.PRODUCT_ORIGINAL_PRICE_CONTROL_ORIENTATION]: I || "horizontal",
33
- [t.PRODUCT_BUTTON_LINK]: a || "",
34
- [t.PRODUCT_IMAGE_LINK]: f || "",
35
- [t.NAME_CONTROL_ENABLED]: i.productNameControlEnabled,
36
- [t.QUANTITY_CONTROL_ENABLED]: i.productQuantityControlEnabled,
37
- [t.PRICE_CONTROL_OPENED]: i.productPriceControlOpened
38
- };
39
- let o = O.getDocumentModifier().modifyHtml(e);
40
- Object.entries(u).forEach(([D, l]) => {
41
- o = o.setAttribute(D, l);
42
- }), o.apply(new p("Update config block attributes from control"));
43
- }
44
- export {
45
- M as updateConfigBlockAttributes
46
- };
@@ -1,68 +0,0 @@
1
- import { ModificationDescription as a } from "../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { CommonControl as d } from "../../common-control.js";
3
- const c = "recommendation-card-background-color-control", o = {
4
- CARD_BACKGROUND_COLOR: "cardBackgroundColor"
5
- };
6
- class u extends d {
7
- getId() {
8
- return c;
9
- }
10
- getTemplate() {
11
- return `
12
- <div class="card-bg-control-container">
13
- ${this._GuTwoColumns([
14
- this._GuLabel({ text: "Card Background Color" }),
15
- this._GuColorPicker(o.CARD_BACKGROUND_COLOR)
16
- ])}
17
- </div>
18
- `;
19
- }
20
- onRender() {
21
- this._setFormValues(), this._listenToFormUpdates();
22
- }
23
- onTemplateNodeUpdated(r) {
24
- super.onTemplateNodeUpdated(r), this._setFormValues();
25
- }
26
- _setFormValues() {
27
- const r = this._getCurrentCardBackgroundColor();
28
- this.api.updateValues({
29
- [o.CARD_BACKGROUND_COLOR]: r
30
- });
31
- }
32
- /**
33
- * Reads the current background color from the first product card wrapper
34
- * @returns The background color value or 'transparent' if not found
35
- */
36
- _getCurrentCardBackgroundColor() {
37
- if (!this.currentNode || !("querySelectorAll" in this.currentNode))
38
- return "transparent";
39
- const r = this.currentNode.querySelector(".product-card-wrapper");
40
- return !r || !("getStyle" in r) ? "transparent" : r.getStyle("background-color") || "transparent";
41
- }
42
- /**
43
- * Handles card background color changes
44
- * Applies the color to all product card wrapper elements
45
- */
46
- _onCardBackgroundColorChange(r) {
47
- if (!this.currentNode || !("querySelectorAll" in this.currentNode))
48
- return;
49
- const e = Array.from(
50
- this.currentNode.querySelectorAll(".product-card-wrapper")
51
- );
52
- if (e.length === 0)
53
- return;
54
- const t = this.api.getDocumentModifier();
55
- e.forEach((n) => {
56
- t.modifyHtml(n).setStyle("background-color", r);
57
- }), t.apply(new a("Update card background color"));
58
- }
59
- _listenToFormUpdates() {
60
- this.api.onValueChanged(o.CARD_BACKGROUND_COLOR, (r) => {
61
- this._onCardBackgroundColorChange(r);
62
- });
63
- }
64
- }
65
- export {
66
- c as CARD_BACKGROUND_COLOR_CONTROL_ID,
67
- u as CardBackgroundColorControl
68
- };