instantsearch.js 4.54.1 → 4.55.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/Hits/Hits.js +16 -7
- package/cjs/components/InfiniteHits/InfiniteHits.js +13 -2
- 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 +39 -31
- 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 +18 -2
- package/cjs/lib/insights/listener.js +43 -36
- package/cjs/lib/routers/history.js +1 -0
- 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/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/infinite-hits/infinite-hits.js +1 -2
- package/dist/instantsearch.development.d.ts +67 -8
- package/dist/instantsearch.development.js +433 -251
- package/dist/instantsearch.development.js.map +1 -1
- package/dist/instantsearch.production.d.ts +67 -8
- package/dist/instantsearch.production.min.d.ts +67 -8
- package/dist/instantsearch.production.min.js +2 -2
- package/dist/instantsearch.production.min.js.map +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/connectors/autocomplete/connectAutocomplete.js +1 -1
- 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 +39 -31
- package/es/connectors/menu/connectMenu.js +1 -1
- package/es/connectors/numeric-menu/connectNumericMenu.js +1 -1
- package/es/connectors/rating-menu/connectRatingMenu.js +7 -3
- package/es/connectors/refinement-list/connectRefinementList.js +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 +11 -1
- package/es/lib/InstantSearch.js +18 -2
- package/es/lib/insights/listener.d.ts +10 -6
- package/es/lib/insights/listener.js +42 -36
- package/es/lib/routers/history.d.ts +1 -0
- package/es/lib/routers/history.js +1 -0
- 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/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 +16 -0
- package/es/types/router.d.ts +8 -0
- package/es/widgets/hits/hits.js +2 -3
- package/es/widgets/infinite-hits/infinite-hits.js +2 -3
- package/package.json +6 -6
|
@@ -4,9 +4,10 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.default =
|
|
7
|
+
exports.default = Hits;
|
|
8
8
|
var _uiComponentsShared = require("@algolia/ui-components-shared");
|
|
9
9
|
var _preact = require("preact");
|
|
10
|
+
var _listener = require("../../lib/insights/listener");
|
|
10
11
|
var _utils = require("../../lib/utils");
|
|
11
12
|
var _Template = _interopRequireDefault(require("../Template/Template"));
|
|
12
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -16,18 +17,24 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
16
17
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
17
18
|
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); }
|
|
18
19
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
19
|
-
|
|
20
|
+
function Hits(_ref) {
|
|
20
21
|
var results = _ref.results,
|
|
21
22
|
hits = _ref.hits,
|
|
23
|
+
insights = _ref.insights,
|
|
22
24
|
bindEvent = _ref.bindEvent,
|
|
23
25
|
sendEvent = _ref.sendEvent,
|
|
24
26
|
cssClasses = _ref.cssClasses,
|
|
25
27
|
templateProps = _ref.templateProps;
|
|
28
|
+
var handleInsightsClick = (0, _listener.createInsightsEventHandler)({
|
|
29
|
+
insights: insights,
|
|
30
|
+
sendEvent: sendEvent
|
|
31
|
+
});
|
|
26
32
|
if (results.hits.length === 0) {
|
|
27
33
|
return (0, _preact.h)(_Template.default, _extends({}, templateProps, {
|
|
28
34
|
templateKey: "empty",
|
|
29
35
|
rootProps: {
|
|
30
|
-
className: (0, _uiComponentsShared.cx)(cssClasses.root, cssClasses.emptyRoot)
|
|
36
|
+
className: (0, _uiComponentsShared.cx)(cssClasses.root, cssClasses.emptyRoot),
|
|
37
|
+
onClick: handleInsightsClick
|
|
31
38
|
},
|
|
32
39
|
data: results
|
|
33
40
|
}));
|
|
@@ -41,7 +48,11 @@ var Hits = function Hits(_ref) {
|
|
|
41
48
|
templateKey: "item",
|
|
42
49
|
rootTagName: "li",
|
|
43
50
|
rootProps: {
|
|
44
|
-
className: cssClasses.item
|
|
51
|
+
className: cssClasses.item,
|
|
52
|
+
onClick: function onClick(event) {
|
|
53
|
+
handleInsightsClick(event);
|
|
54
|
+
sendEvent('click:internal', hit, 'Hit Clicked');
|
|
55
|
+
}
|
|
45
56
|
},
|
|
46
57
|
key: hit.objectID,
|
|
47
58
|
data: _objectSpread(_objectSpread({}, hit), {}, {
|
|
@@ -54,6 +65,4 @@ var Hits = function Hits(_ref) {
|
|
|
54
65
|
sendEvent: sendEvent
|
|
55
66
|
}));
|
|
56
67
|
})));
|
|
57
|
-
}
|
|
58
|
-
var _default = Hits;
|
|
59
|
-
exports.default = _default;
|
|
68
|
+
}
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _uiComponentsShared = require("@algolia/ui-components-shared");
|
|
9
9
|
var _preact = require("preact");
|
|
10
|
+
var _listener = require("../../lib/insights/listener");
|
|
10
11
|
var _utils = require("../../lib/utils");
|
|
11
12
|
var _Template = _interopRequireDefault(require("../Template/Template"));
|
|
12
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -19,6 +20,7 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
|
|
|
19
20
|
var InfiniteHits = function InfiniteHits(_ref) {
|
|
20
21
|
var results = _ref.results,
|
|
21
22
|
hits = _ref.hits,
|
|
23
|
+
insights = _ref.insights,
|
|
22
24
|
bindEvent = _ref.bindEvent,
|
|
23
25
|
sendEvent = _ref.sendEvent,
|
|
24
26
|
hasShowPrevious = _ref.hasShowPrevious,
|
|
@@ -28,11 +30,16 @@ var InfiniteHits = function InfiniteHits(_ref) {
|
|
|
28
30
|
isLastPage = _ref.isLastPage,
|
|
29
31
|
cssClasses = _ref.cssClasses,
|
|
30
32
|
templateProps = _ref.templateProps;
|
|
33
|
+
var handleInsightsClick = (0, _listener.createInsightsEventHandler)({
|
|
34
|
+
insights: insights,
|
|
35
|
+
sendEvent: sendEvent
|
|
36
|
+
});
|
|
31
37
|
if (results.hits.length === 0) {
|
|
32
38
|
return (0, _preact.h)(_Template.default, _extends({}, templateProps, {
|
|
33
39
|
templateKey: "empty",
|
|
34
40
|
rootProps: {
|
|
35
|
-
className: (0, _uiComponentsShared.cx)(cssClasses.root, cssClasses.emptyRoot)
|
|
41
|
+
className: (0, _uiComponentsShared.cx)(cssClasses.root, cssClasses.emptyRoot),
|
|
42
|
+
onClick: handleInsightsClick
|
|
36
43
|
},
|
|
37
44
|
data: results
|
|
38
45
|
}));
|
|
@@ -54,7 +61,11 @@ var InfiniteHits = function InfiniteHits(_ref) {
|
|
|
54
61
|
templateKey: "item",
|
|
55
62
|
rootTagName: "li",
|
|
56
63
|
rootProps: {
|
|
57
|
-
className: cssClasses.item
|
|
64
|
+
className: cssClasses.item,
|
|
65
|
+
onClick: function onClick(event) {
|
|
66
|
+
handleInsightsClick(event);
|
|
67
|
+
sendEvent('click:internal', hit, 'Hit Clicked');
|
|
68
|
+
}
|
|
58
69
|
},
|
|
59
70
|
key: hit.objectID,
|
|
60
71
|
data: _objectSpread(_objectSpread({}, hit), {}, {
|
|
@@ -41,7 +41,7 @@ var connectAutocomplete = function connectAutocomplete(renderFn) {
|
|
|
41
41
|
renderState.indices.forEach(function (_ref3) {
|
|
42
42
|
var sendEvent = _ref3.sendEvent,
|
|
43
43
|
hits = _ref3.hits;
|
|
44
|
-
sendEvent('view', hits);
|
|
44
|
+
sendEvent('view:internal', hits);
|
|
45
45
|
});
|
|
46
46
|
renderFn(_objectSpread(_objectSpread({}, renderState), {}, {
|
|
47
47
|
instantSearchInstance: instantSearchInstance
|
|
@@ -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);
|
|
@@ -176,7 +184,7 @@ var connectInfiniteHits = function connectInfiniteHits(renderFn) {
|
|
|
176
184
|
if (cachedHits[_page] === undefined && !results.__isArtificial && instantSearchInstance.status === 'idle') {
|
|
177
185
|
cachedHits[_page] = transformedHits;
|
|
178
186
|
cache.write({
|
|
179
|
-
state: state,
|
|
187
|
+
state: normalizeState(state),
|
|
180
188
|
hits: cachedHits
|
|
181
189
|
});
|
|
182
190
|
}
|
|
@@ -198,8 +206,8 @@ var connectInfiniteHits = function connectInfiniteHits(renderFn) {
|
|
|
198
206
|
widgetParams: widgetParams
|
|
199
207
|
};
|
|
200
208
|
},
|
|
201
|
-
dispose: function dispose(
|
|
202
|
-
var state =
|
|
209
|
+
dispose: function dispose(_ref7) {
|
|
210
|
+
var state = _ref7.state;
|
|
203
211
|
unmountFn();
|
|
204
212
|
var stateWithoutPage = state.setQueryParameter('page', undefined);
|
|
205
213
|
if (!escapeHTML) {
|
|
@@ -209,8 +217,8 @@ var connectInfiniteHits = function connectInfiniteHits(renderFn) {
|
|
|
209
217
|
return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, undefined));
|
|
210
218
|
}, {}));
|
|
211
219
|
},
|
|
212
|
-
getWidgetUiState: function getWidgetUiState(uiState,
|
|
213
|
-
var searchParameters =
|
|
220
|
+
getWidgetUiState: function getWidgetUiState(uiState, _ref8) {
|
|
221
|
+
var searchParameters = _ref8.searchParameters;
|
|
214
222
|
var page = searchParameters.page || 0;
|
|
215
223
|
if (!page) {
|
|
216
224
|
// return without adding `page` to uiState
|
|
@@ -223,8 +231,8 @@ var connectInfiniteHits = function connectInfiniteHits(renderFn) {
|
|
|
223
231
|
page: page + 1
|
|
224
232
|
});
|
|
225
233
|
},
|
|
226
|
-
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters,
|
|
227
|
-
var uiState =
|
|
234
|
+
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref9) {
|
|
235
|
+
var uiState = _ref9.uiState;
|
|
228
236
|
var widgetSearchParameters = searchParameters;
|
|
229
237
|
if (escapeHTML) {
|
|
230
238
|
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"));
|
|
@@ -112,6 +113,8 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
|
|
|
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,
|
|
@@ -167,11 +170,22 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
|
|
|
167
170
|
}
|
|
168
171
|
_this.sendEventToInsights = _utils.noop;
|
|
169
172
|
if (routing) {
|
|
170
|
-
var routerOptions = typeof routing === 'boolean' ?
|
|
173
|
+
var routerOptions = typeof routing === 'boolean' ? {} : routing;
|
|
174
|
+
routerOptions.$$internal = true;
|
|
171
175
|
_this.use((0, _createRouterMiddleware.createRouterMiddleware)(routerOptions));
|
|
172
176
|
}
|
|
177
|
+
|
|
178
|
+
// This is the default middleware,
|
|
179
|
+
// any user-provided middleware will be added later and override this one.
|
|
180
|
+
if (insights) {
|
|
181
|
+
var insightsOptions = typeof insights === 'boolean' ? {} : insights;
|
|
182
|
+
insightsOptions.$$internal = true;
|
|
183
|
+
_this.use((0, _createInsightsMiddleware.createInsightsMiddleware)(insightsOptions));
|
|
184
|
+
}
|
|
173
185
|
if ((0, _createMetadataMiddleware.isMetadataEnabled)()) {
|
|
174
|
-
_this.use((0, _createMetadataMiddleware.createMetadataMiddleware)(
|
|
186
|
+
_this.use((0, _createMetadataMiddleware.createMetadataMiddleware)({
|
|
187
|
+
$$internal: true
|
|
188
|
+
}));
|
|
175
189
|
}
|
|
176
190
|
return _this;
|
|
177
191
|
}
|
|
@@ -207,6 +221,8 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
|
|
|
207
221
|
}
|
|
208
222
|
var newMiddlewareList = middleware.map(function (fn) {
|
|
209
223
|
var newMiddleware = _objectSpread({
|
|
224
|
+
$$type: '__unknown__',
|
|
225
|
+
$$internal: false,
|
|
210
226
|
subscribe: _utils.noop,
|
|
211
227
|
started: _utils.noop,
|
|
212
228
|
unsubscribe: _utils.noop,
|
|
@@ -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
|
+
}
|
|
@@ -38,6 +38,7 @@ var BrowserHistory = /*#__PURE__*/function () {
|
|
|
38
38
|
dispose = _ref.dispose,
|
|
39
39
|
push = _ref.push;
|
|
40
40
|
_classCallCheck(this, BrowserHistory);
|
|
41
|
+
_defineProperty(this, "$$type", 'ais.browser');
|
|
41
42
|
_defineProperty(this, "windowTitle", void 0);
|
|
42
43
|
_defineProperty(this, "writeDelay", void 0);
|
|
43
44
|
_defineProperty(this, "_createURL", void 0);
|
|
@@ -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
|
},
|