@useinsider/guido 2.0.0-beta.e73ba15 → 2.0.0-beta.ecd6540

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 (232) hide show
  1. package/dist/@types/config/schemas.js +53 -39
  2. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue.js +2 -2
  3. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue.js +5 -5
  4. package/dist/components/organisms/header/LeftSlot.vue.js +12 -12
  5. package/dist/components/organisms/header/LeftSlot.vue2.js +6 -6
  6. package/dist/components/organisms/header/RightSlot.vue2.js +10 -10
  7. package/dist/composables/useConfig.js +29 -27
  8. package/dist/composables/useSave.js +13 -11
  9. package/dist/config/migrator/index.js +9 -8
  10. package/dist/config/migrator/itemsBlockMigrator.js +334 -0
  11. package/dist/config/migrator/recommendationMigrator.js +2 -2
  12. package/dist/extensions/Blocks/Items/block.js +36 -40
  13. package/dist/extensions/Blocks/Items/controls/button/link.js +22 -29
  14. package/dist/extensions/Blocks/Items/controls/cardComposition.js +70 -59
  15. package/dist/extensions/Blocks/Items/controls/image/link.js +23 -30
  16. package/dist/extensions/Blocks/Items/controls/name/trimming.js +25 -25
  17. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +19 -17
  18. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +31 -29
  19. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +36 -36
  20. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +21 -19
  21. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +29 -27
  22. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +93 -0
  23. package/dist/extensions/Blocks/Items/controls/settingsControl.js +152 -143
  24. package/dist/extensions/Blocks/Items/enums/controlEnums.js +2 -2
  25. package/dist/extensions/Blocks/Items/enums/productEnums.js +43 -45
  26. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +4 -5
  27. package/dist/extensions/Blocks/Items/extension.js +11 -9
  28. package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +58 -49
  29. package/dist/extensions/Blocks/Items/layouts/vertical.html.js +48 -59
  30. package/dist/extensions/Blocks/Items/settingsPanel.js +27 -26
  31. package/dist/extensions/Blocks/Items/store/items-block.js +11 -7
  32. package/dist/extensions/Blocks/Items/template.js +387 -140
  33. package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +174 -0
  34. package/dist/extensions/Blocks/Recommendation/block.js +1 -1
  35. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +103 -0
  36. package/dist/extensions/Blocks/Recommendation/constants.js +5 -0
  37. package/dist/extensions/Blocks/Recommendation/control.js +306 -0
  38. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +13 -0
  39. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +13 -0
  40. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +13 -0
  41. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +13 -0
  42. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +13 -0
  43. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +13 -0
  44. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +13 -0
  45. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +13 -0
  46. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +13 -0
  47. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +13 -0
  48. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +13 -0
  49. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +13 -0
  50. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +13 -0
  51. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +13 -0
  52. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +13 -0
  53. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +13 -0
  54. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +13 -0
  55. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +13 -0
  56. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +13 -0
  57. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +13 -0
  58. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +13 -0
  59. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +13 -0
  60. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +13 -0
  61. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +13 -0
  62. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +13 -0
  63. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +13 -0
  64. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +13 -0
  65. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +13 -0
  66. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +13 -0
  67. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +13 -0
  68. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +13 -0
  69. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +13 -0
  70. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +13 -0
  71. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +13 -0
  72. package/dist/extensions/Blocks/Recommendation/extension.js +43 -40
  73. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +0 -5
  74. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +72 -128
  75. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +21 -22
  76. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +160 -0
  77. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +152 -0
  78. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +180 -0
  79. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
  80. package/dist/extensions/Blocks/Unsubscribe/extension.js +9 -9
  81. package/dist/extensions/Blocks/common-control.js +29 -30
  82. package/dist/extensions/Blocks/controlFactories.js +106 -130
  83. package/dist/guido.css +1 -1
  84. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +125 -116
  85. package/dist/src/@types/config/index.d.ts +2 -2
  86. package/dist/src/@types/config/schemas.d.ts +26 -0
  87. package/dist/src/@types/config/types.d.ts +7 -1
  88. package/dist/src/composables/useConfig.d.ts +6 -0
  89. package/dist/src/config/migrator/itemsBlockMigrator.d.ts +6 -0
  90. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -2
  91. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +9 -0
  92. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -2
  93. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +1 -1
  94. package/dist/src/extensions/Blocks/Items/controls/price/singlePrice.d.ts +18 -0
  95. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +0 -4
  96. package/dist/src/extensions/Blocks/Items/enums/controlEnums.d.ts +1 -0
  97. package/dist/src/extensions/Blocks/Items/enums/productEnums.d.ts +24 -26
  98. package/dist/src/extensions/Blocks/Items/enums/settingsEnums.d.ts +1 -2
  99. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +2 -0
  100. package/dist/src/extensions/Blocks/Items/template.d.ts +22 -1
  101. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +71 -0
  102. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +28 -0
  103. package/dist/src/extensions/Blocks/Recommendation/{constants/controlIds.d.ts → constants.d.ts} +11 -19
  104. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +35 -0
  105. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +5 -0
  106. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +5 -0
  107. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +5 -0
  108. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +5 -0
  109. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +5 -0
  110. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +5 -0
  111. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +5 -0
  112. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +5 -0
  113. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +5 -0
  114. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +5 -0
  115. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +5 -0
  116. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +5 -0
  117. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +5 -0
  118. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +5 -0
  119. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +5 -0
  120. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +5 -0
  121. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +5 -0
  122. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +5 -0
  123. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +5 -0
  124. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +5 -0
  125. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +5 -0
  126. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +5 -0
  127. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +5 -0
  128. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +5 -0
  129. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +5 -0
  130. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +5 -0
  131. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +5 -0
  132. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +5 -0
  133. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +5 -0
  134. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +5 -0
  135. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +5 -0
  136. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +5 -0
  137. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +5 -0
  138. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +5 -0
  139. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +0 -9
  140. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +16 -16
  141. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +16 -0
  142. package/dist/src/extensions/Blocks/Recommendation/templates/{vertical/migration.d.ts → migrationTemplate.d.ts} +4 -11
  143. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +44 -0
  144. package/dist/src/extensions/Blocks/common-control.d.ts +9 -10
  145. package/dist/src/stores/config.d.ts +147 -1
  146. package/dist/static/styles/components/button.css.js +1 -1
  147. package/dist/static/styles/components/wide-panel.css.js +4 -0
  148. package/dist/static/styles/customEditorStyle.css.js +2 -38
  149. package/dist/stores/config.js +7 -0
  150. package/dist/utils/pairProductVariables.js +61 -58
  151. package/package.json +1 -1
  152. package/dist/extensions/Blocks/Items/utils/configBlockUtils.js +0 -17
  153. package/dist/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.js +0 -28
  154. package/dist/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.js +0 -76
  155. package/dist/extensions/Blocks/Items/utils/updateAttributes.js +0 -46
  156. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +0 -4
  157. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +0 -4
  158. package/dist/extensions/Blocks/Recommendation/constants/layout.js +0 -7
  159. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +0 -11
  160. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +0 -64
  161. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +0 -100
  162. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +0 -243
  163. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +0 -19
  164. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +0 -104
  165. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +0 -86
  166. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +0 -134
  167. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +0 -54
  168. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +0 -106
  169. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +0 -64
  170. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +0 -124
  171. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +0 -60
  172. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +0 -112
  173. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +0 -46
  174. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +0 -76
  175. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +0 -44
  176. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +0 -48
  177. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +0 -73
  178. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +0 -73
  179. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +0 -48
  180. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +0 -73
  181. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +0 -73
  182. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +0 -44
  183. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +0 -224
  184. package/dist/extensions/Blocks/Recommendation/templates/horizontal/elementRenderer.js +0 -157
  185. package/dist/extensions/Blocks/Recommendation/templates/horizontal/template.js +0 -72
  186. package/dist/extensions/Blocks/Recommendation/templates/index.js +0 -12
  187. package/dist/extensions/Blocks/Recommendation/templates/utils.js +0 -173
  188. package/dist/extensions/Blocks/Recommendation/templates/vertical/elementRenderer.js +0 -186
  189. package/dist/extensions/Blocks/Recommendation/templates/vertical/migration.js +0 -251
  190. package/dist/extensions/Blocks/Recommendation/templates/vertical/template.js +0 -62
  191. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +0 -25
  192. package/dist/src/extensions/Blocks/Items/utils/configBlockUtils.d.ts +0 -23
  193. package/dist/src/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.d.ts +0 -32
  194. package/dist/src/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.d.ts +0 -50
  195. package/dist/src/extensions/Blocks/Items/utils/updateAttributes.d.ts +0 -8
  196. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +0 -13
  197. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +0 -12
  198. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +0 -17
  199. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +0 -19
  200. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +0 -143
  201. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +0 -41
  202. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +0 -95
  203. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +0 -35
  204. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +0 -24
  205. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +0 -34
  206. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +0 -17
  207. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +0 -16
  208. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +0 -22
  209. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +0 -54
  210. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +0 -15
  211. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +0 -40
  212. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +0 -15
  213. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +0 -81
  214. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +0 -97
  215. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +0 -16
  216. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +0 -95
  217. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +0 -100
  218. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +0 -15
  219. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +0 -15
  220. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +0 -100
  221. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +0 -15
  222. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +0 -15
  223. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +0 -95
  224. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +0 -77
  225. package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/elementRenderer.d.ts +0 -8
  226. package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/migration.d.ts +0 -25
  227. package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/template.d.ts +0 -18
  228. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +0 -39
  229. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +0 -45
  230. package/dist/src/extensions/Blocks/Recommendation/templates/vertical/elementRenderer.d.ts +0 -7
  231. package/dist/src/extensions/Blocks/Recommendation/templates/vertical/template.d.ts +0 -33
  232. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +0 -19
