@useinsider/guido 2.0.0-beta.087a24f → 2.0.0-beta.0941bcd

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 (284) hide show
  1. package/README.md +2 -0
  2. package/dist/@types/config/schemas.js +55 -39
  3. package/dist/components/Guido.vue.js +1 -1
  4. package/dist/components/Guido.vue2.js +15 -17
  5. package/dist/components/organisms/email-preview/PreviewContainer.vue.js +3 -3
  6. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue.js +6 -6
  7. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue2.js +17 -13
  8. package/dist/components/organisms/email-preview/amp/AmpToggle.vue.js +6 -6
  9. package/dist/components/organisms/email-preview/amp/AmpToggle.vue2.js +14 -12
  10. package/dist/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue.js +18 -0
  11. package/dist/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue2.js +15 -0
  12. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue.js +10 -14
  13. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue2.js +14 -22
  14. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +3 -3
  15. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue.js +12 -11
  16. package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue.js +12 -10
  17. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue.js +11 -10
  18. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue2.js +15 -14
  19. package/dist/components/organisms/header/EditorActions.vue.js +21 -0
  20. package/dist/components/organisms/header/EditorActions.vue2.js +41 -0
  21. package/dist/components/organisms/header/EditorToolbar.vue.js +18 -0
  22. package/dist/components/organisms/header/EditorToolbar.vue2.js +17 -0
  23. package/dist/components/organisms/header/HeaderWrapper.vue.js +6 -5
  24. package/dist/components/organisms/header/LeftSlot.vue.js +11 -11
  25. package/dist/components/organisms/header/LeftSlot.vue2.js +11 -12
  26. package/dist/components/organisms/header/MiddleSlot.vue.js +7 -7
  27. package/dist/components/organisms/header/MiddleSlot.vue2.js +11 -15
  28. package/dist/components/organisms/header/RightSlot.vue.js +11 -14
  29. package/dist/components/organisms/header/RightSlot.vue2.js +13 -30
  30. package/dist/components/organisms/header/version-history/VersionHistory.vue.js +5 -5
  31. package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +15 -15
  32. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.js +1 -1
  33. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue2.js +20 -19
  34. package/dist/composables/useActionsApi.js +33 -30
  35. package/dist/composables/useConfig.js +29 -27
  36. package/dist/composables/useSave.js +13 -11
  37. package/dist/composables/useStripo.js +42 -40
  38. package/dist/config/migrator/index.js +8 -9
  39. package/dist/config/migrator/recommendationMigrator.js +2 -2
  40. package/dist/enums/academy.js +8 -0
  41. package/dist/enums/onboarding.js +1 -2
  42. package/dist/enums/unsubscribe.js +20 -21
  43. package/dist/extensions/Blocks/CouponBlock/constants.js +4 -0
  44. package/dist/extensions/Blocks/CouponBlock/controls/index.js +29 -0
  45. package/dist/extensions/Blocks/CouponBlock/extension.js +5 -4
  46. package/dist/extensions/Blocks/CouponBlock/settingsPanel.js +20 -14
  47. package/dist/extensions/Blocks/CouponBlock/template.js +22 -11
  48. package/dist/extensions/Blocks/Items/block.js +40 -39
  49. package/dist/extensions/Blocks/Items/controls/cardComposition.js +62 -50
  50. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +26 -28
  51. package/dist/extensions/Blocks/Items/controls/settingsControl.js +127 -132
  52. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +2 -2
  53. package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +48 -58
  54. package/dist/extensions/Blocks/Items/layouts/vertical.html.js +58 -48
  55. package/dist/extensions/Blocks/Items/store/items-block.js +2 -2
  56. package/dist/extensions/Blocks/Items/template.js +123 -296
  57. package/dist/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.js +20 -11
  58. package/dist/extensions/Blocks/Recommendation/block.js +40 -6
  59. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +4 -0
  60. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +4 -0
  61. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +64 -0
  62. package/dist/extensions/Blocks/Recommendation/constants/layout.js +20 -0
  63. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +19 -0
  64. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +64 -0
  65. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +80 -0
  66. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +232 -0
  67. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +19 -0
  68. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +96 -0
  69. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +110 -0
  70. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +204 -0
  71. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +54 -0
  72. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +205 -0
  73. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +74 -0
  74. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +118 -0
  75. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +71 -0
  76. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +286 -0
  77. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +46 -0
  78. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +76 -0
  79. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +44 -0
  80. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +48 -0
  81. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +73 -0
  82. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +73 -0
  83. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +48 -0
  84. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +73 -0
  85. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +73 -0
  86. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +44 -0
  87. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +222 -0
  88. package/dist/extensions/Blocks/Recommendation/extension.js +40 -43
  89. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +19 -3
  90. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +13 -4
  91. package/dist/extensions/Blocks/Recommendation/services/configService.js +239 -0
  92. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +128 -72
  93. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +41 -36
  94. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +233 -0
  95. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +251 -0
  96. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +69 -0
  97. package/dist/extensions/Blocks/Recommendation/templates/index.js +12 -0
  98. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +174 -0
  99. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +73 -0
  100. package/dist/extensions/Blocks/Recommendation/templates/utils.js +121 -0
  101. package/dist/extensions/Blocks/Recommendation/types/nodeConfig.js +6 -0
  102. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
  103. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +36 -0
  104. package/dist/extensions/Blocks/Recommendation/utils/priceFormatter.js +29 -0
  105. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +46 -0
  106. package/dist/extensions/Blocks/Unsubscribe/extension.js +9 -9
  107. package/dist/extensions/Blocks/common-control.js +55 -67
  108. package/dist/extensions/Blocks/controlFactories.js +162 -117
  109. package/dist/guido.css +1 -1
  110. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +229 -176
  111. package/dist/package.json.js +7 -0
  112. package/dist/services/recommendationApi.js +10 -9
  113. package/dist/services/stripoApi.js +6 -10
  114. package/dist/src/@types/config/index.d.ts +2 -2
  115. package/dist/src/@types/config/schemas.d.ts +30 -0
  116. package/dist/src/@types/config/types.d.ts +7 -1
  117. package/dist/src/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue.d.ts +2 -0
  118. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +4 -0
  119. package/dist/src/components/organisms/header/EditorToolbar.vue.d.ts +2 -0
  120. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
  121. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +1 -1
  122. package/dist/src/composables/useActionsApi.d.ts +1 -0
  123. package/dist/src/composables/useConfig.d.ts +8 -0
  124. package/dist/src/enums/academy.d.ts +12 -0
  125. package/dist/src/enums/onboarding.d.ts +0 -1
  126. package/dist/src/enums/unsubscribe.d.ts +0 -1
  127. package/dist/src/extensions/Blocks/CouponBlock/constants.d.ts +14 -0
  128. package/dist/src/extensions/Blocks/CouponBlock/controls/index.d.ts +108 -0
  129. package/dist/src/extensions/Blocks/CouponBlock/template.d.ts +1 -1
  130. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +1 -1
  131. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +4 -0
  132. package/dist/src/extensions/Blocks/Items/template.d.ts +1 -20
  133. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +34 -0
  134. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +13 -0
  135. package/dist/src/extensions/Blocks/Recommendation/{constants.d.ts → constants/controlIds.d.ts} +19 -11
  136. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +49 -0
  137. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +13 -0
  138. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +35 -0
  139. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +31 -0
  140. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +143 -0
  141. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +31 -0
  142. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +95 -0
  143. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +35 -0
  144. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +24 -0
  145. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +37 -0
  146. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +29 -0
  147. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +45 -0
  148. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +22 -0
  149. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +57 -0
  150. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +24 -0
  151. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +42 -0
  152. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +23 -0
  153. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +214 -0
  154. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +97 -0
  155. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +16 -0
  156. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +95 -0
  157. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +100 -0
  158. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +15 -0
  159. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +15 -0
  160. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +100 -0
  161. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +15 -0
  162. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +15 -0
  163. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +95 -0
  164. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +83 -0
  165. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +9 -0
  166. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +151 -0
  167. package/dist/src/extensions/Blocks/Recommendation/services/index.d.ts +6 -0
  168. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +17 -16
  169. package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +20 -0
  170. package/dist/src/extensions/Blocks/Recommendation/templates/{migrationTemplate.d.ts → grid/migration.d.ts} +11 -4
  171. package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +33 -0
  172. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +39 -0
  173. package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +8 -0
  174. package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +25 -0
  175. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +18 -0
  176. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +54 -0
  177. package/dist/src/extensions/Blocks/Recommendation/types/index.d.ts +7 -0
  178. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +154 -0
  179. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +19 -0
  180. package/dist/src/extensions/Blocks/Recommendation/utils/priceFormatter.d.ts +33 -0
  181. package/dist/src/extensions/Blocks/Recommendation/utils/stylePreserver.d.ts +113 -0
  182. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +77 -0
  183. package/dist/src/extensions/Blocks/common-control.d.ts +9 -14
  184. package/dist/src/extensions/Blocks/controlFactories.d.ts +30 -7
  185. package/dist/src/stores/config.d.ts +164 -1
  186. package/dist/src/stores/editor.d.ts +21 -0
  187. package/dist/static/assets/desktop/desktop-mockup-center.svg.js +4 -0
  188. package/dist/static/assets/desktop/desktop-mockup-left.svg.js +4 -0
  189. package/dist/static/assets/desktop/desktop-mockup-right.svg.js +4 -0
  190. package/dist/static/assets/mobile/email-mockup.svg.js +4 -0
  191. package/dist/static/assets/mobile/inbox-mockup.svg.js +4 -0
  192. package/dist/static/styles/components/button.css.js +1 -1
  193. package/dist/static/styles/components/wide-panel.css.js +1 -5
  194. package/dist/static/styles/customEditorStyle.css.js +38 -2
  195. package/dist/stores/config.js +7 -0
  196. package/dist/stores/editor.js +1 -0
  197. package/dist/utils/templatePreparation.js +17 -17
  198. package/package.json +1 -1
  199. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue.js +0 -17
  200. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue2.js +0 -20
  201. package/dist/config/migrator/itemsBlockMigrator.js +0 -283
  202. package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +0 -172
  203. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +0 -103
  204. package/dist/extensions/Blocks/Recommendation/constants.js +0 -5
  205. package/dist/extensions/Blocks/Recommendation/control.js +0 -306
  206. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +0 -13
  207. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +0 -13
  208. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +0 -13
  209. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +0 -13
  210. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +0 -13
  211. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +0 -13
  212. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +0 -13
  213. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +0 -13
  214. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +0 -13
  215. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +0 -13
  216. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +0 -13
  217. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +0 -13
  218. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +0 -13
  219. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +0 -13
  220. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +0 -13
  221. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +0 -13
  222. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +0 -13
  223. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +0 -13
  224. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +0 -13
  225. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +0 -13
  226. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +0 -13
  227. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +0 -13
  228. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +0 -13
  229. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +0 -13
  230. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +0 -13
  231. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +0 -13
  232. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +0 -13
  233. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +0 -13
  234. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +0 -13
  235. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +0 -13
  236. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +0 -13
  237. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +0 -13
  238. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +0 -13
  239. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +0 -13
  240. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +0 -160
  241. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +0 -152
  242. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +0 -180
  243. package/dist/src/config/migrator/itemsBlockMigrator.d.ts +0 -6
  244. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +0 -71
  245. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +0 -28
  246. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +0 -35
  247. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +0 -5
  248. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +0 -5
  249. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +0 -5
  250. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +0 -5
  251. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +0 -5
  252. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +0 -5
  253. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +0 -5
  254. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +0 -5
  255. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +0 -5
  256. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +0 -5
  257. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +0 -5
  258. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +0 -5
  259. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +0 -5
  260. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +0 -5
  261. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +0 -5
  262. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +0 -5
  263. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +0 -5
  264. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +0 -5
  265. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +0 -5
  266. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +0 -5
  267. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +0 -5
  268. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +0 -5
  269. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +0 -5
  270. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +0 -5
  271. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +0 -5
  272. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +0 -5
  273. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +0 -5
  274. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +0 -5
  275. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +0 -5
  276. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +0 -5
  277. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +0 -5
  278. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +0 -5
  279. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +0 -5
  280. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +0 -5
  281. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +0 -16
  282. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +0 -44
  283. package/dist/static/assets/inbox-mockup.svg.js +0 -4
  284. package/dist/static/assets/phone-mockup.svg.js +0 -4
