ublo-lib 1.47.55 → 1.47.57
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/es/common/components/cart-preview/cart-preview.d.ts.map +1 -1
- package/es/common/components/cart-preview/cart-preview.js +11 -1
- package/es/esf/components/magic-box/booking.d.ts +3 -1
- package/es/esf/components/magic-box/booking.d.ts.map +1 -1
- package/es/esf/components/magic-box/booking.js +13 -4
- package/es/esf/components/magic-box/magic-box.d.ts +2 -1
- package/es/esf/components/magic-box/magic-box.d.ts.map +1 -1
- package/es/esf/components/magic-box/magic-box.js +2 -2
- package/es/future/components/msem/tunnel.d.ts +1 -1
- package/es/future/components/msem/tunnel.d.ts.map +1 -1
- package/es/future/components/msem/tunnel.js +12 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cart-preview.d.ts","sourceRoot":"","sources":["../../../../src/common/components/cart-preview/cart-preview.js"],"names":[],"mappings":";AAYA;;;;;;
|
|
1
|
+
{"version":3,"file":"cart-preview.d.ts","sourceRoot":"","sources":["../../../../src/common/components/cart-preview/cart-preview.js"],"names":[],"mappings":";AAYA;;;;;;4CA0GC"}
|
|
@@ -14,6 +14,16 @@ const CartPreview = ({ lang, visible, className, pillClassName, forcePillVisibil
|
|
|
14
14
|
const { resort } = publicRuntimeConfig;
|
|
15
15
|
const [count, setCount] = React.useState(0);
|
|
16
16
|
const [cart, setCart] = React.useState();
|
|
17
|
+
const [cartChanges, setCartChanges] = React.useState(0);
|
|
18
|
+
const addCartChange = React.useCallback(() => {
|
|
19
|
+
setCartChanges((prev) => prev + 1);
|
|
20
|
+
}, []);
|
|
21
|
+
React.useEffect(() => {
|
|
22
|
+
window.addEventListener("msem-cart-changed", addCartChange);
|
|
23
|
+
return () => {
|
|
24
|
+
window.removeEventListener("msem-cart-changed", addCartChange);
|
|
25
|
+
};
|
|
26
|
+
}, []);
|
|
17
27
|
React.useEffect(() => {
|
|
18
28
|
const cartId = window.sessionStorage.cartId;
|
|
19
29
|
const getCart = async () => {
|
|
@@ -27,7 +37,7 @@ const CartPreview = ({ lang, visible, className, pillClassName, forcePillVisibil
|
|
|
27
37
|
if (resort && cartId) {
|
|
28
38
|
getCart();
|
|
29
39
|
}
|
|
30
|
-
}, [ubloLang, resort]);
|
|
40
|
+
}, [ubloLang, resort, cartChanges]);
|
|
31
41
|
if (!cart && !forcePillVisibility)
|
|
32
42
|
return null;
|
|
33
43
|
if (!cart) {
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
export default Booking;
|
|
2
|
-
declare function Booking({ stay, cartUrl, channel, values, maxCPDuration, setCurrentStep, msemWidgetHost, }: {
|
|
2
|
+
declare function Booking({ stay, cartUrl, channel, values, maxCPDuration, currentStep, setCurrentStep, msemWidgetHost, modal, }: {
|
|
3
3
|
stay: any;
|
|
4
4
|
cartUrl: any;
|
|
5
5
|
channel: any;
|
|
6
6
|
values: any;
|
|
7
7
|
maxCPDuration: any;
|
|
8
|
+
currentStep: any;
|
|
8
9
|
setCurrentStep: any;
|
|
9
10
|
msemWidgetHost: any;
|
|
11
|
+
modal: any;
|
|
10
12
|
}): import("react/jsx-runtime").JSX.Element;
|
|
11
13
|
//# sourceMappingURL=booking.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"booking.d.ts","sourceRoot":"","sources":["../../../../src/esf/components/magic-box/booking.js"],"names":[],"mappings":";AAUA
|
|
1
|
+
{"version":3,"file":"booking.d.ts","sourceRoot":"","sources":["../../../../src/esf/components/magic-box/booking.js"],"names":[],"mappings":";AAUA;;;;;;;;;;4CAwHC"}
|
|
@@ -7,7 +7,7 @@ import { message } from "./messages";
|
|
|
7
7
|
import { loadWidgetMseM } from "./services/widgets";
|
|
8
8
|
import * as Plausible from "../../../future/components/plausible";
|
|
9
9
|
import css from "./booking.module.css";
|
|
10
|
-
const Booking = ({ stay, cartUrl, channel, values, maxCPDuration, setCurrentStep, msemWidgetHost, }) => {
|
|
10
|
+
const Booking = ({ stay, cartUrl, channel, values, maxCPDuration, currentStep, setCurrentStep, msemWidgetHost, modal, }) => {
|
|
11
11
|
const { lang, cmsMode, config } = useUbloContext();
|
|
12
12
|
const { resort } = config;
|
|
13
13
|
const langPrefix = config.langPrefix.links ? `/${lang}` : "";
|
|
@@ -62,8 +62,8 @@ const Booking = ({ stay, cartUrl, channel, values, maxCPDuration, setCurrentStep
|
|
|
62
62
|
channel,
|
|
63
63
|
preview: !!cmsMode,
|
|
64
64
|
cartChanged: goToCart,
|
|
65
|
-
|
|
66
|
-
groundedTo: "#msem-magic-box",
|
|
65
|
+
fullwidth: !modal,
|
|
66
|
+
groundedTo: !modal ? "#msem-magic-box" : undefined,
|
|
67
67
|
analytics: Plausible.callback,
|
|
68
68
|
categoryCode,
|
|
69
69
|
};
|
|
@@ -74,6 +74,9 @@ const Booking = ({ stay, cartUrl, channel, values, maxCPDuration, setCurrentStep
|
|
|
74
74
|
...engagementPresets,
|
|
75
75
|
};
|
|
76
76
|
window.MseM.esf(options, presets);
|
|
77
|
+
if (modal && currentStep === 1) {
|
|
78
|
+
setCurrentStep(0);
|
|
79
|
+
}
|
|
77
80
|
});
|
|
78
81
|
};
|
|
79
82
|
init();
|
|
@@ -90,7 +93,13 @@ const Booking = ({ stay, cartUrl, channel, values, maxCPDuration, setCurrentStep
|
|
|
90
93
|
resort,
|
|
91
94
|
stay.from,
|
|
92
95
|
stay.to,
|
|
96
|
+
currentStep,
|
|
97
|
+
setCurrentStep,
|
|
98
|
+
modal,
|
|
93
99
|
]);
|
|
94
|
-
|
|
100
|
+
if (modal) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
return (_jsxs("div", { className: css.root, children: [_jsxs(Button, { onClick: goBack, children: [_jsx(ArrowLeftIcon, {}), message(lang, "go-back")] }), "&& ", _jsx("div", { id: "msem-magic-box" })] }));
|
|
95
104
|
};
|
|
96
105
|
export default Booking;
|
|
@@ -26,8 +26,9 @@ type Props = {
|
|
|
26
26
|
destination: string;
|
|
27
27
|
forwardFieldValues: boolean;
|
|
28
28
|
};
|
|
29
|
+
modal?: boolean;
|
|
29
30
|
};
|
|
30
31
|
declare const _default: React.MemoExoticComponent<typeof MagicBox>;
|
|
31
32
|
export default _default;
|
|
32
|
-
declare function MagicBox({ stay, cartUrl, channel, className, alignContent, maxCPDuration, minDays, maxDays, allowedActivities, categories, msemWidgetHost, msemApiHost, msemAdminHost, customSubmit, children, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
declare function MagicBox({ stay, cartUrl, channel, className, alignContent, maxCPDuration, minDays, maxDays, allowedActivities, categories, msemWidgetHost, msemApiHost, msemAdminHost, customSubmit, modal, children, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
33
34
|
//# sourceMappingURL=magic-box.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"magic-box.d.ts","sourceRoot":"","sources":["../../../../src/esf/components/magic-box/magic-box.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,KAAK,IAAI,GAAG;IACV,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,KAAK,cAAc,GACf,0BAA0B,GAC1B,sCAAsC,GACtC,8BAA8B,CAAC;AACnC,KAAK,WAAW,GACZ,oCAAoC,GACpC,gDAAgD,GAChD,wCAAwC,CAAC;AAC7C,KAAK,aAAa,GACd,oDAAoD,GACpD,gEAAgE,GAChE,wDAAwD,CAAC;AAE7D,KAAK,KAAK,GAAG;IACX,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;
|
|
1
|
+
{"version":3,"file":"magic-box.d.ts","sourceRoot":"","sources":["../../../../src/esf/components/magic-box/magic-box.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,KAAK,IAAI,GAAG;IACV,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,KAAK,cAAc,GACf,0BAA0B,GAC1B,sCAAsC,GACtC,8BAA8B,CAAC;AACnC,KAAK,WAAW,GACZ,oCAAoC,GACpC,gDAAgD,GAChD,wCAAwC,CAAC;AAC7C,KAAK,aAAa,GACd,oDAAoD,GACpD,gEAAgE,GAChE,wDAAwD,CAAC;AAE7D,KAAK,KAAK,GAAG;IACX,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;;AAIF,wBAAoC;AAEpC,iBAAS,QAAQ,CAAC,EAChB,IAAI,EACJ,OAAO,EACP,OAAe,EACf,SAAS,EACT,YAAY,EACZ,aAAa,EACb,OAAW,EACX,OAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,cAA2C,EAC3C,WAAkD,EAClD,aAAoE,EACpE,YAAY,EACZ,KAAK,EACL,QAAQ,GACT,EAAE,KAAK,2CAgPP"}
|
|
@@ -15,7 +15,7 @@ import { message } from "./messages";
|
|
|
15
15
|
import * as API from "./services/api";
|
|
16
16
|
import css from "./magic-box.module.css";
|
|
17
17
|
export default React.memo(MagicBox);
|
|
18
|
-
function MagicBox({ stay, cartUrl, channel = "ESF", className, alignContent, maxCPDuration, minDays = 0, maxDays = Infinity, allowedActivities, categories, msemWidgetHost = "https://widget.msem.tech", msemApiHost = "https://services.msem.tech/api/esf", msemAdminHost = "https://admin.mon-sejour-en-montagne.com/api/gesco", customSubmit, children, }) {
|
|
18
|
+
function MagicBox({ stay, cartUrl, channel = "ESF", className, alignContent, maxCPDuration, minDays = 0, maxDays = Infinity, allowedActivities, categories, msemWidgetHost = "https://widget.msem.tech", msemApiHost = "https://services.msem.tech/api/esf", msemAdminHost = "https://admin.mon-sejour-en-montagne.com/api/gesco", customSubmit, modal, children, }) {
|
|
19
19
|
const [filters, setFilters] = React.useState();
|
|
20
20
|
const [values, setValues] = React.useState();
|
|
21
21
|
const [currentStep, setCurrentStep] = React.useState(0);
|
|
@@ -152,7 +152,7 @@ function MagicBox({ stay, cartUrl, channel = "ESF", className, alignContent, max
|
|
|
152
152
|
const showFilter = stay && filters && values;
|
|
153
153
|
const SubmitIcon = customSubmitChecked ? ArrowRightIcon : SearchIcon;
|
|
154
154
|
const classes = classNames(css.root, className);
|
|
155
|
-
return (_jsxs("div", { className: classes, "data-align": alignContent, children: [_jsxs("div", { className: css.top, children: [children, VELClosed && !jmoins && (_jsxs(Information, { type: "error", className: css.errorMessage, children: [message(lang, "vel-closed"), _jsx(Button, { className: css.contact, onClick: openContactDialog, children: message(lang, "contact-us") })] })), jmoins && (_jsxs(Information, { type: "warning", className: css.errorMessage, children: [message(lang, "booking-block-day-minus-start"), " ", jmoins, message(lang, "booking-block-day-minus-end")] })), !VELClosed && currentStep === 0 && (_jsxs(_Fragment, { children: [!filters && _jsx("div", { className: css.loader }), showFilter && (_jsx(Filters, { filters: filters, values: values, setValues: setValues, customSubmit: customSubmit, customSubmitChecked: customSubmitChecked, setCustomSubmitChecked: setCustomSubmitChecked })), _jsxs(Button, { className: css.confirm, onClick: submit, disabled: VELClosed || !isValid, children: [message(lang, customSubmitChecked ? "proceed" : "confirm"), _jsx(SubmitIcon, {})] })] })), currentStep === 1 && (_jsx(Booking, { stay: stay, cartUrl: cartUrl, channel: channel, values: values, maxCPDuration: maxCPDuration, setCurrentStep: setCurrentStep, msemWidgetHost: msemWidgetHost }))] }), _jsx(Dialog, { className: css.dialog, isOpened: contactDialogOpened, close: closeContactDialog, children: _jsx("div", { className: css.dialogInner, children: _jsx(GescoContactForm, { lang: lang, channel: channel, resort: resort, merchant: merchant }) }) })] }));
|
|
155
|
+
return (_jsxs("div", { className: classes, "data-align": alignContent, children: [_jsxs("div", { className: css.top, children: [children, VELClosed && !jmoins && (_jsxs(Information, { type: "error", className: css.errorMessage, children: [message(lang, "vel-closed"), _jsx(Button, { className: css.contact, onClick: openContactDialog, children: message(lang, "contact-us") })] })), jmoins && (_jsxs(Information, { type: "warning", className: css.errorMessage, children: [message(lang, "booking-block-day-minus-start"), " ", jmoins, message(lang, "booking-block-day-minus-end")] })), !VELClosed && (currentStep === 0 || modal) && (_jsxs(_Fragment, { children: [!filters && _jsx("div", { className: css.loader }), showFilter && (_jsx(Filters, { filters: filters, values: values, setValues: setValues, customSubmit: customSubmit, customSubmitChecked: customSubmitChecked, setCustomSubmitChecked: setCustomSubmitChecked })), _jsxs(Button, { className: css.confirm, onClick: submit, disabled: VELClosed || !isValid, children: [message(lang, customSubmitChecked ? "proceed" : "confirm"), _jsx(SubmitIcon, {})] })] })), currentStep === 1 && (_jsx(Booking, { stay: stay, cartUrl: cartUrl, channel: channel, values: values, maxCPDuration: maxCPDuration, currentStep: currentStep, setCurrentStep: setCurrentStep, msemWidgetHost: msemWidgetHost, modal: modal }))] }), _jsx(Dialog, { className: css.dialog, isOpened: contactDialogOpened, close: closeContactDialog, children: _jsx("div", { className: css.dialogInner, children: _jsx(GescoContactForm, { lang: lang, channel: channel, resort: resort, merchant: merchant }) }) })] }));
|
|
156
156
|
}
|
|
157
157
|
function getDefaultValues(filters) {
|
|
158
158
|
return Object.keys(filters || {}).reduce((acc, key) => {
|
|
@@ -17,7 +17,7 @@ type Options = GlobalOptions & {
|
|
|
17
17
|
skiSchoolUrl?: string;
|
|
18
18
|
customOffers?: string;
|
|
19
19
|
cartExpanded?: boolean;
|
|
20
|
-
cartChanged?: (cart
|
|
20
|
+
cartChanged?: (cart?: any, kind?: string, eventType?: string) => void;
|
|
21
21
|
show?: Show[];
|
|
22
22
|
};
|
|
23
23
|
type Presets = GlobalPresets & {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../../../src/future/components/msem/tunnel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE5D,KAAK,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEvC,KAAK,OAAO,GAAG,aAAa,GAAG;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../../../src/future/components/msem/tunnel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE5D,KAAK,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEvC,KAAK,OAAO,GAAG,aAAa,GAAG;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;CACf,CAAC;AAEF,KAAK,OAAO,GAAG,aAAa,GAAG,EAAE,CAAC;AAElC,KAAK,KAAK,GAAG;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;;AAEF,wBAAkC;AAElC,iBAAS,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,KAAK,mBAiCpD"}
|
|
@@ -5,9 +5,21 @@ export default React.memo(Tunnel);
|
|
|
5
5
|
function Tunnel({ options, presets, children }) {
|
|
6
6
|
React.useEffect(() => {
|
|
7
7
|
const categoryCode = window.sessionStorage.getItem("categoryCode") || undefined;
|
|
8
|
+
const handleCartChange = (cart, kind, eventType) => {
|
|
9
|
+
options?.cartChanged?.(cart, kind, eventType);
|
|
10
|
+
const event = new CustomEvent("msem-cart-changed", {
|
|
11
|
+
detail: {
|
|
12
|
+
cart,
|
|
13
|
+
kind,
|
|
14
|
+
eventType,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
window.dispatchEvent(event);
|
|
18
|
+
};
|
|
8
19
|
const patchedOptions = {
|
|
9
20
|
categoryCode,
|
|
10
21
|
...options,
|
|
22
|
+
cartChanged: handleCartChange,
|
|
11
23
|
analytics: (...args) => {
|
|
12
24
|
options?.analytics?.apply(null, args);
|
|
13
25
|
Plausible.callback.apply(null, args);
|