@@ -1,243 +0,0 @@
1
- var f = Object.defineProperty;
2
- var C = (a, n, t) => n in a ? f(a, n, { enumerable: !0, configurable: !0, writable: !0, value: t }) : a[n] = t;
3
- var c = (a, n, t) => C(a, typeof n != "symbol" ? n + "" : n, t);
4
- import { ModificationDescription as d } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
- import { CommonControl as g } from "../../../common-control.js";
6
- import { ATTR_PRODUCT_IMAGE as O, ATTR_PRODUCT_NAME as A, ATTR_PRODUCT_PRICE as R, ATTR_PRODUCT_OLD_PRICE as N, ATTR_PRODUCT_OMNIBUS_PRICE as E, ATTR_PRODUCT_OMNIBUS_DISCOUNT as D, ATTR_PRODUCT_BUTTON as v } from "../../constants/selectors.js";
7
- import { useRecommendationExtensionStore as I } from "../../store/recommendation.js";
8
- const V = "ui-elements-recommendation-card-composition", S = {
9
- ORDERABLE: "cardComposition"
10
- }, b = ".recommendation-attribute-row", P = ".product-card-wrapper > tbody", y = "data-card-composition", p = "data-attribute-type", h = "data-visibility", s = [
11
- { key: O, label: "Product Image", visible: !0 },
12
- { key: A, label: "Product Name", visible: !0 },
13
- { key: R, label: "Product Price", visible: !0 },
14
- { key: N, label: "Product Original Price", visible: !0 },
15
- { key: E, label: "Omnibus Price", visible: !1 },
16
- { key: D, label: "Omnibus Discount", visible: !1 },
17
- { key: v, label: "Product Button", visible: !0 }
18
- ];
19
- class x extends g {
20
- constructor() {
21
- super(...arguments);
22
- c(this, "store", I());
23
- c(this, "unsubscribeOrientation", null);
24
- }
25
- getId() {
26
- return V;
27
- }
28
- getTemplate() {
29
- const t = s.map((e) => ({
30
- key: e.key,
31
- label: e.label,
32
- content: this._createItemContent(e.label, e.key)
33
- }));
34
- return `
35
- <div class="container" data-card-composition-control>
36
- ${this._GuLabel({ text: "Card Element Order & Visibility" })}
37
- ${this._GuOrderable(S.ORDERABLE, t)}
38
- </div>
39
- `;
40
- }
41
- onRender() {
42
- this._initializeComposition(), this._registerValueChangeListeners(), this._updateOrderableState(), this._subscribeToOrientationChanges();
43
- }
44
- onTemplateNodeUpdated(t) {
45
- super.onTemplateNodeUpdated(t), this._initializeComposition(), this._updateOrderableState();
46
- }
47
- /**
48
- * Creates the HTML content for an orderable item with label and toggle
49
- */
50
- _createItemContent(t, e) {
51
- return `
52
- <div style="display: flex; align-items: center; justify-content: space-between;
53
- padding: 8px; gap: 8px;">
54
- <span style="flex: 1;">${t}</span>
55
- ${this._GuToggle(`visibility_${e}`)}
56
- </div>
57
- `;
58
- }
59
- /**
60
- * Registers event listeners for composition and visibility changes
61
- */
62
- _registerValueChangeListeners() {
63
- this.api.onValueChanged("cardComposition", (t) => {
64
- this._applyCompositionToBlock(t);
65
- }), s.forEach((t) => {
66
- this.api.onValueChanged(`visibility_${t.key}`, (e) => {
67
- this._applyVisibilityToBlock(t.key, e);
68
- });
69
- });
70
- }
71
- /**
72
- * Initializes composition order and visibility state from the current node
73
- */
74
- _initializeComposition() {
75
- const t = this._readCompositionFromNode(), e = this._readVisibilityFromRows(), i = {
76
- cardComposition: t,
77
- ...this._buildVisibilityValues(e)
78
- };
79
- this.api.updateValues(i);
80
- }
81
- /**
82
- * Reads composition order from node's data-card-composition attribute
83
- * Falls back to default order if attribute is not present
84
- */
85
- _readCompositionFromNode() {
86
- if (!this.currentNode || !("getAttribute" in this.currentNode))
87
- return s.map((e) => e.key);
88
- const t = this.currentNode.getAttribute(y);
89
- return t ? t.split(",").filter(Boolean) : s.map((e) => e.key);
90
- }
91
- /**
92
- * Builds visibility values object from the visibility map
93
- */
94
- _buildVisibilityValues(t) {
95
- return s.reduce((e, i) => (e[`visibility_${i.key}`] = t[i.key] ?? !0, e), {});
96
- }
97
- /**
98
- * Read visibility state from individual row elements' data-visibility attributes
99
- * This ensures toggles reflect the actual DOM state
100
- */
101
- _readVisibilityFromRows() {
102
- if (!this.currentNode)
103
- return this._getDefaultVisibilities();
104
- const t = Array.from(this.currentNode.querySelectorAll(b)), e = this._extractVisibilityFromRows(t);
105
- return this._mergeWithDefaults(e);
106
- }
107
- /**
108
- * Returns default visibility values for all items
109
- */
110
- _getDefaultVisibilities() {
111
- return s.reduce((t, e) => (t[e.key] = e.visible, t), {});
112
- }
113
- /**
114
- * Extracts visibility values from DOM nodes
115
- */
116
- _extractVisibilityFromRows(t) {
117
- const e = {};
118
- return t.forEach((i) => {
119
- if (!("getAttribute" in i))
120
- return;
121
- const o = i.getAttribute(p), r = i.getAttribute(h);
122
- o && r !== null && (e[o] = this._parseVisibilityValue(r));
123
- }), e;
124
- }
125
- /**
126
- * Parses visibility value from string to boolean
127
- * Accepts "1", "true" as true, everything else as false
128
- */
129
- _parseVisibilityValue(t) {
130
- return t === "1" || t === "true";
131
- }
132
- /**
133
- * Merges extracted visibilities with default values for missing keys
134
- */
135
- _mergeWithDefaults(t) {
136
- return s.forEach((e) => {
137
- e.key in t || (t[e.key] = e.visible);
138
- }), t;
139
- }
140
- /**
141
- * Apply the reordered composition to the block's HTML structure
142
- * Updates the data-card-composition attribute and reorders product attributes
143
- * Note: Reordering is only applied for vertical layout
144
- */
145
- _applyCompositionToBlock(t) {
146
- if (!this.currentNode)
147
- return;
148
- const e = this._getCurrentLayout();
149
- this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute(y, t.join(",")).apply(new d("Update card composition")), e === "vertical" && this._reorderProductAttributes(t);
150
- }
151
- /**
152
- * Reorders attribute rows within each product card based on composition order
153
- * Targets the tbody inside each product-attribute-cell to preserve card structure
154
- */
155
- _reorderProductAttributes(t) {
156
- if (!this.currentNode)
157
- return;
158
- const e = this.currentNode.querySelectorAll(P);
159
- if (!(e != null && e.length))
160
- return;
161
- const i = this.api.getDocumentModifier();
162
- e.forEach((o) => {
163
- const r = this._buildCompositionHtml(o, t);
164
- i.modifyHtml(o).setInnerHtml(r);
165
- }), i.apply(new d("Reorder product attributes"));
166
- }
167
- /**
168
- * Builds HTML string with attributes ordered according to composition
169
- */
170
- _buildCompositionHtml(t, e) {
171
- return e.reduce((i, o) => {
172
- const r = t.querySelector(`${b}[${p}="${o}"]`);
173
- return r && "getOuterHTML" in r ? i + r.getOuterHTML() : i;
174
- }, "");
175
- }
176
- /**
177
- * Apply visibility changes to the block's HTML structure
178
- * Updates display style and data-visibility attribute for all matching elements
179
- * - <tr> elements: use display: none / table-row
180
- * - <td> elements: use display: none / table-cell
181
- */
182
- _applyVisibilityToBlock(t, e) {
183
- if (!this.currentNode)
184
- return;
185
- const i = this.currentNode.querySelectorAll(`${b}[${p}="${t}"]`);
186
- if (!(i != null && i.length))
187
- return;
188
- const o = e ? "1" : "0", r = `Set ${t} visibility to ${e ? "visible" : "hidden"}`, m = this.api.getDocumentModifier();
189
- i.forEach((l) => {
190
- let u = "TR";
191
- if ("tagName" in l && l.tagName)
192
- u = l.tagName.toUpperCase();
193
- else if ("getTagName" in l) {
194
- const _ = l;
195
- typeof _.getTagName == "function" && (u = _.getTagName().toUpperCase());
196
- }
197
- const T = e ? u === "TD" || u === "BLOCK_IMAGE" || u === "BLOCK_BUTTON" ? "table-cell" : "table-row" : "none";
198
- m.modifyHtml(l).setStyle("display", T).setAttribute(h, o);
199
- }), m.apply(new d(r));
200
- }
201
- /**
202
- * Gets the current layout orientation from store or DOM
203
- */
204
- _getCurrentLayout() {
205
- const t = this.store.recommendationConfigs.orientation;
206
- if (t)
207
- return t;
208
- if (!this.currentNode || !("querySelector" in this.currentNode))
209
- return "vertical";
210
- const e = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
211
- return !e || !("getAttribute" in e) ? "vertical" : e.getAttribute("data-layout") === "horizontal" ? "horizontal" : "vertical";
212
- }
213
- /**
214
- * Updates orderable state based on layout orientation
215
- * Adds/removes disabled class to hide drag icons for horizontal layout
216
- */
217
- _updateOrderableState() {
218
- const e = this._getCurrentLayout() === "horizontal", i = this.getContainer();
219
- if (!i)
220
- return;
221
- const o = i.querySelector("[data-card-composition-control]");
222
- if (!o)
223
- return;
224
- const r = o.querySelector("ue-orderable");
225
- r && r.classList.toggle("orderable-disabled", e);
226
- }
227
- /**
228
- * Subscribe to store orientation changes
229
- * Updates orderable state when layout changes via the layout control
230
- */
231
- _subscribeToOrientationChanges() {
232
- this.unsubscribeOrientation && this.unsubscribeOrientation();
233
- let t = this.store.recommendationConfigs.orientation;
234
- this.unsubscribeOrientation = this.store.$subscribe(() => {
235
- const e = this.store.recommendationConfigs.orientation;
236
- e !== t && (t = e, this._updateOrderableState());
237
- });
238
- }
239
- }
240
- export {
241
- V as COMPOSITION_CONTROL_BLOCK_ID,
242
- x as RecommendationCardCompositionControl
243
- };
@@ -1,19 +0,0 @@
1
- import { createImageMarginsControl as m, createImageSizeControl as n } from "../../../controlFactories.js";
2
- import { RecommendationBlockId as o } from "../../constants/blockIds.js";
3
- import { RecommendationControlId as r } from "../../constants/controlIds.js";
4
- import { CONTAINER_SELECTOR as t } from "../../constants/selectors.js";
5
- const e = n(
6
- r.IMAGE_SIZE,
7
- o.IMAGE,
8
- t
9
- ), i = m(
10
- r.IMAGE_MARGINS,
11
- o.IMAGE,
12
- t
13
- ), C = {
14
- size: e,
15
- margins: i
16
- };
17
- export {
18
- C as ImageControls
19
- };
@@ -1,104 +0,0 @@
1
- var h = Object.defineProperty;
2
- var p = (e, o, t) => o in e ? h(e, o, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[o] = t;
3
- var i = (e, o, t) => p(e, typeof o != "symbol" ? o + "" : o, t);
4
- import { ModificationDescription as a } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
- import { CommonControl as g } from "../../../common-control.js";
6
- import { CONTAINER_SELECTOR as C } from "../../constants/selectors.js";
7
- import { useRecommendationExtensionStore as f } from "../../store/recommendation.js";
8
- import { prepareProductRows as L } from "../../templates/index.js";
9
- import { getCurrentLayout as u, getBlockElement as T, getCurrentCardBackgroundColor as y, getCardComposition as N, applyCardBackgroundColor as _ } from "../main/utils.js";
10
- import { getDefaultProducts as O } from "../../templates/utils.js";
11
- const R = "recommendation-layout-control", s = {
12
- LAYOUT: "layout"
13
- }, A = {
14
- LAYOUT: "data-layout"
15
- }, U = [
16
- { text: "Vertical", value: "vertical" },
17
- { text: "Horizontal", value: "horizontal" }
18
- ];
19
- class I extends g {
20
- constructor() {
21
- super(...arguments);
22
- i(this, "store", f());
23
- i(this, "isChangingLayout", !1);
24
- }
25
- getId() {
26
- return R;
27
- }
28
- getTemplate() {
29
- return `
30
- <div class="layout-control-container">
31
- ${this._GuTwoColumns([
32
- this._GuLabel({ text: "Layout Orientation" }),
33
- this._GuRadioButton({
34
- name: s.LAYOUT,
35
- buttons: U
36
- })
37
- ])}
38
- </div>
39
- `;
40
- }
41
- onRender() {
42
- this._setFormValues(), this._listenToFormUpdates();
43
- }
44
- onTemplateNodeUpdated(t) {
45
- super.onTemplateNodeUpdated(t), this._setFormValues();
46
- }
47
- _setFormValues() {
48
- const t = u(this.currentNode);
49
- this.api.updateValues({
50
- [s.LAYOUT]: t
51
- });
52
- }
53
- /**
54
- * Handles layout change
55
- * Updates the block's data attribute and regenerates product rows
56
- */
57
- _onLayoutChange(t) {
58
- if (this.isChangingLayout || u(this.currentNode) === t)
59
- return;
60
- const r = T(this.currentNode);
61
- if (r) {
62
- this.isChangingLayout = !0;
63
- try {
64
- this.store.$patch({
65
- recommendationConfigs: {
66
- orientation: t
67
- }
68
- }), this.api.getDocumentModifier().modifyHtml(r).setAttribute(A.LAYOUT, t).apply(new a(`Update layout to ${t}`)), this._regenerateProductRows(t);
69
- } finally {
70
- this.isChangingLayout = !1;
71
- }
72
- }
73
- }
74
- /**
75
- * Regenerates product rows based on the selected layout
76
- * Special handling: captures and reapplies background color across layout changes
77
- */
78
- _regenerateProductRows(t) {
79
- if (!this.currentNode || !("querySelector" in this.currentNode))
80
- return;
81
- const n = this.currentNode.querySelector(C);
82
- if (!n)
83
- return;
84
- const r = y(this.currentNode), c = this.store.recommendationProducts.length > 0 ? this.store.recommendationProducts : O(), { cardsInRow: d } = this.store.recommendationConfigs, m = N(this.currentNode), l = L(c, t, {
85
- productsPerRow: d,
86
- composition: m
87
- });
88
- this.api.getDocumentModifier().modifyHtml(n).setInnerHtml(l).apply(new a(`Regenerated products for ${t} layout`)), _({
89
- currentNode: this.currentNode,
90
- documentModifier: this.api.getDocumentModifier(),
91
- bgColor: r,
92
- layout: t
93
- });
94
- }
95
- _listenToFormUpdates() {
96
- this.api.onValueChanged(s.LAYOUT, (t) => {
97
- this._onLayoutChange(t);
98
- });
99
- }
100
- }
101
- export {
102
- R as LAYOUT_CONTROL_ID,
103
- I as LayoutControl
104
- };
@@ -1,86 +0,0 @@
1
- var r = Object.defineProperty;
2
- var a = (s, i, t) => i in s ? r(s, i, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[i] = t;
3
- var n = (s, i, t) => a(s, typeof i != "symbol" ? i + "" : i, t);
4
- import { UEAttr as l } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
- import { CommonControl as m } from "../../../common-control.js";
6
- import { useRecommendationExtensionStore as h } from "../../store/recommendation.js";
7
- const c = "recommendation-algorithm-control", e = {
8
- ALGORITHM: "strategy",
9
- PRODUCT_IDS: "productIds"
10
- };
11
- class _ extends m {
12
- constructor() {
13
- super(...arguments);
14
- n(this, "store", h());
15
- }
16
- getId() {
17
- return c;
18
- }
19
- getTemplate() {
20
- return `
21
- <div class="algorithm-control-container">
22
- ${this._GuTwoColumns([
23
- this._GuLabel({ text: "Recommendation Algorithm" }),
24
- this._GuSelect({
25
- name: e.ALGORITHM,
26
- placeholder: "Select Recommendation Algorithm",
27
- options: this.store.getActivePredictiveAlgorithms
28
- }),
29
- this._GuLabel({ text: "Product Ids", name: `${e.PRODUCT_IDS}_label` }),
30
- this._GuTextInput({
31
- name: e.PRODUCT_IDS,
32
- placeholder: "Enter Product Ids",
33
- className: "es-180w"
34
- })
35
- ])}
36
- </div>
37
- `;
38
- }
39
- onRender() {
40
- this._initializeSelectItems(), this._setFormValues(), this._listenToFormUpdates();
41
- }
42
- _setFormValues() {
43
- const { recommendationConfigs: t } = this.store;
44
- this._setProductIdsVisibility(), this.api.updateValues({
45
- [e.ALGORITHM]: t.strategy,
46
- [e.PRODUCT_IDS]: t.productIds.join(",")
47
- });
48
- }
49
- _initializeSelectItems() {
50
- this.api.setUIEAttribute(
51
- e.ALGORITHM,
52
- l.SELECTPICKER.items,
53
- this.store.getActivePredictiveAlgorithms
54
- );
55
- }
56
- _setProductIdsVisibility() {
57
- const { recommendationConfigs: t } = this.store, o = t.strategy === "manualMerchandising";
58
- this.api.setVisibility(e.PRODUCT_IDS, o), this.api.setVisibility(`${e.PRODUCT_IDS}_label`, o);
59
- }
60
- _onAlgorithmChange(t) {
61
- this.store.$patch({
62
- recommendationConfigs: {
63
- strategy: t
64
- }
65
- }), this._setProductIdsVisibility();
66
- }
67
- _onProductIdsChange(t) {
68
- const o = t.split(",").filter(Boolean);
69
- this.store.$patch({
70
- recommendationConfigs: {
71
- productIds: o
72
- }
73
- });
74
- }
75
- _listenToFormUpdates() {
76
- this.api.onValueChanged(e.ALGORITHM, (t) => {
77
- this._onAlgorithmChange(t);
78
- }), this.api.onValueChanged(e.PRODUCT_IDS, (t) => {
79
- this._onProductIdsChange(t);
80
- });
81
- }
82
- }
83
- export {
84
- c as ALGORITHM_CONTROL_ID,
85
- _ as AlgorithmControl
86
- };
@@ -1,134 +0,0 @@
1
- var l = Object.defineProperty;
2
- var _ = (n, o, t) => o in n ? l(n, o, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[o] = t;
3
- var s = (n, o, t) => _(n, typeof o != "symbol" ? o + "" : o, t);
4
- import { currencyLocationMaps as i, currencyOperators as r, currencyDecimalCounts as a } from "../../../../../enums/extensions/recommendationBlock.js";
5
- import { UEAttr as E } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
6
- import { CommonControl as u } from "../../../common-control.js";
7
- import { useRecommendationExtensionStore as m } from "../../store/recommendation.js";
8
- const S = "recommendation-currency-control", e = {
9
- CURRENCY: "value",
10
- CURRENCY_LOCATION: "alignment",
11
- CURRENCY_SYMBOL: "symbol",
12
- CURRENCY_THOUSAND_SEPARATOR: "thousandSeparator",
13
- CURRENCY_DECIMAL_SEPARATOR: "decimalSeparator",
14
- CURRENCY_DECIMAL_COUNT: "decimalCount"
15
- };
16
- class p extends u {
17
- constructor() {
18
- super(...arguments);
19
- s(this, "store", m());
20
- }
21
- getId() {
22
- return S;
23
- }
24
- getTemplate() {
25
- return `
26
- <div class="currency-control-container">
27
- ${this._GuTwoColumns([
28
- this._GuLabel({ text: "Currency" }),
29
- this._GuSelect({
30
- name: e.CURRENCY,
31
- placeholder: "Select Currency",
32
- options: this.store.currencyList
33
- }),
34
- this._GuLabel({ text: "Currency Location" }),
35
- this._GuSelect({
36
- name: e.CURRENCY_LOCATION,
37
- placeholder: "Select Currency Location",
38
- options: i
39
- }),
40
- this._GuLabel({ text: "Currency Symbol" }),
41
- this._GuSelect({
42
- name: e.CURRENCY_SYMBOL,
43
- placeholder: "Select Currency Symbol",
44
- options: this.store.getCurrencySymbolList
45
- }),
46
- this._GuLabel({ text: "Thousand Separator" }),
47
- this._GuSelect({
48
- name: e.CURRENCY_THOUSAND_SEPARATOR,
49
- placeholder: "Select Thousand Separator",
50
- options: r
51
- }),
52
- this._GuLabel({ text: "Decimal Separator" }),
53
- this._GuSelect({
54
- name: e.CURRENCY_DECIMAL_SEPARATOR,
55
- placeholder: "Select Decimal Separator",
56
- options: r
57
- }),
58
- this._GuLabel({ text: "Decimal Count" }),
59
- this._GuSelect({
60
- name: e.CURRENCY_DECIMAL_COUNT,
61
- placeholder: "Select Decimal Count",
62
- options: a
63
- })
64
- ])}
65
- </div>
66
- `;
67
- }
68
- onRender() {
69
- this._initializeSelectItems(), this._setFormValues(), this._listenToFormUpdates();
70
- }
71
- _setFormValues() {
72
- const { currencySettings: t } = this.store.recommendationConfigs;
73
- this.api.updateValues({
74
- [e.CURRENCY]: t.value,
75
- [e.CURRENCY_LOCATION]: t.alignment,
76
- [e.CURRENCY_SYMBOL]: t.symbol,
77
- [e.CURRENCY_THOUSAND_SEPARATOR]: t.thousandSeparator,
78
- [e.CURRENCY_DECIMAL_SEPARATOR]: t.decimalSeparator,
79
- [e.CURRENCY_DECIMAL_COUNT]: t.decimalCount
80
- });
81
- }
82
- _initializeSelectItems() {
83
- const { store: t } = this, C = {
84
- [e.CURRENCY]: t.currencyList,
85
- [e.CURRENCY_LOCATION]: i,
86
- [e.CURRENCY_SYMBOL]: t.getCurrencySymbolList,
87
- [e.CURRENCY_THOUSAND_SEPARATOR]: r,
88
- [e.CURRENCY_DECIMAL_SEPARATOR]: r,
89
- [e.CURRENCY_DECIMAL_COUNT]: a
90
- };
91
- Object.entries(C).forEach(([c, R]) => {
92
- this.api.setUIEAttribute(c, E.SELECTPICKER.items, R);
93
- });
94
- }
95
- _onCurrencyChange(t) {
96
- const [, C] = t.split(".");
97
- this.store.$patch({
98
- recommendationConfigs: {
99
- currencySettings: {
100
- name: C,
101
- value: C
102
- }
103
- }
104
- });
105
- }
106
- _onCurrencyConfigChange(t, C) {
107
- this.store.$patch({
108
- recommendationConfigs: {
109
- currencySettings: {
110
- [t]: C
111
- }
112
- }
113
- });
114
- }
115
- _listenToFormUpdates() {
116
- this.api.onValueChanged(e.CURRENCY, (C) => {
117
- this._onCurrencyChange(C);
118
- }), [
119
- e.CURRENCY_LOCATION,
120
- e.CURRENCY_SYMBOL,
121
- e.CURRENCY_THOUSAND_SEPARATOR,
122
- e.CURRENCY_DECIMAL_SEPARATOR,
123
- e.CURRENCY_DECIMAL_COUNT
124
- ].forEach((C) => {
125
- this.api.onValueChanged(C, (c) => {
126
- this._onCurrencyConfigChange(C, c);
127
- });
128
- });
129
- }
130
- }
131
- export {
132
- S as CURRENCY_CONTROL_ID,
133
- p as CurrencyControl
134
- };
@@ -1,54 +0,0 @@
1
- var n = Object.defineProperty;
2
- var o = (i, e, t) => e in i ? n(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t;
3
- var r = (i, e, t) => o(i, typeof e != "symbol" ? e + "" : e, t);
4
- import { CommonControl as s } from "../../../common-control.js";
5
- import { useRecommendationExtensionStore as l } from "../../store/recommendation.js";
6
- const d = "recommendation-filters-control", a = {
7
- FILTERS: "filterStatus"
8
- };
9
- class h extends s {
10
- constructor() {
11
- super(...arguments);
12
- r(this, "store", l());
13
- r(this, "addFilterListener", () => {
14
- });
15
- r(this, "addFilterButton", null);
16
- }
17
- getId() {
18
- return d;
19
- }
20
- getTemplate() {
21
- return `
22
- <div class="filters-control-container">
23
- ${this._GuTwoColumns([
24
- this._GuLabel({ text: "Filters" }),
25
- this._GuButton({
26
- name: a.FILTERS,
27
- label: "Add Filter",
28
- id: "guido__btn-add-filter"
29
- })
30
- ])}
31
- </div>
32
- `;
33
- }
34
- onRender() {
35
- this._setupButtonListener();
36
- }
37
- onDestroy() {
38
- var t;
39
- (t = this.addFilterButton) == null || t.removeEventListener("click", this.addFilterListener);
40
- }
41
- _onFilterSelectClick() {
42
- this.store.$patch({
43
- filterSelectionDrawerStatus: !0
44
- });
45
- }
46
- _setupButtonListener() {
47
- var t;
48
- this.addFilterListener = this._onFilterSelectClick.bind(this), this.addFilterButton = this.getContainer().querySelector("#guido__btn-add-filter"), (t = this.addFilterButton) == null || t.addEventListener("click", this.addFilterListener);
49
- }
50
- }
51
- export {
52
- d as FILTERS_CONTROL_ID,
53
- h as FiltersControl
54
- };