@useinsider/guido 2.0.0-beta.edc1f0a → 2.0.0-beta.f66b754

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 (282) hide show
  1. package/dist/@types/config/schemas.js +53 -39
  2. package/dist/components/organisms/email-preview/PreviewContainer.vue.js +3 -3
  3. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue.js +6 -6
  4. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue2.js +17 -13
  5. package/dist/components/organisms/email-preview/amp/AmpToggle.vue.js +6 -6
  6. package/dist/components/organisms/email-preview/amp/AmpToggle.vue2.js +14 -12
  7. package/dist/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue.js +18 -0
  8. package/dist/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue2.js +15 -0
  9. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue.js +16 -15
  10. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue2.js +14 -22
  11. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +3 -3
  12. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue.js +12 -11
  13. package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue.js +12 -10
  14. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue.js +11 -10
  15. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue2.js +15 -14
  16. package/dist/components/organisms/header/EditorActions.vue.js +21 -0
  17. package/dist/components/organisms/header/EditorActions.vue2.js +41 -0
  18. package/dist/components/organisms/header/EditorToolbar.vue.js +18 -0
  19. package/dist/components/organisms/header/EditorToolbar.vue2.js +17 -0
  20. package/dist/components/organisms/header/HeaderWrapper.vue.js +6 -5
  21. package/dist/components/organisms/header/LeftSlot.vue.js +9 -9
  22. package/dist/components/organisms/header/LeftSlot.vue2.js +12 -13
  23. package/dist/components/organisms/header/MiddleSlot.vue.js +7 -7
  24. package/dist/components/organisms/header/MiddleSlot.vue2.js +11 -15
  25. package/dist/components/organisms/header/RightSlot.vue.js +11 -14
  26. package/dist/components/organisms/header/RightSlot.vue2.js +13 -30
  27. package/dist/components/organisms/header/version-history/VersionHistory.vue.js +5 -5
  28. package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +15 -15
  29. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.js +1 -1
  30. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue2.js +20 -19
  31. package/dist/composables/useActionsApi.js +33 -30
  32. package/dist/composables/useConfig.js +29 -27
  33. package/dist/composables/useSave.js +13 -11
  34. package/dist/config/migrator/index.js +9 -8
  35. package/dist/config/migrator/itemsBlockMigrator.js +342 -0
  36. package/dist/config/migrator/recommendationMigrator.js +2 -2
  37. package/dist/enums/academy.js +8 -0
  38. package/dist/enums/onboarding.js +1 -2
  39. package/dist/enums/unsubscribe.js +20 -21
  40. package/dist/extensions/Blocks/Items/block.js +39 -40
  41. package/dist/extensions/Blocks/Items/controls/button/link.js +22 -29
  42. package/dist/extensions/Blocks/Items/controls/cardComposition.js +70 -59
  43. package/dist/extensions/Blocks/Items/controls/image/link.js +23 -30
  44. package/dist/extensions/Blocks/Items/controls/name/trimming.js +25 -25
  45. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +19 -17
  46. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +31 -29
  47. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +44 -38
  48. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +21 -19
  49. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +29 -27
  50. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +93 -0
  51. package/dist/extensions/Blocks/Items/controls/settingsControl.js +152 -143
  52. package/dist/extensions/Blocks/Items/enums/controlEnums.js +2 -2
  53. package/dist/extensions/Blocks/Items/enums/productEnums.js +43 -45
  54. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +4 -3
  55. package/dist/extensions/Blocks/Items/extension.js +7 -6
  56. package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +58 -49
  57. package/dist/extensions/Blocks/Items/layouts/vertical.html.js +48 -59
  58. package/dist/extensions/Blocks/Items/settingsPanel.js +27 -26
  59. package/dist/extensions/Blocks/Items/store/items-block.js +11 -7
  60. package/dist/extensions/Blocks/Items/template.js +366 -129
  61. package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +184 -0
  62. package/dist/extensions/Blocks/Recommendation/block.js +1 -1
  63. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +103 -0
  64. package/dist/extensions/Blocks/Recommendation/constants.js +5 -0
  65. package/dist/extensions/Blocks/Recommendation/control.js +306 -0
  66. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +13 -0
  67. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +13 -0
  68. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +13 -0
  69. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +13 -0
  70. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +13 -0
  71. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +13 -0
  72. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +13 -0
  73. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +13 -0
  74. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +13 -0
  75. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +13 -0
  76. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +13 -0
  77. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +13 -0
  78. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +13 -0
  79. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +13 -0
  80. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +13 -0
  81. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +13 -0
  82. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +13 -0
  83. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +13 -0
  84. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +13 -0
  85. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +13 -0
  86. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +13 -0
  87. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +13 -0
  88. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +13 -0
  89. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +13 -0
  90. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +13 -0
  91. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +13 -0
  92. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +13 -0
  93. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +13 -0
  94. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +13 -0
  95. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +13 -0
  96. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +13 -0
  97. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +13 -0
  98. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +13 -0
  99. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +13 -0
  100. package/dist/extensions/Blocks/Recommendation/extension.js +43 -40
  101. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +4 -13
  102. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +72 -128
  103. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +26 -29
  104. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +160 -0
  105. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +152 -0
  106. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +180 -0
  107. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
  108. package/dist/extensions/Blocks/Unsubscribe/extension.js +9 -9
  109. package/dist/extensions/Blocks/common-control.js +30 -32
  110. package/dist/extensions/Blocks/controlFactories.js +106 -130
  111. package/dist/guido.css +1 -1
  112. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +125 -116
  113. package/dist/src/@types/config/index.d.ts +2 -2
  114. package/dist/src/@types/config/schemas.d.ts +26 -0
  115. package/dist/src/@types/config/types.d.ts +7 -1
  116. package/dist/src/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue.d.ts +2 -0
  117. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +4 -0
  118. package/dist/src/components/organisms/header/EditorToolbar.vue.d.ts +2 -0
  119. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
  120. package/dist/src/composables/useActionsApi.d.ts +1 -0
  121. package/dist/src/composables/useConfig.d.ts +6 -0
  122. package/dist/src/config/migrator/itemsBlockMigrator.d.ts +6 -0
  123. package/dist/src/enums/academy.d.ts +12 -0
  124. package/dist/src/enums/onboarding.d.ts +0 -1
  125. package/dist/src/enums/unsubscribe.d.ts +0 -1
  126. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -2
  127. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +9 -0
  128. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -2
  129. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +1 -1
  130. package/dist/src/extensions/Blocks/Items/controls/price/singlePrice.d.ts +18 -0
  131. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +0 -4
  132. package/dist/src/extensions/Blocks/Items/enums/controlEnums.d.ts +1 -0
  133. package/dist/src/extensions/Blocks/Items/enums/productEnums.d.ts +24 -26
  134. package/dist/src/extensions/Blocks/Items/enums/settingsEnums.d.ts +1 -0
  135. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +2 -0
  136. package/dist/src/extensions/Blocks/Items/template.d.ts +22 -1
  137. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +73 -0
  138. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +28 -0
  139. package/dist/src/extensions/Blocks/Recommendation/{constants/controlIds.d.ts → constants.d.ts} +11 -19
  140. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +35 -0
  141. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +5 -0
  142. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +5 -0
  143. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +5 -0
  144. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +5 -0
  145. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +5 -0
  146. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +5 -0
  147. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +5 -0
  148. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +5 -0
  149. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +5 -0
  150. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +5 -0
  151. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +5 -0
  152. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +5 -0
  153. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +5 -0
  154. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +5 -0
  155. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +5 -0
  156. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +5 -0
  157. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +5 -0
  158. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +5 -0
  159. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +5 -0
  160. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +5 -0
  161. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +5 -0
  162. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +5 -0
  163. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +5 -0
  164. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +5 -0
  165. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +5 -0
  166. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +5 -0
  167. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +5 -0
  168. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +5 -0
  169. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +5 -0
  170. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +5 -0
  171. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +5 -0
  172. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +5 -0
  173. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +5 -0
  174. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +5 -0
  175. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +0 -9
  176. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +16 -17
  177. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +16 -0
  178. package/dist/src/extensions/Blocks/Recommendation/templates/{vertical/migration.d.ts → migrationTemplate.d.ts} +4 -11
  179. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +44 -0
  180. package/dist/src/extensions/Blocks/common-control.d.ts +10 -11
  181. package/dist/src/stores/config.d.ts +147 -1
  182. package/dist/src/stores/editor.d.ts +21 -0
  183. package/dist/static/assets/desktop/desktop-mockup-center.svg.js +4 -0
  184. package/dist/static/assets/desktop/desktop-mockup-left.svg.js +4 -0
  185. package/dist/static/assets/desktop/desktop-mockup-right.svg.js +4 -0
  186. package/dist/static/assets/mobile/email-mockup.svg.js +4 -0
  187. package/dist/static/assets/mobile/inbox-mockup.svg.js +4 -0
  188. package/dist/static/styles/components/button.css.js +1 -1
  189. package/dist/static/styles/components/wide-panel.css.js +5 -1
  190. package/dist/static/styles/customEditorStyle.css.js +2 -38
  191. package/dist/stores/config.js +7 -0
  192. package/dist/stores/editor.js +1 -0
  193. package/dist/utils/pairProductVariables.js +61 -58
  194. package/dist/utils/templatePreparation.js +17 -17
  195. package/package.json +1 -1
  196. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue.js +0 -17
  197. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue2.js +0 -20
  198. package/dist/extensions/Blocks/Items/utils/configBlockUtils.js +0 -17
  199. package/dist/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.js +0 -28
  200. package/dist/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.js +0 -76
  201. package/dist/extensions/Blocks/Items/utils/updateAttributes.js +0 -46
  202. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +0 -4
  203. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +0 -4
  204. package/dist/extensions/Blocks/Recommendation/constants/layout.js +0 -12
  205. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +0 -11
  206. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +0 -64
  207. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +0 -80
  208. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +0 -232
  209. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +0 -19
  210. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +0 -104
  211. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +0 -86
  212. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +0 -134
  213. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +0 -54
  214. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +0 -147
  215. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +0 -64
  216. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +0 -111
  217. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +0 -60
  218. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +0 -114
  219. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +0 -46
  220. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +0 -76
  221. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +0 -44
  222. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +0 -48
  223. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +0 -73
  224. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +0 -73
  225. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +0 -48
  226. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +0 -73
  227. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +0 -73
  228. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +0 -44
  229. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +0 -211
  230. package/dist/extensions/Blocks/Recommendation/templates/horizontal/elementRenderer.js +0 -157
  231. package/dist/extensions/Blocks/Recommendation/templates/horizontal/template.js +0 -72
  232. package/dist/extensions/Blocks/Recommendation/templates/index.js +0 -12
  233. package/dist/extensions/Blocks/Recommendation/templates/utils.js +0 -173
  234. package/dist/extensions/Blocks/Recommendation/templates/vertical/elementRenderer.js +0 -186
  235. package/dist/extensions/Blocks/Recommendation/templates/vertical/migration.js +0 -251
  236. package/dist/extensions/Blocks/Recommendation/templates/vertical/template.js +0 -62
  237. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +0 -36
  238. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +0 -46
  239. package/dist/src/extensions/Blocks/Items/utils/configBlockUtils.d.ts +0 -23
  240. package/dist/src/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.d.ts +0 -32
  241. package/dist/src/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.d.ts +0 -50
  242. package/dist/src/extensions/Blocks/Items/utils/updateAttributes.d.ts +0 -8
  243. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +0 -13
  244. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +0 -12
  245. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +0 -27
  246. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +0 -19
  247. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +0 -143
  248. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +0 -31
  249. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +0 -95
  250. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +0 -35
  251. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +0 -24
  252. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +0 -34
  253. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +0 -17
  254. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +0 -16
  255. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +0 -22
  256. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +0 -62
  257. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +0 -15
  258. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +0 -39
  259. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +0 -15
  260. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +0 -81
  261. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +0 -97
  262. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +0 -16
  263. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +0 -95
  264. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +0 -100
  265. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +0 -15
  266. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +0 -15
  267. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +0 -100
  268. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +0 -15
  269. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +0 -15
  270. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +0 -95
  271. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +0 -73
  272. package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/elementRenderer.d.ts +0 -8
  273. package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/migration.d.ts +0 -25
  274. package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/template.d.ts +0 -18
  275. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +0 -39
  276. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +0 -45
  277. package/dist/src/extensions/Blocks/Recommendation/templates/vertical/elementRenderer.d.ts +0 -7
  278. package/dist/src/extensions/Blocks/Recommendation/templates/vertical/template.d.ts +0 -33
  279. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +0 -19
  280. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +0 -77
  281. package/dist/static/assets/inbox-mockup.svg.js +0 -4
  282. package/dist/static/assets/phone-mockup.svg.js +0 -4
