instantsearch.js 4.37.1 → 4.38.1
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/CHANGELOG.md +41 -0
- package/cjs/components/Hits/Hits.js +0 -6
- package/cjs/components/Pagination/Pagination.js +60 -41
- package/cjs/connectors/breadcrumb/connectBreadcrumb.js +6 -1
- package/cjs/connectors/clear-refinements/connectClearRefinements.js +11 -6
- package/cjs/connectors/current-refinements/connectCurrentRefinements.js +6 -2
- package/cjs/connectors/geo-search/connectGeoSearch.js +3 -1
- package/cjs/connectors/hierarchical-menu/connectHierarchicalMenu.js +3 -1
- package/cjs/connectors/hits/connectHits.js +3 -1
- package/cjs/connectors/hits-per-page/connectHitsPerPage.js +3 -1
- package/cjs/connectors/infinite-hits/connectInfiniteHits.js +3 -1
- package/cjs/connectors/menu/connectMenu.js +3 -1
- package/cjs/connectors/numeric-menu/connectNumericMenu.js +5 -3
- package/cjs/connectors/query-rules/connectQueryRules.js +3 -1
- package/cjs/connectors/refinement-list/connectRefinementList.js +8 -3
- package/cjs/connectors/search-box/connectSearchBox.js +15 -25
- package/cjs/connectors/sort-by/connectSortBy.js +3 -1
- package/cjs/helpers/highlight.js +4 -1
- package/cjs/helpers/reverseHighlight.js +4 -1
- package/cjs/helpers/reverseSnippet.js +4 -1
- package/cjs/helpers/snippet.js +4 -1
- package/cjs/lib/routers/history.js +44 -29
- package/cjs/lib/version.js +1 -1
- package/cjs/middlewares/createMetadataMiddleware.js +3 -1
- package/dist/instantsearch.development.d.ts +56 -14
- package/dist/instantsearch.development.js +194 -171
- package/dist/instantsearch.development.js.map +1 -1
- package/dist/instantsearch.production.d.ts +56 -14
- package/dist/instantsearch.production.min.d.ts +56 -14
- package/dist/instantsearch.production.min.js +2 -2
- package/dist/instantsearch.production.min.js.map +1 -1
- package/es/components/Hits/Hits.d.ts +1 -9
- package/es/components/Hits/Hits.js +0 -6
- package/es/components/Pagination/Pagination.d.ts +3 -10
- package/es/components/Pagination/Pagination.js +55 -34
- package/es/connectors/breadcrumb/connectBreadcrumb.js +6 -1
- package/es/connectors/clear-refinements/connectClearRefinements.js +11 -6
- package/es/connectors/current-refinements/connectCurrentRefinements.js +6 -2
- package/es/connectors/dynamic-widgets/connectDynamicWidgets.d.ts +4 -5
- package/es/connectors/geo-search/connectGeoSearch.js +3 -1
- package/es/connectors/hierarchical-menu/connectHierarchicalMenu.js +3 -1
- package/es/connectors/hits/connectHits.js +3 -1
- package/es/connectors/hits-per-page/connectHitsPerPage.js +3 -1
- package/es/connectors/infinite-hits/connectInfiniteHits.js +3 -1
- package/es/connectors/menu/connectMenu.js +3 -1
- package/es/connectors/numeric-menu/connectNumericMenu.js +5 -3
- package/es/connectors/query-rules/connectQueryRules.d.ts +1 -2
- package/es/connectors/query-rules/connectQueryRules.js +3 -1
- package/es/connectors/refinement-list/connectRefinementList.js +8 -3
- package/es/connectors/search-box/connectSearchBox.js +15 -25
- package/es/connectors/sort-by/connectSortBy.js +3 -1
- package/es/connectors/toggle-refinement/connectToggleRefinement.d.ts +36 -7
- package/es/helpers/highlight.js +5 -2
- package/es/helpers/reverseHighlight.js +5 -2
- package/es/helpers/reverseSnippet.js +5 -2
- package/es/helpers/snippet.js +5 -2
- package/es/lib/routers/history.d.ts +11 -0
- package/es/lib/routers/history.js +44 -29
- package/es/lib/version.d.ts +1 -1
- package/es/lib/version.js +1 -1
- package/es/middlewares/createMetadataMiddleware.js +3 -1
- package/es/types/widget.d.ts +4 -1
- package/package.json +3 -3
- package/cjs/components/Pagination/PaginationLink.js +0 -60
- package/dist/instantsearch.development.min.d.ts +0 -5217
- package/es/components/Pagination/PaginationLink.d.ts +0 -16
- package/es/components/Pagination/PaginationLink.js +0 -49
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TAG_REPLACEMENT, getPropertyByPath, getHighlightedParts, reverseHighlightedParts, concatHighlightedParts } from "../lib/utils/index.js";
|
|
1
|
+
import { TAG_REPLACEMENT, getPropertyByPath, getHighlightedParts, reverseHighlightedParts, concatHighlightedParts, warning } from "../lib/utils/index.js";
|
|
2
2
|
import { component } from "../lib/suit.js";
|
|
3
3
|
var suit = component('ReverseSnippet');
|
|
4
4
|
export default function reverseSnippet(_ref) {
|
|
@@ -8,8 +8,11 @@ export default function reverseSnippet(_ref) {
|
|
|
8
8
|
hit = _ref.hit,
|
|
9
9
|
_ref$cssClasses = _ref.cssClasses,
|
|
10
10
|
cssClasses = _ref$cssClasses === void 0 ? {} : _ref$cssClasses;
|
|
11
|
+
var snippetAttributeResult = getPropertyByPath(hit._snippetResult, attribute); // @MAJOR fallback to attribute value if snippet is not found
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
process.env.NODE_ENV === 'development' ? warning(snippetAttributeResult, "Could not enable reverse snippet for \"".concat(attribute, "\", will display an empty string.\nPlease check whether this attribute exists and is specified in `attributesToSnippet`.\n\nSee: https://alg.li/highlighting\n")) : void 0;
|
|
14
|
+
|
|
15
|
+
var _ref2 = snippetAttributeResult || {},
|
|
13
16
|
_ref2$value = _ref2.value,
|
|
14
17
|
attributeValue = _ref2$value === void 0 ? '' : _ref2$value; // cx is not used, since it would be bundled as a dependency for Vue & Angular
|
|
15
18
|
|
package/es/helpers/snippet.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { component } from "../lib/suit.js";
|
|
2
|
-
import { TAG_REPLACEMENT, getPropertyByPath } from "../lib/utils/index.js";
|
|
2
|
+
import { TAG_REPLACEMENT, getPropertyByPath, warning } from "../lib/utils/index.js";
|
|
3
3
|
var suit = component('Snippet');
|
|
4
4
|
export default function snippet(_ref) {
|
|
5
5
|
var attribute = _ref.attribute,
|
|
@@ -8,8 +8,11 @@ export default function snippet(_ref) {
|
|
|
8
8
|
hit = _ref.hit,
|
|
9
9
|
_ref$cssClasses = _ref.cssClasses,
|
|
10
10
|
cssClasses = _ref$cssClasses === void 0 ? {} : _ref$cssClasses;
|
|
11
|
+
var snippetAttributeResult = getPropertyByPath(hit._snippetResult, attribute); // @MAJOR fallback to attribute value if snippet is not found
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
process.env.NODE_ENV === 'development' ? warning(snippetAttributeResult, "Could not enable snippet for \"".concat(attribute, "\", will display an empty string.\nPlease check whether this attribute exists and is specified in `attributesToSnippet`.\n\nSee: https://alg.li/highlighting\n")) : void 0;
|
|
14
|
+
|
|
15
|
+
var _ref2 = snippetAttributeResult || {},
|
|
13
16
|
_ref2$value = _ref2.value,
|
|
14
17
|
attributeValue = _ref2$value === void 0 ? '' : _ref2$value; // cx is not used, since it would be bundled as a dependency for Vue & Angular
|
|
15
18
|
|
|
@@ -51,6 +51,17 @@ declare class BrowserHistory<TRouteState> implements Router<TRouteState> {
|
|
|
51
51
|
* It needs to avoid pushing state to history in case of back/forward in browser
|
|
52
52
|
*/
|
|
53
53
|
private shouldPushState;
|
|
54
|
+
/**
|
|
55
|
+
* Indicates whether the history router is disposed or not.
|
|
56
|
+
*/
|
|
57
|
+
private isDisposed;
|
|
58
|
+
/**
|
|
59
|
+
* Indicates the window.history.length before the last call to
|
|
60
|
+
* window.history.pushState (called in `write`).
|
|
61
|
+
* It allows to determine if a `pushState` has been triggered elsewhere,
|
|
62
|
+
* and thus to prevent the `write` method from calling `pushState`.
|
|
63
|
+
*/
|
|
64
|
+
private latestAcknowledgedHistory;
|
|
54
65
|
/**
|
|
55
66
|
* Initializes a new storage provider that syncs the search state to the URL
|
|
56
67
|
* using web APIs (`window.location.pushState` and `onpopstate` event).
|
|
@@ -48,16 +48,23 @@ var BrowserHistory = /*#__PURE__*/function () {
|
|
|
48
48
|
|
|
49
49
|
_defineProperty(this, "shouldPushState", true);
|
|
50
50
|
|
|
51
|
+
_defineProperty(this, "isDisposed", false);
|
|
52
|
+
|
|
53
|
+
_defineProperty(this, "latestAcknowledgedHistory", 0);
|
|
54
|
+
|
|
51
55
|
this.windowTitle = windowTitle;
|
|
52
56
|
this.writeTimer = undefined;
|
|
53
57
|
this.writeDelay = writeDelay;
|
|
54
58
|
this._createURL = createURL;
|
|
55
59
|
this.parseURL = parseURL;
|
|
56
60
|
this.getLocation = getLocation;
|
|
57
|
-
safelyRunOnBrowser(function () {
|
|
61
|
+
safelyRunOnBrowser(function (_ref2) {
|
|
62
|
+
var window = _ref2.window;
|
|
63
|
+
|
|
58
64
|
var title = _this.windowTitle && _this.windowTitle(_this.read());
|
|
59
65
|
|
|
60
66
|
setWindowTitle(title);
|
|
67
|
+
_this.latestAcknowledgedHistory = window.history.length;
|
|
61
68
|
});
|
|
62
69
|
}
|
|
63
70
|
/**
|
|
@@ -82,8 +89,8 @@ var BrowserHistory = /*#__PURE__*/function () {
|
|
|
82
89
|
value: function write(routeState) {
|
|
83
90
|
var _this2 = this;
|
|
84
91
|
|
|
85
|
-
safelyRunOnBrowser(function (
|
|
86
|
-
var window =
|
|
92
|
+
safelyRunOnBrowser(function (_ref3) {
|
|
93
|
+
var window = _ref3.window;
|
|
87
94
|
|
|
88
95
|
var url = _this2.createURL(routeState);
|
|
89
96
|
|
|
@@ -94,10 +101,17 @@ var BrowserHistory = /*#__PURE__*/function () {
|
|
|
94
101
|
}
|
|
95
102
|
|
|
96
103
|
_this2.writeTimer = setTimeout(function () {
|
|
97
|
-
setWindowTitle(title);
|
|
104
|
+
setWindowTitle(title); // We do want to `pushState` if:
|
|
105
|
+
// - the router is not disposed, IS.js needs to update the URL
|
|
106
|
+
// OR
|
|
107
|
+
// - the last write was from InstantSearch.js
|
|
108
|
+
// (unlike a SPA, where it would have last written)
|
|
109
|
+
|
|
110
|
+
var lastPushWasByISAfterDispose = !_this2.isDisposed || _this2.latestAcknowledgedHistory === window.history.length;
|
|
98
111
|
|
|
99
|
-
if (_this2.shouldPushState) {
|
|
112
|
+
if (_this2.shouldPushState && lastPushWasByISAfterDispose) {
|
|
100
113
|
window.history.pushState(routeState, title || '', url);
|
|
114
|
+
_this2.latestAcknowledgedHistory = window.history.length;
|
|
101
115
|
}
|
|
102
116
|
|
|
103
117
|
_this2.shouldPushState = true;
|
|
@@ -133,8 +147,8 @@ var BrowserHistory = /*#__PURE__*/function () {
|
|
|
133
147
|
}
|
|
134
148
|
};
|
|
135
149
|
|
|
136
|
-
safelyRunOnBrowser(function (
|
|
137
|
-
var window =
|
|
150
|
+
safelyRunOnBrowser(function (_ref4) {
|
|
151
|
+
var window = _ref4.window;
|
|
138
152
|
window.addEventListener('popstate', _this3._onPopState);
|
|
139
153
|
});
|
|
140
154
|
}
|
|
@@ -164,8 +178,9 @@ var BrowserHistory = /*#__PURE__*/function () {
|
|
|
164
178
|
value: function dispose() {
|
|
165
179
|
var _this4 = this;
|
|
166
180
|
|
|
167
|
-
|
|
168
|
-
|
|
181
|
+
this.isDisposed = true;
|
|
182
|
+
safelyRunOnBrowser(function (_ref5) {
|
|
183
|
+
var window = _ref5.window;
|
|
169
184
|
|
|
170
185
|
if (_this4._onPopState) {
|
|
171
186
|
window.removeEventListener('popstate', _this4._onPopState);
|
|
@@ -184,12 +199,12 @@ var BrowserHistory = /*#__PURE__*/function () {
|
|
|
184
199
|
}();
|
|
185
200
|
|
|
186
201
|
export default function historyRouter() {
|
|
187
|
-
var
|
|
188
|
-
|
|
189
|
-
createURL =
|
|
190
|
-
var qsModule =
|
|
191
|
-
routeState =
|
|
192
|
-
location =
|
|
202
|
+
var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
203
|
+
_ref6$createURL = _ref6.createURL,
|
|
204
|
+
createURL = _ref6$createURL === void 0 ? function (_ref7) {
|
|
205
|
+
var qsModule = _ref7.qsModule,
|
|
206
|
+
routeState = _ref7.routeState,
|
|
207
|
+
location = _ref7.location;
|
|
193
208
|
var protocol = location.protocol,
|
|
194
209
|
hostname = location.hostname,
|
|
195
210
|
_location$port = location.port,
|
|
@@ -205,11 +220,11 @@ export default function historyRouter() {
|
|
|
205
220
|
}
|
|
206
221
|
|
|
207
222
|
return "".concat(protocol, "//").concat(hostname).concat(portWithPrefix).concat(pathname, "?").concat(queryString).concat(hash);
|
|
208
|
-
} :
|
|
209
|
-
|
|
210
|
-
parseURL =
|
|
211
|
-
var qsModule =
|
|
212
|
-
location =
|
|
223
|
+
} : _ref6$createURL,
|
|
224
|
+
_ref6$parseURL = _ref6.parseURL,
|
|
225
|
+
parseURL = _ref6$parseURL === void 0 ? function (_ref8) {
|
|
226
|
+
var qsModule = _ref8.qsModule,
|
|
227
|
+
location = _ref8.location;
|
|
213
228
|
// `qs` by default converts arrays with more than 20 items to an object.
|
|
214
229
|
// We want to avoid this because the data structure manipulated can therefore vary.
|
|
215
230
|
// Setting the limit to `100` seems a good number because the engine's default is 100
|
|
@@ -223,21 +238,21 @@ export default function historyRouter() {
|
|
|
223
238
|
return qsModule.parse(location.search.slice(1), {
|
|
224
239
|
arrayLimit: 99
|
|
225
240
|
});
|
|
226
|
-
} :
|
|
227
|
-
|
|
228
|
-
writeDelay =
|
|
229
|
-
windowTitle =
|
|
230
|
-
|
|
231
|
-
getLocation =
|
|
232
|
-
return safelyRunOnBrowser(function (
|
|
233
|
-
var window =
|
|
241
|
+
} : _ref6$parseURL,
|
|
242
|
+
_ref6$writeDelay = _ref6.writeDelay,
|
|
243
|
+
writeDelay = _ref6$writeDelay === void 0 ? 400 : _ref6$writeDelay,
|
|
244
|
+
windowTitle = _ref6.windowTitle,
|
|
245
|
+
_ref6$getLocation = _ref6.getLocation,
|
|
246
|
+
getLocation = _ref6$getLocation === void 0 ? function () {
|
|
247
|
+
return safelyRunOnBrowser(function (_ref9) {
|
|
248
|
+
var window = _ref9.window;
|
|
234
249
|
return window.location;
|
|
235
250
|
}, {
|
|
236
251
|
fallback: function fallback() {
|
|
237
252
|
throw new Error('You need to provide `getLocation` to the `history` router in environments where `window` does not exist.');
|
|
238
253
|
}
|
|
239
254
|
});
|
|
240
|
-
} :
|
|
255
|
+
} : _ref6$getLocation;
|
|
241
256
|
|
|
242
257
|
return new BrowserHistory({
|
|
243
258
|
createURL: createURL,
|
package/es/lib/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: "4.
|
|
1
|
+
declare const _default: "4.38.1";
|
|
2
2
|
export default _default;
|
package/es/lib/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export default '4.
|
|
1
|
+
export default '4.38.1';
|
|
@@ -46,8 +46,10 @@ function extractPayload(widgets, instantSearchInstance, payload) {
|
|
|
46
46
|
|
|
47
47
|
export function isMetadataEnabled() {
|
|
48
48
|
return safelyRunOnBrowser(function (_ref) {
|
|
49
|
+
var _window$navigator, _window$navigator$use;
|
|
50
|
+
|
|
49
51
|
var window = _ref.window;
|
|
50
|
-
return window.navigator.userAgent.indexOf('Algolia Crawler') > -1;
|
|
52
|
+
return ((_window$navigator = window.navigator) === null || _window$navigator === void 0 ? void 0 : (_window$navigator$use = _window$navigator.userAgent) === null || _window$navigator$use === void 0 ? void 0 : _window$navigator$use.indexOf('Algolia Crawler')) > -1;
|
|
51
53
|
}, {
|
|
52
54
|
fallback: function fallback() {
|
|
53
55
|
return false;
|
package/es/types/widget.d.ts
CHANGED
|
@@ -129,10 +129,13 @@ declare type RenderStateLifeCycle<TWidgetDescription extends WidgetDescription &
|
|
|
129
129
|
export declare type Widget<TWidgetDescription extends WidgetDescription & WidgetParams = {
|
|
130
130
|
$$type: string;
|
|
131
131
|
}> = Expand<RequiredWidgetLifeCycle<TWidgetDescription> & WidgetType<TWidgetDescription> & UiStateLifeCycle<TWidgetDescription> & RenderStateLifeCycle<TWidgetDescription>>;
|
|
132
|
+
export declare type TransformItemsMetadata = {
|
|
133
|
+
results?: SearchResults;
|
|
134
|
+
};
|
|
132
135
|
/**
|
|
133
136
|
* Transforms the given items.
|
|
134
137
|
*/
|
|
135
|
-
export declare type TransformItems<TItem> = (items: TItem[]) => TItem[];
|
|
138
|
+
export declare type TransformItems<TItem, TMetadata = TransformItemsMetadata> = (items: TItem[], metadata: TMetadata) => TItem[];
|
|
136
139
|
/**
|
|
137
140
|
* Transforms the given items.
|
|
138
141
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "instantsearch.js",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.38.1",
|
|
4
4
|
"description": "InstantSearch.js is a JavaScript library for building performant and instant search experiences with Algolia.",
|
|
5
5
|
"homepage": "https://www.algolia.com/doc/guides/building-search-ui/what-is-instantsearch/js/",
|
|
6
6
|
"types": "es/index.d.ts",
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"eslint-plugin-prettier": "3.4.0",
|
|
121
121
|
"eslint-plugin-react": "7.18.0",
|
|
122
122
|
"eslint-plugin-react-hooks": "2.3.0",
|
|
123
|
-
"instantsearch-e2e-tests": "algolia/instantsearch-e2e-tests#
|
|
123
|
+
"instantsearch-e2e-tests": "algolia/instantsearch-e2e-tests#2.0.2",
|
|
124
124
|
"jest": "27.1.0",
|
|
125
125
|
"jest-diff": "27.1.0",
|
|
126
126
|
"jest-environment-jsdom": "27.1.0",
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
"rollup-plugin-uglify": "6.0.4",
|
|
141
141
|
"scriptjs": "2.5.9",
|
|
142
142
|
"semver": "6.3.0",
|
|
143
|
-
"shelljs": "0.8.
|
|
143
|
+
"shelljs": "0.8.4",
|
|
144
144
|
"shipjs": "0.21.0",
|
|
145
145
|
"typescript": "4.3.5",
|
|
146
146
|
"webpack": "4.41.5"
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _preact = require("preact");
|
|
9
|
-
|
|
10
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
11
|
-
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
|
-
/** @jsx h */
|
|
15
|
-
function PaginationLink(_ref) {
|
|
16
|
-
var label = _ref.label,
|
|
17
|
-
ariaLabel = _ref.ariaLabel,
|
|
18
|
-
pageNumber = _ref.pageNumber,
|
|
19
|
-
_ref$additionalClassN = _ref.additionalClassName,
|
|
20
|
-
additionalClassName = _ref$additionalClassN === void 0 ? null : _ref$additionalClassN,
|
|
21
|
-
_ref$isDisabled = _ref.isDisabled,
|
|
22
|
-
isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
|
|
23
|
-
_ref$isSelected = _ref.isSelected,
|
|
24
|
-
isSelected = _ref$isSelected === void 0 ? false : _ref$isSelected,
|
|
25
|
-
cssClasses = _ref.cssClasses,
|
|
26
|
-
createURL = _ref.createURL,
|
|
27
|
-
handleClick = _ref.handleClick;
|
|
28
|
-
var classes = {
|
|
29
|
-
item: (0, _classnames.default)(cssClasses.item, additionalClassName, isDisabled && cssClasses.disabledItem, isSelected && cssClasses.selectedItem),
|
|
30
|
-
link: cssClasses.link
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
if (isDisabled) {
|
|
34
|
-
return (0, _preact.h)("li", {
|
|
35
|
-
className: classes.item
|
|
36
|
-
}, (0, _preact.h)("span", {
|
|
37
|
-
className: classes.link,
|
|
38
|
-
dangerouslySetInnerHTML: {
|
|
39
|
-
__html: label
|
|
40
|
-
}
|
|
41
|
-
}));
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return (0, _preact.h)("li", {
|
|
45
|
-
className: classes.item
|
|
46
|
-
}, (0, _preact.h)("a", {
|
|
47
|
-
className: classes.link,
|
|
48
|
-
"aria-label": ariaLabel,
|
|
49
|
-
href: createURL(pageNumber),
|
|
50
|
-
onClick: function onClick(event) {
|
|
51
|
-
return handleClick(pageNumber, event);
|
|
52
|
-
},
|
|
53
|
-
dangerouslySetInnerHTML: {
|
|
54
|
-
__html: label
|
|
55
|
-
}
|
|
56
|
-
}));
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
var _default = PaginationLink;
|
|
60
|
-
exports.default = _default;
|