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

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 (247) hide show
  1. package/dist/@types/config/schemas.js +17 -17
  2. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +15 -14
  3. package/dist/components/organisms/header/HeaderWrapper.vue.js +9 -9
  4. package/dist/composables/useActionsApi.js +15 -13
  5. package/dist/composables/useHtmlValidator.js +114 -104
  6. package/dist/composables/useRecommendation.js +54 -21
  7. package/dist/config/compiler/recommendationCompilerRules.js +45 -39
  8. package/dist/config/compiler/utils/recommendationCompilerUtils.js +116 -0
  9. package/dist/config/migrator/itemsBlockMigrator.js +140 -123
  10. package/dist/config/migrator/recommendationMigrator.js +2 -2
  11. package/dist/enums/extensions/recommendationBlock.js +1 -1
  12. package/dist/enums/recommendation.js +16 -15
  13. package/dist/extensions/Blocks/Items/block.js +19 -28
  14. package/dist/extensions/Blocks/Items/controls/button/link.js +19 -31
  15. package/dist/extensions/Blocks/Items/controls/cardComposition.js +137 -89
  16. package/dist/extensions/Blocks/Items/controls/image/link.js +19 -31
  17. package/dist/extensions/Blocks/Items/controls/name/trimming.js +28 -40
  18. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +35 -47
  19. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +49 -54
  20. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +42 -51
  21. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +23 -36
  22. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +45 -57
  23. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +42 -60
  24. package/dist/extensions/Blocks/Items/controls/settingsControl.js +189 -196
  25. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +0 -2
  26. package/dist/extensions/Blocks/Items/extension.js +8 -9
  27. package/dist/extensions/Blocks/Items/settingsPanel.js +10 -15
  28. package/dist/extensions/Blocks/Items/template.js +181 -175
  29. package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +65 -65
  30. package/dist/extensions/Blocks/Recommendation/block.js +133 -9
  31. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +4 -0
  32. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +4 -0
  33. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +66 -0
  34. package/dist/extensions/Blocks/Recommendation/constants/layout.js +22 -0
  35. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +21 -0
  36. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +64 -0
  37. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +80 -0
  38. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +232 -0
  39. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +19 -0
  40. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +92 -0
  41. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +102 -0
  42. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +209 -0
  43. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +52 -0
  44. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +250 -0
  45. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +70 -0
  46. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +160 -0
  47. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +67 -0
  48. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +307 -0
  49. package/dist/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js +21 -0
  50. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +46 -0
  51. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +108 -0
  52. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +44 -0
  53. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +48 -0
  54. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +73 -0
  55. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +73 -0
  56. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +48 -0
  57. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +73 -0
  58. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +73 -0
  59. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +44 -0
  60. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +222 -0
  61. package/dist/extensions/Blocks/Recommendation/extension.js +40 -43
  62. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +19 -3
  63. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +13 -4
  64. package/dist/extensions/Blocks/Recommendation/services/configService.js +240 -0
  65. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +128 -72
  66. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +254 -207
  67. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +233 -0
  68. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +251 -0
  69. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +66 -0
  70. package/dist/extensions/Blocks/Recommendation/templates/index.js +12 -0
  71. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +174 -0
  72. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +73 -0
  73. package/dist/extensions/Blocks/Recommendation/templates/utils.js +134 -0
  74. package/dist/extensions/Blocks/Recommendation/types/nodeConfig.js +6 -0
  75. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
  76. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +36 -0
  77. package/dist/extensions/Blocks/Recommendation/utils/priceFormatter.js +29 -0
  78. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +46 -0
  79. package/dist/extensions/Blocks/common-control.js +91 -92
  80. package/dist/extensions/Blocks/controlFactories.js +125 -93
  81. package/dist/guido.css +1 -1
  82. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +220 -169
  83. package/dist/package.json.js +1 -1
  84. package/dist/services/recommendationApi.js +11 -8
  85. package/dist/services/templateLibraryApi.js +16 -13
  86. package/dist/src/@types/config/schemas.d.ts +2 -2
  87. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +1 -1
  88. package/dist/src/composables/useRecommendation.d.ts +1 -0
  89. package/dist/src/config/compiler/utils/recommendationCompilerUtils.d.ts +17 -0
  90. package/dist/src/extensions/Blocks/Items/block.d.ts +0 -1
  91. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -1
  92. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +5 -5
  93. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -1
  94. package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +0 -1
  95. package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +0 -1
  96. package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +0 -1
  97. package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +0 -1
  98. package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +0 -1
  99. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +0 -1
  100. package/dist/src/extensions/Blocks/Items/controls/price/singlePrice.d.ts +0 -5
  101. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +10 -12
  102. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +2 -1
  103. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +67 -0
  104. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +13 -0
  105. package/dist/src/extensions/Blocks/Recommendation/{constants.d.ts → constants/controlIds.d.ts} +19 -11
  106. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +49 -0
  107. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +13 -0
  108. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +41 -0
  109. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +35 -0
  110. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +143 -0
  111. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +31 -0
  112. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.d.ts +25 -0
  113. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +95 -0
  114. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +35 -0
  115. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +24 -0
  116. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +37 -0
  117. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +29 -0
  118. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +52 -0
  119. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +22 -0
  120. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +79 -0
  121. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +24 -0
  122. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +60 -0
  123. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +23 -0
  124. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +221 -0
  125. package/dist/src/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.d.ts +29 -0
  126. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +97 -0
  127. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +34 -0
  128. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +95 -0
  129. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +100 -0
  130. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +15 -0
  131. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +15 -0
  132. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.d.ts +15 -0
  133. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.d.ts +15 -0
  134. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +100 -0
  135. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +15 -0
  136. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +15 -0
  137. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.d.ts +15 -0
  138. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.d.ts +15 -0
  139. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +95 -0
  140. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +83 -0
  141. package/dist/src/extensions/Blocks/Recommendation/controls/spacingControl.d.ts +60 -0
  142. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +9 -0
  143. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +151 -0
  144. package/dist/src/extensions/Blocks/Recommendation/services/index.d.ts +6 -0
  145. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +138 -468
  146. package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +20 -0
  147. package/dist/src/extensions/Blocks/Recommendation/templates/{migrationTemplate.d.ts → grid/migration.d.ts} +11 -4
  148. package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +33 -0
  149. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +41 -0
  150. package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +8 -0
  151. package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +25 -0
  152. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +18 -0
  153. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +66 -0
  154. package/dist/src/extensions/Blocks/Recommendation/types/index.d.ts +7 -0
  155. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +166 -0
  156. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +19 -0
  157. package/dist/src/extensions/Blocks/Recommendation/utils/priceFormatter.d.ts +33 -0
  158. package/dist/src/extensions/Blocks/Recommendation/utils/stylePreserver.d.ts +113 -0
  159. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +77 -0
  160. package/dist/src/extensions/Blocks/common-control.d.ts +4 -5
  161. package/dist/static/styles/components/notification.css.js +1 -0
  162. package/dist/static/styles/components/version-history.css.js +10 -2
  163. package/dist/static/styles/components/wide-panel.css.js +18 -6
  164. package/dist/static/styles/customEditorStyle.css.js +39 -2
  165. package/dist/utils/pairProductVariables.js +57 -56
  166. package/dist/utils/templatePreparation.js +15 -14
  167. package/package.json +2 -2
  168. package/dist/extensions/Blocks/Items/store/items-block.js +0 -79
  169. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +0 -103
  170. package/dist/extensions/Blocks/Recommendation/constants.js +0 -5
  171. package/dist/extensions/Blocks/Recommendation/control.js +0 -306
  172. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +0 -13
  173. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +0 -13
  174. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +0 -13
  175. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +0 -13
  176. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +0 -13
  177. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +0 -13
  178. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +0 -13
  179. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +0 -13
  180. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +0 -13
  181. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +0 -13
  182. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +0 -13
  183. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +0 -13
  184. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +0 -13
  185. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +0 -13
  186. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +0 -13
  187. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +0 -13
  188. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +0 -13
  189. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +0 -13
  190. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +0 -13
  191. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +0 -13
  192. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +0 -13
  193. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +0 -13
  194. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +0 -13
  195. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +0 -13
  196. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +0 -13
  197. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +0 -13
  198. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +0 -13
  199. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +0 -13
  200. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +0 -13
  201. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +0 -13
  202. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +0 -13
  203. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +0 -13
  204. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +0 -13
  205. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +0 -13
  206. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +0 -160
  207. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +0 -152
  208. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +0 -180
  209. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +0 -45
  210. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +0 -28
  211. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +0 -35
  212. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +0 -5
  213. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +0 -5
  214. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +0 -5
  215. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +0 -5
  216. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +0 -5
  217. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +0 -5
  218. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +0 -5
  219. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +0 -5
  220. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +0 -5
  221. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +0 -5
  222. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +0 -5
  223. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +0 -5
  224. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +0 -5
  225. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +0 -5
  226. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +0 -5
  227. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +0 -5
  228. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +0 -5
  229. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +0 -5
  230. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +0 -5
  231. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +0 -5
  232. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +0 -5
  233. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +0 -5
  234. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +0 -5
  235. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +0 -5
  236. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +0 -5
  237. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +0 -5
  238. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +0 -5
  239. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +0 -5
  240. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +0 -5
  241. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +0 -5
  242. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +0 -5
  243. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +0 -5
  244. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +0 -5
  245. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +0 -5
  246. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +0 -16
  247. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +0 -44
