@useinsider/guido 2.0.0-beta.739813a → 2.0.0-beta.782343a

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 (148) hide show
  1. package/README.md +2 -0
  2. package/dist/@types/config/schemas.js +3 -1
  3. package/dist/components/Guido.vue.js +1 -1
  4. package/dist/components/Guido.vue2.js +15 -17
  5. package/dist/composables/useStripo.js +40 -40
  6. package/dist/extensions/Blocks/CouponBlock/constants.js +4 -0
  7. package/dist/extensions/Blocks/CouponBlock/controls/index.js +29 -0
  8. package/dist/extensions/Blocks/CouponBlock/extension.js +5 -4
  9. package/dist/extensions/Blocks/CouponBlock/settingsPanel.js +20 -14
  10. package/dist/extensions/Blocks/CouponBlock/template.js +22 -11
  11. package/dist/extensions/Blocks/Items/controls/cardComposition.js +13 -4
  12. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +4 -0
  13. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +4 -0
  14. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +11 -0
  15. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +64 -0
  16. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +68 -0
  17. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +179 -0
  18. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +19 -0
  19. package/dist/extensions/Blocks/Recommendation/{control.js → controls/main/index.js} +101 -67
  20. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +46 -0
  21. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +76 -0
  22. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +44 -0
  23. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +48 -0
  24. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +73 -0
  25. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +73 -0
  26. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +48 -0
  27. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +73 -0
  28. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +73 -0
  29. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +44 -0
  30. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +183 -0
  31. package/dist/extensions/Blocks/Recommendation/extension.js +37 -43
  32. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +125 -72
  33. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +20 -20
  34. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +91 -69
  35. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +54 -17
  36. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +66 -62
  37. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +25 -0
  38. package/dist/extensions/Blocks/controlFactories.js +122 -111
  39. package/dist/guido.css +1 -1
  40. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +368 -290
  41. package/dist/package.json.js +1 -1
  42. package/dist/services/stripoApi.js +6 -10
  43. package/dist/src/@types/config/schemas.d.ts +4 -0
  44. package/dist/src/composables/useConfig.d.ts +2 -0
  45. package/dist/src/extensions/Blocks/CouponBlock/constants.d.ts +14 -0
  46. package/dist/src/extensions/Blocks/CouponBlock/controls/index.d.ts +108 -0
  47. package/dist/src/extensions/Blocks/CouponBlock/template.d.ts +1 -1
  48. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +13 -0
  49. package/dist/src/extensions/Blocks/Recommendation/{constants.d.ts → constants/controlIds.d.ts} +19 -11
  50. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +11 -0
  51. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +19 -0
  52. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +143 -0
  53. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +25 -0
  54. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +75 -0
  55. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +35 -0
  56. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +22 -0
  57. package/dist/src/extensions/Blocks/Recommendation/{control.d.ts → controls/main/index.d.ts} +6 -3
  58. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +97 -0
  59. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +16 -0
  60. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +95 -0
  61. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +100 -0
  62. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +15 -0
  63. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +15 -0
  64. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +100 -0
  65. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +15 -0
  66. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +15 -0
  67. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +95 -0
  68. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +57 -0
  69. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +9 -0
  70. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +3 -3
  71. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +15 -7
  72. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +19 -0
  73. package/dist/src/extensions/Blocks/controlFactories.d.ts +30 -7
  74. package/dist/src/stores/config.d.ts +17 -0
  75. package/dist/static/styles/components/wide-panel.css.js +0 -4
  76. package/dist/static/styles/customEditorStyle.css.js +13 -0
  77. package/package.json +3 -3
  78. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +0 -103
  79. package/dist/extensions/Blocks/Recommendation/constants.js +0 -5
  80. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +0 -13
  81. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +0 -13
  82. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +0 -13
  83. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +0 -13
  84. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +0 -13
  85. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +0 -13
  86. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +0 -13
  87. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +0 -13
  88. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +0 -13
  89. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +0 -13
  90. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +0 -13
  91. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +0 -13
  92. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +0 -13
  93. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +0 -13
  94. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +0 -13
  95. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +0 -13
  96. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +0 -13
  97. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +0 -13
  98. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +0 -13
  99. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +0 -13
  100. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +0 -13
  101. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +0 -13
  102. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +0 -13
  103. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +0 -13
  104. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +0 -13
  105. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +0 -13
  106. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +0 -13
  107. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +0 -13
  108. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +0 -13
  109. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +0 -13
  110. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +0 -13
  111. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +0 -13
  112. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +0 -13
  113. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +0 -13
  114. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +0 -28
  115. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +0 -5
  116. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +0 -5
  117. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +0 -5
  118. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +0 -5
  119. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +0 -5
  120. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +0 -5
  121. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +0 -5
  122. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +0 -5
  123. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +0 -5
  124. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +0 -5
  125. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +0 -5
  126. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +0 -5
  127. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +0 -5
  128. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +0 -5
  129. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +0 -5
  130. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +0 -5
  131. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +0 -5
  132. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +0 -5
  133. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +0 -5
  134. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +0 -5
  135. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +0 -5
  136. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +0 -5
  137. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +0 -5
  138. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +0 -5
  139. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +0 -5
  140. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +0 -5
  141. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +0 -5
  142. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +0 -5
  143. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +0 -5
  144. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +0 -5
  145. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +0 -5
  146. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +0 -5
  147. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +0 -5
  148. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +0 -5
