instantsearch.js 4.54.1 → 4.56.0
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/cjs/components/Breadcrumb/Breadcrumb.js +2 -2
- package/cjs/components/Hits/Hits.js +16 -7
- package/cjs/components/InfiniteHits/InfiniteHits.js +13 -2
- package/cjs/components/RangeInput/RangeInput.js +22 -11
- package/cjs/components/RefinementList/RefinementList.js +34 -52
- package/cjs/components/Slider/Rheostat.js +163 -249
- package/cjs/connectors/autocomplete/connectAutocomplete.js +1 -1
- package/cjs/connectors/geo-search/connectGeoSearch.js +1 -1
- package/cjs/connectors/hierarchical-menu/connectHierarchicalMenu.js +1 -1
- package/cjs/connectors/hits/connectHits.js +1 -1
- package/cjs/connectors/infinite-hits/connectInfiniteHits.js +55 -32
- package/cjs/connectors/menu/connectMenu.js +1 -1
- package/cjs/connectors/numeric-menu/connectNumericMenu.js +1 -1
- package/cjs/connectors/rating-menu/connectRatingMenu.js +7 -3
- package/cjs/connectors/refinement-list/connectRefinementList.js +1 -1
- package/cjs/connectors/toggle-refinement/connectToggleRefinement.js +14 -4
- package/cjs/helpers/insights.js +3 -4
- package/cjs/lib/InstantSearch.js +20 -6
- package/cjs/lib/insights/listener.js +43 -36
- package/cjs/lib/routers/history.js +55 -1
- package/cjs/lib/stateMappings/simple.js +1 -0
- package/cjs/lib/stateMappings/singleIndex.js +1 -0
- package/cjs/lib/utils/createSendEventForFacet.js +12 -2
- package/cjs/lib/utils/createSendEventForHits.js +34 -11
- package/cjs/lib/utils/render-args.js +3 -2
- package/cjs/lib/version.js +1 -1
- package/cjs/middlewares/createInsightsMiddleware.js +135 -33
- package/cjs/middlewares/createMetadataMiddleware.js +17 -5
- package/cjs/middlewares/createRouterMiddleware.js +5 -1
- package/cjs/widgets/hits/hits.js +1 -2
- package/cjs/widgets/hits-per-page/hits-per-page.js +3 -1
- package/cjs/widgets/index/index.js +8 -8
- package/cjs/widgets/infinite-hits/infinite-hits.js +1 -2
- package/dist/instantsearch.development.d.ts +143 -84
- package/dist/instantsearch.development.js +770 -584
- package/dist/instantsearch.development.js.map +1 -1
- package/dist/instantsearch.production.d.ts +143 -84
- package/dist/instantsearch.production.min.d.ts +143 -84
- package/dist/instantsearch.production.min.js +2 -2
- package/dist/instantsearch.production.min.js.map +1 -1
- package/es/components/Breadcrumb/Breadcrumb.d.ts +2 -2
- package/es/components/Breadcrumb/Breadcrumb.js +2 -2
- package/es/components/GeoSearchControls/GeoSearchButton.d.ts +1 -1
- package/es/components/GeoSearchControls/GeoSearchControls.d.ts +3 -3
- package/es/components/GeoSearchControls/GeoSearchToggle.d.ts +1 -1
- package/es/components/Hits/Hits.d.ts +5 -5
- package/es/components/Hits/Hits.js +15 -5
- package/es/components/InfiniteHits/InfiniteHits.d.ts +3 -2
- package/es/components/InfiniteHits/InfiniteHits.js +13 -2
- package/es/components/Pagination/Pagination.d.ts +2 -2
- package/es/components/RangeInput/RangeInput.d.ts +7 -4
- package/es/components/RangeInput/RangeInput.js +22 -11
- package/es/components/RefinementList/RefinementList.d.ts +0 -1
- package/es/components/RefinementList/RefinementList.js +34 -52
- package/es/components/RelevantSort/RelevantSort.d.ts +1 -1
- package/es/components/Selector/Selector.d.ts +2 -2
- package/es/components/Slider/Rheostat.d.ts +23 -17
- package/es/components/Slider/Rheostat.js +163 -249
- package/es/components/Slider/Slider.d.ts +1 -1
- package/es/connectors/autocomplete/connectAutocomplete.js +1 -1
- package/es/connectors/current-refinements/connectCurrentRefinements.d.ts +2 -2
- package/es/connectors/dynamic-widgets/connectDynamicWidgets.d.ts +2 -2
- package/es/connectors/geo-search/connectGeoSearch.d.ts +7 -7
- package/es/connectors/geo-search/connectGeoSearch.js +1 -1
- package/es/connectors/hierarchical-menu/connectHierarchicalMenu.js +1 -1
- package/es/connectors/hits/connectHits.js +1 -1
- package/es/connectors/infinite-hits/connectInfiniteHits.js +56 -33
- package/es/connectors/menu/connectMenu.d.ts +2 -2
- package/es/connectors/menu/connectMenu.js +1 -1
- package/es/connectors/numeric-menu/connectNumericMenu.js +1 -1
- package/es/connectors/pagination/connectPagination.d.ts +1 -1
- package/es/connectors/range/connectRange.d.ts +3 -3
- package/es/connectors/rating-menu/connectRatingMenu.js +7 -3
- package/es/connectors/refinement-list/connectRefinementList.d.ts +3 -3
- package/es/connectors/refinement-list/connectRefinementList.js +1 -1
- package/es/connectors/relevant-sort/connectRelevantSort.d.ts +1 -1
- package/es/connectors/toggle-refinement/connectToggleRefinement.js +13 -3
- package/es/helpers/insights.d.ts +2 -1
- package/es/helpers/insights.js +3 -3
- package/es/lib/InstantSearch.d.ts +24 -14
- package/es/lib/InstantSearch.js +21 -7
- package/es/lib/insights/listener.d.ts +10 -6
- package/es/lib/insights/listener.js +42 -36
- package/es/lib/routers/history.d.ts +3 -2
- package/es/lib/routers/history.js +56 -2
- package/es/lib/stateMappings/simple.js +1 -0
- package/es/lib/stateMappings/singleIndex.js +1 -0
- package/es/lib/utils/createSendEventForFacet.js +12 -2
- package/es/lib/utils/createSendEventForHits.d.ts +8 -0
- package/es/lib/utils/createSendEventForHits.js +33 -11
- package/es/lib/utils/defer.d.ts +2 -2
- package/es/lib/utils/render-args.js +3 -2
- package/es/lib/version.d.ts +1 -1
- package/es/lib/version.js +1 -1
- package/es/middlewares/createInsightsMiddleware.d.ts +12 -12
- package/es/middlewares/createInsightsMiddleware.js +136 -34
- package/es/middlewares/createMetadataMiddleware.d.ts +3 -1
- package/es/middlewares/createMetadataMiddleware.js +17 -5
- package/es/middlewares/createRouterMiddleware.js +5 -1
- package/es/types/insights.d.ts +19 -1
- package/es/types/middleware.d.ts +22 -6
- package/es/types/router.d.ts +15 -7
- package/es/types/widget.d.ts +1 -1
- package/es/widgets/dynamic-widgets/dynamic-widgets.d.ts +2 -2
- package/es/widgets/geo-search/createHTMLMarker.d.ts +1 -1
- package/es/widgets/geo-search/geo-search.d.ts +1 -1
- package/es/widgets/hits/hits.js +2 -3
- package/es/widgets/hits-per-page/hits-per-page.js +3 -1
- package/es/widgets/index/index.d.ts +20 -20
- package/es/widgets/index/index.js +8 -8
- package/es/widgets/infinite-hits/infinite-hits.js +2 -3
- package/es/widgets/panel/panel.d.ts +2 -2
- package/es/widgets/range-slider/range-slider.d.ts +1 -1
- package/package.json +7 -7
|
@@ -137,7 +137,7 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
|
137
137
|
widgetState.internalToggleRefineOnMapMove = createInternalToggleRefinementOnMapMove(renderArgs, this.render.bind(this));
|
|
138
138
|
widgetState.internalSetMapMoveSinceLastRefine = createInternalSetMapMoveSinceLastRefine(renderArgs, this.render.bind(this));
|
|
139
139
|
var widgetRenderState = this.getWidgetRenderState(renderArgs);
|
|
140
|
-
sendEvent('view', widgetRenderState.items);
|
|
140
|
+
sendEvent('view:internal', widgetRenderState.items);
|
|
141
141
|
renderFn(_objectSpread(_objectSpread({}, widgetRenderState), {}, {
|
|
142
142
|
instantSearchInstance: instantSearchInstance
|
|
143
143
|
}), isFirstRendering);
|
|
@@ -161,7 +161,7 @@ var connectHierarchicalMenu = function connectHierarchicalMenu(renderFn) {
|
|
|
161
161
|
}
|
|
162
162
|
if (!_refine) {
|
|
163
163
|
_refine = function _refine(facetValue) {
|
|
164
|
-
sendEvent('click', facetValue);
|
|
164
|
+
sendEvent('click:internal', facetValue);
|
|
165
165
|
helper.toggleFacetRefinement(hierarchicalFacetName, facetValue).search();
|
|
166
166
|
};
|
|
167
167
|
}
|
|
@@ -40,7 +40,7 @@ var connectHits = function connectHits(renderFn) {
|
|
|
40
40
|
renderFn(_objectSpread(_objectSpread({}, renderState), {}, {
|
|
41
41
|
instantSearchInstance: renderOptions.instantSearchInstance
|
|
42
42
|
}), false);
|
|
43
|
-
renderState.sendEvent('view', renderState.hits);
|
|
43
|
+
renderState.sendEvent('view:internal', renderState.hits);
|
|
44
44
|
},
|
|
45
45
|
getRenderState: function getRenderState(renderState, renderOptions) {
|
|
46
46
|
return _objectSpread(_objectSpread({}, renderState), {}, {
|
|
@@ -6,7 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _utils = require("../../lib/utils");
|
|
9
|
-
var _excluded = ["page"]
|
|
9
|
+
var _excluded = ["page"],
|
|
10
|
+
_excluded2 = ["clickAnalytics", "userToken"];
|
|
10
11
|
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; }
|
|
11
12
|
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; }
|
|
12
13
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -30,17 +31,24 @@ function getStateWithoutPage(state) {
|
|
|
30
31
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
31
32
|
return rest;
|
|
32
33
|
}
|
|
34
|
+
function normalizeState(state) {
|
|
35
|
+
var _ref2 = state || {},
|
|
36
|
+
clickAnalytics = _ref2.clickAnalytics,
|
|
37
|
+
userToken = _ref2.userToken,
|
|
38
|
+
rest = _objectWithoutProperties(_ref2, _excluded2);
|
|
39
|
+
return rest;
|
|
40
|
+
}
|
|
33
41
|
function getInMemoryCache() {
|
|
34
42
|
var cachedHits = null;
|
|
35
43
|
var cachedState = null;
|
|
36
44
|
return {
|
|
37
|
-
read: function read(
|
|
38
|
-
var state =
|
|
45
|
+
read: function read(_ref3) {
|
|
46
|
+
var state = _ref3.state;
|
|
39
47
|
return (0, _utils.isEqual)(cachedState, getStateWithoutPage(state)) ? cachedHits : null;
|
|
40
48
|
},
|
|
41
|
-
write: function write(
|
|
42
|
-
var state =
|
|
43
|
-
hits =
|
|
49
|
+
write: function write(_ref4) {
|
|
50
|
+
var state = _ref4.state,
|
|
51
|
+
hits = _ref4.hits;
|
|
44
52
|
cachedState = getStateWithoutPage(state);
|
|
45
53
|
cachedHits = hits;
|
|
46
54
|
}
|
|
@@ -60,15 +68,15 @@ var connectInfiniteHits = function connectInfiniteHits(renderFn) {
|
|
|
60
68
|
// @TODO: this should be a generic, but a Connector can not yet be generic itself
|
|
61
69
|
|
|
62
70
|
return function (widgetParams) {
|
|
63
|
-
var
|
|
64
|
-
|
|
65
|
-
escapeHTML =
|
|
66
|
-
|
|
67
|
-
transformItems =
|
|
71
|
+
var _ref5 = widgetParams || {},
|
|
72
|
+
_ref5$escapeHTML = _ref5.escapeHTML,
|
|
73
|
+
escapeHTML = _ref5$escapeHTML === void 0 ? true : _ref5$escapeHTML,
|
|
74
|
+
_ref5$transformItems = _ref5.transformItems,
|
|
75
|
+
transformItems = _ref5$transformItems === void 0 ? function (items) {
|
|
68
76
|
return items;
|
|
69
|
-
} :
|
|
70
|
-
|
|
71
|
-
cache =
|
|
77
|
+
} : _ref5$transformItems,
|
|
78
|
+
_ref5$cache = _ref5.cache,
|
|
79
|
+
cache = _ref5$cache === void 0 ? getInMemoryCache() : _ref5$cache;
|
|
72
80
|
var showPrevious;
|
|
73
81
|
var showMore;
|
|
74
82
|
var sendEvent;
|
|
@@ -99,7 +107,7 @@ var connectInfiniteHits = function connectInfiniteHits(renderFn) {
|
|
|
99
107
|
// avoid updating the browser URL when the user displays the previous page.
|
|
100
108
|
helper.overrideStateWithoutTriggeringChangeEvent(_objectSpread(_objectSpread({}, helper.state), {}, {
|
|
101
109
|
page: getFirstReceivedPage(helper.state, cache.read({
|
|
102
|
-
state: helper.state
|
|
110
|
+
state: normalizeState(helper.state)
|
|
103
111
|
}) || {}) - 1
|
|
104
112
|
})).searchWithoutTriggeringOnStateChange();
|
|
105
113
|
};
|
|
@@ -107,7 +115,7 @@ var connectInfiniteHits = function connectInfiniteHits(renderFn) {
|
|
|
107
115
|
var getShowMore = function getShowMore(helper) {
|
|
108
116
|
return function () {
|
|
109
117
|
helper.setPage(getLastReceivedPage(helper.state, cache.read({
|
|
110
|
-
state: helper.state
|
|
118
|
+
state: normalizeState(helper.state)
|
|
111
119
|
}) || {}) + 1).search();
|
|
112
120
|
};
|
|
113
121
|
};
|
|
@@ -124,19 +132,19 @@ var connectInfiniteHits = function connectInfiniteHits(renderFn) {
|
|
|
124
132
|
renderFn(_objectSpread(_objectSpread({}, widgetRenderState), {}, {
|
|
125
133
|
instantSearchInstance: instantSearchInstance
|
|
126
134
|
}), false);
|
|
127
|
-
sendEvent('view', widgetRenderState.currentPageHits);
|
|
135
|
+
sendEvent('view:internal', widgetRenderState.currentPageHits);
|
|
128
136
|
},
|
|
129
137
|
getRenderState: function getRenderState(renderState, renderOptions) {
|
|
130
138
|
return _objectSpread(_objectSpread({}, renderState), {}, {
|
|
131
139
|
infiniteHits: this.getWidgetRenderState(renderOptions)
|
|
132
140
|
});
|
|
133
141
|
},
|
|
134
|
-
getWidgetRenderState: function getWidgetRenderState(
|
|
135
|
-
var results =
|
|
136
|
-
helper =
|
|
137
|
-
parent =
|
|
138
|
-
existingState =
|
|
139
|
-
instantSearchInstance =
|
|
142
|
+
getWidgetRenderState: function getWidgetRenderState(_ref6) {
|
|
143
|
+
var results = _ref6.results,
|
|
144
|
+
helper = _ref6.helper,
|
|
145
|
+
parent = _ref6.parent,
|
|
146
|
+
existingState = _ref6.state,
|
|
147
|
+
instantSearchInstance = _ref6.instantSearchInstance;
|
|
140
148
|
var isFirstPage;
|
|
141
149
|
var currentPageHits = [];
|
|
142
150
|
/**
|
|
@@ -146,7 +154,7 @@ var connectInfiniteHits = function connectInfiniteHits(renderFn) {
|
|
|
146
154
|
*/
|
|
147
155
|
var state = parent.getPreviousState() || existingState;
|
|
148
156
|
var cachedHits = cache.read({
|
|
149
|
-
state: state
|
|
157
|
+
state: normalizeState(state)
|
|
150
158
|
}) || {};
|
|
151
159
|
if (!results) {
|
|
152
160
|
showPrevious = getShowPrevious(helper);
|
|
@@ -163,6 +171,7 @@ var connectInfiniteHits = function connectInfiniteHits(renderFn) {
|
|
|
163
171
|
});
|
|
164
172
|
isFirstPage = state.page === undefined || getFirstReceivedPage(state, cachedHits) === 0;
|
|
165
173
|
} else {
|
|
174
|
+
var _results$disjunctiveF, _results$facets, _results$hierarchical;
|
|
166
175
|
var _state$page3 = state.page,
|
|
167
176
|
_page = _state$page3 === void 0 ? 0 : _state$page3;
|
|
168
177
|
if (escapeHTML && results.hits.length > 0) {
|
|
@@ -173,10 +182,24 @@ var connectInfiniteHits = function connectInfiniteHits(renderFn) {
|
|
|
173
182
|
var transformedHits = transformItems(hitsWithAbsolutePositionAndQueryID, {
|
|
174
183
|
results: results
|
|
175
184
|
});
|
|
176
|
-
|
|
185
|
+
|
|
186
|
+
/*
|
|
187
|
+
With dynamic widgets, facets are not included in the state before their relevant widgets are mounted. Until then, we need to bail out of writing this incomplete state representation in cache.
|
|
188
|
+
*/
|
|
189
|
+
var hasDynamicWidgets = false;
|
|
190
|
+
(0, _utils.walkIndex)(instantSearchInstance.mainIndex, function (indexWidget) {
|
|
191
|
+
if (!hasDynamicWidgets && indexWidget.getWidgets().some(function (_ref7) {
|
|
192
|
+
var $$type = _ref7.$$type;
|
|
193
|
+
return $$type === 'ais.dynamicWidgets';
|
|
194
|
+
})) {
|
|
195
|
+
hasDynamicWidgets = true;
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
var hasNoFacets = !((_results$disjunctiveF = results.disjunctiveFacets) !== null && _results$disjunctiveF !== void 0 && _results$disjunctiveF.length) && !((_results$facets = results.facets) !== null && _results$facets !== void 0 && _results$facets.length) && !((_results$hierarchical = results.hierarchicalFacets) !== null && _results$hierarchical !== void 0 && _results$hierarchical.length);
|
|
199
|
+
if (cachedHits[_page] === undefined && !results.__isArtificial && instantSearchInstance.status === 'idle' && !(hasDynamicWidgets && hasNoFacets)) {
|
|
177
200
|
cachedHits[_page] = transformedHits;
|
|
178
201
|
cache.write({
|
|
179
|
-
state: state,
|
|
202
|
+
state: normalizeState(state),
|
|
180
203
|
hits: cachedHits
|
|
181
204
|
});
|
|
182
205
|
}
|
|
@@ -198,8 +221,8 @@ var connectInfiniteHits = function connectInfiniteHits(renderFn) {
|
|
|
198
221
|
widgetParams: widgetParams
|
|
199
222
|
};
|
|
200
223
|
},
|
|
201
|
-
dispose: function dispose(
|
|
202
|
-
var state =
|
|
224
|
+
dispose: function dispose(_ref8) {
|
|
225
|
+
var state = _ref8.state;
|
|
203
226
|
unmountFn();
|
|
204
227
|
var stateWithoutPage = state.setQueryParameter('page', undefined);
|
|
205
228
|
if (!escapeHTML) {
|
|
@@ -209,8 +232,8 @@ var connectInfiniteHits = function connectInfiniteHits(renderFn) {
|
|
|
209
232
|
return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, undefined));
|
|
210
233
|
}, {}));
|
|
211
234
|
},
|
|
212
|
-
getWidgetUiState: function getWidgetUiState(uiState,
|
|
213
|
-
var searchParameters =
|
|
235
|
+
getWidgetUiState: function getWidgetUiState(uiState, _ref9) {
|
|
236
|
+
var searchParameters = _ref9.searchParameters;
|
|
214
237
|
var page = searchParameters.page || 0;
|
|
215
238
|
if (!page) {
|
|
216
239
|
// return without adding `page` to uiState
|
|
@@ -223,8 +246,8 @@ var connectInfiniteHits = function connectInfiniteHits(renderFn) {
|
|
|
223
246
|
page: page + 1
|
|
224
247
|
});
|
|
225
248
|
},
|
|
226
|
-
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters,
|
|
227
|
-
var uiState =
|
|
249
|
+
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref10) {
|
|
250
|
+
var uiState = _ref10.uiState;
|
|
228
251
|
var widgetSearchParameters = searchParameters;
|
|
229
252
|
if (escapeHTML) {
|
|
230
253
|
widgetSearchParameters = searchParameters.setQueryParameters(_utils.TAG_PLACEHOLDER);
|
|
@@ -127,7 +127,7 @@ var connectMenu = function connectMenu(renderFn) {
|
|
|
127
127
|
var _helper$getHierarchic = helper.getHierarchicalFacetBreadcrumb(attribute),
|
|
128
128
|
_helper$getHierarchic2 = _slicedToArray(_helper$getHierarchic, 1),
|
|
129
129
|
refinedItem = _helper$getHierarchic2[0];
|
|
130
|
-
sendEvent('click', facetValue ? facetValue : refinedItem);
|
|
130
|
+
sendEvent('click:internal', facetValue ? facetValue : refinedItem);
|
|
131
131
|
helper.toggleFacetRefinement(attribute, facetValue ? facetValue : refinedItem).search();
|
|
132
132
|
};
|
|
133
133
|
}
|
|
@@ -143,7 +143,7 @@ var connectNumericMenu = function connectNumericMenu(renderFn) {
|
|
|
143
143
|
if (!connectorState.refine) {
|
|
144
144
|
connectorState.refine = function (facetValue) {
|
|
145
145
|
var refinedState = getRefinedState(helper.state, attribute, facetValue);
|
|
146
|
-
connectorState.sendEvent('click', facetValue);
|
|
146
|
+
connectorState.sendEvent('click:internal', facetValue);
|
|
147
147
|
helper.setState(refinedState).search();
|
|
148
148
|
};
|
|
149
149
|
}
|
|
@@ -41,10 +41,13 @@ var createSendEvent = function createSendEvent(_ref) {
|
|
|
41
41
|
instantSearchInstance.sendEventToInsights(args[0]);
|
|
42
42
|
return;
|
|
43
43
|
}
|
|
44
|
-
var
|
|
45
|
-
facetValue = args[1],
|
|
44
|
+
var facetValue = args[1],
|
|
46
45
|
_args$ = args[2],
|
|
47
46
|
eventName = _args$ === void 0 ? 'Filter Applied' : _args$;
|
|
47
|
+
var _args$0$split = args[0].split(':'),
|
|
48
|
+
_args$0$split2 = _slicedToArray(_args$0$split, 2),
|
|
49
|
+
eventType = _args$0$split2[0],
|
|
50
|
+
eventModifier = _args$0$split2[1];
|
|
48
51
|
if (eventType !== 'click') {
|
|
49
52
|
return;
|
|
50
53
|
}
|
|
@@ -54,6 +57,7 @@ var createSendEvent = function createSendEvent(_ref) {
|
|
|
54
57
|
insightsMethod: 'clickedFilters',
|
|
55
58
|
widgetType: $$type,
|
|
56
59
|
eventType: eventType,
|
|
60
|
+
eventModifier: eventModifier,
|
|
57
61
|
payload: {
|
|
58
62
|
eventName: eventName,
|
|
59
63
|
index: helper.getIndex(),
|
|
@@ -129,7 +133,7 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
129
133
|
return emptyState;
|
|
130
134
|
}
|
|
131
135
|
var toggleRefinement = function toggleRefinement(helper, facetValue) {
|
|
132
|
-
sendEvent('click', facetValue);
|
|
136
|
+
sendEvent('click:internal', facetValue);
|
|
133
137
|
helper.setState(getRefinedState(helper.state, facetValue)).search();
|
|
134
138
|
};
|
|
135
139
|
var connectorState = {
|
|
@@ -178,7 +178,7 @@ var connectRefinementList = function connectRefinementList(renderFn) {
|
|
|
178
178
|
widgetType: this.$$type
|
|
179
179
|
});
|
|
180
180
|
triggerRefine = function triggerRefine(facetValue) {
|
|
181
|
-
sendEvent('click', facetValue);
|
|
181
|
+
sendEvent('click:internal', facetValue);
|
|
182
182
|
helper.toggleFacetRefinement(attribute, facetValue).search();
|
|
183
183
|
};
|
|
184
184
|
searchForFacetValues = createSearchForFacetValues(helper, this);
|
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
7
|
exports.default = void 0;
|
|
7
8
|
var _utils = require("../../lib/utils");
|
|
8
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
9
9
|
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; }
|
|
10
10
|
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; }
|
|
11
11
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
12
12
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
13
13
|
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
14
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
15
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
16
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
17
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
18
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
19
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
14
20
|
var withUsage = (0, _utils.createDocumentationMessageGenerator)({
|
|
15
21
|
name: 'toggle-refinement',
|
|
16
22
|
connector: true
|
|
@@ -29,10 +35,13 @@ var createSendEvent = function createSendEvent(_ref) {
|
|
|
29
35
|
instantSearchInstance.sendEventToInsights(args[0]);
|
|
30
36
|
return;
|
|
31
37
|
}
|
|
32
|
-
var
|
|
33
|
-
isRefined = args[1],
|
|
38
|
+
var isRefined = args[1],
|
|
34
39
|
_args$ = args[2],
|
|
35
40
|
eventName = _args$ === void 0 ? 'Filter Applied' : _args$;
|
|
41
|
+
var _args$0$split = args[0].split(':'),
|
|
42
|
+
_args$0$split2 = _slicedToArray(_args$0$split, 2),
|
|
43
|
+
eventType = _args$0$split2[0],
|
|
44
|
+
eventModifier = _args$0$split2[1];
|
|
36
45
|
if (eventType !== 'click' || on === undefined) {
|
|
37
46
|
return;
|
|
38
47
|
}
|
|
@@ -44,6 +53,7 @@ var createSendEvent = function createSendEvent(_ref) {
|
|
|
44
53
|
insightsMethod: 'clickedFilters',
|
|
45
54
|
widgetType: $$type,
|
|
46
55
|
eventType: eventType,
|
|
56
|
+
eventModifier: eventModifier,
|
|
47
57
|
payload: {
|
|
48
58
|
eventName: eventName,
|
|
49
59
|
index: helper.getIndex(),
|
|
@@ -90,7 +100,7 @@ var connectToggleRefinement = function connectToggleRefinement(renderFn) {
|
|
|
90
100
|
},
|
|
91
101
|
isRefined = _ref3.isRefined;
|
|
92
102
|
if (!isRefined) {
|
|
93
|
-
sendEvent('click', isRefined);
|
|
103
|
+
sendEvent('click:internal', isRefined);
|
|
94
104
|
if (hasAnOffValue) {
|
|
95
105
|
off.forEach(function (v) {
|
|
96
106
|
return helper.removeDisjunctiveFacetRefinement(attribute, v);
|
package/cjs/helpers/insights.js
CHANGED
|
@@ -4,11 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = insights;
|
|
7
|
-
exports.hasDataAttributes = hasDataAttributes;
|
|
8
7
|
exports.readDataAttributes = readDataAttributes;
|
|
9
8
|
exports.writeDataAttributes = writeDataAttributes;
|
|
10
9
|
var _utils = require("../lib/utils");
|
|
11
10
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
11
|
+
/** @deprecated use bindEvent instead */
|
|
12
12
|
function readDataAttributes(domElement) {
|
|
13
13
|
var method = domElement.getAttribute('data-insights-method');
|
|
14
14
|
var serializedPayload = domElement.getAttribute('data-insights-payload');
|
|
@@ -25,9 +25,8 @@ function readDataAttributes(domElement) {
|
|
|
25
25
|
throw new Error('The insights helper was unable to parse `data-insights-payload`.');
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
28
|
+
|
|
29
|
+
/** @deprecated use bindEvent instead */
|
|
31
30
|
function writeDataAttributes(_ref) {
|
|
32
31
|
var method = _ref.method,
|
|
33
32
|
payload = _ref.payload;
|
package/cjs/lib/InstantSearch.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _events = _interopRequireDefault(require("@algolia/events"));
|
|
8
8
|
var _algoliasearchHelper = _interopRequireDefault(require("algoliasearch-helper"));
|
|
9
|
+
var _createInsightsMiddleware = require("../middlewares/createInsightsMiddleware");
|
|
9
10
|
var _createMetadataMiddleware = require("../middlewares/createMetadataMiddleware");
|
|
10
11
|
var _createRouterMiddleware = require("../middlewares/createRouterMiddleware");
|
|
11
12
|
var _index = _interopRequireDefault(require("../widgets/index/index"));
|
|
@@ -106,12 +107,14 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
|
|
|
106
107
|
}));
|
|
107
108
|
_this.setMaxListeners(100);
|
|
108
109
|
var _options$indexName = options.indexName,
|
|
109
|
-
indexName = _options$indexName === void 0 ?
|
|
110
|
+
indexName = _options$indexName === void 0 ? '' : _options$indexName,
|
|
110
111
|
numberLocale = options.numberLocale,
|
|
111
112
|
_options$initialUiSta = options.initialUiState,
|
|
112
113
|
initialUiState = _options$initialUiSta === void 0 ? {} : _options$initialUiSta,
|
|
113
114
|
_options$routing = options.routing,
|
|
114
115
|
routing = _options$routing === void 0 ? null : _options$routing,
|
|
116
|
+
_options$insights = options.insights,
|
|
117
|
+
insights = _options$insights === void 0 ? false : _options$insights,
|
|
115
118
|
searchFunction = options.searchFunction,
|
|
116
119
|
_options$stalledSearc = options.stalledSearchDelay,
|
|
117
120
|
stalledSearchDelay = _options$stalledSearc === void 0 ? 200 : _options$stalledSearc,
|
|
@@ -121,9 +124,6 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
|
|
|
121
124
|
insightsClient = _options$insightsClie === void 0 ? null : _options$insightsClie,
|
|
122
125
|
_options$onStateChang = options.onStateChange,
|
|
123
126
|
onStateChange = _options$onStateChang === void 0 ? null : _options$onStateChang;
|
|
124
|
-
if (indexName === null) {
|
|
125
|
-
throw new Error(withUsage('The `indexName` option is required.'));
|
|
126
|
-
}
|
|
127
127
|
if (searchClient === null) {
|
|
128
128
|
throw new Error(withUsage('The `searchClient` option is required.'));
|
|
129
129
|
}
|
|
@@ -167,11 +167,22 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
|
|
|
167
167
|
}
|
|
168
168
|
_this.sendEventToInsights = _utils.noop;
|
|
169
169
|
if (routing) {
|
|
170
|
-
var routerOptions = typeof routing === 'boolean' ?
|
|
170
|
+
var routerOptions = typeof routing === 'boolean' ? {} : routing;
|
|
171
|
+
routerOptions.$$internal = true;
|
|
171
172
|
_this.use((0, _createRouterMiddleware.createRouterMiddleware)(routerOptions));
|
|
172
173
|
}
|
|
174
|
+
|
|
175
|
+
// This is the default middleware,
|
|
176
|
+
// any user-provided middleware will be added later and override this one.
|
|
177
|
+
if (insights) {
|
|
178
|
+
var insightsOptions = typeof insights === 'boolean' ? {} : insights;
|
|
179
|
+
insightsOptions.$$internal = true;
|
|
180
|
+
_this.use((0, _createInsightsMiddleware.createInsightsMiddleware)(insightsOptions));
|
|
181
|
+
}
|
|
173
182
|
if ((0, _createMetadataMiddleware.isMetadataEnabled)()) {
|
|
174
|
-
_this.use((0, _createMetadataMiddleware.createMetadataMiddleware)(
|
|
183
|
+
_this.use((0, _createMetadataMiddleware.createMetadataMiddleware)({
|
|
184
|
+
$$internal: true
|
|
185
|
+
}));
|
|
175
186
|
}
|
|
176
187
|
return _this;
|
|
177
188
|
}
|
|
@@ -207,6 +218,8 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
|
|
|
207
218
|
}
|
|
208
219
|
var newMiddlewareList = middleware.map(function (fn) {
|
|
209
220
|
var newMiddleware = _objectSpread({
|
|
221
|
+
$$type: '__unknown__',
|
|
222
|
+
$$internal: false,
|
|
210
223
|
subscribe: _utils.noop,
|
|
211
224
|
started: _utils.noop,
|
|
212
225
|
unsubscribe: _utils.noop,
|
|
@@ -352,6 +365,7 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
|
|
|
352
365
|
mainHelper.search = function () {
|
|
353
366
|
_this3.status = 'loading';
|
|
354
367
|
_this3.scheduleRender(false);
|
|
368
|
+
process.env.NODE_ENV === 'development' ? (0, _utils.warning)(Boolean(_this3.indexName) || _this3.mainIndex.getWidgets().some(_utils.isIndexWidget), 'No indexName provided, nor an explicit index widget in the widgets tree. This is required to be able to display results.') : void 0;
|
|
355
369
|
|
|
356
370
|
// This solution allows us to keep the exact same API for the users but
|
|
357
371
|
// under the hood, we have a different implementation. It should be
|
|
@@ -3,11 +3,40 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.createInsightsEventHandler = void 0;
|
|
7
|
+
exports.default = withInsightsListener;
|
|
7
8
|
var _preact = require("preact");
|
|
8
9
|
var _insights = require("../../helpers/insights");
|
|
9
10
|
var _utils = require("../utils");
|
|
10
|
-
var
|
|
11
|
+
var createInsightsEventHandler = function createInsightsEventHandler(_ref) {
|
|
12
|
+
var insights = _ref.insights,
|
|
13
|
+
sendEvent = _ref.sendEvent;
|
|
14
|
+
return function (event) {
|
|
15
|
+
// new way, e.g. bindEvent("click", hit, "Hit clicked")
|
|
16
|
+
var insightsThroughSendEvent = findInsightsTarget(event.target, event.currentTarget, function (element) {
|
|
17
|
+
return element.hasAttribute('data-insights-event');
|
|
18
|
+
});
|
|
19
|
+
if (insightsThroughSendEvent) {
|
|
20
|
+
var payload = parseInsightsEvent(insightsThroughSendEvent);
|
|
21
|
+
payload.forEach(function (single) {
|
|
22
|
+
return sendEvent(single);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// old way, e.g. instantsearch.insights("clickedObjectIDsAfterSearch", { .. })
|
|
27
|
+
var insightsThroughFunction = findInsightsTarget(event.target, event.currentTarget, function (element) {
|
|
28
|
+
return element.hasAttribute('data-insights-method') && element.hasAttribute('data-insights-payload');
|
|
29
|
+
});
|
|
30
|
+
if (insightsThroughFunction) {
|
|
31
|
+
var _readDataAttributes = (0, _insights.readDataAttributes)(insightsThroughFunction),
|
|
32
|
+
method = _readDataAttributes.method,
|
|
33
|
+
_payload = _readDataAttributes.payload;
|
|
34
|
+
insights(method, _payload);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
exports.createInsightsEventHandler = createInsightsEventHandler;
|
|
39
|
+
function findInsightsTarget(startElement, endElement, validator) {
|
|
11
40
|
var element = startElement;
|
|
12
41
|
while (element && !validator(element)) {
|
|
13
42
|
if (element === endElement) {
|
|
@@ -16,8 +45,8 @@ var findInsightsTarget = function findInsightsTarget(startElement, endElement, v
|
|
|
16
45
|
element = element.parentElement;
|
|
17
46
|
}
|
|
18
47
|
return element;
|
|
19
|
-
}
|
|
20
|
-
|
|
48
|
+
}
|
|
49
|
+
function parseInsightsEvent(element) {
|
|
21
50
|
var serializedPayload = element.getAttribute('data-insights-event');
|
|
22
51
|
if (typeof serializedPayload !== 'string') {
|
|
23
52
|
throw new Error('The insights middleware expects `data-insights-event` to be a base64-encoded JSON string.');
|
|
@@ -27,39 +56,17 @@ var parseInsightsEvent = function parseInsightsEvent(element) {
|
|
|
27
56
|
} catch (error) {
|
|
28
57
|
throw new Error('The insights middleware was unable to parse `data-insights-event`.');
|
|
29
58
|
}
|
|
30
|
-
}
|
|
31
|
-
var insightsListener = function insightsListener(BaseComponent) {
|
|
32
|
-
function WithInsightsListener(props) {
|
|
33
|
-
var handleClick = function handleClick(event) {
|
|
34
|
-
if (props.sendEvent) {
|
|
35
|
-
// new way with insights middleware
|
|
36
|
-
var targetWithEvent = findInsightsTarget(event.target, event.currentTarget, function (element) {
|
|
37
|
-
return element.hasAttribute('data-insights-event');
|
|
38
|
-
});
|
|
39
|
-
if (targetWithEvent) {
|
|
40
|
-
var payload = parseInsightsEvent(targetWithEvent);
|
|
41
|
-
payload.forEach(function (single) {
|
|
42
|
-
return props.sendEvent(single);
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
}
|
|
59
|
+
}
|
|
46
60
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
_payload = _readDataAttributes.payload;
|
|
55
|
-
props.insights(method, _payload);
|
|
56
|
-
}
|
|
57
|
-
};
|
|
61
|
+
/**
|
|
62
|
+
* @deprecated use `sendEvent` directly instead
|
|
63
|
+
*/
|
|
64
|
+
function withInsightsListener(BaseComponent) {
|
|
65
|
+
process.env.NODE_ENV === 'development' ? (0, _utils.warning)(false, 'The `withInsightsListener` function is deprecated and will be removed in the next major version. Please use `sendEvent` directly instead.') : void 0;
|
|
66
|
+
return function WithInsightsListener(props) {
|
|
67
|
+
var handleClick = createInsightsEventHandler(props);
|
|
58
68
|
return (0, _preact.h)("div", {
|
|
59
69
|
onClick: handleClick
|
|
60
70
|
}, (0, _preact.h)(BaseComponent, props));
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
};
|
|
64
|
-
var _default = insightsListener;
|
|
65
|
-
exports.default = _default;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
@@ -22,6 +22,48 @@ var setWindowTitle = function setWindowTitle(title) {
|
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
24
|
var BrowserHistory = /*#__PURE__*/function () {
|
|
25
|
+
/**
|
|
26
|
+
* Transforms a UI state into a title for the page.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Time in milliseconds before performing a write in the history.
|
|
31
|
+
* It prevents from adding too many entries in the history and
|
|
32
|
+
* makes the back button more usable.
|
|
33
|
+
*
|
|
34
|
+
* @default 400
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Creates a full URL based on the route state.
|
|
39
|
+
* The storage adaptor maps all syncable keys to the query string of the URL.
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Parses the URL into a route state.
|
|
44
|
+
* It should be symmetrical to `createURL`.
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Returns the location to store in the history.
|
|
49
|
+
* @default () => window.location
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Indicates if last action was back/forward in the browser.
|
|
54
|
+
*/
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Indicates whether the history router is disposed or not.
|
|
58
|
+
*/
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Indicates the window.history.length before the last call to
|
|
62
|
+
* window.history.pushState (called in `write`).
|
|
63
|
+
* It allows to determine if a `pushState` has been triggered elsewhere,
|
|
64
|
+
* and thus to prevent the `write` method from calling `pushState`.
|
|
65
|
+
*/
|
|
66
|
+
|
|
25
67
|
/**
|
|
26
68
|
* Initializes a new storage provider that syncs the search state to the URL
|
|
27
69
|
* using web APIs (`window.location.pushState` and `onpopstate` event).
|
|
@@ -38,12 +80,14 @@ var BrowserHistory = /*#__PURE__*/function () {
|
|
|
38
80
|
dispose = _ref.dispose,
|
|
39
81
|
push = _ref.push;
|
|
40
82
|
_classCallCheck(this, BrowserHistory);
|
|
83
|
+
_defineProperty(this, "$$type", 'ais.browser');
|
|
41
84
|
_defineProperty(this, "windowTitle", void 0);
|
|
42
85
|
_defineProperty(this, "writeDelay", void 0);
|
|
43
86
|
_defineProperty(this, "_createURL", void 0);
|
|
44
87
|
_defineProperty(this, "parseURL", void 0);
|
|
45
88
|
_defineProperty(this, "getLocation", void 0);
|
|
46
89
|
_defineProperty(this, "writeTimer", void 0);
|
|
90
|
+
_defineProperty(this, "_onPopState", void 0);
|
|
47
91
|
_defineProperty(this, "inPopState", false);
|
|
48
92
|
_defineProperty(this, "isDisposed", false);
|
|
49
93
|
_defineProperty(this, "latestAcknowledgedHistory", 0);
|
|
@@ -149,11 +193,21 @@ var BrowserHistory = /*#__PURE__*/function () {
|
|
|
149
193
|
}, {
|
|
150
194
|
key: "createURL",
|
|
151
195
|
value: function createURL(routeState) {
|
|
152
|
-
|
|
196
|
+
var url = this._createURL({
|
|
153
197
|
qsModule: _qs.default,
|
|
154
198
|
routeState: routeState,
|
|
155
199
|
location: this.getLocation()
|
|
156
200
|
});
|
|
201
|
+
if (process.env.NODE_ENV === 'development') {
|
|
202
|
+
try {
|
|
203
|
+
// We just want to check if the URL is valid.
|
|
204
|
+
// eslint-disable-next-line no-new
|
|
205
|
+
new URL(url);
|
|
206
|
+
} catch (e) {
|
|
207
|
+
process.env.NODE_ENV === 'development' ? (0, _utils.warning)(false, "The URL returned by the `createURL` function is invalid.\nPlease make sure it returns an absolute URL to avoid issues, e.g: `https://algolia.com/search?query=iphone`.") : void 0;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return url;
|
|
157
211
|
}
|
|
158
212
|
|
|
159
213
|
/**
|
|
@@ -24,6 +24,7 @@ function getIndexStateWithoutConfigure(uiState) {
|
|
|
24
24
|
// which excludes "configure" as this function does.
|
|
25
25
|
function simpleStateMapping() {
|
|
26
26
|
return {
|
|
27
|
+
$$type: 'ais.simple',
|
|
27
28
|
stateToRoute: function stateToRoute(uiState) {
|
|
28
29
|
return Object.keys(uiState).reduce(function (state, indexId) {
|
|
29
30
|
return _objectSpread(_objectSpread({}, state), {}, _defineProperty({}, indexId, getIndexStateWithoutConfigure(uiState[indexId])));
|
|
@@ -18,6 +18,7 @@ function getIndexStateWithoutConfigure(uiState) {
|
|
|
18
18
|
}
|
|
19
19
|
function singleIndexStateMapping(indexName) {
|
|
20
20
|
return {
|
|
21
|
+
$$type: 'ais.singleIndex',
|
|
21
22
|
stateToRoute: function stateToRoute(uiState) {
|
|
22
23
|
return getIndexStateWithoutConfigure(uiState[indexName] || {});
|
|
23
24
|
},
|