@useinsider/guido 2.0.0-beta.dd0d492 → 2.0.0-beta.e66a90a

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 (196) hide show
  1. package/README.md +2 -0
  2. package/dist/@types/config/schemas.js +55 -39
  3. package/dist/components/Guido.vue.js +1 -1
  4. package/dist/components/Guido.vue2.js +15 -17
  5. package/dist/components/organisms/email-preview/amp/AmpToggle.vue.js +2 -2
  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/composables/useStripo.js +40 -40
  10. package/dist/config/migrator/recommendationMigrator.js +2 -2
  11. package/dist/extensions/Blocks/CouponBlock/constants.js +4 -0
  12. package/dist/extensions/Blocks/CouponBlock/controls/index.js +29 -0
  13. package/dist/extensions/Blocks/CouponBlock/extension.js +5 -4
  14. package/dist/extensions/Blocks/CouponBlock/settingsPanel.js +20 -14
  15. package/dist/extensions/Blocks/CouponBlock/template.js +22 -11
  16. package/dist/extensions/Blocks/Items/controls/cardComposition.js +13 -4
  17. package/dist/extensions/Blocks/Recommendation/block.js +1 -1
  18. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +4 -0
  19. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +4 -0
  20. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +11 -0
  21. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +64 -0
  22. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +100 -0
  23. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +243 -0
  24. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +19 -0
  25. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +104 -0
  26. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +86 -0
  27. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +134 -0
  28. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +54 -0
  29. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +106 -0
  30. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +64 -0
  31. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +123 -0
  32. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +60 -0
  33. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +112 -0
  34. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +46 -0
  35. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +76 -0
  36. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +44 -0
  37. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +48 -0
  38. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +73 -0
  39. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +73 -0
  40. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +48 -0
  41. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +73 -0
  42. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +73 -0
  43. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +44 -0
  44. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +224 -0
  45. package/dist/extensions/Blocks/Recommendation/extension.js +40 -43
  46. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +5 -0
  47. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +128 -72
  48. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +20 -20
  49. package/dist/extensions/Blocks/Recommendation/templates/horizontal/elementRenderer.js +157 -0
  50. package/dist/extensions/Blocks/Recommendation/templates/horizontal/template.js +72 -0
  51. package/dist/extensions/Blocks/Recommendation/templates/index.js +12 -0
  52. package/dist/extensions/Blocks/Recommendation/templates/utils.js +173 -0
  53. package/dist/extensions/Blocks/Recommendation/templates/vertical/elementRenderer.js +186 -0
  54. package/dist/extensions/Blocks/Recommendation/templates/vertical/migration.js +251 -0
  55. package/dist/extensions/Blocks/Recommendation/templates/vertical/template.js +61 -0
  56. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +25 -0
  57. package/dist/extensions/Blocks/Unsubscribe/extension.js +9 -9
  58. package/dist/extensions/Blocks/common-control.js +6 -7
  59. package/dist/extensions/Blocks/controlFactories.js +162 -117
  60. package/dist/guido.css +1 -1
  61. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +366 -291
  62. package/dist/package.json.js +1 -1
  63. package/dist/services/stripoApi.js +6 -10
  64. package/dist/src/@types/config/index.d.ts +2 -2
  65. package/dist/src/@types/config/schemas.d.ts +30 -0
  66. package/dist/src/@types/config/types.d.ts +7 -1
  67. package/dist/src/composables/useConfig.d.ts +8 -0
  68. package/dist/src/extensions/Blocks/CouponBlock/constants.d.ts +14 -0
  69. package/dist/src/extensions/Blocks/CouponBlock/controls/index.d.ts +108 -0
  70. package/dist/src/extensions/Blocks/CouponBlock/template.d.ts +1 -1
  71. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +13 -0
  72. package/dist/src/extensions/Blocks/Recommendation/{constants.d.ts → constants/controlIds.d.ts} +19 -11
  73. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +11 -0
  74. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +19 -0
  75. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +143 -0
  76. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +41 -0
  77. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +95 -0
  78. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +35 -0
  79. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +24 -0
  80. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +34 -0
  81. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +17 -0
  82. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +16 -0
  83. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +22 -0
  84. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +54 -0
  85. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +15 -0
  86. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +40 -0
  87. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +15 -0
  88. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +81 -0
  89. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +97 -0
  90. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +16 -0
  91. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +95 -0
  92. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +100 -0
  93. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +15 -0
  94. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +15 -0
  95. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +100 -0
  96. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +15 -0
  97. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +15 -0
  98. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +95 -0
  99. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +77 -0
  100. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +9 -0
  101. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +16 -16
  102. package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/elementRenderer.d.ts +8 -0
  103. package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/migration.d.ts +25 -0
  104. package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/template.d.ts +18 -0
  105. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +39 -0
  106. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +45 -0
  107. package/dist/src/extensions/Blocks/Recommendation/templates/vertical/elementRenderer.d.ts +7 -0
  108. package/dist/src/extensions/Blocks/Recommendation/templates/{migrationTemplate.d.ts → vertical/migration.d.ts} +11 -4
  109. package/dist/src/extensions/Blocks/Recommendation/templates/vertical/template.d.ts +33 -0
  110. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +19 -0
  111. package/dist/src/extensions/Blocks/common-control.d.ts +1 -1
  112. package/dist/src/extensions/Blocks/controlFactories.d.ts +30 -7
  113. package/dist/src/stores/config.d.ts +164 -1
  114. package/dist/static/styles/components/button.css.js +1 -1
  115. package/dist/static/styles/components/wide-panel.css.js +0 -4
  116. package/dist/static/styles/customEditorStyle.css.js +38 -2
  117. package/dist/stores/config.js +7 -0
  118. package/package.json +3 -3
  119. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +0 -103
  120. package/dist/extensions/Blocks/Recommendation/constants.js +0 -5
  121. package/dist/extensions/Blocks/Recommendation/control.js +0 -306
  122. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +0 -13
  123. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +0 -13
  124. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +0 -13
  125. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +0 -13
  126. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +0 -13
  127. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +0 -13
  128. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +0 -13
  129. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +0 -13
  130. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +0 -13
  131. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +0 -13
  132. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +0 -13
  133. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +0 -13
  134. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +0 -13
  135. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +0 -13
  136. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +0 -13
  137. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +0 -13
  138. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +0 -13
  139. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +0 -13
  140. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +0 -13
  141. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +0 -13
  142. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +0 -13
  143. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +0 -13
  144. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +0 -13
  145. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +0 -13
  146. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +0 -13
  147. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +0 -13
  148. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +0 -13
  149. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +0 -13
  150. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +0 -13
  151. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +0 -13
  152. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +0 -13
  153. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +0 -13
  154. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +0 -13
  155. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +0 -13
  156. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +0 -160
  157. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +0 -152
  158. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +0 -180
  159. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +0 -28
  160. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +0 -35
  161. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +0 -5
  162. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +0 -5
  163. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +0 -5
  164. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +0 -5
  165. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +0 -5
  166. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +0 -5
  167. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +0 -5
  168. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +0 -5
  169. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +0 -5
  170. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +0 -5
  171. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +0 -5
  172. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +0 -5
  173. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +0 -5
  174. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +0 -5
  175. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +0 -5
  176. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +0 -5
  177. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +0 -5
  178. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +0 -5
  179. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +0 -5
  180. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +0 -5
  181. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +0 -5
  182. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +0 -5
  183. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +0 -5
  184. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +0 -5
  185. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +0 -5
  186. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +0 -5
  187. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +0 -5
  188. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +0 -5
  189. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +0 -5
  190. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +0 -5
  191. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +0 -5
  192. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +0 -5
  193. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +0 -5
  194. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +0 -5
  195. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +0 -16
  196. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +0 -44
