@useinsider/guido 2.2.0-beta.d819452 → 2.2.0-beta.eeefcc3

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 (200) 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 +15 -14
  6. package/dist/components/organisms/header/HeaderWrapper.vue.js +9 -9
  7. package/dist/composables/useActionsApi.js +15 -13
  8. package/dist/composables/useBlocksConfig.js +26 -16
  9. package/dist/composables/useHtmlValidator.js +114 -104
  10. package/dist/composables/useRecommendation.js +54 -21
  11. package/dist/composables/useStripo.js +25 -23
  12. package/dist/composables/useVersionHistoryApi.js +1 -1
  13. package/dist/config/compiler/recommendationCompilerRules.js +45 -39
  14. package/dist/config/compiler/utils/recommendationCompilerUtils.js +121 -0
  15. package/dist/config/i18n/en/index.js +11 -0
  16. package/dist/config/i18n/en/labels.json.js +7 -0
  17. package/dist/config/i18n/en/toasters.json.js +56 -0
  18. package/dist/config/i18n/en/tooltips.json.js +82 -0
  19. package/dist/config/i18n/index.js +7 -0
  20. package/dist/config/migrator/itemsBlockMigrator.js +142 -120
  21. package/dist/config/migrator/recommendationMigrator.js +2 -2
  22. package/dist/enums/defaults.js +8 -4
  23. package/dist/enums/extensions/recommendationBlock.js +1 -1
  24. package/dist/enums/recommendation.js +16 -15
  25. package/dist/extensions/Blocks/Items/block.js +19 -28
  26. package/dist/extensions/Blocks/Items/controls/button/link.js +19 -31
  27. package/dist/extensions/Blocks/Items/controls/cardComposition.js +124 -85
  28. package/dist/extensions/Blocks/Items/controls/image/link.js +19 -31
  29. package/dist/extensions/Blocks/Items/controls/name/trimming.js +28 -40
  30. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +35 -47
  31. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +49 -54
  32. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +42 -51
  33. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +23 -36
  34. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +45 -57
  35. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +42 -60
  36. package/dist/extensions/Blocks/Items/controls/settingsControl.js +189 -196
  37. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +0 -2
  38. package/dist/extensions/Blocks/Items/extension.js +8 -9
  39. package/dist/extensions/Blocks/Items/settingsPanel.js +10 -15
  40. package/dist/extensions/Blocks/Items/template.js +181 -175
  41. package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +65 -65
  42. package/dist/extensions/Blocks/Recommendation/block.js +133 -9
  43. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +4 -0
  44. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +4 -0
  45. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +66 -0
  46. package/dist/extensions/Blocks/Recommendation/constants/layout.js +22 -0
  47. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +21 -0
  48. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +64 -0
  49. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +80 -0
  50. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +232 -0
  51. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +19 -0
  52. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +92 -0
  53. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +102 -0
  54. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +209 -0
  55. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +52 -0
  56. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +250 -0
  57. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +70 -0
  58. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +160 -0
  59. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +67 -0
  60. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +307 -0
  61. package/dist/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js +21 -0
  62. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +46 -0
  63. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +108 -0
  64. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +44 -0
  65. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +48 -0
  66. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscountTextAfterControl.js → omnibusDiscount/textAfter.js} +16 -14
  67. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscountTextBeforeControl.js → omnibusDiscount/textBefore.js} +16 -14
  68. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +48 -0
  69. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPriceTextAfterControl.js → omnibusPrice/textAfter.js} +16 -14
  70. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPriceTextBeforeControl.js → omnibusPrice/textBefore.js} +14 -12
  71. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +44 -0
  72. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +222 -0
  73. package/dist/extensions/Blocks/Recommendation/extension.js +40 -17
  74. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +19 -3
  75. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +13 -4
  76. package/dist/extensions/Blocks/Recommendation/services/configService.js +240 -0
  77. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +21 -10
  78. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +254 -207
  79. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +228 -0
  80. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +251 -0
  81. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +66 -0
  82. package/dist/extensions/Blocks/Recommendation/templates/index.js +12 -0
  83. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +169 -0
  84. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +73 -0
  85. package/dist/extensions/Blocks/Recommendation/templates/utils.js +134 -0
  86. package/dist/extensions/Blocks/Recommendation/types/nodeConfig.js +6 -0
  87. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
  88. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +26 -15
  89. package/dist/extensions/Blocks/Recommendation/utils/priceFormatter.js +29 -0
  90. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +46 -0
  91. package/dist/extensions/Blocks/common-control.js +91 -92
  92. package/dist/extensions/Blocks/controlFactories.js +125 -93
  93. package/dist/extensions/ModulesTabIcons/extension.js +17 -0
  94. package/dist/guido.css +1 -1
  95. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +317 -193
  96. package/dist/package.json.js +1 -1
  97. package/dist/services/recommendationApi.js +11 -8
  98. package/dist/services/stripoApi.js +20 -17
  99. package/dist/services/templateLibraryApi.js +16 -13
  100. package/dist/src/@types/config/schemas.d.ts +8 -0
  101. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +1 -1
  102. package/dist/src/composables/useConfig.d.ts +4 -0
  103. package/dist/src/composables/useRecommendation.d.ts +1 -0
  104. package/dist/src/config/compiler/utils/recommendationCompilerUtils.d.ts +17 -0
  105. package/dist/src/config/i18n/en/index.d.ts +1 -0
  106. package/dist/src/config/i18n/index.d.ts +16 -0
  107. package/dist/src/enums/defaults.d.ts +4 -0
  108. package/dist/src/extensions/Blocks/Items/block.d.ts +0 -1
  109. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -1
  110. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +5 -5
  111. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -1
  112. package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +0 -1
  113. package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +0 -1
  114. package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +0 -1
  115. package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +0 -1
  116. package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +0 -1
  117. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +0 -1
  118. package/dist/src/extensions/Blocks/Items/controls/price/singlePrice.d.ts +0 -5
  119. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +10 -12
  120. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +2 -1
  121. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +67 -0
  122. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +13 -0
  123. package/dist/src/extensions/Blocks/Recommendation/{constants.d.ts → constants/controlIds.d.ts} +0 -24
  124. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +49 -0
  125. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +13 -0
  126. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +41 -0
  127. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +35 -0
  128. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +143 -0
  129. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +31 -0
  130. package/dist/src/extensions/Blocks/Recommendation/{cardCompositionControl.d.ts → controls/cardComposition/index.d.ts} +23 -3
  131. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +35 -0
  132. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +21 -589
  133. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +37 -0
  134. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +29 -0
  135. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +52 -0
  136. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +22 -0
  137. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +79 -0
  138. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +24 -0
  139. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +60 -0
  140. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +23 -0
  141. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +221 -0
  142. package/dist/src/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.d.ts +29 -0
  143. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +97 -0
  144. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +34 -0
  145. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +95 -0
  146. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +100 -0
  147. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +15 -0
  148. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +15 -0
  149. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +100 -0
  150. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +15 -0
  151. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +15 -0
  152. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +95 -0
  153. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +83 -0
  154. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +9 -0
  155. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +151 -0
  156. package/dist/src/extensions/Blocks/Recommendation/services/index.d.ts +6 -0
  157. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +138 -468
  158. package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +20 -0
  159. package/dist/src/extensions/Blocks/Recommendation/templates/{migrationTemplate.d.ts → grid/migration.d.ts} +11 -4
  160. package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +33 -0
  161. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +41 -0
  162. package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +8 -0
  163. package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +25 -0
  164. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +18 -0
  165. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +66 -0
  166. package/dist/src/extensions/Blocks/Recommendation/types/index.d.ts +7 -0
  167. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +166 -0
  168. package/dist/src/extensions/Blocks/Recommendation/utils/priceFormatter.d.ts +33 -0
  169. package/dist/src/extensions/Blocks/Recommendation/utils/stylePreserver.d.ts +113 -0
  170. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +77 -0
  171. package/dist/src/extensions/Blocks/common-control.d.ts +4 -5
  172. package/dist/src/extensions/ModulesTabIcons/extension.d.ts +2 -0
  173. package/dist/src/stores/config.d.ts +36 -0
  174. package/dist/static/styles/components/notification.css.js +19 -0
  175. package/dist/static/styles/components/tools.css.js +6 -2
  176. package/dist/static/styles/components/version-history.css.js +10 -2
  177. package/dist/static/styles/components/wide-panel.css.js +18 -2
  178. package/dist/static/styles/customEditorStyle.css.js +35 -11
  179. package/dist/static/styles/variables.css.js +2 -0
  180. package/dist/static/templates/empty/index.html.js +74 -0
  181. package/dist/static/templates/empty/style.css.js +779 -0
  182. package/dist/utils/pairProductVariables.js +57 -56
  183. package/dist/utils/templatePreparation.js +15 -14
  184. package/package.json +2 -2
  185. package/dist/extensions/Blocks/Items/store/items-block.js +0 -79
  186. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +0 -187
  187. package/dist/extensions/Blocks/Recommendation/constants.js +0 -13
  188. package/dist/extensions/Blocks/Recommendation/control.js +0 -336
  189. package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +0 -68
  190. package/dist/extensions/Blocks/Recommendation/controls/index.js +0 -245
  191. package/dist/extensions/Blocks/Recommendation/controls/nameTextTrimControl.js +0 -74
  192. package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +0 -188
  193. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +0 -181
  194. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +0 -189
  195. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +0 -209
  196. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +0 -45
  197. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +0 -38
  198. package/dist/src/extensions/Blocks/Recommendation/controls/nameTextTrimControl.d.ts +0 -16
  199. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +0 -16
  200. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +0 -52
