@faststore/core 2.1.17 → 2.1.19
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 -0
- package/.next/build-manifest.json +129 -0
- package/.next/cache/.tsbuildinfo +1 -0
- package/.next/cache/config.json +7 -0
- package/.next/cache/eslint/.cache_1gneedd +1 -0
- package/.next/cache/next-server.js.nft.json +1 -0
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/export-marker.json +1 -0
- package/.next/images-manifest.json +1 -0
- package/.next/next-server.js.nft.json +1 -0
- package/.next/package.json +1 -0
- package/.next/prerender-manifest.json +1 -0
- package/.next/react-loadable-manifest.json +44 -0
- package/.next/required-server-files.json +1 -0
- package/.next/routes-manifest.json +1 -0
- package/.next/server/chunks/123.js +58 -0
- package/.next/server/chunks/143.js +106 -0
- package/.next/server/chunks/144.js +1338 -0
- package/.next/server/chunks/183.js +90 -0
- package/.next/server/chunks/184.js +61 -0
- package/.next/server/chunks/186.js +136 -0
- package/.next/server/chunks/247.js +61 -0
- package/.next/server/chunks/253.js +535 -0
- package/.next/server/chunks/269.js +517 -0
- package/.next/server/chunks/287.js +58 -0
- package/.next/server/chunks/289.js +242 -0
- package/.next/server/chunks/312.js +697 -0
- package/.next/server/chunks/350.js +143 -0
- package/.next/server/chunks/487.js +9142 -0
- package/.next/server/chunks/502.js +626 -0
- package/.next/server/chunks/576.js +90 -0
- package/.next/server/chunks/597.js +211 -0
- package/.next/server/chunks/650.js +9142 -0
- package/.next/server/chunks/676.js +32 -0
- package/.next/server/chunks/721.js +679 -0
- package/.next/server/chunks/74.js +4100 -0
- package/.next/server/chunks/825.js +4039 -0
- package/.next/server/chunks/854.js +72 -0
- package/.next/server/chunks/859.js +959 -0
- package/.next/server/chunks/886.js +120 -0
- package/.next/server/chunks/907.js +1956 -0
- package/.next/server/chunks/98.js +124 -0
- package/.next/server/chunks/font-manifest.json +1 -0
- package/.next/server/font-manifest.json +1 -0
- package/.next/server/middleware-build-manifest.js +1 -0
- package/.next/server/middleware-manifest.json +6 -0
- package/.next/server/middleware-react-loadable-manifest.js +1 -0
- package/.next/server/pages/404.js +386 -0
- package/.next/server/pages/404.js.nft.json +1 -0
- package/.next/server/pages/500.js +388 -0
- package/.next/server/pages/500.js.nft.json +1 -0
- package/.next/server/pages/[...slug].js +1005 -0
- package/.next/server/pages/[...slug].js.nft.json +1 -0
- package/.next/server/pages/[slug]/p.js +2390 -0
- package/.next/server/pages/[slug]/p.js.nft.json +1 -0
- package/.next/server/pages/_app.js +281 -0
- package/.next/server/pages/_app.js.nft.json +1 -0
- package/.next/server/pages/_document.js +340 -0
- package/.next/server/pages/_document.js.nft.json +1 -0
- package/.next/server/pages/_error.js +164 -0
- package/.next/server/pages/_error.js.nft.json +1 -0
- package/.next/server/pages/account.js +363 -0
- package/.next/server/pages/account.js.nft.json +1 -0
- package/.next/server/pages/api/graphql.js +365 -0
- package/.next/server/pages/api/graphql.js.nft.json +1 -0
- package/.next/server/pages/api/preview.js +148 -0
- package/.next/server/pages/api/preview.js.nft.json +1 -0
- package/.next/server/pages/checkout.js +363 -0
- package/.next/server/pages/checkout.js.nft.json +1 -0
- package/.next/server/pages/en-US/404.html +81 -0
- package/.next/server/pages/en-US/404.json +1 -0
- package/.next/server/pages/en-US/500.html +81 -0
- package/.next/server/pages/en-US/500.json +1 -0
- package/.next/server/pages/en-US/account.html +81 -0
- package/.next/server/pages/en-US/account.json +1 -0
- package/.next/server/pages/en-US/checkout.html +81 -0
- package/.next/server/pages/en-US/checkout.json +1 -0
- package/.next/server/pages/en-US/login.html +81 -0
- package/.next/server/pages/en-US/login.json +1 -0
- package/.next/server/pages/en-US/s.html +81 -0
- package/.next/server/pages/en-US/s.json +1 -0
- package/.next/server/pages/en-US.html +81 -0
- package/.next/server/pages/en-US.json +1 -0
- package/.next/server/pages/index.js +439 -0
- package/.next/server/pages/index.js.nft.json +1 -0
- package/.next/server/pages/login.js +368 -0
- package/.next/server/pages/login.js.nft.json +1 -0
- package/.next/server/pages/s.js +466 -0
- package/.next/server/pages/s.js.nft.json +1 -0
- package/.next/server/pages-manifest.json +16 -0
- package/.next/server/webpack-api-runtime.js +229 -0
- package/.next/server/webpack-runtime.js +229 -0
- package/.next/static/HWyxnnh37qprVz28Rroho/_buildManifest.js +1 -0
- package/.next/static/HWyxnnh37qprVz28Rroho/_ssgManifest.js +1 -0
- package/.next/static/chunks/130-15325805e3c8d5f4.js +1 -0
- package/.next/static/chunks/143.dd8a556e6957baa1.js +1 -0
- package/.next/static/chunks/495.0ecd099878b2a36d.js +1 -0
- package/.next/static/chunks/502.b14533723651e5a1.js +1 -0
- package/.next/static/chunks/548-ab84e9e8b49413ab.js +1 -0
- package/.next/static/chunks/597.f8d0595b113c70af.js +1 -0
- package/.next/static/chunks/64.7ea3677ac3a10e00.js +1 -0
- package/.next/static/chunks/651.7142f31ce1e052b3.js +1 -0
- package/.next/static/chunks/706-5aea41dd07970d2d.js +1 -0
- package/.next/static/chunks/738-67a288ca3569cdbb.js +1 -0
- package/.next/static/chunks/741.52f7fb873418346f.js +1 -0
- package/.next/static/chunks/791-63b1ccf9964b6517.js +1 -0
- package/.next/static/chunks/98.97381d2021f86cd9.js +1 -0
- package/.next/static/chunks/framework-dfd14d7ce6600b03.js +1 -0
- package/.next/static/chunks/main-fd466221927468fd.js +1 -0
- package/.next/static/chunks/pages/404-d5f20744ecd83121.js +1 -0
- package/.next/static/chunks/pages/500-3911549ab88d0378.js +1 -0
- package/.next/static/chunks/pages/[...slug]-3a37fd4d13cb2ba8.js +1 -0
- package/.next/static/chunks/pages/[slug]/p-bf47c90571846f86.js +1 -0
- package/.next/static/chunks/pages/_app-79d333aa6001a806.js +1 -0
- package/.next/static/chunks/pages/_error-a7a0c1d9bfbb4f38.js +1 -0
- package/.next/static/chunks/pages/account-d248acc931146694.js +1 -0
- package/.next/static/chunks/pages/checkout-97f6d6f36f041a6f.js +1 -0
- package/.next/static/chunks/pages/index-e9727cb06d9ae961.js +1 -0
- package/.next/static/chunks/pages/login-4cc4b8e52608f076.js +1 -0
- package/.next/static/chunks/pages/s-aabfa5c08338974a.js +1 -0
- package/.next/static/chunks/polyfills-c67a75d1b6f99dc8.js +1 -0
- package/.next/static/chunks/webpack-cbb5ca873d13aa82.js +1 -0
- package/.next/static/css/08e3fc80f9bad95d.css +1 -0
- package/.next/static/css/0e00026896a2ee3e.css +1 -0
- package/.next/static/css/1b23beb5af203ffb.css +1 -0
- package/.next/static/css/584640ffee46aa49.css +1 -0
- package/.next/static/css/7d822a137c54a781.css +1 -0
- package/.next/static/css/a49f71ae6bb528e0.css +1 -0
- package/.next/static/css/ccbb6df6cae68586.css +1 -0
- package/.next/static/css/e02cdad8fc000339.css +1 -0
- package/.next/static/css/f7ed956d370744ea.css +1 -0
- package/.next/static/css/f9d59f597a4d8f82.css +1 -0
- package/.next/trace +80 -0
- package/.turbo/turbo-build.log +13 -14
- package/README.md +1 -2
- package/cms/faststore/content-types.json +2 -2
- package/package.json +4 -4
- package/public/~partytown/debug/partytown-atomics.js +556 -0
- package/public/~partytown/debug/partytown-media.js +374 -0
- package/public/~partytown/debug/partytown-sandbox-sw.js +543 -0
- package/public/~partytown/debug/partytown-sw.js +59 -0
- package/public/~partytown/debug/partytown-ww-atomics.js +1789 -0
- package/public/~partytown/debug/partytown-ww-sw.js +1781 -0
- package/public/~partytown/debug/partytown.js +72 -0
- package/public/~partytown/partytown-atomics.js +2 -0
- package/public/~partytown/partytown-media.js +2 -0
- package/public/~partytown/partytown-sw.js +2 -0
- package/public/~partytown/partytown.js +2 -0
- package/src/components/cms/GlobalSections.tsx +2 -3
- package/src/components/common/Alert/section.module.scss +2 -0
- package/src/components/common/Footer/Footer.tsx +5 -14
- package/src/components/navigation/Navbar/Navbar.tsx +1 -1
- package/src/components/navigation/NavbarLinks/NavbarLinks.tsx +1 -1
- package/src/components/product/ProductCard/ProductCard.tsx +1 -1
- package/src/components/sections/BannerNewsletter/BannerNewsletter.tsx +2 -4
- package/src/components/sections/BannerText/BannerText.tsx +0 -2
- package/src/components/sections/Breadcrumb/Breadcrumb.tsx +1 -1
- package/src/components/sections/Incentives/Incentives.tsx +1 -1
- package/src/components/sections/Incentives/section.module.scss +2 -0
- package/src/components/sections/Navbar/section.module.scss +4 -0
- package/src/components/sections/Newsletter/section.module.scss +2 -0
- package/src/components/sections/ProductDetails/ProductDetails.tsx +2 -4
- package/src/components/sections/ProductGallery/ProductGallery.tsx +2 -4
- package/src/components/sections/ProductGallery/section.module.scss +13 -0
- package/src/components/sections/ProductShelf/section.module.scss +5 -0
- package/src/components/sections/ProductTiles/ProductTiles.tsx +18 -20
- package/src/components/sections/Section/section.scss +8 -0
- package/src/components/skeletons/ProductShelfSkeleton/ProductShelfSkeleton.tsx +1 -1
- package/src/components/templates/LandingPage/LandingPage.tsx +102 -0
- package/src/components/templates/LandingPage/index.ts +2 -0
- package/src/components/templates/ProductListingPage/ProductListingPage.tsx +138 -0
- package/src/components/templates/ProductListingPage/index.ts +2 -0
- package/src/components/ui/Incentives/Incentives.tsx +1 -1
- package/src/components/ui/Newsletter/Newsletter.tsx +1 -1
- package/src/components/ui/ProductGallery/ProductGallery.tsx +5 -2
- package/src/pages/[...slug].tsx +45 -130
- package/src/pages/api/preview.ts +18 -2
- package/src/pages/index.tsx +1 -3
- package/src/sdk/error/MissingContentError/MissingContentError.ts +15 -0
- package/src/sdk/error/MissingContentError/index.ts +1 -0
- package/src/sdk/error/MultipleContentError/MultipleContentError.ts +15 -0
- package/src/sdk/error/MultipleContentError/index.ts +1 -0
- package/src/server/cms.ts +7 -21
- package/src/styles/global/components.scss +0 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"pages404":true,"basePath":"","redirects":[{"source":"/:path+/","destination":"/:path+","locale":false,"internal":true,"statusCode":308,"regex":"^(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))/$"}],"headers":[],"dynamicRoutes":[{"page":"/[slug]/p","regex":"^/([^/]+?)/p(?:/)?$","routeKeys":{"slug":"slug"},"namedRegex":"^/(?<slug>[^/]+?)/p(?:/)?$"},{"page":"/[...slug]","regex":"^/(.+?)(?:/)?$","routeKeys":{"slug":"slug"},"namedRegex":"^/(?<slug>.+?)(?:/)?$"}],"staticRoutes":[{"page":"/","regex":"^/(?:/)?$","routeKeys":{},"namedRegex":"^/(?:/)?$"},{"page":"/404","regex":"^/404(?:/)?$","routeKeys":{},"namedRegex":"^/404(?:/)?$"},{"page":"/500","regex":"^/500(?:/)?$","routeKeys":{},"namedRegex":"^/500(?:/)?$"},{"page":"/account","regex":"^/account(?:/)?$","routeKeys":{},"namedRegex":"^/account(?:/)?$"},{"page":"/checkout","regex":"^/checkout(?:/)?$","routeKeys":{},"namedRegex":"^/checkout(?:/)?$"},{"page":"/login","regex":"^/login(?:/)?$","routeKeys":{},"namedRegex":"^/login(?:/)?$"},{"page":"/s","regex":"^/s(?:/)?$","routeKeys":{},"namedRegex":"^/s(?:/)?$"}],"dataRoutes":[{"page":"/","dataRouteRegex":"^/_next/data/HWyxnnh37qprVz28Rroho/index.json$"},{"page":"/404","dataRouteRegex":"^/_next/data/HWyxnnh37qprVz28Rroho/404.json$"},{"page":"/500","dataRouteRegex":"^/_next/data/HWyxnnh37qprVz28Rroho/500.json$"},{"page":"/account","dataRouteRegex":"^/_next/data/HWyxnnh37qprVz28Rroho/account.json$"},{"page":"/checkout","dataRouteRegex":"^/_next/data/HWyxnnh37qprVz28Rroho/checkout.json$"},{"page":"/login","dataRouteRegex":"^/_next/data/HWyxnnh37qprVz28Rroho/login.json$"},{"page":"/s","dataRouteRegex":"^/_next/data/HWyxnnh37qprVz28Rroho/s.json$"},{"page":"/[slug]/p","routeKeys":{"slug":"slug"},"dataRouteRegex":"^/_next/data/HWyxnnh37qprVz28Rroho/([^/]+?)/p\\.json$","namedDataRouteRegex":"^/_next/data/HWyxnnh37qprVz28Rroho/(?<slug>[^/]+?)/p\\.json$"},{"page":"/[...slug]","routeKeys":{"slug":"slug"},"dataRouteRegex":"^/_next/data/HWyxnnh37qprVz28Rroho/(.+?)\\.json$","namedDataRouteRegex":"^/_next/data/HWyxnnh37qprVz28Rroho/(?<slug>.+?)\\.json$"}],"i18n":{"locales":["en-US"],"defaultLocale":"en-US"},"rewrites":[]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.id = 123;
|
|
3
|
+
exports.ids = [123];
|
|
4
|
+
exports.modules = {
|
|
5
|
+
|
|
6
|
+
/***/ 60123:
|
|
7
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8
|
+
|
|
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__(16689);
|
|
13
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
14
|
+
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82765);
|
|
15
|
+
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25045);
|
|
16
|
+
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(875);
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
const QuantitySelector = ({ max, min = 1, initial, disabled = false, onChange, testId = 'fs-quantity-selector', ...otherProps }) => {
|
|
20
|
+
const [quantity, setQuantity] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(initial ?? min);
|
|
21
|
+
const isLeftDisabled = quantity === min;
|
|
22
|
+
const isRightDisabled = quantity === max;
|
|
23
|
+
const changeQuantity = (increaseValue) => {
|
|
24
|
+
const quantityValue = validateQuantityBounds(quantity + increaseValue);
|
|
25
|
+
onChange?.(quantityValue);
|
|
26
|
+
setQuantity(quantityValue);
|
|
27
|
+
};
|
|
28
|
+
const increase = () => changeQuantity(1);
|
|
29
|
+
const decrease = () => changeQuantity(-1);
|
|
30
|
+
function validateQuantityBounds(n) {
|
|
31
|
+
const maxValue = min ? Math.max(n, min) : n;
|
|
32
|
+
return max ? Math.min(maxValue, max) : maxValue;
|
|
33
|
+
}
|
|
34
|
+
function validateInput(e) {
|
|
35
|
+
const val = e.currentTarget.value;
|
|
36
|
+
if (!Number.isNaN(Number(val))) {
|
|
37
|
+
setQuantity(() => {
|
|
38
|
+
const quantityValue = validateQuantityBounds(Number(val));
|
|
39
|
+
onChange?.(quantityValue);
|
|
40
|
+
return quantityValue;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
45
|
+
initial && setQuantity(initial);
|
|
46
|
+
}, [initial]);
|
|
47
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { "data-fs-quantity-selector": disabled ? 'disabled' : 'true', "data-testid": testId, ...otherProps },
|
|
48
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(___WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, { "data-quantity-selector-button": "left", icon: react__WEBPACK_IMPORTED_MODULE_0___default().createElement(___WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, { name: "Minus", width: 16, height: 16, weight: "bold" }), "aria-label": "Decrement Quantity", "aria-controls": "quantity-selector-input", disabled: isLeftDisabled || disabled, onClick: decrease, testId: `${testId}-left-button`, size: "small" }),
|
|
49
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(___WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, { "data-quantity-selector-input": true, id: "quantity-selector-input", "aria-label": "Quantity", value: quantity, onChange: validateInput, disabled: disabled }),
|
|
50
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(___WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, { "data-quantity-selector-button": "right", "aria-controls": "quantity-selector-input", "aria-label": "Increment Quantity", disabled: isRightDisabled || disabled, icon: react__WEBPACK_IMPORTED_MODULE_0___default().createElement(___WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, { name: "Plus", width: 16, height: 16, weight: "bold" }), onClick: increase, testId: `${testId}-right-button`, size: "small" })));
|
|
51
|
+
};
|
|
52
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (QuantitySelector);
|
|
53
|
+
//# sourceMappingURL=QuantitySelector.js.map
|
|
54
|
+
|
|
55
|
+
/***/ })
|
|
56
|
+
|
|
57
|
+
};
|
|
58
|
+
;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.id = 143;
|
|
3
|
+
exports.ids = [143];
|
|
4
|
+
exports.modules = {
|
|
5
|
+
|
|
6
|
+
/***/ 29143:
|
|
7
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8
|
+
|
|
9
|
+
__webpack_require__.r(__webpack_exports__);
|
|
10
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
11
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
12
|
+
/* harmony export */ });
|
|
13
|
+
/* harmony import */ var _faststore_config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(97183);
|
|
14
|
+
/* harmony import */ var _faststore_config__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_faststore_config__WEBPACK_IMPORTED_MODULE_0__);
|
|
15
|
+
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; }
|
|
16
|
+
|
|
17
|
+
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; }
|
|
18
|
+
|
|
19
|
+
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; }
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* More info at: https://www.notion.so/vtexhandbook/Event-API-Documentation-48eee26730cf4d7f80f8fd7262231f84
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
const THIRTY_MINUTES_S = 30 * 60;
|
|
26
|
+
const ONE_YEAR_S = 365 * 24 * 3600;
|
|
27
|
+
|
|
28
|
+
const randomUUID = () => typeof crypto.randomUUID === 'function' ? crypto.randomUUID() : (Math.random() * 1e6).toFixed(0);
|
|
29
|
+
|
|
30
|
+
const createStorage = (key, expiresSecond) => {
|
|
31
|
+
const timelapsed = past => (Date.now() - past) / 1e3;
|
|
32
|
+
|
|
33
|
+
return () => {
|
|
34
|
+
const item = JSON.parse(localStorage.getItem(key) ?? 'null');
|
|
35
|
+
const isExpired = !item || timelapsed(item.createdAt) > expiresSecond;
|
|
36
|
+
const payload = isExpired ? randomUUID() : item.payload;
|
|
37
|
+
|
|
38
|
+
if (isExpired) {
|
|
39
|
+
const data = {
|
|
40
|
+
payload,
|
|
41
|
+
createdAt: Date.now()
|
|
42
|
+
};
|
|
43
|
+
localStorage.setItem(key, JSON.stringify(data));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return payload;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const user = {
|
|
51
|
+
anonymous: createStorage('vtex.search.anonymous', ONE_YEAR_S),
|
|
52
|
+
session: createStorage('vtex.search.session', THIRTY_MINUTES_S)
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const sendEvent = options => fetch(`https://sp.vtex.com/event-api/v1/${(_faststore_config__WEBPACK_IMPORTED_MODULE_0___default().api.storeId)}/event`, {
|
|
56
|
+
method: 'POST',
|
|
57
|
+
body: JSON.stringify(_objectSpread(_objectSpread({}, options), {}, {
|
|
58
|
+
userAgent: navigator.userAgent,
|
|
59
|
+
anonymous: user.anonymous(),
|
|
60
|
+
session: user.session()
|
|
61
|
+
})),
|
|
62
|
+
headers: {
|
|
63
|
+
'content-type': 'application/json'
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
const isFullTextSearch = url => typeof url.searchParams.get('q') === 'string' && /^\/s(\/)?$/g.test(url.pathname);
|
|
68
|
+
|
|
69
|
+
const handleEvent = event => {
|
|
70
|
+
if (event.name !== 'search_select_item') {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const url = new URL(event.params.url);
|
|
75
|
+
|
|
76
|
+
if (!isFullTextSearch(url)) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
for (const item of event.params.items ?? []) {
|
|
81
|
+
const productId = item.item_id ?? item.item_variant;
|
|
82
|
+
const position = item.index;
|
|
83
|
+
|
|
84
|
+
if (productId && position) {
|
|
85
|
+
sendEvent({
|
|
86
|
+
type: 'search.click',
|
|
87
|
+
productId,
|
|
88
|
+
position,
|
|
89
|
+
url: url.href,
|
|
90
|
+
text: url.searchParams.get('q') ?? '<empty>'
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
setInterval(() => sendEvent({
|
|
97
|
+
type: 'session.ping'
|
|
98
|
+
}), 60 * 1e3
|
|
99
|
+
/* One minute */
|
|
100
|
+
);
|
|
101
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (handleEvent);
|
|
102
|
+
|
|
103
|
+
/***/ })
|
|
104
|
+
|
|
105
|
+
};
|
|
106
|
+
;
|