@@ -0,0 +1,29 @@
1
+ import { createTextAlignControl as t, createTextColorControl as e, createTextSizeControl as n, createTextStyleControl as r, createTextFontFamilyControl as T, createTextBackgroundColorControl as l, createPaddingsControl as C, createTextLineSpacingControl as c } from "../../controlFactories.js";
2
+ import { CouponControlId as o } from "../constants.js";
3
+ const i = t(
4
+ o.TEXT_ALIGN
5
+ ), E = e(
6
+ o.TEXT_COLOR
7
+ ), s = n(
8
+ o.TEXT_SIZE
9
+ ), S = r(
10
+ o.TEXT_STYLE
11
+ ), _ = T(
12
+ o.TEXT_FONT_FAMILY
13
+ ), g = l(
14
+ o.TEXT_BACKGROUND
15
+ ), X = C(
16
+ o.TEXT_PADDINGS
17
+ ), d = c(
18
+ o.TEXT_LINE_SPACING
19
+ );
20
+ export {
21
+ i as TextAlignControl,
22
+ g as TextBackgroundControl,
23
+ E as TextColorControl,
24
+ _ as TextFontFamilyControl,
25
+ d as TextLineSpacingControl,
26
+ X as TextPaddingsControl,
27
+ s as TextSizeControl,
28
+ S as TextStyleControl
29
+ };
@@ -1,8 +1,9 @@
1
1
  import { ExtensionBuilder as o } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
