@useinsider/guido 2.2.0-beta.8abc7b6 → 2.2.0-beta.953ff70

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 (133) hide show
  1. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +14 -15
  2. package/dist/composables/useHtmlValidator.js +104 -114
  3. package/dist/composables/useRecommendation.js +21 -54
  4. package/dist/config/compiler/recommendationCompilerRules.js +39 -45
  5. package/dist/config/migrator/itemsBlockMigrator.js +97 -101
  6. package/dist/config/migrator/recommendationMigrator.js +2 -2
  7. package/dist/enums/extensions/recommendationBlock.js +1 -1
  8. package/dist/enums/recommendation.js +15 -16
  9. package/dist/extensions/Blocks/Recommendation/block.js +9 -133
  10. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +187 -0
  11. package/dist/extensions/Blocks/Recommendation/constants.js +13 -0
  12. package/dist/extensions/Blocks/Recommendation/control.js +336 -0
  13. package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +68 -0
  14. package/dist/extensions/Blocks/Recommendation/controls/index.js +245 -0
  15. package/dist/extensions/Blocks/Recommendation/controls/nameTextTrimControl.js +74 -0
  16. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscount/textAfter.js → omnibusDiscountTextAfterControl.js} +14 -16
  17. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscount/textBefore.js → omnibusDiscountTextBeforeControl.js} +14 -16
  18. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPrice/textAfter.js → omnibusPriceTextAfterControl.js} +14 -16
  19. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPrice/textBefore.js → omnibusPriceTextBeforeControl.js} +12 -14
  20. package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +188 -0
  21. package/dist/extensions/Blocks/Recommendation/extension.js +17 -40
  22. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +3 -19
  23. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +4 -13
  24. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +10 -21
  25. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +207 -254
  26. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +181 -0
  27. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +189 -0
  28. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +209 -0
  29. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
  30. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +15 -26
  31. package/dist/extensions/Blocks/controlFactories.js +93 -125
  32. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +186 -242
  33. package/dist/services/recommendationApi.js +8 -11
  34. package/dist/services/templateLibraryApi.js +13 -16
  35. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +1 -1
  36. package/dist/src/composables/useRecommendation.d.ts +0 -1
  37. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +0 -67
  38. package/dist/src/extensions/Blocks/Recommendation/{controls/cardComposition/index.d.ts → cardCompositionControl.d.ts} +3 -23
  39. package/dist/src/extensions/Blocks/Recommendation/{constants/controlIds.d.ts → constants.d.ts} +24 -0
  40. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +38 -0
  41. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +589 -21
  42. package/dist/src/extensions/Blocks/Recommendation/controls/nameTextTrimControl.d.ts +16 -0
  43. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +0 -9
  44. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +468 -138
  45. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +16 -0
  46. package/dist/src/extensions/Blocks/Recommendation/templates/{grid/migration.d.ts → migrationTemplate.d.ts} +4 -11
  47. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +52 -0
  48. package/dist/static/styles/customEditorStyle.css.js +11 -35
  49. package/dist/utils/pairProductVariables.js +56 -57
  50. package/dist/utils/templatePreparation.js +14 -15
  51. package/package.json +1 -1
  52. package/dist/config/compiler/utils/recommendationCompilerUtils.js +0 -121
  53. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +0 -4
  54. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +0 -4
  55. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +0 -66
  56. package/dist/extensions/Blocks/Recommendation/constants/layout.js +0 -22
  57. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +0 -21
  58. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +0 -64
  59. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +0 -80
  60. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +0 -232
  61. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +0 -19
  62. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +0 -92
  63. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +0 -102
  64. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +0 -209
  65. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +0 -52
  66. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +0 -250
  67. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +0 -70
  68. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +0 -160
  69. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +0 -67
  70. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +0 -307
  71. package/dist/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js +0 -21
  72. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +0 -46
  73. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +0 -108
  74. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +0 -44
  75. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +0 -48
  76. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +0 -48
  77. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +0 -44
  78. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +0 -222
  79. package/dist/extensions/Blocks/Recommendation/services/configService.js +0 -240
  80. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +0 -228
  81. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +0 -251
  82. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +0 -66
  83. package/dist/extensions/Blocks/Recommendation/templates/index.js +0 -12
  84. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +0 -169
  85. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +0 -73
  86. package/dist/extensions/Blocks/Recommendation/templates/utils.js +0 -134
  87. package/dist/extensions/Blocks/Recommendation/types/nodeConfig.js +0 -6
  88. package/dist/extensions/Blocks/Recommendation/utils/priceFormatter.js +0 -29
  89. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +0 -46
  90. package/dist/src/config/compiler/utils/recommendationCompilerUtils.d.ts +0 -17
  91. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +0 -13
  92. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +0 -49
  93. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +0 -13
  94. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +0 -41
  95. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +0 -35
  96. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +0 -143
  97. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +0 -31
  98. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +0 -35
  99. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +0 -37
  100. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +0 -29
  101. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +0 -52
  102. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +0 -22
  103. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +0 -79
  104. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +0 -24
  105. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +0 -60
  106. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +0 -23
  107. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +0 -221
  108. package/dist/src/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.d.ts +0 -29
  109. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +0 -97
  110. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +0 -34
  111. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +0 -95
  112. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +0 -100
  113. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +0 -15
  114. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +0 -15
  115. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +0 -100
  116. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +0 -15
  117. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +0 -15
  118. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +0 -95
  119. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +0 -83
  120. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +0 -151
  121. package/dist/src/extensions/Blocks/Recommendation/services/index.d.ts +0 -6
  122. package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +0 -20
  123. package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +0 -33
  124. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +0 -41
  125. package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +0 -8
  126. package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +0 -25
  127. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +0 -18
  128. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +0 -66
  129. package/dist/src/extensions/Blocks/Recommendation/types/index.d.ts +0 -7
  130. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +0 -166
  131. package/dist/src/extensions/Blocks/Recommendation/utils/priceFormatter.d.ts +0 -33
  132. package/dist/src/extensions/Blocks/Recommendation/utils/stylePreserver.d.ts +0 -113
  133. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +0 -77
