@sentecacommerce-theme/lib 0.12.95 → 0.12.96
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/dist/cjs/listing/api/queries/useListingQuery.js +1 -1
- package/dist/cjs/listing/hooks/useListingMeta.js +49 -40
- package/dist/cjs/listing/hooks/useSlideFilter.js +24 -3
- package/dist/cjs/listing/ssr/prefetchCategories.js +4 -5
- package/dist/cjs/listing/ssr/prefetchPredicate.js +4 -4
- package/dist/cjs/seo/components/TranslationsMeta/index.js +58 -0
- package/dist/cjs/seo/components/index.js +12 -0
- package/dist/cjs/seo/hooks/index.js +14 -0
- package/dist/cjs/seo/hooks/useSeoTranslations.js +90 -0
- package/dist/cjs/ui/components/GridStyles.js +2 -2
- package/dist/cjs/ui/components/RangeSliderInput.js +14 -1
- package/dist/esm/listing/api/queries/useListingQuery.js +1 -1
- package/dist/esm/listing/hooks/useListingMeta.js +49 -40
- package/dist/esm/listing/hooks/useSlideFilter.js +24 -3
- package/dist/esm/listing/ssr/prefetchCategories.js +5 -6
- package/dist/esm/listing/ssr/prefetchPredicate.js +4 -4
- package/dist/esm/seo/components/TranslationsMeta/index.js +48 -0
- package/dist/esm/seo/components/index.js +1 -0
- package/dist/esm/seo/hooks/index.js +1 -0
- package/dist/esm/seo/hooks/useSeoTranslations.js +79 -0
- package/dist/esm/ui/components/GridStyles.js +2 -2
- package/dist/esm/ui/components/RangeSliderInput.js +14 -1
- package/dist/types/listing/hooks/useSlideFilter.d.ts +4 -0
- package/dist/types/listing/types.d.ts +10 -0
- package/dist/types/seo/components/TranslationsMeta/index.d.ts +1 -0
- package/dist/types/seo/components/index.d.ts +1 -0
- package/dist/types/seo/hooks/index.d.ts +1 -0
- package/dist/types/seo/hooks/useSeoTranslations.d.ts +24 -0
- package/dist/types/ui/components/GridStyles.d.ts +2 -1
- package/dist/types/ui/components/RangeSliderInput.d.ts +2 -1
- package/package.json +4 -4
@@ -137,7 +137,7 @@ var useListingQuery = function() {
|
|
137
137
|
predicate: predicate,
|
138
138
|
sort: sort,
|
139
139
|
postFilter: postFilter,
|
140
|
-
slug:
|
140
|
+
slug: aliasedSlug,
|
141
141
|
offset: offset
|
142
142
|
});
|
143
143
|
return (0, _reactQuery).useQuery(queryKeys, _asyncToGenerator(_regeneratorRuntime.default.mark(function _callee() {
|
@@ -8,7 +8,6 @@ var _utils = require("../../utils");
|
|
8
8
|
var _assetsToMap = require("../../utils/assetsToMap");
|
9
9
|
var _router = require("next/router");
|
10
10
|
var _utils1 = require("../utils");
|
11
|
-
var _types = require("../types");
|
12
11
|
var _index = require("../../index");
|
13
12
|
var _useListingFilters = require("./useListingFilters");
|
14
13
|
var _useListingCategories = require("./useListingCategories");
|
@@ -32,6 +31,33 @@ function _iterableToArray(iter) {
|
|
32
31
|
function _nonIterableSpread() {
|
33
32
|
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
34
33
|
}
|
34
|
+
function _objectWithoutProperties(source, excluded) {
|
35
|
+
if (source == null) return {};
|
36
|
+
var target = _objectWithoutPropertiesLoose(source, excluded);
|
37
|
+
var key, i;
|
38
|
+
if (Object.getOwnPropertySymbols) {
|
39
|
+
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
40
|
+
for(i = 0; i < sourceSymbolKeys.length; i++){
|
41
|
+
key = sourceSymbolKeys[i];
|
42
|
+
if (excluded.indexOf(key) >= 0) continue;
|
43
|
+
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
44
|
+
target[key] = source[key];
|
45
|
+
}
|
46
|
+
}
|
47
|
+
return target;
|
48
|
+
}
|
49
|
+
function _objectWithoutPropertiesLoose(source, excluded) {
|
50
|
+
if (source == null) return {};
|
51
|
+
var target = {};
|
52
|
+
var sourceKeys = Object.keys(source);
|
53
|
+
var key, i;
|
54
|
+
for(i = 0; i < sourceKeys.length; i++){
|
55
|
+
key = sourceKeys[i];
|
56
|
+
if (excluded.indexOf(key) >= 0) continue;
|
57
|
+
target[key] = source[key];
|
58
|
+
}
|
59
|
+
return target;
|
60
|
+
}
|
35
61
|
function _toConsumableArray(arr) {
|
36
62
|
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
37
63
|
}
|
@@ -90,74 +116,57 @@ var useListingMeta = function() {
|
|
90
116
|
};
|
91
117
|
exports.useListingMeta = useListingMeta;
|
92
118
|
function processDisplayName(slug, config, name, breadcrumb, router, aggData, categoriesData) {
|
119
|
+
var ref, ref5;
|
93
120
|
var listingName = (0, _utils).getTranslatableField(name);
|
94
121
|
var brandName = getBrandName(router, aggData);
|
95
122
|
var categoryName = getCategoryName(router, categoriesData);
|
96
123
|
var type = (0, _utils1).getListingPageType(router, slug, config);
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
return "Всички продукти от ".concat(listingName, " за ").concat(attribute);
|
111
|
-
}
|
112
|
-
return "".concat(categoryName, " от ").concat(listingName, " за ").concat(attribute);
|
113
|
-
}
|
114
|
-
}
|
115
|
-
if (type === _types.ListingTypesEnum.Category && brandName) {
|
116
|
-
return "".concat(listingName, " от ").concat(brandName);
|
117
|
-
}
|
118
|
-
if (type === _types.ListingTypesEnum.Brand) {
|
119
|
-
if (!categoryName) {
|
120
|
-
return "Всички продукти от ".concat(listingName);
|
121
|
-
}
|
122
|
-
return "".concat(categoryName, " от ").concat(listingName);
|
123
|
-
}
|
124
|
-
if (type === _types.ListingTypesEnum.Search && (router === null || router === void 0 ? void 0 : router.query.search)) {
|
125
|
-
return "".concat(listingName, " от \"").concat(router.query.search, "\"");
|
126
|
-
}
|
127
|
-
return listingName;
|
124
|
+
var getTitle = config.getTitle, rest = _objectWithoutProperties(config, [
|
125
|
+
"getTitle"
|
126
|
+
]);
|
127
|
+
var title = getTitle === null || getTitle === void 0 ? void 0 : getTitle(type, rest, {
|
128
|
+
category: categoryName,
|
129
|
+
brand: brandName,
|
130
|
+
defaultName: listingName,
|
131
|
+
attribute: (ref = config.titleAliases) === null || ref === void 0 ? void 0 : ref[slug],
|
132
|
+
childAttribute: (0, _utils).getTranslatableField(breadcrumb === null || breadcrumb === void 0 ? void 0 : breadcrumb.label),
|
133
|
+
search: router === null || router === void 0 ? void 0 : (ref5 = router.query) === null || ref5 === void 0 ? void 0 : ref5.search,
|
134
|
+
isWithAttribute: Boolean(router === null || router === void 0 ? void 0 : router.query.cat)
|
135
|
+
});
|
136
|
+
return title || listingName;
|
128
137
|
}
|
129
138
|
function getFilterByType(filterType, router) {
|
130
139
|
var filterId = '';
|
131
140
|
if (Array.isArray(router === null || router === void 0 ? void 0 : router.query.filter)) {
|
132
|
-
var ref,
|
141
|
+
var ref, ref6;
|
133
142
|
var filters = (ref = router === null || router === void 0 ? void 0 : router.query.filter) === null || ref === void 0 ? void 0 : ref.filter(function(x) {
|
134
143
|
return x === null || x === void 0 ? void 0 : x.includes(filterType);
|
135
144
|
});
|
136
145
|
if ((filters === null || filters === void 0 ? void 0 : filters.length) && filters.length > 1) {
|
137
146
|
return '';
|
138
147
|
}
|
139
|
-
var filterTerm = (
|
148
|
+
var filterTerm = (ref6 = /\d+/.exec((filters === null || filters === void 0 ? void 0 : filters[0]) || '')) === null || ref6 === void 0 ? void 0 : ref6[0];
|
140
149
|
if (!filterTerm) return '';
|
141
150
|
filterId = filterTerm;
|
142
151
|
} else {
|
143
|
-
var
|
144
|
-
var isFiltered = router === null || router === void 0 ? void 0 : (
|
152
|
+
var ref7, ref8, ref9;
|
153
|
+
var isFiltered = router === null || router === void 0 ? void 0 : (ref7 = router.query) === null || ref7 === void 0 ? void 0 : (ref8 = ref7.filter) === null || ref8 === void 0 ? void 0 : ref8.includes(filterType);
|
145
154
|
if (!isFiltered) {
|
146
155
|
return '';
|
147
156
|
}
|
148
|
-
filterId = (
|
157
|
+
filterId = (ref9 = /(\w+)-(\d+)/.exec(router === null || router === void 0 ? void 0 : router.query.filter)) === null || ref9 === void 0 ? void 0 : ref9[0];
|
149
158
|
}
|
150
159
|
return filterId;
|
151
160
|
}
|
152
161
|
function getBrandName(router, filtersData) {
|
153
|
-
var ref,
|
162
|
+
var ref, ref10, ref11;
|
154
163
|
var brandId = getFilterByType('brand', router);
|
155
164
|
var brand = (ref = filtersData === null || filtersData === void 0 ? void 0 : filtersData.find(function(x) {
|
156
165
|
return x.name === 'Brands';
|
157
|
-
})) === null || ref === void 0 ? void 0 : (
|
166
|
+
})) === null || ref === void 0 ? void 0 : (ref10 = ref.items) === null || ref10 === void 0 ? void 0 : ref10.find(function(x) {
|
158
167
|
return x.data.key === brandId;
|
159
168
|
});
|
160
|
-
return (0, _utils).getTranslatableField(brand === null || brand === void 0 ? void 0 : (
|
169
|
+
return (0, _utils).getTranslatableField(brand === null || brand === void 0 ? void 0 : (ref11 = brand.meta) === null || ref11 === void 0 ? void 0 : ref11.name);
|
161
170
|
}
|
162
171
|
function getCategoryName(router, categories) {
|
163
172
|
var categoryId = getFilterByType('category', router);
|
@@ -56,7 +56,7 @@ function _unsupportedIterableToArray(o, minLen) {
|
|
56
56
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
57
57
|
}
|
58
58
|
var useSlideFilter = function(filterName, min, max) {
|
59
|
-
var
|
59
|
+
var ref3;
|
60
60
|
var router = (0, _router).useRouter();
|
61
61
|
var meta = (0, _).useListingConfig().meta;
|
62
62
|
var slug = (0, _index).useListingAlias(meta).slug;
|
@@ -71,7 +71,7 @@ var useSlideFilter = function(filterName, min, max) {
|
|
71
71
|
}
|
72
72
|
if (allFilters.includes(filterQuery)) return allFilters;
|
73
73
|
};
|
74
|
-
var filter = (
|
74
|
+
var filter = (ref3 = getFilter()) === null || ref3 === void 0 ? void 0 : ref3.replace(filterQuery, '');
|
75
75
|
var ref1 = _slicedToArray(filter ? filter.split(',') : [
|
76
76
|
min,
|
77
77
|
max
|
@@ -81,9 +81,29 @@ var useSlideFilter = function(filterName, min, max) {
|
|
81
81
|
to: +to || max
|
82
82
|
}), 2), state = ref2[0], setState = ref2[1];
|
83
83
|
var timeoutRef = (0, _react).useRef();
|
84
|
-
var
|
84
|
+
var getFormattedPriceRange = function(data) {
|
85
85
|
var formattedFrom = Math.min(Math.max(data.from, min), data.to);
|
86
86
|
var formattedTo = Math.max(data.from, Math.min(data.to, max));
|
87
|
+
return {
|
88
|
+
formattedFrom: formattedFrom,
|
89
|
+
formattedTo: formattedTo
|
90
|
+
};
|
91
|
+
};
|
92
|
+
var updateValue = (0, _react).useCallback(function(data) {
|
93
|
+
var ref = getFormattedPriceRange(data), formattedFrom = ref.formattedFrom, formattedTo = ref.formattedTo;
|
94
|
+
setState({
|
95
|
+
from: formattedFrom,
|
96
|
+
to: formattedTo
|
97
|
+
});
|
98
|
+
}, [
|
99
|
+
filterName,
|
100
|
+
max,
|
101
|
+
min,
|
102
|
+
router,
|
103
|
+
slug
|
104
|
+
]);
|
105
|
+
var applyFilter = (0, _react).useCallback(function(data) {
|
106
|
+
var ref = getFormattedPriceRange(data), formattedFrom = ref.formattedFrom, formattedTo = ref.formattedTo;
|
87
107
|
clearTimeout(timeoutRef.current);
|
88
108
|
timeoutRef.current = setTimeout(function() {
|
89
109
|
router.push((0, _utils).createAggregateQuery((0, _utils1).getListingPageType(router, slug, meta), router.query.slug, {
|
@@ -105,6 +125,7 @@ var useSlideFilter = function(filterName, min, max) {
|
|
105
125
|
]);
|
106
126
|
return {
|
107
127
|
value: state,
|
128
|
+
applyFilter: applyFilter,
|
108
129
|
updateValue: updateValue
|
109
130
|
};
|
110
131
|
};
|
@@ -45,7 +45,7 @@ function prefetchCategories(queryCache, router, predicate, aggregates, config) {
|
|
45
45
|
}
|
46
46
|
function _prefetchCategories() {
|
47
47
|
_prefetchCategories = _asyncToGenerator(_regeneratorRuntime.default.mark(function _callee(queryCache, router, predicate, aggregates, config) {
|
48
|
-
var aggregateKeys, aliasedSlug,
|
48
|
+
var aggregateKeys, aliasedSlug, query, response;
|
49
49
|
return _regeneratorRuntime.default.wrap(function _callee$(_ctx) {
|
50
50
|
while(1)switch(_ctx.prev = _ctx.next){
|
51
51
|
case 0:
|
@@ -54,7 +54,6 @@ function _prefetchCategories() {
|
|
54
54
|
router: router,
|
55
55
|
config: config
|
56
56
|
});
|
57
|
-
slug = (0, _utils).getSlug(router, aliasedSlug);
|
58
57
|
query = (0, _api).prepareAggregateQuery({
|
59
58
|
request: _api.AggregateRequestEnum.Categories,
|
60
59
|
router: router,
|
@@ -64,9 +63,9 @@ function _prefetchCategories() {
|
|
64
63
|
postFilter: undefined,
|
65
64
|
config: config
|
66
65
|
});
|
67
|
-
_ctx.next =
|
66
|
+
_ctx.next = 5;
|
68
67
|
return (0, _sdk).CatalogAggregate(query);
|
69
|
-
case
|
68
|
+
case 5:
|
70
69
|
response = _ctx.sent;
|
71
70
|
queryCache.setQueryData([
|
72
71
|
_api.AggregateRequestEnum.Categories,
|
@@ -77,7 +76,7 @@ function _prefetchCategories() {
|
|
77
76
|
staleTime: 30000
|
78
77
|
});
|
79
78
|
return _ctx.abrupt("return", response);
|
80
|
-
case
|
79
|
+
case 8:
|
81
80
|
case "end":
|
82
81
|
return _ctx.stop();
|
83
82
|
}
|
@@ -44,20 +44,20 @@ function prefetchPredicate(queryCache, router, config) {
|
|
44
44
|
}
|
45
45
|
function _prefetchPredicate() {
|
46
46
|
_prefetchPredicate = _asyncToGenerator(_regeneratorRuntime.default.mark(function _callee(queryCache, router, config) {
|
47
|
-
var
|
47
|
+
var aliasedSlug, slug, data, attribute;
|
48
48
|
return _regeneratorRuntime.default.wrap(function _callee$(_ctx) {
|
49
49
|
while(1)switch(_ctx.prev = _ctx.next){
|
50
50
|
case 0:
|
51
|
-
attribute = router.query.cat && router.query.slug;
|
52
51
|
aliasedSlug = (0, _utils).getListingAlias({
|
53
52
|
router: router,
|
54
53
|
config: config
|
55
54
|
});
|
56
55
|
slug = (0, _utils).getSlug(router, aliasedSlug);
|
57
|
-
_ctx.next =
|
56
|
+
_ctx.next = 4;
|
58
57
|
return (0, _api).processPredicateRequest(slug, router, aliasedSlug);
|
59
|
-
case
|
58
|
+
case 4:
|
60
59
|
data = _ctx.sent;
|
60
|
+
attribute = router.query.cat && aliasedSlug;
|
61
61
|
queryCache.setQueryData([
|
62
62
|
_api.ListingQueryKeysEnum.usePredicate,
|
63
63
|
slug,
|
@@ -0,0 +1,58 @@
|
|
1
|
+
Object.defineProperty(exports, "__esModule", {
|
2
|
+
value: true
|
3
|
+
});
|
4
|
+
exports.TranslationsMeta = void 0;
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
6
|
+
var _useSeoTranslations = require("../../hooks/useSeoTranslations");
|
7
|
+
var _head = _interopRequireDefault(require("next/head"));
|
8
|
+
var _router = require("next/router");
|
9
|
+
function _extends() {
|
10
|
+
_extends = Object.assign || function(target) {
|
11
|
+
for(var i = 1; i < arguments.length; i++){
|
12
|
+
var source = arguments[i];
|
13
|
+
for(var key in source){
|
14
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
15
|
+
target[key] = source[key];
|
16
|
+
}
|
17
|
+
}
|
18
|
+
}
|
19
|
+
return target;
|
20
|
+
};
|
21
|
+
return _extends.apply(this, arguments);
|
22
|
+
}
|
23
|
+
function _interopRequireDefault(obj) {
|
24
|
+
return obj && obj.__esModule ? obj : {
|
25
|
+
default: obj
|
26
|
+
};
|
27
|
+
}
|
28
|
+
var TranslationsMeta = function() {
|
29
|
+
var ref = (0, _useSeoTranslations).useSeoTranslations(), translationsMap = ref.translationsMap, allLocales = ref.allLocales, defaultLocale = ref.defaultLocale;
|
30
|
+
var router = (0, _router).useRouter();
|
31
|
+
var defaultTranslation = translationsMap[defaultLocale];
|
32
|
+
var isError = router.route === '/404' || router.route === '/_error';
|
33
|
+
if (isError) return null;
|
34
|
+
var domain = defaultTranslation === null || defaultTranslation === void 0 ? void 0 : defaultTranslation.domain;
|
35
|
+
return(/*#__PURE__*/ _react.default.createElement(_head.default, null, allLocales === null || allLocales === void 0 ? void 0 : allLocales.map(function(locale) {
|
36
|
+
var translation = translationsMap === null || translationsMap === void 0 ? void 0 : translationsMap[locale];
|
37
|
+
var href = translation === null || translation === void 0 ? void 0 : translation.slug;
|
38
|
+
// go to the same page but with the right locale.
|
39
|
+
// This is for pages that does not have a translated slug
|
40
|
+
// example: /checkout -> /en/checkout, /ro/checkout
|
41
|
+
if (!href) href = "/".concat(locale).concat(router.asPath);
|
42
|
+
return(/*#__PURE__*/ _react.default.createElement("link", _extends({
|
43
|
+
rel: "alternate"
|
44
|
+
}, {
|
45
|
+
hreflang: locale
|
46
|
+
}, {
|
47
|
+
href: domain + href,
|
48
|
+
key: 'Translation__' + href
|
49
|
+
})));
|
50
|
+
}), defaultTranslation && /*#__PURE__*/ _react.default.createElement("link", _extends({
|
51
|
+
rel: "alternate"
|
52
|
+
}, {
|
53
|
+
hreflang: 'x-default'
|
54
|
+
}, {
|
55
|
+
href: "".concat(domain).concat(defaultTranslation === null || defaultTranslation === void 0 ? void 0 : defaultTranslation.slug)
|
56
|
+
}))));
|
57
|
+
};
|
58
|
+
exports.TranslationsMeta = TranslationsMeta;
|
@@ -74,6 +74,18 @@ Object.keys(_hiddenBreadcrumb).forEach(function(key) {
|
|
74
74
|
}
|
75
75
|
});
|
76
76
|
});
|
77
|
+
var _translationsMeta = _interopRequireWildcard(require("./TranslationsMeta"));
|
78
|
+
Object.keys(_translationsMeta).forEach(function(key) {
|
79
|
+
if (key === "default" || key === "__esModule") return;
|
80
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
81
|
+
if (key in exports && exports[key] === _translationsMeta[key]) return;
|
82
|
+
Object.defineProperty(exports, key, {
|
83
|
+
enumerable: true,
|
84
|
+
get: function() {
|
85
|
+
return _translationsMeta[key];
|
86
|
+
}
|
87
|
+
});
|
88
|
+
});
|
77
89
|
function _interopRequireWildcard(obj) {
|
78
90
|
if (obj && obj.__esModule) {
|
79
91
|
return obj;
|
@@ -1,9 +1,11 @@
|
|
1
1
|
Object.defineProperty(exports, "__esModule", {
|
2
2
|
value: true
|
3
3
|
});
|
4
|
+
var _exportNames = {};
|
4
5
|
var _useSEOBreadcrumb = _interopRequireWildcard(require("./useSEOBreadcrumb"));
|
5
6
|
Object.keys(_useSEOBreadcrumb).forEach(function(key) {
|
6
7
|
if (key === "default" || key === "__esModule") return;
|
8
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
7
9
|
if (key in exports && exports[key] === _useSEOBreadcrumb[key]) return;
|
8
10
|
Object.defineProperty(exports, key, {
|
9
11
|
enumerable: true,
|
@@ -12,6 +14,18 @@ Object.keys(_useSEOBreadcrumb).forEach(function(key) {
|
|
12
14
|
}
|
13
15
|
});
|
14
16
|
});
|
17
|
+
var _useSeoTranslations = _interopRequireWildcard(require("./useSeoTranslations"));
|
18
|
+
Object.keys(_useSeoTranslations).forEach(function(key) {
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
20
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
21
|
+
if (key in exports && exports[key] === _useSeoTranslations[key]) return;
|
22
|
+
Object.defineProperty(exports, key, {
|
23
|
+
enumerable: true,
|
24
|
+
get: function() {
|
25
|
+
return _useSeoTranslations[key];
|
26
|
+
}
|
27
|
+
});
|
28
|
+
});
|
15
29
|
function _interopRequireWildcard(obj) {
|
16
30
|
if (obj && obj.__esModule) {
|
17
31
|
return obj;
|
@@ -0,0 +1,90 @@
|
|
1
|
+
Object.defineProperty(exports, "__esModule", {
|
2
|
+
value: true
|
3
|
+
});
|
4
|
+
exports.useSeoTranslations = exports.SeoTranslationsProvider = void 0;
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
6
|
+
var _router = require("next/router");
|
7
|
+
function _defineProperty(obj, key, value) {
|
8
|
+
if (key in obj) {
|
9
|
+
Object.defineProperty(obj, key, {
|
10
|
+
value: value,
|
11
|
+
enumerable: true,
|
12
|
+
configurable: true,
|
13
|
+
writable: true
|
14
|
+
});
|
15
|
+
} else {
|
16
|
+
obj[key] = value;
|
17
|
+
}
|
18
|
+
return obj;
|
19
|
+
}
|
20
|
+
function _interopRequireDefault(obj) {
|
21
|
+
return obj && obj.__esModule ? obj : {
|
22
|
+
default: obj
|
23
|
+
};
|
24
|
+
}
|
25
|
+
function _objectSpread(target) {
|
26
|
+
for(var i = 1; i < arguments.length; i++){
|
27
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
28
|
+
var ownKeys = Object.keys(source);
|
29
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
30
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
31
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
32
|
+
}));
|
33
|
+
}
|
34
|
+
ownKeys.forEach(function(key) {
|
35
|
+
_defineProperty(target, key, source[key]);
|
36
|
+
});
|
37
|
+
}
|
38
|
+
return target;
|
39
|
+
}
|
40
|
+
var SeoTranslationsContext = /*#__PURE__*/ _react.default.createContext({});
|
41
|
+
var SeoTranslationsProvider = function(param) {
|
42
|
+
var children = param.children, translations = param.translations, defaultLocale = param.defaultLocale, localesMap = param.localesMap;
|
43
|
+
var router = (0, _router).useRouter();
|
44
|
+
var currentLocale = router.locale;
|
45
|
+
var currentPath = router.asPath;
|
46
|
+
var data1 = _react.default.useMemo(function() {
|
47
|
+
if (!translations) translations = {};
|
48
|
+
translations[currentLocale] = {
|
49
|
+
slug: currentPath.split('?')[0].replace("/".concat(currentLocale), ''),
|
50
|
+
title: '',
|
51
|
+
id: Date.now().toString()
|
52
|
+
};
|
53
|
+
var map = Object.keys(translations || {}).filter(function(lang) {
|
54
|
+
return Boolean(localesMap[lang]);
|
55
|
+
}).reduce(function(acc, lang) {
|
56
|
+
var ref;
|
57
|
+
var data = translations === null || translations === void 0 ? void 0 : translations[lang];
|
58
|
+
var localeData = localesMap[lang];
|
59
|
+
var isDefault = defaultLocale === lang;
|
60
|
+
var isFrontPage = data.slug === '/';
|
61
|
+
var prefix = ((ref = data.slug) === null || ref === void 0 ? void 0 : ref[0]) === '/' ? '' : '/';
|
62
|
+
var slug = "".concat(isDefault ? '' : "/".concat(lang)).concat(prefix).concat(isFrontPage ? '' : data.slug);
|
63
|
+
return _objectSpread({}, acc, _defineProperty({}, lang, {
|
64
|
+
slug: slug,
|
65
|
+
locale: lang,
|
66
|
+
isDefault: isDefault,
|
67
|
+
domain: "https://".concat(localeData.domain)
|
68
|
+
}));
|
69
|
+
}, {});
|
70
|
+
return {
|
71
|
+
translationsMap: map,
|
72
|
+
defaultLocale: defaultLocale,
|
73
|
+
allLocales: Object.keys(localesMap)
|
74
|
+
};
|
75
|
+
}, [
|
76
|
+
defaultLocale,
|
77
|
+
translations,
|
78
|
+
localesMap,
|
79
|
+
currentLocale,
|
80
|
+
currentPath
|
81
|
+
]);
|
82
|
+
return(/*#__PURE__*/ _react.default.createElement(SeoTranslationsContext.Provider, {
|
83
|
+
value: data1
|
84
|
+
}, children));
|
85
|
+
};
|
86
|
+
exports.SeoTranslationsProvider = SeoTranslationsProvider;
|
87
|
+
var useSeoTranslations = function() {
|
88
|
+
return _react.default.useContext(SeoTranslationsContext) || {};
|
89
|
+
};
|
90
|
+
exports.useSeoTranslations = useSeoTranslations;
|
@@ -9,7 +9,7 @@ function _interopRequireDefault(obj) {
|
|
9
9
|
};
|
10
10
|
}
|
11
11
|
var GridStyles = function(param) {
|
12
|
-
var spaceX = param.spaceX, breakpoints = param.breakpoints, _remSize = param.remSize, remSize = _remSize === void 0 ? 10 : _remSize;
|
12
|
+
var spaceX = param.spaceX, breakpoints = param.breakpoints, _remSize = param.remSize, remSize = _remSize === void 0 ? 10 : _remSize, _spaceBetweenSections = param.spaceBetweenSections, spaceBetweenSections = _spaceBetweenSections === void 0 ? 80 : _spaceBetweenSections;
|
13
13
|
function getSize(width) {
|
14
14
|
return "min-width: calc(".concat(width, "% - ").concat(spaceX / remSize, "rem);") + "max-width: calc(".concat(width, "% - ").concat(spaceX / remSize, "rem);") + "margin: 0 ".concat(spaceX / 2 / remSize, "rem;");
|
15
15
|
}
|
@@ -29,7 +29,7 @@ var GridStyles = function(param) {
|
|
29
29
|
}, '');
|
30
30
|
return(/*#__PURE__*/ _react.default.createElement("style", {
|
31
31
|
dangerouslySetInnerHTML: {
|
32
|
-
__html: "\n .Page--row {\n display: flex;\n display: -webkit-flex;\n flex-wrap: wrap;\n -webkit-flex-wrap: wrap;\n margin: 0 -".concat(spaceX / remSize / 2, "rem;\n }\n\n .Page__section {\n padding-bottom:
|
32
|
+
__html: "\n .Page--row {\n display: flex;\n display: -webkit-flex;\n flex-wrap: wrap;\n -webkit-flex-wrap: wrap;\n margin: 0 -".concat(spaceX / remSize / 2, "rem;\n }\n\n .Page__section {\n padding-bottom: ").concat(spaceBetweenSections / remSize, "rem;\n }\n\n .Page--col {\n display: block;\n width: 100%;\n }\n \n .size-default-inherit {\n width: 100%;\n }\n ").concat(queries, "\n ")
|
33
33
|
}
|
34
34
|
}));
|
35
35
|
};
|
@@ -148,7 +148,7 @@ var RangeSlideClasses = {
|
|
148
148
|
};
|
149
149
|
exports.RangeSlideClasses = RangeSlideClasses;
|
150
150
|
var RangeSliderInput = function(param) {
|
151
|
-
var defaultValue = param.defaultValue, onChange = param.onChange, _min = param.min, min = _min === void 0 ? 0 : _min, _max = param.max, max = _max === void 0 ? 100 : _max, _step = param.step, step = _step === void 0 ? 1 : _step;
|
151
|
+
var defaultValue = param.defaultValue, onChange = param.onChange, onSlide = param.onSlide, _min = param.min, min = _min === void 0 ? 0 : _min, _max = param.max, max = _max === void 0 ? 100 : _max, _step = param.step, step = _step === void 0 ? 1 : _step;
|
152
152
|
var ref1 = _slicedToArray((0, _react).useState(defaultValue), 2), value = ref1[0], setValue = ref1[1];
|
153
153
|
var inputLeftRef = _react.default.useRef(null);
|
154
154
|
var inputRightRef = _react.default.useRef(null);
|
@@ -161,6 +161,17 @@ var RangeSliderInput = function(param) {
|
|
161
161
|
}, [
|
162
162
|
defaultValue
|
163
163
|
]);
|
164
|
+
var onSlideGeneric = function() {
|
165
|
+
var inputLeft = inputLeftRef.current;
|
166
|
+
var inputRight = inputRightRef.current;
|
167
|
+
if (!inputLeft || !inputRight) return;
|
168
|
+
var leftValue = Math.min(Number(inputLeft.value), Number(inputRight.value) - 1);
|
169
|
+
var rightValue = Math.max(Number(inputRight.value), Number(inputLeft.value) + 1);
|
170
|
+
onSlide === null || onSlide === void 0 ? void 0 : onSlide({
|
171
|
+
left: leftValue,
|
172
|
+
right: rightValue
|
173
|
+
});
|
174
|
+
};
|
164
175
|
var updateLeftValue = (0, _react).useCallback(function() {
|
165
176
|
var inputLeft = inputLeftRef.current;
|
166
177
|
var inputRight = inputRightRef.current;
|
@@ -169,6 +180,7 @@ var RangeSliderInput = function(param) {
|
|
169
180
|
setValue(_objectSpread({}, value, {
|
170
181
|
left: leftValue
|
171
182
|
}));
|
183
|
+
onSlideGeneric();
|
172
184
|
}, [
|
173
185
|
setValue,
|
174
186
|
value
|
@@ -181,6 +193,7 @@ var RangeSliderInput = function(param) {
|
|
181
193
|
setValue(_objectSpread({}, value, {
|
182
194
|
right: rightValue
|
183
195
|
}));
|
196
|
+
onSlideGeneric();
|
184
197
|
}, [
|
185
198
|
setValue,
|
186
199
|
value
|
@@ -126,7 +126,7 @@ export var useListingQuery = function() {
|
|
126
126
|
predicate: predicate,
|
127
127
|
sort: sort,
|
128
128
|
postFilter: postFilter,
|
129
|
-
slug:
|
129
|
+
slug: aliasedSlug,
|
130
130
|
offset: offset
|
131
131
|
});
|
132
132
|
return useQuery(queryKeys, _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
|
@@ -4,7 +4,6 @@ import { customFieldsToMap, escape, getTranslatableField } from '../../utils';
|
|
4
4
|
import { assetsFieldsToMap } from '../../utils/assetsToMap';
|
5
5
|
import { useRouter } from 'next/router';
|
6
6
|
import { getListingPageType } from '../utils';
|
7
|
-
import { ListingTypesEnum } from '../types';
|
8
7
|
import { useListingAlias } from '../../index';
|
9
8
|
import { useListingFilters } from './useListingFilters';
|
10
9
|
import { useListingCategories } from './useListingCategories';
|
@@ -23,6 +22,33 @@ function _iterableToArray(iter) {
|
|
23
22
|
function _nonIterableSpread() {
|
24
23
|
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
25
24
|
}
|
25
|
+
function _objectWithoutProperties(source, excluded) {
|
26
|
+
if (source == null) return {};
|
27
|
+
var target = _objectWithoutPropertiesLoose(source, excluded);
|
28
|
+
var key, i;
|
29
|
+
if (Object.getOwnPropertySymbols) {
|
30
|
+
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
31
|
+
for(i = 0; i < sourceSymbolKeys.length; i++){
|
32
|
+
key = sourceSymbolKeys[i];
|
33
|
+
if (excluded.indexOf(key) >= 0) continue;
|
34
|
+
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
35
|
+
target[key] = source[key];
|
36
|
+
}
|
37
|
+
}
|
38
|
+
return target;
|
39
|
+
}
|
40
|
+
function _objectWithoutPropertiesLoose(source, excluded) {
|
41
|
+
if (source == null) return {};
|
42
|
+
var target = {};
|
43
|
+
var sourceKeys = Object.keys(source);
|
44
|
+
var key, i;
|
45
|
+
for(i = 0; i < sourceKeys.length; i++){
|
46
|
+
key = sourceKeys[i];
|
47
|
+
if (excluded.indexOf(key) >= 0) continue;
|
48
|
+
target[key] = source[key];
|
49
|
+
}
|
50
|
+
return target;
|
51
|
+
}
|
26
52
|
function _toConsumableArray(arr) {
|
27
53
|
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
28
54
|
}
|
@@ -80,74 +106,57 @@ export var useListingMeta = function() {
|
|
80
106
|
return result;
|
81
107
|
};
|
82
108
|
function processDisplayName(slug, config, name, breadcrumb, router, aggData, categoriesData) {
|
109
|
+
var ref, ref5;
|
83
110
|
var listingName = getTranslatableField(name);
|
84
111
|
var brandName = getBrandName(router, aggData);
|
85
112
|
var categoryName = getCategoryName(router, categoriesData);
|
86
113
|
var type = getListingPageType(router, slug, config);
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
return "Всички продукти от ".concat(listingName, " за ").concat(attribute);
|
101
|
-
}
|
102
|
-
return "".concat(categoryName, " от ").concat(listingName, " за ").concat(attribute);
|
103
|
-
}
|
104
|
-
}
|
105
|
-
if (type === ListingTypesEnum.Category && brandName) {
|
106
|
-
return "".concat(listingName, " от ").concat(brandName);
|
107
|
-
}
|
108
|
-
if (type === ListingTypesEnum.Brand) {
|
109
|
-
if (!categoryName) {
|
110
|
-
return "Всички продукти от ".concat(listingName);
|
111
|
-
}
|
112
|
-
return "".concat(categoryName, " от ").concat(listingName);
|
113
|
-
}
|
114
|
-
if (type === ListingTypesEnum.Search && (router === null || router === void 0 ? void 0 : router.query.search)) {
|
115
|
-
return "".concat(listingName, " от \"").concat(router.query.search, "\"");
|
116
|
-
}
|
117
|
-
return listingName;
|
114
|
+
var getTitle = config.getTitle, rest = _objectWithoutProperties(config, [
|
115
|
+
"getTitle"
|
116
|
+
]);
|
117
|
+
var title = getTitle === null || getTitle === void 0 ? void 0 : getTitle(type, rest, {
|
118
|
+
category: categoryName,
|
119
|
+
brand: brandName,
|
120
|
+
defaultName: listingName,
|
121
|
+
attribute: (ref = config.titleAliases) === null || ref === void 0 ? void 0 : ref[slug],
|
122
|
+
childAttribute: getTranslatableField(breadcrumb === null || breadcrumb === void 0 ? void 0 : breadcrumb.label),
|
123
|
+
search: router === null || router === void 0 ? void 0 : (ref5 = router.query) === null || ref5 === void 0 ? void 0 : ref5.search,
|
124
|
+
isWithAttribute: Boolean(router === null || router === void 0 ? void 0 : router.query.cat)
|
125
|
+
});
|
126
|
+
return title || listingName;
|
118
127
|
}
|
119
128
|
function getFilterByType(filterType, router) {
|
120
129
|
var filterId = '';
|
121
130
|
if (Array.isArray(router === null || router === void 0 ? void 0 : router.query.filter)) {
|
122
|
-
var ref,
|
131
|
+
var ref, ref6;
|
123
132
|
var filters = (ref = router === null || router === void 0 ? void 0 : router.query.filter) === null || ref === void 0 ? void 0 : ref.filter(function(x) {
|
124
133
|
return x === null || x === void 0 ? void 0 : x.includes(filterType);
|
125
134
|
});
|
126
135
|
if ((filters === null || filters === void 0 ? void 0 : filters.length) && filters.length > 1) {
|
127
136
|
return '';
|
128
137
|
}
|
129
|
-
var filterTerm = (
|
138
|
+
var filterTerm = (ref6 = /\d+/.exec((filters === null || filters === void 0 ? void 0 : filters[0]) || '')) === null || ref6 === void 0 ? void 0 : ref6[0];
|
130
139
|
if (!filterTerm) return '';
|
131
140
|
filterId = filterTerm;
|
132
141
|
} else {
|
133
|
-
var
|
134
|
-
var isFiltered = router === null || router === void 0 ? void 0 : (
|
142
|
+
var ref7, ref8, ref9;
|
143
|
+
var isFiltered = router === null || router === void 0 ? void 0 : (ref7 = router.query) === null || ref7 === void 0 ? void 0 : (ref8 = ref7.filter) === null || ref8 === void 0 ? void 0 : ref8.includes(filterType);
|
135
144
|
if (!isFiltered) {
|
136
145
|
return '';
|
137
146
|
}
|
138
|
-
filterId = (
|
147
|
+
filterId = (ref9 = /(\w+)-(\d+)/.exec(router === null || router === void 0 ? void 0 : router.query.filter)) === null || ref9 === void 0 ? void 0 : ref9[0];
|
139
148
|
}
|
140
149
|
return filterId;
|
141
150
|
}
|
142
151
|
function getBrandName(router, filtersData) {
|
143
|
-
var ref,
|
152
|
+
var ref, ref10, ref11;
|
144
153
|
var brandId = getFilterByType('brand', router);
|
145
154
|
var brand = (ref = filtersData === null || filtersData === void 0 ? void 0 : filtersData.find(function(x) {
|
146
155
|
return x.name === 'Brands';
|
147
|
-
})) === null || ref === void 0 ? void 0 : (
|
156
|
+
})) === null || ref === void 0 ? void 0 : (ref10 = ref.items) === null || ref10 === void 0 ? void 0 : ref10.find(function(x) {
|
148
157
|
return x.data.key === brandId;
|
149
158
|
});
|
150
|
-
return getTranslatableField(brand === null || brand === void 0 ? void 0 : (
|
159
|
+
return getTranslatableField(brand === null || brand === void 0 ? void 0 : (ref11 = brand.meta) === null || ref11 === void 0 ? void 0 : ref11.name);
|
151
160
|
}
|
152
161
|
function getCategoryName(router, categories) {
|
153
162
|
var categoryId = getFilterByType('category', router);
|
@@ -52,7 +52,7 @@ function _unsupportedIterableToArray(o, minLen) {
|
|
52
52
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
53
53
|
}
|
54
54
|
export var useSlideFilter = function(filterName, min, max) {
|
55
|
-
var
|
55
|
+
var ref3;
|
56
56
|
var router = useRouter();
|
57
57
|
var meta = useListingConfig().meta;
|
58
58
|
var slug = useListingAlias(meta).slug;
|
@@ -67,7 +67,7 @@ export var useSlideFilter = function(filterName, min, max) {
|
|
67
67
|
}
|
68
68
|
if (allFilters.includes(filterQuery)) return allFilters;
|
69
69
|
};
|
70
|
-
var filter = (
|
70
|
+
var filter = (ref3 = getFilter()) === null || ref3 === void 0 ? void 0 : ref3.replace(filterQuery, '');
|
71
71
|
var ref1 = _slicedToArray(filter ? filter.split(',') : [
|
72
72
|
min,
|
73
73
|
max
|
@@ -77,9 +77,29 @@ export var useSlideFilter = function(filterName, min, max) {
|
|
77
77
|
to: +to || max
|
78
78
|
}), 2), state = ref2[0], setState = ref2[1];
|
79
79
|
var timeoutRef = useRef();
|
80
|
-
var
|
80
|
+
var getFormattedPriceRange = function(data) {
|
81
81
|
var formattedFrom = Math.min(Math.max(data.from, min), data.to);
|
82
82
|
var formattedTo = Math.max(data.from, Math.min(data.to, max));
|
83
|
+
return {
|
84
|
+
formattedFrom: formattedFrom,
|
85
|
+
formattedTo: formattedTo
|
86
|
+
};
|
87
|
+
};
|
88
|
+
var updateValue = useCallback(function(data) {
|
89
|
+
var ref = getFormattedPriceRange(data), formattedFrom = ref.formattedFrom, formattedTo = ref.formattedTo;
|
90
|
+
setState({
|
91
|
+
from: formattedFrom,
|
92
|
+
to: formattedTo
|
93
|
+
});
|
94
|
+
}, [
|
95
|
+
filterName,
|
96
|
+
max,
|
97
|
+
min,
|
98
|
+
router,
|
99
|
+
slug
|
100
|
+
]);
|
101
|
+
var applyFilter = useCallback(function(data) {
|
102
|
+
var ref = getFormattedPriceRange(data), formattedFrom = ref.formattedFrom, formattedTo = ref.formattedTo;
|
83
103
|
clearTimeout(timeoutRef.current);
|
84
104
|
timeoutRef.current = setTimeout(function() {
|
85
105
|
router.push(createAggregateQuery(getListingPageType(router, slug, meta), router.query.slug, {
|
@@ -101,6 +121,7 @@ export var useSlideFilter = function(filterName, min, max) {
|
|
101
121
|
]);
|
102
122
|
return {
|
103
123
|
value: state,
|
124
|
+
applyFilter: applyFilter,
|
104
125
|
updateValue: updateValue
|
105
126
|
};
|
106
127
|
};
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import regeneratorRuntime from "regenerator-runtime";
|
2
2
|
import { CatalogAggregate } from '@sentecacommerce/sdk';
|
3
|
-
import {
|
3
|
+
import { getListingAlias, getPostFilters } from '../utils';
|
4
4
|
import { prepareAggregateQuery, AggregateRequestEnum, generateAggregateKey } from '../api';
|
5
5
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
6
6
|
try {
|
@@ -36,7 +36,7 @@ export function prefetchCategories(queryCache, router, predicate, aggregates, co
|
|
36
36
|
}
|
37
37
|
function _prefetchCategories() {
|
38
38
|
_prefetchCategories = _asyncToGenerator(regeneratorRuntime.mark(function _callee(queryCache, router, predicate, aggregates, config) {
|
39
|
-
var aggregateKeys, aliasedSlug,
|
39
|
+
var aggregateKeys, aliasedSlug, query, response;
|
40
40
|
return regeneratorRuntime.wrap(function _callee$(_ctx) {
|
41
41
|
while(1)switch(_ctx.prev = _ctx.next){
|
42
42
|
case 0:
|
@@ -45,7 +45,6 @@ function _prefetchCategories() {
|
|
45
45
|
router: router,
|
46
46
|
config: config
|
47
47
|
});
|
48
|
-
slug = getSlug(router, aliasedSlug);
|
49
48
|
query = prepareAggregateQuery({
|
50
49
|
request: AggregateRequestEnum.Categories,
|
51
50
|
router: router,
|
@@ -55,9 +54,9 @@ function _prefetchCategories() {
|
|
55
54
|
postFilter: undefined,
|
56
55
|
config: config
|
57
56
|
});
|
58
|
-
_ctx.next =
|
57
|
+
_ctx.next = 5;
|
59
58
|
return CatalogAggregate(query);
|
60
|
-
case
|
59
|
+
case 5:
|
61
60
|
response = _ctx.sent;
|
62
61
|
queryCache.setQueryData([
|
63
62
|
AggregateRequestEnum.Categories,
|
@@ -68,7 +67,7 @@ function _prefetchCategories() {
|
|
68
67
|
staleTime: 30000
|
69
68
|
});
|
70
69
|
return _ctx.abrupt("return", response);
|
71
|
-
case
|
70
|
+
case 8:
|
72
71
|
case "end":
|
73
72
|
return _ctx.stop();
|
74
73
|
}
|
@@ -35,20 +35,20 @@ export function prefetchPredicate(queryCache, router, config) {
|
|
35
35
|
}
|
36
36
|
function _prefetchPredicate() {
|
37
37
|
_prefetchPredicate = _asyncToGenerator(regeneratorRuntime.mark(function _callee(queryCache, router, config) {
|
38
|
-
var
|
38
|
+
var aliasedSlug, slug, data, attribute;
|
39
39
|
return regeneratorRuntime.wrap(function _callee$(_ctx) {
|
40
40
|
while(1)switch(_ctx.prev = _ctx.next){
|
41
41
|
case 0:
|
42
|
-
attribute = router.query.cat && router.query.slug;
|
43
42
|
aliasedSlug = getListingAlias({
|
44
43
|
router: router,
|
45
44
|
config: config
|
46
45
|
});
|
47
46
|
slug = getSlug(router, aliasedSlug);
|
48
|
-
_ctx.next =
|
47
|
+
_ctx.next = 4;
|
49
48
|
return processPredicateRequest(slug, router, aliasedSlug);
|
50
|
-
case
|
49
|
+
case 4:
|
51
50
|
data = _ctx.sent;
|
51
|
+
attribute = router.query.cat && aliasedSlug;
|
52
52
|
queryCache.setQueryData([
|
53
53
|
ListingQueryKeysEnum.usePredicate,
|
54
54
|
slug,
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { useSeoTranslations } from '../../hooks/useSeoTranslations';
|
3
|
+
import Head from 'next/head';
|
4
|
+
import { useRouter } from 'next/router';
|
5
|
+
function _extends() {
|
6
|
+
_extends = Object.assign || function(target) {
|
7
|
+
for(var i = 1; i < arguments.length; i++){
|
8
|
+
var source = arguments[i];
|
9
|
+
for(var key in source){
|
10
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
11
|
+
target[key] = source[key];
|
12
|
+
}
|
13
|
+
}
|
14
|
+
}
|
15
|
+
return target;
|
16
|
+
};
|
17
|
+
return _extends.apply(this, arguments);
|
18
|
+
}
|
19
|
+
export var TranslationsMeta = function() {
|
20
|
+
var ref = useSeoTranslations(), translationsMap = ref.translationsMap, allLocales = ref.allLocales, defaultLocale = ref.defaultLocale;
|
21
|
+
var router = useRouter();
|
22
|
+
var defaultTranslation = translationsMap[defaultLocale];
|
23
|
+
var isError = router.route === '/404' || router.route === '/_error';
|
24
|
+
if (isError) return null;
|
25
|
+
var domain = defaultTranslation === null || defaultTranslation === void 0 ? void 0 : defaultTranslation.domain;
|
26
|
+
return(/*#__PURE__*/ React.createElement(Head, null, allLocales === null || allLocales === void 0 ? void 0 : allLocales.map(function(locale) {
|
27
|
+
var translation = translationsMap === null || translationsMap === void 0 ? void 0 : translationsMap[locale];
|
28
|
+
var href = translation === null || translation === void 0 ? void 0 : translation.slug;
|
29
|
+
// go to the same page but with the right locale.
|
30
|
+
// This is for pages that does not have a translated slug
|
31
|
+
// example: /checkout -> /en/checkout, /ro/checkout
|
32
|
+
if (!href) href = "/".concat(locale).concat(router.asPath);
|
33
|
+
return(/*#__PURE__*/ React.createElement("link", _extends({
|
34
|
+
rel: "alternate"
|
35
|
+
}, {
|
36
|
+
hreflang: locale
|
37
|
+
}, {
|
38
|
+
href: domain + href,
|
39
|
+
key: 'Translation__' + href
|
40
|
+
})));
|
41
|
+
}), defaultTranslation && /*#__PURE__*/ React.createElement("link", _extends({
|
42
|
+
rel: "alternate"
|
43
|
+
}, {
|
44
|
+
hreflang: 'x-default'
|
45
|
+
}, {
|
46
|
+
href: "".concat(domain).concat(defaultTranslation === null || defaultTranslation === void 0 ? void 0 : defaultTranslation.slug)
|
47
|
+
}))));
|
48
|
+
};
|
@@ -0,0 +1,79 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { useRouter } from 'next/router';
|
3
|
+
function _defineProperty(obj, key, value) {
|
4
|
+
if (key in obj) {
|
5
|
+
Object.defineProperty(obj, key, {
|
6
|
+
value: value,
|
7
|
+
enumerable: true,
|
8
|
+
configurable: true,
|
9
|
+
writable: true
|
10
|
+
});
|
11
|
+
} else {
|
12
|
+
obj[key] = value;
|
13
|
+
}
|
14
|
+
return obj;
|
15
|
+
}
|
16
|
+
function _objectSpread(target) {
|
17
|
+
for(var i = 1; i < arguments.length; i++){
|
18
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
19
|
+
var ownKeys = Object.keys(source);
|
20
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
21
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
22
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
23
|
+
}));
|
24
|
+
}
|
25
|
+
ownKeys.forEach(function(key) {
|
26
|
+
_defineProperty(target, key, source[key]);
|
27
|
+
});
|
28
|
+
}
|
29
|
+
return target;
|
30
|
+
}
|
31
|
+
var SeoTranslationsContext = /*#__PURE__*/ React.createContext({});
|
32
|
+
export var SeoTranslationsProvider = function(param) {
|
33
|
+
var children = param.children, translations = param.translations, defaultLocale = param.defaultLocale, localesMap = param.localesMap;
|
34
|
+
var router = useRouter();
|
35
|
+
var currentLocale = router.locale;
|
36
|
+
var currentPath = router.asPath;
|
37
|
+
var data1 = React.useMemo(function() {
|
38
|
+
if (!translations) translations = {};
|
39
|
+
translations[currentLocale] = {
|
40
|
+
slug: currentPath.split('?')[0].replace("/".concat(currentLocale), ''),
|
41
|
+
title: '',
|
42
|
+
id: Date.now().toString()
|
43
|
+
};
|
44
|
+
var map = Object.keys(translations || {}).filter(function(lang) {
|
45
|
+
return Boolean(localesMap[lang]);
|
46
|
+
}).reduce(function(acc, lang) {
|
47
|
+
var ref;
|
48
|
+
var data = translations === null || translations === void 0 ? void 0 : translations[lang];
|
49
|
+
var localeData = localesMap[lang];
|
50
|
+
var isDefault = defaultLocale === lang;
|
51
|
+
var isFrontPage = data.slug === '/';
|
52
|
+
var prefix = ((ref = data.slug) === null || ref === void 0 ? void 0 : ref[0]) === '/' ? '' : '/';
|
53
|
+
var slug = "".concat(isDefault ? '' : "/".concat(lang)).concat(prefix).concat(isFrontPage ? '' : data.slug);
|
54
|
+
return _objectSpread({}, acc, _defineProperty({}, lang, {
|
55
|
+
slug: slug,
|
56
|
+
locale: lang,
|
57
|
+
isDefault: isDefault,
|
58
|
+
domain: "https://".concat(localeData.domain)
|
59
|
+
}));
|
60
|
+
}, {});
|
61
|
+
return {
|
62
|
+
translationsMap: map,
|
63
|
+
defaultLocale: defaultLocale,
|
64
|
+
allLocales: Object.keys(localesMap)
|
65
|
+
};
|
66
|
+
}, [
|
67
|
+
defaultLocale,
|
68
|
+
translations,
|
69
|
+
localesMap,
|
70
|
+
currentLocale,
|
71
|
+
currentPath
|
72
|
+
]);
|
73
|
+
return(/*#__PURE__*/ React.createElement(SeoTranslationsContext.Provider, {
|
74
|
+
value: data1
|
75
|
+
}, children));
|
76
|
+
};
|
77
|
+
export var useSeoTranslations = function() {
|
78
|
+
return React.useContext(SeoTranslationsContext) || {};
|
79
|
+
};
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
export var GridStyles = function(param) {
|
3
|
-
var spaceX = param.spaceX, breakpoints = param.breakpoints, _remSize = param.remSize, remSize = _remSize === void 0 ? 10 : _remSize;
|
3
|
+
var spaceX = param.spaceX, breakpoints = param.breakpoints, _remSize = param.remSize, remSize = _remSize === void 0 ? 10 : _remSize, _spaceBetweenSections = param.spaceBetweenSections, spaceBetweenSections = _spaceBetweenSections === void 0 ? 80 : _spaceBetweenSections;
|
4
4
|
var getSize = function getSize(width) {
|
5
5
|
return "min-width: calc(".concat(width, "% - ").concat(spaceX / remSize, "rem);") + "max-width: calc(".concat(width, "% - ").concat(spaceX / remSize, "rem);") + "margin: 0 ".concat(spaceX / 2 / remSize, "rem;");
|
6
6
|
};
|
@@ -20,7 +20,7 @@ export var GridStyles = function(param) {
|
|
20
20
|
}, '');
|
21
21
|
return(/*#__PURE__*/ React.createElement("style", {
|
22
22
|
dangerouslySetInnerHTML: {
|
23
|
-
__html: "\n .Page--row {\n display: flex;\n display: -webkit-flex;\n flex-wrap: wrap;\n -webkit-flex-wrap: wrap;\n margin: 0 -".concat(spaceX / remSize / 2, "rem;\n }\n\n .Page__section {\n padding-bottom:
|
23
|
+
__html: "\n .Page--row {\n display: flex;\n display: -webkit-flex;\n flex-wrap: wrap;\n -webkit-flex-wrap: wrap;\n margin: 0 -".concat(spaceX / remSize / 2, "rem;\n }\n\n .Page__section {\n padding-bottom: ").concat(spaceBetweenSections / remSize, "rem;\n }\n\n .Page--col {\n display: block;\n width: 100%;\n }\n \n .size-default-inherit {\n width: 100%;\n }\n ").concat(queries, "\n ")
|
24
24
|
}
|
25
25
|
}));
|
26
26
|
};
|
@@ -117,7 +117,7 @@ export var RangeSlideClasses = {
|
|
117
117
|
thumbActive: 'RangeSlider--thumb-active'
|
118
118
|
};
|
119
119
|
export var RangeSliderInput = function(param) {
|
120
|
-
var defaultValue = param.defaultValue, onChange = param.onChange, _min = param.min, min = _min === void 0 ? 0 : _min, _max = param.max, max = _max === void 0 ? 100 : _max, _step = param.step, step = _step === void 0 ? 1 : _step;
|
120
|
+
var defaultValue = param.defaultValue, onChange = param.onChange, onSlide = param.onSlide, _min = param.min, min = _min === void 0 ? 0 : _min, _max = param.max, max = _max === void 0 ? 100 : _max, _step = param.step, step = _step === void 0 ? 1 : _step;
|
121
121
|
var ref1 = _slicedToArray(useState(defaultValue), 2), value = ref1[0], setValue = ref1[1];
|
122
122
|
var inputLeftRef = React.useRef(null);
|
123
123
|
var inputRightRef = React.useRef(null);
|
@@ -130,6 +130,17 @@ export var RangeSliderInput = function(param) {
|
|
130
130
|
}, [
|
131
131
|
defaultValue
|
132
132
|
]);
|
133
|
+
var onSlideGeneric = function() {
|
134
|
+
var inputLeft = inputLeftRef.current;
|
135
|
+
var inputRight = inputRightRef.current;
|
136
|
+
if (!inputLeft || !inputRight) return;
|
137
|
+
var leftValue = Math.min(Number(inputLeft.value), Number(inputRight.value) - 1);
|
138
|
+
var rightValue = Math.max(Number(inputRight.value), Number(inputLeft.value) + 1);
|
139
|
+
onSlide === null || onSlide === void 0 ? void 0 : onSlide({
|
140
|
+
left: leftValue,
|
141
|
+
right: rightValue
|
142
|
+
});
|
143
|
+
};
|
133
144
|
var updateLeftValue = useCallback(function() {
|
134
145
|
var inputLeft = inputLeftRef.current;
|
135
146
|
var inputRight = inputRightRef.current;
|
@@ -138,6 +149,7 @@ export var RangeSliderInput = function(param) {
|
|
138
149
|
setValue(_objectSpread({}, value, {
|
139
150
|
left: leftValue
|
140
151
|
}));
|
152
|
+
onSlideGeneric();
|
141
153
|
}, [
|
142
154
|
setValue,
|
143
155
|
value
|
@@ -150,6 +162,7 @@ export var RangeSliderInput = function(param) {
|
|
150
162
|
setValue(_objectSpread({}, value, {
|
151
163
|
right: rightValue
|
152
164
|
}));
|
165
|
+
onSlideGeneric();
|
153
166
|
}, [
|
154
167
|
setValue,
|
155
168
|
value
|
@@ -84,4 +84,14 @@ export interface ListingPageMeta {
|
|
84
84
|
collapseMode?: StringField;
|
85
85
|
limit: NumberField;
|
86
86
|
includeVariants?: BooleanField;
|
87
|
+
getTitle?: GetListingPageTitle;
|
87
88
|
}
|
89
|
+
export declare type GetListingPageTitle = (type: ListingTypesEnum, meta: Omit<ListingPageMeta, 'getTitle'>, data: {
|
90
|
+
brand?: string;
|
91
|
+
category?: string;
|
92
|
+
defaultName?: string;
|
93
|
+
attribute?: string;
|
94
|
+
search?: string;
|
95
|
+
isWithAttribute: boolean;
|
96
|
+
childAttribute?: string;
|
97
|
+
}) => string;
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const TranslationsMeta: () => JSX.Element | null;
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import type { TranslationsMapDTO } from '@sentecacommerce-theme/cms';
|
2
|
+
import type { LocaleData } from '../../config';
|
3
|
+
export declare const SeoTranslationsProvider: ({ children, translations, defaultLocale, localesMap, }: {
|
4
|
+
children: any;
|
5
|
+
translations: TranslationsMapDTO;
|
6
|
+
defaultLocale: string;
|
7
|
+
localesMap: {
|
8
|
+
[key: string]: LocaleData;
|
9
|
+
};
|
10
|
+
}) => JSX.Element;
|
11
|
+
export declare const useSeoTranslations: () => SeoTranslationContextType;
|
12
|
+
export declare type SeoTranslationContextType = {
|
13
|
+
translationsMap: {
|
14
|
+
[key: string]: SeoTranslationType;
|
15
|
+
};
|
16
|
+
defaultLocale: string;
|
17
|
+
allLocales: string[];
|
18
|
+
};
|
19
|
+
export declare type SeoTranslationType = {
|
20
|
+
slug: string;
|
21
|
+
locale: string;
|
22
|
+
isDefault: boolean;
|
23
|
+
domain: string;
|
24
|
+
};
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { StringField } from '@sentecacommerce-theme/cms';
|
2
|
-
export declare const GridStyles: ({ spaceX, breakpoints, remSize, }: {
|
2
|
+
export declare const GridStyles: ({ spaceX, breakpoints, remSize, spaceBetweenSections, }: {
|
3
3
|
breakpoints?: {
|
4
4
|
[key: string]: {
|
5
5
|
min: StringField;
|
@@ -7,4 +7,5 @@ export declare const GridStyles: ({ spaceX, breakpoints, remSize, }: {
|
|
7
7
|
} | undefined;
|
8
8
|
spaceX: number;
|
9
9
|
remSize?: number | undefined;
|
10
|
+
spaceBetweenSections?: number | undefined;
|
10
11
|
}) => JSX.Element;
|
@@ -15,11 +15,12 @@ export declare const RangeSlideClasses: {
|
|
15
15
|
thumbHover: string;
|
16
16
|
thumbActive: string;
|
17
17
|
};
|
18
|
-
export declare const RangeSliderInput: ({ defaultValue, onChange, min, max, step, }: {
|
18
|
+
export declare const RangeSliderInput: ({ defaultValue, onChange, onSlide, min, max, step, }: {
|
19
19
|
min: number;
|
20
20
|
max: number;
|
21
21
|
step: number;
|
22
22
|
defaultValue: ValueType;
|
23
23
|
onChange: (data: ValueType) => void;
|
24
|
+
onSlide?: ((data: ValueType) => void) | undefined;
|
24
25
|
}) => JSX.Element;
|
25
26
|
export {};
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sentecacommerce-theme/lib",
|
3
3
|
"sideEffects": false,
|
4
|
-
"version": "0.12.
|
4
|
+
"version": "0.12.96",
|
5
5
|
"main": "dist/cjs/index.js",
|
6
6
|
"module": "dist/esm/index.js",
|
7
7
|
"types": "dist/types/index.d.ts",
|
@@ -31,13 +31,13 @@
|
|
31
31
|
"watch:cjs": "swc src --out-dir dist/cjs -w",
|
32
32
|
"watch:esm": "swc src --out-dir dist/esm --no-swcrc -w"
|
33
33
|
},
|
34
|
-
"gitHead": "
|
34
|
+
"gitHead": "857da38c2eb402b3d8a51ad70ffbb5dc770febff",
|
35
35
|
"peerDependencies": {
|
36
36
|
"react-query": "^2.26.2"
|
37
37
|
},
|
38
38
|
"dependencies": {
|
39
|
-
"@sentecacommerce-theme/base": "^0.12.
|
40
|
-
"@sentecacommerce-theme/cms": "^0.12.
|
39
|
+
"@sentecacommerce-theme/base": "^0.12.96",
|
40
|
+
"@sentecacommerce-theme/cms": "^0.12.96",
|
41
41
|
"@sentecacommerce/sdk": "2.0.161",
|
42
42
|
"body-scroll-lock": "^3.1.5",
|
43
43
|
"copy-to-clipboard": "^3.3.1",
|