2
  import { CouponBlock as t } from "./block.js";
3
- import { CouponIconsRegistry as i } from "./iconsRegistry.js";
4
- import { CouponBlockSettings as n } from "./settingsPanel.js";
5
- const p = new o().addBlock(t).withSettingsPanelRegistry(n).withIconsRegistry(i).build();
3
+ import { TextAlignControl as n, TextColorControl as r, TextSizeControl as l, TextStyleControl as d, TextFontFamilyControl as e, TextBackgroundControl as i, TextPaddingsControl as C, TextLineSpacingControl as a } from "./controls/index.js";
4
+ import { CouponIconsRegistry as s } from "./iconsRegistry.js";
5
+ import { CouponBlockSettings as m } from "./settingsPanel.js";
6
+ const u = new o().addBlock(t).withSettingsPanelRegistry(m).addControl(n).addControl(r).addControl(l).addControl(d).addControl(e).addControl(i).addControl(C).addControl(a).withIconsRegistry(s).build();
6
7
  export {
7
- p as default
8
+ u as default
8
9
  };
@@ -1,24 +1,30 @@
1
- import { SettingsPanelRegistry as T, SettingsPanelTab as o, SettingsTab as O, TextControls as t } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { COUPON_BLOCK_ID as N } from "./block.js";
3
- class _ extends T {
1
+ import { SettingsPanelRegistry as n, SettingsPanelTab as o, SettingsTab as t } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { COUPON_BLOCK_ID as E } from "./block.js";
3
+ import { CouponControlId as T } from "./constants.js";
4
+ class i extends n {
4
5
  registerBlockControls(e) {
5
- e[N] = [
6
+ e[E] = [
6
7
  new o(
7
- O.SETTINGS,
8
+ t.SETTINGS,
8
9
  [
9
- t.FONT_FAMILY,
10
- t.FONT_SIZE,
11
- t.FORMAT,
12
- t.FONT_COLOR,
13
- t.TEXT_BLOCK_BACKGROUND_COLOR,
14
- t.ALIGN,
15
- t.LINE_HEIGHT,
16
- t.INTERNAL_INDENTS
10
+ T.TEXT_STYLE,
11
+ T.TEXT_ALIGN,
12
+ T.TEXT_PADDINGS
13
+ ]
14
+ ),
15
+ new o(
16
+ t.STYLES,
17
+ [
18
+ T.TEXT_BACKGROUND,
19
+ T.TEXT_FONT_FAMILY,
20
+ T.TEXT_LINE_SPACING,
21
+ T.TEXT_SIZE,
22
+ T.TEXT_COLOR
17
23
  ]
18
24
  )
19
25
  ];
20
26
  }
21
27
  }
22
28
  export {
23
- _ as CouponBlockSettings
29
+ i as CouponBlockSettings
24
30
  };
@@ -1,18 +1,29 @@
1
- const o = `
2
- <td class="coupon-block ins-coupon-code esd-block-text coupon-block-v2">
3
- <p class="ins-title" contenteditable="false">{@COUPON_CODE}</p>
4
- </td>`, e = `
5
- <td
6
- class="coupon-block coupon-block-v2 ins-coupon-code esd-block-text esd-extension-block"
7
- esd-extension-block-id="coupon-block"
1
+ import { BlockType as o } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { COUPON_BLOCK_ID as e } from "./block.js";
3
+ const t = `
4
+ <${o.BLOCK_TEXT}
5
+ class="coupon-block ins-coupon-code coupon-block-v2 es-p10"
6
+ align="center"
7
+ esd-extension-block-id="${e}">
8
+ <p
9
+ path="1"
10
+ contenteditable="false"
11
+ style="font-size: 16px; color: #333333;">
12
+ <strong path="1,0">{@COUPON_CODE}</strong>
13
+ </p>
14
+ </${o.BLOCK_TEXT}>
15
+ `, l = `
16
+ <td
17
+ class="coupon-block coupon-block-v2 ins-coupon-code esd-block-text esd-extension-block"
18
+ esd-extension-block-id="${e}"
8
19
  >
9
20
  <p class="ins-title" contenteditable="false">{@COUPON_CODE}</p>
10
21
  </td>
11
22
  `;
12
- function t() {
13
- return o;
23
+ function s() {
24
+ return t;
14
25
  }
15
26
  export {
16
- e as default,
17
- t as getDefaultTemplate
27
+ l as default,
28
+ s as getDefaultTemplate
18
29
  };
@@ -145,10 +145,19 @@ class g extends R {
145
145
  T && this.api.getDocumentModifier().modifyHtml(o).setAttribute(C[T], e ? "1" : "0").apply(new l(`Updated ${t} visibility attribute`));
146
146
  }
147
147
  _listenToFormUpdates() {
148
- this.api.onValueChanged(i.PRODUCT_IMAGE, (t) => this._onProductImageChange(t)), this.api.onValueChanged(i.PRODUCT_NAME, (t) => this._onProductNameChange(t)), this.api.onValueChanged(i.PRODUCT_QUANTITY, (t) => this._onProductQuantityChange(t)), this.api.onValueChanged(i.PRODUCT_PRICE, (t) => this._onProductPriceChange(t)), this.api.onValueChanged(
149
- i.PRODUCT_ORIGINAL_PRICE,
150
- (t) => this._onProductOriginalPriceChange(t)
151
- ), this.api.onValueChanged(i.PRODUCT_BUTTON, (t) => this._onProductButtonChange(t));
148
+ this.api.onValueChanged(i.PRODUCT_IMAGE, (t) => {
149
+ this._onProductImageChange(t);
150
+ }), this.api.onValueChanged(i.PRODUCT_NAME, (t) => {
151
+ this._onProductNameChange(t);
152
+ }), this.api.onValueChanged(i.PRODUCT_QUANTITY, (t) => {
153
+ this._onProductQuantityChange(t);
154
+ }), this.api.onValueChanged(i.PRODUCT_PRICE, (t) => {
155
+ this._onProductPriceChange(t);
156
+ }), this.api.onValueChanged(i.PRODUCT_ORIGINAL_PRICE, (t) => {
157
+ this._onProductOriginalPriceChange(t);
158
+ }), this.api.onValueChanged(i.PRODUCT_BUTTON, (t) => {
159
+ this._onProductButtonChange(t);
160
+ });
152
161
  }
153
162
  _onProductImageChange(t) {
154
163
  var o;
@@ -1,5 +1,5 @@
1
1
  import { Block as e, BlockCompositionType as t } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { getDefaultTemplate as o } from "./templates/blockTemplate.js";
2
+ import { getDefaultTemplate as o } from "./templates/vertical/template.js";
3
3
  const n = "recommendation-block";
4
4
  class m extends e {
5
5
  constructor() {
@@ -0,0 +1,4 @@
1
+ var b = /* @__PURE__ */ ((r) => (r.BUTTON = "recommendation-block-button", r.NAME = "recommendation-block-name", r.PRICE = "recommendation-block-price", r.OLD_PRICE = "recommendation-block-old-price", r.OMNIBUS_PRICE = "recommendation-block-omnibus-price", r.OMNIBUS_DISCOUNT = "recommendation-block-omnibus-discount", r.IMAGE = "recommendation-block-image", r))(b || {});
2
+ export {
3
+ b as RecommendationBlockId
4
+ };
@@ -0,0 +1,4 @@
1
+ var o = /* @__PURE__ */ ((c) => (c.BUTTON_ALIGN = "recommendation-block-button-align-control", c.BUTTON_BORDER = "recommendation-block-button-border-control", c.BUTTON_BORDER_RADIUS = "recommendation-block-button-border-radius-control", c.BUTTON_COLOR = "recommendation-block-button-color-control", c.BUTTON_FIT_TO_CONTENT = "recommendation-block-button-fit-to-content-control", c.BUTTON_FONT_FAMILY = "recommendation-block-button-font-family-control", c.BUTTON_MARGINS = "recommendation-block-button-margins-control", c.BUTTON_PADDINGS = "recommendation-block-button-paddings-control", c.BUTTON_TEXT = "recommendation-block-button-text-control", c.BUTTON_TEXT_SIZE = "recommendation-block-button-text-size-control", c.BUTTON_TEXT_STYLE_AND_FONT_COLOR = "recommendation-block-button-text-style-and-font-color-control", c.NAME_ALIGN = "recommendation-block-name-align-control", c.NAME_BACKGROUND = "recommendation-block-name-background-control", c.NAME_COLOR = "recommendation-block-name-color-control", c.NAME_FONT_FAMILY = "recommendation-block-name-font-family-control", c.NAME_PADDINGS = "recommendation-block-name-paddings-control", c.NAME_SIZE = "recommendation-block-name-size-control", c.NAME_STYLE = "recommendation-block-name-style-control", c.NAME_TEXT_TRIM = "recommendation-block-name-text-trim-control", c.PRICE_ALIGN = "recommendation-block-price-align-control", c.PRICE_BACKGROUND = "recommendation-block-price-background-control", c.PRICE_COLOR = "recommendation-block-price-color-control", c.PRICE_FONT_FAMILY = "recommendation-block-price-font-family-control", c.PRICE_PADDINGS = "recommendation-block-price-paddings-control", c.PRICE_SIZE = "recommendation-block-price-size-control", c.PRICE_STYLE = "recommendation-block-price-style-control", c.OLD_PRICE_ALIGN = "recommendation-block-old-price-align-control", c.OLD_PRICE_BACKGROUND = "recommendation-block-old-price-background-control", c.OLD_PRICE_COLOR = "recommendation-block-old-price-color-control", c.OLD_PRICE_FONT_FAMILY = "recommendation-block-old-price-font-family-control", c.OLD_PRICE_PADDINGS = "recommendation-block-old-price-paddings-control", c.OLD_PRICE_SIZE = "recommendation-block-old-price-size-control", c.OLD_PRICE_STYLE = "recommendation-block-old-price-style-control", c.OMNIBUS_PRICE_ALIGN = "recommendation-block-omnibus-price-align-control", c.OMNIBUS_PRICE_BACKGROUND = "recommendation-block-omnibus-price-background-control", c.OMNIBUS_PRICE_COLOR = "recommendation-block-omnibus-price-color-control", c.OMNIBUS_PRICE_FONT_FAMILY = "recommendation-block-omnibus-price-font-family-control", c.OMNIBUS_PRICE_PADDINGS = "recommendation-block-omnibus-price-paddings-control", c.OMNIBUS_PRICE_SIZE = "recommendation-block-omnibus-price-size-control", c.OMNIBUS_PRICE_STYLE = "recommendation-block-omnibus-price-style-control", c.OMNIBUS_PRICE_TEXT_BEFORE = "recommendation-block-omnibus-price-text-before-control", c.OMNIBUS_PRICE_TEXT_AFTER = "recommendation-block-omnibus-price-text-after-control", c.OMNIBUS_DISCOUNT_ALIGN = "recommendation-block-omnibus-discount-align-control", c.OMNIBUS_DISCOUNT_BACKGROUND = "recommendation-block-omnibus-discount-background-control", c.OMNIBUS_DISCOUNT_COLOR = "recommendation-block-omnibus-discount-color-control", c.OMNIBUS_DISCOUNT_FONT_FAMILY = "recommendation-block-omnibus-discount-font-family-control", c.OMNIBUS_DISCOUNT_PADDINGS = "recommendation-block-omnibus-discount-paddings-control", c.OMNIBUS_DISCOUNT_SIZE = "recommendation-block-omnibus-discount-size-control", c.OMNIBUS_DISCOUNT_STYLE = "recommendation-block-omnibus-discount-style-control", c.OMNIBUS_DISCOUNT_TEXT_BEFORE = "recommendation-block-omnibus-discount-text-before-control", c.OMNIBUS_DISCOUNT_TEXT_AFTER = "recommendation-block-omnibus-discount-text-after-control", c.IMAGE_SIZE = "recommendation-block-image-size-control", c.IMAGE_MARGINS = "recommendation-block-image-margins-control", c))(o || {});
2
+ export {
3
+ o as RecommendationControlId
4
+ };
@@ -0,0 +1,11 @@
1
+ const T = ".ins-recommendation-product-container", c = "productImage", o = "productName", t = "productPrice", R = "productOldPrice", _ = "productOmnibusPrice", n = "productOmnibusDiscount", O = "productButton";
2
+ export {
3
+ O as ATTR_PRODUCT_BUTTON,
4
+ c as ATTR_PRODUCT_IMAGE,
5
+ o as ATTR_PRODUCT_NAME,
6
+ R as ATTR_PRODUCT_OLD_PRICE,
7
+ n as ATTR_PRODUCT_OMNIBUS_DISCOUNT,
8
+ _ as ATTR_PRODUCT_OMNIBUS_PRICE,
9
+ t as ATTR_PRODUCT_PRICE,
10
+ T as CONTAINER_SELECTOR
11
+ };
@@ -0,0 +1,64 @@
1
+ import { createButtonFitToContainerControl as T, createButtonTextStyleAndFontColorControl as r, createButtonTextSizeControl as e, createButtonTextControl as B, createButtonPaddingsControl as l, createButtonMarginsControl as C, createButtonFontFamilyControl as O, createButtonColorControl as N, createButtonBorderRadiusControl as i, createButtonBorderControl as a, createButtonAlignControl as c } from "../../../controlFactories.js";
2
+ import { RecommendationBlockId as o } from "../../constants/blockIds.js";
3
+ import { RecommendationControlId as t } from "../../constants/controlIds.js";
4
+ import { CONTAINER_SELECTOR as n } from "../../constants/selectors.js";
5
+ const U = c(
6
+ t.BUTTON_ALIGN,
7
+ o.BUTTON,
8
+ n
9
+ ), d = a(
10
+ t.BUTTON_BORDER,
11
+ o.BUTTON,
12
+ n
13
+ ), s = i(
14
+ t.BUTTON_BORDER_RADIUS,
15
+ o.BUTTON,
16
+ n
17
+ ), _ = N(
18
+ t.BUTTON_COLOR,
19
+ o.BUTTON,
20
+ n
21
+ ), m = O(
22
+ t.BUTTON_FONT_FAMILY,
23
+ o.BUTTON,
24
+ n
25
+ ), u = C(
26
+ t.BUTTON_MARGINS,
27
+ o.BUTTON,
28
+ n
29
+ ), R = l(
30
+ t.BUTTON_PADDINGS,
31
+ o.BUTTON,
32
+ n
33
+ ), F = B(
34
+ t.BUTTON_TEXT,
35
+ o.BUTTON,
36
+ n
37
+ ), A = e(
38
+ t.BUTTON_TEXT_SIZE,
39
+ o.BUTTON,
40
+ n
41
+ ), S = r(
42
+ t.BUTTON_TEXT_STYLE_AND_FONT_COLOR,
43
+ o.BUTTON,
44
+ n
45
+ ), E = T(
46
+ t.BUTTON_FIT_TO_CONTENT,
47
+ o.BUTTON,
48
+ n
49
+ ), p = {
50
+ align: U,
51
+ border: d,
52
+ borderRadius: s,
53
+ color: _,
54
+ fontFamily: m,
55
+ margins: u,
56
+ paddings: R,
57
+ text: F,
58
+ textSize: A,
59
+ textStyleAndFontColor: S,
60
+ fitToContent: E
61
+ };
62
+ export {
63
+ p as ButtonControls
64
+ };
@@ -0,0 +1,100 @@
1
+ import { ModificationDescription as l } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { CommonControl as i } from "../../../common-control.js";
3
+ const u = "recommendation-card-background-color-control", e = {
4
+ CARD_BACKGROUND_COLOR: "cardBackgroundColor"
5
+ }, c = {
6
+ VERTICAL: ".product-card-segment",
7
+ HORIZONTAL: ".product-card-wrapper"
8
+ };
9
+ class g extends i {
10
+ getId() {
11
+ return u;
12
+ }
13
+ getTemplate() {
14
+ return `
15
+ <div class="card-bg-control-container">
16
+ ${this._GuTwoColumns([
17
+ this._GuLabel({ text: "Card Background Color" }),
18
+ this._GuColorPicker(e.CARD_BACKGROUND_COLOR)
19
+ ])}
20
+ </div>
21
+ `;
22
+ }
23
+ onRender() {
24
+ this._setFormValues(), this._listenToFormUpdates();
25
+ }
26
+ onTemplateNodeUpdated(t) {
27
+ super.onTemplateNodeUpdated(t), this._setFormValues();
28
+ }
29
+ _setFormValues() {
30
+ const t = this._getCurrentCardBackgroundColor();
31
+ this.api.updateValues({
32
+ [e.CARD_BACKGROUND_COLOR]: t
33
+ });
34
+ }
35
+ /**
36
+ * Gets the block element - either currentNode itself or as a descendant
37
+ * The currentNode could BE the block element or contain it
38
+ */
39
+ _getBlockElement() {
40
+ if (!this.currentNode)
41
+ return null;
42
+ if ("getAttribute" in this.currentNode) {
43
+ const t = this.currentNode.getAttribute("class");
44
+ if (t && t.includes("ins-recommendation-v3-block-v2"))
45
+ return this.currentNode;
46
+ }
47
+ return "querySelector" in this.currentNode ? this.currentNode.querySelector(".ins-recommendation-v3-block-v2") : null;
48
+ }
49
+ /**
50
+ * Gets the current layout orientation from the block's data attribute
51
+ */
52
+ _getCurrentLayout() {
53
+ const t = this._getBlockElement();
54
+ return !t || !("getAttribute" in t) ? "vertical" : t.getAttribute("data-layout") === "horizontal" ? "horizontal" : "vertical";
55
+ }
56
+ /**
57
+ * Gets the appropriate selector based on layout
58
+ * Vertical: .product-card-segment (inner table per product cell)
59
+ * Horizontal: .product-card-wrapper (table per product row)
60
+ */
61
+ _getCardSelector() {
62
+ return this._getCurrentLayout() === "vertical" ? c.VERTICAL : c.HORIZONTAL;
63
+ }
64
+ /**
65
+ * Reads the current background color from the first product card element
66
+ * @returns The background color value or 'transparent' if not found
67
+ */
68
+ _getCurrentCardBackgroundColor() {
69
+ if (!this.currentNode || !("querySelectorAll" in this.currentNode))
70
+ return "transparent";
71
+ const t = this._getCardSelector(), r = this.currentNode.querySelector(t);
72
+ return !r || !("getStyle" in r) ? "transparent" : r.getStyle("background-color") || "transparent";
73
+ }
74
+ /**
75
+ * Handles card background color changes
76
+ * Applies the color to all product card elements based on layout
77
+ */
78
+ _onCardBackgroundColorChange(t) {
79
+ if (!this.currentNode || !("querySelectorAll" in this.currentNode))
80
+ return;
81
+ const r = this._getCardSelector(), o = Array.from(
82
+ this.currentNode.querySelectorAll(r)
83
+ );
84
+ if (o.length === 0)
85
+ return;
86
+ const n = this.api.getDocumentModifier();
87
+ o.forEach((a) => {
88
+ n.modifyHtml(a).setStyle("background-color", t);
89
+ }), n.apply(new l("Update card background color"));
90
+ }
91
+ _listenToFormUpdates() {
92
+ this.api.onValueChanged(e.CARD_BACKGROUND_COLOR, (t) => {
93
+ this._onCardBackgroundColorChange(t);
94
+ });
95
+ }
96
+ }
97
+ export {
98
+ u as CARD_BACKGROUND_COLOR_CONTROL_ID,
99
+ g as CardBackgroundColorControl
100
+ };
@@ -0,0 +1,243 @@
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
+ };
@@ -0,0 +1,19 @@
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
+ };