@useinsider/guido 2.1.0-beta.e13d291 → 2.1.0-beta.e2d48fe

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 (152) hide show
  1. package/dist/config/migrator/itemsBlockMigrator.js +140 -123
  2. package/dist/config/migrator/recommendationMigrator.js +2 -2
  3. package/dist/extensions/Blocks/Items/block.js +19 -28
  4. package/dist/extensions/Blocks/Items/controls/button/link.js +19 -31
  5. package/dist/extensions/Blocks/Items/controls/cardComposition.js +124 -85
  6. package/dist/extensions/Blocks/Items/controls/image/link.js +19 -31
  7. package/dist/extensions/Blocks/Items/controls/name/trimming.js +28 -40
  8. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +34 -46
  9. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +45 -50
  10. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +40 -51
  11. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +23 -35
  12. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +45 -57
  13. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +42 -62
  14. package/dist/extensions/Blocks/Items/controls/settingsControl.js +189 -196
  15. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +0 -2
  16. package/dist/extensions/Blocks/Items/extension.js +8 -9
  17. package/dist/extensions/Blocks/Items/template.js +181 -175
  18. package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +65 -65
  19. package/dist/extensions/Blocks/Recommendation/block.js +6 -40
  20. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +187 -0
  21. package/dist/extensions/Blocks/Recommendation/constants.js +13 -0
  22. package/dist/extensions/Blocks/Recommendation/control.js +336 -0
  23. package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +68 -0
  24. package/dist/extensions/Blocks/Recommendation/controls/index.js +245 -0
  25. package/dist/extensions/Blocks/Recommendation/controls/nameTextTrimControl.js +74 -0
  26. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscount/textAfter.js → omnibusDiscountTextAfterControl.js} +14 -16
  27. package/dist/extensions/Blocks/Recommendation/controls/{omnibusDiscount/textBefore.js → omnibusDiscountTextBeforeControl.js} +14 -16
  28. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPrice/textAfter.js → omnibusPriceTextAfterControl.js} +14 -16
  29. package/dist/extensions/Blocks/Recommendation/controls/{omnibusPrice/textBefore.js → omnibusPriceTextBeforeControl.js} +12 -14
  30. package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +188 -0
  31. package/dist/extensions/Blocks/Recommendation/extension.js +17 -40
  32. package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +3 -19
  33. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +4 -13
  34. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +10 -21
  35. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +36 -41
  36. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +181 -0
  37. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +189 -0
  38. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +209 -0
  39. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
  40. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +16 -27
  41. package/dist/extensions/Blocks/common-control.js +91 -92
  42. package/dist/extensions/Blocks/controlFactories.js +93 -125
  43. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +169 -223
  44. package/dist/package.json.js +1 -1
  45. package/dist/services/recommendationApi.js +9 -10
  46. package/dist/src/components/wrappers/WpDrawer.vue.d.ts +1 -1
  47. package/dist/src/extensions/Blocks/Items/block.d.ts +0 -1
  48. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -1
  49. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +5 -5
  50. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -1
  51. package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +0 -1
  52. package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +0 -1
  53. package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +0 -1
  54. package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +0 -1
  55. package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +0 -1
  56. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +0 -1
  57. package/dist/src/extensions/Blocks/Items/controls/price/singlePrice.d.ts +0 -5
  58. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +10 -12
  59. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +2 -1
  60. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +0 -34
  61. package/dist/src/extensions/Blocks/Recommendation/{controls/cardComposition/index.d.ts → cardCompositionControl.d.ts} +3 -23
  62. package/dist/src/extensions/Blocks/Recommendation/{constants/controlIds.d.ts → constants.d.ts} +24 -0
  63. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +38 -0
  64. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +589 -21
  65. package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +0 -9
  66. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +16 -17
  67. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +16 -0
  68. package/dist/src/extensions/Blocks/Recommendation/templates/{grid/migration.d.ts → migrationTemplate.d.ts} +4 -11
  69. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +52 -0
  70. package/dist/src/extensions/Blocks/common-control.d.ts +4 -5
  71. package/dist/static/styles/customEditorStyle.css.js +2 -25
  72. package/package.json +2 -2
  73. package/dist/extensions/Blocks/Items/store/items-block.js +0 -79
  74. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +0 -4
  75. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +0 -4
  76. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +0 -64
  77. package/dist/extensions/Blocks/Recommendation/constants/layout.js +0 -20
  78. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +0 -19
  79. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +0 -64
  80. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +0 -80
  81. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +0 -232
  82. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +0 -19
  83. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +0 -96
  84. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +0 -110
  85. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +0 -204
  86. package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +0 -54
  87. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +0 -205
  88. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +0 -74
  89. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +0 -118
  90. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +0 -71
  91. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +0 -286
  92. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +0 -46
  93. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +0 -76
  94. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +0 -44
  95. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +0 -48
  96. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +0 -48
  97. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +0 -44
  98. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +0 -222
  99. package/dist/extensions/Blocks/Recommendation/services/configService.js +0 -239
  100. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +0 -233
  101. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +0 -251
  102. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +0 -69
  103. package/dist/extensions/Blocks/Recommendation/templates/index.js +0 -12
  104. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +0 -174
  105. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +0 -73
  106. package/dist/extensions/Blocks/Recommendation/templates/utils.js +0 -121
  107. package/dist/extensions/Blocks/Recommendation/types/nodeConfig.js +0 -6
  108. package/dist/extensions/Blocks/Recommendation/utils/priceFormatter.js +0 -29
  109. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +0 -46
  110. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +0 -45
  111. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +0 -13
  112. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +0 -49
  113. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +0 -13
  114. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +0 -35
  115. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +0 -31
  116. package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +0 -143
  117. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +0 -31
  118. package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +0 -35
  119. package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +0 -37
  120. package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +0 -29
  121. package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +0 -45
  122. package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +0 -22
  123. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +0 -57
  124. package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +0 -24
  125. package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +0 -42
  126. package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +0 -23
  127. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +0 -214
  128. package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +0 -97
  129. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +0 -16
  130. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +0 -95
  131. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +0 -100
  132. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +0 -15
  133. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +0 -15
  134. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +0 -100
  135. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +0 -15
  136. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +0 -15
  137. package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +0 -95
  138. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +0 -83
  139. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +0 -151
  140. package/dist/src/extensions/Blocks/Recommendation/services/index.d.ts +0 -6
  141. package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +0 -20
  142. package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +0 -33
  143. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +0 -39
  144. package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +0 -8
  145. package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +0 -25
  146. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +0 -18
  147. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +0 -54
  148. package/dist/src/extensions/Blocks/Recommendation/types/index.d.ts +0 -7
  149. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +0 -154
  150. package/dist/src/extensions/Blocks/Recommendation/utils/priceFormatter.d.ts +0 -33
  151. package/dist/src/extensions/Blocks/Recommendation/utils/stylePreserver.d.ts +0 -113
  152. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +0 -77
