@useinsider/guido 2.0.0-beta.dbde199 → 2.0.0-beta.e68b206

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 (174) hide show
  1. package/dist/@types/config/schemas.js +53 -39
  2. package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue.js +2 -2
  3. package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue.js +5 -5
  4. package/dist/components/organisms/header/LeftSlot.vue.js +12 -12
  5. package/dist/components/organisms/header/LeftSlot.vue2.js +6 -6
  6. package/dist/components/organisms/header/RightSlot.vue2.js +10 -10
  7. package/dist/composables/useConfig.js +29 -27
  8. package/dist/composables/useSave.js +13 -11
  9. package/dist/config/migrator/index.js +9 -8
  10. package/dist/config/migrator/itemsBlockMigrator.js +342 -0
  11. package/dist/extensions/Blocks/Items/block.js +39 -40
  12. package/dist/extensions/Blocks/Items/controls/button/link.js +22 -29
  13. package/dist/extensions/Blocks/Items/controls/cardComposition.js +70 -59
  14. package/dist/extensions/Blocks/Items/controls/image/link.js +23 -30
  15. package/dist/extensions/Blocks/Items/controls/name/trimming.js +25 -25
  16. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +19 -17
  17. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +31 -29
  18. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +36 -36
  19. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +21 -19
  20. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +29 -27
  21. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +93 -0
  22. package/dist/extensions/Blocks/Items/controls/settingsControl.js +159 -144
  23. package/dist/extensions/Blocks/Items/enums/controlEnums.js +2 -2
  24. package/dist/extensions/Blocks/Items/enums/productEnums.js +43 -45
  25. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +4 -3
  26. package/dist/extensions/Blocks/Items/extension.js +7 -6
  27. package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +58 -49
  28. package/dist/extensions/Blocks/Items/layouts/vertical.html.js +48 -59
  29. package/dist/extensions/Blocks/Items/settingsPanel.js +27 -26
  30. package/dist/extensions/Blocks/Items/store/items-block.js +11 -7
  31. package/dist/extensions/Blocks/Items/template.js +366 -129
  32. package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +184 -0
  33. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +68 -158
  34. package/dist/extensions/Blocks/Recommendation/constants.js +1 -10
  35. package/dist/extensions/Blocks/Recommendation/control.js +61 -91
  36. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +13 -0
  37. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +13 -0
  38. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +13 -0
  39. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +13 -0
  40. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +13 -0
  41. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +13 -0
  42. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +13 -0
  43. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +13 -0
  44. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +13 -0
  45. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +13 -0
  46. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +13 -0
  47. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +13 -0
  48. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +13 -0
  49. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +13 -0
  50. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +13 -0
  51. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +13 -0
  52. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +13 -0
  53. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +13 -0
  54. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +13 -0
  55. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +13 -0
  56. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +13 -0
  57. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +13 -0
  58. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +13 -0
  59. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +13 -0
  60. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +13 -0
  61. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +13 -0
  62. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +13 -0
  63. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +13 -0
  64. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +13 -0
  65. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +13 -0
  66. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +13 -0
  67. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +13 -0
  68. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +13 -0
  69. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +13 -0
  70. package/dist/extensions/Blocks/Recommendation/extension.js +40 -16
  71. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +71 -124
  72. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +65 -89
  73. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +19 -56
  74. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +45 -74
  75. package/dist/extensions/Blocks/Unsubscribe/extension.js +9 -9
  76. package/dist/extensions/Blocks/common-control.js +29 -30
  77. package/dist/extensions/Blocks/controlFactories.js +108 -98
  78. package/dist/guido.css +1 -1
  79. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +46 -40
  80. package/dist/src/@types/config/index.d.ts +2 -2
  81. package/dist/src/@types/config/schemas.d.ts +26 -0
  82. package/dist/src/@types/config/types.d.ts +7 -1
  83. package/dist/src/composables/useConfig.d.ts +6 -0
  84. package/dist/src/config/migrator/itemsBlockMigrator.d.ts +6 -0
  85. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -2
  86. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +9 -0
  87. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -2
  88. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +1 -1
  89. package/dist/src/extensions/Blocks/Items/controls/price/singlePrice.d.ts +18 -0
  90. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +0 -4
  91. package/dist/src/extensions/Blocks/Items/enums/controlEnums.d.ts +1 -0
  92. package/dist/src/extensions/Blocks/Items/enums/productEnums.d.ts +24 -26
  93. package/dist/src/extensions/Blocks/Items/enums/settingsEnums.d.ts +1 -0
  94. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +2 -0
  95. package/dist/src/extensions/Blocks/Items/template.d.ts +22 -1
  96. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +73 -0
  97. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +3 -54
  98. package/dist/src/extensions/Blocks/Recommendation/constants.d.ts +1 -41
  99. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +2 -5
  100. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +5 -0
  101. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +5 -0
  102. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +5 -0
  103. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +5 -0
  104. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +5 -0
  105. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +5 -0
  106. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +5 -0
  107. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +5 -0
  108. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +5 -0
  109. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +5 -0
  110. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +5 -0
  111. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +5 -0
  112. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +5 -0
  113. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +5 -0
  114. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +5 -0
  115. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +5 -0
  116. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +5 -0
  117. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +5 -0
  118. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +5 -0
  119. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +5 -0
  120. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +5 -0
  121. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +5 -0
  122. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +5 -0
  123. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +5 -0
  124. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +5 -0
  125. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +5 -0
  126. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +5 -0
  127. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +5 -0
  128. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +5 -0
  129. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +5 -0
  130. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +5 -0
  131. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +5 -0
  132. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +5 -0
  133. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +5 -0
  134. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +3 -3
  135. package/dist/src/extensions/Blocks/Recommendation/templates/migrationTemplate.d.ts +1 -1
  136. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +7 -15
  137. package/dist/src/extensions/Blocks/common-control.d.ts +9 -10
  138. package/dist/src/stores/config.d.ts +147 -1
  139. package/dist/static/styles/components/button.css.js +1 -1
  140. package/dist/static/styles/components/wide-panel.css.js +4 -0
  141. package/dist/static/styles/customEditorStyle.css.js +0 -13
  142. package/dist/stores/config.js +7 -0
  143. package/dist/utils/pairProductVariables.js +61 -58
  144. package/package.json +1 -1
  145. package/dist/extensions/Blocks/Items/utils/configBlockUtils.js +0 -17
  146. package/dist/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.js +0 -28
  147. package/dist/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.js +0 -76
  148. package/dist/extensions/Blocks/Items/utils/updateAttributes.js +0 -46
  149. package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +0 -68
  150. package/dist/extensions/Blocks/Recommendation/controls/index.js +0 -272
  151. package/dist/extensions/Blocks/Recommendation/controls/nameTextTrimControl.js +0 -74
  152. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.js +0 -71
  153. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.js +0 -71
  154. package/dist/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.js +0 -71
  155. package/dist/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.js +0 -71
  156. package/dist/extensions/Blocks/Recommendation/controls/priceHideControl.js +0 -60
  157. package/dist/extensions/Blocks/Recommendation/controls/priceInlineLayoutControl.js +0 -160
  158. package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +0 -188
  159. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +0 -25
  160. package/dist/src/extensions/Blocks/Items/utils/configBlockUtils.d.ts +0 -23
  161. package/dist/src/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.d.ts +0 -32
  162. package/dist/src/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.d.ts +0 -50
  163. package/dist/src/extensions/Blocks/Items/utils/updateAttributes.d.ts +0 -8
  164. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.d.ts +0 -25
  165. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +0 -654
  166. package/dist/src/extensions/Blocks/Recommendation/controls/nameTextTrimControl.d.ts +0 -16
  167. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.d.ts +0 -15
  168. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.d.ts +0 -15
  169. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.d.ts +0 -15
  170. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.d.ts +0 -15
  171. package/dist/src/extensions/Blocks/Recommendation/controls/priceHideControl.d.ts +0 -16
  172. package/dist/src/extensions/Blocks/Recommendation/controls/priceInlineLayoutControl.d.ts +0 -50
  173. package/dist/src/extensions/Blocks/Recommendation/controls/spacingControl.d.ts +0 -60
  174. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +0 -19