@@ -1,108 +0,0 @@
1
- import { ModificationDescription as a } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { CommonControl as c } from "../../../common-control.js";
3
- import { RecommendationBlockId as l } from "../../constants/blockIds.js";
4
- import { RecommendationControlId as m } from "../../constants/controlIds.js";
5
- import { CONTAINER_SELECTOR as u } from "../../constants/selectors.js";
6
- const i = {
7
- TEXT_TRIM_ENABLED: "textTrimEnabled"
8
- }, o = "text-trim-enabled", d = `.${o}`, T = `.${o} p`, f = `.${o} { max-width: 0; }`, p = `.${o} p { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin: 0; display: block; }`;
9
- class g extends c {
10
- getId() {
11
- return m.NAME_TEXT_TRIM;
12
- }
13
- getTemplate() {
14
- return `
15
- <div class="name-text-trim-control-container">
16
- ${this._GuTwoColumns([
17
- this._GuLabel({ text: "Trim Long Text" }),
18
- this._GuToggle(i.TEXT_TRIM_ENABLED)
19
- ])}
20
- </div>
21
- `;
22
- }
23
- onRender() {
24
- this._setFormValues(), this._listenToFormUpdates();
25
- }
26
- onTemplateNodeUpdated(e) {
27
- super.onTemplateNodeUpdated(e), this._setFormValues();
28
- }
29
- _setFormValues() {
30
- const e = this._getCurrentTrimState();
31
- this.api.updateValues({
32
- [i.TEXT_TRIM_ENABLED]: e
33
- });
34
- }
35
- _getCurrentTrimState() {
36
- if (!this.currentNode || !("hasClass" in this.currentNode))
37
- return !1;
38
- if (this.currentNode.hasClass(o))
39
- return !0;
40
- const e = this.currentNode.closest(u);
41
- if (!e)
42
- return !1;
43
- const t = e.querySelector(
44
- `[esd-extension-block-id="${l.NAME}"]`
45
- );
46
- return t && "hasClass" in t ? t.hasClass(o) : !1;
47
- }
48
- /**
49
- * Finds an existing CSS rule in the document stylesheet by exact query
50
- * @param query - The CSS query to search for (uses Stripo's CSS query syntax)
51
- * @returns The CSS rule node if found, undefined otherwise
52
- */
53
- _findCssRule(e) {
54
- const t = this.api.getDocumentRootCssNode();
55
- if (t)
56
- return t.querySelector(e);
57
- }
58
- /**
59
- * Finds the .text-trim-enabled p rule by searching all text-trim rules and comparing selectors
60
- * This is needed because Stripo's CSS query syntax interprets spaces as path separators
61
- * @returns true if the rule exists
62
- */
63
- _hasParagraphRule() {
64
- const e = this.api.getDocumentRootCssNode();
65
- return e ? e.querySelectorAll(`*${o}`).some((s) => "getSelector" in s && typeof s.getSelector == "function" ? s.getSelector() === T : !1) : !1;
66
- }
67
- /**
68
- * Ensures the text-trim CSS rules exist in the document stylesheet
69
- * Only adds rules if they don't already exist (prevents duplicates across multiple blocks)
70
- */
71
- _ensureCssRulesExist() {
72
- const e = this.api.getDocumentRootCssNode();
73
- if (!e)
74
- return;
75
- const t = this.api.getDocumentModifier();
76
- let s = !1;
77
- this._findCssRule(d) || (t.modifyCss(e).appendRule(f), s = !0), this._hasParagraphRule() || (t.modifyCss(e).appendRule(p), s = !0), s && t.apply(new a("Add text trim CSS rules"));
78
- }
79
- _onTextTrimChange(e) {
80
- if (!this.currentNode || !("closest" in this.currentNode))
81
- return;
82
- const t = this.currentNode.closest(u);
83
- if (!t || !("querySelectorAll" in t))
84
- return;
85
- const s = Array.from(
86
- t.querySelectorAll(`[esd-extension-block-id="${l.NAME}"]`)
87
- );
88
- if (!s.length)
89
- return;
90
- e && this._ensureCssRulesExist();
91
- const r = this.api.getDocumentModifier();
92
- s.forEach((n) => {
93
- e ? r.modifyHtml(n).setClass(o) : r.modifyHtml(n).removeClass(o);
94
- }), r.apply(
95
- new a(
96
- e ? "Enable product name text trimming" : "Disable product name text trimming"
97
- )
98
- );
99
- }
100
- _listenToFormUpdates() {
101
- this.api.onValueChanged(i.TEXT_TRIM_ENABLED, (e) => {
102
- this._onTextTrimChange(e);
103
- });
104
- }
105
- }
106
- export {
107
- g as NameTextTrimControl
108
- };
@@ -1,44 +0,0 @@
1
- import { createPaddingsControl as r, createTextBackgroundColorControl as C, createTextFontFamilyControl as e, createTextStyleControl as l, createTextSizeControl as c, createTextColorControl as _, createTextAlignControl as I } 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 O = I(
6
- t.OLD_PRICE_ALIGN,
7
- o.OLD_PRICE,
8
- n
9
- ), R = _(
10
- t.OLD_PRICE_COLOR,
11
- o.OLD_PRICE,
12
- n
13
- ), a = c(
14
- t.OLD_PRICE_SIZE,
15
- o.OLD_PRICE,
16
- n
17
- ), i = l(
18
- t.OLD_PRICE_STYLE,
19
- o.OLD_PRICE,
20
- n
21
- ), E = e(
22
- t.OLD_PRICE_FONT_FAMILY,
23
- o.OLD_PRICE,
24
- n
25
- ), L = C(
26
- t.OLD_PRICE_BACKGROUND,
27
- o.OLD_PRICE,
28
- n
29
- ), P = r(
30
- t.OLD_PRICE_PADDINGS,
31
- o.OLD_PRICE,
32
- n
33
- ), T = {
34
- align: O,
35
- color: R,
36
- size: a,
37
- style: i,
38
- fontFamily: E,
39
- background: L,
40
- paddings: P
41
- };
42
- export {
43
- T as OldPriceControls
44
- };
@@ -1,48 +0,0 @@
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
- };
@@ -1,48 +0,0 @@
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
- };
@@ -1,44 +0,0 @@
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
- };
@@ -1,222 +0,0 @@
1
- var G = Object.defineProperty;
2
- var I = (o, n, t) => n in o ? G(o, n, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[n] = t;
3
- var l = (o, n, t) => I(o, typeof n != "symbol" ? n + "" : n, t);
4
- import { ModificationDescription as g } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
- import { CommonControl as L } from "../../../common-control.js";
6
- import { SPACING_STEP as b, MAX_SPACING as y, MIN_SPACING as A, DEFAULT_COLUMN_SPACING as a, DEFAULT_ROW_SPACING as m } from "../../constants/layout.js";
7
- import { RecommendationConfigService as d } from "../../services/configService.js";
8
- import { useRecommendationExtensionStore as w } from "../../store/recommendation.js";
9
- import { safeGetStyle as S, safeGetParent as V } from "../../utils/tagName.js";
10
- import { getCurrentLayout as C } from "../main/utils.js";
11
- import { useDebounceFn as O } from "../../../../../node_modules/@vueuse/shared/index.js";
12
- const R = "recommendation-spacing-control", s = {
13
- COLUMN_SPACING: "columnSpacing",
14
- COLUMN_SPACING_LABEL: "columnSpacingLabel",
15
- ROW_SPACING: "rowSpacing"
16
- }, P = {
17
- COLUMN_SPACING: "data-column-spacing",
18
- ROW_SPACING: "data-row-spacing"
19
- };
20
- function N(o, n) {
21
- if (!o)
22
- return n;
23
- const t = parseFloat(o);
24
- return Number.isNaN(t) ? n : t;
25
- }
26
- class $ extends L {
27
- constructor() {
28
- super(...arguments);
29
- l(this, "store", w());
30
- l(this, "unsubscribeOrientation", null);
31
- /**
32
- * Debounced version of _onColumnSpacingChange
33
- * Prevents excessive DOM updates when user rapidly adjusts the counter
34
- */
35
- l(this, "_debouncedOnColumnSpacingChange", O((t) => {
36
- this._onColumnSpacingChange(t);
37
- }, 300));
38
- /**
39
- * Debounced version of _onRowSpacingChange
40
- * Prevents excessive DOM updates when user rapidly adjusts the counter
41
- */
42
- l(this, "_debouncedOnRowSpacingChange", O((t) => {
43
- this._onRowSpacingChange(t);
44
- }, 300));
45
- }
46
- getId() {
47
- return R;
48
- }
49
- getTemplate() {
50
- return `
51
- <div class="spacing-control-container">
52
- ${this._GuTwoColumns([
53
- this._GuLabel({ text: "Column Spacing (px)", name: s.COLUMN_SPACING_LABEL }),
54
- this._GuCounter({
55
- name: s.COLUMN_SPACING,
56
- minValue: A,
57
- maxValue: y,
58
- step: b
59
- }),
60
- this._GuLabel({ text: "Row Spacing (px)" }),
61
- this._GuCounter({
62
- name: s.ROW_SPACING,
63
- minValue: A,
64
- maxValue: y,
65
- step: b
66
- })
67
- ])}
68
- </div>
69
- `;
70
- }
71
- onRender() {
72
- this._setFormValues(), this._updateColumnSpacingVisibility(), this._listenToFormUpdates(), this._subscribeToOrientationChanges();
73
- }
74
- onTemplateNodeUpdated(t) {
75
- super.onTemplateNodeUpdated(t), this._setFormValues(), this._updateColumnSpacingVisibility();
76
- }
77
- onDestroy() {
78
- this.unsubscribeOrientation && (this.unsubscribeOrientation(), this.unsubscribeOrientation = null);
79
- }
80
- /**
81
- * Updates column spacing visibility based on layout orientation
82
- * Column spacing is hidden for list layout (products are stacked vertically)
83
- * Reads from node config first, falls back to store then DOM
84
- */
85
- _updateColumnSpacingVisibility() {
86
- if (!this.api)
87
- return;
88
- const t = d.getConfig(this.currentNode), e = this.store.recommendationConfigs.orientation, i = (t.layout || e || C(this.currentNode)) === "grid";
89
- this.api.setVisibility(s.COLUMN_SPACING, i), this.api.setVisibility(s.COLUMN_SPACING_LABEL, i);
90
- }
91
- /**
92
- * Reads spacing values from node config first, falls back to DOM styles
93
- */
94
- _setFormValues() {
95
- if (!this.api)
96
- return;
97
- const t = d.getConfig(this.currentNode), e = t.columnSpacing !== a ? t.columnSpacing : this._getStoredColumnSpacing(), r = t.rowSpacing !== m ? t.rowSpacing : this._getStoredRowSpacing();
98
- this.api.updateValues({
99
- [s.COLUMN_SPACING]: e,
100
- [s.ROW_SPACING]: r
101
- });
102
- }
103
- /**
104
- * Gets stored column spacing from the first attribute row cell's padding.
105
- * For grid layout: cells inside .recommendation-attribute-row have padding applied.
106
- * For list layout: the parent of .product-card-wrapper has the padding.
107
- * The padding is applied as "0 {halfSpacing}px", so we extract and multiply by 2.
108
- */
109
- _getStoredColumnSpacing() {
110
- if (!this.currentNode)
111
- return a;
112
- if (C(this.currentNode) === "grid") {
113
- const p = this.currentNode.querySelector(".recommendation-attribute-row"), c = p == null ? void 0 : p.querySelector("td"), f = S(c, "padding");
114
- if (!f)
115
- return a;
116
- const _ = f.trim().split(/\s+/);
117
- return _.length < 2 ? a : N(_[1], a / 2) * 2;
118
- }
119
- const e = this.currentNode.querySelector(".product-card-wrapper"), r = V(e), i = S(r, "padding");
120
- if (!i)
121
- return a;
122
- const u = i.trim().split(/\s+/);
123
- return u.length < 2 ? a : N(u[1], a / 2) * 2;
124
- }
125
- /**
126
- * Gets stored row spacing from the first spacer element's height style
127
- */
128
- _getStoredRowSpacing() {
129
- if (!this.currentNode)
130
- return m;
131
- const t = this.currentNode.querySelector(".spacer"), e = S(t, "height");
132
- return N(e, m);
133
- }
134
- /**
135
- * Handles column spacing changes.
136
- * For grid layout: applies horizontal padding to all cells inside attribute rows.
137
- * For list layout: applies padding to parent of product card wrappers.
138
- */
139
- _onColumnSpacingChange(t) {
140
- if (!this.currentNode)
141
- return;
142
- d.updateConfig(
143
- this.api,
144
- this.currentNode,
145
- { columnSpacing: t },
146
- `Changed column spacing to ${t}px`
147
- ), this._storeColumnSpacing(t);
148
- const r = d.getConfig(this.currentNode).layout || C(this.currentNode), i = this.api.getDocumentModifier(), h = `0 ${t / 2}px`;
149
- r === "grid" ? Array.from(
150
- this.currentNode.querySelectorAll(".attribute-cell")
151
- ).forEach((c) => {
152
- i.modifyHtml(c).setStyle("padding", h);
153
- }) : Array.from(
154
- this.currentNode.querySelectorAll(".product-card-wrapper")
155
- ).forEach((c) => {
156
- "parent" in c && c.parent() && i.modifyHtml(c.parent()).setStyle("padding", h);
157
- }), i.apply(new g(`Update column spacing to ${t}px`));
158
- }
159
- /**
160
- * Handles row spacing changes
161
- * Applies height to all spacer elements between product rows
162
- */
163
- _onRowSpacingChange(t) {
164
- if (!this.currentNode)
165
- return;
166
- d.updateConfig(
167
- this.api,
168
- this.currentNode,
169
- { rowSpacing: t },
170
- `Changed row spacing to ${t}px`
171
- ), this._storeRowSpacing(t);
172
- const e = Array.from(
173
- this.currentNode.querySelectorAll(".spacer")
174
- );
175
- if (!e.length)
176
- return;
177
- const r = this.api.getDocumentModifier(), i = `${t}px`;
178
- e.forEach((u) => {
179
- r.modifyHtml(u).setStyle("height", i);
180
- }), r.apply(new g(`Update row spacing to ${t}px`));
181
- }
182
- /**
183
- * Stores column spacing value in block data attribute
184
- */
185
- _storeColumnSpacing(t) {
186
- if (!this.currentNode)
187
- return;
188
- const e = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
189
- e && this.api.getDocumentModifier().modifyHtml(e).setAttribute(P.COLUMN_SPACING, t.toString()).apply(new g("Store column spacing"));
190
- }
191
- /**
192
- * Stores row spacing value in block data attribute
193
- */
194
- _storeRowSpacing(t) {
195
- if (!this.currentNode)
196
- return;
197
- const e = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
198
- e && this.api.getDocumentModifier().modifyHtml(e).setAttribute(P.ROW_SPACING, t.toString()).apply(new g("Store row spacing"));
199
- }
200
- _listenToFormUpdates() {
201
- this.api.onValueChanged(s.COLUMN_SPACING, (t) => {
202
- const e = parseInt(t);
203
- Number.isNaN(e) || this._debouncedOnColumnSpacingChange(e);
204
- }), this.api.onValueChanged(s.ROW_SPACING, (t) => {
205
- const e = parseInt(t);
206
- Number.isNaN(e) || this._debouncedOnRowSpacingChange(e);
207
- });
208
- }
209
- /**
210
- * Subscribe to store orientation changes
211
- * Updates column spacing visibility when layout changes via the layout control
212
- */
213
- _subscribeToOrientationChanges() {
214
- this.unsubscribeOrientation && this.unsubscribeOrientation(), this.unsubscribeOrientation = this.store.$subscribe((t) => {
215
- t.type === "patch object" && this._updateColumnSpacingVisibility();
216
- });
217
- }
218
- }
219
- export {
220
- R as SPACING_CONTROL_ID,
221
- $ as SpacingControl
222
- };