@useinsider/guido 1.0.3-beta.9dbb968 → 1.0.3-beta.9f7b494

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 (325) hide show
  1. package/README.md +144 -3
  2. package/dist/components/Guido.vue.js +11 -9
  3. package/dist/components/Guido.vue2.js +73 -65
  4. package/dist/components/organisms/extensions/recommendation/FilterItem.vue.js +28 -0
  5. package/dist/components/organisms/extensions/recommendation/FilterItem.vue2.js +38 -0
  6. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue.js +17 -0
  7. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +37 -0
  8. package/dist/components/organisms/extensions/recommendation/Filters.vue.js +20 -0
  9. package/dist/components/organisms/extensions/recommendation/Filters.vue2.js +44 -0
  10. package/dist/components/organisms/extensions/recommendation/LogicAdapter.vue.js +17 -0
  11. package/dist/components/organisms/extensions/recommendation/LogicAdapter.vue2.js +27 -0
  12. package/dist/components/organisms/header/LeftSlot.vue.js +1 -1
  13. package/dist/components/organisms/header/LeftSlot.vue2.js +16 -15
  14. package/dist/components/organisms/header/RightSlot.vue.js +11 -11
  15. package/dist/components/organisms/header/RightSlot.vue2.js +23 -22
  16. package/dist/components/organisms/onboarding/NewVersionPopup.vue.js +9 -9
  17. package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +30 -17
  18. package/dist/components/organisms/onboarding/OnboardingWrapper.vue.js +12 -10
  19. package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +19 -18
  20. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.js +1 -1
  21. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue2.js +15 -14
  22. package/dist/composables/useBlocksConfig.js +49 -0
  23. package/dist/composables/useGuidoActions.js +19 -9
  24. package/dist/composables/useStripo.js +48 -52
  25. package/dist/config/compiler/unsubscribeCompilerRules.js +41 -33
  26. package/dist/config/migrator/couponBlockMigrator.js +67 -0
  27. package/dist/config/migrator/index.js +7 -5
  28. package/dist/config/migrator/recommendationMigrator.js +293 -0
  29. package/dist/config/migrator/unsubscribeMigrator.js +61 -49
  30. package/dist/enums/date.js +6 -0
  31. package/dist/enums/defaults.js +16 -8
  32. package/dist/enums/extensions/recommendationBlock.js +80 -0
  33. package/dist/enums/onboarding.js +2 -1
  34. package/dist/enums/unsubscribe.js +29 -23
  35. package/dist/extensions/Blocks/Checkbox/control.js +55 -53
  36. package/dist/extensions/Blocks/Checkbox/extension.js +2 -2
  37. package/dist/extensions/Blocks/CouponBlock/block.js +33 -0
  38. package/dist/extensions/Blocks/CouponBlock/extension.js +8 -0
  39. package/dist/extensions/Blocks/CouponBlock/iconsRegistry.js +33 -0
  40. package/dist/extensions/Blocks/CouponBlock/settingsPanel.js +24 -0
  41. package/dist/extensions/Blocks/CouponBlock/template.js +18 -0
  42. package/dist/extensions/Blocks/RadioButton/control.js +44 -42
  43. package/dist/extensions/Blocks/RadioButton/template.js +6 -6
  44. package/dist/extensions/Blocks/Recommendation/block.js +30 -0
  45. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +103 -0
  46. package/dist/extensions/Blocks/Recommendation/constants.js +5 -0
  47. package/dist/extensions/Blocks/Recommendation/control.js +306 -0
  48. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +13 -0
  49. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +13 -0
  50. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +13 -0
  51. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +13 -0
  52. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +13 -0
  53. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +13 -0
  54. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +13 -0
  55. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +13 -0
  56. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +13 -0
  57. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +13 -0
  58. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +13 -0
  59. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +13 -0
  60. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +13 -0
  61. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +13 -0
  62. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +13 -0
  63. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +13 -0
  64. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +13 -0
  65. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +13 -0
  66. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +13 -0
  67. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +13 -0
  68. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +13 -0
  69. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +13 -0
  70. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +13 -0
  71. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +13 -0
  72. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +13 -0
  73. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +13 -0
  74. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +13 -0
  75. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +13 -0
  76. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +13 -0
  77. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +13 -0
  78. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +13 -0
  79. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +13 -0
  80. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +13 -0
  81. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +13 -0
  82. package/dist/extensions/Blocks/Recommendation/extension.js +45 -0
  83. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +51 -0
  84. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +19 -0
  85. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +117 -0
  86. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +266 -0
  87. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +160 -0
  88. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +152 -0
  89. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +180 -0
  90. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +28 -0
  91. package/dist/extensions/Blocks/common-control.js +184 -0
  92. package/dist/extensions/DynamicContent/dynamic-content-modal.js +25 -19
  93. package/dist/extensions/DynamicContent/dynamic-content.js +128 -33
  94. package/dist/guido.css +1 -1
  95. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +311 -93
  96. package/dist/package.json.js +7 -0
  97. package/dist/services/recommendationApi.js +43 -0
  98. package/dist/services/stripoApi.js +1 -1
  99. package/dist/src/@types/generic.d.ts +98 -0
  100. package/dist/{components → src/components}/Guido.vue.d.ts +4 -2
  101. package/dist/src/components/organisms/extensions/recommendation/FilterItem.vue.d.ts +19 -0
  102. package/dist/src/components/organisms/extensions/recommendation/LogicAdapter.vue.d.ts +16 -0
  103. package/dist/src/components/organisms/onboarding/NewVersionPopup.vue.d.ts +4 -0
  104. package/dist/src/components/organisms/onboarding/OnboardingWrapper.vue.d.ts +4 -0
  105. package/dist/src/composables/useBlocksConfig.d.ts +11 -0
  106. package/dist/{composables → src/composables}/useGuidoActions.d.ts +9 -0
  107. package/dist/src/config/migrator/couponBlockMigrator.d.ts +1 -0
  108. package/dist/src/config/migrator/recommendationMigrator.d.ts +1 -0
  109. package/dist/src/enums/date.d.ts +4 -0
  110. package/dist/src/enums/extensions/recommendationBlock.d.ts +16 -0
  111. package/dist/src/enums/onboarding.d.ts +2 -0
  112. package/dist/{enums → src/enums}/unsubscribe.d.ts +4 -0
  113. package/dist/src/extensions/Blocks/CouponBlock/block.d.ts +12 -0
  114. package/dist/src/extensions/Blocks/CouponBlock/iconsRegistry.d.ts +4 -0
  115. package/dist/src/extensions/Blocks/CouponBlock/settingsPanel.d.ts +4 -0
  116. package/dist/src/extensions/Blocks/CouponBlock/template.d.ts +3 -0
  117. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +11 -0
  118. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +28 -0
  119. package/dist/src/extensions/Blocks/Recommendation/constants.d.ts +51 -0
  120. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +35 -0
  121. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +5 -0
  122. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +5 -0
  123. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +5 -0
  124. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +5 -0
  125. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +5 -0
  126. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +5 -0
  127. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +5 -0
  128. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +5 -0
  129. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +5 -0
  130. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +5 -0
  131. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +5 -0
  132. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +5 -0
  133. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +5 -0
  134. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +5 -0
  135. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +5 -0
  136. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +5 -0
  137. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +5 -0
  138. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +5 -0
  139. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +5 -0
  140. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +5 -0
  141. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +5 -0
  142. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +5 -0
  143. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +5 -0
  144. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +5 -0
  145. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +5 -0
  146. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +5 -0
  147. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +5 -0
  148. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +5 -0
  149. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +5 -0
  150. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +5 -0
  151. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +5 -0
  152. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +5 -0
  153. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +5 -0
  154. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +5 -0
  155. package/dist/src/extensions/Blocks/Recommendation/iconsRegistry.d.ts +4 -0
  156. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +555 -0
  157. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +16 -0
  158. package/dist/src/extensions/Blocks/Recommendation/templates/migrationTemplate.d.ts +16 -0
  159. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +44 -0
  160. package/dist/src/extensions/Blocks/Recommendation/utils/filterUtil.d.ts +7 -0
  161. package/dist/src/extensions/Blocks/_Boilerplate/extension.d.ts +2 -0
  162. package/dist/src/extensions/Blocks/_Boilerplate/settingsPanel.d.ts +4 -0
  163. package/dist/src/extensions/Blocks/common-control.d.ts +87 -0
  164. package/dist/src/extensions/DynamicContent/dynamic-content-modal.d.ts +13 -0
  165. package/dist/src/extensions/DynamicContent/dynamic-content.d.ts +66 -0
  166. package/dist/src/extensions/DynamicContent/extension.d.ts +2 -0
  167. package/dist/src/mock/api/validator.d.ts +2 -0
  168. package/dist/src/services/recommendationApi.d.ts +6 -0
  169. package/dist/src/stores/config.d.ts +104 -0
  170. package/dist/{stores → src/stores}/dynamic-content.d.ts +3 -3
  171. package/dist/{stores → src/stores}/editor.d.ts +22 -1
  172. package/dist/{stores → src/stores}/onboarding.d.ts +1 -1
  173. package/dist/{stores → src/stores}/preview.d.ts +1 -1
  174. package/dist/{stores → src/stores}/recommendation.d.ts +1 -1
  175. package/dist/{stores → src/stores}/save-as-template.d.ts +1 -1
  176. package/dist/{stores → src/stores}/toaster.d.ts +1 -1
  177. package/dist/{stores → src/stores}/unsubscribe.d.ts +1 -1
  178. package/dist/{stores → src/stores}/version-history.d.ts +1 -1
  179. package/dist/src/utils/dateUtil.d.ts +22 -0
  180. package/dist/src/utils/environmentUtil.d.ts +5 -0
  181. package/dist/{utils → src/utils}/genericUtil.d.ts +2 -0
  182. package/dist/static/styles/components/narrow-panel.css.js +10 -0
  183. package/dist/static/styles/customEditorStyle.css.js +5 -0
  184. package/dist/stores/config.js +17 -0
  185. package/dist/stores/dynamic-content.js +2 -2
  186. package/dist/stores/editor.js +3 -2
  187. package/dist/stores/onboarding.js +27 -27
  188. package/dist/stores/preview.js +1 -1
  189. package/dist/stores/recommendation.js +3 -3
  190. package/dist/stores/save-as-template.js +2 -2
  191. package/dist/stores/toaster.js +1 -1
  192. package/dist/stores/unsubscribe.js +1 -1
  193. package/dist/stores/version-history.js +4 -4
  194. package/dist/utils/dateUtil.js +24 -3
  195. package/dist/utils/environmentUtil.js +4 -0
  196. package/dist/utils/genericUtil.js +23 -11
  197. package/package.json +9 -4
  198. package/dist/@types/generic.d.ts +0 -57
  199. package/dist/enums/onboarding.d.ts +0 -1
  200. package/dist/extensions/DynamicContent/dynamic-content-modal.d.ts +0 -6
  201. package/dist/extensions/DynamicContent/dynamic-content.d.ts +0 -16
  202. package/dist/utils/dateUtil.d.ts +0 -1
  203. package/dist/{@types → src/@types}/events.d.ts +0 -0
  204. package/dist/{@types → src/@types}/save-as-template.d.ts +0 -0
  205. package/dist/{App.vue.d.ts → src/App.vue.d.ts} +0 -0
  206. package/dist/{components → src/components}/organisms/LoadingWrapper.vue.d.ts +0 -0
  207. package/dist/{components → src/components}/organisms/base/Toaster.vue.d.ts +0 -0
  208. package/dist/{components → src/components}/organisms/email-preview/PreviewContainer.vue.d.ts +0 -0
  209. package/dist/{components → src/components}/organisms/email-preview/amp/AmpErrorModal.vue.d.ts +0 -0
  210. package/dist/{components → src/components}/organisms/email-preview/amp/AmpToggle.vue.d.ts +0 -0
  211. package/dist/{components → src/components}/organisms/email-preview/desktop-preview/DesktopPreview.vue.d.ts +0 -0
  212. package/dist/{components → src/components}/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue.d.ts +0 -0
  213. package/dist/{components → src/components}/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.d.ts +0 -0
  214. package/dist/{components → src/components}/organisms/email-preview/mobile-preview/ContentView.vue.d.ts +0 -0
  215. package/dist/{components → src/components}/organisms/email-preview/mobile-preview/InboxView.vue.d.ts +0 -0
  216. package/dist/{components → src/components}/organisms/email-preview/mobile-preview/MobilePreview.vue.d.ts +0 -0
  217. package/dist/{components/organisms/header/LeftSlot.vue.d.ts → src/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue.d.ts} +0 -0
  218. package/dist/{components/organisms/header/MiddleSlot.vue.d.ts → src/components/organisms/extensions/recommendation/Filters.vue.d.ts} +0 -0
  219. package/dist/{components → src/components}/organisms/header/HeaderWrapper.vue.d.ts +0 -0
  220. package/dist/{components/organisms/header/ViewOptions.vue.d.ts → src/components/organisms/header/LeftSlot.vue.d.ts} +0 -0
  221. package/dist/{components/organisms/header/version-history/RestoreButton.vue.d.ts → src/components/organisms/header/MiddleSlot.vue.d.ts} +0 -0
  222. package/dist/{components → src/components}/organisms/header/RightSlot.vue.d.ts +0 -0
  223. package/dist/{components/organisms/header/version-history → src/components/organisms/header}/ViewOptions.vue.d.ts +0 -0
  224. package/dist/{components/organisms/onboarding/AMPOnboarding.vue.d.ts → src/components/organisms/header/version-history/RestoreButton.vue.d.ts} +0 -0
  225. package/dist/{components → src/components}/organisms/header/version-history/VersionHistory.vue.d.ts +0 -0
  226. package/dist/{components → src/components}/organisms/header/version-history/VersionHistoryItem.vue.d.ts +0 -0
  227. package/dist/{components/organisms/onboarding/GenericOnboarding.vue.d.ts → src/components/organisms/header/version-history/ViewOptions.vue.d.ts} +0 -0
  228. package/dist/{components/organisms/onboarding/NewVersionPopup.vue.d.ts → src/components/organisms/onboarding/AMPOnboarding.vue.d.ts} +0 -0
  229. package/dist/{components/organisms/onboarding/OnboardingWrapper.vue.d.ts → src/components/organisms/onboarding/GenericOnboarding.vue.d.ts} +0 -0
  230. package/dist/{components → src/components}/organisms/onboarding/TextBlockOnboarding.vue.d.ts +0 -0
  231. package/dist/{components → src/components}/organisms/onboarding/VersionHistoryOnboarding.vue.d.ts +0 -0
  232. package/dist/{components → src/components}/organisms/save-as-template/SaveAsTemplateDrawer.vue.d.ts +0 -0
  233. package/dist/{components → src/components}/organisms/unsubscribe/UnsubscribeBreadcrumb.vue.d.ts +0 -0
  234. package/dist/{components → src/components}/organisms/unsubscribe/UnsubscribePageSelection.vue.d.ts +0 -0
  235. package/dist/{components → src/components}/organisms/unsubscribe/UnsubscribeTypeSelection.vue.d.ts +0 -0
  236. package/dist/{components → src/components}/organisms/unsubscribe/UnsubscribeWrapper.vue.d.ts +0 -0
  237. package/dist/{components → src/components}/wrappers/WpDrawer.vue.d.ts +0 -0
  238. package/dist/{components → src/components}/wrappers/WpModal.vue.d.ts +1 -1
  239. /package/dist/{composables → src/composables}/useActionsApi.d.ts +0 -0
  240. /package/dist/{composables → src/composables}/useApiExample.d.ts +0 -0
  241. /package/dist/{composables → src/composables}/useCodeEditorApi.d.ts +0 -0
  242. /package/dist/{composables → src/composables}/useConfig.d.ts +0 -0
  243. /package/dist/{composables → src/composables}/useCustomInterfaceAppearance.d.ts +0 -0
  244. /package/dist/{composables → src/composables}/useDebounce.d.ts +0 -0
  245. /package/dist/{composables → src/composables}/useExport.d.ts +0 -0
  246. /package/dist/{composables → src/composables}/useHtmlCompiler.d.ts +0 -0
  247. /package/dist/{composables → src/composables}/useHtmlValidator.d.ts +0 -0
  248. /package/dist/{composables → src/composables}/useHttp.d.ts +0 -0
  249. /package/dist/{composables → src/composables}/usePartner.d.ts +0 -0
  250. /package/dist/{composables → src/composables}/usePreviewMode.d.ts +0 -0
  251. /package/dist/{composables → src/composables}/useProvideInject.d.ts +0 -0
  252. /package/dist/{composables → src/composables}/useRecommendation.d.ts +0 -0
  253. /package/dist/{composables → src/composables}/useResponsivePreview.d.ts +0 -0
  254. /package/dist/{composables → src/composables}/useSave.d.ts +0 -0
  255. /package/dist/{composables → src/composables}/useStripo.d.ts +0 -0
  256. /package/dist/{composables → src/composables}/useStripoEventHandler.d.ts +0 -0
  257. /package/dist/{composables → src/composables}/useToaster.d.ts +0 -0
  258. /package/dist/{composables → src/composables}/useTranslations.d.ts +0 -0
  259. /package/dist/{composables → src/composables}/useValidation.d.ts +0 -0
  260. /package/dist/{composables → src/composables}/useVersionHistoryApi.d.ts +0 -0
  261. /package/dist/{composables → src/composables}/validators/saveAsTemplate.d.ts +0 -0
  262. /package/dist/{config → src/config}/compiler/htmlCompilerRules.d.ts +0 -0
  263. /package/dist/{config → src/config}/compiler/outlookCompilerRules.d.ts +0 -0
  264. /package/dist/{config → src/config}/compiler/recommendationCompilerRules.d.ts +0 -0
  265. /package/dist/{config → src/config}/compiler/socialCompilerRules.d.ts +0 -0
  266. /package/dist/{config → src/config}/compiler/unsubscribeCompilerRules.d.ts +0 -0
  267. /package/dist/{config → src/config}/migrator/checkboxMigrator.d.ts +0 -0
  268. /package/dist/{config → src/config}/migrator/index.d.ts +0 -0
  269. /package/dist/{config → src/config}/migrator/radioButtonMigrator.d.ts +0 -0
  270. /package/dist/{config → src/config}/migrator/unsubscribeMigrator.d.ts +0 -0
  271. /package/dist/{enums → src/enums}/defaults.d.ts +0 -0
  272. /package/dist/{enums → src/enums}/displayConditions.d.ts +0 -0
  273. /package/dist/{enums → src/enums}/html-validator.d.ts +0 -0
  274. /package/dist/{enums → src/enums}/preview.d.ts +0 -0
  275. /package/dist/{enums → src/enums}/recommendation.d.ts +0 -0
  276. /package/dist/{enums → src/enums}/toaster.d.ts +0 -0
  277. /package/dist/{extensions → src/extensions}/Blocks/Checkbox/block.d.ts +0 -0
  278. /package/dist/{extensions → src/extensions}/Blocks/Checkbox/control.d.ts +0 -0
  279. /package/dist/{extensions → src/extensions}/Blocks/Checkbox/extension.d.ts +0 -0
  280. /package/dist/{extensions → src/extensions}/Blocks/Checkbox/iconsRegistry.d.ts +0 -0
  281. /package/dist/{extensions → src/extensions}/Blocks/Checkbox/settingsPanel.d.ts +0 -0
  282. /package/dist/{extensions → src/extensions}/Blocks/Checkbox/template.d.ts +0 -0
  283. /package/dist/{extensions/Blocks/RadioButton → src/extensions/Blocks/CouponBlock}/extension.d.ts +0 -0
  284. /package/dist/{extensions → src/extensions}/Blocks/RadioButton/block.d.ts +0 -0
  285. /package/dist/{extensions → src/extensions}/Blocks/RadioButton/control.d.ts +0 -0
  286. /package/dist/{extensions/Blocks/Unsubscribe → src/extensions/Blocks/RadioButton}/extension.d.ts +0 -0
  287. /package/dist/{extensions → src/extensions}/Blocks/RadioButton/iconsRegistry.d.ts +0 -0
  288. /package/dist/{extensions → src/extensions}/Blocks/RadioButton/settingsPanel.d.ts +0 -0
  289. /package/dist/{extensions → src/extensions}/Blocks/RadioButton/template.d.ts +0 -0
  290. /package/dist/{extensions/Blocks/_Boilerplate → src/extensions/Blocks/Recommendation}/extension.d.ts +0 -0
  291. /package/dist/{extensions/Blocks/Unsubscribe → src/extensions/Blocks/Recommendation}/settingsPanel.d.ts +0 -0
  292. /package/dist/{extensions → src/extensions}/Blocks/Unsubscribe/block.d.ts +0 -0
  293. /package/dist/{extensions → src/extensions}/Blocks/Unsubscribe/control.d.ts +0 -0
  294. /package/dist/{extensions → src/extensions}/Blocks/Unsubscribe/elements/preview.d.ts +0 -0
  295. /package/dist/{extensions/DynamicContent → src/extensions/Blocks/Unsubscribe}/extension.d.ts +0 -0
  296. /package/dist/{extensions → src/extensions}/Blocks/Unsubscribe/iconsRegistry.d.ts +0 -0
  297. /package/dist/{extensions/Blocks/_Boilerplate → src/extensions/Blocks/Unsubscribe}/settingsPanel.d.ts +0 -0
  298. /package/dist/{extensions → src/extensions}/Blocks/Unsubscribe/tagRegistry.d.ts +0 -0
  299. /package/dist/{extensions → src/extensions}/Blocks/Unsubscribe/template.d.ts +0 -0
  300. /package/dist/{extensions → src/extensions}/Blocks/Unsubscribe/utils/constants.d.ts +0 -0
  301. /package/dist/{extensions → src/extensions}/Blocks/Unsubscribe/utils/utils.d.ts +0 -0
  302. /package/dist/{extensions → src/extensions}/Blocks/_Boilerplate/block.d.ts +0 -0
  303. /package/dist/{extensions → src/extensions}/Blocks/_Boilerplate/control.d.ts +0 -0
  304. /package/dist/{extensions → src/extensions}/Blocks/_Boilerplate/iconsRegistry.d.ts +0 -0
  305. /package/dist/{extensions → src/extensions}/Blocks/_Boilerplate/template.d.ts +0 -0
  306. /package/dist/{library.d.ts → src/library.d.ts} +0 -0
  307. /package/dist/{main.d.ts → src/main.d.ts} +0 -0
  308. /package/dist/{mock → src/mock}/api/auth.d.ts +0 -0
  309. /package/dist/{mock → src/mock}/api/custom-fonts.d.ts +0 -0
  310. /package/dist/{mock → src/mock}/api/default-template.d.ts +0 -0
  311. /package/dist/{mock/api/template-library.d.ts → src/mock/api/recommendation.d.ts} +0 -0
  312. /package/dist/{mock/api/unsubscribe.d.ts → src/mock/api/template-library.d.ts} +0 -0
  313. /package/dist/{mock/api/user-modal-state.d.ts → src/mock/api/unsubscribe.d.ts} +0 -0
  314. /package/dist/{mock/api/validator.d.ts → src/mock/api/user-modal-state.d.ts} +0 -0
  315. /package/dist/{mock → src/mock}/browser.d.ts +0 -0
  316. /package/dist/{mock → src/mock}/handlers.d.ts +0 -0
  317. /package/dist/{services → src/services}/onboardingApi.d.ts +0 -0
  318. /package/dist/{services → src/services}/stripoApi.d.ts +0 -0
  319. /package/dist/{services → src/services}/templateLibraryApi.d.ts +0 -0
  320. /package/dist/{services → src/services}/unsubscribeApi.d.ts +0 -0
  321. /package/dist/{utils → src/utils}/arrayUtil.d.ts +0 -0
  322. /package/dist/{utils → src/utils}/base64.d.ts +0 -0
  323. /package/dist/{utils → src/utils}/htmlCompiler.d.ts +0 -0
  324. /package/dist/{utils → src/utils}/templatePreparation.d.ts +0 -0
  325. /package/dist/{utils → src/utils}/tooltipUtils.d.ts +0 -0