@@ -0,0 +1,184 @@
1
+ import { ModificationDescription as b } from "../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { DefaultConfigValues as r, SETTINGS_ENUMS as n, ItemInCartOptions as g } from "../enums/settingsEnums.js";
3
+ function d() {
4
+ return String(Date.now() + Math.floor(Math.random() * 1e3));
5
+ }
6
+ function f() {
7
+ return {
8
+ initialized: !0,
9
+ blockInstanceId: d(),
10
+ source: n.ITEMS_TYPE.CART_ITEMS,
11
+ type: n.ITEMS_TYPE.CART_ITEMS,
12
+ itemsSelectValue: r.cartItemsSelectControlValue,
13
+ orientation: n.ORIENTATION.VERTICAL,
14
+ nameTrimming: r.productNameTrimmingControlValue === "1",
15
+ nameControlEnabled: r.productNameControlEnabled === "1",
16
+ priceHideDiscount: r.productPriceHideDiscountControlValue === "1",
17
+ priceFormatted: r.productPriceFormattedControlValue === "1",
18
+ priceSinglePrice: !1,
19
+ priceCurrencySymbol: r.productPriceCurrencySymbolControlValue,
20
+ priceCurrencyLocation: r.productPriceCurrencyLocationControlValue,
21
+ priceControlOpened: r.productPriceControlOpened === "1",
22
+ priceOrientation: "horizontal",
23
+ quantityControlEnabled: r.productQuantityControlEnabled === "1",
24
+ buttonLink: r.productButtonLinkControlValue,
25
+ imageLink: r.productImageLinkControlValue,
26
+ buttonLabel: "Buy",
27
+ buttonFullWidth: !0,
28
+ // Default to full width (es-fw class)
29
+ imageVisible: r.productImageVisible === "1",
30
+ nameVisible: r.productNameVisible === "1",
31
+ quantityVisible: r.productQuantityVisible === "1",
32
+ priceVisible: r.productPriceVisible === "1",
33
+ originalPriceVisible: r.productOriginalPriceVisible === "1",
34
+ buttonVisible: r.productButtonVisible === "1"
35
+ };
36
+ }
37
+ function p(o) {
38
+ if (!o)
39
+ return null;
40
+ const t = o.closest(".items-block-v2");
41
+ return t || o.closest(".esd-cart-items-block");
42
+ }
43
+ function m(o) {
44
+ return o ? {
45
+ CartItems: n.ITEMS_TYPE.CART_ITEMS,
46
+ BrowsedItems: n.ITEMS_TYPE.BROWSED_ITEMS,
47
+ PurchasedItems: n.ITEMS_TYPE.PURCHASED_ITEMS,
48
+ // Also handle already correct formats
49
+ CART_ITEMS: n.ITEMS_TYPE.CART_ITEMS,
50
+ BROWSED_ITEMS: n.ITEMS_TYPE.BROWSED_ITEMS,
51
+ PURCHASED_ITEMS: n.ITEMS_TYPE.PURCHASED_ITEMS
52
+ }[o] || n.ITEMS_TYPE.CART_ITEMS : n.ITEMS_TYPE.CART_ITEMS;
53
+ }
54
+ function C(o, t) {
55
+ if (!o)
56
+ return r.cartItemsSelectControlValue;
57
+ if (o.includes("{{"))
58
+ return o;
59
+ if (/^\d+$/.test(o)) {
60
+ const e = parseInt(o) - 1, i = g[t];
61
+ if (i && i[e])
62
+ return i[e].value;
63
+ }
64
+ return r.cartItemsSelectControlValue;
65
+ }
66
+ function I(o) {
67
+ const t = o.querySelector("esd-config-block");
68
+ if (!t)
69
+ return null;
70
+ const e = (c, a) => c == null ? a : c === "1" || c === "true", i = (c, a) => c || a, l = t.getAttribute("data-type"), u = m(l), s = t.getAttribute("data-cart_items_select_control_value"), _ = C(s, u);
71
+ return {
72
+ initialized: e(t.getAttribute("data-initialized"), !1),
73
+ blockInstanceId: i(
74
+ t.getAttribute("data-block-instance-id"),
75
+ d()
76
+ ),
77
+ source: u,
78
+ type: u,
79
+ itemsSelectValue: _,
80
+ orientation: t.getAttribute("data-card_orientation_control_value") || n.ORIENTATION.VERTICAL,
81
+ nameTrimming: e(
82
+ t.getAttribute("data-product_name_control_trim"),
83
+ !0
84
+ ),
85
+ nameControlEnabled: e(
86
+ t.getAttribute("data-product_name_control_enabled"),
87
+ !0
88
+ ),
89
+ priceHideDiscount: e(
90
+ t.getAttribute("data-product_price_control_nodup"),
91
+ !0
92
+ ),
93
+ priceFormatted: e(
94
+ t.getAttribute("data-product_price_control_formated"),
95
+ !0
96
+ ),
97
+ priceSinglePrice: e(
98
+ t.getAttribute("data-product_price_control_single_price"),
99
+ !1
100
+ ),
101
+ priceCurrencySymbol: i(
102
+ t.getAttribute("data-product_price_currency_symbol"),
103
+ r.productPriceCurrencySymbolControlValue
104
+ ),
105
+ priceCurrencyLocation: i(
106
+ t.getAttribute("data-product_price_currency_location"),
107
+ r.productPriceCurrencyLocationControlValue
108
+ ),
109
+ priceControlOpened: e(
110
+ t.getAttribute("data-product_price_control_opened"),
111
+ !0
112
+ ),
113
+ priceOrientation: t.getAttribute("data-product_original_price_control_orientation") || "horizontal",
114
+ quantityControlEnabled: e(
115
+ t.getAttribute("data-product_quantity_control_enabled"),
116
+ !0
117
+ ),
118
+ buttonLink: i(
119
+ t.getAttribute("data-product_button_link"),
120
+ r.productButtonLinkControlValue
121
+ ),
122
+ imageLink: i(
123
+ t.getAttribute("data-product_image_link"),
124
+ r.productImageLinkControlValue
125
+ ),
126
+ buttonLabel: i(
127
+ t.getAttribute("data-product_button_control_label"),
128
+ "Buy"
129
+ ),
130
+ buttonFullWidth: e(
131
+ t.getAttribute("data-product_button_control_atw"),
132
+ !0
133
+ // Default to full width
134
+ ),
135
+ imageVisible: e(
136
+ t.getAttribute("data-product_image_control_enabled"),
137
+ !0
138
+ ),
139
+ nameVisible: e(
140
+ t.getAttribute("data-product_name_control_enabled"),
141
+ !0
142
+ ),
143
+ quantityVisible: e(
144
+ t.getAttribute("data-product_quantity_visible"),
145
+ !0
146
+ ),
147
+ priceVisible: e(
148
+ t.getAttribute("data-product_price_visible"),
149
+ !0
150
+ ),
151
+ originalPriceVisible: e(
152
+ t.getAttribute("data-product_original_price_control_enabled"),
153
+ !0
154
+ ),
155
+ buttonVisible: e(
156
+ t.getAttribute("data-product_button_visible"),
157
+ !0
158
+ )
159
+ };
160
+ }
161
+ function S(o) {
162
+ const t = p(o);
163
+ if (!t)
164
+ return null;
165
+ const e = t.getNodeConfig();
166
+ if (e && e.initialized)
167
+ return e;
168
+ const i = I(t);
169
+ return i || null;
170
+ }
171
+ function A(o, t, e) {
172
+ const i = p(o);
173
+ if (!i)
174
+ return;
175
+ const u = { ...i.getNodeConfig() || {}, ...e };
176
+ t.getDocumentModifier().modifyHtml(i).setNodeConfig(u).apply(new b("Update Items block configuration"));
177
+ }
178
+ export {
179
+ d as generateBlockInstanceId,
180
+ f as getDefaultItemsBlockConfig,
181
+ S as getItemsBlockConfig,
182
+ p as getItemsBlockContainer,
183
+ A as setItemsBlockConfig
184
+ };
@@ -1,5 +1,5 @@
1
1
  import { Block as e, BlockCompositionType as t } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { getDefaultTemplate as o } from "./templates/vertical/template.js";