@@ -1,18 +1,27 @@
1
1
  const n = `/* Utils */
2
2
  .es-180w { width: 180px; }
3
3
 
4
- /* Recommendation Controls */
5
- .recommendation-controls-container > .container {
6
- padding: 16px;
4
+ /* Recommendation Controls - Main settings panel separators */
5
+ .recommendation-controls-container > div {
6
+ border-bottom: 1px solid #e0e0e0;
7
7
  }
8
8
 
9
- .recommendation-controls-container > .container:first-child {
9
+ .recommendation-controls-container > div:first-child {
10
10
  padding-top: 0;
11
11
  }
12
12
 
13
+ .recommendation-controls-container > div:last-child {
14
+ border-bottom: none;
15
+ }
16
+
13
17
  .container:has(.recommendation-controls-container) {
14
18
  padding: 0
15
19
  }
20
+
21
+ /* Hide drag icon for list layout (ordering disabled) */
22
+ ue-orderable.orderable-disabled .droppable-icon {
23
+ display: none;
24
+ }
16
25
  `;
17
26
  export {
18
27
  n as default
@@ -0,0 +1,240 @@
1
+ import { ModificationDescription as f } from "../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { CURRENT_CONFIG_VERSION as u, DEFAULT_NODE_CONFIG as e } from "../constants/defaultConfig.js";
3
+ import { setCurrencyAttributes as g } from "../controls/main/utils.js";
4
+ import { hasMinimalConfig as a } from "../types/nodeConfig.js";
5
+ class C {
6
+ // ========================================================================
7
+ // Read Operations
8
+ // ========================================================================
9
+ /**
10
+ * Get configuration from a node, with defaults for missing values
11
+ *
12
+ * This is the primary way to read configuration from a block.
13
+ * Always returns a complete config object with defaults merged in.
14
+ * @example
15
+ * const config = RecommendationConfigService.getConfig(this.currentNode);
16
+ * console.log(config.strategy); // 'mostPopular'
17
+ * @param node - The immutable HTML node to read config from
18
+ * @returns Complete configuration with defaults for missing values
19
+ */
20
+ static getConfig(i) {
21
+ if (!i)
22
+ return this.cloneDefaults();
23
+ if (!("getNodeConfig" in i) || typeof i.getNodeConfig != "function")
24
+ return this.cloneDefaults();
25
+ try {
26
+ const t = i.getNodeConfig();
27
+ return t ? this.mergeWithDefaults(t) : this.cloneDefaults();
28
+ } catch {
29
+ return this.cloneDefaults();
30
+ }
31
+ }
32
+ /**
33
+ * Check if a node has valid configuration stored
34
+ *
35
+ * Used for migration detection - returns false for legacy templates
36
+ * that need their configuration migrated.
37
+ * @param node - The immutable HTML node to check
38
+ * @returns True if node has valid config with version number
39
+ */
40
+ static hasConfig(i) {
41
+ if (!i || !("getNodeConfig" in i) || typeof i.getNodeConfig != "function")
42
+ return !1;
43
+ try {
44
+ const t = i.getNodeConfig();
45
+ return a(t);
46
+ } catch {
47
+ return !1;
48
+ }
49
+ }
50
+ /**
51
+ * Get the configuration version from a node
52
+ * @param node - The immutable HTML node to check
53
+ * @returns Config version number, or 0 if no config exists
54
+ */
55
+ static getConfigVersion(i) {
56
+ return this.hasConfig(i) && this.getConfig(i).configVersion || 0;
57
+ }
58
+ // ========================================================================
59
+ // Write Operations
60
+ // ========================================================================
61
+ /**
62
+ * Update specific configuration values
63
+ *
64
+ * Merges the updates with existing config and persists to node.
65
+ * This is the primary way to update configuration from controls.
66
+ * @example
67
+ * RecommendationConfigService.updateConfig(
68
+ * this.api,
69
+ * this.currentNode,
70
+ * { strategy: 'complementaryItems' },
71
+ * 'Changed recommendation algorithm'
72
+ * );
73
+ * @param api - Stripo extension API with document modifier
74
+ * @param node - The immutable HTML node to update
75
+ * @param updates - Partial config with values to update
76
+ * @param description - Human-readable description for undo/redo
77
+ * @returns The new complete configuration
78
+ */
79
+ static updateConfig(i, t, o, n) {
80
+ const s = this.getConfig(t), r = this.deepMerge(s, o);
81
+ return this.saveConfig(i, t, r, n), r;
82
+ }
83
+ /**
84
+ * Initialize configuration for a new block
85
+ *
86
+ * Called when a block is first created (dropped into template).
87
+ * Can optionally merge in partial config from migration.
88
+ * @example
89
+ * // In Block.onCreated lifecycle
90
+ * RecommendationConfigService.initializeConfig(this.api, node);
91
+ * @param api - Stripo extension API with document modifier
92
+ * @param node - The immutable HTML node to initialize
93
+ * @param partialConfig - Optional partial config to merge with defaults
94
+ * @returns The initialized configuration
95
+ */
96
+ static initializeConfig(i, t, o) {
97
+ const n = o ? this.mergeWithDefaults(o) : this.cloneDefaults();
98
+ return this.saveConfig(i, t, n, "Initialize recommendation block"), g({
99
+ currentNode: t,
100
+ documentModifier: i.getDocumentModifier(),
101
+ currency: n.currency
102
+ }), n;
103
+ }
104
+ /**
105
+ * Save complete configuration to a node
106
+ *
107
+ * Low-level method - prefer `updateConfig` or `initializeConfig` in most cases.
108
+ * @param api - Stripo extension API with document modifier
109
+ * @param node - The immutable HTML node to save to
110
+ * @param config - Complete configuration to save
111
+ * @param description - Human-readable description for undo/redo
112
+ */
113
+ static saveConfig(i, t, o, n) {
114
+ try {
115
+ i.getDocumentModifier().modifyHtml(t).setNodeConfig(o).apply(new f(n));
116
+ } catch (s) {
117
+ console.warn("[RecommendationConfigService] Failed to save config:", s);
118
+ }
119
+ }
120
+ // ========================================================================
121
+ // Migration Helpers
122
+ // ========================================================================
123
+ /**
124
+ * Migrate configuration from legacy data-attributes
125
+ *
126
+ * Reads existing data-attributes and creates a proper node config.
127
+ * Used when loading templates created before node config was implemented.
128
+ * @param api - Stripo extension API with document modifier
129
+ * @param node - The block node to migrate
130
+ * @returns The migrated configuration
131
+ */
132
+ static migrateFromDataAttributes(i, t) {
133
+ const o = {
134
+ configVersion: u
135
+ };
136
+ if ("getAttribute" in t && typeof t.getAttribute == "function") {
137
+ const n = t.getAttribute("data-layout");
138
+ n === "list" || n === "horizontal" ? o.layout = "list" : (n === "grid" || n === "vertical") && (o.layout = "grid");
139
+ const s = t.getAttribute("data-card-composition");
140
+ s && (o.composition = s.split(",").filter(Boolean));
141
+ const r = t.getAttribute("data-column-spacing");
142
+ r && (o.columnSpacing = parseInt(r) || e.columnSpacing);
143
+ const c = t.getAttribute("data-row-spacing");
144
+ c && (o.rowSpacing = parseInt(c) || e.rowSpacing);
145
+ }
146
+ return this.initializeConfig(i, t, o);
147
+ }
148
+ /**
149
+ * Check if configuration needs migration
150
+ * @param node - The block node to check
151
+ * @returns True if migration is needed
152
+ */
153
+ static needsMigration(i) {
154
+ return i ? this.hasConfig(i) ? this.getConfigVersion(i) < u : !0 : !1;
155
+ }
156
+ // ========================================================================
157
+ // Internal Helpers
158
+ // ========================================================================
159
+ /**
160
+ * Clone default config to avoid mutations
161
+ */
162
+ static cloneDefaults() {
163
+ return {
164
+ ...e,
165
+ currency: { ...e.currency },
166
+ omnibusPrice: { ...e.omnibusPrice },
167
+ omnibusDiscount: { ...e.omnibusDiscount },
168
+ composition: [...e.composition],
169
+ visibility: { ...e.visibility },
170
+ filters: [],
171
+ productIds: [],
172
+ recommendationId: 0
173
+ };
174
+ }
175
+ /**
176
+ * Merge partial config with defaults
177
+ *
178
+ * Deep merges nested objects like currency, omnibus settings.
179
+ */
180
+ static mergeWithDefaults(i) {
181
+ const t = this.cloneDefaults();
182
+ return {
183
+ ...t,
184
+ ...i,
185
+ currency: {
186
+ ...t.currency,
187
+ ...i.currency || {}
188
+ },
189
+ omnibusPrice: {
190
+ ...t.omnibusPrice,
191
+ ...i.omnibusPrice || {}
192
+ },
193
+ omnibusDiscount: {
194
+ ...t.omnibusDiscount,
195
+ ...i.omnibusDiscount || {}
196
+ },
197
+ visibility: {
198
+ ...t.visibility,
199
+ ...i.visibility || {}
200
+ },
201
+ composition: i.composition || t.composition,
202
+ filters: i.filters || [],
203
+ productIds: i.productIds || []
204
+ };
205
+ }
206
+ /**
207
+ * Deep merge for nested objects
208
+ *
209
+ * Recursively merges source into target, preserving existing values
210
+ * that aren't explicitly overwritten.
211
+ */
212
+ static deepMerge(i, t) {
213
+ return {
214
+ ...i,
215
+ ...t,
216
+ currency: {
217
+ ...i.currency,
218
+ ...t.currency || {}
219
+ },
220
+ omnibusPrice: {
221
+ ...i.omnibusPrice,
222
+ ...t.omnibusPrice || {}
223
+ },
224
+ omnibusDiscount: {
225
+ ...i.omnibusDiscount,
226
+ ...t.omnibusDiscount || {}
227
+ },
228
+ visibility: {
229
+ ...i.visibility,
230
+ ...t.visibility || {}
231
+ },
232
+ composition: t.composition ?? i.composition,
233
+ filters: t.filters ?? i.filters,
234
+ productIds: t.productIds ?? i.productIds
235
+ };
236
+ }
237
+ }
238
+ export {
239
+ C as RecommendationConfigService
240
+ };
@@ -1,117 +1,173 @@
1
- import { SettingsPanelRegistry as N, SettingsPanelTab as _, SettingsTab as E, ContainerControls as S, TextControls as L } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
1
+ import { SettingsPanelRegistry as S, SettingsPanelTab as I, SettingsTab as T, ContainerControls as E, TextControls as C } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
2
  import { BLOCK_ID as R } from "./block.js";
3
- import { COMPOSITION_CONTROL_BLOCK_ID as C } from "./cardCompositionControl.js";
4
- import { RecommendationBlockId as I, RecommendationControlId as T } from "./constants.js";
5
- import { CONTROL_BLOCK_ID as e } from "./control.js";
6
- class G extends N {
3
+ import { RecommendationBlockId as N } from "./constants/blockIds.js";
4
+ import { RecommendationControlId as _ } from "./constants/controlIds.js";
5
+ import { CONTROL_BLOCK_ID as L } from "./controls/main/index.js";
6
+ import "./store/recommendation.js";
7
+ import "./controls/name/index.js";
8
+ import "./controls/price/index.js";
9
+ import "./controls/oldPrice/index.js";
10
+ import "./controls/omnibusPrice/index.js";
11
+ import "./controls/omnibusDiscount/index.js";
12
+ import "./controls/button/index.js";
13
+ import "./controls/image/index.js";
14
+ import { SPACING_CONTROL_ID as U } from "./controls/spacing/index.js";
15
+ import { CARD_BACKGROUND_COLOR_CONTROL_ID as B } from "./controls/cardBackground/index.js";
16
+ import { LAYOUT_CONTROL_ID as D } from "./controls/layout/index.js";
17
+ import { COMPOSITION_CONTROL_BLOCK_ID as A } from "./controls/cardComposition/index.js";
18
+ class s extends S {
7
19
  registerBlockControls(O) {
8
20
  O[R] = [
9
- new _(
10
- E.SETTINGS,
21
+ new I(
22
+ T.SETTINGS,
11
23
  [
12
- e,
13
- S.EXTERNAL_INDENTS
24
+ L,
25
+ E.EXTERNAL_INDENTS
14
26
  ]
15
27
  ),
16
- new _(
17
- E.STYLES,
28
+ new I(
29
+ T.STYLES,
18
30
  [
19
- L.TEXT_BLOCK_BACKGROUND_COLOR
31
+ C.TEXT_BLOCK_BACKGROUND_COLOR,
32
+ B,
33
+ D,
34
+ U
20
35
  ]
21
36
  ),
22
- new _(
37
+ new I(
23
38
  "Card Composition",
24
39
  [
25
- C
40
+ A
26
41
  ]
27
42
  ).withLabel("Card Composition")
28
- ], O[I.NAME] = [
29
- new _(
30
- E.SETTINGS,
43
+ ], O[N.NAME] = [
44
+ new I(
45
+ T.SETTINGS,
31
46
  [
32
- T.NAME_BACKGROUND,
33
- T.NAME_COLOR,
34
- T.NAME_SIZE,
35
- T.NAME_STYLE,
36
- T.NAME_FONT_FAMILY
47
+ _.NAME_STYLE,
48
+ _.NAME_ALIGN,
49
+ _.NAME_TEXT_TRIM,
50
+ _.NAME_PADDINGS
37
51
  ]
38
52
  ),
39
- new _(
40
- E.STYLES,
53
+ new I(
54
+ T.STYLES,
41
55
  [
42
- T.NAME_ALIGN,
43
- T.NAME_PADDINGS
56
+ _.NAME_BACKGROUND,
57
+ _.NAME_FONT_FAMILY,
58
+ _.NAME_SIZE,
59
+ _.NAME_COLOR
44
60
  ]
45
61
  )
46
- ], O[I.PRICE] = [
47
- new _(
48
- E.SETTINGS,
62
+ ], O[N.PRICE] = [
63
+ new I(
64
+ T.SETTINGS,
49
65
  [
50
- T.PRICE_BACKGROUND,
51
- T.PRICE_COLOR,
52
- T.PRICE_SIZE,
53
- T.PRICE_STYLE,
54
- T.PRICE_FONT_FAMILY
66
+ _.PRICE_STYLE,
67
+ _.PRICE_ALIGN,
68
+ _.PRICE_PADDINGS
55
69
  ]
56
70
  ),
57
- new _(
58
- E.STYLES,
71
+ new I(
72
+ T.STYLES,
59
73
  [
60
- T.PRICE_ALIGN,
61
- T.PRICE_PADDINGS
74
+ _.PRICE_BACKGROUND,
75
+ _.PRICE_FONT_FAMILY,
76
+ _.PRICE_SIZE,
77
+ _.PRICE_COLOR
62
78
  ]
63
79
  )
64
- ], O[I.OLD_PRICE] = [
65
- new _(
66
- E.SETTINGS,
80
+ ], O[N.OLD_PRICE] = [
81
+ new I(
82
+ T.SETTINGS,
67
83
  [
68
- T.OLD_PRICE_BACKGROUND,
69
- T.OLD_PRICE_COLOR,
70
- T.OLD_PRICE_SIZE,
71
- T.OLD_PRICE_STYLE,
72
- T.OLD_PRICE_FONT_FAMILY
84
+ _.OLD_PRICE_STYLE,
85
+ _.OLD_PRICE_ALIGN,
86
+ _.OLD_PRICE_PADDINGS
73
87
  ]
74
88
  ),
75
- new _(
76
- E.STYLES,
89
+ new I(
90
+ T.STYLES,
77
91
  [
78
- T.OLD_PRICE_ALIGN,
79
- T.OLD_PRICE_PADDINGS
92
+ _.OLD_PRICE_BACKGROUND,
93
+ _.OLD_PRICE_FONT_FAMILY,
94
+ _.OLD_PRICE_SIZE,
95
+ _.OLD_PRICE_COLOR
80
96
  ]
81
97
  )
82
- ], O[I.BUTTON] = [
83
- new _(
84
- E.SETTINGS,
98
+ ], O[N.OMNIBUS_PRICE] = [
99
+ new I(
100
+ T.SETTINGS,
85
101
  [
86
- T.BUTTON_TEXT,
87
- T.BUTTON_ALIGN,
88
- T.BUTTON_MARGINS,
89
- T.BUTTON_PADDINGS
102
+ _.OMNIBUS_PRICE_TEXT_BEFORE,
103
+ _.OMNIBUS_PRICE_TEXT_AFTER,
104
+ _.OMNIBUS_PRICE_STYLE,
105
+ _.OMNIBUS_PRICE_ALIGN,
106
+ _.OMNIBUS_PRICE_PADDINGS
90
107
  ]
91
108
  ),
92
- new _(
93
- E.STYLES,
109
+ new I(
110
+ T.STYLES,
94
111
  [
95
- T.BUTTON_COLOR,
96
- T.BUTTON_FONT_FAMILY,
97
- T.BUTTON_TEXT_SIZE,
98
- T.BUTTON_TEXT_STYLE_AND_FONT_COLOR,
99
- T.BUTTON_FIT_TO_CONTENT,
100
- T.BUTTON_BORDER_RADIUS,
101
- T.BUTTON_BORDER
112
+ _.OMNIBUS_PRICE_BACKGROUND,
113
+ _.OMNIBUS_PRICE_FONT_FAMILY,
114
+ _.OMNIBUS_PRICE_SIZE,
115
+ _.OMNIBUS_PRICE_COLOR
102
116
  ]
103
117
  )
104
- ], O[I.IMAGE] = [
105
- new _(
106
- E.SETTINGS,
118
+ ], O[N.OMNIBUS_DISCOUNT] = [
119
+ new I(
120
+ T.SETTINGS,
107
121
  [
108
- T.IMAGE_SIZE,
109
- T.IMAGE_MARGINS
122
+ _.OMNIBUS_DISCOUNT_TEXT_BEFORE,
123
+ _.OMNIBUS_DISCOUNT_TEXT_AFTER,
124
+ _.OMNIBUS_DISCOUNT_STYLE,
125
+ _.OMNIBUS_DISCOUNT_ALIGN,
126
+ _.OMNIBUS_DISCOUNT_PADDINGS
127
+ ]
128
+ ),
129
+ new I(
130
+ T.STYLES,
131
+ [
132
+ _.OMNIBUS_DISCOUNT_BACKGROUND,
133
+ _.OMNIBUS_DISCOUNT_FONT_FAMILY,
134
+ _.OMNIBUS_DISCOUNT_SIZE,
135
+ _.OMNIBUS_DISCOUNT_COLOR
136
+ ]
137
+ )
138
+ ], O[N.BUTTON] = [
139
+ new I(
140
+ T.SETTINGS,
141
+ [
142
+ _.BUTTON_TEXT,
143
+ _.BUTTON_ALIGN,
144
+ _.BUTTON_PADDINGS,
145
+ _.BUTTON_MARGINS
146
+ ]
147
+ ),
148
+ new I(
149
+ T.STYLES,
150
+ [
151
+ _.BUTTON_COLOR,
152
+ _.BUTTON_FONT_FAMILY,
153
+ _.BUTTON_TEXT_SIZE,
154
+ _.BUTTON_TEXT_STYLE_AND_FONT_COLOR,
155
+ _.BUTTON_FIT_TO_CONTENT,
156
+ _.BUTTON_BORDER_RADIUS,
157
+ _.BUTTON_BORDER
158
+ ]
159
+ )
160
+ ], O[N.IMAGE] = [
161
+ new I(
162
+ T.SETTINGS,
163
+ [
164
+ _.IMAGE_SIZE,
165
+ _.IMAGE_MARGINS
110
166
  ]
111
167
  )
112
168
  ];
113
169
  }
114
170
  }
115
171
  export {
116
- G as SettingsPanel
172
+ s as SettingsPanel
117
173
  };