@useinsider/guido 2.0.0-beta.a716078 → 2.0.0-beta.a7d687e

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 (256) hide show
  1. package/dist/@types/config/schemas.js +53 -39
  2. package/dist/components/Guido.vue.js +3 -3
  3. package/dist/components/Guido.vue2.js +57 -59
  4. package/dist/components/organisms/base/Toaster.vue.js +6 -6
  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 +10 -14
  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 +7 -7
  15. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue2.js +2 -2
  16. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue.js +11 -10
  17. package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue.js +12 -10
  18. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue.js +11 -10
  19. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue2.js +15 -14
  20. package/dist/components/organisms/header/EditorActions.vue.js +21 -0
  21. package/dist/components/organisms/header/EditorActions.vue2.js +41 -0
  22. package/dist/components/organisms/header/EditorToolbar.vue.js +18 -0
  23. package/dist/components/organisms/header/EditorToolbar.vue2.js +17 -0
  24. package/dist/components/organisms/header/HeaderWrapper.vue.js +6 -5
  25. package/dist/components/organisms/header/LeftSlot.vue.js +11 -11
  26. package/dist/components/organisms/header/LeftSlot.vue2.js +11 -12
  27. package/dist/components/organisms/header/MiddleSlot.vue.js +7 -7
  28. package/dist/components/organisms/header/MiddleSlot.vue2.js +11 -15
  29. package/dist/components/organisms/header/RightSlot.vue.js +11 -14
  30. package/dist/components/organisms/header/RightSlot.vue2.js +13 -30
  31. package/dist/components/organisms/header/version-history/VersionHistory.vue.js +5 -5
  32. package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +15 -15
  33. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.js +1 -1
  34. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue2.js +20 -19
  35. package/dist/composables/useActionsApi.js +33 -30
  36. package/dist/composables/useConfig.js +29 -27
  37. package/dist/composables/useSave.js +13 -11
  38. package/dist/config/migrator/recommendationMigrator.js +2 -2
  39. package/dist/enums/academy.js +8 -0
  40. package/dist/enums/onboarding.js +1 -2
  41. package/dist/enums/unsubscribe.js +20 -21
  42. package/dist/extensions/Blocks/Items/controls/cardComposition.js +13 -4
  43. package/dist/extensions/Blocks/Recommendation/block.js +40 -6
  44. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +4 -0
  45. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +4 -0
  46. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +64 -0
  47. package/dist/extensions/Blocks/Recommendation/constants/layout.js +20 -0
  48. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +19 -0
  49. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +64 -0
  50. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +80 -0
  51. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +232 -0
  52. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +19 -0
  53. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +94 -0
  54. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +110 -0
  55. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +204 -0
  56. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +54 -0
  57. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +201 -0
  58. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +74 -0
  59. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +118 -0
  60. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +71 -0
  61. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +282 -0
  62. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +46 -0
  63. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +76 -0
  64. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +44 -0
  65. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +48 -0
  66. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +73 -0
  67. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +73 -0
  68. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +48 -0
  69. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +73 -0
  70. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +73 -0
  71. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +44 -0
  72. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +222 -0
  73. package/dist/extensions/Blocks/Recommendation/extension.js +40 -43
  74. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +13 -4
  75. package/dist/extensions/Blocks/Recommendation/services/configService.js +239 -0
  76. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +128 -72
  77. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +40 -35
  78. package/dist/extensions/Blocks/Recommendation/templates/horizontal/elementRenderer.js +174 -0
  79. package/dist/extensions/Blocks/Recommendation/templates/horizontal/template.js +73 -0
  80. package/dist/extensions/Blocks/Recommendation/templates/index.js +12 -0
  81. package/dist/extensions/Blocks/Recommendation/templates/utils.js +121 -0
  82. package/dist/extensions/Blocks/Recommendation/templates/vertical/elementRenderer.js +233 -0
  83. package/dist/extensions/Blocks/Recommendation/templates/vertical/migration.js +251 -0
  84. package/dist/extensions/Blocks/Recommendation/templates/vertical/template.js +69 -0
  85. package/dist/extensions/Blocks/Recommendation/types/nodeConfig.js +6 -0
  86. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
  87. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +36 -0
  88. package/dist/extensions/Blocks/Recommendation/utils/priceFormatter.js +29 -0
  89. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +46 -0
  90. package/dist/extensions/Blocks/Unsubscribe/extension.js +9 -9
  91. package/dist/extensions/Blocks/common-control.js +6 -7
  92. package/dist/extensions/Blocks/controlFactories.js +155 -121
  93. package/dist/guido.css +1 -1
  94. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +424 -297
  95. package/dist/package.json.js +1 -1
  96. package/dist/services/recommendationApi.js +10 -9
  97. package/dist/src/@types/config/index.d.ts +2 -2
  98. package/dist/src/@types/config/schemas.d.ts +26 -0
  99. package/dist/src/@types/config/types.d.ts +7 -1
  100. package/dist/src/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue.d.ts +2 -0
  101. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +4 -0
  102. package/dist/src/components/organisms/header/EditorToolbar.vue.d.ts +2 -0
  103. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
  104. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +1 -1
  105. package/dist/src/composables/useActionsApi.d.ts +1 -0
  106. package/dist/src/composables/useConfig.d.ts +6 -0
  107. package/dist/src/enums/academy.d.ts +12 -0
  108. package/dist/src/enums/onboarding.d.ts +0 -1
  109. package/dist/src/enums/unsubscribe.d.ts +0 -1
  110. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +34 -0
  111. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +13 -0
  112. package/dist/src/extensions/Blocks/Recommendation/{constants.d.ts → constants/controlIds.d.ts} +19 -11
  113. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +49 -0
  114. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +13 -0
  115. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +35 -0
  116. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +31 -0
  117. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +143 -0
  118. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +31 -0
  119. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +95 -0
  120. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +35 -0
  121. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +24 -0
  122. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +36 -0
  123. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +29 -0
  124. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +45 -0
  125. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +22 -0
  126. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +56 -0
  127. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +24 -0
  128. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +42 -0
  129. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +23 -0
  130. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +209 -0
  131. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +97 -0
  132. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +16 -0
  133. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +95 -0
  134. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +100 -0
  135. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +15 -0
  136. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +15 -0
  137. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +100 -0
  138. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +15 -0
  139. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +15 -0
  140. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +95 -0
  141. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +83 -0
  142. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +9 -0
  143. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +151 -0
  144. package/dist/src/extensions/Blocks/Recommendation/services/index.d.ts +6 -0
  145. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +17 -16
  146. package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/elementRenderer.d.ts +8 -0
  147. package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/migration.d.ts +25 -0
  148. package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/template.d.ts +18 -0
  149. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +39 -0
  150. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +54 -0
  151. package/dist/src/extensions/Blocks/Recommendation/templates/vertical/elementRenderer.d.ts +20 -0
  152. package/dist/src/extensions/Blocks/Recommendation/templates/{migrationTemplate.d.ts → vertical/migration.d.ts} +11 -4
  153. package/dist/src/extensions/Blocks/Recommendation/templates/vertical/template.d.ts +33 -0
  154. package/dist/src/extensions/Blocks/Recommendation/types/index.d.ts +7 -0
  155. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +154 -0
  156. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +19 -0
  157. package/dist/src/extensions/Blocks/Recommendation/utils/priceFormatter.d.ts +33 -0
  158. package/dist/src/extensions/Blocks/Recommendation/utils/stylePreserver.d.ts +113 -0
  159. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +77 -0
  160. package/dist/src/extensions/Blocks/common-control.d.ts +1 -1
  161. package/dist/src/stores/config.d.ts +147 -1
  162. package/dist/src/stores/editor.d.ts +21 -0
  163. package/dist/static/assets/desktop/desktop-mockup-center.svg.js +4 -0
  164. package/dist/static/assets/desktop/desktop-mockup-left.svg.js +4 -0
  165. package/dist/static/assets/desktop/desktop-mockup-right.svg.js +4 -0
  166. package/dist/static/assets/mobile/email-mockup.svg.js +4 -0
  167. package/dist/static/assets/mobile/inbox-mockup.svg.js +4 -0
  168. package/dist/static/styles/components/button.css.js +1 -1
  169. package/dist/static/styles/components/wide-panel.css.js +1 -5
  170. package/dist/static/styles/customEditorStyle.css.js +38 -2
  171. package/dist/stores/config.js +7 -0
  172. package/dist/stores/editor.js +1 -0
  173. package/dist/utils/templatePreparation.js +17 -17
  174. package/package.json +3 -3
  175. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue.js +0 -17
  176. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue2.js +0 -20
  177. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +0 -103
  178. package/dist/extensions/Blocks/Recommendation/constants.js +0 -5
  179. package/dist/extensions/Blocks/Recommendation/control.js +0 -306
  180. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +0 -13
  181. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +0 -13
  182. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +0 -13
  183. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +0 -13
  184. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +0 -13
  185. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +0 -13
  186. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +0 -13
  187. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +0 -13
  188. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +0 -13
  189. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +0 -13
  190. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +0 -13
  191. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +0 -13
  192. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +0 -13
  193. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +0 -13
  194. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +0 -13
  195. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +0 -13
  196. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +0 -13
  197. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +0 -13
  198. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +0 -13
  199. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +0 -13
  200. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +0 -13
  201. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +0 -13
  202. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +0 -13
  203. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +0 -13
  204. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +0 -13
  205. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +0 -13
  206. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +0 -13
  207. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +0 -13
  208. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +0 -13
  209. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +0 -13
  210. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +0 -13
  211. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +0 -13
  212. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +0 -13
  213. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +0 -13
  214. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +0 -160
  215. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +0 -152
  216. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +0 -180
  217. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +0 -28
  218. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +0 -35
  219. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +0 -5
  220. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +0 -5
  221. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +0 -5
  222. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +0 -5
  223. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +0 -5
  224. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +0 -5
  225. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +0 -5
  226. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +0 -5
  227. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +0 -5
  228. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +0 -5
  229. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +0 -5
  230. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +0 -5
  231. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +0 -5
  232. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +0 -5
  233. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +0 -5
  234. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +0 -5
  235. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +0 -5
  236. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +0 -5
  237. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +0 -5
  238. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +0 -5
  239. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +0 -5
  240. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +0 -5
  241. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +0 -5
  242. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +0 -5
  243. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +0 -5
  244. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +0 -5
  245. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +0 -5
  246. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +0 -5
  247. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +0 -5
  248. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +0 -5
  249. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +0 -5
  250. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +0 -5
  251. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +0 -5
  252. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +0 -5
  253. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +0 -16
  254. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +0 -44
  255. package/dist/static/assets/inbox-mockup.svg.js +0 -4
  256. package/dist/static/assets/phone-mockup.svg.js +0 -4
