@useinsider/guido 2.1.0-beta.febc521 → 2.1.0-beta.ff20f87

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 (268) hide show
  1. package/README.md +36 -0
  2. package/dist/@types/config/schemas.js +71 -66
  3. package/dist/components/Guido.vue.js +1 -1
  4. package/dist/components/Guido.vue2.js +69 -58
  5. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +15 -14
  6. package/dist/components/organisms/header/HeaderWrapper.vue.js +9 -9
  7. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue.js +1 -1
  8. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue2.js +19 -19
  9. package/dist/composables/useActionsApi.js +15 -13
  10. package/dist/composables/useBlocksConfig.js +26 -16
  11. package/dist/composables/useHtmlValidator.js +114 -104
  12. package/dist/composables/useRecommendation.js +54 -21
  13. package/dist/config/compiler/recommendationCompilerRules.js +45 -39
  14. package/dist/config/compiler/utils/recommendationCompilerUtils.js +121 -0
  15. package/dist/config/migrator/itemsBlockMigrator.js +138 -117
  16. package/dist/config/migrator/recommendationMigrator.js +2 -2
  17. package/dist/enums/defaults.js +8 -4
  18. package/dist/enums/extensions/recommendationBlock.js +1 -1
  19. package/dist/enums/recommendation.js +16 -15
  20. package/dist/extensions/Blocks/Items/block.js +19 -28
  21. package/dist/extensions/Blocks/Items/controls/button/link.js +19 -31
  22. package/dist/extensions/Blocks/Items/controls/cardComposition.js +137 -89
  23. package/dist/extensions/Blocks/Items/controls/image/link.js +19 -31
  24. package/dist/extensions/Blocks/Items/controls/name/trimming.js +28 -40
  25. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +35 -47
  26. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +49 -54
  27. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +42 -51
  28. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +23 -36
  29. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +45 -57
  30. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +42 -60
  31. package/dist/extensions/Blocks/Items/controls/settingsControl.js +189 -196
  32. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +0 -2
  33. package/dist/extensions/Blocks/Items/extension.js +8 -9
  34. package/dist/extensions/Blocks/Items/settingsPanel.js +10 -15
  35. package/dist/extensions/Blocks/Items/template.js +181 -175
  36. package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +65 -65
  37. package/dist/extensions/Blocks/Recommendation/block.js +133 -9
  38. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +4 -0
  39. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +4 -0
  40. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +66 -0
  41. package/dist/extensions/Blocks/Recommendation/constants/layout.js +22 -0
  42. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +21 -0
  43. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +64 -0
  44. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +80 -0
  45. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +232 -0
  46. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +19 -0
  47. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +92 -0
  48. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +102 -0
  49. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +209 -0
  50. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +52 -0
  51. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +250 -0
  52. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +70 -0
  53. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +160 -0
  54. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +67 -0
  55. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +307 -0
  56. package/dist/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js +21 -0
  57. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +46 -0
  58. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +108 -0
  59. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +44 -0
  60. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +48 -0
  61. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +73 -0
  62. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +73 -0
  63. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +48 -0
  64. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +73 -0
  65. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +73 -0
  66. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +44 -0
  67. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +222 -0
  68. package/dist/extensions/Blocks/Recommendation/extension.js +40 -43
  69. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +19 -3
  70. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +13 -4
  71. package/dist/extensions/Blocks/Recommendation/services/configService.js +240 -0
  72. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +128 -72
  73. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +254 -207
  74. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +228 -0
  75. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +251 -0
  76. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +66 -0
  77. package/dist/extensions/Blocks/Recommendation/templates/index.js +12 -0
  78. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +169 -0
  79. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +73 -0
  80. package/dist/extensions/Blocks/Recommendation/templates/utils.js +134 -0
  81. package/dist/extensions/Blocks/Recommendation/types/nodeConfig.js +6 -0
  82. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
  83. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +36 -0
  84. package/dist/extensions/Blocks/Recommendation/utils/priceFormatter.js +29 -0
  85. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +46 -0
  86. package/dist/extensions/Blocks/Unsubscribe/block.js +29 -29
  87. package/dist/extensions/Blocks/Unsubscribe/control.js +12 -9
  88. package/dist/extensions/Blocks/Unsubscribe/elements/preview.js +13 -11
  89. package/dist/extensions/Blocks/Unsubscribe/styles.css.js +31 -1
  90. package/dist/extensions/Blocks/common-control.js +91 -92
  91. package/dist/extensions/Blocks/controlFactories.js +125 -93
  92. package/dist/extensions/ModulesTabIcons/extension.js +17 -0
  93. package/dist/guido.css +1 -1
  94. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +317 -198
  95. package/dist/package.json.js +1 -1
  96. package/dist/services/recommendationApi.js +11 -8
  97. package/dist/services/stripoApi.js +20 -17
  98. package/dist/services/templateLibraryApi.js +16 -13
  99. package/dist/src/@types/config/schemas.d.ts +10 -2
  100. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +1 -1
  101. package/dist/src/composables/useConfig.d.ts +4 -0
  102. package/dist/src/composables/useRecommendation.d.ts +1 -0
  103. package/dist/src/config/compiler/utils/recommendationCompilerUtils.d.ts +17 -0
  104. package/dist/src/enums/defaults.d.ts +4 -0
  105. package/dist/src/extensions/Blocks/Items/block.d.ts +0 -1
  106. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -1
  107. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +5 -5
  108. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -1
  109. package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +0 -1
  110. package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +0 -1
  111. package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +0 -1
  112. package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +0 -1
  113. package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +0 -1
  114. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +0 -1
  115. package/dist/src/extensions/Blocks/Items/controls/price/singlePrice.d.ts +0 -5
  116. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +10 -12
  117. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +2 -1
  118. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +67 -0
  119. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +13 -0
  120. package/dist/src/extensions/Blocks/Recommendation/{constants.d.ts → constants/controlIds.d.ts} +19 -11
  121. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +49 -0
  122. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +13 -0
  123. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +41 -0
  124. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +35 -0
  125. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +143 -0
  126. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +31 -0
  127. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.d.ts +25 -0
  128. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +95 -0
  129. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +35 -0
  130. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +24 -0
  131. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +37 -0
  132. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +29 -0
  133. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +52 -0
  134. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +22 -0
  135. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +79 -0
  136. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +24 -0
  137. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +60 -0
  138. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +23 -0
  139. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +221 -0
  140. package/dist/src/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.d.ts +29 -0
  141. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +97 -0
  142. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +34 -0
  143. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +95 -0
  144. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +100 -0
  145. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +15 -0
  146. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +15 -0
  147. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.d.ts +15 -0
  148. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.d.ts +15 -0
  149. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +100 -0
  150. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +15 -0
  151. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +15 -0
  152. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.d.ts +15 -0
  153. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.d.ts +15 -0
  154. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +95 -0
  155. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +83 -0
  156. package/dist/src/extensions/Blocks/Recommendation/controls/spacingControl.d.ts +60 -0
  157. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +9 -0
  158. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +151 -0
  159. package/dist/src/extensions/Blocks/Recommendation/services/index.d.ts +6 -0
  160. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +138 -468
  161. package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +20 -0
  162. package/dist/src/extensions/Blocks/Recommendation/templates/{migrationTemplate.d.ts → grid/migration.d.ts} +11 -4
  163. package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +33 -0
  164. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +41 -0
  165. package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +8 -0
  166. package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +25 -0
  167. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +18 -0
  168. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +66 -0
  169. package/dist/src/extensions/Blocks/Recommendation/types/index.d.ts +7 -0
  170. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +166 -0
  171. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +19 -0
  172. package/dist/src/extensions/Blocks/Recommendation/utils/priceFormatter.d.ts +33 -0
  173. package/dist/src/extensions/Blocks/Recommendation/utils/stylePreserver.d.ts +113 -0
  174. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +77 -0
  175. package/dist/src/extensions/Blocks/Unsubscribe/control.d.ts +1 -0
  176. package/dist/src/extensions/Blocks/common-control.d.ts +4 -5
  177. package/dist/src/extensions/ModulesTabIcons/extension.d.ts +2 -0
  178. package/dist/src/stores/config.d.ts +36 -0
  179. package/dist/static/styles/components/notification.css.js +1 -0
  180. package/dist/static/styles/components/version-history.css.js +10 -2
  181. package/dist/static/styles/components/wide-panel.css.js +18 -6
  182. package/dist/static/styles/customEditorStyle.css.js +39 -2
  183. package/dist/static/templates/empty/index.html.js +74 -0
  184. package/dist/static/templates/empty/style.css.js +779 -0
  185. package/dist/stores/unsubscribe.js +37 -34
  186. package/dist/utils/pairProductVariables.js +57 -56
  187. package/dist/utils/templatePreparation.js +15 -14
  188. package/package.json +2 -2
  189. package/dist/extensions/Blocks/Items/store/items-block.js +0 -79
  190. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +0 -103
  191. package/dist/extensions/Blocks/Recommendation/constants.js +0 -5
  192. package/dist/extensions/Blocks/Recommendation/control.js +0 -306
  193. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +0 -13
  194. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +0 -13
  195. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +0 -13
  196. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +0 -13
  197. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +0 -13
  198. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +0 -13
  199. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +0 -13
  200. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +0 -13
  201. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +0 -13
  202. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +0 -13
  203. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +0 -13
  204. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +0 -13
  205. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +0 -13
  206. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +0 -13
  207. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +0 -13
  208. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +0 -13
  209. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +0 -13
  210. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +0 -13
  211. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +0 -13
  212. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +0 -13
  213. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +0 -13
  214. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +0 -13
  215. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +0 -13
  216. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +0 -13
  217. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +0 -13
  218. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +0 -13
  219. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +0 -13
  220. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +0 -13
  221. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +0 -13
  222. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +0 -13
  223. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +0 -13
  224. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +0 -13
  225. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +0 -13
  226. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +0 -13
  227. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +0 -160
  228. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +0 -152
  229. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +0 -180
  230. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +0 -45
  231. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +0 -28
  232. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +0 -35
  233. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +0 -5
  234. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +0 -5
  235. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +0 -5
  236. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +0 -5
  237. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +0 -5
  238. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +0 -5
  239. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +0 -5
  240. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +0 -5
  241. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +0 -5
  242. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +0 -5
  243. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +0 -5
  244. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +0 -5
  245. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +0 -5
  246. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +0 -5
  247. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +0 -5
  248. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +0 -5
  249. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +0 -5
  250. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +0 -5
  251. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +0 -5
  252. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +0 -5
  253. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +0 -5
  254. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +0 -5
  255. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +0 -5
  256. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +0 -5
  257. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +0 -5
  258. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +0 -5
  259. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +0 -5
  260. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +0 -5
  261. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +0 -5
  262. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +0 -5
  263. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +0 -5
  264. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +0 -5
  265. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +0 -5
  266. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +0 -5
  267. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +0 -16
  268. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +0 -44