@@ -0,0 +1,24 @@
1
+ import { SettingsPanelRegistry as T, SettingsPanelTab as o, SettingsTab as O, TextControls as t } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { COUPON_BLOCK_ID as N } from "./block.js";
3
+ class _ extends T {
4
+ registerBlockControls(e) {
5
+ e[N] = [
6
+ new o(
7
+ O.SETTINGS,
8
+ [
9
+ t.FONT_FAMILY,
10
+ t.FONT_SIZE,
11
+ t.FORMAT,
12
+ t.FONT_COLOR,
13
+ t.TEXT_BLOCK_BACKGROUND_COLOR,
14
+ t.ALIGN,
15
+ t.LINE_HEIGHT,
16
+ t.INTERNAL_INDENTS
17
+ ]
18
+ )
19
+ ];
20
+ }
21
+ }
22
+ export {
23
+ _ as CouponBlockSettings
24
+ };
@@ -0,0 +1,18 @@
1
+ const o = `
2
+ <td class="coupon-block ins-coupon-code esd-block-text coupon-block-v2">
3
+ <p class="ins-title" contenteditable="false">{@COUPON_CODE}</p>
4
+ </td>`, e = `
5
+ <td
6
+ class="coupon-block coupon-block-v2 ins-coupon-code esd-block-text esd-extension-block"
7
+ esd-extension-block-id="coupon-block"
8
+ >
9
+ <p class="ins-title" contenteditable="false">{@COUPON_CODE}</p>
10
+ </td>
11
+ `;
12
+ function t() {
13
+ return o;
14
+ }
15
+ export {
16
+ e as default,
17
+ t as getDefaultTemplate
18
+ };
@@ -1,38 +1,45 @@
1
- var E = Object.defineProperty;
2
- var c = (r, s, t) => s in r ? E(r, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[s] = t;
3
- var a = (r, s, t) => c(r, typeof s != "symbol" ? s + "" : s, t);
4
- import { useHttp as d } from "../../../composables/useHttp.js";
5
- import { Control as l, UIElementType as n, UEAttr as e, ModificationDescription as L } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
6
- const p = "ui-elements-radio-button", o = "select", { get: m } = d();
7
- class b extends l {
1
+ var d = Object.defineProperty;
2
+ var l = (r, n, t) => n in r ? d(r, n, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[n] = t;
3
+ var o = (r, n, t) => l(r, typeof n != "symbol" ? n + "" : n, t);
4
+ import { useHttp as L } from "../../../composables/useHttp.js";
5
+ import { DEFAULT_UNSUBSCRIBE_GROUP as E } from "../../../enums/unsubscribe.js";
6
+ import { Control as p, UIElementType as i, UEAttr as e, ModificationDescription as h } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
7
+ const m = "ui-elements-radio-button", a = "select", { get: $ } = L();
8
+ class _ extends p {
8
9
  constructor() {
9
10
  super(...arguments);
10
- a(this, "currentNode");
11
- a(this, "selectedUnsubGroup");
12
- a(this, "unsubList", []);
11
+ o(this, "currentNode");
12
+ o(this, "selectedUnsubGroup");
13
+ o(this, "unsubList", []);
13
14
  }
14
15
  getId() {
15
- return p;
16
+ return m;
16
17
  }
17
18
  _setFormValues() {
18
- this.api.updateValues({
19
- [o]: ""
20
- });
19
+ if (this.currentNode && "getAttribute" in this.currentNode) {
20
+ const t = this.currentNode.getAttribute("id");
21
+ if (t) {
22
+ const s = t === E.sendGridId ? t : Number(t);
23
+ s && (this.selectedUnsubGroup = s, this.api.updateValues({
24
+ [a]: this.selectedUnsubGroup
25
+ }));
26
+ }
27
+ }
21
28
  }
22
- _getLabel(t, i = `${Math.random()}`) {
29
+ _getLabel(t, s = `${Math.random()}`) {
23
30
  return `
24
- <${n.LABEL}
31
+ <${i.LABEL}
25
32
  ${e.LABEL.text}="${t}"
26
- ${e.LABEL.name}="${i}">
27
- </${n.LABEL}>
33
+ ${e.LABEL.name}="${s}">
34
+ </${i.LABEL}>
28
35
  `;
29
36
  }
30
- _getSelectItem(t, i) {
37
+ _getSelectItem(t, s) {
31
38
  return `
32
- <${n.SELECT_ITEM}
39
+ <${i.SELECT_ITEM}
33
40
  ${e.SELECT_ITEM.text}="${t}"
34
- ${e.SELECT_ITEM.value}="${i}">
35
- </${n.SELECT_ITEM}>`;
41
+ ${e.SELECT_ITEM.value}="${s}">
42
+ </${i.SELECT_ITEM}>`;
36
43
  }
37
44
  _getSelect() {
38
45
  return this.unsubList.map((t) => this._getSelectItem(t.name, t.sendGridId)).join("");
@@ -41,50 +48,45 @@ class b extends l {
41
48
  return `
42
49
  <div class="checkbox-controls-container">
43
50
  <div class="checkbox-select-container container two-columns stretch">
44
- <${n.LABEL}
51
+ <${i.LABEL}
45
52
  ${e.LABEL.text}="${this.api.translate("Unsubscribe Group")}"
46
53
  ${e.LABEL.name}="${Math.random()}">
47
- </${n.LABEL}>
54
+ </${i.LABEL}>
48
55
 
49
- <${n.SELECTPICKER}
50
- ${e.SELECTPICKER.name}="${o}"
56
+ <${i.SELECTPICKER}
57
+ ${e.SELECTPICKER.name}="${a}"
51
58
  ${e.SELECTPICKER.placeholder}="${this.api.translate("Select Unsubscribe Group")}">
52
59
  ${this._getSelect()}
53
- </${n.SELECTPICKER}>
60
+ </${i.SELECTPICKER}>
54
61
  </div>
55
62
  </div>
56
63
  `;
57
64
  }
58
65
  _onSelectChange(t) {
59
- this.currentNode && this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute("id", t.toString()).apply(new L(`Updated text to ${t}`));
66
+ this.currentNode && this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute("id", t.toString()).apply(new h(`Updated text to ${t}`));
60
67
  }
61
68
  _listenToFormUpdates() {
62
- this.api.onValueChanged(o, (t) => this._onSelectChange(t));
69
+ this.api.onValueChanged(a, (t) => this._onSelectChange(t));
63
70
  }
64
71
  onTemplateNodeUpdated(t) {
65
- if (this.currentNode = t, "getAttribute" in t) {
66
- const i = Number(t.getAttribute("id"));
67
- i && (this.selectedUnsubGroup = i, this.api.updateValues({
68
- [o]: this.selectedUnsubGroup
69
- }));
70
- }
72
+ this.currentNode = t;
71
73
  }
72
74
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
73
75
  async onRender() {
74
- const t = await m(
76
+ const t = await $(
75
77
  "/unsubscribe-groups/unsubscribe-list"
76
- ), i = t.data.map((u) => ({
78
+ ), s = [E, ...t.data], c = s.map((u) => ({
77
79
  [e.SELECT_ITEM.text]: u.name,
78
80
  [e.SELECT_ITEM.value]: u.sendGridId
79
81
  }));
80
- this.unsubList = t.data, this.api.setUIEAttribute(
81
- o,
82
+ this.unsubList = s, this.api.setUIEAttribute(
83
+ a,
82
84
  e.SELECTPICKER.items,
83
- i
85
+ c
84
86
  ), this._setFormValues(), this._listenToFormUpdates();
85
87
  }
86
88
  }
87
89
  export {
88
- p as CONTROL_BLOCK_ID,
89
- b as RadioButtonControl
90
+ m as CONTROL_BLOCK_ID,
91
+ _ as RadioButtonControl
90
92
  };
@@ -12,12 +12,12 @@ const e = {
12
12
  <td align="left" width="70%" style="vertical-align: top;">
13
13
  <table cellpadding="0" cellspacing="0" role="presentation" width="100%">
14
14
  <tbody>
15
- <${t.BLOCK_TEXT}>
16
- {-{-TITLE-}-}
17
- </${t.BLOCK_TEXT}>
18
- <${t.BLOCK_TEXT}>
19
- {-{-DESCRIPTION-}-}
20
- </${t.BLOCK_TEXT}>
15
+ <${t.BLOCK_TEXT}>
16
+ {-{-TITLE-}-}
17
+ </${t.BLOCK_TEXT}>
18
+ <${t.BLOCK_TEXT}>
19
+ {-{-DESCRIPTION-}-}
20
+ </${t.BLOCK_TEXT}>
21
21
  </tbody>
22
22
  </table>
23
23
  </td>
@@ -0,0 +1,30 @@
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/blockTemplate.js";
3
+ const n = "recommendation-block";
4
+ class m extends e {
5
+ constructor() {
6
+ super();
7
+ }
8
+ getId() {
9
+ return n;
10
+ }
11
+ getIcon() {
12
+ return "recommendation-icon";
13
+ }
14
+ getBlockCompositionType() {
15
+ return t.CONTAINER;
16
+ }
17
+ getName() {
18
+ return this.api.translate("Recommendation Block");
19
+ }
20
+ getDescription() {
21
+ return this.api.translate("Recommendation Block Title Description");
22
+ }
23
+ getTemplate() {
24
+ return o();
25
+ }
26
+ }
27
+ export {
28
+ n as BLOCK_ID,
29
+ m as RecommendationBlock
30
+ };
@@ -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, i.toString())), 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
+ };