2
+ import { getDefaultTemplate as o } from "./templates/blockTemplate.js";
3
3
  const n = "recommendation-block";
4
4
  class m extends e {
5
5
  constructor() {
@@ -0,0 +1,103 @@
1
+ var m = Object.defineProperty;
2
+ var y = (n, o, i) => o in n ? m(n, o, { enumerable: !0, configurable: !0, writable: !0, value: i }) : n[o] = i;
3
+ var a = (n, o, i) => y(n, typeof o != "symbol" ? o + "" : o, i);
4
+ import { ModificationDescription as u } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
+ import { CommonControl as b } from "../common-control.js";
6
+ const h = "ui-elements-recommendation-card-composition", s = [
7
+ { key: "productImage", label: "Product Image", visible: !0 },
8
+ { key: "productName", label: "Product Name", visible: !0 },
9
+ { key: "productPrice", label: "Product Price", visible: !0 },
10
+ { key: "productOriginalPrice", label: "Product Original Price", visible: !0 },
11
+ { key: "productButton", label: "Product Button", visible: !0 }
12
+ ];
13
+ class g extends b {
14
+ constructor() {
15
+ super(...arguments);
16
+ a(this, "currentComposition", []);
17
+ a(this, "currentVisibility", {});
18
+ }
19
+ getId() {
20
+ return h;
21
+ }
22
+ getTemplate() {
23
+ const i = s.map((e) => ({
24
+ key: e.key,
25
+ label: e.label,
26
+ content: `
27
+ <div style="display: flex; align-items: center; justify-content: space-between;
28
+ padding: 8px; gap: 8px;">
29
+ <span style="flex: 1;">${e.label}</span>
30
+ ${this._GuToggle(`visibility_${e.key}`)}
31
+ </div>
32
+ `
33
+ }));
34
+ return `
35
+ <div class="container">
36
+ ${this._GuLabel({ text: "Card Element Order & Visibility" })}
37
+ ${this._GuOrderable("cardComposition", i)}
38
+ </div>
39
+ `;
40
+ }
41
+ onRender() {
42
+ this._initializeComposition(), this.api.onValueChanged("cardComposition", (i) => {
43
+ this.currentComposition = i, this._applyCompositionToBlock(i);
44
+ }), s.forEach((i) => {
45
+ this.api.onValueChanged(`visibility_${i.key}`, (e) => {
46
+ this.currentVisibility[i.key] = e, this._applyVisibilityToBlock();
47
+ });
48
+ });
49
+ }
50
+ onTemplateNodeUpdated(i) {
51
+ super.onTemplateNodeUpdated(i), this._initializeComposition();
52
+ }
53
+ /**
54
+ * Initialize the composition order and visibility from the block or use defaults
55
+ */
56
+ _initializeComposition() {
57
+ var p;
58
+ const i = (p = this.currentNode) == null ? void 0 : p.querySelector(".ins-recommendation-v3-block-v2");
59
+ let e = null, l = null;
60
+ if (i && "getAttribute" in i && (e = i.getAttribute("data-card-composition"), l = i.getAttribute("data-card-visibility")), e) {
61
+ const t = e.split(",").filter(Boolean), r = s.map((c) => c.key);
62
+ t.every((c) => r.includes(c)) && t.length > 0 ? this.currentComposition = t : this.currentComposition = r;
63
+ } else
64
+ this.currentComposition = s.map((t) => t.key);
65
+ if (l)
66
+ try {
67
+ const t = JSON.parse(l);
68
+ this.currentVisibility = t;
69
+ } catch {
70
+ this.currentVisibility = s.reduce((t, r) => (t[r.key] = r.visible, t), {});
71
+ }
72
+ else
73
+ this.currentVisibility = s.reduce((t, r) => (t[r.key] = r.visible, t), {});
74
+ const d = {
75
+ cardComposition: this.currentComposition
76
+ };
77
+ s.forEach((t) => {
78
+ d[`visibility_${t.key}`] = this.currentVisibility[t.key] ?? !0;
79
+ }), this.api.updateValues(d);
80
+ }
81
+ /**
82
+ * Apply the reordered composition to the block's HTML structure
83
+ */
84
+ _applyCompositionToBlock(i) {
85
+ if (!this.currentNode)
86
+ return;
87
+ const e = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
88
+ e && this.api.getDocumentModifier().modifyHtml(e).setAttribute("data-card-composition", i.join(",")).apply(new u("Stored card composition order"));
89
+ }
90
+ /**
91
+ * Apply visibility changes to the block's HTML structure
92
+ */
93
+ _applyVisibilityToBlock() {
94
+ if (!this.currentNode)
95
+ return;
96
+ const i = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
97
+ i && this.api.getDocumentModifier().modifyHtml(i).setAttribute("data-card-visibility", JSON.stringify(this.currentVisibility)).apply(new u("Stored card visibility settings"));
98
+ }
99
+ }
100
+ export {
101
+ h as COMPOSITION_CONTROL_BLOCK_ID,
102
+ g as RecommendationCardCompositionControl
103
+ };
@@ -0,0 +1,5 @@
1
+ var o = /* @__PURE__ */ ((c) => (c.BUTTON = "recommendation-block-button", c.NAME = "recommendation-block-name", c.PRICE = "recommendation-block-price", c.OLD_PRICE = "recommendation-block-old-price", c.IMAGE = "recommendation-block-image", c))(o || {}), r = /* @__PURE__ */ ((c) => (c.BUTTON_ALIGN = "recommendation-block-button-align-control", c.BUTTON_BORDER = "recommendation-block-button-border-control", c.BUTTON_BORDER_RADIUS = "recommendation-block-button-border-radius-control", c.BUTTON_COLOR = "recommendation-block-button-color-control", c.BUTTON_FIT_TO_CONTENT = "recommendation-block-button-fit-to-content-control", c.BUTTON_FONT_FAMILY = "recommendation-block-button-font-family-control", c.BUTTON_MARGINS = "recommendation-block-button-margins-control", c.BUTTON_PADDINGS = "recommendation-block-button-paddings-control", c.BUTTON_TEXT = "recommendation-block-button-text-control", c.BUTTON_TEXT_SIZE = "recommendation-block-button-text-size-control", c.BUTTON_TEXT_STYLE_AND_FONT_COLOR = "recommendation-block-button-text-style-and-font-color-control", c.NAME_ALIGN = "recommendation-block-name-align-control", c.NAME_BACKGROUND = "recommendation-block-name-background-control", c.NAME_COLOR = "recommendation-block-name-color-control", c.NAME_FONT_FAMILY = "recommendation-block-name-font-family-control", c.NAME_PADDINGS = "recommendation-block-name-paddings-control", c.NAME_SIZE = "recommendation-block-name-size-control", c.NAME_STYLE = "recommendation-block-name-style-control", c.PRICE_ALIGN = "recommendation-block-price-align-control", c.PRICE_BACKGROUND = "recommendation-block-price-background-control", c.PRICE_COLOR = "recommendation-block-price-color-control", c.PRICE_FONT_FAMILY = "recommendation-block-price-font-family-control", c.PRICE_PADDINGS = "recommendation-block-price-paddings-control", c.PRICE_SIZE = "recommendation-block-price-size-control", c.PRICE_STYLE = "recommendation-block-price-style-control", c.OLD_PRICE_ALIGN = "recommendation-block-old-price-align-control", c.OLD_PRICE_BACKGROUND = "recommendation-block-old-price-background-control", c.OLD_PRICE_COLOR = "recommendation-block-old-price-color-control", c.OLD_PRICE_FONT_FAMILY = "recommendation-block-old-price-font-family-control", c.OLD_PRICE_PADDINGS = "recommendation-block-old-price-paddings-control", c.OLD_PRICE_SIZE = "recommendation-block-old-price-size-control", c.OLD_PRICE_STYLE = "recommendation-block-old-price-style-control", c.IMAGE_SIZE = "recommendation-block-image-size-control", c.IMAGE_MARGINS = "recommendation-block-image-margins-control", c))(r || {});
2
+ export {
3
+ o as RecommendationBlockId,
4
+ r as RecommendationControlId
5
+ };
@@ -0,0 +1,306 @@
1
+ var _ = Object.defineProperty;
2
+ var R = (s, n, e) => n in s ? _(s, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[n] = e;
3
+ var r = (s, n, e) => R(s, typeof n != "symbol" ? n + "" : n, e);
4
+ import { currencyDecimalCounts as l, currencyOperators as c, currencyLocationMaps as h } from "../../../enums/extensions/recommendationBlock.js";
5
+ import { UEAttr as m, ModificationDescription as S } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
6
+ import { CommonControl as g } from "../common-control.js";
7
+ import { useRecommendationExtensionStore as O } from "./store/recommendation.js";
8
+ import { prepareProductRows as p } from "./templates/blockTemplate.js";
9
+ import { DEFAULT_CARD_COMPOSITION as C, getDefaultProducts as E } from "./templates/templateUtils.js";
10
+ import { useDebounceFn as U } from "../../../node_modules/@vueuse/shared/index.js";
11
+ const L = "ui-elements-recommendation-block", t = {
12
+ ALGORITHM: "strategy",
13
+ PRODUCT_IDS: "productIds",
14
+ LOCALE: "language",
15
+ CURRENCY: "value",
16
+ CURRENCY_LOCATION: "alignment",
17
+ CURRENCY_SYMBOL: "symbol",
18
+ CURRENCY_THOUSAND_SEPARATOR: "thousandSeparator",
19
+ CURRENCY_DECIMAL_SEPARATOR: "decimalSeparator",
20
+ CURRENCY_DECIMAL_COUNT: "decimalCount",
21
+ FILTERS: "filterStatus",
22
+ PRODUCT_COUNT: "size",
23
+ PRODUCT_IN_ROW: "cardsInRow",
24
+ SHUFFLE_PRODUCTS: "shuffleProducts",
25
+ RESPONSIVE: "unresponsive"
26
+ };
27
+ class b extends g {
28
+ constructor() {
29
+ super(...arguments);
30
+ r(this, "store", O());
31
+ r(this, "storeUnsubscription", () => {
32
+ });
33
+ r(this, "addFilterListener", () => {
34
+ });
35
+ r(this, "addFilterButton", null);
36
+ r(this, "_debouncedRegenerateProductRows", U(() => {
37
+ this._regenerateProductRows();
38
+ }, 500));
39
+ }
40
+ getId() {
41
+ return L;
42
+ }
43
+ getTemplate() {
44
+ return `
45
+ <div class="recommendation-controls-container">
46
+ ${this._getAlgorithms()}
47
+ ${this._getLanguages()}
48
+ ${this._getCurrency()}
49
+ ${this._getFilterStatus()}
50
+ ${this._getProductLayout()}
51
+ ${this._getShuffleProducts()}
52
+ ${this._getResponsive()}
53
+ </div>
54
+ `;
55
+ }
56
+ async onRender() {
57
+ await Promise.all([
58
+ this.store.fetchRecommendationFilters(),
59
+ this.store.fetchRecommendationCreateData(),
60
+ this.store.fetchRecommendationProducts()
61
+ // TODO: We need to change the location. It's just for testing
62
+ ]), this._listenStateUpdates(), this._initializeSelectItems(), this._setFormValues(), this._listenToFormUpdates();
63
+ }
64
+ onDestroy() {
65
+ var e;
66
+ (e = this.addFilterButton) == null || e.removeEventListener("click", this.addFilterListener), this.storeUnsubscription();
67
+ }
68
+ _setFormValues() {
69
+ const e = this.store.recommendationConfigs;
70
+ this._setProductIdsVisibility(), this.api.updateValues({
71
+ [t.ALGORITHM]: e.strategy,
72
+ [t.PRODUCT_IDS]: e.productIds.join(","),
73
+ [t.CURRENCY]: e.currencySettings.value,
74
+ [t.LOCALE]: e.language,
75
+ [t.CURRENCY_LOCATION]: e.currencySettings.alignment,
76
+ [t.CURRENCY_SYMBOL]: e.currencySettings.symbol,
77
+ [t.CURRENCY_THOUSAND_SEPARATOR]: e.currencySettings.thousandSeparator,
78
+ [t.CURRENCY_DECIMAL_SEPARATOR]: e.currencySettings.decimalSeparator,
79
+ [t.CURRENCY_DECIMAL_COUNT]: e.currencySettings.decimalCount,
80
+ [t.PRODUCT_COUNT]: e.size,
81
+ [t.PRODUCT_IN_ROW]: e.cardsInRow,
82
+ [t.SHUFFLE_PRODUCTS]: e.shuffleProducts,
83
+ [t.RESPONSIVE]: !e.unresponsive
84
+ });
85
+ }
86
+ _initializeSelectItems() {
87
+ const { store: e } = this, o = e.getActivePredictiveAlgorithms, i = e.getLanguages, a = {
88
+ [t.ALGORITHM]: o,
89
+ [t.LOCALE]: i,
90
+ [t.CURRENCY]: e.currencyList,
91
+ [t.CURRENCY_LOCATION]: h,
92
+ [t.CURRENCY_SYMBOL]: e.getCurrencySymbolList,
93
+ [t.CURRENCY_THOUSAND_SEPARATOR]: c,
94
+ [t.CURRENCY_DECIMAL_SEPARATOR]: c,
95
+ [t.CURRENCY_DECIMAL_COUNT]: l,
96
+ [t.PRODUCT_COUNT]: Number(e.recommendationConfigs.size),
97
+ [t.PRODUCT_IN_ROW]: e.recommendationConfigs.cardsInRow,
98
+ [t.SHUFFLE_PRODUCTS]: e.recommendationConfigs.shuffleProducts,
99
+ [t.RESPONSIVE]: !e.recommendationConfigs.unresponsive
100
+ };
101
+ Object.entries(a).forEach(([u, d]) => {
102
+ this.api.setUIEAttribute(u, m.SELECTPICKER.items, d);
103
+ });
104
+ }
105
+ _getAlgorithms() {
106
+ return `
107
+ ${this._GuTwoColumns([
108
+ this._GuLabel({ text: "Recommendation Algorithm" }),
109
+ this._GuSelect({
110
+ name: t.ALGORITHM,
111
+ placeholder: "Select Recommendation Algorithm",
112
+ options: this.store.getActivePredictiveAlgorithms
113
+ }),
114
+ this._GuLabel({ text: "Product Ids", name: `${t.PRODUCT_IDS}_label` }),
115
+ this._GuTextInput({
116
+ name: t.PRODUCT_IDS,
117
+ placeholder: "Enter Product Ids",
118
+ className: "es-180w"
119
+ })
120
+ ])}
121
+ `;
122
+ }
123
+ _getLanguages() {
124
+ return `
125
+ ${this._GuTwoColumns([
126
+ this._GuLabel({ text: "Recommendation Locale" }),
127
+ this._GuSelect({
128
+ name: t.LOCALE,
129
+ placeholder: "Select Recommendation Locale",
130
+ options: this.store.getLanguages
131
+ })
132
+ ])}
133
+ `;
134
+ }
135
+ _getCurrency() {
136
+ return `
137
+ ${this._GuTwoColumns([
138
+ this._GuLabel({ text: "Currency" }),
139
+ this._GuSelect({
140
+ name: t.CURRENCY,
141
+ placeholder: "Select Currency",
142
+ options: this.store.currencyList
143
+ }),
144
+ this._GuLabel({ text: "Currency Location" }),
145
+ this._GuSelect({
146
+ name: t.CURRENCY_LOCATION,
147
+ placeholder: "Select Currency Location",
148
+ options: h
149
+ }),
150
+ this._GuLabel({ text: "Currency Symbol" }),
151
+ this._GuSelect({
152
+ name: t.CURRENCY_SYMBOL,
153
+ placeholder: "Select Currency Symbol",
154
+ options: this.store.getCurrencySymbolList
155
+ }),
156
+ this._GuLabel({ text: "Thousand Separator" }),
157
+ this._GuSelect({
158
+ name: t.CURRENCY_THOUSAND_SEPARATOR,
159
+ placeholder: "Select Thousand Separator",
160
+ options: c
161
+ }),
162
+ this._GuLabel({ text: "Decimal Separator" }),
163
+ this._GuSelect({
164
+ name: t.CURRENCY_DECIMAL_SEPARATOR,
165
+ placeholder: "Select Decimal Separator",
166
+ options: c
167
+ }),
168
+ this._GuLabel({ text: "Decimal Count" }),
169
+ this._GuSelect({
170
+ name: t.CURRENCY_DECIMAL_COUNT,
171
+ placeholder: "Select Decimal Count",
172
+ options: l
173
+ })
174
+ ])}
175
+ `;
176
+ }
177
+ _getProductLayout() {
178
+ return `
179
+ ${this._GuTwoColumns([
180
+ this._GuLabel({ text: "Number of Products" }),
181
+ this._GuCounter({ name: t.PRODUCT_COUNT, maxValue: 9 }),
182
+ this._GuLabel({ text: "Products in One Row" }),
183
+ this._GuCounter({ name: t.PRODUCT_IN_ROW, maxValue: 4 })
184
+ ])}
185
+ `;
186
+ }
187
+ _getFilterStatus() {
188
+ return `
189
+ ${this._GuTwoColumns([
190
+ this._GuLabel({ text: "Filters" }),
191
+ this._GuButton({
192
+ name: t.FILTERS,
193
+ label: "Add Filter",
194
+ id: "guido__btn-add-filter"
195
+ })
196
+ ])}
197
+ `;
198
+ }
199
+ _getShuffleProducts() {
200
+ return `
201
+ ${this._GuTwoColumns([
202
+ this._GuLabel({ text: "Shuffle Recommended Products" }),
203
+ this._GuToggle(t.SHUFFLE_PRODUCTS)
204
+ ])}
205
+ `;
206
+ }
207
+ _getResponsive() {
208
+ return `
209
+ ${this._GuTwoColumns([
210
+ this._GuLabel({ text: "Responsive Block" }),
211
+ this._GuToggle(t.RESPONSIVE)
212
+ ])}
213
+ `;
214
+ }
215
+ _onFilterChange(e) {
216
+ this.currentNode && this.store.$patch({
217
+ filterStatus: e,
218
+ filterSelectionDrawerStatus: e
219
+ });
220
+ }
221
+ _onFilterSelectClick() {
222
+ this.store.$patch({
223
+ filterSelectionDrawerStatus: !0
224
+ });
225
+ }
226
+ _onDataChange(e, o) {
227
+ this.currentNode && (this.store.$patch({
228
+ recommendationConfigs: {
229
+ [e]: o
230
+ }
231
+ }), this._debouncedRegenerateProductRows());
232
+ }
233
+ /**
234
+ * Get the current card composition from block data attribute or use default
235
+ */
236
+ _getCardComposition() {
237
+ if (!this.currentNode)
238
+ return C;
239
+ const e = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
240
+ if (!e || !("getAttribute" in e))
241
+ return C;
242
+ const o = e.getAttribute("data-card-composition");
243
+ return o ? o.split(",").filter(Boolean) : C;
244
+ }
245
+ _regenerateProductRows() {
246
+ if (!this.currentNode || !("querySelector" in this.currentNode))
247
+ return;
248
+ const e = this.currentNode.querySelector(".ins-recommendation-product-container");
249
+ if (!e) {
250
+ console.error("Could not find container table for product rows");
251
+ return;
252
+ }
253
+ const o = this.store.recommendationProducts.length > 0 ? this.store.recommendationProducts : E(), { cardsInRow: i } = this.store.recommendationConfigs, a = this._getCardComposition(), u = p(o, i, a);
254
+ this.api.getDocumentModifier().modifyHtml(e).setInnerHtml(u).apply(new S("Updated product"));
255
+ }
256
+ _onCurrencyConfigChange(e, o) {
257
+ this.currentNode && this.store.$patch({
258
+ recommendationConfigs: {
259
+ currencySettings: {
260
+ [e]: o
261
+ }
262
+ }
263
+ });
264
+ }
265
+ _onCurrencyChange(e) {
266
+ const [, o] = e.split(".");
267
+ this.store.$patch({
268
+ recommendationConfigs: {
269
+ currencySettings: {
270
+ name: o,
271
+ value: o
272
+ }
273
+ }
274
+ });
275
+ }
276
+ _setProductIdsVisibility() {
277
+ const { recommendationConfigs: e } = this.store, o = e.strategy === "manualMerchandising";
278
+ this.api.setVisibility(t.PRODUCT_IDS, o), this.api.setVisibility(`${t.PRODUCT_IDS}_label`, o);
279
+ }
280
+ _listenToFormUpdates() {
281
+ var o;
282
+ this.api.onValueChanged(t.ALGORITHM, (i) => {
283
+ this._onDataChange(t.ALGORITHM, i), this._setProductIdsVisibility();
284
+ }), this.api.onValueChanged(t.PRODUCT_IDS, (i) => this._onDataChange(t.PRODUCT_IDS, i.split(",") || [])), this.api.onValueChanged(t.LOCALE, (i) => this._onDataChange(t.LOCALE, i)), this.api.onValueChanged(t.CURRENCY, (i) => this._onCurrencyChange(i)), [
285
+ t.CURRENCY_LOCATION,
286
+ t.CURRENCY_SYMBOL,
287
+ t.CURRENCY_THOUSAND_SEPARATOR,
288
+ t.CURRENCY_DECIMAL_SEPARATOR,
289
+ t.CURRENCY_DECIMAL_COUNT
290
+ ].forEach((i) => {
291
+ this.api.onValueChanged(i, (a) => this._onCurrencyConfigChange(i, a));
292
+ }), this.api.onValueChanged(t.PRODUCT_COUNT, (i) => this._onDataChange(t.PRODUCT_COUNT, String(i))), this.api.onValueChanged(t.PRODUCT_IN_ROW, (i) => this._onDataChange(t.PRODUCT_IN_ROW, i)), this.api.onValueChanged(t.SHUFFLE_PRODUCTS, (i) => this._onDataChange(t.SHUFFLE_PRODUCTS, i)), this.api.onValueChanged(t.RESPONSIVE, (i) => this._onDataChange(t.RESPONSIVE, i)), this.addFilterListener = this._onFilterSelectClick.bind(this), this.addFilterButton = this.getContainer().querySelector("#guido__btn-add-filter"), (o = this.addFilterButton) == null || o.addEventListener("click", this.addFilterListener);
293
+ }
294
+ _listenStateUpdates() {
295
+ this.storeUnsubscription = this.store.$subscribe((e) => {
296
+ if ("payload" in e) {
297
+ const o = e.payload.recommendationConfigs;
298
+ o && (this.api.updateValues(o), this.store.fetchRecommendationProducts());
299
+ }
300
+ });
301
+ }
302
+ }
303
+ export {
304
+ L as CONTROL_BLOCK_ID,
305
+ b as RecommendationBlockControl
306
+ };
@@ -0,0 +1,13 @@
1
+ import { ButtonAlignBuiltInControl as t } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { RecommendationControlId as e, RecommendationBlockId as n } from "../../constants.js";
3
+ class c extends t {
4
+ getId() {
5
+ return e.BUTTON_ALIGN;
6
+ }
7
+ getTargetNodes(o) {
8
+ return o.closest(".ins-recommendation-product-container").querySelectorAll(`[esd-extension-block-id="${n.BUTTON}"]`);
9
+ }
10
+ }
11
+ export {
12
+ c as ButtonAlignControl
13
+ };
@@ -0,0 +1,13 @@
1
+ import { ButtonBorderBuiltInControl as t } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { RecommendationControlId as e, RecommendationBlockId as n } from "../../constants.js";
3
+ class s extends t {
4
+ getId() {
5
+ return e.BUTTON_BORDER;
6
+ }
7
+ getTargetNodes(o) {
8
+ return o.closest(".ins-recommendation-product-container").querySelectorAll(`[esd-extension-block-id="${n.BUTTON}"]`);
9
+ }
10
+ }
11
+ export {
12
+ s as ButtonBorderControl
13
+ };
@@ -0,0 +1,13 @@
1
+ import { ButtonBorderRadiusBuiltInControl as t } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { RecommendationControlId as e, RecommendationBlockId as n } from "../../constants.js";
3
+ class i extends t {
4
+ getId() {
5
+ return e.BUTTON_BORDER_RADIUS;
6
+ }
7
+ getTargetNodes(o) {
8
+ return o.closest(".ins-recommendation-product-container").querySelectorAll(`[esd-extension-block-id="${n.BUTTON}"]`);
9
+ }
10
+ }
11
+ export {
12
+ i as ButtonBorderRadiusControl
13
+ };
@@ -0,0 +1,13 @@
1
+ import { ButtonColorBuiltInControl as t } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { RecommendationControlId as e, RecommendationBlockId as n } from "../../constants.js";
3
+ class c extends t {
4
+ getId() {
5
+ return e.BUTTON_COLOR;
6
+ }
7
+ getTargetNodes(o) {
8
+ return o.closest(".ins-recommendation-product-container").querySelectorAll(`[esd-extension-block-id="${n.BUTTON}"]`);
9
+ }
10
+ }
11
+ export {
12
+ c as ButtonColorControl
13
+ };
@@ -0,0 +1,13 @@
1
+ import { ButtonFitToContainerBuiltInControl as o } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { RecommendationControlId as e, RecommendationBlockId as n } from "../../constants.js";
3
+ class s extends o {
4
+ getId() {
5
+ return e.BUTTON_FIT_TO_CONTENT;
6
+ }
7
+ getTargetNodes(t) {
8
+ return t.closest(".ins-recommendation-product-container").querySelectorAll(`[esd-extension-block-id="${n.BUTTON}"]`);
9
+ }
10
+ }
11
+ export {
12
+ s as ButtonFitToContentControl
13
+ };