@@ -1,13 +1,14 @@
1
- import { RecommendationFeedSourceMaps as n, PriceAttributes as u } from "../../../../enums/extensions/recommendationBlock.js";
2
- import { useRecommendationApi as l } from "../../../../services/recommendationApi.js";
3
- import { useConfigStore as c } from "../../../../stores/config.js";
4
- import { defineStore as p } from "pinia";
5
- import { generateCompleteFilterQuery as m } from "../utils/filterUtil.js";
6
- const a = l(), d = () => ({
1
+ import { RecommendationFeedSourceMaps as l, PriceAttributes as p } from "../../../../enums/extensions/recommendationBlock.js";
2
+ import { useRecommendationApi as m } from "../../../../services/recommendationApi.js";
3
+ import { useConfigStore as f } from "../../../../stores/config.js";
4
+ import { defineStore as d } from "pinia";
5
+ import { DEFAULT_CARDS_IN_ROW as g } from "../constants/layout.js";
6
+ import { generateCompleteFilterQuery as c } from "../utils/filterUtil.js";
7
+ const s = m(), h = () => ({
7
8
  recommendationCampaignUrls: {},
8
9
  recommendationProducts: [],
9
10
  recommendationConfigs: {
10
- cardsInRow: 3,
11
+ cardsInRow: g,
11
12
  currencySettings: {
12
13
  name: "USD",
13
14
  value: "USD",
@@ -125,7 +126,7 @@ const a = l(), d = () => ({
125
126
  strategy: "mostPopular",
126
127
  textTrimming: !0,
127
128
  unresponsive: !1,
128
- size: "9"
129
+ size: "6"
129
130
  },
130
131
  activePredictiveAlgorithms: [],
131
132
  languages: {},
@@ -134,8 +135,8 @@ const a = l(), d = () => ({
134
135
  filterSelectionDrawerStatus: !1,
135
136
  filterList: {},
136
137
  filterGroup: 1
137
- }), y = p("guidoRecommendationExtension", {
138
- state: () => d(),
138
+ }), R = d("guidoRecommendationExtension", {
139
+ state: () => h(),
139
140
  getters: {
140
141
  hasFilters: (e) => !!e.recommendationConfigs.filters.length,
141
142
  getFilterGroupCount: (e) => {
@@ -145,7 +146,7 @@ const a = l(), d = () => ({
145
146
  getActivePredictiveAlgorithms: (e) => {
146
147
  const t = [];
147
148
  return e.activePredictiveAlgorithms.forEach((r) => {
148
- t.push(...n.filter((i) => i.id === r));
149
+ t.push(...l.filter((i) => i.id === r));
149
150
  }), t.map((r) => ({
150
151
  text: r.name,
151
152
  value: r.key
@@ -160,7 +161,7 @@ const a = l(), d = () => ({
160
161
  value: t.text
161
162
  })),
162
163
  getFilterList: (e) => Object.values(e.filterList).map((t) => {
163
- const r = t.type === "defaultAttribute", i = u.includes(t.attributeName);
164
+ const r = t.type === "defaultAttribute", i = p.includes(t.attributeName);
164
165
  let o = r ? t.attributeName : `product_attributes.${t.attributeName}`;
165
166
  return o = i ? `${o}.${e.recommendationConfigs.currencySettings.value}` : o, {
166
167
  text: t.displayName,
@@ -178,13 +179,13 @@ const a = l(), d = () => ({
178
179
  activePredictiveAlgorithms: e,
179
180
  languages: t,
180
181
  currencies: r
181
- } = await a.fetchRecommendationCreateData();
182
+ } = await s.fetchRecommendationCreateData();
182
183
  this.activePredictiveAlgorithms = e, this.languages = t;
183
184
  const [i] = r;
184
185
  this.recommendationConfigs.currencySettings.name = i.text, this.recommendationConfigs.currencySettings.value = i.value, this.currencyList = r, this.filterStatus = !!this.recommendationConfigs.filters.length;
185
186
  },
186
187
  async fetchRecommendationFilters() {
187
- const e = await a.fetchRecommendationFilters();
188
+ const e = await s.fetchRecommendationFilters();
188
189
  this.filterList = e;
189
190
  },
190
191
  addFilterGroup(e) {
@@ -224,13 +225,15 @@ const a = l(), d = () => ({
224
225
  }
225
226
  },
226
227
  addFilter(e) {
227
- const t = [...this.recommendationConfigs.filters], r = t.findLastIndex((i) => i.filterGroup === e.filterGroup);
228
- r !== -1 ? t.splice(r + 1, 0, {
228
+ const t = [...this.recommendationConfigs.filters], i = t.filter(
229
+ (a) => a.filterGroup === e.filterGroup
230
+ ).length + 1, o = t.findLastIndex((a) => a.filterGroup === e.filterGroup);
231
+ o !== -1 ? t.splice(o + 1, 0, {
229
232
  ...e,
230
- filterNumber: r + 2
233
+ filterNumber: i
231
234
  }) : t.push({
232
235
  ...e,
233
- filterNumber: 1
236
+ filterNumber: i
234
237
  }), this.$patch({
235
238
  recommendationConfigs: {
236
239
  filters: t
@@ -238,30 +241,32 @@ const a = l(), d = () => ({
238
241
  });
239
242
  },
240
243
  generateFilterQuery() {
241
- return m(this.recommendationConfigs.filters);
244
+ return c(this.recommendationConfigs.filters);
242
245
  },
243
246
  async fetchRecommendationProducts() {
244
- var o;
245
- const e = this.generateFilterQuery(), t = ((o = n.find((s) => s.key === this.recommendationConfigs.strategy)) == null ? void 0 : o.path) || "", r = c(), i = await a.fetchRecommendationProducts(
246
- t,
247
- {
248
- // TODO: Here will be optimized and filled carefully
249
- locale: this.recommendationConfigs.language,
250
- currency: this.recommendationConfigs.currencySettings.value,
251
- partnerName: r.partnerName,
252
- productId: this.recommendationConfigs.strategy === "manualMerchandising" ? this.recommendationConfigs.productIds.join(",") : "{itemId}",
253
- size: this.recommendationConfigs.size,
254
- details: !0,
255
- campaignId: "{campaignId}",
256
- filter: e
257
- }
247
+ var u;
248
+ const e = this.recommendationConfigs.filters.filter((n) => n.isValid), t = c(e), r = ((u = l.find((n) => n.key === this.recommendationConfigs.strategy)) == null ? void 0 : u.path) || "", i = f(), o = {
249
+ // Note: {itemId} and {campaignId} are template placeholders replaced at runtime
250
+ locale: this.recommendationConfigs.language,
251
+ currency: this.recommendationConfigs.currencySettings.value,
252
+ partnerName: i.partnerName,
253
+ productId: this.recommendationConfigs.strategy === "manualMerchandising" ? this.recommendationConfigs.productIds.join(",") : "{itemId}",
254
+ size: this.recommendationConfigs.size,
255
+ details: !0,
256
+ campaignId: "{campaignId}",
257
+ filter: t
258
+ };
259
+ this.recommendationConfigs.shuffleProducts && (o.shuffle = !0);
260
+ const a = await s.fetchRecommendationProducts(
261
+ r,
262
+ o
258
263
  );
259
264
  this.$patch({
260
- recommendationProducts: i
265
+ recommendationProducts: a
261
266
  });
262
267
  }
263
268
  }
264
269
  });
265
270
  export {
266
- y as useRecommendationExtensionStore
271
+ R as useRecommendationExtensionStore
267
272
  };
@@ -0,0 +1,174 @@
1
+ import { RecommendationBlockId as o } from "../../constants/blockIds.js";
2
+ import { ATTR_PRODUCT_BUTTON as l, ATTR_PRODUCT_IMAGE as d, ATTR_PRODUCT_OMNIBUS_DISCOUNT as m, ATTR_PRODUCT_OMNIBUS_PRICE as u, ATTR_PRODUCT_OLD_PRICE as g, ATTR_PRODUCT_PRICE as f, ATTR_PRODUCT_NAME as x } from "../../constants/selectors.js";
3
+ import { useRecommendationExtensionStore as T } from "../../store/recommendation.js";
4
+ import { formatPrice as _ } from "../../utils/priceFormatter.js";
5
+ import { sanitizeImageUrl as y } from "../utils.js";
6
+ function p() {
7
+ const t = T(), { currencySettings: e } = t.recommendationConfigs;
8
+ return {
9
+ code: e.value,
10
+ symbol: e.symbol,
11
+ alignment: e.alignment === "0" ? "before" : "after",
12
+ decimalCount: parseInt(e.decimalCount) || 2,
13
+ decimalSeparator: e.decimalSeparator,
14
+ thousandSeparator: e.thousandSeparator
15
+ };
16
+ }
17
+ function a(t, e = "price") {
18
+ const n = p(), r = t[e], i = (r == null ? void 0 : r[n.code]) ?? Object.values(r ?? {})[0] ?? 0;
19
+ return _({
20
+ price: i,
21
+ currency: n
22
+ });
23
+ }
24
+ const P = {
25
+ /**
26
+ * Image cell - left column (120px fixed width)
27
+ * Has recommendation-attribute-row class and data attributes for Card Composition control
28
+ */
29
+ [d]: (t) => `
30
+ <td
31
+ width="120"
32
+ class="esd-block-image product-image-cell recommendation-attribute-row es-p5"
33
+ esd-extension-block-id="${o.IMAGE}"
34
+ data-attribute-type="${d}"
35
+ data-visibility="1"
36
+ align="center"
37
+ valign="middle">
38
+ <div style="position: relative; width: 100%; padding-bottom: 100%; overflow: hidden;">
39
+ <a
40
+ target="_blank"
41
+ href="${t.url}"
42
+ style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;">
43
+ <img
44
+ src="${y(t.image_url)}"
45
+ alt="${t.name}"
46
+ style="max-width: 100%; max-height: 100%; object-fit: contain; display: block;"
47
+ class="adapt-img product-image">
48
+ </a>
49
+ </div>
50
+ </td>
51
+ `,
52
+ /**
53
+ * Name element - row for info cell table
54
+ */
55
+ [x]: (t) => `
56
+ <tr>
57
+ <td
58
+ class="esd-block-text product-name"
59
+ esd-extension-block-id="${o.NAME}"
60
+ align="left">
61
+ <p contenteditable="false" style="font-size: 16px; color: #333333; font-weight: 600; margin: 0;">
62
+ <strong>${t.name}</strong>
63
+ </p>
64
+ </td>
65
+ </tr>
66
+ `,
67
+ /**
68
+ * Price element - row for info cell table
69
+ */
70
+ [f]: (t) => `
71
+ <tr>
72
+ <td
73
+ class="esd-block-text product-price"
74
+ esd-extension-block-id="${o.PRICE}"
75
+ align="left">
76
+ <p contenteditable="false" style="font-size: 16px; color: #333333; font-weight: bold; margin: 0;">
77
+ <strong>${a(t, "price")}</strong>
78
+ </p>
79
+ </td>
80
+ </tr>
81
+ `,
82
+ /**
83
+ * Old price element - row for info cell table
84
+ */
85
+ [g]: (t) => `
86
+ <tr>
87
+ <td
88
+ class="esd-block-text product-old-price"
89
+ esd-extension-block-id="${o.OLD_PRICE}"
90
+ align="left">
91
+ <p
92
+ contenteditable="false"
93
+ style="font-size: 14px; color: #999999; text-decoration: line-through; margin: 0;">
94
+ <strong>${a(t, "original_price")}</strong>
95
+ </p>
96
+ </td>
97
+ </tr>
98
+ `,
99
+ /**
100
+ * Omnibus price element - row for info cell table
101
+ */
102
+ [u]: (t) => `
103
+ <tr>
104
+ <td
105
+ class="esd-block-text product-omnibus-price"
106
+ data-text-before="Lowest 30-day price: "
107
+ data-text-after=""
108
+ esd-extension-block-id="${o.OMNIBUS_PRICE}"
109
+ align="left">
110
+ <p style="font-size: 12px; color: #666666; margin: 0;">
111
+ <span class="omnibus-text-before">Lowest 30-day price: </span>
112
+ <span class="omnibus-price-value">${a(t, "original_price")}</span>
113
+ <span class="omnibus-text-after"></span>
114
+ </p>
115
+ </td>
116
+ </tr>
117
+ `,
118
+ /**
119
+ * Omnibus discount element - row for info cell table
120
+ */
121
+ [m]: (t) => {
122
+ var s, c;
123
+ const e = p(), n = ((s = t.original_price) == null ? void 0 : s[e.code]) ?? Object.values(t.original_price ?? {})[0] ?? 0, r = ((c = t.price) == null ? void 0 : c[e.code]) ?? Object.values(t.price ?? {})[0] ?? 0, i = n > 0 ? Math.round((n - r) / n * 100) : 0, b = i > 0 ? `-${i}%` : "0%";
124
+ return `
125
+ <tr>
126
+ <td
127
+ class="esd-block-text product-omnibus-discount"
128
+ data-text-before=""
129
+ data-text-after=""
130
+ esd-extension-block-id="${o.OMNIBUS_DISCOUNT}"
131
+ align="left">
132
+ <p style="font-size: 12px; color: #666666; margin: 0;">
133
+ <span class="omnibus-text-before"></span>
134
+ <span class="omnibus-discount-value">${b}</span>
135
+ <span class="omnibus-text-after"></span>
136
+ </p>
137
+ </td>
138
+ </tr>
139
+ `;
140
+ },
141
+ /**
142
+ * Button cell - right column (100px fixed width)
143
+ * Has recommendation-attribute-row class and data attributes for Card Composition control
144
+ */
145
+ [l]: (t) => `
146
+ <td
147
+ width="100"
148
+ class="esd-block-button button-cell recommendation-attribute-row product-button es-p5l es-p5r"
149
+ esd-extension-block-id="${o.BUTTON}"
150
+ data-attribute-type="${l}"
151
+ data-visibility="1"
152
+ align="center"
153
+ valign="middle">
154
+ <span
155
+ class="es-button-border"
156
+ style="
157
+ border-width: 1px;
158
+ background: rgb(217, 234, 211);
159
+ border-color: rgb(106, 168, 79);
160
+ ">
161
+ <a
162
+ href="${t.url}"
163
+ target="_blank"
164
+ class="es-button buy-button"
165
+ style="color: rgb(56, 118, 29); background: rgb(217, 234, 211); padding: 5px 30px;">
166
+ Buy
167
+ </a>
168
+ </span>
169
+ </td>
170
+ `
171
+ };
172
+ export {
173
+ P as horizontalElementRenderer
174
+ };
@@ -0,0 +1,73 @@
1
+ import { ATTR_PRODUCT_IMAGE as E, ATTR_PRODUCT_NAME as s, ATTR_PRODUCT_OLD_PRICE as c, ATTR_PRODUCT_PRICE as a, ATTR_PRODUCT_OMNIBUS_PRICE as d, ATTR_PRODUCT_OMNIBUS_DISCOUNT as T, ATTR_PRODUCT_BUTTON as N } from "../../constants/selectors.js";
2
+ import { spacer as $, DEFAULT_CARD_VISIBILITY as n } from "../utils.js";
3
+ import { horizontalElementRenderer as o } from "./elementRenderer.js";
4
+ const f = `
5
+ <tr class="recommendation-product-row">
6
+ <td style="padding: 0 5px;">
7
+ <table
8
+ width="100%"
9
+ cellpadding="0"
10
+ cellspacing="0"
11
+ border="0"
12
+ class="product-card-wrapper">
13
+ <tbody>
14
+ <tr>
15
+ {-{-PRODUCT_CONTENT-}-}
16
+ </tr>
17
+ </tbody>
18
+ </table>
19
+ </td>
20
+ </tr>
21
+ `;
22
+ function V(t) {
23
+ const i = o[E](t), l = n[s], r = n[c], R = n[a], C = n[d], b = n[T], e = (w, A, p) => {
24
+ const I = p ? "" : ' style="display: none;"', g = w.replace(/<tr>/, "").replace(/<\/tr>/, "");
25
+ return `<tr
26
+ class="recommendation-attribute-row"
27
+ data-attribute-type="${A}"
28
+ data-visibility="${p ? "1" : "0"}"${I}>${g}</tr>`;
29
+ }, m = e(
30
+ o[s](t),
31
+ s,
32
+ l
33
+ ), _ = e(
34
+ o[c](t),
35
+ c,
36
+ r
37
+ ), O = e(
38
+ o[a](t),
39
+ a,
40
+ R
41
+ ), P = e(
42
+ o[d](t),
43
+ d,
44
+ C
45
+ ), u = e(
46
+ o[T](t),
47
+ T,
48
+ b
49
+ ), D = `
50
+ <td class="product-info-cell" valign="middle" style="padding: 15px;">
51
+ <table cellpadding="0" cellspacing="0" role="presentation" width="100%">
52
+ <tbody>
53
+ ${m}
54
+ ${_}
55
+ ${O}
56
+ ${P}
57
+ ${u}
58
+ </tbody>
59
+ </table>
60
+ </td>
61
+ `, U = o[N](t), y = i + D + U;
62
+ return f.replace("{-{-PRODUCT_CONTENT-}-}", y);
63
+ }
64
+ function M(t) {
65
+ return t.map((i, l) => {
66
+ const r = V(i);
67
+ return l > 0 ? $ + r : r;
68
+ }).join("");
69
+ }
70
+ export {
71
+ V as getHorizontalProductCard,
72
+ M as prepareProductRows
73
+ };
@@ -0,0 +1,12 @@
1
+ import { DEFAULT_PRODUCTS_PER_ROW as s } from "../constants/layout.js";
2
+ import { prepareProductRows as R } from "./horizontal/template.js";
3
+ import { prepareProductRows as a } from "./vertical/template.js";
4
+ function P(r, o, p = {}) {
5
+ if (o === "horizontal")
6
+ return R(r);
7
+ const { productsPerRow: t = s, composition: e } = p;
8
+ return a(r, t, e);
9
+ }
10
+ export {
11
+ P as prepareProductRows
12
+ };
@@ -0,0 +1,121 @@
1
+ import { ATTR_PRODUCT_IMAGE as r, ATTR_PRODUCT_NAME as o, ATTR_PRODUCT_OLD_PRICE as a, ATTR_PRODUCT_PRICE as c, ATTR_PRODUCT_OMNIBUS_PRICE as l, ATTR_PRODUCT_OMNIBUS_DISCOUNT as n, ATTR_PRODUCT_BUTTON as s } from "../constants/selectors.js";
2
+ const _ = {
3
+ TITLE: "You May Also Like!"
4
+ }, u = [
5
+ r,
6
+ o,
7
+ a,
8
+ c,
9
+ l,
10
+ n,
11
+ s
12
+ ], m = {
13
+ [r]: !0,
14
+ [o]: !0,
15
+ [c]: !0,
16
+ [a]: !0,
17
+ [l]: !1,
18
+ [n]: !1,
19
+ [s]: !0
20
+ }, d = `
21
+ <tr>
22
+ <td class="spacer" style="height: 10px;"></td>
23
+ </tr>
24
+ `, i = "https://email-static.useinsider.com/stripo/modules/email-recommendation-v3/assets/images/image-placeholder.png";
25
+ function g(t) {
26
+ return !t || typeof t != "string" || t.trim() === "" ? i : t.startsWith("http://") ? t.replace("http://", "https://") : t;
27
+ }
28
+ function e(t) {
29
+ return {
30
+ name: "Product Name",
31
+ image_url: i,
32
+ price: { USD: 18 },
33
+ original_price: { USD: 20 },
34
+ discount: { USD: 2 },
35
+ url: `https://example.com/product/${t}`,
36
+ item_id: t,
37
+ in_stock: 1,
38
+ locale: "en",
39
+ product_attributes: {},
40
+ category: []
41
+ };
42
+ }
43
+ function b() {
44
+ return [
45
+ e("1"),
46
+ e("2"),
47
+ e("3"),
48
+ e("4"),
49
+ e("5"),
50
+ e("6")
51
+ ];
52
+ }
53
+ function R(t = "vertical") {
54
+ return `
55
+ <td
56
+ align="left"
57
+ class="ins-recommendation-v3-block-v2 esd-block-recommendation-v3-block es-p20"${t === "horizontal" ? `
58
+ data-layout="horizontal"` : ""}>
59
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
60
+ <tr>
61
+ <td align="center">
62
+ <table
63
+ class="container"
64
+ width="100%"
65
+ cellpadding="0"
66
+ cellspacing="0"
67
+ border="0">
68
+ <tbody>
69
+ <tr>
70
+ <td>
71
+ <table
72
+ width="100%"
73
+ cellpadding="0"
74
+ cellspacing="0"
75
+ border="0">
76
+ <tbody>
77
+ <tr>
78
+ <td
79
+ class="esd-block-text es-p10t es-p10b es-p20l es-p20r"
80
+ align="center">
81
+ <p style="font-size: 28px; color: #333333;">
82
+ <strong>{-{-TITLE-}-}</strong>
83
+ </p>
84
+ </td>
85
+ </tr>
86
+ </tbody>
87
+ </table>
88
+ </td>
89
+ </tr>
90
+ ${d}
91
+ <tr>
92
+ <td>
93
+ <table
94
+ class="ins-recommendation-product-container"
95
+ width="100%"
96
+ cellpadding="0"
97
+ cellspacing="0"
98
+ border="0"
99
+ >
100
+ {-{-PRODUCT_ROWS-}-}
101
+ </table>
102
+ </td>
103
+ </tr>
104
+ </tbody>
105
+ </table>
106
+ </td>
107
+ </tr>
108
+ </table>
109
+ </td>
110
+ `;
111
+ }
112
+ export {
113
+ _ as DEFAULTS,
114
+ u as DEFAULT_CARD_COMPOSITION,
115
+ m as DEFAULT_CARD_VISIBILITY,
116
+ i as PLACEHOLDER_IMAGE,
117
+ R as createBlockTemplate,
118
+ b as getDefaultProducts,
119
+ g as sanitizeImageUrl,
120
+ d as spacer
121
+ };