algolia-experiences 1.8.17 → 1.8.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
|
|
2
2
|
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
|
3
|
-
|
|
3
|
+
|
|
4
4
|
- [`algolia-experiences`](#algolia-experiences)
|
|
5
5
|
- [Usage](#usage)
|
|
6
6
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! algolia-experiences 1.8.
|
|
1
|
+
/*! algolia-experiences 1.8.19 | © Algolia, Inc. and contributors; MIT License | https://github.com/algolia/instantsearch */
|
|
2
2
|
(function (factory) {
|
|
3
3
|
typeof define === 'function' && define.amd ? define(factory) :
|
|
4
4
|
factory();
|
|
@@ -4987,7 +4987,7 @@
|
|
|
4987
4987
|
function requireVersion() {
|
|
4988
4988
|
if (hasRequiredVersion) return version$1;
|
|
4989
4989
|
hasRequiredVersion = 1;
|
|
4990
|
-
version$1 = '3.29.
|
|
4990
|
+
version$1 = '3.29.3';
|
|
4991
4991
|
return version$1;
|
|
4992
4992
|
}
|
|
4993
4993
|
|
|
@@ -6886,7 +6886,7 @@
|
|
|
6886
6886
|
});
|
|
6887
6887
|
}
|
|
6888
6888
|
|
|
6889
|
-
var version = '4.
|
|
6889
|
+
var version = '4.110.0';
|
|
6890
6890
|
|
|
6891
6891
|
var ANONYMOUS_TOKEN_COOKIE_KEY = '_ALGOLIA';
|
|
6892
6892
|
function getCookie(name) {
|
|
@@ -7374,7 +7374,8 @@
|
|
|
7374
7374
|
helper.overrideStateWithoutTriggeringChangeEvent(_object_spread_props(_object_spread({}, helper.state), {
|
|
7375
7375
|
userToken: normalizedUserToken
|
|
7376
7376
|
}));
|
|
7377
|
-
if (existingToken && existingToken !==
|
|
7377
|
+
if (existingToken && existingToken !== normalizedUserToken) {
|
|
7378
|
+
helper._recommendCache = {};
|
|
7378
7379
|
instantSearchInstance.scheduleSearch();
|
|
7379
7380
|
}
|
|
7380
7381
|
}
|
|
@@ -7463,14 +7464,17 @@
|
|
|
7463
7464
|
} else if (event.insightsMethod) {
|
|
7464
7465
|
if (event.insightsMethod === 'viewedObjectIDs') {
|
|
7465
7466
|
var payload = event.payload;
|
|
7467
|
+
var getViewEventKey = function getViewEventKey(objectID) {
|
|
7468
|
+
return payload.queryID ? "".concat(payload.queryID, ":").concat(objectID) : objectID;
|
|
7469
|
+
};
|
|
7466
7470
|
var difference = payload.objectIDs.filter(function(objectID) {
|
|
7467
|
-
return !viewedObjectIDs.has(objectID);
|
|
7471
|
+
return !viewedObjectIDs.has(getViewEventKey(objectID));
|
|
7468
7472
|
});
|
|
7469
7473
|
if (difference.length === 0) {
|
|
7470
7474
|
return;
|
|
7471
7475
|
}
|
|
7472
7476
|
difference.forEach(function(objectID) {
|
|
7473
|
-
return viewedObjectIDs.add(objectID);
|
|
7477
|
+
return viewedObjectIDs.add(getViewEventKey(objectID));
|
|
7474
7478
|
});
|
|
7475
7479
|
payload.objectIDs = difference;
|
|
7476
7480
|
}
|
|
@@ -7578,10 +7582,10 @@
|
|
|
7578
7582
|
* and the ability to set credentials via extra parameters when sending events.
|
|
7579
7583
|
*/ function isModernInsightsClient(client) {
|
|
7580
7584
|
var _split_map = _sliced_to_array((client.version || '').split('.').map(Number), 2), major = _split_map[0], minor = _split_map[1];
|
|
7581
|
-
/*
|
|
7585
|
+
/* oxlint-disable instantsearch/naming-convention */ var v3 = major >= 3;
|
|
7582
7586
|
var v2_6 = major === 2 && minor >= 6;
|
|
7583
7587
|
var v1_10 = major === 1 && minor >= 10;
|
|
7584
|
-
/*
|
|
7588
|
+
/* oxlint-enable instantsearch/naming-convention */ return v3 || v2_6 || v1_10;
|
|
7585
7589
|
}
|
|
7586
7590
|
/**
|
|
7587
7591
|
* While `search-insights` supports both string and number user tokens,
|
|
@@ -9040,6 +9044,45 @@
|
|
|
9040
9044
|
return states;
|
|
9041
9045
|
}
|
|
9042
9046
|
|
|
9047
|
+
/**
|
|
9048
|
+
* Forwards the insights-related search parameters to every Recommend query.
|
|
9049
|
+
*
|
|
9050
|
+
* The insights middleware writes `userToken` and `clickAnalytics` on the main
|
|
9051
|
+
* helper's search state, which only feeds search queries: Recommend queries are
|
|
9052
|
+
* built from their own parameters and never read the search state. Without this,
|
|
9053
|
+
* recommendations can't be personalized, and their responses carry no `queryID`
|
|
9054
|
+
* for the connectors to attribute click and conversion events with.
|
|
9055
|
+
*
|
|
9056
|
+
* Parameters set on a widget win, so an explicit `queryParameters.userToken`
|
|
9057
|
+
* keeps overriding the middleware.
|
|
9058
|
+
*
|
|
9059
|
+
* The fallback query is a regular search, so it gets the same treatment — but
|
|
9060
|
+
* only merged into a `fallbackParameters` the widget already set. See below.
|
|
9061
|
+
*/ function addInsightsToRecommendParameters(recommendParameters, param) {
|
|
9062
|
+
var userToken = param.userToken, clickAnalytics = param.clickAnalytics;
|
|
9063
|
+
if (userToken === undefined && clickAnalytics === undefined) {
|
|
9064
|
+
return recommendParameters;
|
|
9065
|
+
}
|
|
9066
|
+
var insightsParameters = _object_spread({}, clickAnalytics === undefined ? {} : {
|
|
9067
|
+
clickAnalytics: clickAnalytics
|
|
9068
|
+
}, userToken === undefined ? {} : {
|
|
9069
|
+
userToken: userToken
|
|
9070
|
+
});
|
|
9071
|
+
return new algoliasearchHelper.RecommendParameters({
|
|
9072
|
+
params: recommendParameters.params.map(function(params) {
|
|
9073
|
+
// v4 `TrendingFacetsQuery` doesn't include `queryParameters` or
|
|
9074
|
+
// `fallbackParameters`, but the v5 API and the helper support them, like
|
|
9075
|
+
// `connectTrendingFacets` does.
|
|
9076
|
+
var queryParameters = params.queryParameters, fallbackParameters = params.fallbackParameters;
|
|
9077
|
+
return _object_spread(_object_spread_props(_object_spread({}, params), {
|
|
9078
|
+
queryParameters: _object_spread({}, insightsParameters, queryParameters)
|
|
9079
|
+
}), fallbackParameters && {
|
|
9080
|
+
fallbackParameters: _object_spread({}, insightsParameters, fallbackParameters)
|
|
9081
|
+
});
|
|
9082
|
+
})
|
|
9083
|
+
});
|
|
9084
|
+
}
|
|
9085
|
+
|
|
9043
9086
|
function createDocumentationLink(param) {
|
|
9044
9087
|
var name = param.name, _param_connector = param.connector, connector = _param_connector === void 0 ? false : _param_connector;
|
|
9045
9088
|
return [
|
|
@@ -9618,7 +9661,7 @@
|
|
|
9618
9661
|
mainHelper.state
|
|
9619
9662
|
].concat(_to_consumable_array(resolveSearchParameters(_this))));
|
|
9620
9663
|
}, function() {
|
|
9621
|
-
return _this.getHelper().recommendState;
|
|
9664
|
+
return addInsightsToRecommendParameters(_this.getHelper().recommendState, mainHelper.state);
|
|
9622
9665
|
});
|
|
9623
9666
|
var indexInitialResults = (_instantSearchInstance__initialResults = instantSearchInstance._initialResults) === null || _instantSearchInstance__initialResults === void 0 ? void 0 : _instantSearchInstance__initialResults[this.getIndexId()];
|
|
9624
9667
|
if (indexInitialResults === null || indexInitialResults === void 0 ? void 0 : indexInitialResults.results) {
|
|
@@ -11411,6 +11454,22 @@
|
|
|
11411
11454
|
};
|
|
11412
11455
|
}
|
|
11413
11456
|
|
|
11457
|
+
function updateNavigationButtonsProps(param) {
|
|
11458
|
+
var listRef = param.listRef, nextButtonRef = param.nextButtonRef, previousButtonRef = param.previousButtonRef, setCanScrollLeft = param.setCanScrollLeft, setCanScrollRight = param.setCanScrollRight;
|
|
11459
|
+
if (!listRef.current) {
|
|
11460
|
+
return;
|
|
11461
|
+
}
|
|
11462
|
+
var isLeftHidden = listRef.current.scrollLeft <= 0;
|
|
11463
|
+
var isRightHidden = listRef.current.scrollLeft + listRef.current.clientWidth >= listRef.current.scrollWidth;
|
|
11464
|
+
setCanScrollLeft(!isLeftHidden);
|
|
11465
|
+
setCanScrollRight(!isRightHidden);
|
|
11466
|
+
if (previousButtonRef.current) {
|
|
11467
|
+
previousButtonRef.current.hidden = isLeftHidden;
|
|
11468
|
+
}
|
|
11469
|
+
if (nextButtonRef.current) {
|
|
11470
|
+
nextButtonRef.current.hidden = isRightHidden;
|
|
11471
|
+
}
|
|
11472
|
+
}
|
|
11414
11473
|
var lastCarouselId = 0;
|
|
11415
11474
|
function generateCarouselId() {
|
|
11416
11475
|
return "ais-Carousel-".concat(lastCarouselId++);
|
|
@@ -11444,7 +11503,7 @@
|
|
|
11444
11503
|
}));
|
|
11445
11504
|
}
|
|
11446
11505
|
function createCarouselComponent(param) {
|
|
11447
|
-
var createElement = param.createElement, Fragment = param.Fragment;
|
|
11506
|
+
var createElement = param.createElement, Fragment = param.Fragment, useEffect = param.useEffect, useRef = param.useRef;
|
|
11448
11507
|
return function Carousel(userProps) {
|
|
11449
11508
|
var listRef = userProps.listRef, nextButtonRef = userProps.nextButtonRef, previousButtonRef = userProps.previousButtonRef, carouselIdRef = userProps.carouselIdRef, canScrollLeft = userProps.canScrollLeft, canScrollRight = userProps.canScrollRight, setCanScrollLeft = userProps.setCanScrollLeft, setCanScrollRight = userProps.setCanScrollRight, _userProps_classNames = userProps.classNames, classNames = _userProps_classNames === void 0 ? {} : _userProps_classNames, tmp = userProps.itemComponent, ItemComponent = tmp === void 0 ? createDefaultItemComponent({
|
|
11450
11509
|
createElement: createElement,
|
|
@@ -11475,6 +11534,7 @@
|
|
|
11475
11534
|
previousButtonLabel: 'Previous',
|
|
11476
11535
|
previousButtonTitle: 'Previous'
|
|
11477
11536
|
}, userTranslations);
|
|
11537
|
+
var previousItemsLengthRef = useRef(items.length);
|
|
11478
11538
|
var cssClasses = {
|
|
11479
11539
|
root: cx('ais-Carousel', classNames.root),
|
|
11480
11540
|
list: cx('ais-Carousel-list', classNames.list),
|
|
@@ -11493,27 +11553,33 @@
|
|
|
11493
11553
|
listRef.current.scrollLeft += listRef.current.offsetWidth * 0.75;
|
|
11494
11554
|
}
|
|
11495
11555
|
}
|
|
11496
|
-
function
|
|
11497
|
-
if (
|
|
11498
|
-
|
|
11499
|
-
|
|
11500
|
-
|
|
11501
|
-
|
|
11502
|
-
|
|
11503
|
-
|
|
11504
|
-
|
|
11505
|
-
|
|
11506
|
-
}
|
|
11507
|
-
if (nextButtonRef.current) {
|
|
11508
|
-
nextButtonRef.current.hidden = isRightHidden;
|
|
11556
|
+
useEffect(function() {
|
|
11557
|
+
if (previousItemsLengthRef.current !== items.length) {
|
|
11558
|
+
updateNavigationButtonsProps({
|
|
11559
|
+
listRef: listRef,
|
|
11560
|
+
nextButtonRef: nextButtonRef,
|
|
11561
|
+
previousButtonRef: previousButtonRef,
|
|
11562
|
+
setCanScrollLeft: setCanScrollLeft,
|
|
11563
|
+
setCanScrollRight: setCanScrollRight
|
|
11564
|
+
});
|
|
11565
|
+
previousItemsLengthRef.current = items.length;
|
|
11509
11566
|
}
|
|
11510
|
-
}
|
|
11567
|
+
}, [
|
|
11568
|
+
items.length,
|
|
11569
|
+
listRef,
|
|
11570
|
+
nextButtonRef,
|
|
11571
|
+
previousButtonRef,
|
|
11572
|
+
setCanScrollLeft,
|
|
11573
|
+
setCanScrollRight
|
|
11574
|
+
]);
|
|
11511
11575
|
if (items.length === 0) {
|
|
11512
11576
|
return null;
|
|
11513
11577
|
}
|
|
11578
|
+
var itemOccurrences = new Map();
|
|
11514
11579
|
return /*#__PURE__*/ createElement("div", _object_spread_props(_object_spread({}, props), {
|
|
11515
11580
|
className: cx(cssClasses.root)
|
|
11516
11581
|
}), HeaderComponent && /*#__PURE__*/ createElement(HeaderComponent, {
|
|
11582
|
+
nbItems: items.length,
|
|
11517
11583
|
canScrollLeft: canScrollLeft,
|
|
11518
11584
|
canScrollRight: canScrollRight,
|
|
11519
11585
|
scrollLeft: scrollLeft,
|
|
@@ -11539,7 +11605,15 @@
|
|
|
11539
11605
|
"aria-roledescription": "carousel",
|
|
11540
11606
|
"aria-label": translations.listLabel,
|
|
11541
11607
|
"aria-live": "polite",
|
|
11542
|
-
onScroll:
|
|
11608
|
+
onScroll: function onScroll() {
|
|
11609
|
+
return updateNavigationButtonsProps({
|
|
11610
|
+
listRef: listRef,
|
|
11611
|
+
nextButtonRef: nextButtonRef,
|
|
11612
|
+
previousButtonRef: previousButtonRef,
|
|
11613
|
+
setCanScrollLeft: setCanScrollLeft,
|
|
11614
|
+
setCanScrollRight: setCanScrollRight
|
|
11615
|
+
});
|
|
11616
|
+
},
|
|
11543
11617
|
onKeyDown: function onKeyDown(event) {
|
|
11544
11618
|
if (event.key === 'ArrowLeft') {
|
|
11545
11619
|
event.preventDefault();
|
|
@@ -11550,8 +11624,14 @@
|
|
|
11550
11624
|
}
|
|
11551
11625
|
}
|
|
11552
11626
|
}, items.map(function(item, index) {
|
|
11627
|
+
var _itemOccurrences_get;
|
|
11628
|
+
var occurrence = (_itemOccurrences_get = itemOccurrences.get(item.objectID)) !== null && _itemOccurrences_get !== void 0 ? _itemOccurrences_get : 0;
|
|
11629
|
+
itemOccurrences.set(item.objectID, occurrence + 1);
|
|
11553
11630
|
return /*#__PURE__*/ createElement("li", {
|
|
11554
|
-
key:
|
|
11631
|
+
key: JSON.stringify([
|
|
11632
|
+
item.objectID,
|
|
11633
|
+
occurrence
|
|
11634
|
+
]),
|
|
11555
11635
|
className: cx(cssClasses.item),
|
|
11556
11636
|
"aria-roledescription": "slide",
|
|
11557
11637
|
"aria-label": "".concat(index + 1, " of ").concat(items.length),
|
|
@@ -11979,7 +12059,9 @@
|
|
|
11979
12059
|
|
|
11980
12060
|
var Carousel = createCarouselComponent({
|
|
11981
12061
|
createElement: h$1,
|
|
11982
|
-
Fragment: p$1
|
|
12062
|
+
Fragment: p$1,
|
|
12063
|
+
useEffect: s,
|
|
12064
|
+
useRef: A
|
|
11983
12065
|
});
|
|
11984
12066
|
function CarouselWithRefs(props) {
|
|
11985
12067
|
var _useState = _sliced_to_array(y(false), 2), canScrollLeft = _useState[0], setCanScrollLeft = _useState[1];
|
|
@@ -11998,28 +12080,31 @@
|
|
|
11998
12080
|
}
|
|
11999
12081
|
function carousel() {
|
|
12000
12082
|
var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, cssClasses = _ref.cssClasses, _ref_templates = _ref.templates, templates = _ref_templates === void 0 ? {} : _ref_templates, _ref_showNavigation = _ref.showNavigation, showNavigation = _ref_showNavigation === void 0 ? true : _ref_showNavigation;
|
|
12083
|
+
var previous = templates.previous, next = templates.next, header = templates.header;
|
|
12084
|
+
var HeaderComponent = header ? function(props) {
|
|
12085
|
+
return header(_object_spread({
|
|
12086
|
+
html: m$1
|
|
12087
|
+
}, props));
|
|
12088
|
+
} : undefined;
|
|
12089
|
+
var PreviousIconComponent = previous ? function() {
|
|
12090
|
+
return previous({
|
|
12091
|
+
html: m$1
|
|
12092
|
+
});
|
|
12093
|
+
} : undefined;
|
|
12094
|
+
var NextIconComponent = next ? function() {
|
|
12095
|
+
return next({
|
|
12096
|
+
html: m$1
|
|
12097
|
+
});
|
|
12098
|
+
} : undefined;
|
|
12001
12099
|
return function CarouselTemplate(param) {
|
|
12002
12100
|
var items = param.items, widgetTemplates = param.templates, tmp = param.cssClasses, widgetCssClasses = tmp === void 0 ? {} : tmp, _param_sendEvent = param.sendEvent, sendEvent = _param_sendEvent === void 0 ? function() {} : _param_sendEvent;
|
|
12003
|
-
var previous = templates.previous, next = templates.next, header = templates.header;
|
|
12004
12101
|
return /*#__PURE__*/ h$1(CarouselWithRefs, {
|
|
12005
12102
|
items: items,
|
|
12006
12103
|
sendEvent: sendEvent,
|
|
12007
12104
|
itemComponent: widgetTemplates.item,
|
|
12008
|
-
headerComponent:
|
|
12009
|
-
|
|
12010
|
-
|
|
12011
|
-
}, props));
|
|
12012
|
-
} : undefined,
|
|
12013
|
-
previousIconComponent: previous ? function() {
|
|
12014
|
-
return previous({
|
|
12015
|
-
html: m$1
|
|
12016
|
-
});
|
|
12017
|
-
} : undefined,
|
|
12018
|
-
nextIconComponent: next ? function() {
|
|
12019
|
-
return next({
|
|
12020
|
-
html: m$1
|
|
12021
|
-
});
|
|
12022
|
-
} : undefined,
|
|
12105
|
+
headerComponent: HeaderComponent,
|
|
12106
|
+
previousIconComponent: PreviousIconComponent,
|
|
12107
|
+
nextIconComponent: NextIconComponent,
|
|
12023
12108
|
classNames: _object_spread({}, cssClasses, {
|
|
12024
12109
|
list: cx(cssClasses === null || cssClasses === void 0 ? void 0 : cssClasses.list, widgetCssClasses === null || widgetCssClasses === void 0 ? void 0 : widgetCssClasses.list),
|
|
12025
12110
|
item: cx(cssClasses === null || cssClasses === void 0 ? void 0 : cssClasses.item, widgetCssClasses === null || widgetCssClasses === void 0 ? void 0 : widgetCssClasses.item)
|
|
@@ -13281,25 +13366,33 @@
|
|
|
13281
13366
|
// it is non-empty and the chat is not already processing a message.
|
|
13282
13367
|
// Returns true when a message was submitted, so callers can clear their input.
|
|
13283
13368
|
function openChat(chatRenderState) {
|
|
13284
|
-
var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, message = _ref.message, referer = _ref.referer;
|
|
13369
|
+
var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, message = _ref.message, referer = _ref.referer, turnContext = _ref.turnContext;
|
|
13285
13370
|
var _ref1;
|
|
13286
13371
|
var _chatRenderState_setOpen;
|
|
13287
13372
|
if (!chatRenderState) {
|
|
13288
13373
|
return false;
|
|
13289
13374
|
}
|
|
13290
|
-
(_chatRenderState_setOpen = chatRenderState.setOpen) === null || _chatRenderState_setOpen === void 0 ? void 0 : _chatRenderState_setOpen.call(chatRenderState, true);
|
|
13291
13375
|
var trimmed = (_ref1 = message === null || message === void 0 ? void 0 : message.trim()) !== null && _ref1 !== void 0 ? _ref1 : '';
|
|
13292
13376
|
if (!trimmed) {
|
|
13293
|
-
|
|
13294
|
-
|
|
13377
|
+
if (chatRenderState.focusInput) {
|
|
13378
|
+
chatRenderState.focusInput();
|
|
13379
|
+
} else {
|
|
13380
|
+
var _chatRenderState_setOpen1;
|
|
13381
|
+
(_chatRenderState_setOpen1 = chatRenderState.setOpen) === null || _chatRenderState_setOpen1 === void 0 ? void 0 : _chatRenderState_setOpen1.call(chatRenderState, true);
|
|
13382
|
+
}
|
|
13295
13383
|
return false;
|
|
13296
13384
|
}
|
|
13385
|
+
(_chatRenderState_setOpen = chatRenderState.setOpen) === null || _chatRenderState_setOpen === void 0 ? void 0 : _chatRenderState_setOpen.call(chatRenderState, true);
|
|
13297
13386
|
if (isChatBusy(chatRenderState) || !chatRenderState.sendMessage) {
|
|
13298
13387
|
return false;
|
|
13299
13388
|
}
|
|
13300
|
-
chatRenderState.sendMessage({
|
|
13389
|
+
chatRenderState.sendMessage(_object_spread({
|
|
13301
13390
|
text: trimmed
|
|
13302
|
-
},
|
|
13391
|
+
}, turnContext ? {
|
|
13392
|
+
metadata: {
|
|
13393
|
+
turnContext: turnContext
|
|
13394
|
+
}
|
|
13395
|
+
} : {}), referer ? {
|
|
13303
13396
|
headers: {
|
|
13304
13397
|
'x-algolia-referer': referer
|
|
13305
13398
|
}
|