@@ -0,0 +1,184 @@
1
+ import { ModificationDescription as b } from "../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
+ import { DefaultConfigValues as r, SETTINGS_ENUMS as n, ItemInCartOptions as g } from "../enums/settingsEnums.js";
3
+ function d() {
4
+ return String(Date.now() + Math.floor(Math.random() * 1e3));
5
+ }
6
+ function f() {
7
+ return {
8
+ initialized: !0,
9
+ blockInstanceId: d(),
10
+ source: n.ITEMS_TYPE.CART_ITEMS,
11
+ type: n.ITEMS_TYPE.CART_ITEMS,
12
+ itemsSelectValue: r.cartItemsSelectControlValue,
13
+ orientation: n.ORIENTATION.VERTICAL,
14
+ nameTrimming: r.productNameTrimmingControlValue === "1",
15
+ nameControlEnabled: r.productNameControlEnabled === "1",
16
+ priceHideDiscount: r.productPriceHideDiscountControlValue === "1",
17
+ priceFormatted: r.productPriceFormattedControlValue === "1",
18
+ priceSinglePrice: !1,
19
+ priceCurrencySymbol: r.productPriceCurrencySymbolControlValue,
20
+ priceCurrencyLocation: r.productPriceCurrencyLocationControlValue,
21
+ priceControlOpened: r.productPriceControlOpened === "1",
22
+ priceOrientation: "horizontal",
23
+ quantityControlEnabled: r.productQuantityControlEnabled === "1",
24
+ buttonLink: r.productButtonLinkControlValue,
25
+ imageLink: r.productImageLinkControlValue,
26
+ buttonLabel: "Buy",
27
+ buttonFullWidth: !0,
28
+ // Default to full width (es-fw class)
29
+ imageVisible: r.productImageVisible === "1",
30
+ nameVisible: r.productNameVisible === "1",
31
+ quantityVisible: r.productQuantityVisible === "1",
32
+ priceVisible: r.productPriceVisible === "1",
33
+ originalPriceVisible: r.productOriginalPriceVisible === "1",
34
+ buttonVisible: r.productButtonVisible === "1"
35
+ };
36
+ }
37
+ function p(o) {
38
+ if (!o)
39
+ return null;
40
+ const t = o.closest(".items-block-v2");
41
+ return t || o.closest(".esd-cart-items-block");
42
+ }
43
+ function m(o) {
44
+ return o ? {
45
+ CartItems: n.ITEMS_TYPE.CART_ITEMS,
46
+ BrowsedItems: n.ITEMS_TYPE.BROWSED_ITEMS,
47
+ PurchasedItems: n.ITEMS_TYPE.PURCHASED_ITEMS,
48
+ // Also handle already correct formats
49
+ CART_ITEMS: n.ITEMS_TYPE.CART_ITEMS,
50
+ BROWSED_ITEMS: n.ITEMS_TYPE.BROWSED_ITEMS,
51
+ PURCHASED_ITEMS: n.ITEMS_TYPE.PURCHASED_ITEMS
52
+ }[o] || n.ITEMS_TYPE.CART_ITEMS : n.ITEMS_TYPE.CART_ITEMS;
53
+ }
54
+ function C(o, t) {
55
+ if (!o)
56
+ return r.cartItemsSelectControlValue;
57
+ if (o.includes("{{"))
58
+ return o;
59
+ if (/^\d+$/.test(o)) {
60
+ const e = parseInt(o) - 1, i = g[t];
61
+ if (i && i[e])
62
+ return i[e].value;
63
+ }
64
+ return r.cartItemsSelectControlValue;
65
+ }
66
+ function I(o) {
67
+ const t = o.querySelector("esd-config-block");
68
+ if (!t)
69
+ return null;
70
+ const e = (c, a) => c == null ? a : c === "1" || c === "true", i = (c, a) => c || a, l = t.getAttribute("data-type"), u = m(l), s = t.getAttribute("data-cart_items_select_control_value"), _ = C(s, u);
71
+ return {
72
+ initialized: e(t.getAttribute("data-initialized"), !1),
73
+ blockInstanceId: i(
74
+ t.getAttribute("data-block-instance-id"),
75
+ d()
76
+ ),
77
+ source: u,
78
+ type: u,
79
+ itemsSelectValue: _,
80
+ orientation: t.getAttribute("data-card_orientation_control_value") || n.ORIENTATION.VERTICAL,
81
+ nameTrimming: e(
82
+ t.getAttribute("data-product_name_control_trim"),
83
+ !0
84
+ ),
85
+ nameControlEnabled: e(
86
+ t.getAttribute("data-product_name_control_enabled"),
87
+ !0
88
+ ),
89
+ priceHideDiscount: e(
90
+ t.getAttribute("data-product_price_control_nodup"),
91
+ !0
92
+ ),
93
+ priceFormatted: e(
94
+ t.getAttribute("data-product_price_control_formated"),
95
+ !0
96
+ ),
97
+ priceSinglePrice: e(
98
+ t.getAttribute("data-product_price_control_single_price"),
99
+ !1
100
+ ),
101
+ priceCurrencySymbol: i(
102
+ t.getAttribute("data-product_price_currency_symbol"),
103
+ r.productPriceCurrencySymbolControlValue
104
+ ),
105
+ priceCurrencyLocation: i(
106
+ t.getAttribute("data-product_price_currency_location"),
107
+ r.productPriceCurrencyLocationControlValue
108
+ ),
109
+ priceControlOpened: e(
110
+ t.getAttribute("data-product_price_control_opened"),
111
+ !0
112
+ ),
113
+ priceOrientation: t.getAttribute("data-product_original_price_control_orientation") || "horizontal",
114
+ quantityControlEnabled: e(
115
+ t.getAttribute("data-product_quantity_control_enabled"),
116
+ !0
117
+ ),
118
+ buttonLink: i(
119
+ t.getAttribute("data-product_button_link"),
120
+ r.productButtonLinkControlValue
121
+ ),
122
+ imageLink: i(
123
+ t.getAttribute("data-product_image_link"),
124
+ r.productImageLinkControlValue
125
+ ),
126
+ buttonLabel: i(
127
+ t.getAttribute("data-product_button_control_label"),
128
+ "Buy"
129
+ ),
130
+ buttonFullWidth: e(
131
+ t.getAttribute("data-product_button_control_atw"),
132
+ !0
133
+ // Default to full width
134
+ ),
135
+ imageVisible: e(
136
+ t.getAttribute("data-product_image_control_enabled"),
137
+ !0
138
+ ),
139
+ nameVisible: e(
140
+ t.getAttribute("data-product_name_control_enabled"),
141
+ !0
142
+ ),
143
+ quantityVisible: e(
144
+ t.getAttribute("data-product_quantity_visible"),
145
+ !0
146
+ ),
147
+ priceVisible: e(
148
+ t.getAttribute("data-product_price_visible"),
149
+ !0
150
+ ),
151
+ originalPriceVisible: e(
152
+ t.getAttribute("data-product_original_price_control_enabled"),
153
+ !0
154
+ ),
155
+ buttonVisible: e(
156
+ t.getAttribute("data-product_button_visible"),
157
+ !0
158
+ )
159
+ };
160
+ }
161
+ function S(o) {
162
+ const t = p(o);
163
+ if (!t)
164
+ return null;
165
+ const e = t.getNodeConfig();
166
+ if (e && e.initialized)
167
+ return e;
168
+ const i = I(t);
169
+ return i || null;
170
+ }
171
+ function A(o, t, e) {
172
+ const i = p(o);
173
+ if (!i)
174
+ return;
175
+ const u = { ...i.getNodeConfig() || {}, ...e };
176
+ t.getDocumentModifier().modifyHtml(i).setNodeConfig(u).apply(new b("Update Items block configuration"));
177
+ }
178
+ export {
179
+ d as generateBlockInstanceId,
180
+ f as getDefaultItemsBlockConfig,
181
+ S as getItemsBlockConfig,
182
+ p as getItemsBlockContainer,
183
+ A as setItemsBlockConfig
184
+ };
@@ -1,193 +1,103 @@
1
- import { ModificationDescription as n } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
1
+ var m = Object.defineProperty;
2
+ var y = (n, o, i) => o in n ? m(n, o, { enumerable: !0, configurable: !0, writable: !0, value: i }) : n[o] = i;
3
+ var a = (n, o, i) => y(n, typeof o != "symbol" ? o + "" : o, i);
4
+ import { ModificationDescription as u } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
5
  import { CommonControl as b } 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 }
