@faststore/core 3.0.17 → 3.0.21
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/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +90 -89
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/eslint/.cache_abdhua +1 -0
- package/.next/cache/next-server.js.nft.json +1 -0
- package/.next/cache/webpack/client-development/0.pack +0 -0
- package/.next/cache/webpack/client-development/1.pack +0 -0
- package/.next/cache/webpack/client-development/2.pack +0 -0
- package/.next/cache/webpack/client-development/index.pack +0 -0
- package/.next/cache/webpack/client-development/index.pack.old +0 -0
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/1.pack +0 -0
- package/.next/cache/webpack/client-production/2.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack.old +0 -0
- package/.next/cache/webpack/server-development/0.pack +0 -0
- package/.next/cache/webpack/server-development/1.pack +0 -0
- package/.next/cache/webpack/server-development/2.pack +0 -0
- package/.next/cache/webpack/server-development/3.pack +0 -0
- package/.next/cache/webpack/server-development/4.pack +0 -0
- package/.next/cache/webpack/server-development/index.pack +0 -0
- package/.next/cache/webpack/server-development/index.pack.old +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/1.pack +0 -0
- package/.next/cache/webpack/server-production/2.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack.old +0 -0
- package/.next/images-manifest.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/react-loadable-manifest.json +18 -18
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +1 -1
- package/.next/server/chunks/117.js +430 -0
- package/.next/server/chunks/177.js +125 -0
- package/.next/server/chunks/183.js +122 -0
- package/.next/server/chunks/184.js +61 -0
- package/.next/server/chunks/289.js +240 -0
- package/.next/server/chunks/312.js +678 -0
- package/.next/server/chunks/350.js +2834 -0
- package/.next/server/chunks/386.js +200 -0
- package/.next/server/chunks/390.js +550 -0
- package/.next/server/chunks/398.js +611 -0
- package/.next/server/chunks/404.js +434 -1
- package/.next/server/chunks/53.js +61 -0
- package/.next/server/chunks/57.js +434 -1
- package/.next/server/chunks/574.js +145 -0
- package/.next/server/chunks/576.js +122 -0
- package/.next/server/chunks/585.js +640 -0
- package/.next/server/chunks/676.js +32 -0
- package/.next/server/chunks/693.js +58 -1
- package/.next/server/chunks/732.js +1881 -0
- package/.next/server/chunks/74.js +4066 -0
- package/.next/server/chunks/779.js +58 -1
- package/.next/server/chunks/825.js +4074 -0
- package/.next/server/chunks/854.js +72 -0
- package/.next/server/chunks/859.js +957 -4
- package/.next/server/chunks/863.js +111 -0
- package/.next/server/chunks/979.js +1305 -0
- package/.next/server/chunks/98.js +163 -0
- package/.next/server/chunks/988.js +211 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.js +391 -1
- package/.next/server/pages/404.js.nft.json +1 -1
- package/.next/server/pages/500.js +395 -1
- package/.next/server/pages/500.js.nft.json +1 -1
- package/.next/server/pages/[...slug].js +1076 -1
- package/.next/server/pages/[...slug].js.nft.json +1 -1
- package/.next/server/pages/[slug]/p.js +2265 -1
- package/.next/server/pages/[slug]/p.js.nft.json +1 -1
- package/.next/server/pages/_app.js +301 -1
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/_document.js +363 -1
- package/.next/server/pages/_document.js.nft.json +1 -1
- package/.next/server/pages/_error.js +164 -1
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/pages/account.js +370 -1
- package/.next/server/pages/account.js.nft.json +1 -1
- package/.next/server/pages/api/graphql.js +2999 -1
- package/.next/server/pages/api/graphql.js.nft.json +1 -1
- package/.next/server/pages/api/health/live.js +31 -1
- package/.next/server/pages/api/health/live.js.nft.json +1 -1
- package/.next/server/pages/api/health/ready.js +31 -1
- package/.next/server/pages/api/health/ready.js.nft.json +1 -1
- package/.next/server/pages/api/preview.js +137 -1
- package/.next/server/pages/api/preview.js.nft.json +1 -1
- package/.next/server/pages/checkout.js +370 -1
- package/.next/server/pages/checkout.js.nft.json +1 -1
- package/.next/server/pages/en-US/404.html +2 -2
- package/.next/server/pages/en-US/404.json +1 -1
- package/.next/server/pages/en-US/500.html +2 -2
- package/.next/server/pages/en-US/500.json +1 -1
- package/.next/server/pages/en-US/account.html +2 -2
- package/.next/server/pages/en-US/account.json +1 -1
- package/.next/server/pages/en-US/checkout.html +2 -2
- package/.next/server/pages/en-US/checkout.json +1 -1
- package/.next/server/pages/en-US/login.html +2 -2
- package/.next/server/pages/en-US/login.json +1 -1
- package/.next/server/pages/en-US/s.html +2 -2
- package/.next/server/pages/en-US/s.json +1 -1
- package/.next/server/pages/en-US.html +5 -5
- package/.next/server/pages/en-US.json +1 -1
- package/.next/server/pages/index.js +439 -1
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/login.js +382 -1
- package/.next/server/pages/login.js.nft.json +1 -1
- package/.next/server/pages/s.js +554 -1
- package/.next/server/pages/s.js.nft.json +1 -1
- package/.next/server/pages-manifest.json +18 -1
- package/.next/server/webpack-api-runtime.js +229 -1
- package/.next/server/webpack-runtime.js +229 -1
- package/.next/static/HI-kc1kjNIbFyFsZCeDEA/_buildManifest.js +1 -0
- package/.next/static/chunks/223-cb77217cce52d45c.js +1 -0
- package/.next/static/chunks/251.1c79f06f2a2814b1.js +1 -0
- package/.next/static/chunks/386.d01e0db26c523f0f.js +1 -0
- package/.next/static/chunks/400-d4daabcd57b2ea80.js +1 -0
- package/.next/static/chunks/469-7259b855711d4ad3.js +1 -0
- package/.next/static/chunks/574.70612be06fd1365f.js +1 -0
- package/.next/static/chunks/585.4c5d40fc6a72a611.js +1 -0
- package/.next/static/chunks/651.7142f31ce1e052b3.js +1 -0
- package/.next/static/chunks/741.52f7fb873418346f.js +1 -0
- package/.next/static/chunks/783-fbcb7a3216c40744.js +1 -0
- package/.next/static/chunks/800.ee4f8b9622001e8c.js +1 -0
- package/.next/static/chunks/98.40c7e17d9de4eb8f.js +1 -0
- package/.next/static/chunks/988.afda042dd9ba11d1.js +1 -0
- package/.next/static/chunks/framework-dfd14d7ce6600b03.js +1 -0
- package/.next/static/chunks/main-e4e873ee741162eb.js +1 -0
- package/.next/static/chunks/pages/404-2240f0b22db2d370.js +1 -0
- package/.next/static/chunks/pages/500-c0580e3299329874.js +1 -0
- package/.next/static/chunks/pages/[...slug]-3eed3497c887fae5.js +1 -0
- package/.next/static/chunks/pages/[slug]/p-e1df08570f34a0d8.js +1 -0
- package/.next/static/chunks/pages/_app-30b9666307e4b3b1.js +1 -0
- package/.next/static/chunks/pages/_error-319451dea77827a6.js +1 -0
- package/.next/static/chunks/pages/account-b35bcbef719765f3.js +1 -0
- package/.next/static/chunks/pages/checkout-55bd56ade4408cbe.js +1 -0
- package/.next/static/chunks/pages/index-2506749e45c335bf.js +1 -0
- package/.next/static/chunks/pages/login-3f94bff1503b4fdc.js +1 -0
- package/.next/static/chunks/pages/s-2374cff2e39ed624.js +1 -0
- package/.next/static/chunks/webpack-af94306e71c4459d.js +1 -0
- package/.next/static/css/29868543c76bc6fd.css +1 -0
- package/.next/static/css/527e334fa69cf40a.css +1 -0
- package/.next/static/css/{b9d9ba1b04f3160d.css → 6a7fdc5a21fbead5.css} +1 -1
- package/.next/static/css/723835bce380750d.css +1 -0
- package/.next/static/css/{d586715f4f707df4.css → a2eefb25a4608343.css} +1 -1
- package/.next/static/css/{e32410b31c666cb2.css → cb7d1fcea42fab9c.css} +1 -1
- package/.next/static/css/d7bbfbd552f407e9.css +1 -0
- package/.next/static/css/{2980acad3f8e1028.css → df588bb98c0b0ca6.css} +1 -1
- package/.next/static/css/dfbdb0f27fd64782.css +1 -0
- package/.next/static/css/e84fc497732ea596.css +1 -0
- package/.next/trace +80 -91
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-dev.log +45 -0
- package/@generated/gql.ts +4 -4
- package/@generated/graphql.ts +54 -12
- package/package.json +3 -3
- package/src/components/product/ProductCard/ProductCard.tsx +7 -0
- package/src/components/sections/ProductDetails/ProductDetails.tsx +7 -0
- package/.next/cache/config.json +0 -7
- package/.next/cache/eslint/.cache_1gneedd +0 -1
- package/.next/next-minimal-server.js.nft.json +0 -1
- package/.next/prerender-manifest.js +0 -1
- package/.next/server/chunks/119.js +0 -1
- package/.next/server/chunks/12.js +0 -1
- package/.next/server/chunks/187.js +0 -1
- package/.next/server/chunks/202.js +0 -1
- package/.next/server/chunks/24.js +0 -1
- package/.next/server/chunks/242.js +0 -1
- package/.next/server/chunks/247.js +0 -1
- package/.next/server/chunks/344.js +0 -1
- package/.next/server/chunks/414.js +0 -1
- package/.next/server/chunks/484.js +0 -1
- package/.next/server/chunks/493.js +0 -1
- package/.next/server/chunks/498.js +0 -1
- package/.next/server/chunks/540.js +0 -1
- package/.next/server/chunks/624.js +0 -1
- package/.next/server/chunks/640.js +0 -6
- package/.next/server/chunks/646.js +0 -280
- package/.next/server/chunks/659.js +0 -9
- package/.next/server/chunks/679.js +0 -1
- package/.next/server/chunks/694.js +0 -1
- package/.next/server/chunks/82.js +0 -8
- package/.next/server/chunks/857.js +0 -1
- package/.next/server/chunks/881.js +0 -1
- package/.next/server/chunks/917.js +0 -1
- package/.next/server/chunks/936.js +0 -1
- package/.next/server/chunks/96.js +0 -1
- package/.next/server/chunks/997.js +0 -1
- package/.next/server/functions-config-manifest.json +0 -1
- package/.next/server/next-font-manifest.js +0 -1
- package/.next/server/next-font-manifest.json +0 -1
- package/.next/static/GuDWclSYmL3r-NEqsUOG2/_buildManifest.js +0 -1
- package/.next/static/chunks/104-4f83b1d87ad36358.js +0 -1
- package/.next/static/chunks/161-b39fe2f79ff7bc85.js +0 -1
- package/.next/static/chunks/202.c7d8a71173edecfb.js +0 -1
- package/.next/static/chunks/217.01bc0ad07edd6f1b.js +0 -1
- package/.next/static/chunks/247.6f1391104a867395.js +0 -1
- package/.next/static/chunks/484.b82b73b1d8c37e02.js +0 -1
- package/.next/static/chunks/540.6c62d2536d42a1e0.js +0 -1
- package/.next/static/chunks/575-853fb8b1ba4ce8c4.js +0 -14
- package/.next/static/chunks/624.d3de62b4562a33f3.js +0 -1
- package/.next/static/chunks/629-c74f247bd29420a5.js +0 -1
- package/.next/static/chunks/65.da22595d53beae76.js +0 -1
- package/.next/static/chunks/758.b53ee01b506973e0.js +0 -1
- package/.next/static/chunks/857.d2299cfe995af21d.js +0 -1
- package/.next/static/chunks/framework-8e279965036b6169.js +0 -33
- package/.next/static/chunks/main-6f63f6746cc029db.js +0 -1
- package/.next/static/chunks/pages/404-1334d11ab8467b3d.js +0 -1
- package/.next/static/chunks/pages/500-449c5bd51f98423f.js +0 -1
- package/.next/static/chunks/pages/[...slug]-bcaf61b01157d8cb.js +0 -1
- package/.next/static/chunks/pages/[slug]/p-5fb8fe2c80ec1608.js +0 -1
- package/.next/static/chunks/pages/_app-ad8623e78bc5b766.js +0 -68
- package/.next/static/chunks/pages/_error-fbf331a03642b495.js +0 -1
- package/.next/static/chunks/pages/account-dbc5c028225cd1ac.js +0 -1
- package/.next/static/chunks/pages/checkout-29ae2c37eaf172e1.js +0 -1
- package/.next/static/chunks/pages/index-cd109119d65df8e3.js +0 -1
- package/.next/static/chunks/pages/login-c4d2c856008df5ac.js +0 -1
- package/.next/static/chunks/pages/s-26e475975386c51a.js +0 -1
- package/.next/static/chunks/webpack-b4a2fdf4ef127bb7.js +0 -1
- package/.next/static/css/0d45c82d8887a269.css +0 -1
- package/.next/static/css/211c7542af66d8b4.css +0 -1
- package/.next/static/css/4c4d90eb8cb1d2b7.css +0 -1
- package/.next/static/css/821a5219786be653.css +0 -1
- package/.next/static/css/96e3fddf695d6aa9.css +0 -1
- package/.next/static/css/cff9aafa16fccc9c.css +0 -1
- package/.turbo/turbo-lint.log +0 -2
- package/.turbo/turbo-test.log +0 -23
- package/@generated/graphql/persisted.json +0 -13
- package/@generated/graphql/schema.graphql +0 -1053
- package/@generated/persisted-documents.json +0 -13
- package/@generated/schema.graphql +0 -1055
- /package/.next/static/{GuDWclSYmL3r-NEqsUOG2 → HI-kc1kjNIbFyFsZCeDEA}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,1305 @@
|
|
|
1
|
+
exports.id = 979;
|
|
2
|
+
exports.ids = [979];
|
|
3
|
+
exports.modules = {
|
|
4
|
+
|
|
5
|
+
/***/ 6737:
|
|
6
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7
|
+
|
|
8
|
+
"use strict";
|
|
9
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
10
|
+
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
11
|
+
/* harmony export */ });
|
|
12
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
|
|
13
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
14
|
+
|
|
15
|
+
const ProductShelf = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ProductShelf({ testId = 'fs-product-shelf', children, ...otherProps }, ref) {
|
|
16
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { ref: ref, "data-fs-product-shelf": true, "data-fs-content": "product-shelf", "data-testid": testId, ...otherProps }, children));
|
|
17
|
+
});
|
|
18
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProductShelf);
|
|
19
|
+
//# sourceMappingURL=ProductShelf.js.map
|
|
20
|
+
|
|
21
|
+
/***/ }),
|
|
22
|
+
|
|
23
|
+
/***/ 7599:
|
|
24
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
25
|
+
|
|
26
|
+
"use strict";
|
|
27
|
+
|
|
28
|
+
// EXPORTS
|
|
29
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
30
|
+
"Z": () => (/* binding */ sections_BannerText_BannerText)
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
// EXTERNAL MODULE: external "react"
|
|
34
|
+
var external_react_ = __webpack_require__(6689);
|
|
35
|
+
var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
|
|
36
|
+
;// CONCATENATED MODULE: ../components/dist/esm/organisms/BannerText/BannerText.js
|
|
37
|
+
|
|
38
|
+
const BannerTextContext = (0,external_react_.createContext)(undefined);
|
|
39
|
+
const BannerText = (0,external_react_.forwardRef)(function BannerText({ children, testId = 'fs-banner-text', variant = 'primary', colorVariant = 'main', ...otherProps }, ref) {
|
|
40
|
+
const context = { variant, colorVariant };
|
|
41
|
+
return (external_react_default().createElement(BannerTextContext.Provider, { value: context },
|
|
42
|
+
external_react_default().createElement("article", { ref: ref, "data-fs-banner-text": true, "data-fs-banner-text-variant": variant, "data-fs-banner-text-color-variant": colorVariant, "data-testid": testId, ...otherProps }, children)));
|
|
43
|
+
});
|
|
44
|
+
function useBannerText() {
|
|
45
|
+
const context = (0,external_react_.useContext)(BannerTextContext);
|
|
46
|
+
if (context === undefined) {
|
|
47
|
+
throw new Error('Do not use BannerText components outside the BannerText context.');
|
|
48
|
+
}
|
|
49
|
+
return context;
|
|
50
|
+
}
|
|
51
|
+
/* harmony default export */ const BannerText_BannerText = (BannerText);
|
|
52
|
+
//# sourceMappingURL=BannerText.js.map
|
|
53
|
+
// EXTERNAL MODULE: ../components/dist/esm/molecules/LinkButton/LinkButton.js
|
|
54
|
+
var LinkButton = __webpack_require__(3922);
|
|
55
|
+
;// CONCATENATED MODULE: ../components/dist/esm/organisms/BannerText/BannerTextContent.js
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
const BannerTextContent = (0,external_react_.forwardRef)(function BannerTextContent({ testId = 'fs-banner-text-content', title, caption, link, linkText, linkTargetBlank, ...otherProps }, ref) {
|
|
60
|
+
const { variant, colorVariant } = useBannerText();
|
|
61
|
+
return (external_react_default().createElement("header", { ref: ref, "data-fs-banner-text-content": true, "data-fs-content": "banner-text", "data-testid": testId, ...otherProps },
|
|
62
|
+
external_react_default().createElement("div", { "data-fs-banner-text-heading": true, "data-fs-banner-text-color-variant": colorVariant },
|
|
63
|
+
external_react_default().createElement("h2", null, title),
|
|
64
|
+
variant === 'secondary' && caption && external_react_default().createElement("p", null, caption)),
|
|
65
|
+
external_react_default().createElement(LinkButton/* default */.Z, { "data-fs-banner-text-link": true, href: link, variant: variant, inverse: colorVariant === 'main', "aria-label": linkText, target: linkTargetBlank ? '_blank' : undefined }, linkText)));
|
|
66
|
+
});
|
|
67
|
+
/* harmony default export */ const BannerText_BannerTextContent = (BannerTextContent);
|
|
68
|
+
//# sourceMappingURL=BannerTextContent.js.map
|
|
69
|
+
// EXTERNAL MODULE: ./src/sdk/overrides/overrides.ts
|
|
70
|
+
var overrides = __webpack_require__(7506);
|
|
71
|
+
;// CONCATENATED MODULE: ./src/customizations/src/components/overrides/BannerText.tsx
|
|
72
|
+
// This is an example of how it can be used on the starter.
|
|
73
|
+
const SECTION = 'BannerText';
|
|
74
|
+
const override = {
|
|
75
|
+
section: SECTION
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
;// CONCATENATED MODULE: ./src/components/sections/BannerText/Overrides.tsx
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
const {
|
|
83
|
+
BannerText: Overrides_BannerText,
|
|
84
|
+
BannerTextContent: Overrides_BannerTextContent
|
|
85
|
+
} = (0,overrides/* getSectionOverrides */.f)({
|
|
86
|
+
BannerText: BannerText_BannerText,
|
|
87
|
+
BannerTextContent: BannerText_BannerTextContent
|
|
88
|
+
}, override);
|
|
89
|
+
|
|
90
|
+
// EXTERNAL MODULE: ./src/components/sections/Section/Section.tsx
|
|
91
|
+
var Section = __webpack_require__(3271);
|
|
92
|
+
// EXTERNAL MODULE: ./src/components/sections/BannerText/section.module.scss
|
|
93
|
+
var section_module = __webpack_require__(7283);
|
|
94
|
+
var section_module_default = /*#__PURE__*/__webpack_require__.n(section_module);
|
|
95
|
+
// EXTERNAL MODULE: external "react/jsx-runtime"
|
|
96
|
+
var jsx_runtime_ = __webpack_require__(997);
|
|
97
|
+
;// CONCATENATED MODULE: ./src/components/sections/BannerText/BannerText.tsx
|
|
98
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
99
|
+
|
|
100
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
101
|
+
|
|
102
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
// TODO: Change actionPath and actionLabel with Link
|
|
110
|
+
function BannerText_BannerText_BannerText({
|
|
111
|
+
title,
|
|
112
|
+
caption,
|
|
113
|
+
link: {
|
|
114
|
+
url: linkUrl = Overrides_BannerTextContent.props.link,
|
|
115
|
+
text: linkText = Overrides_BannerTextContent.props.linkText,
|
|
116
|
+
linkTargetBlank = Overrides_BannerTextContent.props.linkTargetBlank
|
|
117
|
+
},
|
|
118
|
+
variant = Overrides_BannerText.props.variant ?? 'primary',
|
|
119
|
+
colorVariant = Overrides_BannerText.props.colorVariant ?? 'main'
|
|
120
|
+
}) {
|
|
121
|
+
return /*#__PURE__*/jsx_runtime_.jsx(Section/* default */.Z, {
|
|
122
|
+
className: `${(section_module_default()).section} section-banner layout__section`,
|
|
123
|
+
children: /*#__PURE__*/jsx_runtime_.jsx("div", {
|
|
124
|
+
className: "layout__content",
|
|
125
|
+
children: /*#__PURE__*/jsx_runtime_.jsx(Overrides_BannerText.Component, _objectSpread(_objectSpread({}, Overrides_BannerText.props), {}, {
|
|
126
|
+
variant: variant,
|
|
127
|
+
colorVariant: colorVariant,
|
|
128
|
+
children: /*#__PURE__*/jsx_runtime_.jsx(Overrides_BannerTextContent.Component, _objectSpread(_objectSpread({}, Overrides_BannerTextContent.props), {}, {
|
|
129
|
+
title: title,
|
|
130
|
+
caption: caption,
|
|
131
|
+
link: linkUrl,
|
|
132
|
+
linkText: linkText,
|
|
133
|
+
linkTargetBlank: linkTargetBlank
|
|
134
|
+
}))
|
|
135
|
+
}))
|
|
136
|
+
})
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/* harmony default export */ const sections_BannerText_BannerText = (BannerText_BannerText_BannerText);
|
|
141
|
+
|
|
142
|
+
/***/ }),
|
|
143
|
+
|
|
144
|
+
/***/ 8170:
|
|
145
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
146
|
+
|
|
147
|
+
"use strict";
|
|
148
|
+
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
149
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
150
|
+
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
151
|
+
/* harmony export */ });
|
|
152
|
+
/* harmony import */ var src_components_ui_Newsletter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(870);
|
|
153
|
+
/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3271);
|
|
154
|
+
/* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7781);
|
|
155
|
+
/* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_section_module_scss__WEBPACK_IMPORTED_MODULE_2__);
|
|
156
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(997);
|
|
157
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
|
|
158
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([src_components_ui_Newsletter__WEBPACK_IMPORTED_MODULE_3__]);
|
|
159
|
+
src_components_ui_Newsletter__WEBPACK_IMPORTED_MODULE_3__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
|
|
160
|
+
const _excluded = ["icon", "title", "description", "privacyPolicy", "emailInputLabel", "displayNameInput", "nameInputLabel", "subscribeButtonLabel", "card", "toastSubscribe", "toastSubscribeError"];
|
|
161
|
+
|
|
162
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
163
|
+
|
|
164
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
165
|
+
|
|
166
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
167
|
+
|
|
168
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
169
|
+
|
|
170
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
const Newsletter = function Newsletter(_ref) {
|
|
178
|
+
let {
|
|
179
|
+
icon,
|
|
180
|
+
title,
|
|
181
|
+
description,
|
|
182
|
+
privacyPolicy,
|
|
183
|
+
emailInputLabel,
|
|
184
|
+
displayNameInput,
|
|
185
|
+
nameInputLabel,
|
|
186
|
+
subscribeButtonLabel,
|
|
187
|
+
card,
|
|
188
|
+
toastSubscribe,
|
|
189
|
+
toastSubscribeError
|
|
190
|
+
} = _ref,
|
|
191
|
+
otherProps = _objectWithoutProperties(_ref, _excluded);
|
|
192
|
+
|
|
193
|
+
return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Section__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, {
|
|
194
|
+
className: `${(_section_module_scss__WEBPACK_IMPORTED_MODULE_2___default().section)} section-newsletter`,
|
|
195
|
+
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(src_components_ui_Newsletter__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, _objectSpread({
|
|
196
|
+
icon: icon,
|
|
197
|
+
title: title,
|
|
198
|
+
description: description,
|
|
199
|
+
privacyPolicy: privacyPolicy,
|
|
200
|
+
emailInputLabel: emailInputLabel,
|
|
201
|
+
displayNameInput: displayNameInput,
|
|
202
|
+
nameInputLabel: nameInputLabel,
|
|
203
|
+
subscribeButtonLabel: subscribeButtonLabel,
|
|
204
|
+
toastSubscribe: toastSubscribe,
|
|
205
|
+
toastSubscribeError: toastSubscribeError,
|
|
206
|
+
card: card
|
|
207
|
+
}, otherProps))
|
|
208
|
+
});
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Newsletter);
|
|
212
|
+
__webpack_async_result__();
|
|
213
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
214
|
+
|
|
215
|
+
/***/ }),
|
|
216
|
+
|
|
217
|
+
/***/ 1546:
|
|
218
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
219
|
+
|
|
220
|
+
"use strict";
|
|
221
|
+
|
|
222
|
+
// EXPORTS
|
|
223
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
224
|
+
"zx": () => (/* binding */ Overrides_Button),
|
|
225
|
+
"N9": () => (/* binding */ HeaderIcon),
|
|
226
|
+
"yk": () => (/* binding */ InputFieldEmail),
|
|
227
|
+
"s9": () => (/* binding */ InputFieldName),
|
|
228
|
+
"eA": () => (/* binding */ ToastIconError),
|
|
229
|
+
"$B": () => (/* binding */ ToastIconSuccess),
|
|
230
|
+
"KN": () => (/* binding */ __experimentalNewsletterAddendum)
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
// EXTERNAL MODULE: ../components/dist/esm/atoms/Icon/Icon.js
|
|
234
|
+
var Icon = __webpack_require__(2614);
|
|
235
|
+
// EXTERNAL MODULE: ../components/dist/esm/molecules/InputField/InputField.js
|
|
236
|
+
var InputField = __webpack_require__(3779);
|
|
237
|
+
// EXTERNAL MODULE: ../components/dist/esm/atoms/Button/Button.js
|
|
238
|
+
var Button = __webpack_require__(3339);
|
|
239
|
+
// EXTERNAL MODULE: external "draftjs-to-html"
|
|
240
|
+
var external_draftjs_to_html_ = __webpack_require__(8641);
|
|
241
|
+
var external_draftjs_to_html_default = /*#__PURE__*/__webpack_require__.n(external_draftjs_to_html_);
|
|
242
|
+
// EXTERNAL MODULE: external "react/jsx-runtime"
|
|
243
|
+
var jsx_runtime_ = __webpack_require__(997);
|
|
244
|
+
;// CONCATENATED MODULE: ./src/components/ui/Newsletter/NewsletterAddendum.tsx
|
|
245
|
+
const _excluded = ["addendum"];
|
|
246
|
+
|
|
247
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
248
|
+
|
|
249
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
250
|
+
|
|
251
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
252
|
+
|
|
253
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
254
|
+
|
|
255
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* TODO:
|
|
259
|
+
*
|
|
260
|
+
* This library hasn't been updated in 4 years at the time of writing.
|
|
261
|
+
*
|
|
262
|
+
* We're using it as a patch, and it is expected that some Rich Text use cases of draftjs are not supported by it.
|
|
263
|
+
* We have the dependency on draftjs because of the way the headless CMS send us the data.
|
|
264
|
+
*
|
|
265
|
+
* This library should be removed as soon as possible, which will probably be possible through one of two cases:
|
|
266
|
+
* 1. We support React Server Components and go back to using the official draftjs library for doing this, only on the server.
|
|
267
|
+
* This is still not the ideal solution, since it still relies on a unsupported, deprecated and archived library (draftjs).
|
|
268
|
+
* 2. CMS uses a new library or changes how it sends the data to not depend on draftjs.
|
|
269
|
+
*
|
|
270
|
+
* This is a limitation not only for this component, but for every native & custom component that makes use of Rich Text.
|
|
271
|
+
*/
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
function getLinkElementAsString(url, text) {
|
|
276
|
+
return `
|
|
277
|
+
<a
|
|
278
|
+
data-fs-link="true"
|
|
279
|
+
data-fs-link-variant="inline"
|
|
280
|
+
data-fs-link-inverse="true"
|
|
281
|
+
data-fs-link-size="regular"
|
|
282
|
+
data-testid="fs-link"
|
|
283
|
+
href="${url}"
|
|
284
|
+
>${text}</a>`;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
function cmsToHtml(addendum) {
|
|
288
|
+
if (!addendum) {
|
|
289
|
+
return '';
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
let rawDraftContentState = null;
|
|
293
|
+
|
|
294
|
+
try {
|
|
295
|
+
rawDraftContentState = JSON.parse(addendum);
|
|
296
|
+
} catch (e) {
|
|
297
|
+
throw new Error('Newsletter\'s prop "addendum" is not a JSON string. This is happening because the overridden prop is malformed or the CMS is providing malformed content for that prop.', {
|
|
298
|
+
cause: e
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
if (!rawDraftContentState) {
|
|
303
|
+
return '';
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
return external_draftjs_to_html_default()(rawDraftContentState, undefined, undefined, (entity, text) => {
|
|
307
|
+
if (entity.type !== 'LINK') {
|
|
308
|
+
return null;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
return getLinkElementAsString(entity.data.url, text);
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
function NewsletterAddendum(_ref) {
|
|
316
|
+
let {
|
|
317
|
+
addendum
|
|
318
|
+
} = _ref,
|
|
319
|
+
otherProps = _objectWithoutProperties(_ref, _excluded);
|
|
320
|
+
|
|
321
|
+
return /*#__PURE__*/jsx_runtime_.jsx("span", _objectSpread({
|
|
322
|
+
"data-fs-newsletter-addendum": true,
|
|
323
|
+
dangerouslySetInnerHTML: {
|
|
324
|
+
__html: cmsToHtml(addendum)
|
|
325
|
+
}
|
|
326
|
+
}, otherProps));
|
|
327
|
+
}
|
|
328
|
+
// EXTERNAL MODULE: ./src/sdk/overrides/overrides.ts
|
|
329
|
+
var overrides = __webpack_require__(7506);
|
|
330
|
+
;// CONCATENATED MODULE: ./src/customizations/src/components/overrides/Newsletter.tsx
|
|
331
|
+
// This is an example of how it can be used on the starter.
|
|
332
|
+
const SECTION = 'Newsletter';
|
|
333
|
+
const override = {
|
|
334
|
+
section: SECTION
|
|
335
|
+
};
|
|
336
|
+
|
|
337
|
+
;// CONCATENATED MODULE: ./src/components/sections/Newsletter/Overrides.tsx
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
const {
|
|
343
|
+
ToastIconSuccess,
|
|
344
|
+
ToastIconError,
|
|
345
|
+
HeaderIcon,
|
|
346
|
+
InputFieldName,
|
|
347
|
+
InputFieldEmail,
|
|
348
|
+
Button: Overrides_Button,
|
|
349
|
+
__experimentalNewsletterAddendum
|
|
350
|
+
} = (0,overrides/* getSectionOverrides */.f)({
|
|
351
|
+
ToastIconSuccess: Icon/* default */.Z,
|
|
352
|
+
ToastIconError: Icon/* default */.Z,
|
|
353
|
+
HeaderIcon: Icon/* default */.Z,
|
|
354
|
+
InputFieldName: InputField/* default */.Z,
|
|
355
|
+
InputFieldEmail: InputField/* default */.Z,
|
|
356
|
+
Button: Button/* default */.Z,
|
|
357
|
+
__experimentalNewsletterAddendum: NewsletterAddendum
|
|
358
|
+
}, override);
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
/***/ }),
|
|
362
|
+
|
|
363
|
+
/***/ 6103:
|
|
364
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
365
|
+
|
|
366
|
+
"use strict";
|
|
367
|
+
|
|
368
|
+
// EXPORTS
|
|
369
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
370
|
+
"IW": () => (/* binding */ Overrides_ProductShelf),
|
|
371
|
+
"EM": () => (/* binding */ __experimentalCarousel),
|
|
372
|
+
"zM": () => (/* binding */ __experimentalProductCard)
|
|
373
|
+
});
|
|
374
|
+
|
|
375
|
+
// EXTERNAL MODULE: ../components/dist/esm/organisms/ProductShelf/ProductShelf.js
|
|
376
|
+
var ProductShelf = __webpack_require__(6737);
|
|
377
|
+
// EXTERNAL MODULE: ./src/components/product/ProductCard/ProductCard.tsx + 3 modules
|
|
378
|
+
var ProductCard = __webpack_require__(8553);
|
|
379
|
+
// EXTERNAL MODULE: external "react"
|
|
380
|
+
var external_react_ = __webpack_require__(6689);
|
|
381
|
+
var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
|
|
382
|
+
// EXTERNAL MODULE: ../components/dist/esm/molecules/IconButton/IconButton.js
|
|
383
|
+
var IconButton = __webpack_require__(7041);
|
|
384
|
+
// EXTERNAL MODULE: ../components/dist/esm/atoms/Icon/Icon.js
|
|
385
|
+
var Icon = __webpack_require__(2614);
|
|
386
|
+
// EXTERNAL MODULE: external "react-swipeable"
|
|
387
|
+
var external_react_swipeable_ = __webpack_require__(3789);
|
|
388
|
+
;// CONCATENATED MODULE: ../components/dist/esm/hooks/useSlider.js
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
const nextPage = (current, total) => (current + 1) % total;
|
|
392
|
+
const previousPage = (current, total) => (total - ((total - current + 1) % total)) % total;
|
|
393
|
+
function reducer(state, action) {
|
|
394
|
+
switch (action.type) {
|
|
395
|
+
case 'NEXT_PAGE': {
|
|
396
|
+
// If `state.infinite` is true, we need to take into account an extra
|
|
397
|
+
// page in the calculation. This extra page is a clone of the first page.
|
|
398
|
+
const adjustedTotalPages = state.infinite
|
|
399
|
+
? state.totalPages + 1
|
|
400
|
+
: state.totalPages;
|
|
401
|
+
const nextPageIndex = nextPage(state.currentPage, adjustedTotalPages);
|
|
402
|
+
const nextItemIndex = (nextPageIndex % adjustedTotalPages) * state.itemsPerPage;
|
|
403
|
+
return {
|
|
404
|
+
...state,
|
|
405
|
+
sliding: true,
|
|
406
|
+
slideDirection: 'next',
|
|
407
|
+
currentItem: nextItemIndex,
|
|
408
|
+
currentPage: nextPageIndex,
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
case 'PREVIOUS_PAGE': {
|
|
412
|
+
// If `state.infinite` is true, we need to take into account an extra
|
|
413
|
+
// page in the calculation. This extra page is a clone of the first page.
|
|
414
|
+
const adjustedTotalPages = state.infinite
|
|
415
|
+
? state.totalPages + 1
|
|
416
|
+
: state.totalPages;
|
|
417
|
+
// If `state.infinite` is true and we're currently on page 0, we need to
|
|
418
|
+
// let the slider go to page -1. This -1 page is a clone of the last page.
|
|
419
|
+
const shouldGoToClone = state.infinite && state.currentPage === 0;
|
|
420
|
+
const previousPageIndex = shouldGoToClone
|
|
421
|
+
? -1
|
|
422
|
+
: previousPage(state.currentPage, state.totalPages);
|
|
423
|
+
return {
|
|
424
|
+
...state,
|
|
425
|
+
sliding: true,
|
|
426
|
+
slideDirection: 'previous',
|
|
427
|
+
currentItem: (previousPageIndex % adjustedTotalPages) * state.itemsPerPage,
|
|
428
|
+
currentPage: previousPageIndex,
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
case 'GO_TO_PAGE': {
|
|
432
|
+
if (action.payload.pageIndex === state.currentPage) {
|
|
433
|
+
return state;
|
|
434
|
+
}
|
|
435
|
+
return {
|
|
436
|
+
...state,
|
|
437
|
+
sliding: action.payload.shouldSlide,
|
|
438
|
+
slideDirection: action.payload.pageIndex > state.currentPage ? 'next' : 'previous',
|
|
439
|
+
currentItem: (action.payload.pageIndex % state.totalPages) * state.itemsPerPage,
|
|
440
|
+
currentPage: action.payload.pageIndex,
|
|
441
|
+
};
|
|
442
|
+
}
|
|
443
|
+
case 'STOP_SLIDE':
|
|
444
|
+
return { ...state, sliding: false };
|
|
445
|
+
default:
|
|
446
|
+
return state;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
const defaultSliderState = (totalItems, itemsPerPage, infinite) => ({
|
|
450
|
+
currentItem: 0,
|
|
451
|
+
currentPage: 0,
|
|
452
|
+
sliding: false,
|
|
453
|
+
slideDirection: 'next',
|
|
454
|
+
totalItems,
|
|
455
|
+
itemsPerPage,
|
|
456
|
+
totalPages: Math.ceil(totalItems / itemsPerPage),
|
|
457
|
+
infinite,
|
|
458
|
+
});
|
|
459
|
+
const slide = (page, dispatch) => {
|
|
460
|
+
if (page === 'next') {
|
|
461
|
+
dispatch({ type: 'NEXT_PAGE' });
|
|
462
|
+
}
|
|
463
|
+
if (page === 'previous') {
|
|
464
|
+
dispatch({ type: 'PREVIOUS_PAGE' });
|
|
465
|
+
}
|
|
466
|
+
if (typeof page === 'number') {
|
|
467
|
+
dispatch({
|
|
468
|
+
type: 'GO_TO_PAGE',
|
|
469
|
+
payload: {
|
|
470
|
+
pageIndex: page,
|
|
471
|
+
shouldSlide: true,
|
|
472
|
+
},
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
};
|
|
476
|
+
const useSlider = ({ totalItems, itemsPerPage = 1, infiniteMode = false, shouldSlideOnSwipe = true, ...swipeableConfigOverrides }) => {
|
|
477
|
+
const [sliderState, sliderDispatch] = (0,external_react_.useReducer)(reducer, undefined, () => defaultSliderState(totalItems, itemsPerPage, infiniteMode));
|
|
478
|
+
const handlers = (0,external_react_swipeable_.useSwipeable)({
|
|
479
|
+
onSwipedRight: () => shouldSlideOnSwipe && slide('previous', sliderDispatch),
|
|
480
|
+
onSwipedLeft: () => shouldSlideOnSwipe && slide('next', sliderDispatch),
|
|
481
|
+
trackMouse: true,
|
|
482
|
+
...swipeableConfigOverrides,
|
|
483
|
+
});
|
|
484
|
+
return {
|
|
485
|
+
handlers,
|
|
486
|
+
slide,
|
|
487
|
+
sliderState,
|
|
488
|
+
sliderDispatch,
|
|
489
|
+
};
|
|
490
|
+
};
|
|
491
|
+
//# sourceMappingURL=useSlider.js.map
|
|
492
|
+
// EXTERNAL MODULE: ../components/dist/esm/atoms/Button/Button.js
|
|
493
|
+
var Button = __webpack_require__(3339);
|
|
494
|
+
;// CONCATENATED MODULE: ../components/dist/esm/molecules/Carousel/CarouselBullets.js
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
const defaultAriaLabel = (id, idx, isActive) => isActive ? `Current page from ${id}` : `Go to page ${idx + 1} from ${id}`;
|
|
498
|
+
const CarouselBullets = (0,external_react_.forwardRef)(function Bullets({ id, totalQuantity, activeBullet, onClick, testId = 'fs-carousel-bullets', ariaLabelGenerator = defaultAriaLabel, ariaControlsGenerator, ...otherProps }, ref) {
|
|
499
|
+
const bulletIndexes = (0,external_react_.useMemo)(() => Array(totalQuantity).fill(0), [totalQuantity]);
|
|
500
|
+
return (external_react_default().createElement("div", { ref: ref, "data-fs-carousel-bullets": true, "data-testid": testId, role: "tablist", ...otherProps }, bulletIndexes.map((_, idx) => {
|
|
501
|
+
const isActive = activeBullet === idx;
|
|
502
|
+
return (external_react_default().createElement(Button/* default */.Z, { key: `${id}-${idx}`, role: "tab", tabIndex: -1, "data-fs-carousel-bullet": true, testId: `${testId}-bullet`, onClick: (e) => onClick(e, idx), "aria-label": ariaLabelGenerator(id, idx, isActive), "aria-controls": ariaControlsGenerator?.(idx), "aria-selected": isActive, variant: "tertiary" }));
|
|
503
|
+
})));
|
|
504
|
+
});
|
|
505
|
+
/* harmony default export */ const Carousel_CarouselBullets = (CarouselBullets);
|
|
506
|
+
//# sourceMappingURL=CarouselBullets.js.map
|
|
507
|
+
;// CONCATENATED MODULE: ../components/dist/esm/hooks/useSlideVisibility.js
|
|
508
|
+
|
|
509
|
+
function isSlideVisible({ itemsPerPage, currentSlide, slideIdx, totalItems, }) {
|
|
510
|
+
const isClonedSlide = currentSlide < 0 || currentSlide >= totalItems;
|
|
511
|
+
const isVisible = slideIdx >= currentSlide && slideIdx < currentSlide + itemsPerPage;
|
|
512
|
+
return isClonedSlide || isVisible;
|
|
513
|
+
}
|
|
514
|
+
const useSlideVisibility = ({ currentSlide, itemsPerPage, totalItems, }) => {
|
|
515
|
+
/** Keeps track of slides that have been visualized before.
|
|
516
|
+
* We want to keep rendering them because the issue is mostly rendering
|
|
517
|
+
* slides that might never be viewed; On the other hand, hiding slides
|
|
518
|
+
* that were visible causes visual glitches */
|
|
519
|
+
const visitedSlides = (0,external_react_.useRef)(new Set());
|
|
520
|
+
(0,external_react_.useEffect)(() => {
|
|
521
|
+
for (let i = 0; i < itemsPerPage; i++) {
|
|
522
|
+
visitedSlides.current.add(currentSlide + i);
|
|
523
|
+
}
|
|
524
|
+
}, [currentSlide, itemsPerPage]);
|
|
525
|
+
const isItemVisible = (index) => isSlideVisible({
|
|
526
|
+
slideIdx: index,
|
|
527
|
+
currentSlide,
|
|
528
|
+
itemsPerPage,
|
|
529
|
+
totalItems,
|
|
530
|
+
});
|
|
531
|
+
const shouldRenderItem = (index) => {
|
|
532
|
+
return visitedSlides.current.has(index) || isItemVisible(index);
|
|
533
|
+
};
|
|
534
|
+
return { shouldRenderItem, isItemVisible };
|
|
535
|
+
};
|
|
536
|
+
//# sourceMappingURL=useSlideVisibility.js.map
|
|
537
|
+
;// CONCATENATED MODULE: ../components/dist/esm/molecules/Carousel/CarouselItem.js
|
|
538
|
+
|
|
539
|
+
|
|
540
|
+
function CarouselItem({ id, index, state, children, totalItems, infiniteMode, isScrollCarousel, marginRightValue, }) {
|
|
541
|
+
const { isItemVisible, shouldRenderItem } = useSlideVisibility({
|
|
542
|
+
totalItems,
|
|
543
|
+
currentSlide: state.currentItem,
|
|
544
|
+
itemsPerPage: state.itemsPerPage,
|
|
545
|
+
});
|
|
546
|
+
const defaultStyle = { width: '100%' };
|
|
547
|
+
const scrollCarouselStyle = {
|
|
548
|
+
width: `calc((100% - ${marginRightValue} * ${state.itemsPerPage - 1}) / ${state.itemsPerPage})`,
|
|
549
|
+
};
|
|
550
|
+
const style = isScrollCarousel && state.itemsPerPage > 1
|
|
551
|
+
? { ...scrollCarouselStyle }
|
|
552
|
+
: { ...defaultStyle };
|
|
553
|
+
const shouldDisplayItem = isScrollCarousel || shouldRenderItem(index - Number(infiniteMode));
|
|
554
|
+
return (external_react_default().createElement("li", { style: style, id: `${id}-carousel-item-${index}`, "data-fs-carousel-item": true, "data-fs-carousel-item-visible": isItemVisible(index - Number(infiniteMode)) || undefined }, shouldDisplayItem ? children : null));
|
|
555
|
+
}
|
|
556
|
+
/* harmony default export */ const Carousel_CarouselItem = (CarouselItem);
|
|
557
|
+
//# sourceMappingURL=CarouselItem.js.map
|
|
558
|
+
;// CONCATENATED MODULE: ../components/dist/esm/molecules/Carousel/Carousel.js
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
const createTransformValues = (infinite, totalItems) => {
|
|
565
|
+
const transformMap = {};
|
|
566
|
+
const slideWidth = 100 / totalItems;
|
|
567
|
+
for (let idx = 0; idx < totalItems; ++idx) {
|
|
568
|
+
const currIdx = infinite ? idx - 1 : idx;
|
|
569
|
+
const transformValue = -(slideWidth * idx);
|
|
570
|
+
transformMap[currIdx] = transformValue;
|
|
571
|
+
}
|
|
572
|
+
return transformMap;
|
|
573
|
+
};
|
|
574
|
+
function Carousel({ children, className, 'aria-label': ariaLabel, infiniteMode = false, controls = 'complete', testId = 'fs-carousel', transition = {
|
|
575
|
+
duration: 400,
|
|
576
|
+
property: 'transform',
|
|
577
|
+
}, id = 'fs-carousel', variant = 'scroll', itemsPerPage = 1, navigationIcons = undefined, ...swipeableConfigOverrides }) {
|
|
578
|
+
if (itemsPerPage < 1) {
|
|
579
|
+
throw new Error('itemsPerPage must be greater than or equal to 1');
|
|
580
|
+
}
|
|
581
|
+
const carouselTrackRef = (0,external_react_.useRef)(null);
|
|
582
|
+
const isSlideCarousel = variant === 'slide';
|
|
583
|
+
const isScrollCarousel = variant === 'scroll';
|
|
584
|
+
const childrenArray = external_react_default().Children.toArray(children);
|
|
585
|
+
const childrenCount = childrenArray.length;
|
|
586
|
+
const numberOfSlides = infiniteMode ? childrenCount + 2 : childrenCount;
|
|
587
|
+
const slidingTransition = `${transition.property} ${transition.duration}ms ${transition.timing ?? ''} ${transition.delay ?? ''}`;
|
|
588
|
+
const { handlers, slide, sliderState, sliderDispatch } = useSlider({
|
|
589
|
+
itemsPerPage,
|
|
590
|
+
infiniteMode,
|
|
591
|
+
totalItems: childrenCount,
|
|
592
|
+
shouldSlideOnSwipe: isSlideCarousel,
|
|
593
|
+
...swipeableConfigOverrides,
|
|
594
|
+
});
|
|
595
|
+
const pagesCount = Math.ceil(childrenCount / sliderState.itemsPerPage);
|
|
596
|
+
const [marginRight, setMarginRight] = (0,external_react_.useState)('16px');
|
|
597
|
+
const [carouselItemsWidth, setCarouselItemsWidth] = (0,external_react_.useState)(0);
|
|
598
|
+
(0,external_react_.useEffect)(() => {
|
|
599
|
+
const item = carouselTrackRef.current?.firstElementChild;
|
|
600
|
+
if (item) {
|
|
601
|
+
setMarginRight(getComputedStyle(item).getPropertyValue('margin-right'));
|
|
602
|
+
setCarouselItemsWidth(Number(item.clientWidth) + parseInt(marginRight, 10) + 1);
|
|
603
|
+
}
|
|
604
|
+
}, [carouselItemsWidth]);
|
|
605
|
+
const showNavigationArrows = pagesCount !== 1 &&
|
|
606
|
+
(controls === 'complete' || controls === 'navigationArrows');
|
|
607
|
+
const showPaginationBullets = pagesCount !== 1 &&
|
|
608
|
+
(controls === 'complete' || controls === 'paginationBullets');
|
|
609
|
+
const transformValues = (0,external_react_.useMemo)(() => createTransformValues(infiniteMode, numberOfSlides), [numberOfSlides, infiniteMode]);
|
|
610
|
+
const postRenderedSlides = infiniteMode && children ? childrenArray.slice(0, 1) : [];
|
|
611
|
+
const preRenderedSlides = infiniteMode && children ? childrenArray.slice(childrenCount - 1) : [];
|
|
612
|
+
const slides = preRenderedSlides.concat(children ?? [], postRenderedSlides);
|
|
613
|
+
const slideCarouselTrackStyle = (0,external_react_.useMemo)(() => ({
|
|
614
|
+
width: `${numberOfSlides * 100}%`,
|
|
615
|
+
transition: sliderState.sliding ? slidingTransition : undefined,
|
|
616
|
+
transform: `translate3d(${transformValues[sliderState.currentPage]}%, 0, 0)`,
|
|
617
|
+
}), [
|
|
618
|
+
numberOfSlides,
|
|
619
|
+
transformValues,
|
|
620
|
+
slidingTransition,
|
|
621
|
+
sliderState.sliding,
|
|
622
|
+
sliderState.currentPage,
|
|
623
|
+
]);
|
|
624
|
+
const scrollCarouselTrackStyle = (0,external_react_.useMemo)(() => ({
|
|
625
|
+
width: '100%',
|
|
626
|
+
overflowX: 'scroll',
|
|
627
|
+
whiteSpace: 'nowrap',
|
|
628
|
+
}), []);
|
|
629
|
+
const carouselTrackStyle = (isSlideCarousel && slideCarouselTrackStyle) ||
|
|
630
|
+
(isScrollCarousel && scrollCarouselTrackStyle);
|
|
631
|
+
const slidePrevious = () => {
|
|
632
|
+
if (sliderState.sliding ||
|
|
633
|
+
(!infiniteMode && sliderState.currentPage === 0)) {
|
|
634
|
+
return;
|
|
635
|
+
}
|
|
636
|
+
slide('previous', sliderDispatch);
|
|
637
|
+
};
|
|
638
|
+
const slideNext = () => {
|
|
639
|
+
if (sliderState.sliding ||
|
|
640
|
+
(!infiniteMode && sliderState.currentPage === childrenCount - 1)) {
|
|
641
|
+
return;
|
|
642
|
+
}
|
|
643
|
+
slide('next', sliderDispatch);
|
|
644
|
+
};
|
|
645
|
+
const onScrollTrack = (event) => {
|
|
646
|
+
if (isSlideCarousel || itemsPerPage > 1) {
|
|
647
|
+
return;
|
|
648
|
+
}
|
|
649
|
+
const itemWidth = Number(event.currentTarget.firstElementChild?.scrollWidth);
|
|
650
|
+
const scrollOffset = event.currentTarget?.scrollLeft;
|
|
651
|
+
const formatter = scrollOffset > itemWidth / 2 ? Math.round : Math.floor;
|
|
652
|
+
const page = formatter(scrollOffset / itemWidth);
|
|
653
|
+
slide(page, sliderDispatch);
|
|
654
|
+
};
|
|
655
|
+
const onTransitionTrackEnd = () => {
|
|
656
|
+
sliderDispatch({
|
|
657
|
+
type: 'STOP_SLIDE',
|
|
658
|
+
});
|
|
659
|
+
if (infiniteMode && sliderState.currentItem >= childrenCount) {
|
|
660
|
+
sliderDispatch({
|
|
661
|
+
type: 'GO_TO_PAGE',
|
|
662
|
+
payload: {
|
|
663
|
+
pageIndex: 0,
|
|
664
|
+
shouldSlide: false,
|
|
665
|
+
},
|
|
666
|
+
});
|
|
667
|
+
}
|
|
668
|
+
if (infiniteMode && sliderState.currentItem < 0) {
|
|
669
|
+
sliderDispatch({
|
|
670
|
+
type: 'GO_TO_PAGE',
|
|
671
|
+
payload: {
|
|
672
|
+
pageIndex: sliderState.totalPages - 1,
|
|
673
|
+
shouldSlide: false,
|
|
674
|
+
},
|
|
675
|
+
});
|
|
676
|
+
}
|
|
677
|
+
};
|
|
678
|
+
const onScrollPagination = async (index, slideDirection) => {
|
|
679
|
+
if (slideDirection === 'previous' && sliderState.currentPage === 0) {
|
|
680
|
+
return;
|
|
681
|
+
}
|
|
682
|
+
if (slideDirection === 'next' &&
|
|
683
|
+
sliderState.currentPage === sliderState.totalPages - 1) {
|
|
684
|
+
return;
|
|
685
|
+
}
|
|
686
|
+
let scrollOffset = index * carouselItemsWidth * itemsPerPage;
|
|
687
|
+
carouselTrackRef.current?.scrollTo({
|
|
688
|
+
left: scrollOffset,
|
|
689
|
+
behavior: 'smooth',
|
|
690
|
+
});
|
|
691
|
+
slide(index, sliderDispatch);
|
|
692
|
+
};
|
|
693
|
+
// accessible behavior for tablist
|
|
694
|
+
const handleBulletsKeyDown = (event) => {
|
|
695
|
+
switch (event.key) {
|
|
696
|
+
case 'ArrowLeft': {
|
|
697
|
+
isSlideCarousel && slidePrevious();
|
|
698
|
+
isScrollCarousel &&
|
|
699
|
+
onScrollPagination(sliderState.currentPage - 1, 'previous');
|
|
700
|
+
break;
|
|
701
|
+
}
|
|
702
|
+
case 'ArrowRight': {
|
|
703
|
+
isSlideCarousel && slideNext();
|
|
704
|
+
isScrollCarousel &&
|
|
705
|
+
onScrollPagination(sliderState.currentPage + 1, 'next');
|
|
706
|
+
break;
|
|
707
|
+
}
|
|
708
|
+
case 'Home': {
|
|
709
|
+
slide(0, sliderDispatch);
|
|
710
|
+
break;
|
|
711
|
+
}
|
|
712
|
+
case 'End': {
|
|
713
|
+
slide(childrenCount - 1, sliderDispatch);
|
|
714
|
+
break;
|
|
715
|
+
}
|
|
716
|
+
default:
|
|
717
|
+
}
|
|
718
|
+
};
|
|
719
|
+
return (external_react_default().createElement("section", { id: id, "data-fs-carousel": true, "data-fs-carousel-variant": variant, className: className, "data-testid": testId, "aria-label": ariaLabel },
|
|
720
|
+
external_react_default().createElement("div", { "data-fs-carousel-track-container": true, style: {
|
|
721
|
+
width: '100%',
|
|
722
|
+
overflow: 'hidden',
|
|
723
|
+
display: isScrollCarousel ? 'block' : undefined,
|
|
724
|
+
}, ...handlers },
|
|
725
|
+
external_react_default().createElement("ul", { "aria-live": "polite", ref: carouselTrackRef, style: carouselTrackStyle, "data-fs-carousel-track": true, onScroll: onScrollTrack, onTransitionEnd: onTransitionTrackEnd }, slides.map((currentSlide, idx) => (external_react_default().createElement(Carousel_CarouselItem, { id: id, index: idx, key: String(idx), state: sliderState, totalItems: childrenCount, infiniteMode: infiniteMode, isScrollCarousel: isScrollCarousel, marginRightValue: marginRight }, currentSlide))))),
|
|
726
|
+
showNavigationArrows && (external_react_default().createElement("div", { "data-fs-carousel-controls": true },
|
|
727
|
+
external_react_default().createElement(IconButton/* default */.Z, { "data-fs-carousel-control": "left", "aria-controls": id, disabled: !infiniteMode && sliderState.currentPage === 0, "aria-label": "previous", icon: navigationIcons?.left ?? (external_react_default().createElement(Icon/* default */.Z, { name: "ArrowLeft", width: 20, height: 20, weight: "bold" })), onClick: () => {
|
|
728
|
+
isSlideCarousel && slidePrevious();
|
|
729
|
+
isScrollCarousel &&
|
|
730
|
+
onScrollPagination(sliderState.currentPage - 1, 'previous');
|
|
731
|
+
} }),
|
|
732
|
+
external_react_default().createElement(IconButton/* default */.Z, { "data-fs-carousel-control": "right", "aria-controls": id, disabled: !infiniteMode &&
|
|
733
|
+
sliderState.currentPage === sliderState.totalPages - 1, "aria-label": "next", icon: navigationIcons?.right ?? (external_react_default().createElement(Icon/* default */.Z, { name: "ArrowRight", width: 20, height: 20, weight: "bold" })), onClick: () => {
|
|
734
|
+
isSlideCarousel && slideNext();
|
|
735
|
+
isScrollCarousel &&
|
|
736
|
+
onScrollPagination(sliderState.currentPage + 1, 'next');
|
|
737
|
+
} }))),
|
|
738
|
+
showPaginationBullets && (external_react_default().createElement(Carousel_CarouselBullets, { id: id, tabIndex: 0, activeBullet: sliderState.currentPage, totalQuantity: pagesCount, onKeyDown: handleBulletsKeyDown, onClick: async (_, idx) => {
|
|
739
|
+
isSlideCarousel &&
|
|
740
|
+
!sliderState.sliding &&
|
|
741
|
+
slide(idx, sliderDispatch);
|
|
742
|
+
isScrollCarousel && onScrollPagination(idx);
|
|
743
|
+
}, onFocus: (event) => event.currentTarget.focus(), ariaControlsGenerator: (idx) => `${id}-carousel-item-${idx}` }))));
|
|
744
|
+
}
|
|
745
|
+
/* harmony default export */ const Carousel_Carousel = (Carousel);
|
|
746
|
+
//# sourceMappingURL=Carousel.js.map
|
|
747
|
+
// EXTERNAL MODULE: external "react/jsx-runtime"
|
|
748
|
+
var jsx_runtime_ = __webpack_require__(997);
|
|
749
|
+
;// CONCATENATED MODULE: ./src/components/ui/Carousel/Carousel.tsx
|
|
750
|
+
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
function Carousel_Carousel_Carousel({
|
|
754
|
+
id,
|
|
755
|
+
testId,
|
|
756
|
+
children,
|
|
757
|
+
itemsPerPage,
|
|
758
|
+
variant = 'scroll',
|
|
759
|
+
infiniteMode = false
|
|
760
|
+
}) {
|
|
761
|
+
const isMobile = window.innerWidth <= 768;
|
|
762
|
+
return /*#__PURE__*/jsx_runtime_.jsx(Carousel_Carousel, {
|
|
763
|
+
id: id,
|
|
764
|
+
testId: testId,
|
|
765
|
+
variant: variant,
|
|
766
|
+
infiniteMode: infiniteMode,
|
|
767
|
+
itemsPerPage: isMobile ? 1.6 : itemsPerPage,
|
|
768
|
+
children: children
|
|
769
|
+
});
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
/* harmony default export */ const ui_Carousel_Carousel = (Carousel_Carousel_Carousel);
|
|
773
|
+
// EXTERNAL MODULE: ./src/sdk/overrides/overrides.ts
|
|
774
|
+
var overrides = __webpack_require__(7506);
|
|
775
|
+
;// CONCATENATED MODULE: ./src/customizations/src/components/overrides/ProductShelf.tsx
|
|
776
|
+
// This is an example of how it can be used on the starter.
|
|
777
|
+
const SECTION = 'ProductShelf';
|
|
778
|
+
const override = {
|
|
779
|
+
section: SECTION
|
|
780
|
+
};
|
|
781
|
+
|
|
782
|
+
;// CONCATENATED MODULE: ./src/components/sections/ProductShelf/Overrides.tsx
|
|
783
|
+
|
|
784
|
+
|
|
785
|
+
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
const {
|
|
789
|
+
ProductShelf: Overrides_ProductShelf,
|
|
790
|
+
__experimentalCarousel,
|
|
791
|
+
__experimentalProductCard
|
|
792
|
+
} = (0,overrides/* getSectionOverrides */.f)({
|
|
793
|
+
ProductShelf: ProductShelf/* default */.Z,
|
|
794
|
+
__experimentalCarousel: ui_Carousel_Carousel,
|
|
795
|
+
__experimentalProductCard: ProductCard/* default */.Z
|
|
796
|
+
}, override);
|
|
797
|
+
|
|
798
|
+
|
|
799
|
+
/***/ }),
|
|
800
|
+
|
|
801
|
+
/***/ 6523:
|
|
802
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
803
|
+
|
|
804
|
+
"use strict";
|
|
805
|
+
|
|
806
|
+
// EXPORTS
|
|
807
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
808
|
+
"Z": () => (/* binding */ ProductShelfSkeleton_ProductShelfSkeleton)
|
|
809
|
+
});
|
|
810
|
+
|
|
811
|
+
// EXTERNAL MODULE: ../components/dist/esm/organisms/ProductShelf/ProductShelf.js
|
|
812
|
+
var ProductShelf = __webpack_require__(6737);
|
|
813
|
+
// EXTERNAL MODULE: external "react"
|
|
814
|
+
var external_react_ = __webpack_require__(6689);
|
|
815
|
+
var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
|
|
816
|
+
;// CONCATENATED MODULE: ../components/dist/esm/organisms/ProductShelf/ProductShelfItems.js
|
|
817
|
+
|
|
818
|
+
const ProductShelfItems = (0,external_react_.forwardRef)(function ProductShelfItems({ testId = 'fs-product-shelf-items', children, ...otherProps }, ref) {
|
|
819
|
+
return (external_react_default().createElement("ul", { role: "list", ref: ref, "data-fs-product-shelf-items": true, "data-fs-content": "product-shelf", "data-testid": testId, ...otherProps }, children));
|
|
820
|
+
});
|
|
821
|
+
/* harmony default export */ const ProductShelf_ProductShelfItems = (ProductShelfItems);
|
|
822
|
+
//# sourceMappingURL=ProductShelfItems.js.map
|
|
823
|
+
;// CONCATENATED MODULE: ../components/dist/esm/organisms/ProductShelf/ProductShelfItem.js
|
|
824
|
+
|
|
825
|
+
const ProductShelfItem = (0,external_react_.forwardRef)(function ProductShelfItem({ testId = 'fs-product-shelf-item', children, ...otherProps }, ref) {
|
|
826
|
+
return (external_react_default().createElement("li", { role: "listitem", ref: ref, "data-fs-product-shelf-item": true, "data-testid": testId, ...otherProps }, children));
|
|
827
|
+
});
|
|
828
|
+
/* harmony default export */ const ProductShelf_ProductShelfItem = (ProductShelfItem);
|
|
829
|
+
//# sourceMappingURL=ProductShelfItem.js.map
|
|
830
|
+
// EXTERNAL MODULE: ./src/components/skeletons/ProductCardSkeleton/ProductCardSkeleton.tsx
|
|
831
|
+
var ProductCardSkeleton = __webpack_require__(6531);
|
|
832
|
+
// EXTERNAL MODULE: external "react/jsx-runtime"
|
|
833
|
+
var jsx_runtime_ = __webpack_require__(997);
|
|
834
|
+
;// CONCATENATED MODULE: ./src/components/skeletons/ProductShelfSkeleton/ProductShelfSkeleton.tsx
|
|
835
|
+
|
|
836
|
+
|
|
837
|
+
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
function ProductShelfSkeleton({
|
|
841
|
+
children,
|
|
842
|
+
aspectRatio,
|
|
843
|
+
itemsPerPage,
|
|
844
|
+
loading = true
|
|
845
|
+
}) {
|
|
846
|
+
return loading ? /*#__PURE__*/jsx_runtime_.jsx(ProductShelf/* default */.Z, {
|
|
847
|
+
"data-fs-product-shelf-skeleton": true,
|
|
848
|
+
children: /*#__PURE__*/jsx_runtime_.jsx(ProductShelf_ProductShelfItems, {
|
|
849
|
+
children: Array.from({
|
|
850
|
+
length: itemsPerPage
|
|
851
|
+
}, (_, index) => /*#__PURE__*/jsx_runtime_.jsx(ProductShelf_ProductShelfItem, {
|
|
852
|
+
children: /*#__PURE__*/jsx_runtime_.jsx(ProductCardSkeleton/* default */.Z, {
|
|
853
|
+
aspectRatio: aspectRatio,
|
|
854
|
+
sectioned: true,
|
|
855
|
+
bordered: true
|
|
856
|
+
})
|
|
857
|
+
}, String(index)))
|
|
858
|
+
})
|
|
859
|
+
}) : /*#__PURE__*/jsx_runtime_.jsx(jsx_runtime_.Fragment, {
|
|
860
|
+
children: children
|
|
861
|
+
});
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
/* harmony default export */ const ProductShelfSkeleton_ProductShelfSkeleton = (ProductShelfSkeleton);
|
|
865
|
+
|
|
866
|
+
/***/ }),
|
|
867
|
+
|
|
868
|
+
/***/ 870:
|
|
869
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
870
|
+
|
|
871
|
+
"use strict";
|
|
872
|
+
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
873
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
874
|
+
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
875
|
+
/* harmony export */ });
|
|
876
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
|
|
877
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
878
|
+
/* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6652);
|
|
879
|
+
/* harmony import */ var src_sdk_newsletter_useNewsletter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5822);
|
|
880
|
+
/* harmony import */ var src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1546);
|
|
881
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(997);
|
|
882
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__);
|
|
883
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([src_sdk_newsletter_useNewsletter__WEBPACK_IMPORTED_MODULE_2__]);
|
|
884
|
+
src_sdk_newsletter_useNewsletter__WEBPACK_IMPORTED_MODULE_2__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
|
|
885
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
886
|
+
|
|
887
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
888
|
+
|
|
889
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
890
|
+
|
|
891
|
+
|
|
892
|
+
|
|
893
|
+
|
|
894
|
+
|
|
895
|
+
|
|
896
|
+
|
|
897
|
+
|
|
898
|
+
const Newsletter = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function Newsletter({
|
|
899
|
+
icon,
|
|
900
|
+
title,
|
|
901
|
+
description,
|
|
902
|
+
privacyPolicy,
|
|
903
|
+
emailInputLabel,
|
|
904
|
+
displayNameInput,
|
|
905
|
+
nameInputLabel,
|
|
906
|
+
subscribeButtonLabel,
|
|
907
|
+
subscribeButtonLoadingLabel,
|
|
908
|
+
card,
|
|
909
|
+
toastSubscribe,
|
|
910
|
+
toastSubscribeError
|
|
911
|
+
}, ref) {
|
|
912
|
+
const {
|
|
913
|
+
subscribeUser,
|
|
914
|
+
loading,
|
|
915
|
+
data
|
|
916
|
+
} = (0,src_sdk_newsletter_useNewsletter__WEBPACK_IMPORTED_MODULE_2__/* .useNewsletter */ .u)();
|
|
917
|
+
const nameInputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
|
|
918
|
+
const emailInputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
|
|
919
|
+
const {
|
|
920
|
+
pushToast
|
|
921
|
+
} = (0,_faststore_ui__WEBPACK_IMPORTED_MODULE_3__/* .useUI */ .l)();
|
|
922
|
+
|
|
923
|
+
const handleSubmit = event => {
|
|
924
|
+
event.preventDefault();
|
|
925
|
+
subscribeUser({
|
|
926
|
+
data: {
|
|
927
|
+
name: nameInputRef.current?.value ?? '',
|
|
928
|
+
email: emailInputRef.current?.value ?? ''
|
|
929
|
+
}
|
|
930
|
+
});
|
|
931
|
+
|
|
932
|
+
if (data?.subscribeToNewsletter?.id) {
|
|
933
|
+
pushToast(_objectSpread(_objectSpread({}, toastSubscribe), {}, {
|
|
934
|
+
status: 'INFO',
|
|
935
|
+
icon: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx(src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .ToastIconSuccess.Component */ .$B.Component, _objectSpread(_objectSpread({
|
|
936
|
+
width: 30,
|
|
937
|
+
height: 30
|
|
938
|
+
}, src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .ToastIconSuccess.props */ .$B.props), {}, {
|
|
939
|
+
name: toastSubscribe.icon ?? src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .ToastIconSuccess.props.name */ .$B.props.name
|
|
940
|
+
}))
|
|
941
|
+
}));
|
|
942
|
+
} else {
|
|
943
|
+
pushToast(_objectSpread(_objectSpread({}, toastSubscribeError), {}, {
|
|
944
|
+
status: 'ERROR',
|
|
945
|
+
icon: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx(src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .ToastIconError.Component */ .eA.Component, _objectSpread(_objectSpread({
|
|
946
|
+
width: 30,
|
|
947
|
+
height: 30
|
|
948
|
+
}, src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .ToastIconError.props */ .eA.props), {}, {
|
|
949
|
+
name: toastSubscribe.icon ?? src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .ToastIconError.props.name */ .eA.props.name
|
|
950
|
+
}))
|
|
951
|
+
}));
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
const formElement = event.currentTarget;
|
|
955
|
+
formElement.reset();
|
|
956
|
+
};
|
|
957
|
+
|
|
958
|
+
return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx("div", {
|
|
959
|
+
"data-fs-newsletter": card ? 'card' : '',
|
|
960
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)("form", {
|
|
961
|
+
ref: ref,
|
|
962
|
+
"data-fs-newsletter-form": true,
|
|
963
|
+
"data-fs-content": "newsletter",
|
|
964
|
+
onSubmit: handleSubmit,
|
|
965
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)("header", {
|
|
966
|
+
"data-fs-newsletter-header": true,
|
|
967
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)("h3", {
|
|
968
|
+
children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx(src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .HeaderIcon.Component */ .N9.Component, _objectSpread(_objectSpread({
|
|
969
|
+
width: 32,
|
|
970
|
+
height: 32
|
|
971
|
+
}, src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .HeaderIcon.props */ .N9.props), {}, {
|
|
972
|
+
name: icon?.icon ?? src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .HeaderIcon.props.name */ .N9.props.name
|
|
973
|
+
})), title]
|
|
974
|
+
}), description && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)("span", {
|
|
975
|
+
children: [" ", description]
|
|
976
|
+
})]
|
|
977
|
+
}), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx("div", {
|
|
978
|
+
"data-fs-newsletter-controls": true,
|
|
979
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.Fragment, {
|
|
980
|
+
children: [displayNameInput ? /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx(src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .InputFieldName.Component */ .s9.Component, _objectSpread(_objectSpread({
|
|
981
|
+
id: "newsletter-name",
|
|
982
|
+
required: true
|
|
983
|
+
}, src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .InputFieldName.props */ .s9.props), {}, {
|
|
984
|
+
label: nameInputLabel ?? src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .InputFieldName.props.label */ .s9.props.label // Dynamic props shouldn't be overridable
|
|
985
|
+
// This decision can be reviewed later if needed
|
|
986
|
+
,
|
|
987
|
+
inputRef: nameInputRef
|
|
988
|
+
})) : null, /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx(src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .InputFieldEmail.Component */ .yk.Component, _objectSpread(_objectSpread({
|
|
989
|
+
id: "newsletter-email",
|
|
990
|
+
type: "email",
|
|
991
|
+
required: true
|
|
992
|
+
}, src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .InputFieldEmail.props */ .yk.props), {}, {
|
|
993
|
+
label: emailInputLabel ?? src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .InputFieldEmail.props.label */ .yk.props.label // Dynamic props shouldn't be overridable
|
|
994
|
+
// This decision can be reviewed later if needed
|
|
995
|
+
,
|
|
996
|
+
inputRef: emailInputRef
|
|
997
|
+
})), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx(src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .__experimentalNewsletterAddendum.Component */ .KN.Component, _objectSpread({
|
|
998
|
+
addendum: privacyPolicy
|
|
999
|
+
}, src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .__experimentalNewsletterAddendum.props */ .KN.props)), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx(src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .Button.Component */ .zx.Component, _objectSpread(_objectSpread({
|
|
1000
|
+
variant: "secondary",
|
|
1001
|
+
inverse: true,
|
|
1002
|
+
type: "submit"
|
|
1003
|
+
}, src_components_sections_Newsletter_Overrides__WEBPACK_IMPORTED_MODULE_4__/* .Button.props */ .zx.props), {}, {
|
|
1004
|
+
children: loading ? subscribeButtonLoadingLabel : subscribeButtonLabel
|
|
1005
|
+
}))]
|
|
1006
|
+
})
|
|
1007
|
+
})]
|
|
1008
|
+
})
|
|
1009
|
+
});
|
|
1010
|
+
});
|
|
1011
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Newsletter);
|
|
1012
|
+
__webpack_async_result__();
|
|
1013
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
1014
|
+
|
|
1015
|
+
/***/ }),
|
|
1016
|
+
|
|
1017
|
+
/***/ 7691:
|
|
1018
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
1019
|
+
|
|
1020
|
+
"use strict";
|
|
1021
|
+
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
1022
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1023
|
+
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
1024
|
+
/* harmony export */ });
|
|
1025
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
|
|
1026
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
1027
|
+
/* harmony import */ var src_components_skeletons_ProductShelfSkeleton__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(6523);
|
|
1028
|
+
/* harmony import */ var src_sdk_analytics_hooks_useViewItemListEvent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5184);
|
|
1029
|
+
/* harmony import */ var src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4867);
|
|
1030
|
+
/* harmony import */ var src_utils_utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3952);
|
|
1031
|
+
/* harmony import */ var src_components_sections_ProductShelf_Overrides__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6103);
|
|
1032
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(997);
|
|
1033
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__);
|
|
1034
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_4__]);
|
|
1035
|
+
src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
|
|
1036
|
+
const _excluded = ["title", "inView", "productCardConfiguration", "numberOfItems", "itemsPerPage"];
|
|
1037
|
+
|
|
1038
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
1039
|
+
|
|
1040
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
1041
|
+
|
|
1042
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1043
|
+
|
|
1044
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
1045
|
+
|
|
1046
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
1047
|
+
|
|
1048
|
+
|
|
1049
|
+
|
|
1050
|
+
|
|
1051
|
+
|
|
1052
|
+
|
|
1053
|
+
|
|
1054
|
+
|
|
1055
|
+
|
|
1056
|
+
|
|
1057
|
+
|
|
1058
|
+
|
|
1059
|
+
function ProductShelf(_ref) {
|
|
1060
|
+
let {
|
|
1061
|
+
title,
|
|
1062
|
+
inView,
|
|
1063
|
+
productCardConfiguration: {
|
|
1064
|
+
bordered = src_components_sections_ProductShelf_Overrides__WEBPACK_IMPORTED_MODULE_2__/* .__experimentalProductCard.props.bordered */ .zM.props.bordered,
|
|
1065
|
+
showDiscountBadge = src_components_sections_ProductShelf_Overrides__WEBPACK_IMPORTED_MODULE_2__/* .__experimentalProductCard.props.showDiscountBadge */ .zM.props.showDiscountBadge
|
|
1066
|
+
} = {},
|
|
1067
|
+
numberOfItems,
|
|
1068
|
+
itemsPerPage = 5
|
|
1069
|
+
} = _ref,
|
|
1070
|
+
otherProps = _objectWithoutProperties(_ref, _excluded);
|
|
1071
|
+
|
|
1072
|
+
const titleId = (0,src_utils_utilities__WEBPACK_IMPORTED_MODULE_3__/* .textToKebabCase */ .B)(title);
|
|
1073
|
+
const id = (0,react__WEBPACK_IMPORTED_MODULE_0__.useId)();
|
|
1074
|
+
const viewedOnce = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);
|
|
1075
|
+
const data = (0,src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_4__/* .useProductsQuery */ .k)(_objectSpread({
|
|
1076
|
+
first: numberOfItems
|
|
1077
|
+
}, otherProps));
|
|
1078
|
+
const products = data?.search?.products;
|
|
1079
|
+
const productEdges = products?.edges ?? [];
|
|
1080
|
+
const aspectRatio = 1;
|
|
1081
|
+
const {
|
|
1082
|
+
sendViewItemListEvent
|
|
1083
|
+
} = (0,src_sdk_analytics_hooks_useViewItemListEvent__WEBPACK_IMPORTED_MODULE_5__/* .useViewItemListEvent */ .m)({
|
|
1084
|
+
products: productEdges,
|
|
1085
|
+
title,
|
|
1086
|
+
page: 0,
|
|
1087
|
+
pageSize: 0
|
|
1088
|
+
});
|
|
1089
|
+
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
1090
|
+
if (inView && !viewedOnce.current && productEdges.length) {
|
|
1091
|
+
sendViewItemListEvent();
|
|
1092
|
+
viewedOnce.current = true;
|
|
1093
|
+
}
|
|
1094
|
+
}, [inView, productEdges.length, sendViewItemListEvent]);
|
|
1095
|
+
|
|
1096
|
+
if (products?.edges.length === 0) {
|
|
1097
|
+
return null;
|
|
1098
|
+
}
|
|
1099
|
+
|
|
1100
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.Fragment, {
|
|
1101
|
+
children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx("h2", {
|
|
1102
|
+
className: "text__title-section layout__content",
|
|
1103
|
+
children: title
|
|
1104
|
+
}), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx(src_components_skeletons_ProductShelfSkeleton__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, {
|
|
1105
|
+
aspectRatio: aspectRatio,
|
|
1106
|
+
loading: products === undefined,
|
|
1107
|
+
itemsPerPage: itemsPerPage,
|
|
1108
|
+
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx(src_components_sections_ProductShelf_Overrides__WEBPACK_IMPORTED_MODULE_2__/* .ProductShelf.Component */ .IW.Component, _objectSpread(_objectSpread({}, src_components_sections_ProductShelf_Overrides__WEBPACK_IMPORTED_MODULE_2__/* .ProductShelf.props */ .IW.props), {}, {
|
|
1109
|
+
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx(src_components_sections_ProductShelf_Overrides__WEBPACK_IMPORTED_MODULE_2__/* .__experimentalCarousel.Component */ .EM.Component, _objectSpread(_objectSpread({
|
|
1110
|
+
id: titleId || id,
|
|
1111
|
+
itemsPerPage: itemsPerPage
|
|
1112
|
+
}, src_components_sections_ProductShelf_Overrides__WEBPACK_IMPORTED_MODULE_2__/* .__experimentalCarousel.props */ .EM.props), {}, {
|
|
1113
|
+
children: productEdges.map((product, idx) => /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(src_components_sections_ProductShelf_Overrides__WEBPACK_IMPORTED_MODULE_2__/* .__experimentalProductCard.Component */ .zM.Component, _objectSpread(_objectSpread({
|
|
1114
|
+
aspectRatio: aspectRatio,
|
|
1115
|
+
imgProps: {
|
|
1116
|
+
width: 216,
|
|
1117
|
+
height: 216,
|
|
1118
|
+
sizes: '(max-width: 768px) 42vw, 30vw'
|
|
1119
|
+
}
|
|
1120
|
+
}, src_components_sections_ProductShelf_Overrides__WEBPACK_IMPORTED_MODULE_2__/* .__experimentalProductCard.props */ .zM.props), {}, {
|
|
1121
|
+
bordered: bordered,
|
|
1122
|
+
showDiscountBadge: showDiscountBadge // Dynamic props shouldn't be overridable
|
|
1123
|
+
// This decision can be reviewed later if needed
|
|
1124
|
+
,
|
|
1125
|
+
key: `${product.node.id}`,
|
|
1126
|
+
product: product.node,
|
|
1127
|
+
index: idx + 1
|
|
1128
|
+
})))
|
|
1129
|
+
}))
|
|
1130
|
+
}))
|
|
1131
|
+
})]
|
|
1132
|
+
});
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProductShelf);
|
|
1136
|
+
__webpack_async_result__();
|
|
1137
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
1138
|
+
|
|
1139
|
+
/***/ }),
|
|
1140
|
+
|
|
1141
|
+
/***/ 8597:
|
|
1142
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
1143
|
+
|
|
1144
|
+
"use strict";
|
|
1145
|
+
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
1146
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1147
|
+
/* harmony export */ "t": () => (/* binding */ useLazyQuery)
|
|
1148
|
+
/* harmony export */ });
|
|
1149
|
+
/* harmony import */ var swr__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5941);
|
|
1150
|
+
/* harmony import */ var _request__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(180);
|
|
1151
|
+
/* harmony import */ var _useQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7732);
|
|
1152
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([swr__WEBPACK_IMPORTED_MODULE_0__, _useQuery__WEBPACK_IMPORTED_MODULE_1__]);
|
|
1153
|
+
([swr__WEBPACK_IMPORTED_MODULE_0__, _useQuery__WEBPACK_IMPORTED_MODULE_1__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
|
|
1154
|
+
|
|
1155
|
+
|
|
1156
|
+
|
|
1157
|
+
const useLazyQuery = (operationName, variables, options) => {
|
|
1158
|
+
const response = (0,swr__WEBPACK_IMPORTED_MODULE_0__["default"])((0,_useQuery__WEBPACK_IMPORTED_MODULE_1__/* .getKey */ .km)(operationName, variables), () => null, _useQuery__WEBPACK_IMPORTED_MODULE_1__/* .DEFAULT_OPTIONS */ .WN);
|
|
1159
|
+
|
|
1160
|
+
const execute = async queryVariables => {
|
|
1161
|
+
const data = await (0,_request__WEBPACK_IMPORTED_MODULE_2__/* .request */ .W)(operationName, queryVariables, options);
|
|
1162
|
+
response.mutate(data, false);
|
|
1163
|
+
};
|
|
1164
|
+
|
|
1165
|
+
return [execute, response];
|
|
1166
|
+
};
|
|
1167
|
+
__webpack_async_result__();
|
|
1168
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
1169
|
+
|
|
1170
|
+
/***/ }),
|
|
1171
|
+
|
|
1172
|
+
/***/ 5822:
|
|
1173
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
1174
|
+
|
|
1175
|
+
"use strict";
|
|
1176
|
+
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
1177
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1178
|
+
/* harmony export */ "u": () => (/* binding */ useNewsletter)
|
|
1179
|
+
/* harmony export */ });
|
|
1180
|
+
/* unused harmony export mutation */
|
|
1181
|
+
/* harmony import */ var _graphql_useLazyQuery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8597);
|
|
1182
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_graphql_useLazyQuery__WEBPACK_IMPORTED_MODULE_0__]);
|
|
1183
|
+
_graphql_useLazyQuery__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
|
|
1184
|
+
|
|
1185
|
+
const mutation = "SubscribeToNewsletter";
|
|
1186
|
+
const useNewsletter = () => {
|
|
1187
|
+
const [subscribeUser, {
|
|
1188
|
+
data,
|
|
1189
|
+
error,
|
|
1190
|
+
isValidating: loading
|
|
1191
|
+
}] = (0,_graphql_useLazyQuery__WEBPACK_IMPORTED_MODULE_0__/* .useLazyQuery */ .t)(mutation, {
|
|
1192
|
+
data: {
|
|
1193
|
+
name: '',
|
|
1194
|
+
email: ''
|
|
1195
|
+
}
|
|
1196
|
+
});
|
|
1197
|
+
return {
|
|
1198
|
+
subscribeUser,
|
|
1199
|
+
data,
|
|
1200
|
+
error,
|
|
1201
|
+
loading
|
|
1202
|
+
};
|
|
1203
|
+
};
|
|
1204
|
+
__webpack_async_result__();
|
|
1205
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
1206
|
+
|
|
1207
|
+
/***/ }),
|
|
1208
|
+
|
|
1209
|
+
/***/ 4867:
|
|
1210
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
1211
|
+
|
|
1212
|
+
"use strict";
|
|
1213
|
+
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
1214
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1215
|
+
/* harmony export */ "k": () => (/* binding */ useProductsQuery)
|
|
1216
|
+
/* harmony export */ });
|
|
1217
|
+
/* unused harmony export query */
|
|
1218
|
+
/* harmony import */ var _graphql_useQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7732);
|
|
1219
|
+
/* harmony import */ var _useLocalizedVariables__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2523);
|
|
1220
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_graphql_useQuery__WEBPACK_IMPORTED_MODULE_1__]);
|
|
1221
|
+
_graphql_useQuery__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
|
|
1222
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
1223
|
+
|
|
1224
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
1225
|
+
|
|
1226
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1227
|
+
|
|
1228
|
+
|
|
1229
|
+
|
|
1230
|
+
const query = "ClientManyProductsQuery";
|
|
1231
|
+
/**
|
|
1232
|
+
* Use this hook for fetching a list of products, like shelves and tiles
|
|
1233
|
+
*/
|
|
1234
|
+
|
|
1235
|
+
const useProductsQuery = (variables, options) => {
|
|
1236
|
+
const localizedVariables = (0,_useLocalizedVariables__WEBPACK_IMPORTED_MODULE_0__/* .useLocalizedVariables */ .y)(variables);
|
|
1237
|
+
const {
|
|
1238
|
+
data
|
|
1239
|
+
} = (0,_graphql_useQuery__WEBPACK_IMPORTED_MODULE_1__/* .useQuery */ .aM)(query, localizedVariables, _objectSpread({
|
|
1240
|
+
fallbackData: null,
|
|
1241
|
+
suspense: true
|
|
1242
|
+
}, options));
|
|
1243
|
+
return data;
|
|
1244
|
+
};
|
|
1245
|
+
__webpack_async_result__();
|
|
1246
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
1247
|
+
|
|
1248
|
+
/***/ }),
|
|
1249
|
+
|
|
1250
|
+
/***/ 3952:
|
|
1251
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1252
|
+
|
|
1253
|
+
"use strict";
|
|
1254
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1255
|
+
/* harmony export */ "B": () => (/* binding */ textToKebabCase)
|
|
1256
|
+
/* harmony export */ });
|
|
1257
|
+
//Input "Example Text!". Output: example-text
|
|
1258
|
+
function textToKebabCase(text) {
|
|
1259
|
+
// Replace spaces and special characters with hyphens
|
|
1260
|
+
let kebabCase = text.replace(/[^\w\s]/gi, '-'); // Remove whitespace
|
|
1261
|
+
|
|
1262
|
+
kebabCase = kebabCase.replace(/\s+/g, '-'); // Convert to lowercase
|
|
1263
|
+
|
|
1264
|
+
kebabCase = kebabCase.toLowerCase();
|
|
1265
|
+
return kebabCase ?? '';
|
|
1266
|
+
}
|
|
1267
|
+
|
|
1268
|
+
/***/ }),
|
|
1269
|
+
|
|
1270
|
+
/***/ 7283:
|
|
1271
|
+
/***/ ((module) => {
|
|
1272
|
+
|
|
1273
|
+
// Exports
|
|
1274
|
+
module.exports = {
|
|
1275
|
+
"section": "section_section__ivuGF"
|
|
1276
|
+
};
|
|
1277
|
+
|
|
1278
|
+
|
|
1279
|
+
/***/ }),
|
|
1280
|
+
|
|
1281
|
+
/***/ 7781:
|
|
1282
|
+
/***/ ((module) => {
|
|
1283
|
+
|
|
1284
|
+
// Exports
|
|
1285
|
+
module.exports = {
|
|
1286
|
+
"section": "section_section__kRRBW"
|
|
1287
|
+
};
|
|
1288
|
+
|
|
1289
|
+
|
|
1290
|
+
/***/ }),
|
|
1291
|
+
|
|
1292
|
+
/***/ 6627:
|
|
1293
|
+
/***/ ((module) => {
|
|
1294
|
+
|
|
1295
|
+
// Exports
|
|
1296
|
+
module.exports = {
|
|
1297
|
+
"section": "section_section__C1DoH",
|
|
1298
|
+
"loading": "section_loading__k5bCF"
|
|
1299
|
+
};
|
|
1300
|
+
|
|
1301
|
+
|
|
1302
|
+
/***/ })
|
|
1303
|
+
|
|
1304
|
+
};
|
|
1305
|
+
;
|