@@ -1,74 +0,0 @@
1
- import { ModificationDescription as m } from "../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { CommonControl as c } from "../../common-control.js";
3
- import { RecommendationControlId as d, RecommendationBlockId as a } from "../constants.js";
4
- const n = {
5
- TEXT_TRIM_ENABLED: "textTrimEnabled"
6
- }, r = "text-trim-enabled", l = ".ins-recommendation-product-container";
7
- class E extends c {
8
- getId() {
9
- return d.NAME_TEXT_TRIM;
10
- }
11
- getTemplate() {
12
- return `
13
- <div class="name-text-trim-control-container">
14
- ${this._GuTwoColumns([
15
- this._GuLabel({ text: "Trim Long Text" }),
16
- this._GuToggle(n.TEXT_TRIM_ENABLED)
17
- ])}
18
- </div>
19
- `;
20
- }
21
- onRender() {
22
- this._setFormValues(), this._listenToFormUpdates();
23
- }
24
- onTemplateNodeUpdated(e) {
25
- super.onTemplateNodeUpdated(e), this._setFormValues();
26
- }
27
- _setFormValues() {
28
- const e = this._getCurrentTrimState();
29
- this.api.updateValues({
30
- [n.TEXT_TRIM_ENABLED]: e
31
- });
32
- }
33
- _getCurrentTrimState() {
34
- if (!this.currentNode || !("hasClass" in this.currentNode))
35
- return !1;
36
- if (this.currentNode.hasClass(r))
37
- return !0;
38
- const e = this.currentNode.closest(l);
39
- if (!e)
40
- return !1;
41
- const t = e.querySelector(
42
- `[esd-extension-block-id="${a.NAME}"]`
43
- );
44
- return t && "hasClass" in t ? t.hasClass(r) : !1;
45
- }
46
- _onTextTrimChange(e) {
47
- if (!this.currentNode || !("closest" in this.currentNode))
48
- return;
49
- const t = this.currentNode.closest(l);
50
- if (!t || !("querySelectorAll" in t))
51
- return;
52
- const s = Array.from(
53
- t.querySelectorAll(`[esd-extension-block-id="${a.NAME}"]`)
54
- );
55
- if (!s.length)
56
- return;
57
- const o = this.api.getDocumentModifier();
58
- s.forEach((i) => {
59
- e ? o.modifyHtml(i).setClass(r) : o.modifyHtml(i).removeClass(r);
60
- }), o.apply(
61
- new m(
62
- e ? "Enable product name text trimming" : "Disable product name text trimming"
63
- )
64
- );
65
- }
66
- _listenToFormUpdates() {
67
- this.api.onValueChanged(n.TEXT_TRIM_ENABLED, (e) => {
68
- this._onTextTrimChange(e);
69
- });
70
- }
71
- }
72
- export {
73
- E as NameTextTrimControl
74
- };
@@ -1,188 +0,0 @@
1
- var C = Object.defineProperty;
2
- var g = (i, r, e) => r in i ? C(i, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[r] = e;
3
- var S = (i, r, e) => g(i, typeof r != "symbol" ? r + "" : r, e);
4
- import { ModificationDescription as l } from "../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
- import { CommonControl as m } from "../../common-control.js";
6
- import { useDebounceFn as d } from "../../../../node_modules/@vueuse/shared/index.js";
7
- const _ = "recommendation-spacing-control", c = {
8
- COLUMN_SPACING: "columnSpacing",
9
- ROW_SPACING: "rowSpacing"
10
- }, N = {
11
- COLUMN_SPACING: "data-column-spacing",
12
- ROW_SPACING: "data-row-spacing"
13
- }, n = {
14
- COLUMN_SPACING: 10,
15
- // 5px on each side = 10px total
16
- ROW_SPACING: 20
17
- }, p = {
18
- MIN_SPACING: 0,
19
- MAX_SPACING: 50,
20
- STEP: 5
21
- };
22
- class G extends m {
23
- constructor() {
24
- super(...arguments);
25
- /**
26
- * Debounced version of _onColumnSpacingChange
27
- * Prevents excessive DOM updates when user rapidly adjusts the counter
28
- */
29
- S(this, "_debouncedOnColumnSpacingChange", d((e) => {
30
- this._onColumnSpacingChange(e);
31
- }, 300));
32
- /**
33
- * Debounced version of _onRowSpacingChange
34
- * Prevents excessive DOM updates when user rapidly adjusts the counter
35
- */
36
- S(this, "_debouncedOnRowSpacingChange", d((e) => {
37
- this._onRowSpacingChange(e);
38
- }, 300));
39
- }
40
- getId() {
41
- return _;
42
- }
43
- getTemplate() {
44
- return `
45
- <div class="spacing-control-container">
46
- ${this._GuTwoColumns([
47
- this._GuLabel({ text: "Column Spacing (px)" }),
48
- this._GuCounter({
49
- name: c.COLUMN_SPACING,
50
- minValue: p.MIN_SPACING,
51
- maxValue: p.MAX_SPACING,
52
- step: p.STEP
53
- }),
54
- this._GuLabel({ text: "Row Spacing (px)" }),
55
- this._GuCounter({
56
- name: c.ROW_SPACING,
57
- minValue: p.MIN_SPACING,
58
- maxValue: p.MAX_SPACING,
59
- step: p.STEP
60
- })
61
- ])}
62
- </div>
63
- `;
64
- }
65
- onRender() {
66
- this._setFormValues(), this._listenToFormUpdates();
67
- }
68
- onTemplateNodeUpdated(e) {
69
- super.onTemplateNodeUpdated(e), this._setFormValues();
70
- }
71
- /**
72
- * Reads spacing values from data attributes or returns defaults
73
- */
74
- _setFormValues() {
75
- const e = this._getStoredColumnSpacing(), t = this._getStoredRowSpacing();
76
- this.api.updateValues({
77
- [c.COLUMN_SPACING]: e,
78
- [c.ROW_SPACING]: t
79
- });
80
- }
81
- /**
82
- * Gets stored column spacing from the first product card wrapper's parent element's padding
83
- * Reads the actual padding value instead of relying on data attributes
84
- *
85
- * The padding is applied as "0 {halfSpacing}px" on the parent TD element,
86
- * so we need to extract the horizontal padding value and multiply by 2 to get total spacing.
87
- */
88
- _getStoredColumnSpacing() {
89
- if (!this.currentNode)
90
- return n.COLUMN_SPACING;
91
- const e = this.currentNode.querySelector(".product-card-wrapper");
92
- if (!e || !("parent" in e) || typeof e.parent != "function")
93
- return n.COLUMN_SPACING;
94
- const t = e.parent();
95
- if (!t || !("getStyle" in t))
96
- return n.COLUMN_SPACING;
97
- const o = t.getStyle("padding");
98
- if (!o)
99
- return n.COLUMN_SPACING;
100
- const u = o.trim().split(/\s+/);
101
- if (u.length < 2)
102
- return n.COLUMN_SPACING;
103
- const [, a] = u, s = parseFloat(a);
104
- return Number.isNaN(s) ? n.COLUMN_SPACING : s * 2;
105
- }
106
- /**
107
- * Gets stored row spacing from the first spacer element's height style
108
- * Reads the actual height value instead of relying on data attributes
109
- */
110
- _getStoredRowSpacing() {
111
- if (!this.currentNode)
112
- return n.ROW_SPACING;
113
- const e = this.currentNode.querySelector(".spacer");
114
- if (!e || !("getStyle" in e))
115
- return n.ROW_SPACING;
116
- const t = e.getStyle("height");
117
- if (!t)
118
- return n.ROW_SPACING;
119
- const o = parseFloat(t);
120
- return Number.isNaN(o) ? n.ROW_SPACING : o;
121
- }
122
- /**
123
- * Handles column spacing changes
124
- * Applies horizontal padding to all product card wrappers
125
- */
126
- _onColumnSpacingChange(e) {
127
- if (!this.currentNode)
128
- return;
129
- const t = Array.from(
130
- this.currentNode.querySelectorAll(".product-card-wrapper")
131
- );
132
- if (!t)
133
- return;
134
- const o = this.api.getDocumentModifier(), a = `0 ${e / 2}px`;
135
- console.debug("padding", a), t.forEach((s) => {
136
- "parent" in s && s.parent() && o.modifyHtml(s.parent()).setStyle("padding", a);
137
- }), o.apply(new l(`Update column spacing to ${e}px`));
138
- }
139
- /**
140
- * Handles row spacing changes
141
- * Applies height to all spacer elements between product rows
142
- */
143
- _onRowSpacingChange(e) {
144
- if (!this.currentNode)
145
- return;
146
- this._storeRowSpacing(e);
147
- const t = Array.from(
148
- this.currentNode.querySelectorAll(".spacer")
149
- );
150
- if (console.debug("spacerCells", t), console.debug("spacing", e), !t.length)
151
- return;
152
- const o = this.api.getDocumentModifier(), u = `${e}px`;
153
- t.forEach((a) => {
154
- o.modifyHtml(a).setStyle("height", u);
155
- }), o.apply(new l(`Update row spacing to ${e}px`));
156
- }
157
- /**
158
- * Stores column spacing value in block data attribute
159
- */
160
- _storeColumnSpacing(e) {
161
- if (!this.currentNode)
162
- return;
163
- const t = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
164
- t && this.api.getDocumentModifier().modifyHtml(t).setAttribute(N.COLUMN_SPACING, e.toString()).apply(new l("Store column spacing"));
165
- }
166
- /**
167
- * Stores row spacing value in block data attribute
168
- */
169
- _storeRowSpacing(e) {
170
- if (!this.currentNode)
171
- return;
172
- const t = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
173
- t && this.api.getDocumentModifier().modifyHtml(t).setAttribute(N.ROW_SPACING, e.toString()).apply(new l("Store row spacing"));
174
- }
175
- _listenToFormUpdates() {
176
- this.api.onValueChanged(c.COLUMN_SPACING, (e) => {
177
- const t = parseInt(e);
178
- Number.isNaN(t) || this._debouncedOnColumnSpacingChange(t);
179
- }), this.api.onValueChanged(c.ROW_SPACING, (e) => {
180
- const t = parseInt(e);
181
- Number.isNaN(t) || this._debouncedOnRowSpacingChange(t);
182
- });
183
- }
184
- }
185
- export {
186
- _ as SPACING_CONTROL_ID,
187
- G as SpacingControl
188
- };
@@ -1,181 +0,0 @@
1
- import { BlockType as e, BlockAttr as o } from "../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { RecommendationBlockId as s, ATTR_PRODUCT_BUTTON as r, ATTR_PRODUCT_OMNIBUS_DISCOUNT as c, ATTR_PRODUCT_OMNIBUS_PRICE as p, ATTR_PRODUCT_OLD_PRICE as i, ATTR_PRODUCT_PRICE as d, ATTR_PRODUCT_NAME as T, ATTR_PRODUCT_IMAGE as b } from "../constants.js";
3
- import { generateTemplate as _, prepareProductRows as O, spacer as u, DEFAULTS as f, getDefaultProducts as C } from "./templateUtils.js";
4
- import { DEFAULT_CARD_COMPOSITION as I, DEFAULT_CARD_VISIBILITY as h } from "./templateUtils.js";
5
- const g = `
6
- <td align="left" class="ins-recommendation-v3-block-v2 esd-block-recommendation-v3-block es-p20">
7
- <table width="100%" cellpadding="0" cellspacing="0" border="0">
8
- <tr>
9
- <td align="center">
10
- <table
11
- class="container"
12
- width="100%"
13
- cellpadding="0"
14
- cellspacing="0"
15
- border="0">
16
- <tbody>
17
- <tr>
18
- <td>
19
- <table
20
- width="100%"
21
- cellpadding="0"
22
- cellspacing="0"
23
- border="0">
24
- <tbody>
25
- <${e.BLOCK_TEXT}
26
- class="es-p10t es-p10b es-p20l es-p20r"
27
- align="center">
28
- <p path="1" style="font-size: 28px; color: #333333;">
29
- <strong path="1,0">{-{-TITLE-}-}</strong>
30
- </p>
31
- </${e.BLOCK_TEXT}>
32
- </tbody>
33
- </table>
34
- </td>
35
- </tr>
36
- ${u}
37
- <tr>
38
- <td>
39
- <table
40
- class="ins-recommendation-product-container"
41
- width="100%"
42
- cellpadding="0"
43
- cellspacing="0"
44
- border="0"
45
- >
46
- {-{-PRODUCT_ROWS-}-}
47
- </table>
48
- </td>
49
- </tr>
50
- </tbody>
51
- </table>
52
- </td>
53
- </tr>
54
- </table>
55
- </td>
56
- `, n = {
57
- [b]: (t) => `
58
- <${e.BLOCK_IMAGE}
59
- ${o.BLOCK_IMAGE.src}="${t.image_url}"
60
- ${o.BLOCK_IMAGE.alt}="${t.name}"
61
- ${o.BLOCK_IMAGE.href}="#"
62
- class="product-image"
63
- align="center"
64
- style="max-width: 100%; height: auto; margin: 0 auto;"
65
- esd-extension-block-id="${s.IMAGE}">
66
- </${e.BLOCK_IMAGE}>
67
- `,
68
- [T]: (t) => `
69
- <${e.BLOCK_TEXT}
70
- class="product-name es-p10t es-p10b es-p15l es-p15r"
71
- align="center"
72
- esd-extension-block-id="${s.NAME}">
73
- <p path="1" contenteditable="false" style="font-size: 16px; color: #333333;">
74
- <strong path="1,0">${t.name}</strong>
75
- </p>
76
- </${e.BLOCK_TEXT}>
77
- `,
78
- [d]: () => `
79
- <${e.BLOCK_TEXT}
80
- class="product-price es-p15l es-p15r"
81
- align="center"
82
- esd-extension-block-id="${s.PRICE}">
83
- <p path="1" contenteditable="false" style="font-size: 16px; color: #333333;">
84
- <strong path="1,0">18,00 TRY</strong>
85
- </p>
86
- </${e.BLOCK_TEXT}>
87
- `,
88
- [i]: () => `
89
- <${e.BLOCK_TEXT}
90
- class="product-old-price es-p15l es-p15r"
91
- align="center"
92
- esd-extension-block-id="${s.OLD_PRICE}">
93
- <p path="1" contenteditable="false" style="font-size: 14px; color: #999999;">
94
- <s path="1,0">20,00 TRY</s>
95
- </p>
96
- </${e.BLOCK_TEXT}>
97
- `,
98
- [p]: () => `
99
- <${e.BLOCK_TEXT}
100
- class="product-omnibus-price es-p15l es-p15r"
101
- align="center"
102
- data-text-before="Lowest 30-day price: "
103
- data-text-after=""
104
- esd-extension-block-id="${s.OMNIBUS_PRICE}">
105
- <p path="1" contenteditable="false" style="font-size: 12px; color: #666666;">
106
- <span class="omnibus-text-before">Lowest 30-day price: </span>
107
- <span class="omnibus-price-value">17,00 TRY</span>
108
- <span class="omnibus-text-after"></span>
109
- </p>
110
- </${e.BLOCK_TEXT}>
111
- `,
112
- [c]: () => `
113
- <${e.BLOCK_TEXT}
114
- class="product-omnibus-discount es-p15l es-p15r"
115
- align="center"
116
- data-text-before=""
117
- data-text-after=""
118
- esd-extension-block-id="${s.OMNIBUS_DISCOUNT}">
119
- <p path="1" contenteditable="false" style="font-size: 12px; color: #666666;">
120
- <span class="omnibus-text-before"></span>
121
- <span class="omnibus-discount-value">-6%</span>
122
- <span class="omnibus-text-after"></span>
123
- </p>
124
- </${e.BLOCK_TEXT}>
125
- `,
126
- [r]: () => `
127
- <${e.BLOCK_BUTTON}
128
- ${o.BLOCK_BUTTON.href}="#"
129
- class="product-button es-p10t es-p10b"
130
- align="center"
131
- esd-extension-block-id="${s.BUTTON}">
132
- <span class="es-button-border">
133
- <a
134
- href="#"
135
- class="es-button buy-button"
136
- target="_blank"
137
- style="
138
- display: inline-block;
139
- width: 90%;
140
- max-width: 150px;
141
- padding: 12px 20px;
142
- background-color: #ffffff;
143
- color: #333333;
144
- text-decoration: none;
145
- border: 2px solid #cccccc;
146
- font-size: 16px;
147
- box-sizing: border-box;
148
- ">
149
- Buy
150
- </a>
151
- </span>
152
- </${e.BLOCK_BUTTON}>
153
- `
154
- };
155
- function x() {
156
- const t = C();
157
- return _(
158
- g,
159
- t,
160
- 3,
161
- n,
162
- f.TITLE
163
- );
164
- }
165
- function E(t, a, l) {
166
- return O(
167
- t,
168
- a,
169
- n,
170
- l
171
- );
172
- }
173
- export {
174
- f as DEFAULTS,
175
- I as DEFAULT_CARD_COMPOSITION,
176
- h as DEFAULT_CARD_VISIBILITY,
177
- g as default,
178
- C as getDefaultProducts,
179
- x as getDefaultTemplate,
180
- E as prepareProductRows
181
- };
@@ -1,189 +0,0 @@
1
- import { ATTR_PRODUCT_BUTTON as o, ATTR_PRODUCT_OMNIBUS_DISCOUNT as a, ATTR_PRODUCT_OMNIBUS_PRICE as s, ATTR_PRODUCT_OLD_PRICE as l, ATTR_PRODUCT_PRICE as c, ATTR_PRODUCT_NAME as r, ATTR_PRODUCT_IMAGE as d } from "../constants.js";
2
- import { prepareProductRows as i } from "./templateUtils.js";
3
- import { DEFAULTS as k, getDefaultProducts as f } from "./templateUtils.js";
4
- const g = `
5
- <td
6
- align="left"
7
- esd-extension-block-id="recommendation-block"
8
- esd-handler-name="esd-extension-RecommendationBlock"
9
- class="ins-recommendation-v3-block-v2 esd-block-recommendation-v3-block esd-extension-block es-p20"
10
- >
11
- <table width="100%" cellpadding="0" cellspacing="0" border="0">
12
- <tr>
13
- <td align="center">
14
- <table
15
- class="container"
16
- width="100%"
17
- cellpadding="0"
18
- cellspacing="0"
19
- border="0">
20
- <tbody>
21
- <tr>
22
- <td>
23
- <table
24
- width="100%"
25
- cellpadding="0"
26
- cellspacing="0"
27
- border="0">
28
- <tbody>
29
- <tr>
30
- {-{-TITLE-}-}
31
- </tr>
32
- </tbody>
33
- </table>
34
- </td>
35
- </tr>
36
- <tr>
37
- <td class="spacer" style="height: 20px;"></td>
38
- </tr>
39
- <tr>
40
- <td>
41
- <table
42
- class="ins-recommendation-product-container"
43
- width="100%"
44
- cellpadding="0"
45
- cellspacing="0"
46
- border="0"
47
- >
48
- {-{-PRODUCT_ROWS-}-}
49
- </table>
50
- </td>
51
- </tr>
52
- </tbody>
53
- </table>
54
- </td>
55
- </tr>
56
- </table>
57
- </td>
58
- `, p = {
59
- [d]: (t) => `
60
- <tr>
61
- <td
62
- class="esd-block-image product-image"
63
- esd-extension-block-id="recommendation-block-image"
64
- align="center"
65
- style="font-size: 0px;">
66
- <a target="_blank" href="${t.url}">
67
- <img
68
- src="${t.image_url}"
69
- alt="${t.name}"
70
- width="120"
71
- style="display: block; max-width: 100%; height: auto;"
72
- class="adapt-img">
73
- </a>
74
- </td>
75
- </tr>
76
- `,
77
- [r]: (t) => `
78
- <tr>
79
- <td
80
- class="esd-block-text product-name"
81
- esd-extension-block-id="recommendation-block-name"
82
- align="center">
83
- <p
84
- path="1"
85
- contenteditable="false"
86
- style="font-size: 16px; color: #333333; font-weight: 600; text-align: center;">
87
- <strong path="1,0">${t.name}</strong>
88
- </p>
89
- </td>
90
- </tr>
91
- `,
92
- [c]: () => `
93
- <tr>
94
- <td
95
- class="esd-block-text product-price"
96
- esd-extension-block-id="recommendation-block-price"
97
- align="center">
98
- <p
99
- path="1"
100
- contenteditable="false"
101
- style="font-size: 16px; color: #333333; font-weight: bold; text-align: center;">
102
- <strong path="1,0">18,00 TRY</strong>
103
- </p>
104
- </td>
105
- </tr>
106
- `,
107
- [l]: () => `
108
- <tr>
109
- <td
110
- class="esd-block-text product-old-price"
111
- esd-extension-block-id="recommendation-block-old-price"
112
- align="center">
113
- <p
114
- path="1"
115
- contenteditable="false"
116
- style="font-size: 14px; color: #999999; text-decoration: line-through; text-align: center;">
117
- <s path="1,0">20,00 TRY</s>
118
- </p>
119
- </td>
120
- </tr>
121
- `,
122
- [s]: () => `
123
- <tr>
124
- <td
125
- class="esd-block-text product-omnibus-price"
126
- esd-extension-block-id="recommendation-block-omnibus-price"
127
- data-text-before="Lowest 30-day price: "
128
- data-text-after=""
129
- align="center">
130
- <p
131
- path="1"
132
- contenteditable="false"
133
- style="font-size: 14px; color: #666666; text-align: center;"><span
134
- class="omnibus-text-before">Lowest 30-day price: </span><span
135
- class="omnibus-price-value">17,00 TRY</span><span
136
- class="omnibus-text-after"></span></p>
137
- </td>
138
- </tr>
139
- `,
140
- [a]: () => `
141
- <tr>
142
- <td
143
- class="esd-block-text product-omnibus-discount"
144
- esd-extension-block-id="recommendation-block-omnibus-discount"
145
- data-text-before=""
146
- data-text-after=""
147
- align="center">
148
- <p
149
- path="1"
150
- contenteditable="false"
151
- style="font-size: 14px; color: #666666; text-align: center;"><span
152
- class="omnibus-text-before"></span><span
153
- class="omnibus-discount-value">-6%</span><span
154
- class="omnibus-text-after"></span></p>
155
- </td>
156
- </tr>
157
- `,
158
- [o]: (t) => `
159
- <tr>
160
- <td
161
- class="esd-block-button product-button"
162
- esd-extension-block-id="recommendation-block-button"
163
- align="center">
164
- <span class="es-button-border" style="display: block;">
165
- <a
166
- href="${t.url}"
167
- target="_blank"
168
- class="es-button">
169
- {-{-PRODUCT_BUTTON_TEXT-}-}
170
- </a>
171
- </span>
172
- </td>
173
- </tr>
174
- `
175
- };
176
- function u(t, e, n) {
177
- return i(
178
- t,
179
- e,
180
- p,
181
- n
182
- );
183
- }
184
- export {
185
- k as DEFAULTS,
186
- g as default,
187
- f as getDefaultProducts,
188
- u as prepareProductRows
189
- };