@useinsider/guido 2.1.0-beta.efb0c6b → 2.1.0-beta.f1f7f05

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 (327) hide show
  1. package/README.md +36 -0
  2. package/dist/@types/config/schemas.js +71 -66
  3. package/dist/components/Guido.vue.js +3 -3
  4. package/dist/components/Guido.vue2.js +74 -61
  5. package/dist/components/organisms/base/Toaster.vue.js +6 -6
  6. package/dist/components/organisms/email-preview/PreviewContainer.vue.js +3 -3
  7. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue.js +6 -6
  8. package/dist/components/organisms/email-preview/amp/AmpErrorModal.vue2.js +17 -13
  9. package/dist/components/organisms/email-preview/amp/AmpToggle.vue.js +6 -6
  10. package/dist/components/organisms/email-preview/amp/AmpToggle.vue2.js +14 -12
  11. package/dist/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue.js +18 -0
  12. package/dist/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue2.js +15 -0
  13. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue.js +16 -15
  14. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue2.js +14 -22
  15. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +5 -5
  16. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue2.js +2 -2
  17. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue.js +12 -11
  18. package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue.js +12 -10
  19. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue.js +11 -10
  20. package/dist/components/organisms/email-preview/mobile-preview/MobilePreview.vue2.js +15 -14
  21. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +15 -14
  22. package/dist/components/organisms/header/EditorActions.vue.js +21 -0
  23. package/dist/components/organisms/header/EditorActions.vue2.js +41 -0
  24. package/dist/components/organisms/header/EditorToolbar.vue.js +18 -0
  25. package/dist/components/organisms/header/EditorToolbar.vue2.js +17 -0
  26. package/dist/components/organisms/header/HeaderWrapper.vue.js +10 -9
  27. package/dist/components/organisms/header/LeftSlot.vue.js +11 -11
  28. package/dist/components/organisms/header/LeftSlot.vue2.js +27 -23
  29. package/dist/components/organisms/header/MiddleSlot.vue.js +7 -7
  30. package/dist/components/organisms/header/MiddleSlot.vue2.js +11 -15
  31. package/dist/components/organisms/header/RightSlot.vue.js +11 -14
  32. package/dist/components/organisms/header/RightSlot.vue2.js +13 -30
  33. package/dist/components/organisms/header/version-history/VersionHistory.vue.js +5 -5
  34. package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +15 -15
  35. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.js +1 -1
  36. package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue2.js +20 -19
  37. package/dist/composables/useActionsApi.js +37 -32
  38. package/dist/composables/useBlocksConfig.js +26 -16
  39. package/dist/composables/useHtmlValidator.js +114 -104
  40. package/dist/composables/useRecommendation.js +54 -21
  41. package/dist/config/compiler/recommendationCompilerRules.js +45 -39
  42. package/dist/config/compiler/utils/recommendationCompilerUtils.js +121 -0
  43. package/dist/config/migrator/index.js +9 -8
  44. package/dist/config/migrator/itemsBlockMigrator.js +355 -0
  45. package/dist/config/migrator/recommendationMigrator.js +2 -2
  46. package/dist/enums/academy.js +8 -0
  47. package/dist/enums/defaults.js +8 -4
  48. package/dist/enums/extensions/recommendationBlock.js +1 -1
  49. package/dist/enums/onboarding.js +1 -2
  50. package/dist/enums/recommendation.js +16 -15
  51. package/dist/enums/unsubscribe.js +20 -21
  52. package/dist/extensions/Blocks/Items/block.js +28 -41
  53. package/dist/extensions/Blocks/Items/controls/button/link.js +18 -37
  54. package/dist/extensions/Blocks/Items/controls/cardComposition.js +164 -96
  55. package/dist/extensions/Blocks/Items/controls/image/link.js +16 -35
  56. package/dist/extensions/Blocks/Items/controls/name/trimming.js +30 -42
  57. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +35 -45
  58. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +56 -59
  59. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +45 -48
  60. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +23 -34
  61. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +47 -57
  62. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +75 -0
  63. package/dist/extensions/Blocks/Items/controls/settingsControl.js +198 -184
  64. package/dist/extensions/Blocks/Items/enums/controlEnums.js +2 -2
  65. package/dist/extensions/Blocks/Items/enums/productEnums.js +43 -45
  66. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +3 -6
  67. package/dist/extensions/Blocks/Items/extension.js +7 -6
  68. package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +58 -49
  69. package/dist/extensions/Blocks/Items/layouts/vertical.html.js +48 -59
  70. package/dist/extensions/Blocks/Items/settingsPanel.js +28 -32
  71. package/dist/extensions/Blocks/Items/template.js +397 -143
  72. package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +176 -0
  73. package/dist/extensions/Blocks/Recommendation/block.js +133 -9
  74. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +4 -0
  75. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +4 -0
  76. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +66 -0
  77. package/dist/extensions/Blocks/Recommendation/constants/layout.js +22 -0
  78. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +21 -0
  79. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +64 -0
  80. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +80 -0
  81. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +232 -0
  82. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +19 -0
  83. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +92 -0
  84. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +102 -0
  85. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +209 -0
  86. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +52 -0
  87. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +250 -0
  88. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +70 -0
  89. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +160 -0
  90. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +67 -0
  91. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +307 -0
  92. package/dist/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js +21 -0
  93. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +46 -0
  94. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +108 -0
  95. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +44 -0
  96. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +48 -0
  97. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +73 -0
  98. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +73 -0
  99. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +48 -0
  100. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +73 -0
  101. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +73 -0
  102. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +44 -0
  103. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +222 -0
  104. package/dist/extensions/Blocks/Recommendation/extension.js +40 -43
  105. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +19 -3
  106. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +13 -4
  107. package/dist/extensions/Blocks/Recommendation/services/configService.js +240 -0
  108. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +128 -72
  109. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +254 -207
  110. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +228 -0
  111. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +251 -0
  112. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +66 -0
  113. package/dist/extensions/Blocks/Recommendation/templates/index.js +12 -0
  114. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +169 -0
  115. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +73 -0
  116. package/dist/extensions/Blocks/Recommendation/templates/utils.js +134 -0
  117. package/dist/extensions/Blocks/Recommendation/types/nodeConfig.js +6 -0
  118. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
  119. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +36 -0
  120. package/dist/extensions/Blocks/Recommendation/utils/priceFormatter.js +29 -0
  121. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +46 -0
  122. package/dist/extensions/Blocks/common-control.js +104 -106
  123. package/dist/extensions/Blocks/controlFactories.js +162 -120
  124. package/dist/extensions/ModulesTabIcons/extension.js +17 -0
  125. package/dist/guido.css +1 -1
  126. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +520 -322
  127. package/dist/package.json.js +1 -1
  128. package/dist/services/recommendationApi.js +11 -8
  129. package/dist/services/templateLibraryApi.js +16 -13
  130. package/dist/src/@types/config/schemas.d.ts +10 -2
  131. package/dist/src/components/organisms/email-preview/desktop-preview/DesktopBrowserHeader.vue.d.ts +2 -0
  132. package/dist/src/components/organisms/header/EditorActions.vue.d.ts +4 -0
  133. package/dist/src/components/organisms/header/EditorToolbar.vue.d.ts +2 -0
  134. package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
  135. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +1 -1
  136. package/dist/src/composables/useActionsApi.d.ts +1 -0
  137. package/dist/src/composables/useConfig.d.ts +4 -0
  138. package/dist/src/composables/useRecommendation.d.ts +1 -0
  139. package/dist/src/config/compiler/utils/recommendationCompilerUtils.d.ts +17 -0
  140. package/dist/src/config/migrator/itemsBlockMigrator.d.ts +6 -0
  141. package/dist/src/enums/academy.d.ts +12 -0
  142. package/dist/src/enums/defaults.d.ts +4 -0
  143. package/dist/src/enums/onboarding.d.ts +0 -1
  144. package/dist/src/enums/unsubscribe.d.ts +0 -1
  145. package/dist/src/extensions/Blocks/Items/block.d.ts +0 -1
  146. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -3
  147. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +13 -4
  148. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -3
  149. package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +0 -1
  150. package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +0 -1
  151. package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +0 -1
  152. package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +0 -1
  153. package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +0 -1
  154. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +1 -2
  155. package/dist/src/extensions/Blocks/Items/controls/price/singlePrice.d.ts +13 -0
  156. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +10 -16
  157. package/dist/src/extensions/Blocks/Items/enums/controlEnums.d.ts +1 -0
  158. package/dist/src/extensions/Blocks/Items/enums/productEnums.d.ts +24 -26
  159. package/dist/src/extensions/Blocks/Items/enums/settingsEnums.d.ts +1 -2
  160. package/dist/src/extensions/Blocks/Items/template.d.ts +22 -1
  161. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +77 -0
  162. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +67 -0
  163. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +13 -0
  164. package/dist/src/extensions/Blocks/Recommendation/{constants.d.ts → constants/controlIds.d.ts} +19 -11
  165. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +49 -0
  166. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +13 -0
  167. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +41 -0
  168. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +35 -0
  169. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +143 -0
  170. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +31 -0
  171. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.d.ts +25 -0
  172. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +95 -0
  173. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +35 -0
  174. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +24 -0
  175. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +37 -0
  176. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +29 -0
  177. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +52 -0
  178. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +22 -0
  179. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +79 -0
  180. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +24 -0
  181. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +60 -0
  182. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +23 -0
  183. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +221 -0
  184. package/dist/src/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.d.ts +29 -0
  185. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +97 -0
  186. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +34 -0
  187. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +95 -0
  188. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +100 -0
  189. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +15 -0
  190. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +15 -0
  191. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.d.ts +15 -0
  192. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.d.ts +15 -0
  193. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +100 -0
  194. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +15 -0
  195. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +15 -0
  196. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.d.ts +15 -0
  197. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.d.ts +15 -0
  198. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +95 -0
  199. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +83 -0
  200. package/dist/src/extensions/Blocks/Recommendation/controls/spacingControl.d.ts +60 -0
  201. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +9 -0
  202. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +151 -0
  203. package/dist/src/extensions/Blocks/Recommendation/services/index.d.ts +6 -0
  204. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +138 -468
  205. package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +20 -0
  206. package/dist/src/extensions/Blocks/Recommendation/templates/{migrationTemplate.d.ts → grid/migration.d.ts} +11 -4
  207. package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +33 -0
  208. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +41 -0
  209. package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +8 -0
  210. package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +25 -0
  211. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +18 -0
  212. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +66 -0
  213. package/dist/src/extensions/Blocks/Recommendation/types/index.d.ts +7 -0
  214. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +166 -0
  215. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +19 -0
  216. package/dist/src/extensions/Blocks/Recommendation/utils/priceFormatter.d.ts +33 -0
  217. package/dist/src/extensions/Blocks/Recommendation/utils/stylePreserver.d.ts +113 -0
  218. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +77 -0
  219. package/dist/src/extensions/Blocks/common-control.d.ts +10 -12
  220. package/dist/src/extensions/ModulesTabIcons/extension.d.ts +2 -0
  221. package/dist/src/stores/config.d.ts +36 -0
  222. package/dist/src/stores/editor.d.ts +21 -0
  223. package/dist/static/assets/desktop/desktop-mockup-center.svg.js +4 -0
  224. package/dist/static/assets/desktop/desktop-mockup-left.svg.js +4 -0
  225. package/dist/static/assets/desktop/desktop-mockup-right.svg.js +4 -0
  226. package/dist/static/assets/mobile/email-mockup.svg.js +4 -0
  227. package/dist/static/assets/mobile/inbox-mockup.svg.js +4 -0
  228. package/dist/static/styles/components/notification.css.js +1 -0
  229. package/dist/static/styles/components/version-history.css.js +10 -2
  230. package/dist/static/styles/components/wide-panel.css.js +18 -6
  231. package/dist/static/styles/customEditorStyle.css.js +39 -2
  232. package/dist/stores/editor.js +1 -0
  233. package/dist/utils/pairProductVariables.js +74 -70
  234. package/dist/utils/templatePreparation.js +19 -18
  235. package/package.json +3 -3
  236. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue.js +0 -17
  237. package/dist/components/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue2.js +0 -20
  238. package/dist/extensions/Blocks/Items/store/items-block.js +0 -75
  239. package/dist/extensions/Blocks/Items/utils/configBlockUtils.js +0 -17
  240. package/dist/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.js +0 -28
  241. package/dist/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.js +0 -76
  242. package/dist/extensions/Blocks/Items/utils/updateAttributes.js +0 -46
  243. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +0 -103
  244. package/dist/extensions/Blocks/Recommendation/constants.js +0 -5
  245. package/dist/extensions/Blocks/Recommendation/control.js +0 -306
  246. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +0 -13
  247. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +0 -13
  248. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +0 -13
  249. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +0 -13
  250. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +0 -13
  251. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +0 -13
  252. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +0 -13
  253. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +0 -13
  254. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +0 -13
  255. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +0 -13
  256. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +0 -13
  257. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +0 -13
  258. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +0 -13
  259. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +0 -13
  260. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +0 -13
  261. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +0 -13
  262. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +0 -13
  263. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +0 -13
  264. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +0 -13
  265. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +0 -13
  266. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +0 -13
  267. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +0 -13
  268. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +0 -13
  269. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +0 -13
  270. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +0 -13
  271. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +0 -13
  272. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +0 -13
  273. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +0 -13
  274. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +0 -13
  275. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +0 -13
  276. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +0 -13
  277. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +0 -13
  278. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +0 -13
  279. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +0 -13
  280. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +0 -160
  281. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +0 -152
  282. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +0 -180
  283. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +0 -43
  284. package/dist/src/extensions/Blocks/Items/utils/configBlockUtils.d.ts +0 -23
  285. package/dist/src/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.d.ts +0 -32
  286. package/dist/src/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.d.ts +0 -50
  287. package/dist/src/extensions/Blocks/Items/utils/updateAttributes.d.ts +0 -8
  288. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +0 -28
  289. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +0 -35
  290. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +0 -5
  291. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +0 -5
  292. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +0 -5
  293. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +0 -5
  294. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +0 -5
  295. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +0 -5
  296. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +0 -5
  297. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +0 -5
  298. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +0 -5
  299. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +0 -5
  300. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +0 -5
  301. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +0 -5
  302. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +0 -5
  303. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +0 -5
  304. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +0 -5
  305. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +0 -5
  306. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +0 -5
  307. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +0 -5
  308. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +0 -5
  309. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +0 -5
  310. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +0 -5
  311. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +0 -5
  312. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +0 -5
  313. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +0 -5
  314. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +0 -5
  315. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +0 -5
  316. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +0 -5
  317. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +0 -5
  318. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +0 -5
  319. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +0 -5
  320. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +0 -5
  321. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +0 -5
  322. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +0 -5
  323. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +0 -5
  324. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +0 -16
  325. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +0 -44
  326. package/dist/static/assets/inbox-mockup.svg.js +0 -4
  327. package/dist/static/assets/phone-mockup.svg.js +0 -4