@@ -0,0 +1,48 @@
1
+ import { createPaddingsControl as n, createTextBackgroundColorControl as e, createTextFontFamilyControl as C, createTextStyleControl as O, createTextSizeControl as S, createTextColorControl as I, createTextAlignControl as N } 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 r } from "../../constants/selectors.js";
5
+ import { OmnibusDiscountTextAfterControl as l } from "./textAfter.js";
6
+ import { OmnibusDiscountTextBeforeControl as U } from "./textBefore.js";
7
+ const i = N(
8
+ t.OMNIBUS_DISCOUNT_ALIGN,
9
+ o.OMNIBUS_DISCOUNT,
10
+ r
11
+ ), T = I(
12
+ t.OMNIBUS_DISCOUNT_COLOR,
13
+ o.OMNIBUS_DISCOUNT,
14
+ r
15
+ ), c = S(
16
+ t.OMNIBUS_DISCOUNT_SIZE,
17
+ o.OMNIBUS_DISCOUNT,
18
+ r
19
+ ), _ = O(
20
+ t.OMNIBUS_DISCOUNT_STYLE,
21
+ o.OMNIBUS_DISCOUNT,
22
+ r
23
+ ), m = C(
24
+ t.OMNIBUS_DISCOUNT_FONT_FAMILY,
25
+ o.OMNIBUS_DISCOUNT,
26
+ r
27
+ ), s = e(
28
+ t.OMNIBUS_DISCOUNT_BACKGROUND,
29
+ o.OMNIBUS_DISCOUNT,
30
+ r
31
+ ), B = n(
32
+ t.OMNIBUS_DISCOUNT_PADDINGS,
33
+ o.OMNIBUS_DISCOUNT,
34
+ r
35
+ ), g = {
36
+ align: i,
37
+ color: T,
38
+ size: c,
39
+ style: _,
40
+ fontFamily: m,
41
+ background: s,
42
+ paddings: B,
43
+ textBefore: U,
44
+ textAfter: l
45
+ };
46
+ export {
47
+ g as OmnibusDiscountControls
48
+ };
@@ -0,0 +1,73 @@
1
+ import { ModificationDescription as c } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { CommonControl as a } from "../../../common-control.js";
3
+ import { RecommendationBlockId as l } from "../../constants/blockIds.js";
4
+ import { RecommendationControlId as d } from "../../constants/controlIds.js";
5
+ import { CONTAINER_SELECTOR as T } from "../../constants/selectors.js";
6
+ import { preserveTextStyles as f } from "../../utils/preserveTextStyles.js";
7
+ const i = "data-text-after", u = "", p = ".omnibus-text-after";
8
+ class b extends a {
9
+ getId() {
10
+ return d.OMNIBUS_DISCOUNT_TEXT_AFTER;
11
+ }
12
+ getTemplate() {
13
+ return `
14
+ <div class="omnibus-discount-text-after-control-container">
15
+ ${this._GuTwoColumns([
16
+ this._GuLabel({ text: "Text After" }),
17
+ this._GuTextInput({
18
+ name: "omnibusDiscountTextAfter",
19
+ placeholder: "e.g., off!",
20
+ className: "es-180w"
21
+ })
22
+ ])}
23
+ </div>
24
+ `;
25
+ }
26
+ onRender() {
27
+ this._setFormValues(), this._listenToFormUpdates();
28
+ }
29
+ onTemplateNodeUpdated(t) {
30
+ super.onTemplateNodeUpdated(t), this._setFormValues();
31
+ }
32
+ _setFormValues() {
33
+ const t = this._getCurrentText();
34
+ this.api.updateValues({
35
+ omnibusDiscountTextAfter: t
36
+ });
37
+ }
38
+ _getCurrentText() {
39
+ if (!this.currentNode || !("getAttribute" in this.currentNode))
40
+ return u;
41
+ const t = this.currentNode.getAttribute(i);
42
+ return t === null ? u : t;
43
+ }
44
+ _onTextChange(t) {
45
+ if (!this.currentNode || !("closest" in this.currentNode))
46
+ return;
47
+ const e = this.currentNode.closest(T);
48
+ if (!e || !("querySelectorAll" in e))
49
+ return;
50
+ const n = Array.from(
51
+ e.querySelectorAll(`[esd-extension-block-id="${l.OMNIBUS_DISCOUNT}"]`)
52
+ );
53
+ if (!n.length)
54
+ return;
55
+ const o = this.api.getDocumentModifier();
56
+ n.forEach((s) => {
57
+ o.modifyHtml(s).setAttribute(i, t);
58
+ const r = s.querySelector(p);
59
+ if (r) {
60
+ const m = f(r, t);
61
+ o.modifyHtml(r).setInnerHtml(m);
62
+ }
63
+ }), o.apply(new c("Update omnibus discount text after"));
64
+ }
65
+ _listenToFormUpdates() {
66
+ this.api.onValueChanged("omnibusDiscountTextAfter", (t) => {
67
+ this._onTextChange(t);
68
+ });
69
+ }
70
+ }
71
+ export {
72
+ b as OmnibusDiscountTextAfterControl
73
+ };
@@ -0,0 +1,73 @@
1
+ import { ModificationDescription as c } 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 T } from "../../constants/selectors.js";
6
+ import { preserveTextStyles as f } from "../../utils/preserveTextStyles.js";
7
+ const i = "data-text-before", u = "", p = ".omnibus-text-before";
8
+ class B extends l {
9
+ getId() {
10
+ return d.OMNIBUS_DISCOUNT_TEXT_BEFORE;
11
+ }
12
+ getTemplate() {
13
+ return `
14
+ <div class="omnibus-discount-text-before-control-container">
15
+ ${this._GuTwoColumns([
16
+ this._GuLabel({ text: "Text Before" }),
17
+ this._GuTextInput({
18
+ name: "omnibusDiscountTextBefore",
19
+ placeholder: "e.g., Save ",
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
+ omnibusDiscountTextBefore: e
36
+ });
37
+ }
38
+ _getCurrentText() {
39
+ if (!this.currentNode || !("getAttribute" in this.currentNode))
40
+ return u;
41
+ const e = this.currentNode.getAttribute(i);
42
+ return e === null ? u : e;
43
+ }
44
+ _onTextChange(e) {
45
+ if (!this.currentNode || !("closest" in this.currentNode))
46
+ return;
47
+ const t = this.currentNode.closest(T);
48
+ if (!t || !("querySelectorAll" in t))
49
+ return;
50
+ const n = Array.from(
51
+ t.querySelectorAll(`[esd-extension-block-id="${a.OMNIBUS_DISCOUNT}"]`)
52
+ );
53
+ if (!n.length)
54
+ return;
55
+ const o = this.api.getDocumentModifier();
56
+ n.forEach((s) => {
57
+ o.modifyHtml(s).setAttribute(i, e);
58
+ const r = s.querySelector(p);
59
+ if (r) {
60
+ const m = f(r, e);
61
+ o.modifyHtml(r).setInnerHtml(m);
62
+ }
63
+ }), o.apply(new c("Update omnibus discount text before"));
64
+ }
65
+ _listenToFormUpdates() {
66
+ this.api.onValueChanged("omnibusDiscountTextBefore", (e) => {
67
+ this._onTextChange(e);
68
+ });
69
+ }
70
+ }
71
+ export {
72
+ B as OmnibusDiscountTextBeforeControl
73
+ };
@@ -0,0 +1,48 @@
1
+ import { createPaddingsControl as n, createTextBackgroundColorControl as e, createTextFontFamilyControl as C, createTextStyleControl as I, createTextSizeControl as l, createTextColorControl as i, createTextAlignControl 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 r } from "../../constants/selectors.js";
5
+ import { OmnibusPriceTextAfterControl as O } from "./textAfter.js";
6
+ import { OmnibusPriceTextBeforeControl as _ } from "./textBefore.js";
7
+ const m = c(
8
+ t.OMNIBUS_PRICE_ALIGN,
9
+ o.OMNIBUS_PRICE,
10
+ r
11
+ ), S = i(
12
+ t.OMNIBUS_PRICE_COLOR,
13
+ o.OMNIBUS_PRICE,
14
+ r
15
+ ), B = l(
16
+ t.OMNIBUS_PRICE_SIZE,
17
+ o.OMNIBUS_PRICE,
18
+ r
19
+ ), N = I(
20
+ t.OMNIBUS_PRICE_STYLE,
21
+ o.OMNIBUS_PRICE,
22
+ r
23
+ ), P = C(
24
+ t.OMNIBUS_PRICE_FONT_FAMILY,
25
+ o.OMNIBUS_PRICE,
26
+ r
27
+ ), R = e(
28
+ t.OMNIBUS_PRICE_BACKGROUND,
29
+ o.OMNIBUS_PRICE,
30
+ r
31
+ ), a = n(
32
+ t.OMNIBUS_PRICE_PADDINGS,
33
+ o.OMNIBUS_PRICE,
34
+ r
35
+ ), f = {
36
+ align: m,
37
+ color: S,
38
+ size: B,
39
+ style: N,
40
+ fontFamily: P,
41
+ background: R,
42
+ paddings: a,
43
+ textBefore: _,
44
+ textAfter: O
45
+ };
46
+ export {
47
+ f as OmnibusPriceControls
48
+ };
@@ -0,0 +1,73 @@
1
+ import { ModificationDescription as c } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { CommonControl as a } from "../../../common-control.js";
3
+ import { RecommendationBlockId as l } from "../../constants/blockIds.js";
4
+ import { RecommendationControlId as d } from "../../constants/controlIds.js";
5
+ import { CONTAINER_SELECTOR as T } from "../../constants/selectors.js";
6
+ import { preserveTextStyles as f } from "../../utils/preserveTextStyles.js";
7
+ const s = "data-text-after", m = "", p = ".omnibus-text-after";
8
+ class N extends a {
9
+ getId() {
10
+ return d.OMNIBUS_PRICE_TEXT_AFTER;
11
+ }
12
+ getTemplate() {
13
+ return `
14
+ <div class="omnibus-price-text-after-control-container">
15
+ ${this._GuTwoColumns([
16
+ this._GuLabel({ text: "Text After" }),
17
+ this._GuTextInput({
18
+ name: "omnibusPriceTextAfter",
19
+ placeholder: "e.g., (incl. VAT)",
20
+ className: "es-180w"
21
+ })
22
+ ])}
23
+ </div>
24
+ `;
25
+ }
26
+ onRender() {
27
+ this._setFormValues(), this._listenToFormUpdates();
28
+ }
29
+ onTemplateNodeUpdated(t) {
30
+ super.onTemplateNodeUpdated(t), this._setFormValues();
31
+ }
32
+ _setFormValues() {
33
+ const t = this._getCurrentText();
34
+ this.api.updateValues({
35
+ omnibusPriceTextAfter: t
36
+ });
37
+ }
38
+ _getCurrentText() {
39
+ if (!this.currentNode || !("getAttribute" in this.currentNode))
40
+ return m;
41
+ const t = this.currentNode.getAttribute(s);
42
+ return t === null ? m : t;
43
+ }
44
+ _onTextChange(t) {
45
+ if (!this.currentNode || !("closest" in this.currentNode))
46
+ return;
47
+ const e = this.currentNode.closest(T);
48
+ if (!e || !("querySelectorAll" in e))
49
+ return;
50
+ const n = Array.from(
51
+ e.querySelectorAll(`[esd-extension-block-id="${l.OMNIBUS_PRICE}"]`)
52
+ );
53
+ if (!n.length)
54
+ return;
55
+ const r = this.api.getDocumentModifier();
56
+ n.forEach((i) => {
57
+ r.modifyHtml(i).setAttribute(s, t);
58
+ const o = i.querySelector(p);
59
+ if (o) {
60
+ const u = f(o, t);
61
+ r.modifyHtml(o).setInnerHtml(u);
62
+ }
63
+ }), r.apply(new c("Update omnibus price text after"));
64
+ }
65
+ _listenToFormUpdates() {
66
+ this.api.onValueChanged("omnibusPriceTextAfter", (t) => {
67
+ this._onTextChange(t);
68
+ });
69
+ }
70
+ }
71
+ export {
72
+ N as OmnibusPriceTextAfterControl
73
+ };
@@ -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,183 @@
1
+ var C = Object.defineProperty;
2
+ var h = (n, r, e) => r in n ? C(n, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[r] = e;
3
+ var S = (n, r, e) => h(n, typeof r != "symbol" ? r + "" : r, e);
4
+ import { ModificationDescription as p } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
+ import { CommonControl as _ } from "../../../common-control.js";
6
+ import { useDebounceFn as d } from "../../../../../node_modules/@vueuse/shared/index.js";
7
+ const f = "recommendation-spacing-control", i = {
8
+ COLUMN_SPACING: "columnSpacing",
9
+ ROW_SPACING: "rowSpacing"
10
+ }, N = {
11
+ COLUMN_SPACING: "data-column-spacing",
12
+ ROW_SPACING: "data-row-spacing"
13
+ }, a = {
14
+ COLUMN_SPACING: 10,
15
+ // 5px on each side = 10px total
16
+ ROW_SPACING: 20
17
+ }, c = {
18
+ MIN_SPACING: 0,
19
+ MAX_SPACING: 50,
20
+ STEP: 5
21
+ };
22
+ function g(n, r) {
23
+ return !n || !("getStyle" in n) ? null : n.getStyle(r);
24
+ }
25
+ function A(n) {
26
+ return !n || !("parent" in n) || typeof n.parent != "function" ? null : n.parent();
27
+ }
28
+ function m(n, r) {
29
+ if (!n)
30
+ return r;
31
+ const e = parseFloat(n);
32
+ return Number.isNaN(e) ? r : e;
33
+ }
34
+ class M extends _ {
35
+ constructor() {
36
+ super(...arguments);
37
+ /**
38
+ * Debounced version of _onColumnSpacingChange
39
+ * Prevents excessive DOM updates when user rapidly adjusts the counter
40
+ */
41
+ S(this, "_debouncedOnColumnSpacingChange", d((e) => {
42
+ this._onColumnSpacingChange(e);
43
+ }, 300));
44
+ /**
45
+ * Debounced version of _onRowSpacingChange
46
+ * Prevents excessive DOM updates when user rapidly adjusts the counter
47
+ */
48
+ S(this, "_debouncedOnRowSpacingChange", d((e) => {
49
+ this._onRowSpacingChange(e);
50
+ }, 300));
51
+ }
52
+ getId() {
53
+ return f;
54
+ }
55
+ getTemplate() {
56
+ return `
57
+ <div class="spacing-control-container">
58
+ ${this._GuTwoColumns([
59
+ this._GuLabel({ text: "Column Spacing (px)" }),
60
+ this._GuCounter({
61
+ name: i.COLUMN_SPACING,
62
+ minValue: c.MIN_SPACING,
63
+ maxValue: c.MAX_SPACING,
64
+ step: c.STEP
65
+ }),
66
+ this._GuLabel({ text: "Row Spacing (px)" }),
67
+ this._GuCounter({
68
+ name: i.ROW_SPACING,
69
+ minValue: c.MIN_SPACING,
70
+ maxValue: c.MAX_SPACING,
71
+ step: c.STEP
72
+ })
73
+ ])}
74
+ </div>
75
+ `;
76
+ }
77
+ onRender() {
78
+ this._setFormValues(), this._listenToFormUpdates();
79
+ }
80
+ onTemplateNodeUpdated(e) {
81
+ super.onTemplateNodeUpdated(e), this._setFormValues();
82
+ }
83
+ /**
84
+ * Reads spacing values from data attributes or returns defaults
85
+ */
86
+ _setFormValues() {
87
+ const e = this._getStoredColumnSpacing(), t = this._getStoredRowSpacing();
88
+ this.api.updateValues({
89
+ [i.COLUMN_SPACING]: e,
90
+ [i.ROW_SPACING]: t
91
+ });
92
+ }
93
+ /**
94
+ * Gets stored column spacing from the first product card wrapper's parent element's padding
95
+ * The padding is applied as "0 {halfSpacing}px" on the parent TD element,
96
+ * so we extract the horizontal padding value and multiply by 2 to get total spacing.
97
+ */
98
+ _getStoredColumnSpacing() {
99
+ if (!this.currentNode)
100
+ return a.COLUMN_SPACING;
101
+ const e = this.currentNode.querySelector(".product-card-wrapper"), t = A(e), o = g(t, "padding");
102
+ if (!o)
103
+ return a.COLUMN_SPACING;
104
+ const s = o.trim().split(/\s+/);
105
+ return s.length < 2 ? a.COLUMN_SPACING : m(s[1], a.COLUMN_SPACING / 2) * 2;
106
+ }
107
+ /**
108
+ * Gets stored row spacing from the first spacer element's height style
109
+ */
110
+ _getStoredRowSpacing() {
111
+ if (!this.currentNode)
112
+ return a.ROW_SPACING;
113
+ const e = this.currentNode.querySelector(".spacer"), t = g(e, "height");
114
+ return m(t, a.ROW_SPACING);
115
+ }
116
+ /**
117
+ * Handles column spacing changes
118
+ * Applies horizontal padding to all product card wrappers
119
+ */
120
+ _onColumnSpacingChange(e) {
121
+ if (!this.currentNode)
122
+ return;
123
+ this._storeColumnSpacing(e);
124
+ const t = Array.from(
125
+ this.currentNode.querySelectorAll(".product-card-wrapper")
126
+ );
127
+ if (!t)
128
+ return;
129
+ const o = this.api.getDocumentModifier(), u = `0 ${e / 2}px`;
130
+ t.forEach((l) => {
131
+ "parent" in l && l.parent() && o.modifyHtml(l.parent()).setStyle("padding", u);
132
+ }), o.apply(new p(`Update column spacing to ${e}px`));
133
+ }
134
+ /**
135
+ * Handles row spacing changes
136
+ * Applies height to all spacer elements between product rows
137
+ */
138
+ _onRowSpacingChange(e) {
139
+ if (!this.currentNode)
140
+ return;
141
+ this._storeRowSpacing(e);
142
+ const t = Array.from(
143
+ this.currentNode.querySelectorAll(".spacer")
144
+ );
145
+ if (!t.length)
146
+ return;
147
+ const o = this.api.getDocumentModifier(), s = `${e}px`;
148
+ t.forEach((u) => {
149
+ o.modifyHtml(u).setStyle("height", s);
150
+ }), o.apply(new p(`Update row spacing to ${e}px`));
151
+ }
152
+ /**
153
+ * Stores column spacing value in block data attribute
154
+ */
155
+ _storeColumnSpacing(e) {
156
+ if (!this.currentNode)
157
+ return;
158
+ const t = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
159
+ t && this.api.getDocumentModifier().modifyHtml(t).setAttribute(N.COLUMN_SPACING, e.toString()).apply(new p("Store column spacing"));
160
+ }
161
+ /**
162
+ * Stores row spacing value in block data attribute
163
+ */
164
+ _storeRowSpacing(e) {
165
+ if (!this.currentNode)
166
+ return;
167
+ const t = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
168
+ t && this.api.getDocumentModifier().modifyHtml(t).setAttribute(N.ROW_SPACING, e.toString()).apply(new p("Store row spacing"));
169
+ }
170
+ _listenToFormUpdates() {
171
+ this.api.onValueChanged(i.COLUMN_SPACING, (e) => {
172
+ const t = parseInt(e);
173
+ Number.isNaN(t) || this._debouncedOnColumnSpacingChange(t);
174
+ }), this.api.onValueChanged(i.ROW_SPACING, (e) => {
175
+ const t = parseInt(e);
176
+ Number.isNaN(t) || this._debouncedOnRowSpacingChange(t);
177
+ });
178
+ }
179
+ }
180
+ export {
181
+ f as SPACING_CONTROL_ID,
182
+ M as SpacingControl
183
+ };