@@ -1,4 +1,4 @@
1
- const o = { stripo: { version: "2.52.0" } }, s = {
1
+ const o = { stripo: { version: "2.54.0" } }, s = {
2
2
  guido: o
3
3
  };
4
4
  export {
@@ -1,6 +1,6 @@
1
1
  import { useHttp as c } from "../composables/useHttp.js";
2
- import { URLS as a } from "../enums/extensions/recommendationBlock.js";
3
- const R = () => {
2
+ import { URLS as m } from "../enums/extensions/recommendationBlock.js";
3
+ const f = () => {
4
4
  const { get: o } = c();
5
5
  return {
6
6
  fetchRecommendationCreateData: async () => {
@@ -18,14 +18,17 @@ const R = () => {
18
18
  throw console.error("fetchRecommendationFilters error:", e), e;
19
19
  }
20
20
  },
21
- fetchRecommendationProducts: async (e, n) => {
21
+ fetchRecommendationProducts: async (e, a) => {
22
+ var n;
22
23
  try {
23
- const t = decodeURIComponent(new URLSearchParams(Object.entries(n)).toString());
24
+ const t = decodeURIComponent(new URLSearchParams(Object.entries(a)).toString());
24
25
  console.debug("🏁 Recommendation API Query:", t);
25
- const r = await o(
26
- `${a.RECOMMENDATION_API_URL}/v2/${e}?${t}`
26
+ const { get: s } = c({
27
+ headers: {}
28
+ }), r = await s(
29
+ `${m.RECOMMENDATION_API_URL}/v2/${e}?${t}`
27
30
  );
28
- return (r == null ? void 0 : r.data) ?? [];
31
+ return ((n = r == null ? void 0 : r.data) == null ? void 0 : n.data) ?? [];
29
32
  } catch (t) {
30
33
  throw console.error("fetchRecommendationProducts error:", t), t;
31
34
  }
@@ -33,5 +36,5 @@ const R = () => {
33
36
  };
34
37
  };
35
38
  export {
36
- R as useRecommendationApi
39
+ f as useRecommendationApi
37
40
  };
@@ -1,44 +1,47 @@
1
- import { useHttp as m } from "../composables/useHttp.js";
2
- import { useToaster as i } from "../composables/useToaster.js";
3
- import { MAX_DEFAULT_TEMPLATE_ID as p } from "../enums/defaults.js";
4
- const y = () => {
5
- const { get: r } = m(), { handleError: o } = i();
1
+ import { useHttp as l } from "../composables/useHttp.js";
2
+ import { useToaster as u } from "../composables/useToaster.js";
3
+ import { MAX_DEFAULT_TEMPLATE_ID as d } from "../enums/defaults.js";
4
+ import f from "../static/templates/empty/index.html.js";
5
+ import g from "../static/templates/empty/style.css.js";
6
+ const D = () => {
7
+ const { get: o } = l(), { handleError: a } = u();
6
8
  return {
7
9
  getToken: async () => {
8
10
  try {
9
- const t = Number(localStorage.getItem("ins-guido-test-instance")), { data: e } = await r(`/stripo/get-user-token?test=${t}`);
11
+ const t = Number(localStorage.getItem("ins-guido-test-instance")), { data: e } = await o(`/stripo/get-user-token?test=${t}`);
10
12
  return e.body.token;
11
13
  } catch (t) {
12
- return o(t, "Failed to fetch token"), "";
14
+ return a(t, "Failed to fetch token"), "";
13
15
  }
14
16
  },
15
17
  getCustomFonts: async () => {
16
18
  try {
17
- const { data: t = [] } = await r("/stripo/get-partner-custom-fonts");
19
+ const { data: t = [] } = await o("/stripo/get-partner-custom-fonts");
18
20
  return t.map((e) => ({
19
21
  ...e,
20
22
  active: !0
21
23
  }));
22
24
  } catch (t) {
23
- return o(t, "Failed to fetch custom fonts"), [];
25
+ return a(t, "Failed to fetch custom fonts"), [];
24
26
  }
25
27
  },
26
28
  getDefaultTemplate: async () => {
27
29
  const t = {
28
- html: "",
29
- css: ""
30
+ html: f,
31
+ css: g
30
32
  };
31
33
  try {
32
- const c = new URLSearchParams(window.location.search).get("default-template"), s = c ? parseInt(c) : 0, l = s >= 1 && s <= p ? s : 0, { data: n } = await r(
33
- `/stripo/default-template/${l}`
34
- ), a = typeof n == "string" ? JSON.parse(n) : n;
35
- return !a || typeof a != "object" || !("html" in a) || !("css" in a) ? t : a;
34
+ const e = new URLSearchParams(window.location.search), c = e.get("default-template"), p = e.get("master"), s = c ? parseInt(c) : 0, m = s >= 1 && s <= d ? s : 0;
35
+ if (!m && !p)
36
+ return t;
37
+ const i = `/stripo/default-template/${m}`, { data: n } = await o(i), r = typeof n == "string" ? JSON.parse(n) : n;
38
+ return !r || typeof r != "object" || !("html" in r) || !("css" in r) ? t : r;
36
39
  } catch (e) {
37
- return o(e, "Failed to fetch default template"), t;
40
+ return a(e, "Failed to fetch default template"), t;
38
41
  }
39
42
  }
40
43
  };
41
44
  };
42
45
  export {
43
- y as useStripoApi
46
+ D as useStripoApi
44
47
  };
@@ -3,29 +3,30 @@ import { useHttp as f } from "../composables/useHttp.js";
3
3
  import { useToaster as w } from "../composables/useToaster.js";
4
4
  import { useTranslations as b } from "../composables/useTranslations.js";
5
5
  import { EditorType as h } from "../enums/defaults.js";
6
- import { useSaveAsTemplateStore as C } from "../stores/save-as-template.js";
6
+ import { useRecommendationExtensionStore as C } from "../extensions/Blocks/Recommendation/store/recommendation.js";
7
+ import { useSaveAsTemplateStore as v } from "../stores/save-as-template.js";
7
8
  import { base64EncodeWithSpecialChars as a } from "../utils/base64.js";
8
- import { useTemplatePreparation as v } from "../utils/templatePreparation.js";
9
- const L = () => {
10
- const { get: m, post: n } = f(), { handleError: o, showToaster: i } = w(), { config: l } = T(), p = b();
9
+ import { useTemplatePreparation as S } from "../utils/templatePreparation.js";
10
+ const R = () => {
11
+ const { get: n, post: c } = f(), { handleError: o, showToaster: i } = w(), { config: l } = T(), p = b();
11
12
  return {
12
13
  getCategories: async () => {
13
14
  try {
14
- const { data: e = [] } = await m("/newsletter/template-library/get-template-categories");
15
+ const { data: e = [] } = await n("/newsletter/template-library/get-template-categories");
15
16
  return e;
16
17
  } catch (e) {
17
18
  return o(e, "Failed to fetch template categories"), [];
18
19
  }
19
20
  },
20
21
  checkTemplateNameAvailability: async (e) => {
21
- const { data: { status: t = !1 } } = await m(
22
+ const { data: { status: t = !1 } } = await n(
22
23
  `/newsletter/template-library/template-name-exists?name=${e}`
23
24
  );
24
25
  return !t;
25
26
  },
26
27
  createCategory: async (e) => {
27
28
  try {
28
- const { data: { id: t } } = await n(
29
+ const { data: { id: t } } = await c(
29
30
  "/newsletter/template-library/create-category",
30
31
  { name: e }
31
32
  );
@@ -37,7 +38,7 @@ const L = () => {
37
38
  createTemplate: async () => {
38
39
  var e, t, g, y;
39
40
  try {
40
- const { prepareTemplateDetails: c } = v(), r = C(), s = await c(), u = {
41
+ const { prepareTemplateDetails: m } = S(), r = v(), s = await m(), u = {
41
42
  name: r.getTemplateName,
42
43
  categories: r.getSelectedCategoryIds,
43
44
  productId: ((t = (e = l.value) == null ? void 0 : e.partner) == null ? void 0 : t.productType) || 0,
@@ -47,7 +48,9 @@ const L = () => {
47
48
  css: a(s.css),
48
49
  unsubscriptionPreferencePageStatus: !1,
49
50
  unsubscriptionPreferencePages: [],
50
- recommendationCampaignUrls: a({}),
51
+ recommendationCampaignUrls: a(
52
+ C().recommendationCampaignUrls
53
+ ),
51
54
  recommendationConfigs: a({}),
52
55
  isGuido: !0,
53
56
  stripoConfig: a({
@@ -55,7 +58,7 @@ const L = () => {
55
58
  html: s.rawHtml,
56
59
  css: s.css
57
60
  })
58
- }, { data: { type: d } } = await n(
61
+ }, { data: { type: d } } = await c(
59
62
  "/newsletter/template-library/create-template",
60
63
  u
61
64
  );
@@ -76,12 +79,12 @@ const L = () => {
76
79
  ),
77
80
  type: "success"
78
81
  });
79
- } catch (c) {
80
- o(c, "Failed to create template");
82
+ } catch (m) {
83
+ o(m, "Failed to create template");
81
84
  }
82
85
  }
83
86
  };
84
87
  };
85
88
  export {
86
- L as useTemplateLibraryApi
89
+ R as useTemplateLibraryApi
87
90
  };
@@ -116,7 +116,7 @@ export declare const EditorSchema: v.ObjectSchema<{
116
116
  /** Locale for the editor UI */
117
117
  readonly locale: v.OptionalSchema<v.StringSchema<undefined>, "en">;
118
118
  /** Path to translations object */
119
- readonly translationsPath: v.OptionalSchema<v.StringSchema<undefined>, "window.trans.en">;
119
+ readonly translationsPath: v.OptionalSchema<v.StringSchema<undefined>, "window.trans[Object.keys(window.trans)[0]]">;
120
120
  /** Migration date for template compatibility */
121
121
  readonly migrationDate: v.OptionalSchema<v.NumberSchema<undefined>, 1759696858>;
122
122
  /** Email header settings */
@@ -129,6 +129,10 @@ export declare const EditorSchema: v.ObjectSchema<{
129
129
  readonly senderName: "";
130
130
  readonly subject: "";
131
131
  }>;
132
+ /** Folder name for user-saved modules (used by Stripo plugin panel for path construction) */
133
+ readonly savedModulesFolderName: v.OptionalSchema<v.StringSchema<undefined>, "savedModules">;
134
+ /** Folder name for default/prebuilt modules (used by Stripo plugin panel for path construction) */
135
+ readonly defaultModulesFolderName: v.OptionalSchema<v.StringSchema<undefined>, "defaultModules">;
132
136
  }, undefined>;
133
137
  /**
134
138
  * UI configuration - visual elements and layout
@@ -428,7 +432,7 @@ export declare const GuidoConfigSchema: v.ObjectSchema<{
428
432
  /** Locale for the editor UI */
429
433
  readonly locale: v.OptionalSchema<v.StringSchema<undefined>, "en">;
430
434
  /** Path to translations object */
431
- readonly translationsPath: v.OptionalSchema<v.StringSchema<undefined>, "window.trans.en">;
435
+ readonly translationsPath: v.OptionalSchema<v.StringSchema<undefined>, "window.trans[Object.keys(window.trans)[0]]">;
432
436
  /** Migration date for template compatibility */
433
437
  readonly migrationDate: v.OptionalSchema<v.NumberSchema<undefined>, 1759696858>;
434
438
  /** Email header settings */
@@ -441,6 +445,10 @@ export declare const GuidoConfigSchema: v.ObjectSchema<{
441
445
  readonly senderName: "";
442
446
  readonly subject: "";
443
447
  }>;
448
+ /** Folder name for user-saved modules (used by Stripo plugin panel for path construction) */
449
+ readonly savedModulesFolderName: v.OptionalSchema<v.StringSchema<undefined>, "savedModules">;
450
+ /** Folder name for default/prebuilt modules (used by Stripo plugin panel for path construction) */
451
+ readonly defaultModulesFolderName: v.OptionalSchema<v.StringSchema<undefined>, "defaultModules">;
444
452
  }, undefined>, {}>;
445
453
  /** UI configuration */
446
454
  readonly ui: v.OptionalSchema<v.ObjectSchema<{
@@ -33,8 +33,8 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_WithDefaults<
33
33
  descriptionStatus: boolean;
34
34
  descriptionText: string;
35
35
  }>>>, {
36
- className: string;
37
36
  size: "small" | "medium" | "large";
37
+ className: string;
38
38
  closeOnOutsideClick: boolean;
39
39
  descriptionStatus: boolean;
40
40
  descriptionText: string;
@@ -41,6 +41,8 @@ export declare const useConfig: () => {
41
41
  senderName: string;
42
42
  subject: string;
43
43
  };
44
+ savedModulesFolderName: string;
45
+ defaultModulesFolderName: string;
44
46
  };
45
47
  ui: {
46
48
  showHeader: boolean;
@@ -130,6 +132,8 @@ export declare const useConfig: () => {
130
132
  senderName: string;
131
133
  subject: string;
132
134
  };
135
+ savedModulesFolderName: string;
136
+ defaultModulesFolderName: string;
133
137
  } | null>;
134
138
  ui: import("vue").ComputedRef<{
135
139
  showHeader: boolean;
@@ -15,5 +15,6 @@ interface CampaignData extends CardWidthParams {
15
15
  export declare const useRecommendation: () => {
16
16
  calculateCardWidth: ({ mobileLeftPadding, mobileRightPadding, cardsInRow, unresponsive, }: CardWidthParams) => number;
17
17
  getRecommendationCampaignData: (id: string) => CampaignData;
18
+ buildCampaignUrl: (campaignId: string) => string;
18
19
  };
19
20
  export {};
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Formats a price template variable with the correct currency alignment.
3
+ * @param campaignId - The recommendation block campaign ID
4
+ * @param productIndex - Zero-based product index
5
+ * @param attribute - Price attribute name (e.g., 'price', 'original_price')
6
+ * @param alignment - Currency alignment from block config: 'before' or 'after'
7
+ * @returns Formatted price string with currency variable in correct position
8
+ */
9
+ export declare function formatPriceVariable(campaignId: string, productIndex: number, attribute: string, alignment: string): string;
10
+ /**
11
+ * Transforms recommendation block HTML by replacing product data with
12
+ * template variables.
13
+ * Preserves the full document structure (DOCTYPE, html, head, body).
14
+ * @param html - The raw template HTML
15
+ * @returns HTML with template variables replacing product data
16
+ */
17
+ export declare function prepareRecommendationBlocks(html: string): string;
@@ -9,3 +9,7 @@ export declare const TemplateTypes: {
9
9
  export declare const EditorType: number;
10
10
  export declare const MAX_DEFAULT_TEMPLATE_ID = 13;
11
11
  export declare const ProductIds: Record<string, number>;
12
+ export declare const ModuleFolderDefaults: {
13
+ readonly SAVED_MODULES: "savedModules";
14
+ readonly DEFAULT_MODULES: "defaultModules";
15
+ };
@@ -23,5 +23,4 @@ export declare class ItemsBlock extends Block {
23
23
  getTemplate(): string;
24
24
  allowInnerBlocksDND(): boolean;
25
25
  onCreated(node: ImmutableHtmlNode): void;
26
- onSelect(node: ImmutableHtmlNode): void;
27
26
  }
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.BUTTON_LINK;
5
5
  export declare class ButtonLinkControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -2,7 +2,6 @@ import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
2
2
  import { CommonControl } from '../../common-control';
3
3
  export declare const COMPOSITION_CONTROL_BLOCK_ID = "ui-elements-items-card-composition-block";
4
4
  export declare class ItemsBlockCardCompositionControl extends CommonControl {
5
- private store;
6
5
  private visibilityState;
7
6
  getId(): string;
8
7
  getTemplate(): string;
@@ -19,10 +18,11 @@ export declare class ItemsBlockCardCompositionControl extends CommonControl {
19
18
  * If itemsType is not BROWSED_ITEMS, show quantity
20
19
  * If itemsType is BROWSED_ITEMS, hide quantity
21
20
  * and mark it as '0'
21
+ * @param syncOnly - If true, only sync local state and UI without modifying the document
22
22
  */
23
- _handleBrowsedItemsQuantity(): void;
24
- _applyVisibilityStyles(): void;
25
- _updateVisibilityAttribute(elementName: string, isVisible: boolean): void;
23
+ _handleBrowsedItemsQuantity(syncOnly?: boolean): void;
24
+ _applyVisibilityStyles(modifier?: ReturnType<typeof this.api.getDocumentModifier>): void;
25
+ _updateVisibilityAttribute(elementName: string, isVisible: boolean, modifier?: ReturnType<typeof this.api.getDocumentModifier>): void;
26
26
  _listenToFormUpdates(): void;
27
27
  _onProductImageChange(value: boolean): void;
28
28
  _onProductNameChange(value: boolean): void;
@@ -37,6 +37,6 @@ export declare class ItemsBlockCardCompositionControl extends CommonControl {
37
37
  * - When price is hidden, original price cell expands to 100%
38
38
  * - When both are visible, they share 50% each
39
39
  */
40
- _updatePriceCellWidthsForVerticalLayout(): void;
40
+ _updatePriceCellWidthsForVerticalLayout(modifier?: ReturnType<typeof this.api.getDocumentModifier>): void;
41
41
  _onProductButtonChange(value: boolean): void;
42
42
  }
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.IMAGE_LINK;
5
5
  export declare class ImageLinkControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.NAME_TRIMMING;
5
5
  export declare class NameTrimmingControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.PRICE_CURRENCY_LOCATION;
5
5
  export declare class PriceCurrencyLocationControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.PRICE_CURRENCY_SYMBOL;
5
5
  export declare class PriceCurrencySymbolControl extends CommonControl {
6
- private store;
7
6
  private originalPriceContents;
8
7
  getId(): string;
9
8
  getTemplate(): string;
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.PRICE_FORMATTED_PRICE;
5
5
  export declare class PriceFormattedPriceControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.PRICE_HIDE_DISCOUNT;
5
5
  export declare class PriceHideDiscountControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.PRICE_ORIENTATION;
5
5
  export declare class PriceOrientationControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -3,15 +3,10 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.PRICE_SINGLE_PRICE;
5
5
  export declare class PriceSinglePriceControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
10
9
  onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
11
- /**
12
- * Syncs single price state from nodeConfig.
13
- */
14
- private _syncSinglePriceFromNodeConfig;
15
10
  _onSinglePriceChange(value: boolean): void;
16
11
  private _updatePriceBlock;
17
12
  _getSinglePrice(): string;
@@ -3,12 +3,10 @@ import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
3
3
  import { CommonControl } from '../../common-control';
4
4
  export declare const CONTROL_BLOCK_ID = "ui-elements-items-block";
5
5
  export declare class ItemsBlockControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
10
9
  onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
11
- onDestroy(): void;
12
10
  _getItemsType(): string;
13
11
  _getOrientation(): string;
14
12
  _getItemInCart(): string;
@@ -18,7 +16,7 @@ export declare class ItemsBlockControl extends CommonControl {
18
16
  _initializeSelectItems(): void;
19
17
  _listenToFormUpdates(): void;
20
18
  _renderTemplate(): void;
21
- _getTemplateData(): {
19
+ _getTemplateData(itemsTypeOverride?: ProductType, itemIdOverride?: string): {
22
20
  imageSrc: string;
23
21
  name: string;
24
22
  price: string;
@@ -26,15 +24,15 @@ export declare class ItemsBlockControl extends CommonControl {
26
24
  quantity: string;
27
25
  button: string;
28
26
  };
29
- _updateImageSrc(imageSrc: string): void;
30
- _updateName(name: string): void;
31
- _updatePrice(price: string): void;
32
- _updateOriginalPrice(originalPrice: string): void;
33
- _updateQuantity(quantity: string): void;
34
- _reOrderTemplate(): void;
35
- _updateDataTypeAttributes(itemsType: ProductType): void;
36
- _updateDataNumberAttributes(itemId: string): void;
37
- _reFillTemplate(): void;
27
+ _updateImageSrc(imageSrc: string, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
28
+ _updateName(name: string, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
29
+ _updatePrice(price: string, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
30
+ _updateOriginalPrice(originalPrice: string, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
31
+ _updateQuantity(quantity: string, itemsTypeOverride: ProductType | undefined, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
32
+ _reOrderTemplate(modifier?: ReturnType<typeof this.api.getDocumentModifier>): void;
33
+ _updateDataTypeAttributes(itemsType: ProductType, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
34
+ _updateDataNumberAttributes(itemId: string, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
35
+ _reFillTemplate(itemsType?: ProductType): void;
38
36
  _recalculateTrimming(): void;
39
37
  private _getParagraphFromBlock;
40
38
  private _escapeRegex;
@@ -66,8 +66,9 @@ export declare function getItemsBlockConfig(currentNode: ImmutableHtmlNode | und
66
66
  * @param currentNode - The current node from the control
67
67
  * @param api - The API object (ControlApi or BlockApi)
68
68
  * @param config - The configuration to set (partial update supported)
69
+ * @param modifier - Optional document modifier for batching updates
69
70
  */
70
- export declare function setItemsBlockConfig(currentNode: ImmutableHtmlNode | undefined, api: ControlApi | BlockApi, config: Partial<ItemsBlockConfig>): void;
71
+ export declare function setItemsBlockConfig(currentNode: ImmutableHtmlNode | undefined, api: ControlApi | BlockApi, config: Partial<ItemsBlockConfig>, modifier?: ReturnType<typeof api.getDocumentModifier>): void;
71
72
  /**
72
73
  * Gets the block instance ID from the node config.
73
74
  * @param currentNode - The current node from the control
@@ -1,11 +1,78 @@
1
+ /**
2
+ * Recommendation Block
3
+ *
4
+ * Main block class for the Recommendation extension.
5
+ * Handles block lifecycle including configuration initialization and migration.
6
+ * Supports multiple block instances with unique recommendation-id attributes.
7
+ */
8
+ import type { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
1
9
  import { Block, BlockCompositionType } from '@stripoinc/ui-editor-extensions';
2
10
  export declare const BLOCK_ID = "recommendation-block";
3
11
  export declare class RecommendationBlock extends Block {
12
+ /**
13
+ * Stores the ID generated in getTemplate() so onCreated() can reuse it.
14
+ * This avoids generating a new (different) ID in onCreated().
15
+ */
16
+ private _pendingBlockId;
4
17
  constructor();
5
18
  getId(): string;
6
19
  getIcon(): string;
7
20
  getBlockCompositionType(): BlockCompositionType;
8
21
  getName(): string;
9
22
  getDescription(): string;
23
+ /**
24
+ * Returns the template HTML for a new recommendation block.
25
+ * Generates a unique recommendation ID and embeds the instance class
26
+ * (ins-recommendation-v3-block-{id}) directly in the template HTML.
27
+ * This is necessary because Stripo's Angular rendering manages the class
28
+ * attribute and overwrites dynamically added classes via setAttribute.
29
+ */
10
30
  getTemplate(): string;
31
+ /**
32
+ * Called when a new block is dropped into the template
33
+ *
34
+ * Uses the ID from getTemplate() (which already embedded the instance class)
35
+ * and assigns the recommendation-id attribute + initializes configuration.
36
+ * @param node - The newly created block node
37
+ */
38
+ onCreated(node: ImmutableHtmlNode): void;
39
+ /**
40
+ * Called when the document changes or template is loaded
41
+ *
42
+ * Handles migration from legacy templates that don't have node config
43
+ * and assigns recommendation-id to legacy blocks that lack one.
44
+ * @param node - The block node that may need migration
45
+ */
46
+ onDocumentChanged(node: ImmutableHtmlNode): void;
47
+ /**
48
+ * Called when a block is deleted from the template
49
+ *
50
+ * Cleans up the per-block state from the Pinia store.
51
+ * @param node - The block node being deleted
52
+ */
53
+ onDelete(node: ImmutableHtmlNode): void;
54
+ /**
55
+ * Generates the next unique recommendation ID by scanning all existing blocks
56
+ * in the document and finding the maximum existing ID + 1.
57
+ */
58
+ private _generateNextId;
59
+ /**
60
+ * Assigns a recommendation-id attribute to the block element.
61
+ * The instance class (ins-recommendation-v3-block-{id}) is embedded in the template
62
+ * HTML by getTemplate(), since Stripo's Angular rendering overwrites dynamically
63
+ * added classes via setAttribute.
64
+ */
65
+ private _assignRecommendationId;
66
+ /**
67
+ * Gets the recommendation-id from a block node
68
+ */
69
+ private _getRecommendationId;
70
+ /**
71
+ * Gets the block element (the element with BLOCK_CLASS)
72
+ */
73
+ private _getBlockElement;
74
+ /**
75
+ * Migrate configuration from legacy format
76
+ */
77
+ private _migrateFromLegacy;
11
78
  }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Block IDs used in the Recommendation Extension
3
+ * These IDs are used in the esd-extension-block-id attribute to identify specific blocks
4
+ */
5
+ export declare enum RecommendationBlockId {
6
+ BUTTON = "recommendation-block-button",
7
+ NAME = "recommendation-block-name",
8
+ PRICE = "recommendation-block-price",
9
+ OLD_PRICE = "recommendation-block-old-price",
10
+ OMNIBUS_PRICE = "recommendation-block-omnibus-price",
11
+ OMNIBUS_DISCOUNT = "recommendation-block-omnibus-discount",
12
+ IMAGE = "recommendation-block-image"
13
+ }
@@ -1,14 +1,3 @@
1
- /**
2
- * Block IDs used in the Recommendation Extension
3
- * These IDs are used in the esd-extension-block-id attribute to identify specific blocks
4
- */
5
- export declare enum RecommendationBlockId {
6
- BUTTON = "recommendation-block-button",
7
- NAME = "recommendation-block-name",
8
- PRICE = "recommendation-block-price",
9
- OLD_PRICE = "recommendation-block-old-price",
10
- IMAGE = "recommendation-block-image"
11
- }
12
1
  /**
13
2
  * Control IDs used in the Recommendation Extension
14
3
  * These IDs are returned by the getId() method of each control
@@ -32,6 +21,7 @@ export declare enum RecommendationControlId {
32
21
  NAME_PADDINGS = "recommendation-block-name-paddings-control",
33
22
  NAME_SIZE = "recommendation-block-name-size-control",
34
23
  NAME_STYLE = "recommendation-block-name-style-control",
24
+ NAME_TEXT_TRIM = "recommendation-block-name-text-trim-control",
35
25
  PRICE_ALIGN = "recommendation-block-price-align-control",
36
26
  PRICE_BACKGROUND = "recommendation-block-price-background-control",
37
27
  PRICE_COLOR = "recommendation-block-price-color-control",
@@ -46,6 +36,24 @@ export declare enum RecommendationControlId {
46
36
  OLD_PRICE_PADDINGS = "recommendation-block-old-price-paddings-control",
47
37
  OLD_PRICE_SIZE = "recommendation-block-old-price-size-control",
48
38
  OLD_PRICE_STYLE = "recommendation-block-old-price-style-control",
39
+ OMNIBUS_PRICE_ALIGN = "recommendation-block-omnibus-price-align-control",
40
+ OMNIBUS_PRICE_BACKGROUND = "recommendation-block-omnibus-price-background-control",
41
+ OMNIBUS_PRICE_COLOR = "recommendation-block-omnibus-price-color-control",
42
+ OMNIBUS_PRICE_FONT_FAMILY = "recommendation-block-omnibus-price-font-family-control",
43
+ OMNIBUS_PRICE_PADDINGS = "recommendation-block-omnibus-price-paddings-control",
44
+ OMNIBUS_PRICE_SIZE = "recommendation-block-omnibus-price-size-control",
45
+ OMNIBUS_PRICE_STYLE = "recommendation-block-omnibus-price-style-control",
46
+ OMNIBUS_PRICE_TEXT_BEFORE = "recommendation-block-omnibus-price-text-before-control",
47
+ OMNIBUS_PRICE_TEXT_AFTER = "recommendation-block-omnibus-price-text-after-control",
48
+ OMNIBUS_DISCOUNT_ALIGN = "recommendation-block-omnibus-discount-align-control",
49
+ OMNIBUS_DISCOUNT_BACKGROUND = "recommendation-block-omnibus-discount-background-control",
50
+ OMNIBUS_DISCOUNT_COLOR = "recommendation-block-omnibus-discount-color-control",
51
+ OMNIBUS_DISCOUNT_FONT_FAMILY = "recommendation-block-omnibus-discount-font-family-control",
52
+ OMNIBUS_DISCOUNT_PADDINGS = "recommendation-block-omnibus-discount-paddings-control",
53
+ OMNIBUS_DISCOUNT_SIZE = "recommendation-block-omnibus-discount-size-control",
54
+ OMNIBUS_DISCOUNT_STYLE = "recommendation-block-omnibus-discount-style-control",
55
+ OMNIBUS_DISCOUNT_TEXT_BEFORE = "recommendation-block-omnibus-discount-text-before-control",
56
+ OMNIBUS_DISCOUNT_TEXT_AFTER = "recommendation-block-omnibus-discount-text-after-control",
49
57
  IMAGE_SIZE = "recommendation-block-image-size-control",
50
58
  IMAGE_MARGINS = "recommendation-block-image-margins-control"
51
59
  }