@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,73 @@
1
+ import { ModificationDescription as u } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { CommonControl as l } from "../../../common-control.js";
3
+ import { RecommendationBlockId as a } from "../../constants/blockIds.js";
4
+ import { RecommendationControlId as d } from "../../constants/controlIds.js";
5
+ import { CONTAINER_SELECTOR as p } from "../../constants/selectors.js";
6
+ import { preserveTextStyles as T } from "../../utils/preserveTextStyles.js";
7
+ const s = "data-text-before", c = "Lowest 30-day price: ", f = ".omnibus-text-before";
8
+ class N extends l {
9
+ getId() {
10
+ return d.OMNIBUS_PRICE_TEXT_BEFORE;
11
+ }
12
+ getTemplate() {
13
+ return `
14
+ <div class="omnibus-price-text-before-control-container">
15
+ ${this._GuTwoColumns([
16
+ this._GuLabel({ text: "Text Before" }),
17
+ this._GuTextInput({
18
+ name: "omnibusPriceTextBefore",
19
+ placeholder: "e.g., Lowest 30-day price: ",
20
+ className: "es-180w"
21
+ })
22
+ ])}
23
+ </div>
24
+ `;
25
+ }
26
+ onRender() {
27
+ this._setFormValues(), this._listenToFormUpdates();
28
+ }
29
+ onTemplateNodeUpdated(e) {
30
+ super.onTemplateNodeUpdated(e), this._setFormValues();
31
+ }
32
+ _setFormValues() {
33
+ const e = this._getCurrentText();
34
+ this.api.updateValues({
35
+ omnibusPriceTextBefore: e
36
+ });
37
+ }
38
+ _getCurrentText() {
39
+ if (!this.currentNode || !("getAttribute" in this.currentNode))
40
+ return c;
41
+ const e = this.currentNode.getAttribute(s);
42
+ return e === null ? c : e;
43
+ }
44
+ _onTextChange(e) {
45
+ if (!this.currentNode || !("closest" in this.currentNode))
46
+ return;
47
+ const t = this.currentNode.closest(p);
48
+ if (!t || !("querySelectorAll" in t))
49
+ return;
50
+ const n = Array.from(
51
+ t.querySelectorAll(`[esd-extension-block-id="${a.OMNIBUS_PRICE}"]`)
52
+ );
53
+ if (!n.length)
54
+ return;
55
+ const o = this.api.getDocumentModifier();
56
+ n.forEach((i) => {
57
+ o.modifyHtml(i).setAttribute(s, e);
58
+ const r = i.querySelector(f);
59
+ if (r) {
60
+ const m = T(r, e);
61
+ o.modifyHtml(r).setInnerHtml(m);
62
+ }
63
+ }), o.apply(new u("Update omnibus price text before"));
64
+ }
65
+ _listenToFormUpdates() {
66
+ this.api.onValueChanged("omnibusPriceTextBefore", (e) => {
67
+ this._onTextChange(e);
68
+ });
69
+ }
70
+ }
71
+ export {
72
+ N as OmnibusPriceTextBeforeControl
73
+ };
@@ -0,0 +1,44 @@
1
+ import { createPaddingsControl as r, createTextBackgroundColorControl as C, createTextFontFamilyControl as e, createTextStyleControl as l, createTextSizeControl as c, createTextColorControl as I, createTextAlignControl as R } 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 a = R(
6
+ t.PRICE_ALIGN,
7
+ o.PRICE,
8
+ n
9
+ ), i = I(
10
+ t.PRICE_COLOR,
11
+ o.PRICE,
12
+ n
13
+ ), E = c(
14
+ t.PRICE_SIZE,
15
+ o.PRICE,
16
+ n
17
+ ), P = l(
18
+ t.PRICE_STYLE,
19
+ o.PRICE,
20
+ n
21
+ ), m = e(
22
+ t.PRICE_FONT_FAMILY,
23
+ o.PRICE,
24
+ n
25
+ ), s = C(
26
+ t.PRICE_BACKGROUND,
27
+ o.PRICE,
28
+ n
29
+ ), d = r(
30
+ t.PRICE_PADDINGS,
31
+ o.PRICE,
32
+ n
33
+ ), x = {
34
+ align: a,
35
+ color: i,
36
+ size: E,
37
+ style: P,
38
+ fontFamily: m,
39
+ background: s,
40
+ paddings: d
41
+ };
42
+ export {
43
+ x as PriceControls
44
+ };
@@ -0,0 +1,224 @@
1
+ var A = Object.defineProperty;
2
+ var y = (n, i, t) => i in n ? A(n, i, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[i] = t;
3
+ var p = (n, i, t) => y(n, typeof i != "symbol" ? i + "" : i, t);
4
+ import { ModificationDescription as d } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
+ import { CommonControl as b } from "../../../common-control.js";
6
+ import { useRecommendationExtensionStore as P } from "../../store/recommendation.js";
7
+ import { useDebounceFn as N } from "../../../../../node_modules/@vueuse/shared/index.js";
8
+ const O = "recommendation-spacing-control", a = {
9
+ COLUMN_SPACING: "columnSpacing",
10
+ COLUMN_SPACING_LABEL: "columnSpacingLabel",
11
+ ROW_SPACING: "rowSpacing"
12
+ }, _ = {
13
+ COLUMN_SPACING: "data-column-spacing",
14
+ ROW_SPACING: "data-row-spacing"
15
+ }, s = {
16
+ COLUMN_SPACING: 10,
17
+ // 5px on each side = 10px total
18
+ ROW_SPACING: 20
19
+ }, u = {
20
+ MIN_SPACING: 0,
21
+ MAX_SPACING: 50,
22
+ STEP: 5
23
+ };
24
+ function S(n, i) {
25
+ return !n || !("getStyle" in n) ? null : n.getStyle(i);
26
+ }
27
+ function I(n) {
28
+ return !n || !("parent" in n) || typeof n.parent != "function" ? null : n.parent();
29
+ }
30
+ function C(n, i) {
31
+ if (!n)
32
+ return i;
33
+ const t = parseFloat(n);
34
+ return Number.isNaN(t) ? i : t;
35
+ }
36
+ class w extends b {
37
+ constructor() {
38
+ super(...arguments);
39
+ p(this, "store", P());
40
+ p(this, "unsubscribeOrientation", null);
41
+ /**
42
+ * Debounced version of _onColumnSpacingChange
43
+ * Prevents excessive DOM updates when user rapidly adjusts the counter
44
+ */
45
+ p(this, "_debouncedOnColumnSpacingChange", N((t) => {
46
+ this._onColumnSpacingChange(t);
47
+ }, 300));
48
+ /**
49
+ * Debounced version of _onRowSpacingChange
50
+ * Prevents excessive DOM updates when user rapidly adjusts the counter
51
+ */
52
+ p(this, "_debouncedOnRowSpacingChange", N((t) => {
53
+ this._onRowSpacingChange(t);
54
+ }, 300));
55
+ }
56
+ getId() {
57
+ return O;
58
+ }
59
+ getTemplate() {
60
+ return `
61
+ <div class="spacing-control-container">
62
+ ${this._GuTwoColumns([
63
+ this._GuLabel({ text: "Column Spacing (px)", name: a.COLUMN_SPACING_LABEL }),
64
+ this._GuCounter({
65
+ name: a.COLUMN_SPACING,
66
+ minValue: u.MIN_SPACING,
67
+ maxValue: u.MAX_SPACING,
68
+ step: u.STEP
69
+ }),
70
+ this._GuLabel({ text: "Row Spacing (px)" }),
71
+ this._GuCounter({
72
+ name: a.ROW_SPACING,
73
+ minValue: u.MIN_SPACING,
74
+ maxValue: u.MAX_SPACING,
75
+ step: u.STEP
76
+ })
77
+ ])}
78
+ </div>
79
+ `;
80
+ }
81
+ onRender() {
82
+ this._setFormValues(), this._updateColumnSpacingVisibility(), this._listenToFormUpdates(), this._subscribeToOrientationChanges();
83
+ }
84
+ onTemplateNodeUpdated(t) {
85
+ super.onTemplateNodeUpdated(t), this._setFormValues(), this._updateColumnSpacingVisibility();
86
+ }
87
+ /**
88
+ * Gets the current layout orientation from the block's data attribute
89
+ */
90
+ _getCurrentLayout() {
91
+ if (!this.currentNode || !("querySelector" in this.currentNode))
92
+ return "vertical";
93
+ const t = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
94
+ return !t || !("getAttribute" in t) ? "vertical" : t.getAttribute("data-layout") === "horizontal" ? "horizontal" : "vertical";
95
+ }
96
+ /**
97
+ * Updates column spacing visibility based on layout orientation
98
+ * Column spacing is hidden for horizontal layout (products are stacked vertically)
99
+ * Reads from store first for reliability, falls back to DOM
100
+ */
101
+ _updateColumnSpacingVisibility() {
102
+ const r = (this.store.recommendationConfigs.orientation || this._getCurrentLayout()) === "vertical";
103
+ this.api.setVisibility(a.COLUMN_SPACING, r), this.api.setVisibility(a.COLUMN_SPACING_LABEL, r);
104
+ }
105
+ /**
106
+ * Reads spacing values from data attributes or returns defaults
107
+ */
108
+ _setFormValues() {
109
+ const t = this._getStoredColumnSpacing(), e = this._getStoredRowSpacing();
110
+ this.api.updateValues({
111
+ [a.COLUMN_SPACING]: t,
112
+ [a.ROW_SPACING]: e
113
+ });
114
+ }
115
+ /**
116
+ * Gets stored column spacing from the first attribute row cell's padding.
117
+ * For vertical layout: cells inside .recommendation-attribute-row have padding applied.
118
+ * For horizontal layout: the parent of .product-card-wrapper has the padding.
119
+ * The padding is applied as "0 {halfSpacing}px", so we extract and multiply by 2.
120
+ */
121
+ _getStoredColumnSpacing() {
122
+ if (!this.currentNode)
123
+ return s.COLUMN_SPACING;
124
+ if (this._getCurrentLayout() === "vertical") {
125
+ const o = this.currentNode.querySelector(".recommendation-attribute-row"), f = o == null ? void 0 : o.querySelector("td"), g = S(f, "padding");
126
+ if (!g)
127
+ return s.COLUMN_SPACING;
128
+ const m = g.trim().split(/\s+/);
129
+ return m.length < 2 ? s.COLUMN_SPACING : C(m[1], s.COLUMN_SPACING / 2) * 2;
130
+ }
131
+ const e = this.currentNode.querySelector(".product-card-wrapper"), r = I(e), l = S(r, "padding");
132
+ if (!l)
133
+ return s.COLUMN_SPACING;
134
+ const c = l.trim().split(/\s+/);
135
+ return c.length < 2 ? s.COLUMN_SPACING : C(c[1], s.COLUMN_SPACING / 2) * 2;
136
+ }
137
+ /**
138
+ * Gets stored row spacing from the first spacer element's height style
139
+ */
140
+ _getStoredRowSpacing() {
141
+ if (!this.currentNode)
142
+ return s.ROW_SPACING;
143
+ const t = this.currentNode.querySelector(".spacer"), e = S(t, "height");
144
+ return C(e, s.ROW_SPACING);
145
+ }
146
+ /**
147
+ * Handles column spacing changes.
148
+ * For vertical layout: applies horizontal padding to all cells inside attribute rows.
149
+ * For horizontal layout: applies padding to parent of product card wrappers.
150
+ */
151
+ _onColumnSpacingChange(t) {
152
+ if (!this.currentNode)
153
+ return;
154
+ this._storeColumnSpacing(t);
155
+ const e = this._getCurrentLayout(), r = this.api.getDocumentModifier(), c = `0 ${t / 2}px`;
156
+ e === "vertical" ? Array.from(
157
+ this.currentNode.querySelectorAll(".attribute-cell")
158
+ ).forEach((o) => {
159
+ r.modifyHtml(o).setStyle("padding", c);
160
+ }) : Array.from(
161
+ this.currentNode.querySelectorAll(".product-card-wrapper")
162
+ ).forEach((o) => {
163
+ "parent" in o && o.parent() && r.modifyHtml(o.parent()).setStyle("padding", c);
164
+ }), r.apply(new d(`Update column spacing to ${t}px`));
165
+ }
166
+ /**
167
+ * Handles row spacing changes
168
+ * Applies height to all spacer elements between product rows
169
+ */
170
+ _onRowSpacingChange(t) {
171
+ if (!this.currentNode)
172
+ return;
173
+ this._storeRowSpacing(t);
174
+ const e = Array.from(
175
+ this.currentNode.querySelectorAll(".spacer")
176
+ );
177
+ if (!e.length)
178
+ return;
179
+ const r = this.api.getDocumentModifier(), l = `${t}px`;
180
+ e.forEach((c) => {
181
+ r.modifyHtml(c).setStyle("height", l);
182
+ }), r.apply(new d(`Update row spacing to ${t}px`));
183
+ }
184
+ /**
185
+ * Stores column spacing value in block data attribute
186
+ */
187
+ _storeColumnSpacing(t) {
188
+ if (!this.currentNode)
189
+ return;
190
+ const e = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
191
+ e && this.api.getDocumentModifier().modifyHtml(e).setAttribute(_.COLUMN_SPACING, t.toString()).apply(new d("Store column spacing"));
192
+ }
193
+ /**
194
+ * Stores row spacing value in block data attribute
195
+ */
196
+ _storeRowSpacing(t) {
197
+ if (!this.currentNode)
198
+ return;
199
+ const e = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
200
+ e && this.api.getDocumentModifier().modifyHtml(e).setAttribute(_.ROW_SPACING, t.toString()).apply(new d("Store row spacing"));
201
+ }
202
+ _listenToFormUpdates() {
203
+ this.api.onValueChanged(a.COLUMN_SPACING, (t) => {
204
+ const e = parseInt(t);
205
+ Number.isNaN(e) || this._debouncedOnColumnSpacingChange(e);
206
+ }), this.api.onValueChanged(a.ROW_SPACING, (t) => {
207
+ const e = parseInt(t);
208
+ Number.isNaN(e) || this._debouncedOnRowSpacingChange(e);
209
+ });
210
+ }
211
+ /**
212
+ * Subscribe to store orientation changes
213
+ * Updates column spacing visibility when layout changes via the layout control
214
+ */
215
+ _subscribeToOrientationChanges() {
216
+ this.unsubscribeOrientation && this.unsubscribeOrientation(), this.unsubscribeOrientation = this.store.$subscribe((t) => {
217
+ t.type === "patch object" && this._updateColumnSpacingVisibility();
218
+ });
219
+ }
220
+ }
221
+ export {
222
+ O as SPACING_CONTROL_ID,
223
+ w as SpacingControl
224
+ };
@@ -1,45 +1,42 @@
1
- import { ExtensionBuilder as o } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { RecommendationBlock as r } from "./block.js";
3
- import { RecommendationCardCompositionControl as t } from "./cardCompositionControl.js";
4
- import { RecommendationBlockControl as n } from "./control.js";
5
- import { ButtonAlignControl as d } from "./controls/button/align.js";
6
- import { ButtonBorderControl as l } from "./controls/button/border.js";
7
- import { ButtonBorderRadiusControl as m } from "./controls/button/borderRadius.js";
8
- import { ButtonColorControl as i } from "./controls/button/color.js";
9
- import { ButtonFitToContentControl as C } from "./controls/button/fitToContent.js";
10
- import { ButtonFontFamilyControl as a } from "./controls/button/fontFamily.js";
11
- import { ButtonMarginsControl as e } from "./controls/button/margins.js";
12
- import { ButtonPaddingsControl as p } from "./controls/button/paddings.js";
13
- import { ButtonTextControl as f } from "./controls/button/text.js";
14
- import { ButtonTextSizeControl as c } from "./controls/button/textSize.js";
15
- import { ButtonTextStyleAndFontColorControl as s } from "./controls/button/textStyleAndFontColor.js";
16
- import { ImageMarginsControl as g } from "./controls/image/margins.js";
17
- import { ImageSizeControl as B } from "./controls/image/size.js";
18
- import { NameAlignControl as P } from "./controls/name/align.js";
19
- import { NameBackgroundControl as u } from "./controls/name/background.js";
20
- import { NameColorControl as y } from "./controls/name/color.js";
21
- import { NameFontFamilyControl as S } from "./controls/name/fontFamily.js";
22
- import { NamePaddingsControl as F } from "./controls/name/paddings.js";
23
- import { NameSizeControl as R } from "./controls/name/size.js";
24
- import { NameStyleControl as N } from "./controls/name/style.js";
25
- import { OldPriceAlignControl as O } from "./controls/oldPrice/align.js";
26
- import { OldPriceBackgroundControl as k } from "./controls/oldPrice/background.js";
27
- import { OldPriceColorControl as x } from "./controls/oldPrice/color.js";
28
- import { OldPriceFontFamilyControl as z } from "./controls/oldPrice/fontFamily.js";
29
- import { OldPricePaddingsControl as A } from "./controls/oldPrice/paddings.js";
30
- import { OldPriceSizeControl as I } from "./controls/oldPrice/size.js";
31
- import { OldPriceStyleControl as T } from "./controls/oldPrice/style.js";
32
- import { PriceAlignControl as w } from "./controls/price/align.js";
33
- import { PriceBackgroundControl as h } from "./controls/price/background.js";
34
- import { PriceColorControl as M } from "./controls/price/color.js";
35
- import { PriceFontFamilyControl as b } from "./controls/price/fontFamily.js";
36
- import { PricePaddingsControl as E } from "./controls/price/paddings.js";
37
- import { PriceSizeControl as j } from "./controls/price/size.js";
38
- import { PriceStyleControl as q } from "./controls/price/style.js";
39
- import { RecommendationIconsRegistry as v } from "./iconsRegistry.js";
40
- import D from "./recommendation.css.js";
41
- import { SettingsPanel as G } from "./settingsPanel.js";
42
- const Io = new o().addBlock(r).withSettingsPanelRegistry(G).addControl(n).addControl(d).addControl(l).addControl(m).addControl(i).addControl(C).addControl(a).addControl(e).addControl(p).addControl(f).addControl(c).addControl(s).addControl(g).addControl(B).addControl(P).addControl(u).addControl(y).addControl(S).addControl(F).addControl(R).addControl(N).addControl(O).addControl(k).addControl(x).addControl(z).addControl(A).addControl(I).addControl(T).addControl(w).addControl(h).addControl(M).addControl(b).addControl(E).addControl(j).addControl(q).addControl(t).addStyles(D).withIconsRegistry(v).build();
1
+ import { ExtensionBuilder as r } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { RecommendationBlock as m } from "./block.js";
3
+ import { RecommendationBlockControl as n } from "./controls/main/index.js";
4
+ import "./store/recommendation.js";
5
+ import { NameControls as i } from "./controls/name/index.js";
6
+ import { PriceControls as e } from "./controls/price/index.js";
7
+ import { OldPriceControls as l } from "./controls/oldPrice/index.js";
8
+ import { OmnibusPriceControls as s } from "./controls/omnibusPrice/index.js";
9
+ import { OmnibusDiscountControls as a } from "./controls/omnibusDiscount/index.js";
10
+ import { ButtonControls as p } from "./controls/button/index.js";
11
+ import { ImageControls as c } from "./controls/image/index.js";
12
+ import { SpacingControl as C } from "./controls/spacing/index.js";
13
+ import { CardBackgroundColorControl as d } from "./controls/cardBackground/index.js";
14
+ import { LayoutControl as f } from "./controls/layout/index.js";
15
+ import { RecommendationCardCompositionControl as u } from "./controls/cardComposition/index.js";
16
+ import { RecommendationIconsRegistry as g } from "./iconsRegistry.js";
17
+ import R from "./recommendation.css.js";
18
+ import { SettingsPanel as y } from "./settingsPanel.js";
19
+ const B = [
20
+ i,
21
+ e,
22
+ l,
23
+ s,
24
+ a,
25
+ p,
26
+ c
27
+ ], P = [
28
+ n,
29
+ d,
30
+ f,
31
+ C,
32
+ u
33
+ ], b = [
34
+ ...P,
35
+ ...B.flatMap((o) => Object.values(o))
36
+ ], F = b.reduce(
37
+ (o, t) => o.addControl(t),
38
+ new r().addBlock(m).withSettingsPanelRegistry(y)
39
+ ).addStyles(R).withIconsRegistry(g).build();
43
40
  export {
44
- Io as default
41
+ F as default
45
42
  };
@@ -13,6 +13,11 @@ const n = `/* Utils */
13
13
  .container:has(.recommendation-controls-container) {
14
14
  padding: 0
15
15
  }
16
+
17
+ /* Hide drag icon for horizontal layout (ordering disabled) */
18
+ ue-orderable.orderable-disabled .droppable-icon {
19
+ display: none;
20
+ }
16
21
  `;
17
22
  export {
18
23
  n as default