6
+ const h = "ui-elements-recommendation-card-composition", s = [
7
+ { key: "productImage", label: "Product Image", visible: !0 },
8
+ { key: "productName", label: "Product Name", visible: !0 },
9
+ { key: "productPrice", label: "Product Price", visible: !0 },
10
+ { key: "productOriginalPrice", label: "Product Original Price", visible: !0 },
11
+ { key: "productButton", label: "Product Button", visible: !0 }
12
12
  ];
13
- class N extends b {
13
+ class g extends b {
14
+ constructor() {
15
+ super(...arguments);
16
+ a(this, "currentComposition", []);
17
+ a(this, "currentVisibility", {});
18
+ }
14
19
  getId() {
15
- return R;
20
+ return h;
16
21
  }
17
22
  getTemplate() {
18
- const t = s.map((i) => ({
19
- key: i.key,
20
- label: i.label,
21
- content: this._createItemContent(i.label, i.key)
23
+ const i = s.map((e) => ({
24
+ key: e.key,
25
+ label: e.label,
26
+ content: `
27
+ <div style="display: flex; align-items: center; justify-content: space-between;
28
+ padding: 8px; gap: 8px;">
29
+ <span style="flex: 1;">${e.label}</span>
30
+ ${this._GuToggle(`visibility_${e.key}`)}
31
+ </div>
32
+ `
22
33
  }));
23
34
  return `
24
35
  <div class="container">
25
36
  ${this._GuLabel({ text: "Card Element Order & Visibility" })}
26
- ${this._GuOrderable("cardComposition", t)}
37
+ ${this._GuOrderable("cardComposition", i)}
27
38
  </div>
28
39
  `;
29
40
  }
30
41
  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);
42
+ this._initializeComposition(), this.api.onValueChanged("cardComposition", (i) => {
43
+ this.currentComposition = i, this._applyCompositionToBlock(i);
44
+ }), s.forEach((i) => {
45
+ this.api.onValueChanged(`visibility_${i.key}`, (e) => {
46
+ this.currentVisibility[i.key] = e, this._applyVisibilityToBlock();
57
47
  });
58
48
  });
59
49
  }
50
+ onTemplateNodeUpdated(i) {
51
+ super.onTemplateNodeUpdated(i), this._initializeComposition();
52
+ }
60
53
  /**
61
- * Initializes composition order and visibility state from the current node
54
+ * Initialize the composition order and visibility from the block or use defaults
62
55
  */
63
56
  _initializeComposition() {
64
- const t = this._readCompositionFromNode(), i = this._readVisibilityFromRows(), e = {
65
- cardComposition: t,
66
- ...this._buildVisibilityValues(i)
57
+ var p;
58
+ const i = (p = this.currentNode) == null ? void 0 : p.querySelector(".ins-recommendation-v3-block-v2");
59
+ let e = null, l = null;
60
+ if (i && "getAttribute" in i && (e = i.getAttribute("data-card-composition"), l = i.getAttribute("data-card-visibility")), e) {
61
+ const t = e.split(",").filter(Boolean), r = s.map((c) => c.key);
62
+ t.every((c) => r.includes(c)) && t.length > 0 ? this.currentComposition = t : this.currentComposition = r;
63
+ } else
64
+ this.currentComposition = s.map((t) => t.key);
65
+ if (l)
66
+ try {
67
+ const t = JSON.parse(l);
68
+ this.currentVisibility = t;
69
+ } catch {
70
+ this.currentVisibility = s.reduce((t, r) => (t[r.key] = r.visible, t), {});
71
+ }
72
+ else
73
+ this.currentVisibility = s.reduce((t, r) => (t[r.key] = r.visible, t), {});
74
+ const d = {
75
+ cardComposition: this.currentComposition
67
76
  };
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 this._getDefaultComposition();
77
- const t = this.currentNode.getAttribute(c);
78
- return t ? t.split(",").filter(Boolean) : this._getDefaultComposition();
79
- }
80
- /**
81
- * Gets default composition order
82
- */
83
- _getDefaultComposition() {
84
- return s.map((t) => t.key);
85
- }
86
- /**
87
- * Builds visibility values object from the visibility map
88
- */
89
- _buildVisibilityValues(t) {
90
- return s.reduce((i, e) => (i[`visibility_${e.key}`] = t[e.key] ?? !0, i), {});
91
- }
92
- /**
93
- * Read visibility state from individual row elements' data-visibility attributes
94
- * This ensures toggles reflect the actual DOM state
95
- */
96
- _readVisibilityFromRows() {
97
- if (!this.currentNode)
98
- return this._getDefaultVisibilities();
99
- const t = Array.from(this.currentNode.querySelectorAll(l));
100
- console.debug("_readVisibilityFromRows - found attribute rows:", t.length);
101
- const i = this._extractVisibilityFromRows(t);
102
- return this._mergeWithDefaults(i);
103
- }
104
- /**
105
- * Returns default visibility values for all items
106
- */
107
- _getDefaultVisibilities() {
108
- return s.reduce((t, i) => (t[i.key] = i.visible, t), {});
109
- }
110
- /**
111
- * Extracts visibility values from DOM nodes
112
- */
113
- _extractVisibilityFromRows(t) {
114
- const i = {};
115
- return t.forEach((e) => {
116
- if (!("getAttribute" in e))
117
- return;
118
- const o = e.getAttribute(a), r = e.getAttribute(d);
119
- o && r !== null && (i[o] = this._parseVisibilityValue(r), console.debug(
120
- `_readVisibilityFromRows - ${o}: ${i[o]} (raw: ${r})`
121
- ));
122
- }), i;
123
- }
124
- /**
125
- * Parses visibility value from string to boolean
126
- * Accepts "1", "true" as true, everything else as false
127
- */
128
- _parseVisibilityValue(t) {
129
- return t === "1" || t === "true";
130
- }
131
- /**
132
- * Merges extracted visibilities with default values for missing keys
133
- */
134
- _mergeWithDefaults(t) {
135
- return s.forEach((i) => {
136
- i.key in t || (t[i.key] = i.visible, console.debug(`_readVisibilityFromRows - ${i.key}: using default ${i.visible}`));
137
- }), t;
77
+ s.forEach((t) => {
78
+ d[`visibility_${t.key}`] = this.currentVisibility[t.key] ?? !0;
79
+ }), this.api.updateValues(d);
138
80
  }
139
81
  /**
140
82
  * Apply the reordered composition to the block's HTML structure
141
- * Updates the data-card-composition attribute and reorders product attributes
142
- */
143
- _applyCompositionToBlock(t) {
144
- if (console.debug("_applyCompositionToBlock - composition:", t), !this.currentNode) {
145
- console.debug("_applyCompositionToBlock - no current node");
146
- return;
147
- }
148
- this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute(c, t.join(",")).apply(new n("Update card composition")), this._reorderProductAttributes(t);
149
- }
150
- /**
151
- * Reorders attribute rows within each product row based on composition order
152
83
  */
153
- _reorderProductAttributes(t) {
84
+ _applyCompositionToBlock(i) {
154
85
  if (!this.currentNode)
155
86
  return;
156
- const i = this.currentNode.querySelectorAll(A);
157
- if (!(i != null && i.length))
158
- return;
159
- const e = this.api.getDocumentModifier();
160
- i.forEach((o) => {
161
- const r = this._buildCompositionHtml(o, t);
162
- e.modifyHtml(o).setInnerHtml(r);
163
- }), e.apply(new n("Reorder product attributes"));
164
- }
165
- /**
166
- * Builds HTML string with attributes ordered according to composition
167
- */
168
- _buildCompositionHtml(t, i) {
169
- return i.reduce((e, o) => {
170
- const r = t.querySelector(`${l}[${a}="${o}"]`);
171
- return r && "getOuterHTML" in r ? e + r.getOuterHTML() : e;
172
- }, "");
87
+ const e = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
88
+ e && this.api.getDocumentModifier().modifyHtml(e).setAttribute("data-card-composition", i.join(",")).apply(new u("Stored card composition order"));
173
89
  }
174
90
  /**
175
91
  * Apply visibility changes to the block's HTML structure
176
- * Updates display style and data-visibility attribute for all matching rows
177
92
  */
178
- _applyVisibilityToBlock(t, i) {
179
- if (console.debug("_applyVisibilityToBlock", t, i), !this.currentNode)
180
- return;
181
- const e = this.currentNode.querySelectorAll(`${l}[${a}="${t}"]`);
182
- if (!(e != null && e.length))
93
+ _applyVisibilityToBlock() {
94
+ if (!this.currentNode)
183
95
  return;
184
- const o = i ? "table-row" : "none", r = i ? "1" : "0", p = `Set ${t} visibility to ${i ? "visible" : "hidden"}`, u = this.api.getDocumentModifier();
185
- e.forEach((_) => {
186
- u.modifyHtml(_).setStyle("display", o).setAttribute(d, r);
187
- }), u.apply(new n(p));
96
+ const i = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
97
+ i && this.api.getDocumentModifier().modifyHtml(i).setAttribute("data-card-visibility", JSON.stringify(this.currentVisibility)).apply(new u("Stored card visibility settings"));
188
98
  }
189
99
  }
190
100
  export {
191
- R as COMPOSITION_CONTROL_BLOCK_ID,
192
- N as RecommendationCardCompositionControl
101
+ h as COMPOSITION_CONTROL_BLOCK_ID,
102
+ g as RecommendationCardCompositionControl
193
103
  };
@@ -1,14 +1,5 @@
1
- const _ = "productImage", i = "productName", n = "productPrice", b = "productOldPrice", l = "productOmnibusPrice", N = "productOmnibusDiscount", O = "productButton", T = "data-price-inline";
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_LINE_SPACING = "recommendation-block-name-line-spacing-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_HIDE_IF_SAME = "recommendation-block-price-hide-if-same-control", c.PRICE_LINE_SPACING = "recommendation-block-price-line-spacing-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_LINE_SPACING = "recommendation-block-old-price-line-spacing-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_LINE_SPACING = "recommendation-block-omnibus-price-line-spacing-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_LINE_SPACING = "recommendation-block-omnibus-discount-line-spacing-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.PRICE_INLINE_LAYOUT = "recommendation-block-price-inline-layout-control", c))(r || {});
1
+ 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.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.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.IMAGE_SIZE = "recommendation-block-image-size-control", c.IMAGE_MARGINS = "recommendation-block-image-margins-control", c))(r || {});
3
2
  export {
4
- T as ATTR_DATA_PRICE_INLINE,
5
- O as ATTR_PRODUCT_BUTTON,
6
- _ as ATTR_PRODUCT_IMAGE,
7
- i as ATTR_PRODUCT_NAME,
8
- b as ATTR_PRODUCT_OLD_PRICE,
9
- N as ATTR_PRODUCT_OMNIBUS_DISCOUNT,
10
- l as ATTR_PRODUCT_OMNIBUS_PRICE,
11
- n as ATTR_PRODUCT_PRICE,
12
3
  o as RecommendationBlockId,
13
4
  r as RecommendationControlId
14
5
  };