@@ -0,0 +1,57 @@
1
+ import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
2
+ import { CommonControl } from '../../../common-control';
3
+ import { AlgorithmControl, ALGORITHM_CONTROL_ID } from './algorithm';
4
+ import { CurrencyControl, CURRENCY_CONTROL_ID } from './currency';
5
+ import { FiltersControl, FILTERS_CONTROL_ID } from './filters';
6
+ import { LocaleControl, LOCALE_CONTROL_ID } from './locale';
7
+ import { ProductLayoutControl, PRODUCT_LAYOUT_CONTROL_ID } from './productLayout';
8
+ import { ShuffleControl, SHUFFLE_CONTROL_ID } from './shuffle';
9
+ export declare const CONTROL_BLOCK_ID = "ui-elements-recommendation-block";
10
+ export { AlgorithmControl, ALGORITHM_CONTROL_ID, LocaleControl, LOCALE_CONTROL_ID, CurrencyControl, CURRENCY_CONTROL_ID, ProductLayoutControl, PRODUCT_LAYOUT_CONTROL_ID, FiltersControl, FILTERS_CONTROL_ID, ShuffleControl, SHUFFLE_CONTROL_ID, };
11
+ export * from './utils';
12
+ /**
13
+ * Main recommendation block control that composes all sub-controls
14
+ * Registered in the Settings tab of the block's settings panel
15
+ */
16
+ export declare class RecommendationBlockControl extends CommonControl {
17
+ private store;
18
+ private storeUnsubscription;
19
+ private hasInitializedData;
20
+ private algorithmControl;
21
+ private localeControl;
22
+ private currencyControl;
23
+ private productLayoutControl;
24
+ private filtersControl;
25
+ private shuffleControl;
26
+ getId(): string;
27
+ getTemplate(): string;
28
+ onRender(): Promise<void>;
29
+ /**
30
+ * Immediately regenerate products with styles (no debounce)
31
+ * Used for initial load after fetch completes
32
+ */
33
+ private _regenerateWithProducts;
34
+ onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
35
+ onDestroy(): void;
36
+ /**
37
+ * Initialize all sub-controls with the shared API context
38
+ * Each sub-control manages its own form values and event listeners
39
+ */
40
+ _initializeSubControls(): void;
41
+ /**
42
+ * Debounced product fetch to prevent rapid API calls during config changes
43
+ */
44
+ private _debouncedFetchProducts;
45
+ /**
46
+ * Debounced regeneration when products arrive from API
47
+ * Tries in-place update first to preserve styles, falls back to full regeneration
48
+ */
49
+ private _debouncedRegenerateWithProducts;
50
+ /**
51
+ * Listen to store changes that require product refresh or regeneration
52
+ * - Config changes (size, strategy, filters, etc.) trigger API refetch
53
+ * - Currency code changes trigger API refetch (formatting changes are handled in-place)
54
+ * - Products array changes (API response) trigger HTML regeneration
55
+ */
56
+ _listenStateUpdates(): void;
57
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Locale Selection Control
3
+ *
4
+ * Handles locale/language selection for recommendation products.
5
+ * Configuration is stored via node config (persists with template).
6
+ * Language options are fetched from API and cached in Pinia store.
7
+ */
8
+ import type { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
9
+ import { CommonControl } from '../../../common-control';
10
+ export declare const LOCALE_CONTROL_ID = "recommendation-locale-control";
11
+ /**
12
+ * Control for selecting recommendation content locale/language
13
+ */
14
+ export declare class LocaleControl extends CommonControl {
15
+ private store;
16
+ getId(): string;
17
+ getTemplate(): string;
18
+ onRender(): void;
19
+ onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
20
+ _setFormValues(): void;
21
+ _initializeSelectItems(): void;
22
+ _onLocaleChange(value: string): void;
23
+ _listenToFormUpdates(): void;
24
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Product Layout Control
3
+ *
4
+ * Handles product display configuration:
5
+ * - Number of products to show
6
+ * - Products per row (hidden for list layout)
7
+ * - Triggers product row regeneration on changes
8
+ *
9
+ * Configuration is stored via node config (persists with template).
10
+ */
11
+ import type { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
12
+ import { CommonControl } from '../../../common-control';
13
+ export declare const PRODUCT_LAYOUT_CONTROL_ID = "recommendation-product-layout-control";
14
+ /**
15
+ * Control for configuring product count and layout density
16
+ */
17
+ export declare class ProductLayoutControl extends CommonControl {
18
+ private store;
19
+ private storeUnsubscription;
20
+ getId(): string;
21
+ getTemplate(): string;
22
+ onRender(): void;
23
+ onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
24
+ onDestroy(): void;
25
+ _setFormValues(): void;
26
+ /**
27
+ * Updates "Products in One Row" visibility based on layout orientation
28
+ * This control is hidden for list layout (products always take full width)
29
+ * Reads from node config first, falls back to DOM
30
+ */
31
+ _updateProductsInRowVisibility(): void;
32
+ _onProductCountChange(value: string): void;
33
+ _onProductsInRowChange(value: number): void;
34
+ _regenerateProductRows(): void;
35
+ _debouncedRegenerateProductRows: import("@vueuse/shared").PromisifyFn<() => void>;
36
+ _listenToFormUpdates(): void;
37
+ /**
38
+ * Subscribe to store changes to update visibility when layout changes
39
+ * This is still needed because layout changes come from LayoutControl
40
+ */
41
+ _listenStateUpdates(): void;
42
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Shuffle Products Control
3
+ *
4
+ * Handles the toggle for shuffling/randomizing recommended products.
5
+ * Configuration is stored via node config (persists with template).
6
+ */
7
+ import type { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
8
+ import { CommonControl } from '../../../common-control';
9
+ export declare const SHUFFLE_CONTROL_ID = "recommendation-shuffle-control";
10
+ /**
11
+ * Control for toggling product shuffle/randomization
12
+ */
13
+ export declare class ShuffleControl extends CommonControl {
14
+ private store;
15
+ getId(): string;
16
+ getTemplate(): string;
17
+ onRender(): void;
18
+ onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
19
+ _setFormValues(): void;
20
+ _initializeToggle(): void;
21
+ _onShuffleChange(value: boolean): void;
22
+ _listenToFormUpdates(): void;
23
+ }
@@ -0,0 +1,214 @@
1
+ /**
2
+ * Shared utilities for Recommendation block controls
3
+ *
4
+ * Provides common functionality used across multiple controls:
5
+ * - Layout detection from DOM
6
+ * - Card composition retrieval
7
+ * - Product row regeneration
8
+ * - Spacing reapplication
9
+ * - In-place content updates (style-preserving)
10
+ */
11
+ import type { CurrencyConfig } from '../../types/nodeConfig';
12
+ import type { RecommendationProduct } from '@@/Types/recommendation';
13
+ import type { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
14
+ import { ModificationDescription } from '@stripoinc/ui-editor-extensions';
15
+ import { type Orientation } from '../../templates';
16
+ /**
17
+ * Type for document modifier returned by api.getDocumentModifier()
18
+ *
19
+ * Uses `any` for the modifyHtml return type because:
20
+ * 1. Stripo's actual API uses complex generics (TemplateModifier<HtmlNodeModifier, CssNodeModifier>)
21
+ * 2. Multiple files define their own DocumentModifier with different methods
22
+ * 3. The methods (setStyle, setInnerHtml, setAttribute) chain and return the same object
23
+ *
24
+ * The actual chaining like modifier.modifyHtml(node).setStyle(...).setAttribute(...).apply()
25
+ * works correctly at runtime - this is just a TypeScript compatibility issue.
26
+ */
27
+ interface DocumentModifier {
28
+ modifyHtml: (node: ImmutableHtmlNode) => any;
29
+ apply: (description: ModificationDescription) => void;
30
+ }
31
+ /**
32
+ * Gets the block element from the current node
33
+ * The currentNode could BE the block element or contain it
34
+ * @param currentNode - The current template node
35
+ * @returns The block element or null if not found
36
+ */
37
+ export declare function getBlockElement(currentNode: ImmutableHtmlNode | null | undefined): ImmutableHtmlNode | null;
38
+ /**
39
+ * Gets the current layout orientation from the block's data attribute
40
+ * Supports both old (horizontal/vertical) and new (list/grid) values for backward compatibility
41
+ * @param currentNode - The current template node
42
+ * @returns The layout value ('grid' or 'list'), defaults to 'grid'
43
+ */
44
+ export declare function getCurrentLayout(currentNode: ImmutableHtmlNode | null | undefined): Orientation;
45
+ /**
46
+ * Gets the current card composition from block data attribute or use default
47
+ * @param currentNode - The current template node
48
+ * @returns Array of card element types in order
49
+ */
50
+ export declare function getCardComposition(currentNode: ImmutableHtmlNode | null | undefined): string[];
51
+ export interface RegenerateProductRowsOptions {
52
+ currentNode: ImmutableHtmlNode | null | undefined;
53
+ documentModifier: DocumentModifier;
54
+ afterRegenerate?: () => void;
55
+ /** Optional: pass products directly instead of reading from store */
56
+ products?: RecommendationProduct[];
57
+ /** Optional: pass layout directly to avoid stale DOM reads after setAttribute */
58
+ layout?: Orientation;
59
+ }
60
+ /**
61
+ * Regenerates product rows based on current store configuration
62
+ * Reads products, layout, and composition from store/DOM and rebuilds the HTML
63
+ * @param options - Configuration options for regeneration
64
+ */
65
+ export declare function regenerateProductRows(options: RegenerateProductRowsOptions): void;
66
+ export interface ReapplySpacingOptions {
67
+ currentNode: ImmutableHtmlNode | null | undefined;
68
+ documentModifier: DocumentModifier;
69
+ }
70
+ /**
71
+ * Reapplies spacing values from data attributes after product regeneration
72
+ * This ensures spacing persists when products are regenerated
73
+ * @param options - Configuration options
74
+ */
75
+ export declare function reapplySpacing(options: ReapplySpacingOptions): void;
76
+ export interface RegenerateWithStylesOptions extends Omit<RegenerateProductRowsOptions, 'products' | 'layout'> {
77
+ /** Skip style capture/restore if styles were already handled externally */
78
+ skipStylePreservation?: boolean;
79
+ /** Optional: pass products directly instead of reading from store */
80
+ products?: RecommendationProduct[];
81
+ /** Optional: pass layout directly to avoid stale DOM reads after setAttribute */
82
+ layout?: Orientation;
83
+ }
84
+ /**
85
+ * Regenerates product rows while preserving user-applied styles
86
+ *
87
+ * This unified function handles the complete regeneration flow:
88
+ * 1. Captures existing styles (fonts, colors, button styles, etc.)
89
+ * 2. Regenerates HTML with new products/layout
90
+ * 3. Restores captured styles to new elements
91
+ * 4. Reapplies spacing from data attributes
92
+ *
93
+ * NOTE: Style restoration is temporarily disabled due to Stripo selection bug.
94
+ * Multiple apply() calls (setInnerHtml + restoreStyles + reapplySpacing) cause
95
+ * Stripo's internal cursor/selection tracking to lose node references, resulting in
96
+ * "Cannot read properties of undefined (reading 'textContent')" errors.
97
+ *
98
+ * Use this instead of `regenerateProductRows` when styles must be preserved.
99
+ * @example
100
+ * // When products change (API response, count change, layout change)
101
+ * regenerateProductRowsWithStyles({
102
+ * currentNode: this.currentNode,
103
+ * documentModifier: this.api.getDocumentModifier(),
104
+ * });
105
+ * @param options - Configuration options for regeneration
106
+ */
107
+ export declare function regenerateProductRowsWithStyles(options: RegenerateWithStylesOptions): void;
108
+ type PriceKey = 'price' | 'original_price' | 'discount';
109
+ /**
110
+ * Formats a product price using current currency settings
111
+ * @param product - The product containing price data
112
+ * @param priceKey - Which price to use ('price', 'original_price', or 'discount')
113
+ * @returns Formatted price string
114
+ */
115
+ export declare function formatProductPrice(product: RecommendationProduct, priceKey?: PriceKey): string;
116
+ interface UpdateSingleProductContentOptions {
117
+ documentModifier: DocumentModifier;
118
+ product: RecommendationProduct;
119
+ imageEl: ImmutableHtmlNode | null;
120
+ nameEl: ImmutableHtmlNode | null;
121
+ priceEl: ImmutableHtmlNode | null;
122
+ oldPriceEl: ImmutableHtmlNode | null;
123
+ omnibusPriceEl: ImmutableHtmlNode | null;
124
+ omnibusDiscountEl: ImmutableHtmlNode | null;
125
+ buttonEl: ImmutableHtmlNode | null;
126
+ }
127
+ /**
128
+ * Updates a single product's dynamic content (image, name, prices, button URL)
129
+ * without touching the styled container elements.
130
+ *
131
+ * Uses setText() on text nodes instead of setInnerHtml() to preserve Stripo's
132
+ * internal node references and avoid cursor/selection tracking issues.
133
+ * @returns true if any modifications were made
134
+ */
135
+ export declare function updateSingleProductContent(options: UpdateSingleProductContentOptions): boolean;
136
+ export interface UpdateProductContentInPlaceOptions {
137
+ currentNode: ImmutableHtmlNode | null | undefined;
138
+ documentModifier: DocumentModifier;
139
+ products: RecommendationProduct[];
140
+ }
141
+ /**
142
+ * Updates product content in-place without regenerating HTML structure.
143
+ * Preserves all user-applied styles by only touching dynamic content.
144
+ *
145
+ * This is the preferred method when:
146
+ * - Product data changed but count remains the same
147
+ * - Currency/locale changed (prices need reformatting)
148
+ *
149
+ * Uses setText() on text nodes instead of setInnerHtml() to preserve
150
+ * Stripo's internal node references and avoid cursor/selection tracking issues.
151
+ *
152
+ * Falls back to false when:
153
+ * - Product count changed (need to add/remove elements)
154
+ * - Cannot find required elements
155
+ * @param options - Configuration options
156
+ * @returns true if in-place update was successful, false to fall back to full regeneration
157
+ */
158
+ export declare function updateProductContentInPlace(options: UpdateProductContentInPlaceOptions): boolean;
159
+ export interface UpdatePricesInPlaceOptions {
160
+ currentNode: ImmutableHtmlNode | null | undefined;
161
+ documentModifier: DocumentModifier;
162
+ }
163
+ /**
164
+ * Updates only price displays in-place (for currency changes).
165
+ * This is a lightweight update when only formatting changes, not product data.
166
+ *
167
+ * Perfect for:
168
+ * - Currency symbol change
169
+ * - Currency alignment change
170
+ * - Decimal/thousand separator changes
171
+ *
172
+ * Uses setText() on text nodes instead of setInnerHtml() to preserve
173
+ * Stripo's internal node references and avoid cursor/selection tracking issues.
174
+ * @param options - Configuration options
175
+ * @returns true if update was successful, false otherwise
176
+ */
177
+ export declare function updatePricesInPlace(options: UpdatePricesInPlaceOptions): boolean;
178
+ /**
179
+ * Gets current card background color from existing elements
180
+ * Checks both grid (.product-card-segment) and list (.product-card-wrapper) selectors
181
+ * @param currentNode - The current template node
182
+ * @returns Background color string or null if not found
183
+ */
184
+ export declare function getCurrentCardBackgroundColor(currentNode: ImmutableHtmlNode | null | undefined): string | null;
185
+ export interface ApplyCardBackgroundColorOptions {
186
+ currentNode: ImmutableHtmlNode | null | undefined;
187
+ documentModifier: DocumentModifier;
188
+ bgColor: string | null;
189
+ layout: Orientation;
190
+ }
191
+ /**
192
+ * Applies card background color to appropriate elements based on layout
193
+ * @param options - Configuration options
194
+ */
195
+ export declare function applyCardBackgroundColor(options: ApplyCardBackgroundColorOptions): void;
196
+ export interface SetCurrencyAttributesOptions {
197
+ currentNode: ImmutableHtmlNode | null | undefined;
198
+ documentModifier: DocumentModifier;
199
+ currency: CurrencyConfig;
200
+ }
201
+ /**
202
+ * Sets currency configuration as HTML attributes on the block element
203
+ * These attributes are read by the HTML compiler at runtime to format prices
204
+ * @param options - Configuration options
205
+ */
206
+ export declare function setCurrencyAttributes(options: SetCurrencyAttributesOptions): void;
207
+ /**
208
+ * Reads currency configuration from block HTML attributes
209
+ * Used to restore settings when loading a template
210
+ * @param currentNode - The current template node
211
+ * @returns CurrencyConfig or null if attributes not found
212
+ */
213
+ export declare function getCurrencyAttributesFromBlock(currentNode: ImmutableHtmlNode | null | undefined): Partial<CurrencyConfig> | null;
214
+ export {};
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Name Element Controls
3
+ *
4
+ * Controls for styling the product name element in recommendation cards.
5
+ */
6
+ import { NameTextTrimControl } from './textTrim';
7
+ /**
8
+ * Grouped Name Controls
9
+ * Use this object for cleaner imports in extension.ts
10
+ */
11
+ export declare const NameControls: {
12
+ readonly align: {
13
+ new (): {
14
+ getId(): string;
15
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
16
+ getParentControlId(): string;
17
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
18
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
19
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
20
+ getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
21
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
22
+ };
23
+ };
24
+ readonly color: {
25
+ new (): {
26
+ getId(): string;
27
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
28
+ getParentControlId(): string;
29
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
30
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
31
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
32
+ getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
33
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
34
+ };
35
+ };
36
+ readonly size: {
37
+ new (): {
38
+ getId(): string;
39
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
40
+ getParentControlId(): string;
41
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
42
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
43
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
44
+ getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
45
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
46
+ };
47
+ };
48
+ readonly style: {
49
+ new (): {
50
+ getId(): string;
51
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
52
+ getParentControlId(): string;
53
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
54
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
55
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
56
+ getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
57
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
58
+ };
59
+ };
60
+ readonly fontFamily: {
61
+ new (): {
62
+ getId(): string;
63
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
64
+ getParentControlId(): string;
65
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
66
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
67
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
68
+ getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
69
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
70
+ };
71
+ };
72
+ readonly background: {
73
+ new (): {
74
+ getId(): string;
75
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
76
+ getParentControlId(): string;
77
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
78
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
79
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
80
+ getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
81
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
82
+ };
83
+ };
84
+ readonly paddings: {
85
+ new (): {
86
+ getId(): string;
87
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
88
+ getParentControlId(): string;
89
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
90
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
91
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
92
+ getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
93
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
94
+ };
95
+ };
96
+ readonly textTrim: typeof NameTextTrimControl;
97
+ };
@@ -0,0 +1,16 @@
1
+ import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
2
+ import { CommonControl } from '../../../common-control';
3
+ /**
4
+ * Control for enabling/disabling text trimming on product names
5
+ * When enabled, adds a CSS class that applies text-overflow: ellipsis
6
+ */
7
+ export declare class NameTextTrimControl extends CommonControl {
8
+ getId(): string;
9
+ getTemplate(): string;
10
+ onRender(): void;
11
+ onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
12
+ _setFormValues(): void;
13
+ _getCurrentTrimState(): boolean;
14
+ _onTextTrimChange(enabled: boolean): void;
15
+ _listenToFormUpdates(): void;
16
+ }
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Old Price Element Controls
3
+ *
4
+ * Controls for styling the original/old price element in recommendation cards.
5
+ */
6
+ /**
7
+ * Grouped Old Price Controls
8
+ * Use this object for cleaner imports in extension.ts
9
+ */
10
+ export declare const OldPriceControls: {
11
+ readonly align: {
12
+ new (): {
13
+ getId(): string;
14
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
15
+ getParentControlId(): string;
16
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
17
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
18
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
19
+ getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
20
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
21
+ };
22
+ };
23
+ readonly color: {
24
+ new (): {
25
+ getId(): string;
26
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
27
+ getParentControlId(): string;
28
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
29
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
30
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
31
+ getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
32
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
33
+ };
34
+ };
35
+ readonly size: {
36
+ new (): {
37
+ getId(): string;
38
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
39
+ getParentControlId(): string;
40
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
41
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
42
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
43
+ getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
44
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
45
+ };
46
+ };
47
+ readonly style: {
48
+ new (): {
49
+ getId(): string;
50
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
51
+ getParentControlId(): string;
52
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
53
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
54
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
55
+ getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
56
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
57
+ };
58
+ };
59
+ readonly fontFamily: {
60
+ new (): {
61
+ getId(): string;
62
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
63
+ getParentControlId(): string;
64
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
65
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
66
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
67
+ getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
68
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
69
+ };
70
+ };
71
+ readonly background: {
72
+ new (): {
73
+ getId(): string;
74
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
75
+ getParentControlId(): string;
76
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
77
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
78
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
79
+ getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
80
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
81
+ };
82
+ };
83
+ readonly paddings: {
84
+ new (): {
85
+ getId(): string;
86
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
87
+ getParentControlId(): string;
88
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
89
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
90
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
91
+ getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
92
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
93
+ };
94
+ };
95
+ };