@useinsider/guido 2.1.0-beta.6df87d7 → 2.1.0-beta.76217f3

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 (145) hide show
  1. package/README.md +36 -0
  2. package/dist/@types/config/schemas.js +70 -65
  3. package/dist/components/Guido.vue.js +1 -1
  4. package/dist/components/Guido.vue2.js +69 -58
  5. package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +14 -15
  6. package/dist/composables/useBlocksConfig.js +26 -16
  7. package/dist/composables/useHtmlValidator.js +84 -106
  8. package/dist/composables/useRecommendation.js +21 -54
  9. package/dist/config/compiler/recommendationCompilerRules.js +39 -45
  10. package/dist/config/migrator/recommendationMigrator.js +2 -2
  11. package/dist/enums/defaults.js +8 -4
  12. package/dist/enums/extensions/recommendationBlock.js +1 -1
  13. package/dist/enums/recommendation.js +15 -16
  14. package/dist/extensions/Blocks/Recommendation/block.js +9 -133
  15. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +187 -0
  16. package/dist/extensions/Blocks/Recommendation/constants.js +13 -0
  17. package/dist/extensions/Blocks/Recommendation/control.js +336 -0
  18. package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +68 -0
  19. package/dist/extensions/Blocks/Recommendation/controls/index.js +245 -0
  20. package/dist/extensions/Blocks/Recommendation/controls/nameTextTrimControl.js +74 -0
  21. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscount/textAfter.js → omnibusDiscountTextAfterControl.js} +14 -16
  22. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscount/textBefore.js → omnibusDiscountTextBeforeControl.js} +14 -16
  23. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPrice/textAfter.js → omnibusPriceTextAfterControl.js} +14 -16
  24. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPrice/textBefore.js → omnibusPriceTextBeforeControl.js} +12 -14
  25. package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +188 -0
  26. package/dist/extensions/Blocks/Recommendation/extension.js +17 -40
  27. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +3 -19
  28. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +4 -13
  29. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +10 -21
  30. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +207 -256
  31. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +181 -0
  32. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +189 -0
  33. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +209 -0
  34. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
  35. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +15 -26
  36. package/dist/extensions/Blocks/controlFactories.js +93 -125
  37. package/dist/extensions/ModulesTabIcons/extension.js +17 -0
  38. package/dist/guido.css +1 -1
  39. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +237 -225
  40. package/dist/services/recommendationApi.js +8 -11
  41. package/dist/services/templateLibraryApi.js +13 -16
  42. package/dist/src/@types/config/schemas.d.ts +8 -0
  43. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +1 -1
  44. package/dist/src/composables/useConfig.d.ts +4 -0
  45. package/dist/src/composables/useRecommendation.d.ts +0 -1
  46. package/dist/src/enums/defaults.d.ts +4 -0
  47. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +0 -67
  48. package/dist/src/extensions/Blocks/Recommendation/{controls/cardComposition/index.d.ts → cardCompositionControl.d.ts} +3 -23
  49. package/dist/src/extensions/Blocks/Recommendation/{constants/controlIds.d.ts → constants.d.ts} +24 -0
  50. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +38 -0
  51. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +589 -21
  52. package/dist/src/extensions/Blocks/Recommendation/controls/nameTextTrimControl.d.ts +16 -0
  53. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +0 -9
  54. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +468 -138
  55. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +16 -0
  56. package/dist/src/extensions/Blocks/Recommendation/templates/{grid/migration.d.ts → migrationTemplate.d.ts} +4 -11
  57. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +52 -0
  58. package/dist/src/extensions/ModulesTabIcons/extension.d.ts +2 -0
  59. package/dist/src/stores/config.d.ts +36 -0
  60. package/dist/static/styles/customEditorStyle.css.js +11 -35
  61. package/dist/utils/pairProductVariables.js +56 -57
  62. package/dist/utils/templatePreparation.js +14 -15
  63. package/package.json +1 -1
  64. package/dist/config/compiler/utils/recommendationCompilerUtils.js +0 -116
  65. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +0 -4
  66. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +0 -4
  67. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +0 -66
  68. package/dist/extensions/Blocks/Recommendation/constants/layout.js +0 -22
  69. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +0 -21
  70. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +0 -64
  71. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +0 -80
  72. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +0 -232
  73. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +0 -19
  74. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +0 -92
  75. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +0 -102
  76. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +0 -209
  77. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +0 -52
  78. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +0 -218
  79. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +0 -70
  80. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +0 -160
  81. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +0 -67
  82. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +0 -307
  83. package/dist/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js +0 -21
  84. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +0 -46
  85. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +0 -108
  86. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +0 -44
  87. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +0 -48
  88. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +0 -48
  89. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +0 -44
  90. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +0 -222
  91. package/dist/extensions/Blocks/Recommendation/services/configService.js +0 -240
  92. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +0 -233
  93. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +0 -251
  94. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +0 -66
  95. package/dist/extensions/Blocks/Recommendation/templates/index.js +0 -12
  96. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +0 -174
  97. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +0 -73
  98. package/dist/extensions/Blocks/Recommendation/templates/utils.js +0 -134
  99. package/dist/extensions/Blocks/Recommendation/types/nodeConfig.js +0 -6
  100. package/dist/extensions/Blocks/Recommendation/utils/priceFormatter.js +0 -29
  101. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +0 -46
  102. package/dist/src/config/compiler/utils/recommendationCompilerUtils.d.ts +0 -17
  103. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +0 -13
  104. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +0 -49
  105. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +0 -13
  106. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +0 -41
  107. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +0 -35
  108. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +0 -143
  109. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +0 -31
  110. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +0 -35
  111. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +0 -37
  112. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +0 -29
  113. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +0 -52
  114. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +0 -22
  115. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +0 -67
  116. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +0 -24
  117. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +0 -60
  118. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +0 -23
  119. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +0 -221
  120. package/dist/src/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.d.ts +0 -29
  121. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +0 -97
  122. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +0 -34
  123. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +0 -95
  124. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +0 -100
  125. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +0 -15
  126. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +0 -15
  127. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +0 -100
  128. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +0 -15
  129. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +0 -15
  130. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +0 -95
  131. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +0 -83
  132. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +0 -151
  133. package/dist/src/extensions/Blocks/Recommendation/services/index.d.ts +0 -6
  134. package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +0 -20
  135. package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +0 -33
  136. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +0 -41
  137. package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +0 -8
  138. package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +0 -25
  139. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +0 -18
  140. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +0 -66
  141. package/dist/src/extensions/Blocks/Recommendation/types/index.d.ts +0 -7
  142. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +0 -166
  143. package/dist/src/extensions/Blocks/Recommendation/utils/priceFormatter.d.ts +0 -33
  144. package/dist/src/extensions/Blocks/Recommendation/utils/stylePreserver.d.ts +0 -113
  145. 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
- };