@@ -1,46 +1,46 @@
1
1
  import { ModificationDescription as b } from "../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { DefaultConfigValues as i, SETTINGS_ENUMS as n, ItemInCartOptions as g } from "../enums/settingsEnums.js";
3
- function d() {
2
+ import { DefaultConfigValues as o, SETTINGS_ENUMS as n, ItemInCartOptions as g } from "../enums/settingsEnums.js";
3
+ function _() {
4
4
  return String(Date.now() + Math.floor(Math.random() * 1e3));
5
5
  }
6
- const E = (o) => o.replace(/\$/g, "$$$$");
6
+ const E = (r) => r.replace(/\$/g, "$$$$");
7
7
  function S() {
8
8
  return {
9
9
  initialized: !0,
10
- blockInstanceId: d(),
10
+ blockInstanceId: _(),
11
11
  source: n.ITEMS_TYPE.CART_ITEMS,
12
12
  type: n.ITEMS_TYPE.CART_ITEMS,
13
- itemsSelectValue: i.cartItemsSelectControlValue,
13
+ itemsSelectValue: o.cartItemsSelectControlValue,
14
14
  orientation: n.ORIENTATION.VERTICAL,
15
- nameTrimming: i.productNameTrimmingControlValue === "1",
16
- priceHideDiscount: i.productPriceHideDiscountControlValue === "1",
17
- priceFormatted: i.productPriceFormattedControlValue === "1",
15
+ nameTrimming: o.productNameTrimmingControlValue === "1",
16
+ priceHideDiscount: o.productPriceHideDiscountControlValue === "1",
17
+ priceFormatted: o.productPriceFormattedControlValue === "1",
18
18
  priceSinglePrice: !1,
19
- priceCurrencySymbol: i.productPriceCurrencySymbolControlValue,
20
- priceCurrencyLocation: i.productPriceCurrencyLocationControlValue,
19
+ priceCurrencySymbol: o.productPriceCurrencySymbolControlValue,
20
+ priceCurrencyLocation: o.productPriceCurrencyLocationControlValue,
21
21
  priceOrientation: "horizontal",
22
- quantityControlEnabled: i.productQuantityControlEnabled === "1",
23
- buttonLink: i.productButtonLinkControlValue,
24
- imageLink: i.productImageLinkControlValue,
22
+ quantityControlEnabled: o.productQuantityControlEnabled === "1",
23
+ buttonLink: o.productButtonLinkControlValue,
24
+ imageLink: o.productImageLinkControlValue,
25
25
  buttonLabel: "Buy",
26
26
  buttonFullWidth: !0,
27
27
  // Default to full width (es-fw class)
28
- imageVisible: i.productImageVisible === "1",
29
- nameVisible: i.productNameVisible === "1",
30
- quantityVisible: i.productQuantityVisible === "1",
31
- priceVisible: i.productPriceVisible === "1",
32
- originalPriceVisible: i.productOriginalPriceVisible === "1",
33
- buttonVisible: i.productButtonVisible === "1"
28
+ imageVisible: o.productImageVisible === "1",
29
+ nameVisible: o.productNameVisible === "1",
30
+ quantityVisible: o.productQuantityVisible === "1",
31
+ priceVisible: o.productPriceVisible === "1",
32
+ originalPriceVisible: o.productOriginalPriceVisible === "1",
33
+ buttonVisible: o.productButtonVisible === "1"
34
34
  };
35
35
  }
36
- function s(o) {
37
- if (!o)
36
+ function p(r) {
37
+ if (!r)
38
38
  return null;
39
- const t = o.closest(".items-block-v2");
40
- return t || o.closest(".esd-cart-items-block");
39
+ const t = r.closest(".items-block-v2");
40
+ return t || r.closest(".esd-cart-items-block");
41
41
  }
42
- function m(o) {
43
- return o ? {
42
+ function m(r) {
43
+ return r ? {
44
44
  CartItems: n.ITEMS_TYPE.CART_ITEMS,
45
45
  BrowsedItems: n.ITEMS_TYPE.BROWSED_ITEMS,
46
46
  PurchasedItems: n.ITEMS_TYPE.PURCHASED_ITEMS,
@@ -48,34 +48,34 @@ function m(o) {
48
48
  CART_ITEMS: n.ITEMS_TYPE.CART_ITEMS,
49
49
  BROWSED_ITEMS: n.ITEMS_TYPE.BROWSED_ITEMS,
50
50
  PURCHASED_ITEMS: n.ITEMS_TYPE.PURCHASED_ITEMS
51
- }[o] || n.ITEMS_TYPE.CART_ITEMS : n.ITEMS_TYPE.CART_ITEMS;
51
+ }[r] || n.ITEMS_TYPE.CART_ITEMS : n.ITEMS_TYPE.CART_ITEMS;
52
52
  }
53
- function I(o, t) {
54
- if (!o)
55
- return i.cartItemsSelectControlValue;
56
- if (o.includes("{{"))
57
- return o;
58
- if (/^\d+$/.test(o)) {
59
- const e = parseInt(o) - 1, r = g[t];
60
- if (r && r[e])
61
- return r[e].value;
53
+ function I(r, t) {
54
+ if (!r)
55
+ return o.cartItemsSelectControlValue;
56
+ if (r.includes("{{"))
57
+ return r;
58
+ if (/^\d+$/.test(r)) {
59
+ const e = parseInt(r) - 1, i = g[t];
60
+ if (i && i[e])
61
+ return i[e].value;
62
62
  }
63
- return i.cartItemsSelectControlValue;
63
+ return o.cartItemsSelectControlValue;
64
64
  }
65
- function C(o) {
66
- const t = o.querySelector("esd-config-block");
65
+ function C(r) {
66
+ const t = r.querySelector("esd-config-block");
67
67
  if (!t)
68
68
  return null;
69
- const e = (c, a) => c == null ? a : c === "1" || c === "true", r = (c, a) => c || a, l = t.getAttribute("data-type"), u = m(l), _ = t.getAttribute("data-cart_items_select_control_value"), p = I(_, u);
69
+ const e = (c, s) => c == null ? s : c === "1" || c === "true", i = (c, s) => c || s, u = t.getAttribute("data-type"), a = m(u), d = t.getAttribute("data-cart_items_select_control_value"), l = I(d, a);
70
70
  return {
71
71
  initialized: e(t.getAttribute("data-initialized"), !1),
72
- blockInstanceId: r(
72
+ blockInstanceId: i(
73
73
  t.getAttribute("data-block-instance-id"),
74
- d()
74
+ _()
75
75
  ),
76
- source: u,
77
- type: u,
78
- itemsSelectValue: p,
76
+ source: a,
77
+ type: a,
78
+ itemsSelectValue: l,
79
79
  orientation: t.getAttribute("data-card_orientation_control_value") || n.ORIENTATION.VERTICAL,
80
80
  nameTrimming: e(
81
81
  t.getAttribute("data-product_name_control_trim"),
@@ -93,28 +93,28 @@ function C(o) {
93
93
  t.getAttribute("data-product_price_control_single_price"),
94
94
  !1
95
95
  ),
96
- priceCurrencySymbol: r(
97
- t.getAttribute("data-product_price_currency_symbol"),
98
- i.productPriceCurrencySymbolControlValue
96
+ priceCurrencySymbol: i(
97
+ t.getAttribute("data-product_price_control_currency_symbol"),
98
+ o.productPriceCurrencySymbolControlValue
99
99
  ),
100
- priceCurrencyLocation: r(
100
+ priceCurrencyLocation: i(
101
101
  t.getAttribute("data-product_price_currency_location"),
102
- i.productPriceCurrencyLocationControlValue
102
+ o.productPriceCurrencyLocationControlValue
103
103
  ),
104
104
  priceOrientation: t.getAttribute("data-product_original_price_control_orientation") || "horizontal",
105
105
  quantityControlEnabled: e(
106
106
  t.getAttribute("data-product_quantity_control_enabled"),
107
107
  !0
108
108
  ),
109
- buttonLink: r(
109
+ buttonLink: i(
110
110
  t.getAttribute("data-product_button_link"),
111
- i.productButtonLinkControlValue
111
+ o.productButtonLinkControlValue
112
112
  ),
113
- imageLink: r(
113
+ imageLink: i(
114
114
  t.getAttribute("data-product_image_link"),
115
- i.productImageLinkControlValue
115
+ o.productImageLinkControlValue
116
116
  ),
117
- buttonLabel: r(
117
+ buttonLabel: i(
118
118
  t.getAttribute("data-product_button_control_label"),
119
119
  "Buy"
120
120
  ),
@@ -149,28 +149,28 @@ function C(o) {
149
149
  )
150
150
  };
151
151
  }
152
- function y(o) {
153
- const t = s(o);
152
+ function y(r) {
153
+ const t = p(r);
154
154
  if (!t)
155
155
  return null;
156
156
  const e = t.getNodeConfig();
157
157
  if (e && e.initialized)
158
158
  return e;
159
- const r = C(t);
160
- return r || null;
159
+ const i = C(t);
160
+ return i || null;
161
161
  }
162
- function A(o, t, e) {
163
- const r = s(o);
164
- if (!r)
162
+ function A(r, t, e, i) {
163
+ const u = p(r);
164
+ if (!u)
165
165
  return;
166
- const u = { ...r.getNodeConfig() || {}, ...e };
167
- t.getDocumentModifier().modifyHtml(r).setNodeConfig(u).apply(new b("Update Items block configuration"));
166
+ const d = { ...u.getNodeConfig() || {}, ...e }, l = i ?? t.getDocumentModifier();
167
+ l.modifyHtml(u).setNodeConfig(d), i || l.apply(new b("Update Items block configuration"));
168
168
  }
169
169
  export {
170
170
  E as escapeReplacement,
171
- d as generateBlockInstanceId,
171
+ _ as generateBlockInstanceId,
172
172
  S as getDefaultItemsBlockConfig,
173
173
  y as getItemsBlockConfig,
174
- s as getItemsBlockContainer,
174
+ p as getItemsBlockContainer,
175
175
  A as setItemsBlockConfig
176
176
  };
@@ -1,8 +1,7 @@
1
- import { Block as o, BlockCompositionType as i } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { RecommendationConfigService as t } from "./services/configService.js";
3
- import { getDefaultTemplate as r } from "./templates/grid/template.js";
1
+ import { Block as e, BlockCompositionType as t } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { getDefaultTemplate as o } from "./templates/blockTemplate.js";
4
3
  const n = "recommendation-block";
5
- class g extends o {
4
+ class m extends e {
6
5
  constructor() {
7
6
  super();
8
7
  }
@@ -13,7 +12,7 @@ class g extends o {
13
12
  return "recommendation-icon";
14
13
  }
15
14
  getBlockCompositionType() {
16
- return i.CONTAINER;
15
+ return t.CONTAINER;
17
16
  }
18
17
  getName() {
19
18
  return this.api.translate("Recommendation Block");
@@ -22,43 +21,10 @@ class g extends o {
22
21
  return this.api.translate("Recommendation Block Title Description");
23
22
  }
24
23
  getTemplate() {
25
- return r();
26
- }
27
- /**
28
- * Called when a new block is dropped into the template
29
- *
30
- * Initializes the block with default configuration stored via node config.
31
- * This ensures the configuration persists with the template.
32
- * @param node - The newly created block node
33
- */
34
- onCreated(e) {
35
- t.initializeConfig(this.api, e);
36
- }
37
- /**
38
- * Called when the document changes or template is loaded
39
- *
40
- * Handles migration from legacy templates that don't have node config.
41
- * Also handles config version upgrades for future migrations.
42
- * @param node - The block node that may need migration
43
- */
44
- onDocumentChanged(e) {
45
- !e || !("getNodeConfig" in e) || t.needsMigration(e) && this._migrateFromLegacy(e);
46
- }
47
- /**
48
- * Migrate configuration from legacy format
49
- *
50
- * Legacy templates may store configuration in:
51
- * - data-attributes (data-layout, data-card-composition, etc.)
52
- * - Pinia store (lost on reload - this is what we're fixing)
53
- *
54
- * This method reads what we can from the DOM and initializes proper node config.
55
- * @param node - The block node to migrate
56
- */
57
- _migrateFromLegacy(e) {
58
- t.migrateFromDataAttributes(this.api, e);
24
+ return o();
59
25
  }
60
26
  }
61
27
  export {
62
28
  n as BLOCK_ID,
63
- g as RecommendationBlock
29
+ m as RecommendationBlock
64
30
  };
@@ -0,0 +1,187 @@
1
+ import { ModificationDescription as n } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { CommonControl as _ } from "../common-control.js";
3
+ import { ATTR_PRODUCT_IMAGE as m, ATTR_PRODUCT_NAME as y, ATTR_PRODUCT_PRICE as T, ATTR_PRODUCT_OLD_PRICE as h, ATTR_PRODUCT_OMNIBUS_PRICE as C, ATTR_PRODUCT_OMNIBUS_DISCOUNT as f, ATTR_PRODUCT_BUTTON as g } from "./constants.js";
4
+ const R = "ui-elements-recommendation-card-composition", l = ".recommendation-attribute-row", A = "tr.recommendation-product-row", c = "data-card-composition", a = "data-attribute-type", d = "data-visibility", s = [
5
+ { key: m, label: "Product Image", visible: !0 },
6
+ { key: y, label: "Product Name", visible: !0 },
7
+ { key: T, label: "Product Price", visible: !0 },
8
+ { key: h, label: "Product Original Price", visible: !0 },
9
+ { key: C, label: "Omnibus Price", visible: !1 },
10
+ { key: f, label: "Omnibus Discount", visible: !1 },
11
+ { key: g, label: "Product Button", visible: !0 }
12
+ ];
13
+ class N extends _ {
14
+ getId() {
15
+ return R;
16
+ }
17
+ getTemplate() {
18
+ const t = s.map((i) => ({
19
+ key: i.key,
20
+ label: i.label,
21
+ content: this._createItemContent(i.label, i.key)
22
+ }));
23
+ return `
24
+ <div class="container">
25
+ ${this._GuLabel({ text: "Card Element Order & Visibility" })}
26
+ ${this._GuOrderable("cardComposition", t)}
27
+ </div>
28
+ `;
29
+ }
30
+ onRender() {
31
+ this._initializeComposition(), this._registerValueChangeListeners();
32
+ }
33
+ onTemplateNodeUpdated(t) {
34
+ super.onTemplateNodeUpdated(t), this._initializeComposition();
35
+ }
36
+ /**
37
+ * Creates the HTML content for an orderable item with label and toggle
38
+ */
39
+ _createItemContent(t, i) {
40
+ return `
41
+ <div style="display: flex; align-items: center; justify-content: space-between;
42
+ padding: 8px; gap: 8px;">
43
+ <span style="flex: 1;">${t}</span>
44
+ ${this._GuToggle(`visibility_${i}`)}
45
+ </div>
46
+ `;
47
+ }
48
+ /**
49
+ * Registers event listeners for composition and visibility changes
50
+ */
51
+ _registerValueChangeListeners() {
52
+ this.api.onValueChanged("cardComposition", (t) => {
53
+ this._applyCompositionToBlock(t);
54
+ }), s.forEach((t) => {
55
+ this.api.onValueChanged(`visibility_${t.key}`, (i) => {
56
+ this._applyVisibilityToBlock(t.key, i);
57
+ });
58
+ });
59
+ }
60
+ /**
61
+ * Initializes composition order and visibility state from the current node
62
+ */
63
+ _initializeComposition() {
64
+ const t = this._readCompositionFromNode(), i = this._readVisibilityFromRows(), e = {
65
+ cardComposition: t,
66
+ ...this._buildVisibilityValues(i)
67
+ };
68
+ this.api.updateValues(e);
69
+ }
70
+ /**
71
+ * Reads composition order from node's data-card-composition attribute
72
+ * Falls back to default order if attribute is not present
73
+ */
74
+ _readCompositionFromNode() {
75
+ if (!this.currentNode || !("getAttribute" in this.currentNode))
76
+ return s.map((i) => i.key);
77
+ const t = this.currentNode.getAttribute(c);
78
+ return t ? t.split(",").filter(Boolean) : s.map((i) => i.key);
79
+ }
80
+ /**
81
+ * Builds visibility values object from the visibility map
82
+ */
83
+ _buildVisibilityValues(t) {
84
+ return s.reduce((i, e) => (i[`visibility_${e.key}`] = t[e.key] ?? !0, i), {});
85
+ }
86
+ /**
87
+ * Read visibility state from individual row elements' data-visibility attributes
88
+ * This ensures toggles reflect the actual DOM state
89
+ */
90
+ _readVisibilityFromRows() {
91
+ if (!this.currentNode)
92
+ return this._getDefaultVisibilities();
93
+ const t = Array.from(this.currentNode.querySelectorAll(l));
94
+ console.debug("_readVisibilityFromRows - found attribute rows:", t.length);
95
+ const i = this._extractVisibilityFromRows(t);
96
+ return this._mergeWithDefaults(i);
97
+ }
98
+ /**
99
+ * Returns default visibility values for all items
100
+ */
101
+ _getDefaultVisibilities() {
102
+ return s.reduce((t, i) => (t[i.key] = i.visible, t), {});
103
+ }
104
+ /**
105
+ * Extracts visibility values from DOM nodes
106
+ */
107
+ _extractVisibilityFromRows(t) {
108
+ const i = {};
109
+ return t.forEach((e) => {
110
+ if (!("getAttribute" in e))
111
+ return;
112
+ const o = e.getAttribute(a), r = e.getAttribute(d);
113
+ o && r !== null && (i[o] = this._parseVisibilityValue(r), console.debug(
114
+ `_readVisibilityFromRows - ${o}: ${i[o]} (raw: ${r})`
115
+ ));
116
+ }), i;
117
+ }
118
+ /**
119
+ * Parses visibility value from string to boolean
120
+ * Accepts "1", "true" as true, everything else as false
121
+ */
122
+ _parseVisibilityValue(t) {
123
+ return t === "1" || t === "true";
124
+ }
125
+ /**
126
+ * Merges extracted visibilities with default values for missing keys
127
+ */
128
+ _mergeWithDefaults(t) {
129
+ return s.forEach((i) => {
130
+ i.key in t || (t[i.key] = i.visible, console.debug(`_readVisibilityFromRows - ${i.key}: using default ${i.visible}`));
131
+ }), t;
132
+ }
133
+ /**
134
+ * Apply the reordered composition to the block's HTML structure
135
+ * Updates the data-card-composition attribute and reorders product attributes
136
+ */
137
+ _applyCompositionToBlock(t) {
138
+ if (console.debug("_applyCompositionToBlock - composition:", t), !this.currentNode) {
139
+ console.debug("_applyCompositionToBlock - no current node");
140
+ return;
141
+ }
142
+ this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute(c, t.join(",")).apply(new n("Update card composition")), this._reorderProductAttributes(t);
143
+ }
144
+ /**
145
+ * Reorders attribute rows within each product row based on composition order
146
+ */
147
+ _reorderProductAttributes(t) {
148
+ if (!this.currentNode)
149
+ return;
150
+ const i = this.currentNode.querySelectorAll(A);
151
+ if (!(i != null && i.length))
152
+ return;
153
+ const e = this.api.getDocumentModifier();
154
+ i.forEach((o) => {
155
+ const r = this._buildCompositionHtml(o, t);
156
+ e.modifyHtml(o).setInnerHtml(r);
157
+ }), e.apply(new n("Reorder product attributes"));
158
+ }
159
+ /**
160
+ * Builds HTML string with attributes ordered according to composition
161
+ */
162
+ _buildCompositionHtml(t, i) {
163
+ return i.reduce((e, o) => {
164
+ const r = t.querySelector(`${l}[${a}="${o}"]`);
165
+ return r && "getOuterHTML" in r ? e + r.getOuterHTML() : e;
166
+ }, "");
167
+ }
168
+ /**
169
+ * Apply visibility changes to the block's HTML structure
170
+ * Updates display style and data-visibility attribute for all matching rows
171
+ */
172
+ _applyVisibilityToBlock(t, i) {
173
+ if (console.debug("_applyVisibilityToBlock", t, i), !this.currentNode)
174
+ return;
175
+ const e = this.currentNode.querySelectorAll(`${l}[${a}="${t}"]`);
176
+ if (!(e != null && e.length))
177
+ return;
178
+ const o = i ? "table-row" : "none", r = i ? "1" : "0", p = `Set ${t} visibility to ${i ? "visible" : "hidden"}`, u = this.api.getDocumentModifier();
179
+ e.forEach((b) => {
180
+ u.modifyHtml(b).setStyle("display", o).setAttribute(d, r);
181
+ }), u.apply(new n(p));
182
+ }
183
+ }
184
+ export {
185
+ R as COMPOSITION_CONTROL_BLOCK_ID,
186
+ N as RecommendationCardCompositionControl
187
+ };
@@ -0,0 +1,13 @@
1
+ const _ = "productImage", b = "productName", n = "productPrice", i = "productOldPrice", O = "productOmnibusPrice", T = "productOmnibusDiscount", t = "productButton";
2
+ var o = /* @__PURE__ */ ((c) => (c.BUTTON = "recommendation-block-button", c.NAME = "recommendation-block-name", c.PRICE = "recommendation-block-price", c.OLD_PRICE = "recommendation-block-old-price", c.OMNIBUS_PRICE = "recommendation-block-omnibus-price", c.OMNIBUS_DISCOUNT = "recommendation-block-omnibus-discount", c.IMAGE = "recommendation-block-image", c))(o || {}), r = /* @__PURE__ */ ((c) => (c.BUTTON_ALIGN = "recommendation-block-button-align-control", c.BUTTON_BORDER = "recommendation-block-button-border-control", c.BUTTON_BORDER_RADIUS = "recommendation-block-button-border-radius-control", c.BUTTON_COLOR = "recommendation-block-button-color-control", c.BUTTON_FIT_TO_CONTENT = "recommendation-block-button-fit-to-content-control", c.BUTTON_FONT_FAMILY = "recommendation-block-button-font-family-control", c.BUTTON_MARGINS = "recommendation-block-button-margins-control", c.BUTTON_PADDINGS = "recommendation-block-button-paddings-control", c.BUTTON_TEXT = "recommendation-block-button-text-control", c.BUTTON_TEXT_SIZE = "recommendation-block-button-text-size-control", c.BUTTON_TEXT_STYLE_AND_FONT_COLOR = "recommendation-block-button-text-style-and-font-color-control", c.NAME_ALIGN = "recommendation-block-name-align-control", c.NAME_BACKGROUND = "recommendation-block-name-background-control", c.NAME_COLOR = "recommendation-block-name-color-control", c.NAME_FONT_FAMILY = "recommendation-block-name-font-family-control", c.NAME_PADDINGS = "recommendation-block-name-paddings-control", c.NAME_SIZE = "recommendation-block-name-size-control", c.NAME_STYLE = "recommendation-block-name-style-control", c.NAME_TEXT_TRIM = "recommendation-block-name-text-trim-control", c.PRICE_ALIGN = "recommendation-block-price-align-control", c.PRICE_BACKGROUND = "recommendation-block-price-background-control", c.PRICE_COLOR = "recommendation-block-price-color-control", c.PRICE_FONT_FAMILY = "recommendation-block-price-font-family-control", c.PRICE_PADDINGS = "recommendation-block-price-paddings-control", c.PRICE_SIZE = "recommendation-block-price-size-control", c.PRICE_STYLE = "recommendation-block-price-style-control", c.OLD_PRICE_ALIGN = "recommendation-block-old-price-align-control", c.OLD_PRICE_BACKGROUND = "recommendation-block-old-price-background-control", c.OLD_PRICE_COLOR = "recommendation-block-old-price-color-control", c.OLD_PRICE_FONT_FAMILY = "recommendation-block-old-price-font-family-control", c.OLD_PRICE_PADDINGS = "recommendation-block-old-price-paddings-control", c.OLD_PRICE_SIZE = "recommendation-block-old-price-size-control", c.OLD_PRICE_STYLE = "recommendation-block-old-price-style-control", c.OMNIBUS_PRICE_ALIGN = "recommendation-block-omnibus-price-align-control", c.OMNIBUS_PRICE_BACKGROUND = "recommendation-block-omnibus-price-background-control", c.OMNIBUS_PRICE_COLOR = "recommendation-block-omnibus-price-color-control", c.OMNIBUS_PRICE_FONT_FAMILY = "recommendation-block-omnibus-price-font-family-control", c.OMNIBUS_PRICE_PADDINGS = "recommendation-block-omnibus-price-paddings-control", c.OMNIBUS_PRICE_SIZE = "recommendation-block-omnibus-price-size-control", c.OMNIBUS_PRICE_STYLE = "recommendation-block-omnibus-price-style-control", c.OMNIBUS_PRICE_TEXT_BEFORE = "recommendation-block-omnibus-price-text-before-control", c.OMNIBUS_PRICE_TEXT_AFTER = "recommendation-block-omnibus-price-text-after-control", c.OMNIBUS_DISCOUNT_ALIGN = "recommendation-block-omnibus-discount-align-control", c.OMNIBUS_DISCOUNT_BACKGROUND = "recommendation-block-omnibus-discount-background-control", c.OMNIBUS_DISCOUNT_COLOR = "recommendation-block-omnibus-discount-color-control", c.OMNIBUS_DISCOUNT_FONT_FAMILY = "recommendation-block-omnibus-discount-font-family-control", c.OMNIBUS_DISCOUNT_PADDINGS = "recommendation-block-omnibus-discount-paddings-control", c.OMNIBUS_DISCOUNT_SIZE = "recommendation-block-omnibus-discount-size-control", c.OMNIBUS_DISCOUNT_STYLE = "recommendation-block-omnibus-discount-style-control", c.OMNIBUS_DISCOUNT_TEXT_BEFORE = "recommendation-block-omnibus-discount-text-before-control", c.OMNIBUS_DISCOUNT_TEXT_AFTER = "recommendation-block-omnibus-discount-text-after-control", c.IMAGE_SIZE = "recommendation-block-image-size-control", c.IMAGE_MARGINS = "recommendation-block-image-margins-control", c))(r || {});
3
+ export {
4
+ t as ATTR_PRODUCT_BUTTON,
5
+ _ as ATTR_PRODUCT_IMAGE,
6
+ b as ATTR_PRODUCT_NAME,
7
+ i as ATTR_PRODUCT_OLD_PRICE,
8
+ T as ATTR_PRODUCT_OMNIBUS_DISCOUNT,
9
+ O as ATTR_PRODUCT_OMNIBUS_PRICE,
10
+ n as ATTR_PRODUCT_PRICE,
11
+ o as RecommendationBlockId,
12
+ r as RecommendationControlId
13
+ };