@useinsider/guido 3.23.0-beta.31d0f5f → 3.23.0-beta.9f6bfbf
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 +1 -0
- package/dist/@types/config/schemas.js +17 -15
- package/dist/components/Guido.vue.js +1 -1
- package/dist/components/Guido.vue2.js +58 -56
- package/dist/composables/useModuleRepair.js +14 -12
- package/dist/config/migrator/index.js +16 -15
- package/dist/config/migrator/itemsPriceFormatMigrator.js +20 -0
- package/dist/extensions/Blocks/Items/block.js +115 -77
- package/dist/extensions/Blocks/Items/constants/currency.js +59 -14
- package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +33 -22
- package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +62 -51
- package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +18 -17
- package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +42 -31
- package/dist/extensions/Blocks/Items/controls/priceFormat.js +145 -0
- package/dist/extensions/Blocks/Items/controls/settingsControl.js +141 -120
- package/dist/extensions/Blocks/Items/enums/controlEnums.js +1 -1
- package/dist/extensions/Blocks/Items/extension.js +9 -8
- package/dist/extensions/Blocks/Items/items.css.js +19 -0
- package/dist/extensions/Blocks/Items/settingsPanel.js +34 -25
- package/dist/extensions/Blocks/Items/template.js +250 -212
- package/dist/extensions/Blocks/Items/utils/priceFormatOps.js +185 -0
- package/dist/extensions/Blocks/Recommendation/utils/priceFormatter.js +1 -0
- package/dist/guido.css +1 -1
- package/dist/package.json.js +1 -1
- package/dist/src/@types/config/schemas.d.ts +4 -0
- package/dist/src/composables/useConfig.d.ts +2 -0
- package/dist/src/config/migrator/index.d.ts +4 -1
- package/dist/src/config/migrator/itemsPriceFormatMigrator.d.ts +1 -0
- package/dist/src/extensions/Blocks/Items/block.d.ts +6 -9
- package/dist/src/extensions/Blocks/Items/constants/currency.d.ts +32 -0
- package/dist/src/extensions/Blocks/Items/controls/priceFormat.d.ts +23 -0
- package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +1 -0
- package/dist/src/extensions/Blocks/Items/enums/controlEnums.d.ts +1 -0
- package/dist/src/extensions/Blocks/Items/template.d.ts +4 -1
- package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +3 -0
- package/dist/src/extensions/Blocks/Items/utils/priceFormatOps.d.ts +61 -0
- package/dist/src/extensions/Blocks/Recommendation/utils/priceFormatter.d.ts +12 -0
- package/dist/src/stores/config.d.ts +20 -0
- package/dist/src/utils/itemsCurrencyRepair.d.ts +5 -1
- package/dist/utils/itemsCurrencyRepair.js +29 -24
- package/dist/utils/pairProductVariables.js +119 -99
- package/package.json +1 -1
|
@@ -109,6 +109,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
109
109
|
linkTrackingIds: boolean;
|
|
110
110
|
allowSaveWithErrors: boolean;
|
|
111
111
|
reusableRecommendationStrategy: boolean;
|
|
112
|
+
itemsPriceFormatting: boolean;
|
|
112
113
|
};
|
|
113
114
|
blocks: {
|
|
114
115
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -254,6 +255,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
254
255
|
linkTrackingIds: boolean;
|
|
255
256
|
allowSaveWithErrors: boolean;
|
|
256
257
|
reusableRecommendationStrategy: boolean;
|
|
258
|
+
itemsPriceFormatting: boolean;
|
|
257
259
|
};
|
|
258
260
|
blocks: {
|
|
259
261
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -399,6 +401,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
399
401
|
linkTrackingIds: boolean;
|
|
400
402
|
allowSaveWithErrors: boolean;
|
|
401
403
|
reusableRecommendationStrategy: boolean;
|
|
404
|
+
itemsPriceFormatting: boolean;
|
|
402
405
|
};
|
|
403
406
|
blocks: {
|
|
404
407
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -544,6 +547,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
544
547
|
linkTrackingIds: boolean;
|
|
545
548
|
allowSaveWithErrors: boolean;
|
|
546
549
|
reusableRecommendationStrategy: boolean;
|
|
550
|
+
itemsPriceFormatting: boolean;
|
|
547
551
|
};
|
|
548
552
|
blocks: {
|
|
549
553
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -689,6 +693,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
689
693
|
linkTrackingIds: boolean;
|
|
690
694
|
allowSaveWithErrors: boolean;
|
|
691
695
|
reusableRecommendationStrategy: boolean;
|
|
696
|
+
itemsPriceFormatting: boolean;
|
|
692
697
|
};
|
|
693
698
|
blocks: {
|
|
694
699
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -834,6 +839,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
834
839
|
linkTrackingIds: boolean;
|
|
835
840
|
allowSaveWithErrors: boolean;
|
|
836
841
|
reusableRecommendationStrategy: boolean;
|
|
842
|
+
itemsPriceFormatting: boolean;
|
|
837
843
|
};
|
|
838
844
|
blocks: {
|
|
839
845
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -979,6 +985,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
979
985
|
linkTrackingIds: boolean;
|
|
980
986
|
allowSaveWithErrors: boolean;
|
|
981
987
|
reusableRecommendationStrategy: boolean;
|
|
988
|
+
itemsPriceFormatting: boolean;
|
|
982
989
|
};
|
|
983
990
|
blocks: {
|
|
984
991
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -1124,6 +1131,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1124
1131
|
linkTrackingIds: boolean;
|
|
1125
1132
|
allowSaveWithErrors: boolean;
|
|
1126
1133
|
reusableRecommendationStrategy: boolean;
|
|
1134
|
+
itemsPriceFormatting: boolean;
|
|
1127
1135
|
};
|
|
1128
1136
|
blocks: {
|
|
1129
1137
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -1269,6 +1277,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1269
1277
|
linkTrackingIds: boolean;
|
|
1270
1278
|
allowSaveWithErrors: boolean;
|
|
1271
1279
|
reusableRecommendationStrategy: boolean;
|
|
1280
|
+
itemsPriceFormatting: boolean;
|
|
1272
1281
|
};
|
|
1273
1282
|
blocks: {
|
|
1274
1283
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -1414,6 +1423,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1414
1423
|
linkTrackingIds: boolean;
|
|
1415
1424
|
allowSaveWithErrors: boolean;
|
|
1416
1425
|
reusableRecommendationStrategy: boolean;
|
|
1426
|
+
itemsPriceFormatting: boolean;
|
|
1417
1427
|
};
|
|
1418
1428
|
blocks: {
|
|
1419
1429
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -1559,6 +1569,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1559
1569
|
linkTrackingIds: boolean;
|
|
1560
1570
|
allowSaveWithErrors: boolean;
|
|
1561
1571
|
reusableRecommendationStrategy: boolean;
|
|
1572
|
+
itemsPriceFormatting: boolean;
|
|
1562
1573
|
};
|
|
1563
1574
|
blocks: {
|
|
1564
1575
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -1704,6 +1715,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1704
1715
|
linkTrackingIds: boolean;
|
|
1705
1716
|
allowSaveWithErrors: boolean;
|
|
1706
1717
|
reusableRecommendationStrategy: boolean;
|
|
1718
|
+
itemsPriceFormatting: boolean;
|
|
1707
1719
|
};
|
|
1708
1720
|
blocks: {
|
|
1709
1721
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -1849,6 +1861,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1849
1861
|
linkTrackingIds: boolean;
|
|
1850
1862
|
allowSaveWithErrors: boolean;
|
|
1851
1863
|
reusableRecommendationStrategy: boolean;
|
|
1864
|
+
itemsPriceFormatting: boolean;
|
|
1852
1865
|
};
|
|
1853
1866
|
blocks: {
|
|
1854
1867
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -1994,6 +2007,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1994
2007
|
linkTrackingIds: boolean;
|
|
1995
2008
|
allowSaveWithErrors: boolean;
|
|
1996
2009
|
reusableRecommendationStrategy: boolean;
|
|
2010
|
+
itemsPriceFormatting: boolean;
|
|
1997
2011
|
};
|
|
1998
2012
|
blocks: {
|
|
1999
2013
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -2139,6 +2153,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
2139
2153
|
linkTrackingIds: boolean;
|
|
2140
2154
|
allowSaveWithErrors: boolean;
|
|
2141
2155
|
reusableRecommendationStrategy: boolean;
|
|
2156
|
+
itemsPriceFormatting: boolean;
|
|
2142
2157
|
};
|
|
2143
2158
|
blocks: {
|
|
2144
2159
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -2284,6 +2299,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
2284
2299
|
linkTrackingIds: boolean;
|
|
2285
2300
|
allowSaveWithErrors: boolean;
|
|
2286
2301
|
reusableRecommendationStrategy: boolean;
|
|
2302
|
+
itemsPriceFormatting: boolean;
|
|
2287
2303
|
};
|
|
2288
2304
|
blocks: {
|
|
2289
2305
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -2429,6 +2445,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
2429
2445
|
linkTrackingIds: boolean;
|
|
2430
2446
|
allowSaveWithErrors: boolean;
|
|
2431
2447
|
reusableRecommendationStrategy: boolean;
|
|
2448
|
+
itemsPriceFormatting: boolean;
|
|
2432
2449
|
};
|
|
2433
2450
|
blocks: {
|
|
2434
2451
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -2586,6 +2603,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
2586
2603
|
linkTrackingIds: boolean;
|
|
2587
2604
|
allowSaveWithErrors: boolean;
|
|
2588
2605
|
reusableRecommendationStrategy: boolean;
|
|
2606
|
+
itemsPriceFormatting: boolean;
|
|
2589
2607
|
};
|
|
2590
2608
|
blocks: {
|
|
2591
2609
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -2731,6 +2749,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
2731
2749
|
linkTrackingIds: boolean;
|
|
2732
2750
|
allowSaveWithErrors: boolean;
|
|
2733
2751
|
reusableRecommendationStrategy: boolean;
|
|
2752
|
+
itemsPriceFormatting: boolean;
|
|
2734
2753
|
};
|
|
2735
2754
|
blocks: {
|
|
2736
2755
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -2878,6 +2897,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
2878
2897
|
linkTrackingIds: boolean;
|
|
2879
2898
|
allowSaveWithErrors: boolean;
|
|
2880
2899
|
reusableRecommendationStrategy: boolean;
|
|
2900
|
+
itemsPriceFormatting: boolean;
|
|
2881
2901
|
};
|
|
2882
2902
|
blocks: {
|
|
2883
2903
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
export interface ItemsCurrencyRepairOptions {
|
|
2
|
+
/** Convert legacy-model blocks to the root price-format contract (itemsPriceFormatting). */
|
|
3
|
+
convertToPriceFormat?: boolean;
|
|
4
|
+
}
|
|
1
5
|
/**
|
|
2
6
|
* Heals stale price currency attributes on every v2 Items block inside a dropped
|
|
3
7
|
* saved module, driving `data-curency` / `data-currency_symbol` from each block's
|
|
@@ -14,4 +18,4 @@
|
|
|
14
18
|
* recommendationMigrator wraps). If the wrap fails to capture the blocks (non-`<td>`
|
|
15
19
|
* root foster-parented out), it bails to the original string.
|
|
16
20
|
*/
|
|
17
|
-
export declare function repairItemsCurrencyAttributes(html: string): string;
|
|
21
|
+
export declare function repairItemsCurrencyAttributes(html: string, { convertToPriceFormat }?: ItemsCurrencyRepairOptions): string;
|
|
@@ -1,39 +1,44 @@
|
|
|
1
|
-
import { currencyAttrTargets as
|
|
2
|
-
import { ItemsBlockId as
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
if (
|
|
1
|
+
import { isNewPriceFormatRoot as a, currencyAttrTargets as f, ITEMS_CURRENCY_ATTR as c } from "../extensions/Blocks/Items/constants/currency.js";
|
|
2
|
+
import { ItemsBlockId as p } from "../extensions/Blocks/Items/enums/controlEnums.js";
|
|
3
|
+
import { snapshotPriceFormatFromElement as m, planPriceFormatOps as y, applyPriceFormatOpsToElement as d } from "../extensions/Blocks/Items/utils/priceFormatOps.js";
|
|
4
|
+
const u = "items-block-v2";
|
|
5
|
+
function S(e, i) {
|
|
6
|
+
if (i || a(e)) {
|
|
7
|
+
const t = m(e), l = y(t, { convertLegacy: i });
|
|
8
|
+
return d(e, l);
|
|
9
|
+
}
|
|
10
|
+
const n = e.getAttribute("esd-ext-config");
|
|
11
|
+
if (!n)
|
|
7
12
|
return !1;
|
|
8
|
-
let
|
|
13
|
+
let r, o;
|
|
9
14
|
try {
|
|
10
|
-
({ position:
|
|
15
|
+
({ position: r, symbol: o } = f(JSON.parse(n)));
|
|
11
16
|
} catch {
|
|
12
17
|
return !1;
|
|
13
18
|
}
|
|
14
|
-
let
|
|
15
|
-
return e.querySelectorAll(`.${
|
|
16
|
-
|
|
17
|
-
}),
|
|
19
|
+
let s = !1;
|
|
20
|
+
return e.querySelectorAll(`.${p.PRICE} p`).forEach((t) => {
|
|
21
|
+
r !== void 0 && t.getAttribute(c.POSITION) !== r && (t.setAttribute(c.POSITION, r), s = !0), o !== void 0 && t.getAttribute(c.SYMBOL) !== o && (t.setAttribute(c.SYMBOL, o), s = !0);
|
|
22
|
+
}), s;
|
|
18
23
|
}
|
|
19
|
-
function
|
|
20
|
-
if (typeof e != "string" || !e.includes(
|
|
24
|
+
function I(e, { convertToPriceFormat: i = !1 } = {}) {
|
|
25
|
+
if (typeof e != "string" || !e.includes(u))
|
|
21
26
|
return e;
|
|
22
27
|
try {
|
|
23
|
-
const
|
|
28
|
+
const r = new DOMParser().parseFromString(
|
|
24
29
|
`<table><tbody><tr>${e}</tr></tbody></table>`,
|
|
25
30
|
"text/html"
|
|
26
|
-
).querySelector("tr"),
|
|
27
|
-
if (
|
|
31
|
+
).querySelector("tr"), o = r.querySelectorAll(`.${u}`);
|
|
32
|
+
if (o.length === 0)
|
|
28
33
|
return e;
|
|
29
|
-
let
|
|
30
|
-
return
|
|
31
|
-
|
|
32
|
-
}),
|
|
33
|
-
} catch (
|
|
34
|
-
return console.error("Failed to repair items currency on module add:",
|
|
34
|
+
let s = !1;
|
|
35
|
+
return o.forEach((t) => {
|
|
36
|
+
S(t, i) && (s = !0);
|
|
37
|
+
}), s ? r.innerHTML : e;
|
|
38
|
+
} catch (n) {
|
|
39
|
+
return console.error("Failed to repair items currency on module add:", n), e;
|
|
35
40
|
}
|
|
36
41
|
}
|
|
37
42
|
export {
|
|
38
|
-
|
|
43
|
+
I as repairItemsCurrencyAttributes
|
|
39
44
|
};
|
|
@@ -1,108 +1,128 @@
|
|
|
1
|
-
import { ITEMS_CURRENCY_ATTR as U, isCustomCurrencySymbol as
|
|
2
|
-
import { productPairs as
|
|
3
|
-
import { escapeReplacement as
|
|
4
|
-
import { preserveTextStyles as
|
|
1
|
+
import { isNewPriceFormatRoot as G, ITEMS_PRICE_FORMAT_ATTR as N, currencyPositionFromLocation as Y, ITEMS_CURRENCY_ATTR as U, isCustomCurrencySymbol as B } from "../extensions/Blocks/Items/constants/currency.js";
|
|
2
|
+
import { productPairs as k } from "../extensions/Blocks/Items/enums/productEnums.js";
|
|
3
|
+
import { escapeReplacement as v } from "../extensions/Blocks/Items/utils/nodeConfigUtils.js";
|
|
4
|
+
import { preserveTextStyles as w } from "./preserveTextStyles.js";
|
|
5
5
|
import { unwrapProductNameLinks as X } from "./unwrapProductNameLink.js";
|
|
6
6
|
const q = {
|
|
7
7
|
CART_ITEMS: "ins_apr",
|
|
8
8
|
BROWSED_ITEMS: "browsed_item",
|
|
9
9
|
PURCHASED_ITEMS: "purchased_item"
|
|
10
|
-
}, W = (
|
|
11
|
-
function
|
|
12
|
-
let
|
|
13
|
-
for (;
|
|
14
|
-
|
|
15
|
-
return
|
|
10
|
+
}, W = (r) => r.replaceAll("{%", "<!--{%").replaceAll("%}", "%}-->");
|
|
11
|
+
function j(r, h, p) {
|
|
12
|
+
let u = h;
|
|
13
|
+
for (; u > 0 && /\s/.test(r[u - 1]); )
|
|
14
|
+
u -= 1;
|
|
15
|
+
return p.some((A) => r.endsWith(A, u));
|
|
16
16
|
}
|
|
17
|
-
const
|
|
18
|
-
function
|
|
19
|
-
var
|
|
20
|
-
const
|
|
21
|
-
for (let
|
|
22
|
-
(
|
|
17
|
+
const Q = /(\s)href=(["'])(?:[^"']*#!|#)?\2/gi;
|
|
18
|
+
function z(r, h) {
|
|
19
|
+
var u;
|
|
20
|
+
const p = r.ownerDocument.createTreeWalker(r, NodeFilter.SHOW_COMMENT);
|
|
21
|
+
for (let A = p.nextNode(); A; A = p.nextNode())
|
|
22
|
+
(u = A.nodeValue) != null && u.includes("[if mso]") && (A.nodeValue = A.nodeValue.replace(Q, (L, P) => `${P}href="${h}"`));
|
|
23
23
|
}
|
|
24
|
-
function
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
24
|
+
function J(r) {
|
|
25
|
+
return {
|
|
26
|
+
isFormatted: r.getAttribute("data-formated") === "true",
|
|
27
|
+
isSinglePrice: r.getAttribute("data-single_price") === "true",
|
|
28
|
+
currencyPosition: r.getAttribute(U.POSITION) || "before",
|
|
29
|
+
configuredSymbol: (r.getAttribute(U.SYMBOL) || "").trim()
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function K(r) {
|
|
33
|
+
return {
|
|
34
|
+
isFormatted: !1,
|
|
35
|
+
isSinglePrice: r.getAttribute(N.SINGLE_PRICE) === "true",
|
|
36
|
+
currencyPosition: Y(
|
|
37
|
+
r.getAttribute(N.ALIGNMENT) ?? void 0
|
|
38
|
+
),
|
|
39
|
+
configuredSymbol: (r.getAttribute(N.SYMBOL) || "").trim()
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function Z(r, h, p) {
|
|
43
|
+
const { isFormatted: u, isSinglePrice: A, currencyPosition: L, configuredSymbol: P } = p;
|
|
44
|
+
let y;
|
|
45
|
+
A ? y = u ? r.SINGLE_PRICE_FORMATTED : r.SINGLE_PRICE : y = u ? r.PRICE_FORMATTED : r.PRICE;
|
|
46
|
+
const E = r.CURRENCY;
|
|
47
|
+
let F = `{{${y}_${h}}}`, R = "";
|
|
48
|
+
return B(P) ? R = P : E && (R = `{{${E}_${h}}}`), R && (F = L === "after" ? `${F} ${R}` : `${R} ${F}`), F;
|
|
49
|
+
}
|
|
50
|
+
function ct(r) {
|
|
51
|
+
const h = W(r), p = new DOMParser().parseFromString(h, "text/html");
|
|
52
|
+
X(p);
|
|
53
|
+
const u = k.PAIRS_FOR_EXTENSION;
|
|
54
|
+
Object.entries(u).forEach(([o, T]) => {
|
|
55
|
+
p.querySelectorAll(".ins-product-td").forEach((n) => {
|
|
56
|
+
const S = n.getAttribute("data-number") || "1", I = n.getAttribute("data-type") || "CART_ITEMS";
|
|
57
|
+
n.querySelectorAll(`[product-attr="${o}"]`).forEach((t) => {
|
|
58
|
+
var b, M, D, x;
|
|
59
|
+
const m = t.getAttribute("data-type") || I, c = t.getAttribute("data-number") || S, f = T[m];
|
|
34
60
|
if (f)
|
|
35
61
|
switch (o) {
|
|
36
62
|
case "imageSrc": {
|
|
37
|
-
let e = null,
|
|
38
|
-
if (t.tagName === "IMG" ? (e = t,
|
|
63
|
+
let e = null, i = null;
|
|
64
|
+
if (t.tagName === "IMG" ? (e = t, i = e.closest("a")) : (e = t.querySelector("img"), i = t.querySelector("a") || t.closest("a")), !e)
|
|
39
65
|
break;
|
|
40
|
-
const
|
|
41
|
-
if (
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
return
|
|
46
|
-
}) && (e.src = `{{${
|
|
66
|
+
const d = f.DEFAULT, a = f.ATTR;
|
|
67
|
+
if (d && e.src) {
|
|
68
|
+
const l = e.src;
|
|
69
|
+
d.some((C) => {
|
|
70
|
+
const $ = C.split("/").pop() || "", V = l.split("/").pop() || "";
|
|
71
|
+
return l.includes(C) || l.includes($) || V === $;
|
|
72
|
+
}) && (e.src = `{{${a}_${c}}}`);
|
|
47
73
|
}
|
|
48
|
-
const
|
|
49
|
-
if (
|
|
50
|
-
const
|
|
51
|
-
if (
|
|
52
|
-
const
|
|
53
|
-
(
|
|
74
|
+
const s = (M = (b = u.name) == null ? void 0 : b[m]) == null ? void 0 : M.ATTR;
|
|
75
|
+
if (s && e.setAttribute("alt", `{{${s}_${c}}}`), i) {
|
|
76
|
+
const l = (D = u.itemLink) == null ? void 0 : D[m];
|
|
77
|
+
if (l) {
|
|
78
|
+
const H = l.HREF, C = l.DEFAULT_HREF || "#!", $ = i.href;
|
|
79
|
+
($ === "#" || $ === "" || $.endsWith("#!") || $.endsWith(C) || $ === `${window.location.href}${C}` || !$ || $ === window.location.href) && (i.href = `{{${H}_${c}}}`);
|
|
54
80
|
}
|
|
55
81
|
}
|
|
56
82
|
break;
|
|
57
83
|
}
|
|
58
84
|
case "name": {
|
|
59
|
-
const e = f,
|
|
60
|
-
t.textContent && (t.innerHTML =
|
|
61
|
-
const
|
|
62
|
-
if (
|
|
63
|
-
const
|
|
64
|
-
(
|
|
85
|
+
const e = f, i = e.ATTR, d = e.DEFAULT_HREF || "#!", a = e.HREF;
|
|
86
|
+
t.textContent && (t.innerHTML = w(t, `{{${i}_${c}}}`));
|
|
87
|
+
const s = t.closest("a") || (t.tagName === "A" ? t : null);
|
|
88
|
+
if (s && a) {
|
|
89
|
+
const l = s.href, H = `${window.location.href}${d}`;
|
|
90
|
+
(l === H || l.endsWith(d)) && (s.href = `{{${a}_${c}}}`);
|
|
65
91
|
}
|
|
66
92
|
break;
|
|
67
93
|
}
|
|
68
94
|
case "price":
|
|
69
95
|
case "originalPrice": {
|
|
70
|
-
const e = f,
|
|
71
|
-
|
|
72
|
-
i ? b = c ? e.SINGLE_PRICE_FORMATTED : e.SINGLE_PRICE : b = c ? e.PRICE_FORMATTED : e.PRICE;
|
|
73
|
-
const g = e.CURRENCY;
|
|
74
|
-
let u = `{{${b}_${n}}}`;
|
|
75
|
-
const H = (t.getAttribute(U.SYMBOL) || "").trim(), G = Y(H);
|
|
76
|
-
let F = "";
|
|
77
|
-
G ? F = H : g && (F = `{{${g}_${n}}}`), F && (u = a === "after" ? `${u} ${F}` : `${F} ${u}`), t.innerHTML = L(t, u);
|
|
96
|
+
const e = f, i = G(n) ? K(n) : J(t);
|
|
97
|
+
t.innerHTML = w(t, Z(e, c, i));
|
|
78
98
|
break;
|
|
79
99
|
}
|
|
80
100
|
case "quantity": {
|
|
81
|
-
const e = f,
|
|
82
|
-
|
|
101
|
+
const e = f, i = e.ATTR, d = [e.DEFAULT, ...e.LEGACY_DEFAULTS], a = (x = t.textContent) == null ? void 0 : x.trim();
|
|
102
|
+
a && d.includes(a) && (t.innerHTML = w(t, `{{${i}_${c}}}`));
|
|
83
103
|
break;
|
|
84
104
|
}
|
|
85
105
|
case "button": {
|
|
86
|
-
const e = f,
|
|
87
|
-
if (
|
|
88
|
-
const
|
|
89
|
-
(
|
|
106
|
+
const e = f, i = e.HREF, d = e.DEFAULT_HREF || "#!", a = t.tagName === "A" ? t : t.querySelector("a");
|
|
107
|
+
if (a) {
|
|
108
|
+
const s = a.href || "", l = `${window.location.href}${d}`;
|
|
109
|
+
(s === "" || s === "#" || s === l || s.endsWith(d) || s.endsWith("#!") || s === window.location.href) && (a.href = `{{${i}_${c}}}`);
|
|
90
110
|
}
|
|
91
|
-
|
|
111
|
+
z(t, `{{${i}_${c}}}`);
|
|
92
112
|
break;
|
|
93
113
|
}
|
|
94
114
|
case "itemLink": {
|
|
95
|
-
const e = f,
|
|
96
|
-
if (
|
|
97
|
-
const
|
|
98
|
-
(
|
|
115
|
+
const e = f, i = e.HREF, d = e.DEFAULT_HREF || "#!", a = t;
|
|
116
|
+
if (a.href) {
|
|
117
|
+
const s = a.href, l = `${window.location.href}${d}`;
|
|
118
|
+
(s === l || s.endsWith(d)) && (a.href = `{{${i}_${c}}}`);
|
|
99
119
|
}
|
|
100
120
|
break;
|
|
101
121
|
}
|
|
102
122
|
default: {
|
|
103
123
|
if ("ATTR" in f) {
|
|
104
124
|
const e = f.ATTR;
|
|
105
|
-
t.textContent && (t.innerHTML =
|
|
125
|
+
t.textContent && (t.innerHTML = w(t, `{{${e}_${c}}}`));
|
|
106
126
|
}
|
|
107
127
|
break;
|
|
108
128
|
}
|
|
@@ -110,49 +130,49 @@ function et($) {
|
|
|
110
130
|
});
|
|
111
131
|
});
|
|
112
132
|
});
|
|
113
|
-
const
|
|
114
|
-
` : "", P =
|
|
133
|
+
const A = h.match(/<!DOCTYPE[^>]*>/i), L = A ? `${A[0]}
|
|
134
|
+
` : "", P = p.querySelectorAll(".ins-product-td"), y = [];
|
|
115
135
|
P.forEach((o) => {
|
|
116
|
-
const
|
|
117
|
-
|
|
136
|
+
const T = o.getAttribute("data-type") || "CART_ITEMS", _ = o.getAttribute("data-number") || "1", n = o.outerHTML;
|
|
137
|
+
y.push({
|
|
118
138
|
element: o,
|
|
119
|
-
outerHtml:
|
|
120
|
-
type:
|
|
121
|
-
number:
|
|
139
|
+
outerHtml: n,
|
|
140
|
+
type: T,
|
|
141
|
+
number: _
|
|
122
142
|
});
|
|
123
143
|
});
|
|
124
|
-
let
|
|
125
|
-
|
|
126
|
-
const
|
|
127
|
-
if (
|
|
128
|
-
const
|
|
129
|
-
|
|
144
|
+
let E = L + p.documentElement.outerHTML;
|
|
145
|
+
y.reverse().forEach(({ outerHtml: o, type: T, number: _ }) => {
|
|
146
|
+
const n = q[T], S = n ? `${n}_total_product_kind` : "";
|
|
147
|
+
if (S) {
|
|
148
|
+
const g = parseInt(_) - 1, c = `${`{% if ${S} > ${g} %}`}${o}{% endif %}`;
|
|
149
|
+
E = E.replace(o, v(c));
|
|
130
150
|
}
|
|
131
151
|
});
|
|
132
|
-
const
|
|
133
|
-
return
|
|
152
|
+
const F = p.querySelectorAll('[product-attr="originalPrice"][data-type]'), R = /* @__PURE__ */ new Map(), O = /* @__PURE__ */ new Set();
|
|
153
|
+
return F.forEach((o) => {
|
|
134
154
|
var t;
|
|
135
|
-
const
|
|
136
|
-
if (!
|
|
155
|
+
const T = o.getAttribute("data-number"), _ = o.getAttribute("data-type");
|
|
156
|
+
if (!T || !q[_])
|
|
137
157
|
return;
|
|
138
|
-
const
|
|
139
|
-
if (!
|
|
158
|
+
const n = o.closest(".product-original-price-class");
|
|
159
|
+
if (!n || O.has(n))
|
|
140
160
|
return;
|
|
141
|
-
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
}),
|
|
145
|
-
if (
|
|
161
|
+
O.add(n);
|
|
162
|
+
const S = n.outerHTML, I = (t = o.closest(".ins-product-td")) == null ? void 0 : t.getAttribute("data-nodup"), g = R.get(S) ?? { number: T, type: _, wrap: [] };
|
|
163
|
+
g.wrap.push(I !== "false"), R.set(S, g);
|
|
164
|
+
}), R.forEach(({ number: o, type: T, wrap: _ }, n) => {
|
|
165
|
+
if (n.includes("{% if") || !_.some(Boolean))
|
|
146
166
|
return;
|
|
147
|
-
const
|
|
148
|
-
let m = "",
|
|
149
|
-
for (;
|
|
150
|
-
const
|
|
151
|
-
m +=
|
|
167
|
+
const S = k.PAIRS_FOR_EXTENSION.price[T].PRICE, I = k.PAIRS_FOR_EXTENSION.originalPrice[T].PRICE, g = `{% if ${S}_${o} != ${I}_${o} %}`, t = [g, W(g)];
|
|
168
|
+
let m = "", c = 0, f = 0, b = E.indexOf(n);
|
|
169
|
+
for (; b !== -1; ) {
|
|
170
|
+
const M = _[f] === !0 && !j(E, b, t);
|
|
171
|
+
m += E.slice(c, b) + (M ? `${g}${n}{% endif %}` : n), c = b + n.length, f += 1, b = E.indexOf(n, c);
|
|
152
172
|
}
|
|
153
|
-
|
|
154
|
-
}),
|
|
173
|
+
E = m + E.slice(c);
|
|
174
|
+
}), E.replaceAll("<!--{%", "{%").replaceAll("%}-->", "%}").replaceAll("<!--{%", "{%").replaceAll("%}-->", "%}");
|
|
155
175
|
}
|
|
156
176
|
export {
|
|
157
|
-
|
|
177
|
+
ct as pairProductVariables
|
|
158
178
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@useinsider/guido",
|
|
3
|
-
"version": "3.23.0-beta.
|
|
3
|
+
"version": "3.23.0-beta.9f6bfbf",
|
|
4
4
|
"description": "Guido is a Vue + TypeScript wrapper for Email Plugin. Easily embed the email editor in your Vue applications.",
|
|
5
5
|
"main": "./dist/guido.umd.cjs",
|
|
6
6
|
"module": "./dist/library.js",
|