@@ -0,0 +1,221 @@
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 only the mobile product container rows.
62
+ * Used when mobile-specific settings change (mobileCardsInRow)
63
+ * or when the desktop container is regenerated (to keep both in sync).
64
+ */
65
+ export declare function regenerateMobileProductRows(options: Omit<RegenerateProductRowsOptions, 'afterRegenerate'>): void;
66
+ /**
67
+ * Regenerates product rows in the desktop container based on current store configuration.
68
+ * Also regenerates the mobile container to keep both in sync.
69
+ * Reads products, layout, and composition from store/DOM and rebuilds the HTML.
70
+ * @param options - Configuration options for regeneration
71
+ */
72
+ export declare function regenerateProductRows(options: RegenerateProductRowsOptions): void;
73
+ export interface ReapplySpacingOptions {
74
+ currentNode: ImmutableHtmlNode | null | undefined;
75
+ documentModifier: DocumentModifier;
76
+ }
77
+ /**
78
+ * Reapplies spacing values from data attributes after product regeneration
79
+ * This ensures spacing persists when products are regenerated
80
+ * @param options - Configuration options
81
+ */
82
+ export declare function reapplySpacing(options: ReapplySpacingOptions): void;
83
+ export interface RegenerateWithStylesOptions extends Omit<RegenerateProductRowsOptions, 'products' | 'layout'> {
84
+ /** Skip style capture/restore if styles were already handled externally */
85
+ skipStylePreservation?: boolean;
86
+ /** Optional: pass products directly instead of reading from store */
87
+ products?: RecommendationProduct[];
88
+ /** Optional: pass layout directly to avoid stale DOM reads after setAttribute */
89
+ layout?: Orientation;
90
+ }
91
+ /**
92
+ * Regenerates product rows while preserving user-applied styles
93
+ *
94
+ * This unified function handles the complete regeneration flow:
95
+ * 1. Captures existing styles (fonts, colors, button styles, etc.)
96
+ * 2. Regenerates HTML with new products/layout
97
+ * 3. Restores captured styles to new elements
98
+ * 4. Reapplies spacing from data attributes
99
+ *
100
+ * NOTE: Style restoration is temporarily disabled due to Stripo selection bug.
101
+ * Multiple apply() calls (setInnerHtml + restoreStyles + reapplySpacing) cause
102
+ * Stripo's internal cursor/selection tracking to lose node references, resulting in
103
+ * "Cannot read properties of undefined (reading 'textContent')" errors.
104
+ *
105
+ * Use this instead of `regenerateProductRows` when styles must be preserved.
106
+ * @example
107
+ * // When products change (API response, count change, layout change)
108
+ * regenerateProductRowsWithStyles({
109
+ * currentNode: this.currentNode,
110
+ * documentModifier: this.api.getDocumentModifier(),
111
+ * });
112
+ * @param options - Configuration options for regeneration
113
+ */
114
+ export declare function regenerateProductRowsWithStyles(options: RegenerateWithStylesOptions): void;
115
+ type PriceKey = 'price' | 'original_price' | 'discount';
116
+ /**
117
+ * Formats a product price using current currency settings
118
+ * @param product - The product containing price data
119
+ * @param priceKey - Which price to use ('price', 'original_price', or 'discount')
120
+ * @returns Formatted price string
121
+ */
122
+ export declare function formatProductPrice(product: RecommendationProduct, priceKey?: PriceKey): string;
123
+ interface UpdateSingleProductContentOptions {
124
+ documentModifier: DocumentModifier;
125
+ product: RecommendationProduct;
126
+ imageEl: ImmutableHtmlNode | null;
127
+ nameEl: ImmutableHtmlNode | null;
128
+ priceEl: ImmutableHtmlNode | null;
129
+ oldPriceEl: ImmutableHtmlNode | null;
130
+ omnibusPriceEl: ImmutableHtmlNode | null;
131
+ omnibusDiscountEl: ImmutableHtmlNode | null;
132
+ buttonEl: ImmutableHtmlNode | null;
133
+ }
134
+ /**
135
+ * Updates a single product's dynamic content (image, name, prices, button URL)
136
+ * without touching the styled container elements.
137
+ *
138
+ * Uses setText() on text nodes instead of setInnerHtml() to preserve Stripo's
139
+ * internal node references and avoid cursor/selection tracking issues.
140
+ * @returns true if any modifications were made
141
+ */
142
+ export declare function updateSingleProductContent(options: UpdateSingleProductContentOptions): boolean;
143
+ export interface UpdateProductContentInPlaceOptions {
144
+ currentNode: ImmutableHtmlNode | null | undefined;
145
+ documentModifier: DocumentModifier;
146
+ products: RecommendationProduct[];
147
+ }
148
+ /**
149
+ * Updates product content in-place without regenerating HTML structure.
150
+ * Preserves all user-applied styles by only touching dynamic content.
151
+ *
152
+ * This is the preferred method when:
153
+ * - Product data changed but count remains the same
154
+ * - Currency/locale changed (prices need reformatting)
155
+ *
156
+ * Uses setText() on text nodes instead of setInnerHtml() to preserve
157
+ * Stripo's internal node references and avoid cursor/selection tracking issues.
158
+ *
159
+ * Falls back to false when:
160
+ * - Product count changed (need to add/remove elements)
161
+ * - Cannot find required elements
162
+ * @param options - Configuration options
163
+ * @returns true if in-place update was successful, false to fall back to full regeneration
164
+ */
165
+ export declare function updateProductContentInPlace(options: UpdateProductContentInPlaceOptions): boolean;
166
+ export interface UpdatePricesInPlaceOptions {
167
+ currentNode: ImmutableHtmlNode | null | undefined;
168
+ documentModifier: DocumentModifier;
169
+ }
170
+ /**
171
+ * Updates only price displays in-place (for currency changes).
172
+ * This is a lightweight update when only formatting changes, not product data.
173
+ *
174
+ * Perfect for:
175
+ * - Currency symbol change
176
+ * - Currency alignment change
177
+ * - Decimal/thousand separator changes
178
+ *
179
+ * Uses setText() on text nodes instead of setInnerHtml() to preserve
180
+ * Stripo's internal node references and avoid cursor/selection tracking issues.
181
+ * @param options - Configuration options
182
+ * @returns true if update was successful, false otherwise
183
+ */
184
+ export declare function updatePricesInPlace(options: UpdatePricesInPlaceOptions): boolean;
185
+ /**
186
+ * Gets current card background color from existing elements
187
+ * Checks both grid (.product-card-segment) and list (.product-card-wrapper) selectors
188
+ * @param currentNode - The current template node
189
+ * @returns Background color string or null if not found
190
+ */
191
+ export declare function getCurrentCardBackgroundColor(currentNode: ImmutableHtmlNode | null | undefined): string | null;
192
+ export interface ApplyCardBackgroundColorOptions {
193
+ currentNode: ImmutableHtmlNode | null | undefined;
194
+ documentModifier: DocumentModifier;
195
+ bgColor: string | null;
196
+ layout: Orientation;
197
+ }
198
+ /**
199
+ * Applies card background color to appropriate elements based on layout
200
+ * @param options - Configuration options
201
+ */
202
+ export declare function applyCardBackgroundColor(options: ApplyCardBackgroundColorOptions): void;
203
+ export interface SetCurrencyAttributesOptions {
204
+ currentNode: ImmutableHtmlNode | null | undefined;
205
+ documentModifier: DocumentModifier;
206
+ currency: CurrencyConfig;
207
+ }
208
+ /**
209
+ * Sets currency configuration as HTML attributes on the block element
210
+ * These attributes are read by the HTML compiler at runtime to format prices
211
+ * @param options - Configuration options
212
+ */
213
+ export declare function setCurrencyAttributes(options: SetCurrencyAttributesOptions): void;
214
+ /**
215
+ * Reads currency configuration from block HTML attributes
216
+ * Used to restore settings when loading a template
217
+ * @param currentNode - The current template node
218
+ * @returns CurrencyConfig or null if attributes not found
219
+ */
220
+ export declare function getCurrencyAttributesFromBlock(currentNode: ImmutableHtmlNode | null | undefined): Partial<CurrencyConfig> | null;
221
+ export {};
@@ -0,0 +1,29 @@
1
+ /**
2
+ * CSS rules for mobile grid layout visibility switching
3
+ *
4
+ * Follows the modifyCss pattern from textTrim control.
5
+ * Rules are injected into the document's stylesheet via modifyCss
6
+ * so they appear in the compiled HTML export.
7
+ */
8
+ import type { ImmutableCssNode } from '@stripoinc/ui-editor-extensions';
9
+ import { ModificationDescription } from '@stripoinc/ui-editor-extensions';
10
+ /** CSS class for desktop product container */
11
+ export declare const CSS_CLASS_DESKTOP_CONTAINER = "ins-recommendation-desktop-container";
12
+ /** CSS class for mobile product container */
13
+ export declare const CSS_CLASS_MOBILE_CONTAINER = "ins-recommendation-mobile-container";
14
+ interface CssModifierApi {
15
+ getDocumentRootCssNode: () => ImmutableCssNode | null;
16
+ getDocumentModifier: () => {
17
+ modifyCss: (node: ImmutableCssNode) => {
18
+ appendRule: (rule: string) => void;
19
+ };
20
+ apply: (desc: ModificationDescription) => void;
21
+ };
22
+ }
23
+ /**
24
+ * Ensures mobile layout CSS rules exist in the document stylesheet.
25
+ * Only adds rules if they don't already exist (prevents duplicates across multiple blocks).
26
+ * Follows the same pattern as textTrim's _ensureCssRulesExist().
27
+ */
28
+ export declare function ensureMobileCssRulesExist(api: CssModifierApi): void;
29
+ 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,34 @@
1
+ import { ImmutableCssNode, 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
+ * and injects the required CSS rules into the document stylesheet
7
+ */
8
+ export declare class NameTextTrimControl extends CommonControl {
9
+ getId(): string;
10
+ getTemplate(): string;
11
+ onRender(): void;
12
+ onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
13
+ _setFormValues(): void;
14
+ _getCurrentTrimState(): boolean;
15
+ /**
16
+ * Finds an existing CSS rule in the document stylesheet by exact query
17
+ * @param query - The CSS query to search for (uses Stripo's CSS query syntax)
18
+ * @returns The CSS rule node if found, undefined otherwise
19
+ */
20
+ _findCssRule(query: string): ImmutableCssNode | undefined;
21
+ /**
22
+ * Finds the .text-trim-enabled p rule by searching all text-trim rules and comparing selectors
23
+ * This is needed because Stripo's CSS query syntax interprets spaces as path separators
24
+ * @returns true if the rule exists
25
+ */
26
+ _hasParagraphRule(): boolean;
27
+ /**
28
+ * Ensures the text-trim CSS rules exist in the document stylesheet
29
+ * Only adds rules if they don't already exist (prevents duplicates across multiple blocks)
30
+ */
31
+ _ensureCssRulesExist(): void;
32
+ _onTextTrimChange(enabled: boolean): void;
33
+ _listenToFormUpdates(): void;
34
+ }
@@ -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
+ };
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Omnibus Discount Element Controls
3
+ *
4
+ * Controls for styling the omnibus discount element in recommendation cards.
5
+ * Includes text before/after controls for compliance text.
6
+ */
7
+ import { OmnibusDiscountTextAfterControl } from './textAfter';
8
+ import { OmnibusDiscountTextBeforeControl } from './textBefore';
9
+ /**
10
+ * Grouped Omnibus Discount Controls
11
+ * Use this object for cleaner imports in extension.ts
12
+ */
13
+ export declare const OmnibusDiscountControls: {
14
+ readonly align: {
15
+ new (): {
16
+ getId(): string;
17
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
18
+ getParentControlId(): string;
19
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
20
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
21
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
22
+ 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;
23
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
24
+ };
25
+ };
26
+ readonly color: {
27
+ new (): {
28
+ getId(): string;
29
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
30
+ getParentControlId(): string;
31
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
32
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
33
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
34
+ 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;
35
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
36
+ };
37
+ };
38
+ readonly size: {
39
+ new (): {
40
+ getId(): string;
41
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
42
+ getParentControlId(): string;
43
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
44
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
45
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
46
+ 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;
47
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
48
+ };
49
+ };
50
+ readonly style: {
51
+ new (): {
52
+ getId(): string;
53
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
54
+ getParentControlId(): string;
55
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
56
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
57
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
58
+ 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;
59
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
60
+ };
61
+ };
62
+ readonly fontFamily: {
63
+ new (): {
64
+ getId(): string;
65
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
66
+ getParentControlId(): string;
67
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
68
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
69
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
70
+ 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;
71
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
72
+ };
73
+ };
74
+ readonly background: {
75
+ new (): {
76
+ getId(): string;
77
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
78
+ getParentControlId(): string;
79
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
80
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
81
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
82
+ 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;
83
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
84
+ };
85
+ };
86
+ readonly paddings: {
87
+ new (): {
88
+ getId(): string;
89
+ getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
90
+ getParentControlId(): string;
91
+ api: import("@stripoinc/ui-editor-extensions").ControlApi;
92
+ getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
93
+ getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
94
+ 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;
95
+ isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
96
+ };
97
+ };
98
+ readonly textBefore: typeof OmnibusDiscountTextBeforeControl;
99
+ readonly textAfter: typeof OmnibusDiscountTextAfterControl;
100
+ };
@@ -0,0 +1,15 @@
1
+ import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
2
+ import { CommonControl } from '../../../common-control';
3
+ /**
4
+ * Control for setting text after Omnibus Discount value
5
+ */
6
+ export declare class OmnibusDiscountTextAfterControl extends CommonControl {
7
+ getId(): string;
8
+ getTemplate(): string;
9
+ onRender(): void;
10
+ onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
11
+ _setFormValues(): void;
12
+ _getCurrentText(): string;
13
+ _onTextChange(newText: string): void;
14
+ _listenToFormUpdates(): void;
15
+ }
@@ -0,0 +1,15 @@
1
+ import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
2
+ import { CommonControl } from '../../../common-control';
3
+ /**
4
+ * Control for setting text before Omnibus Discount value
5
+ */
6
+ export declare class OmnibusDiscountTextBeforeControl extends CommonControl {
7
+ getId(): string;
8
+ getTemplate(): string;
9
+ onRender(): void;
10
+ onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
11
+ _setFormValues(): void;
12
+ _getCurrentText(): string;
13
+ _onTextChange(newText: string): void;
14
+ _listenToFormUpdates(): void;
15
+ }
@@ -0,0 +1,15 @@
1
+ import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
2
+ import { CommonControl } from '../../common-control';
3
+ /**
4
+ * Control for setting text after Omnibus Discount value
5
+ */
6
+ export declare class OmnibusDiscountTextAfterControl extends CommonControl {
7
+ getId(): string;
8
+ getTemplate(): string;
9
+ onRender(): void;
10
+ onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
11
+ _setFormValues(): void;
12
+ _getCurrentText(): string;
13
+ _onTextChange(newText: string): void;
14
+ _listenToFormUpdates(): void;
15
+ }
@@ -0,0 +1,15 @@
1
+ import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
2
+ import { CommonControl } from '../../common-control';
3
+ /**
4
+ * Control for setting text before Omnibus Discount value
5
+ */
6
+ export declare class OmnibusDiscountTextBeforeControl extends CommonControl {
7
+ getId(): string;
8
+ getTemplate(): string;
9
+ onRender(): void;
10
+ onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
11
+ _setFormValues(): void;
12
+ _getCurrentText(): string;
13
+ _onTextChange(newText: string): void;
14
+ _listenToFormUpdates(): void;
15
+ }