@useinsider/guido 2.0.0-beta.087a24f → 2.0.0-beta.0ebba08
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.
- package/README.md +2 -0
- package/dist/@types/config/schemas.js +55 -39
- package/dist/components/Guido.vue.js +1 -1
- package/dist/components/Guido.vue2.js +15 -17
- package/dist/components/organisms/email-preview/amp/AmpToggle.vue.js +2 -2
- package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue.js +2 -2
- package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue.js +5 -5
- package/dist/components/organisms/header/RightSlot.vue2.js +10 -10
- package/dist/composables/useConfig.js +29 -27
- package/dist/composables/useSave.js +13 -11
- package/dist/composables/useStripo.js +42 -40
- package/dist/config/migrator/index.js +8 -9
- package/dist/extensions/Blocks/CouponBlock/constants.js +4 -0
- package/dist/extensions/Blocks/CouponBlock/controls/index.js +29 -0
- package/dist/extensions/Blocks/CouponBlock/extension.js +5 -4
- package/dist/extensions/Blocks/CouponBlock/settingsPanel.js +20 -14
- package/dist/extensions/Blocks/CouponBlock/template.js +22 -11
- package/dist/extensions/Blocks/Items/block.js +40 -39
- package/dist/extensions/Blocks/Items/controls/cardComposition.js +49 -46
- package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +26 -28
- package/dist/extensions/Blocks/Items/controls/settingsControl.js +127 -132
- package/dist/extensions/Blocks/Items/enums/settingsEnums.js +2 -2
- package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +48 -58
- package/dist/extensions/Blocks/Items/layouts/vertical.html.js +58 -48
- package/dist/extensions/Blocks/Items/store/items-block.js +2 -2
- package/dist/extensions/Blocks/Items/template.js +123 -296
- package/dist/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.js +20 -11
- package/dist/extensions/Blocks/Recommendation/control.js +1 -1
- package/dist/extensions/Blocks/Unsubscribe/extension.js +9 -9
- package/dist/extensions/Blocks/common-control.js +55 -67
- package/dist/extensions/Blocks/controlFactories.js +122 -111
- package/dist/guido.css +1 -1
- package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +290 -364
- package/dist/package.json.js +7 -0
- package/dist/services/stripoApi.js +6 -10
- package/dist/src/@types/config/index.d.ts +2 -2
- package/dist/src/@types/config/schemas.d.ts +30 -0
- package/dist/src/@types/config/types.d.ts +7 -1
- package/dist/src/composables/useConfig.d.ts +8 -0
- package/dist/src/extensions/Blocks/CouponBlock/constants.d.ts +14 -0
- package/dist/src/extensions/Blocks/CouponBlock/controls/index.d.ts +108 -0
- package/dist/src/extensions/Blocks/CouponBlock/template.d.ts +1 -1
- package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +1 -1
- package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +4 -0
- package/dist/src/extensions/Blocks/Items/template.d.ts +1 -20
- package/dist/src/extensions/Blocks/common-control.d.ts +9 -14
- package/dist/src/extensions/Blocks/controlFactories.d.ts +30 -7
- package/dist/src/stores/config.d.ts +164 -1
- package/dist/static/styles/components/button.css.js +1 -1
- package/dist/stores/config.js +7 -0
- package/package.json +3 -3
- package/dist/config/migrator/itemsBlockMigrator.js +0 -283
- package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +0 -172
- package/dist/src/config/migrator/itemsBlockMigrator.d.ts +0 -6
- package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +0 -71
|
@@ -1,283 +0,0 @@
|
|
|
1
|
-
var B = Object.defineProperty;
|
|
2
|
-
var q = (o, t, r) => t in o ? B(o, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : o[t] = r;
|
|
3
|
-
var A = (o, t, r) => q(o, typeof t != "symbol" ? t + "" : t, r);
|
|
4
|
-
import { productPairs as L } from "../../extensions/Blocks/Items/enums/productEnums.js";
|
|
5
|
-
import { ItemInCartOptions as I, DefaultConfigValues as m, SETTINGS_ENUMS as l } from "../../extensions/Blocks/Items/enums/settingsEnums.js";
|
|
6
|
-
import { getDefaultTemplate as K } from "../../extensions/Blocks/Items/template.js";
|
|
7
|
-
const V = {
|
|
8
|
-
ins_apr_img: {
|
|
9
|
-
pairsKey: "imageSrc",
|
|
10
|
-
defaultKey: "DEFAULT",
|
|
11
|
-
isArray: !0
|
|
12
|
-
},
|
|
13
|
-
ins_apr_name: {
|
|
14
|
-
pairsKey: "name",
|
|
15
|
-
defaultKey: "DEFAULT",
|
|
16
|
-
isArray: !0
|
|
17
|
-
},
|
|
18
|
-
ins_apr_url: {
|
|
19
|
-
pairsKey: "button",
|
|
20
|
-
defaultKey: "DEFAULT_HREF",
|
|
21
|
-
isArray: !1
|
|
22
|
-
},
|
|
23
|
-
ins_apr_formattedprice: {
|
|
24
|
-
pairsKey: "price",
|
|
25
|
-
defaultKey: "DEFAULT_PRICE_FORMATTED",
|
|
26
|
-
isArray: !1
|
|
27
|
-
},
|
|
28
|
-
ins_apr_productcurrency: {
|
|
29
|
-
pairsKey: "price",
|
|
30
|
-
defaultKey: "DEFAULT_CURRENCY",
|
|
31
|
-
isArray: !1
|
|
32
|
-
},
|
|
33
|
-
ins_apr_quantity: {
|
|
34
|
-
pairsKey: "quantity",
|
|
35
|
-
defaultKey: "DEFAULT",
|
|
36
|
-
isArray: !1
|
|
37
|
-
},
|
|
38
|
-
ins_apr_price: {
|
|
39
|
-
pairsKey: "price",
|
|
40
|
-
defaultKey: "DEFAULT_PRICE",
|
|
41
|
-
isArray: !1
|
|
42
|
-
},
|
|
43
|
-
ins_apr_originalprice: {
|
|
44
|
-
pairsKey: "originalPrice",
|
|
45
|
-
defaultKey: "DEFAULT_PRICE",
|
|
46
|
-
isArray: !1
|
|
47
|
-
},
|
|
48
|
-
ins_apr_originalformattedprice: {
|
|
49
|
-
pairsKey: "originalPrice",
|
|
50
|
-
defaultKey: "DEFAULT_PRICE_FORMATTED",
|
|
51
|
-
isArray: !1
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
function U() {
|
|
55
|
-
return String(Date.now() + Math.floor(Math.random() * 1e3));
|
|
56
|
-
}
|
|
57
|
-
function F(o) {
|
|
58
|
-
return o ? {
|
|
59
|
-
CartItems: l.ITEMS_TYPE.CART_ITEMS,
|
|
60
|
-
BrowsedItems: l.ITEMS_TYPE.BROWSED_ITEMS,
|
|
61
|
-
PurchasedItems: l.ITEMS_TYPE.PURCHASED_ITEMS,
|
|
62
|
-
CART_ITEMS: l.ITEMS_TYPE.CART_ITEMS,
|
|
63
|
-
BROWSED_ITEMS: l.ITEMS_TYPE.BROWSED_ITEMS,
|
|
64
|
-
PURCHASED_ITEMS: l.ITEMS_TYPE.PURCHASED_ITEMS
|
|
65
|
-
}[o] || l.ITEMS_TYPE.CART_ITEMS : l.ITEMS_TYPE.CART_ITEMS;
|
|
66
|
-
}
|
|
67
|
-
function D(o) {
|
|
68
|
-
const t = (e, a) => e == null ? a : e === "1" || e === "true", r = (e, a) => e || a, c = o["data-type"] || o["data-source"], n = F(c);
|
|
69
|
-
let i = o["data-cart_items_select_control_value"] || m.cartItemsSelectControlValue;
|
|
70
|
-
if (i && !i.includes("{{") && /^\d+$/.test(i)) {
|
|
71
|
-
const e = parseInt(i) - 1, a = I[n];
|
|
72
|
-
a && a[e] && (i = a[e].value);
|
|
73
|
-
}
|
|
74
|
-
return {
|
|
75
|
-
initialized: !0,
|
|
76
|
-
blockInstanceId: r(o["data-block-instance-id"], U()),
|
|
77
|
-
source: n,
|
|
78
|
-
type: n,
|
|
79
|
-
itemsSelectValue: i,
|
|
80
|
-
orientation: o["data-card_orientation_control_value"] || l.ORIENTATION.VERTICAL,
|
|
81
|
-
nameTrimming: t(o["data-product_name_trimming"], !0),
|
|
82
|
-
nameControlEnabled: t(o["data-product_name_control_enabled"], !0),
|
|
83
|
-
priceHideDiscount: t(o["data-product_price_hide_discount"], !1),
|
|
84
|
-
priceFormatted: t(o["data-product_price_formatted"], !0),
|
|
85
|
-
priceCurrencySymbol: r(
|
|
86
|
-
o["data-product_price_currency_symbol"],
|
|
87
|
-
m.productPriceCurrencySymbolControlValue
|
|
88
|
-
),
|
|
89
|
-
priceCurrencyLocation: r(
|
|
90
|
-
o["data-product_price_currency_location"],
|
|
91
|
-
m.productPriceCurrencyLocationControlValue
|
|
92
|
-
),
|
|
93
|
-
priceControlOpened: t(o["data-product_price_control_opened"], !0),
|
|
94
|
-
priceOrientation: o["data-product_original_price_control_orientation"] || "horizontal",
|
|
95
|
-
quantityControlEnabled: t(o["data-product_quantity_control_enabled"], !0),
|
|
96
|
-
buttonLink: r(o["data-product_button_link"], m.productButtonLinkControlValue),
|
|
97
|
-
imageLink: r(o["data-product_image_link"], m.productImageLinkControlValue),
|
|
98
|
-
buttonLabel: r(o["data-product_button_control_label"], "Buy"),
|
|
99
|
-
imageVisible: t(o["data-product_image_visible"], !0),
|
|
100
|
-
nameVisible: t(o["data-product_name_visible"], !0),
|
|
101
|
-
quantityVisible: t(o["data-product_quantity_visible"], !0),
|
|
102
|
-
priceVisible: t(o["data-product_price_visible"], !0),
|
|
103
|
-
originalPriceVisible: t(o["data-product_original_price_control_enabled"], !0),
|
|
104
|
-
buttonVisible: t(o["data-product_button_visible"], !0)
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
class w {
|
|
108
|
-
constructor() {
|
|
109
|
-
A(this, "parser");
|
|
110
|
-
A(this, "DATA_TYPE", "CART_ITEMS");
|
|
111
|
-
this.parser = new DOMParser();
|
|
112
|
-
}
|
|
113
|
-
migrate(t) {
|
|
114
|
-
try {
|
|
115
|
-
let r = this.removeJinjaConditionals(t);
|
|
116
|
-
r = this.replaceTemplateVariables(r);
|
|
117
|
-
const c = this.parser.parseFromString(r, "text/html"), n = c.querySelectorAll("td.esd-cart-items-block");
|
|
118
|
-
return n.length === 0 ? (console.warn('ItemsBlockMigrator: No blocks found with selector "td.esd-cart-items-block"'), r) : (n.forEach((i) => {
|
|
119
|
-
const e = this.extractConfiguration(i), a = K({
|
|
120
|
-
orientation: e.orientation,
|
|
121
|
-
itemsType: e.itemsType,
|
|
122
|
-
itemId: e.itemId,
|
|
123
|
-
currencySymbol: e.currencySymbol,
|
|
124
|
-
currencyLocation: e.currencyLocation,
|
|
125
|
-
formattedPrice: e.formattedPrice,
|
|
126
|
-
configBlockAttributes: e.configBlockAttributes,
|
|
127
|
-
migrate: !0,
|
|
128
|
-
nameStyles: e.nameStyles,
|
|
129
|
-
buttonStyles: e.buttonStyles,
|
|
130
|
-
priceStyles: e.priceStyles,
|
|
131
|
-
originalPriceStyles: e.originalPriceStyles,
|
|
132
|
-
quantityStyles: e.quantityStyles,
|
|
133
|
-
nodeConfig: D(e.configBlockAttributes)
|
|
134
|
-
}), u = this.parser.parseFromString(
|
|
135
|
-
`<table><tbody><tr>${a}</tr></tbody></table>`,
|
|
136
|
-
"text/html"
|
|
137
|
-
).querySelector("td");
|
|
138
|
-
if (u && i.parentNode) {
|
|
139
|
-
const s = D(e.configBlockAttributes);
|
|
140
|
-
u.setAttribute("esd-ext-config", JSON.stringify(s));
|
|
141
|
-
const p = u.querySelector("esd-config-block");
|
|
142
|
-
p && p.remove(), i.parentNode.replaceChild(u, i);
|
|
143
|
-
}
|
|
144
|
-
}), c.documentElement.outerHTML);
|
|
145
|
-
} catch (r) {
|
|
146
|
-
return console.error("ItemsBlockMigrator failed:", r), t;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Extracts configuration from legacy HTML block
|
|
151
|
-
* Parses data attributes and structure to determine:
|
|
152
|
-
* - orientation, itemsType, itemNumber, currency settings, esd-config-block attributes
|
|
153
|
-
* - UI styles from product elements (name, price, button, quantity, etc.)
|
|
154
|
-
*/
|
|
155
|
-
extractConfiguration(t) {
|
|
156
|
-
var E, C, P;
|
|
157
|
-
const r = ((E = t.querySelector("[data-type]")) == null ? void 0 : E.getAttribute("data-type")) || "CART_ITEMS", c = ((C = t.querySelector("[data-number]")) == null ? void 0 : C.getAttribute("data-number")) || "1", n = parseInt(c) - 1, i = I[r], e = ((P = i == null ? void 0 : i[n]) == null ? void 0 : P.value) || i[0].value, a = t.querySelector('[product-attr="price"]'), _ = (a == null ? void 0 : a.getAttribute("data-currency_symbol")) || void 0, s = ((a == null ? void 0 : a.getAttribute("data-curency")) || "before") === "after" ? "1" : "0", p = (a == null ? void 0 : a.getAttribute("data-formated")) !== "false", y = this.extractConfigBlockAttributes(t, r), f = y["data-product_original_price_control_orientation"] === "vertical" ? "vertical" : "horizontal", d = t.querySelector('a[product-attr="name"]'), v = (d == null ? void 0 : d.getAttribute("style")) || void 0, b = t.querySelector('a[product-attr="button"]'), M = (b == null ? void 0 : b.getAttribute("style")) || void 0, h = (a == null ? void 0 : a.getAttribute("style")) || void 0, S = t.querySelector('[product-attr="originalPrice"]'), R = (S == null ? void 0 : S.getAttribute("style")) || void 0, T = t.querySelector('[product-attr="quantity"]'), k = (T == null ? void 0 : T.getAttribute("style")) || void 0;
|
|
158
|
-
return {
|
|
159
|
-
orientation: f,
|
|
160
|
-
itemsType: r,
|
|
161
|
-
itemId: e,
|
|
162
|
-
currencySymbol: _,
|
|
163
|
-
currencyLocation: s,
|
|
164
|
-
formattedPrice: p,
|
|
165
|
-
configBlockAttributes: y,
|
|
166
|
-
nameStyles: v,
|
|
167
|
-
buttonStyles: M,
|
|
168
|
-
priceStyles: h,
|
|
169
|
-
originalPriceStyles: R,
|
|
170
|
-
quantityStyles: k
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Extracts all data-* attributes from the esd-config-block element
|
|
175
|
-
* Returns a key-value mapping of all configuration attributes
|
|
176
|
-
* @param block - The block element containing the esd-config-block
|
|
177
|
-
* @param itemsType - The type of items (CART_ITEMS, BROWSED_ITEMS, PURCHASED_ITEMS)
|
|
178
|
-
*/
|
|
179
|
-
extractConfigBlockAttributes(t, r) {
|
|
180
|
-
const c = t.querySelector("esd-config-block"), n = {};
|
|
181
|
-
if (!c)
|
|
182
|
-
return this.getDefaultConfigBlockAttributes();
|
|
183
|
-
if (Array.from(c.attributes).forEach((e) => {
|
|
184
|
-
e.name.startsWith("data-") && (n[e.name] = e.value);
|
|
185
|
-
}), n["data-cart_items_select_control_value"]) {
|
|
186
|
-
const e = n["data-cart_items_select_control_value"];
|
|
187
|
-
if (/^\d+$/.test(e)) {
|
|
188
|
-
const a = parseInt(e) - 1, _ = I[r];
|
|
189
|
-
_ && _[a] && (n["data-cart_items_select_control_value"] = _[a].value);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
if (n["data-product_price_control_curency"]) {
|
|
193
|
-
const e = n["data-product_price_control_curency"];
|
|
194
|
-
e === "before" ? n["data-product_price_control_curency"] = "0" : e === "after" && (n["data-product_price_control_curency"] = "1");
|
|
195
|
-
}
|
|
196
|
-
(!n["data-product_price_currency_symbol"] || n["data-product_price_currency_symbol"].trim() === "") && (n["data-product_price_currency_symbol"] = "USD");
|
|
197
|
-
const i = { ...this.getDefaultConfigBlockAttributes(), ...n };
|
|
198
|
-
return i["data-type"] = r, i["data-source"] = r, i;
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Returns default esd-config-block attributes based on the old template structure
|
|
202
|
-
* These serve as fallbacks when attributes are missing
|
|
203
|
-
*/
|
|
204
|
-
getDefaultConfigBlockAttributes() {
|
|
205
|
-
return {
|
|
206
|
-
"data-type": "CART_ITEMS",
|
|
207
|
-
"data-product_image_control_opened": "false",
|
|
208
|
-
"data-product_image_control_image-width": "250",
|
|
209
|
-
"data-product_image_control_image-height": "250",
|
|
210
|
-
"data-product_image_control_align_button": "true",
|
|
211
|
-
"data-product_image_control_padding_mobile": "true",
|
|
212
|
-
"data-product_name_control_opened": "false",
|
|
213
|
-
"data-product_quantity_control_opened": "true",
|
|
214
|
-
// DONE
|
|
215
|
-
"data-product_quantity_control_enabled": "false",
|
|
216
|
-
"data-product_name_control_font_font_size": "20",
|
|
217
|
-
"data-product_price_control_opened": "false",
|
|
218
|
-
"data-product_price_control_font_font_size": "20",
|
|
219
|
-
"data-product_price_control_color": "#060606",
|
|
220
|
-
"data-product_price_control_curency": "0",
|
|
221
|
-
"data-product_price_currency_symbol": "USD",
|
|
222
|
-
"data-product_original_price_control_opened": "false",
|
|
223
|
-
"data-product_original_price_control_font_font_size": "19",
|
|
224
|
-
"data-product_original_price_control_align_align_desktop": "center",
|
|
225
|
-
"data-product_original_price_control_orientation": "vertical",
|
|
226
|
-
"data-product_button_control_opened": "true",
|
|
227
|
-
"data-product_button_control_label": "Comprar",
|
|
228
|
-
// DONE
|
|
229
|
-
"data-product_button_control_font_font_size": "17",
|
|
230
|
-
"data-product_button_control_color": "#ffffff",
|
|
231
|
-
"data-product_button_control_background": "#010101",
|
|
232
|
-
"data-product_button_control_atw": "false",
|
|
233
|
-
"data-product_original_price_control_enabled": "false"
|
|
234
|
-
};
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Removes Jinja2 conditional statements from HTML
|
|
238
|
-
* - Removes {% if ins_apr_total_product_kind > N %}
|
|
239
|
-
* - Removes {% if ins_apr_price_N != ins_apr_originalprice_N %}
|
|
240
|
-
* - Removes {% endif %}
|
|
241
|
-
*/
|
|
242
|
-
removeJinjaConditionals(t) {
|
|
243
|
-
let r = t.replace(/\{%\s*if\s+ins_apr_total_product_kind\s*(>|>)\s*\d+\s*%\}/g, "");
|
|
244
|
-
return r = r.replace(/\{%\s*if\s+ins_apr_price_\d+\s*(!=|!=)\s*ins_apr_originalprice_\d+\s*%\}/g, ""), r = r.replace(/\{%\s*endif\s*%\}/g, ""), r = r.replace(/\n\s*\n\s*\n/g, `
|
|
245
|
-
|
|
246
|
-
`), r;
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Replaces template variables with default values from productPairs
|
|
250
|
-
*
|
|
251
|
-
* Examples:
|
|
252
|
-
* - {{ins_apr_img_1}} → https://s3.../ins_apr_img_1.jpeg (array-based, uses index 0)
|
|
253
|
-
* - {{ins_apr_name_2}} → 'Set of Sprite Yoga Straps' (array-based, uses index 1)
|
|
254
|
-
* - {{ins_apr_formattedprice_1}} → '1,100.00' (single value, ignores index)
|
|
255
|
-
* - {{ins_apr_url_3}} → '#!' (single value, ignores index)
|
|
256
|
-
*/
|
|
257
|
-
replaceTemplateVariables(t) {
|
|
258
|
-
const { PAIRS_FOR_EXTENSION: r } = L;
|
|
259
|
-
return t.replace(/{{([^}]+)}}/g, (c, n) => {
|
|
260
|
-
const i = n.match(/^(ins_apr_[a-z]+)_(\d+)$/);
|
|
261
|
-
if (!i)
|
|
262
|
-
return c;
|
|
263
|
-
const [, e, a] = i, _ = V[e];
|
|
264
|
-
if (!_)
|
|
265
|
-
return console.warn(`Unknown variable mapping for: ${e}`), c;
|
|
266
|
-
const { pairsKey: u, defaultKey: s, isArray: p } = _, y = r[u][this.DATA_TYPE];
|
|
267
|
-
if (!y)
|
|
268
|
-
return console.warn(`No data found for: ${u}.${this.DATA_TYPE}`), c;
|
|
269
|
-
if (p) {
|
|
270
|
-
const f = parseInt(a) - 1, d = y[s];
|
|
271
|
-
return Array.isArray(d) && d[f] ? d[f] : (console.warn(`Array value not found: ${u}.${this.DATA_TYPE}.${s}[${f}]`), c);
|
|
272
|
-
}
|
|
273
|
-
const g = y[s];
|
|
274
|
-
return g !== void 0 ? String(g) : (console.warn(`Default value not found: ${u}.${this.DATA_TYPE}.${s}`), c);
|
|
275
|
-
});
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
function $(o) {
|
|
279
|
-
return new w().migrate(o);
|
|
280
|
-
}
|
|
281
|
-
export {
|
|
282
|
-
$ as migrateItemsBlock
|
|
283
|
-
};
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { ModificationDescription as _ } from "../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
2
|
-
import { DefaultConfigValues as e, 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: e.cartItemsSelectControlValue,
|
|
13
|
-
orientation: n.ORIENTATION.VERTICAL,
|
|
14
|
-
nameTrimming: e.productNameTrimmingControlValue === "1",
|
|
15
|
-
nameControlEnabled: e.productNameControlEnabled === "1",
|
|
16
|
-
priceHideDiscount: e.productPriceHideDiscountControlValue === "1",
|
|
17
|
-
priceFormatted: e.productPriceFormattedControlValue === "1",
|
|
18
|
-
priceCurrencySymbol: e.productPriceCurrencySymbolControlValue,
|
|
19
|
-
priceCurrencyLocation: e.productPriceCurrencyLocationControlValue,
|
|
20
|
-
priceControlOpened: e.productPriceControlOpened === "1",
|
|
21
|
-
priceOrientation: "horizontal",
|
|
22
|
-
quantityControlEnabled: e.productQuantityControlEnabled === "1",
|
|
23
|
-
buttonLink: e.productButtonLinkControlValue,
|
|
24
|
-
imageLink: e.productImageLinkControlValue,
|
|
25
|
-
buttonLabel: "Buy",
|
|
26
|
-
imageVisible: e.productImageVisible === "1",
|
|
27
|
-
nameVisible: e.productNameVisible === "1",
|
|
28
|
-
quantityVisible: e.productQuantityVisible === "1",
|
|
29
|
-
priceVisible: e.productPriceVisible === "1",
|
|
30
|
-
originalPriceVisible: e.productOriginalPriceVisible === "1",
|
|
31
|
-
buttonVisible: e.productButtonVisible === "1"
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
function s(r) {
|
|
35
|
-
if (!r)
|
|
36
|
-
return null;
|
|
37
|
-
const t = r.closest(".items-block-v2");
|
|
38
|
-
return t || r.closest(".esd-cart-items-block");
|
|
39
|
-
}
|
|
40
|
-
function m(r) {
|
|
41
|
-
return r ? {
|
|
42
|
-
CartItems: n.ITEMS_TYPE.CART_ITEMS,
|
|
43
|
-
BrowsedItems: n.ITEMS_TYPE.BROWSED_ITEMS,
|
|
44
|
-
PurchasedItems: n.ITEMS_TYPE.PURCHASED_ITEMS,
|
|
45
|
-
// Also handle already correct formats
|
|
46
|
-
CART_ITEMS: n.ITEMS_TYPE.CART_ITEMS,
|
|
47
|
-
BROWSED_ITEMS: n.ITEMS_TYPE.BROWSED_ITEMS,
|
|
48
|
-
PURCHASED_ITEMS: n.ITEMS_TYPE.PURCHASED_ITEMS
|
|
49
|
-
}[r] || n.ITEMS_TYPE.CART_ITEMS : n.ITEMS_TYPE.CART_ITEMS;
|
|
50
|
-
}
|
|
51
|
-
function C(r, t) {
|
|
52
|
-
if (!r)
|
|
53
|
-
return e.cartItemsSelectControlValue;
|
|
54
|
-
if (r.includes("{{"))
|
|
55
|
-
return r;
|
|
56
|
-
if (/^\d+$/.test(r)) {
|
|
57
|
-
const i = parseInt(r) - 1, o = g[t];
|
|
58
|
-
if (o && o[i])
|
|
59
|
-
return o[i].value;
|
|
60
|
-
}
|
|
61
|
-
return e.cartItemsSelectControlValue;
|
|
62
|
-
}
|
|
63
|
-
function I(r) {
|
|
64
|
-
const t = r.querySelector("esd-config-block");
|
|
65
|
-
if (!t)
|
|
66
|
-
return null;
|
|
67
|
-
const i = (c, a) => c == null ? a : c === "1" || c === "true", o = (c, a) => c || a, l = t.getAttribute("data-type"), u = m(l), p = t.getAttribute("data-cart_items_select_control_value"), b = C(p, u);
|
|
68
|
-
return {
|
|
69
|
-
initialized: i(t.getAttribute("data-initialized"), !1),
|
|
70
|
-
blockInstanceId: o(
|
|
71
|
-
t.getAttribute("data-block-instance-id"),
|
|
72
|
-
d()
|
|
73
|
-
),
|
|
74
|
-
source: u,
|
|
75
|
-
type: u,
|
|
76
|
-
itemsSelectValue: b,
|
|
77
|
-
orientation: t.getAttribute("data-card_orientation_control_value") || n.ORIENTATION.VERTICAL,
|
|
78
|
-
nameTrimming: i(
|
|
79
|
-
t.getAttribute("data-product_name_trimming"),
|
|
80
|
-
!0
|
|
81
|
-
),
|
|
82
|
-
nameControlEnabled: i(
|
|
83
|
-
t.getAttribute("data-product_name_control_enabled"),
|
|
84
|
-
!0
|
|
85
|
-
),
|
|
86
|
-
priceHideDiscount: i(
|
|
87
|
-
t.getAttribute("data-product_price_hide_discount"),
|
|
88
|
-
!0
|
|
89
|
-
),
|
|
90
|
-
priceFormatted: i(
|
|
91
|
-
t.getAttribute("data-product_price_formatted"),
|
|
92
|
-
!0
|
|
93
|
-
),
|
|
94
|
-
priceCurrencySymbol: o(
|
|
95
|
-
t.getAttribute("data-product_price_currency_symbol"),
|
|
96
|
-
e.productPriceCurrencySymbolControlValue
|
|
97
|
-
),
|
|
98
|
-
priceCurrencyLocation: o(
|
|
99
|
-
t.getAttribute("data-product_price_currency_location"),
|
|
100
|
-
e.productPriceCurrencyLocationControlValue
|
|
101
|
-
),
|
|
102
|
-
priceControlOpened: i(
|
|
103
|
-
t.getAttribute("data-product_price_control_opened"),
|
|
104
|
-
!0
|
|
105
|
-
),
|
|
106
|
-
priceOrientation: t.getAttribute("data-product_original_price_control_orientation") || "horizontal",
|
|
107
|
-
quantityControlEnabled: i(
|
|
108
|
-
t.getAttribute("data-product_quantity_control_enabled"),
|
|
109
|
-
!0
|
|
110
|
-
),
|
|
111
|
-
buttonLink: o(
|
|
112
|
-
t.getAttribute("data-product_button_link"),
|
|
113
|
-
e.productButtonLinkControlValue
|
|
114
|
-
),
|
|
115
|
-
imageLink: o(
|
|
116
|
-
t.getAttribute("data-product_image_link"),
|
|
117
|
-
e.productImageLinkControlValue
|
|
118
|
-
),
|
|
119
|
-
buttonLabel: o(
|
|
120
|
-
t.getAttribute("data-product_button_control_label"),
|
|
121
|
-
"Buy"
|
|
122
|
-
),
|
|
123
|
-
imageVisible: i(
|
|
124
|
-
t.getAttribute("data-product_image_visible"),
|
|
125
|
-
!0
|
|
126
|
-
),
|
|
127
|
-
nameVisible: i(
|
|
128
|
-
t.getAttribute("data-product_name_visible"),
|
|
129
|
-
!0
|
|
130
|
-
),
|
|
131
|
-
quantityVisible: i(
|
|
132
|
-
t.getAttribute("data-product_quantity_visible"),
|
|
133
|
-
!0
|
|
134
|
-
),
|
|
135
|
-
priceVisible: i(
|
|
136
|
-
t.getAttribute("data-product_price_visible"),
|
|
137
|
-
!0
|
|
138
|
-
),
|
|
139
|
-
originalPriceVisible: i(
|
|
140
|
-
t.getAttribute("data-product_original_price_control_enabled"),
|
|
141
|
-
!0
|
|
142
|
-
),
|
|
143
|
-
buttonVisible: i(
|
|
144
|
-
t.getAttribute("data-product_button_visible"),
|
|
145
|
-
!0
|
|
146
|
-
)
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
function S(r) {
|
|
150
|
-
const t = s(r);
|
|
151
|
-
if (!t)
|
|
152
|
-
return null;
|
|
153
|
-
const i = t.getNodeConfig();
|
|
154
|
-
if (i && i.initialized)
|
|
155
|
-
return i;
|
|
156
|
-
const o = I(t);
|
|
157
|
-
return o || null;
|
|
158
|
-
}
|
|
159
|
-
function y(r, t, i) {
|
|
160
|
-
const o = s(r);
|
|
161
|
-
if (!o)
|
|
162
|
-
return;
|
|
163
|
-
const u = { ...o.getNodeConfig() || {}, ...i };
|
|
164
|
-
t.getDocumentModifier().modifyHtml(o).setNodeConfig(u).apply(new _("Update Items block configuration"));
|
|
165
|
-
}
|
|
166
|
-
export {
|
|
167
|
-
d as generateBlockInstanceId,
|
|
168
|
-
f as getDefaultItemsBlockConfig,
|
|
169
|
-
S as getItemsBlockConfig,
|
|
170
|
-
s as getItemsBlockContainer,
|
|
171
|
-
y as setItemsBlockConfig
|
|
172
|
-
};
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { OrientationType, ProductType } from '@@/Types/extensions/items';
|
|
2
|
-
import { ImmutableHtmlNode, ImmutableHtmlElementNode, ControlApi, BlockApi } from '@stripoinc/ui-editor-extensions';
|
|
3
|
-
/**
|
|
4
|
-
* Typed configuration object for Items Block.
|
|
5
|
-
* Replaces the deprecated esd-config-block data-* attributes approach.
|
|
6
|
-
* Configuration is stored directly on the block node using Stripo V2's getNodeConfig/setNodeConfig API.
|
|
7
|
-
*/
|
|
8
|
-
export interface ItemsBlockConfig {
|
|
9
|
-
initialized: boolean;
|
|
10
|
-
blockInstanceId: string;
|
|
11
|
-
source: ProductType;
|
|
12
|
-
type: ProductType;
|
|
13
|
-
itemsSelectValue: string;
|
|
14
|
-
orientation: OrientationType;
|
|
15
|
-
nameTrimming: boolean;
|
|
16
|
-
nameControlEnabled: boolean;
|
|
17
|
-
priceHideDiscount: boolean;
|
|
18
|
-
priceFormatted: boolean;
|
|
19
|
-
priceCurrencySymbol: string;
|
|
20
|
-
priceCurrencyLocation: string;
|
|
21
|
-
priceControlOpened: boolean;
|
|
22
|
-
priceOrientation: 'vertical' | 'horizontal';
|
|
23
|
-
quantityControlEnabled: boolean;
|
|
24
|
-
buttonLink: string;
|
|
25
|
-
imageLink: string;
|
|
26
|
-
buttonLabel: string;
|
|
27
|
-
imageVisible: boolean;
|
|
28
|
-
nameVisible: boolean;
|
|
29
|
-
quantityVisible: boolean;
|
|
30
|
-
priceVisible: boolean;
|
|
31
|
-
originalPriceVisible: boolean;
|
|
32
|
-
buttonVisible: boolean;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Generates a unique block instance ID.
|
|
36
|
-
*/
|
|
37
|
-
export declare function generateBlockInstanceId(): string;
|
|
38
|
-
/**
|
|
39
|
-
* Returns default ItemsBlockConfig values.
|
|
40
|
-
* These are used when initializing a new block or when migrating from legacy format.
|
|
41
|
-
*/
|
|
42
|
-
export declare function getDefaultItemsBlockConfig(): ItemsBlockConfig;
|
|
43
|
-
/**
|
|
44
|
-
* Gets the Items block container element from the current node.
|
|
45
|
-
* The container is identified by the `.items-block-v2` class (new) or `.esd-cart-items-block` (legacy).
|
|
46
|
-
* @param currentNode - The current node from the control (usually this.currentNode)
|
|
47
|
-
* @returns The container element or null if not found
|
|
48
|
-
*/
|
|
49
|
-
export declare function getItemsBlockContainer(currentNode: ImmutableHtmlNode | undefined): ImmutableHtmlElementNode | null;
|
|
50
|
-
/**
|
|
51
|
-
* Gets the node configuration from the Items block.
|
|
52
|
-
* Uses Stripo V2's getNodeConfig() API.
|
|
53
|
-
* Falls back to migrating from legacy esd-config-block if nodeConfig is empty.
|
|
54
|
-
* @param currentNode - The current node from the control
|
|
55
|
-
* @returns The ItemsBlockConfig object or null if not found
|
|
56
|
-
*/
|
|
57
|
-
export declare function getItemsBlockConfig(currentNode: ImmutableHtmlNode | undefined): ItemsBlockConfig | null;
|
|
58
|
-
/**
|
|
59
|
-
* Sets the node configuration on the Items block.
|
|
60
|
-
* Uses Stripo V2's setNodeConfig() API.
|
|
61
|
-
* @param currentNode - The current node from the control
|
|
62
|
-
* @param api - The API object (ControlApi or BlockApi)
|
|
63
|
-
* @param config - The configuration to set (partial update supported)
|
|
64
|
-
*/
|
|
65
|
-
export declare function setItemsBlockConfig(currentNode: ImmutableHtmlNode | undefined, api: ControlApi | BlockApi, config: Partial<ItemsBlockConfig>): void;
|
|
66
|
-
/**
|
|
67
|
-
* Gets the block instance ID from the node config.
|
|
68
|
-
* @param currentNode - The current node from the control
|
|
69
|
-
* @returns The block instance ID or null if not found
|
|
70
|
-
*/
|
|
71
|
-
export declare function getBlockInstanceIdFromConfig(currentNode: ImmutableHtmlNode | undefined): string | null;
|