instantsearch.js 4.49.0 → 4.49.2
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 +3 -3
- package/cjs/components/Answers/Answers.js +6 -16
- package/cjs/components/Breadcrumb/Breadcrumb.js +5 -12
- package/cjs/components/ClearRefinements/ClearRefinements.js +4 -11
- package/cjs/components/CurrentRefinements/CurrentRefinements.js +5 -12
- package/cjs/components/GeoSearchControls/GeoSearchButton.js +4 -6
- package/cjs/components/GeoSearchControls/GeoSearchControls.js +11 -20
- package/cjs/components/GeoSearchControls/GeoSearchToggle.js +4 -6
- package/cjs/components/Highlight/Highlight.js +3 -11
- package/cjs/components/Hits/Hits.js +8 -20
- package/cjs/components/InfiniteHits/InfiniteHits.js +13 -25
- package/cjs/components/InternalHighlight/InternalHighlight.js +0 -3
- package/cjs/components/MenuSelect/MenuSelect.js +9 -19
- package/cjs/components/Pagination/Pagination.js +10 -17
- package/cjs/components/Panel/Panel.js +7 -26
- package/cjs/components/PoweredBy/PoweredBy.js +4 -5
- package/cjs/components/QueryRuleCustomData/QueryRuleCustomData.js +2 -6
- package/cjs/components/RangeInput/RangeInput.js +16 -48
- package/cjs/components/RefinementList/RefinementList.js +19 -73
- package/cjs/components/RefinementList/RefinementListItem.js +8 -14
- package/cjs/components/RelevantSort/RelevantSort.js +4 -8
- package/cjs/components/ReverseHighlight/ReverseHighlight.js +3 -11
- package/cjs/components/ReverseSnippet/ReverseSnippet.js +3 -11
- package/cjs/components/SearchBox/SearchBox.js +25 -69
- package/cjs/components/Selector/Selector.js +3 -6
- package/cjs/components/Slider/Pit.js +3 -10
- package/cjs/components/Slider/Rheostat.js +63 -131
- package/cjs/components/Slider/Slider.js +28 -65
- package/cjs/components/Snippet/Snippet.js +3 -11
- package/cjs/components/Stats/Stats.js +7 -20
- package/cjs/components/Template/Template.js +8 -37
- package/cjs/components/ToggleRefinement/ToggleRefinement.js +4 -10
- package/cjs/components/VoiceSearch/VoiceSearch.js +8 -15
- package/cjs/connectors/answers/connectAnswers.js +21 -36
- package/cjs/connectors/autocomplete/connectAutocomplete.js +8 -25
- package/cjs/connectors/breadcrumb/connectBreadcrumb.js +17 -48
- package/cjs/connectors/clear-refinements/connectClearRefinements.js +27 -45
- package/cjs/connectors/configure/connectConfigure.js +6 -20
- package/cjs/connectors/configure-related-items/connectConfigureRelatedItems.js +11 -36
- package/cjs/connectors/current-refinements/connectCurrentRefinements.js +18 -57
- package/cjs/connectors/dynamic-widgets/connectDynamicWidgets.js +17 -37
- package/cjs/connectors/geo-search/connectGeoSearch.js +17 -47
- package/cjs/connectors/hierarchical-menu/connectHierarchicalMenu.js +38 -74
- package/cjs/connectors/hits/connectHits.js +10 -26
- package/cjs/connectors/hits/connectHitsWithInsights.js +0 -4
- package/cjs/connectors/hits-per-page/connectHitsPerPage.js +15 -38
- package/cjs/connectors/index.js +62 -96
- package/cjs/connectors/infinite-hits/connectInfiniteHits.js +26 -62
- package/cjs/connectors/infinite-hits/connectInfiniteHitsWithInsights.js +0 -4
- package/cjs/connectors/menu/connectMenu.js +28 -66
- package/cjs/connectors/numeric-menu/connectNumericMenu.js +24 -78
- package/cjs/connectors/pagination/Paginator.js +3 -20
- package/cjs/connectors/pagination/connectPagination.js +8 -25
- package/cjs/connectors/powered-by/connectPoweredBy.js +4 -13
- package/cjs/connectors/query-rules/connectQueryRules.js +32 -56
- package/cjs/connectors/range/connectRange.js +41 -101
- package/cjs/connectors/rating-menu/connectRatingMenu.js +23 -79
- package/cjs/connectors/refinement-list/connectRefinementList.js +37 -70
- package/cjs/connectors/relevant-sort/connectRelevantSort.js +4 -14
- package/cjs/connectors/search-box/connectSearchBox.js +7 -23
- package/cjs/connectors/sort-by/connectSortBy.js +11 -21
- package/cjs/connectors/stats/connectStats.js +4 -11
- package/cjs/connectors/toggle-refinement/connectToggleRefinement.js +29 -63
- package/cjs/connectors/voice-search/connectVoiceSearch.js +13 -35
- package/cjs/helpers/components/Highlight.js +4 -12
- package/cjs/helpers/components/ReverseHighlight.js +7 -19
- package/cjs/helpers/components/ReverseSnippet.js +7 -19
- package/cjs/helpers/components/Snippet.js +4 -12
- package/cjs/helpers/components/index.js +0 -8
- package/cjs/helpers/get-insights-anonymous-user-token.js +7 -12
- package/cjs/helpers/highlight.js +10 -16
- package/cjs/helpers/index.js +17 -31
- package/cjs/helpers/insights.js +5 -17
- package/cjs/helpers/reverseHighlight.js +10 -16
- package/cjs/helpers/reverseSnippet.js +10 -16
- package/cjs/helpers/snippet.js +10 -16
- package/cjs/index.js +3 -18
- package/cjs/lib/InstantSearch.js +79 -180
- package/cjs/lib/createHelpers.js +4 -11
- package/cjs/lib/formatNumber.js +0 -1
- package/cjs/lib/infiniteHitsCache/index.js +0 -2
- package/cjs/lib/infiniteHitsCache/sessionStorage.js +9 -18
- package/cjs/lib/insights/client.js +8 -34
- package/cjs/lib/insights/index.js +7 -13
- package/cjs/lib/insights/listener.js +4 -20
- package/cjs/lib/routers/history.js +63 -102
- package/cjs/lib/routers/index.js +0 -2
- package/cjs/lib/stateMappings/index.js +0 -3
- package/cjs/lib/stateMappings/simple.js +6 -13
- package/cjs/lib/stateMappings/singleIndex.js +1 -7
- package/cjs/lib/suit.js +2 -5
- package/cjs/lib/templating/index.js +0 -4
- package/cjs/lib/templating/prepareTemplateProps.js +8 -19
- package/cjs/lib/templating/renderTemplate.js +9 -24
- package/cjs/lib/utils/capitalize.js +0 -1
- package/cjs/lib/utils/checkIndexUiState.js +15 -43
- package/cjs/lib/utils/checkRendering.js +0 -2
- package/cjs/lib/utils/clearRefinements.js +2 -9
- package/cjs/lib/utils/concatHighlightedParts.js +1 -3
- package/cjs/lib/utils/createConcurrentSafePromise.js +0 -3
- package/cjs/lib/utils/createSendEventForFacet.js +7 -14
- package/cjs/lib/utils/createSendEventForHits.js +9 -33
- package/cjs/lib/utils/debounce.js +0 -3
- package/cjs/lib/utils/defer.js +0 -11
- package/cjs/lib/utils/detect-insights-client.js +0 -2
- package/cjs/lib/utils/documentation.js +2 -5
- package/cjs/lib/utils/escape-highlight.js +5 -22
- package/cjs/lib/utils/escape-html.js +9 -7
- package/cjs/lib/utils/escapeFacetValue.js +1 -5
- package/cjs/lib/utils/find.js +2 -5
- package/cjs/lib/utils/findIndex.js +0 -3
- package/cjs/lib/utils/geo-search.js +14 -34
- package/cjs/lib/utils/getAppIdAndApiKey.js +2 -3
- package/cjs/lib/utils/getContainerNode.js +0 -6
- package/cjs/lib/utils/getHighlightFromSiblings.js +0 -6
- package/cjs/lib/utils/getHighlightedParts.js +1 -4
- package/cjs/lib/utils/getObjectType.js +0 -1
- package/cjs/lib/utils/getPropertyByPath.js +0 -1
- package/cjs/lib/utils/getRefinements.js +13 -26
- package/cjs/lib/utils/getWidgetAttribute.js +0 -6
- package/cjs/lib/utils/hits-absolute-position.js +2 -6
- package/cjs/lib/utils/hits-query-id.js +2 -7
- package/cjs/lib/utils/index.js +0 -92
- package/cjs/lib/utils/isDomElement.js +0 -1
- package/cjs/lib/utils/isEqual.js +0 -8
- package/cjs/lib/utils/isFacetRefined.js +0 -1
- package/cjs/lib/utils/isFiniteNumber.js +0 -1
- package/cjs/lib/utils/isIndexWidget.js +0 -1
- package/cjs/lib/utils/isPlainObject.js +3 -11
- package/cjs/lib/utils/isSpecialClick.js +0 -1
- package/cjs/lib/utils/logger.js +3 -13
- package/cjs/lib/utils/mergeSearchParameters.js +16 -40
- package/cjs/lib/utils/noop.js +0 -1
- package/cjs/lib/utils/range.js +8 -14
- package/cjs/lib/utils/render-args.js +0 -2
- package/cjs/lib/utils/resolveSearchParameters.js +0 -3
- package/cjs/lib/utils/reverseHighlightedParts.js +2 -8
- package/cjs/lib/utils/safelyRunOnBrowser.js +7 -9
- package/cjs/lib/utils/serializer.js +1 -3
- package/cjs/lib/utils/setIndexHelperState.js +0 -5
- package/cjs/lib/utils/toArray.js +0 -1
- package/cjs/lib/utils/typedObject.js +0 -1
- package/cjs/lib/utils/uniq.js +0 -1
- package/cjs/lib/version.js +1 -1
- package/cjs/lib/voiceSearchHelper/index.js +8 -36
- package/cjs/middlewares/createInsightsMiddleware.js +15 -44
- package/cjs/middlewares/createMetadataMiddleware.js +4 -12
- package/cjs/middlewares/createRouterMiddleware.js +8 -19
- package/cjs/middlewares/index.js +0 -6
- package/cjs/types/algoliasearch.js +0 -2
- package/cjs/types/index.js +0 -28
- package/cjs/widgets/analytics/analytics.js +12 -47
- package/cjs/widgets/answers/answers.js +19 -39
- package/cjs/widgets/breadcrumb/breadcrumb.js +18 -38
- package/cjs/widgets/clear-refinements/clear-refinements.js +15 -35
- package/cjs/widgets/configure/configure.js +2 -10
- package/cjs/widgets/configure-related-items/configure-related-items.js +2 -10
- package/cjs/widgets/current-refinements/current-refinements.js +12 -30
- package/cjs/widgets/dynamic-widgets/dynamic-widgets.js +6 -25
- package/cjs/widgets/geo-search/GeoSearchRenderer.js +41 -68
- package/cjs/widgets/geo-search/createHTMLMarker.js +30 -60
- package/cjs/widgets/geo-search/defaultTemplates.js +0 -3
- package/cjs/widgets/geo-search/geo-search.js +27 -59
- package/cjs/widgets/hierarchical-menu/defaultTemplates.js +4 -7
- package/cjs/widgets/hierarchical-menu/hierarchical-menu.js +28 -47
- package/cjs/widgets/hits/hits.js +16 -37
- package/cjs/widgets/hits-per-page/hits-per-page.js +13 -31
- package/cjs/widgets/index/index.js +49 -95
- package/cjs/widgets/index.js +12 -50
- package/cjs/widgets/infinite-hits/infinite-hits.js +23 -44
- package/cjs/widgets/menu/defaultTemplates.js +3 -6
- package/cjs/widgets/menu/menu.js +23 -43
- package/cjs/widgets/menu-select/defaultTemplates.js +1 -3
- package/cjs/widgets/menu-select/menu-select.js +18 -38
- package/cjs/widgets/numeric-menu/defaultTemplates.js +3 -4
- package/cjs/widgets/numeric-menu/numeric-menu.js +17 -37
- package/cjs/widgets/pagination/pagination.js +32 -53
- package/cjs/widgets/panel/panel.js +20 -48
- package/cjs/widgets/places/places.js +16 -33
- package/cjs/widgets/powered-by/powered-by.js +10 -27
- package/cjs/widgets/query-rule-context/query-rule-context.js +2 -13
- package/cjs/widgets/query-rule-custom-data/query-rule-custom-data.js +14 -32
- package/cjs/widgets/range-input/range-input.js +23 -50
- package/cjs/widgets/range-slider/range-slider.js +28 -53
- package/cjs/widgets/rating-menu/defaultTemplates.js +8 -14
- package/cjs/widgets/rating-menu/rating-menu.js +17 -38
- package/cjs/widgets/refinement-list/defaultTemplates.js +5 -8
- package/cjs/widgets/refinement-list/refinement-list.js +39 -60
- package/cjs/widgets/relevant-sort/relevant-sort.js +10 -29
- package/cjs/widgets/search-box/defaultTemplates.js +0 -5
- package/cjs/widgets/search-box/search-box.js +31 -49
- package/cjs/widgets/sort-by/sort-by.js +11 -29
- package/cjs/widgets/stats/defaultTemplates.js +0 -1
- package/cjs/widgets/stats/stats.js +27 -57
- package/cjs/widgets/toggle-refinement/toggle-refinement.js +16 -36
- package/cjs/widgets/voice-search/defaultTemplates.js +4 -14
- package/cjs/widgets/voice-search/voice-search.js +17 -36
- package/dist/instantsearch.development.d.ts +8 -6
- package/dist/instantsearch.development.js +1725 -3087
- package/dist/instantsearch.development.js.map +1 -1
- package/dist/instantsearch.production.d.ts +8 -6
- package/dist/instantsearch.production.min.d.ts +8 -6
- package/dist/instantsearch.production.min.js +2 -2
- package/dist/instantsearch.production.min.js.map +1 -1
- package/es/components/Answers/Answers.js +6 -11
- package/es/components/Breadcrumb/Breadcrumb.js +5 -7
- package/es/components/ClearRefinements/ClearRefinements.js +4 -6
- package/es/components/CurrentRefinements/CurrentRefinements.js +7 -10
- package/es/components/GeoSearchControls/GeoSearchButton.js +6 -6
- package/es/components/GeoSearchControls/GeoSearchControls.js +11 -13
- package/es/components/GeoSearchControls/GeoSearchToggle.js +6 -6
- package/es/components/Highlight/Highlight.js +3 -7
- package/es/components/Hits/Hits.js +8 -15
- package/es/components/InfiniteHits/InfiniteHits.js +13 -20
- package/es/components/MenuSelect/MenuSelect.js +9 -13
- package/es/components/Pagination/Pagination.js +12 -15
- package/es/components/Panel/Panel.js +7 -20
- package/es/components/PoweredBy/PoweredBy.js +6 -5
- package/es/components/QueryRuleCustomData/QueryRuleCustomData.js +4 -4
- package/es/components/RangeInput/RangeInput.js +16 -43
- package/es/components/RefinementList/RefinementList.js +19 -64
- package/es/components/RefinementList/RefinementListItem.js +8 -10
- package/es/components/RelevantSort/RelevantSort.js +6 -6
- package/es/components/ReverseHighlight/ReverseHighlight.js +3 -7
- package/es/components/ReverseSnippet/ReverseSnippet.js +3 -7
- package/es/components/SearchBox/SearchBox.js +25 -63
- package/es/components/Selector/Selector.js +5 -5
- package/es/components/Slider/Pit.js +3 -7
- package/es/components/Slider/Rheostat.js +64 -129
- package/es/components/Slider/Slider.js +28 -58
- package/es/components/Snippet/Snippet.js +3 -7
- package/es/components/Stats/Stats.js +7 -15
- package/es/components/Template/Template.js +8 -32
- package/es/components/ToggleRefinement/ToggleRefinement.js +4 -6
- package/es/components/VoiceSearch/VoiceSearch.js +10 -13
- package/es/connectors/answers/connectAnswers.js +21 -35
- package/es/connectors/autocomplete/connectAutocomplete.js +8 -23
- package/es/connectors/breadcrumb/connectBreadcrumb.js +17 -46
- package/es/connectors/clear-refinements/connectClearRefinements.js +27 -43
- package/es/connectors/configure/connectConfigure.js +7 -16
- package/es/connectors/configure-related-items/connectConfigureRelatedItems.js +11 -31
- package/es/connectors/current-refinements/connectCurrentRefinements.js +18 -55
- package/es/connectors/dynamic-widgets/connectDynamicWidgets.js +17 -35
- package/es/connectors/geo-search/connectGeoSearch.js +17 -45
- package/es/connectors/hierarchical-menu/connectHierarchicalMenu.js +38 -72
- package/es/connectors/hits/connectHits.js +10 -24
- package/es/connectors/hits-per-page/connectHitsPerPage.js +15 -36
- package/es/connectors/index.d.ts +2 -1
- package/es/connectors/index.js +6 -3
- package/es/connectors/infinite-hits/connectInfiniteHits.js +26 -60
- package/es/connectors/menu/connectMenu.js +28 -64
- package/es/connectors/numeric-menu/connectNumericMenu.js +24 -76
- package/es/connectors/pagination/Paginator.js +3 -19
- package/es/connectors/pagination/connectPagination.js +8 -21
- package/es/connectors/powered-by/connectPoweredBy.js +4 -11
- package/es/connectors/query-rules/connectQueryRules.js +32 -54
- package/es/connectors/range/connectRange.js +41 -99
- package/es/connectors/rating-menu/connectRatingMenu.js +23 -77
- package/es/connectors/refinement-list/connectRefinementList.js +37 -68
- package/es/connectors/relevant-sort/connectRelevantSort.js +4 -13
- package/es/connectors/search-box/connectSearchBox.js +7 -21
- package/es/connectors/sort-by/connectSortBy.js +11 -19
- package/es/connectors/stats/connectStats.js +4 -9
- package/es/connectors/toggle-refinement/connectToggleRefinement.js +29 -61
- package/es/connectors/voice-search/connectVoiceSearch.js +13 -31
- package/es/helpers/components/Highlight.js +4 -8
- package/es/helpers/components/ReverseHighlight.js +7 -15
- package/es/helpers/components/ReverseSnippet.js +7 -15
- package/es/helpers/components/Snippet.js +4 -8
- package/es/helpers/get-insights-anonymous-user-token.js +5 -7
- package/es/helpers/highlight.js +9 -11
- package/es/helpers/insights.js +3 -10
- package/es/helpers/reverseHighlight.js +9 -11
- package/es/helpers/reverseSnippet.js +9 -11
- package/es/helpers/snippet.js +9 -11
- package/es/index.js +0 -2
- package/es/lib/InstantSearch.js +79 -170
- package/es/lib/createHelpers.js +4 -8
- package/es/lib/infiniteHitsCache/sessionStorage.js +9 -16
- package/es/lib/insights/client.js +8 -32
- package/es/lib/insights/listener.js +6 -18
- package/es/lib/routers/history.js +63 -99
- package/es/lib/stateMappings/simple.js +6 -12
- package/es/lib/stateMappings/singleIndex.js +1 -6
- package/es/lib/suit.js +2 -3
- package/es/lib/templating/prepareTemplateProps.js +8 -18
- package/es/lib/templating/renderTemplate.js +9 -20
- package/es/lib/utils/checkIndexUiState.js +18 -40
- package/es/lib/utils/clearRefinements.js +2 -8
- package/es/lib/utils/concatHighlightedParts.js +1 -1
- package/es/lib/utils/createConcurrentSafePromise.js +0 -2
- package/es/lib/utils/createSendEventForFacet.js +7 -12
- package/es/lib/utils/createSendEventForHits.js +8 -30
- package/es/lib/utils/debounce.js +0 -2
- package/es/lib/utils/defer.js +0 -10
- package/es/lib/utils/documentation.js +2 -3
- package/es/lib/utils/escape-highlight.js +3 -16
- package/es/lib/utils/escape-html.js +9 -5
- package/es/lib/utils/escapeFacetValue.js +0 -2
- package/es/lib/utils/find.js +2 -4
- package/es/lib/utils/findIndex.js +0 -2
- package/es/lib/utils/geo-search.js +14 -32
- package/es/lib/utils/getAppIdAndApiKey.js +2 -2
- package/es/lib/utils/getContainerNode.js +1 -5
- package/es/lib/utils/getHighlightFromSiblings.js +0 -3
- package/es/lib/utils/getHighlightedParts.js +1 -2
- package/es/lib/utils/getRefinements.js +13 -24
- package/es/lib/utils/getWidgetAttribute.js +0 -5
- package/es/lib/utils/hits-absolute-position.js +2 -5
- package/es/lib/utils/hits-query-id.js +2 -6
- package/es/lib/utils/isEqual.js +0 -7
- package/es/lib/utils/isPlainObject.js +3 -10
- package/es/lib/utils/logger.js +2 -12
- package/es/lib/utils/mergeSearchParameters.js +16 -37
- package/es/lib/utils/range.js +8 -13
- package/es/lib/utils/resolveSearchParameters.js +0 -2
- package/es/lib/utils/reverseHighlightedParts.js +2 -6
- package/es/lib/utils/safelyRunOnBrowser.js +7 -8
- package/es/lib/utils/setIndexHelperState.js +0 -2
- package/es/lib/version.d.ts +1 -1
- package/es/lib/version.js +1 -1
- package/es/lib/voiceSearchHelper/index.js +8 -35
- package/es/middlewares/createInsightsMiddleware.js +15 -41
- package/es/middlewares/createMetadataMiddleware.js +3 -9
- package/es/middlewares/createRouterMiddleware.js +8 -13
- package/es/types/index.js +9 -5
- package/es/widgets/analytics/analytics.js +12 -45
- package/es/widgets/answers/answers.js +19 -28
- package/es/widgets/breadcrumb/breadcrumb.js +18 -27
- package/es/widgets/clear-refinements/clear-refinements.js +15 -24
- package/es/widgets/configure/configure.js +3 -6
- package/es/widgets/configure-related-items/configure-related-items.js +2 -7
- package/es/widgets/current-refinements/current-refinements.js +12 -21
- package/es/widgets/dynamic-widgets/dynamic-widgets.js +6 -20
- package/es/widgets/geo-search/GeoSearchRenderer.js +41 -63
- package/es/widgets/geo-search/createHTMLMarker.js +30 -59
- package/es/widgets/geo-search/defaultTemplates.js +2 -2
- package/es/widgets/geo-search/geo-search.js +27 -49
- package/es/widgets/hierarchical-menu/defaultTemplates.js +5 -4
- package/es/widgets/hierarchical-menu/hierarchical-menu.js +28 -36
- package/es/widgets/hits/hits.js +16 -25
- package/es/widgets/hits-per-page/hits-per-page.js +13 -22
- package/es/widgets/index/index.js +49 -91
- package/es/widgets/index.d.ts +2 -1
- package/es/widgets/index.js +4 -3
- package/es/widgets/infinite-hits/infinite-hits.js +23 -32
- package/es/widgets/menu/defaultTemplates.js +4 -3
- package/es/widgets/menu/menu.js +23 -32
- package/es/widgets/menu-select/defaultTemplates.js +1 -1
- package/es/widgets/menu-select/menu-select.js +18 -27
- package/es/widgets/numeric-menu/defaultTemplates.js +4 -3
- package/es/widgets/numeric-menu/numeric-menu.js +17 -26
- package/es/widgets/pagination/pagination.js +32 -44
- package/es/widgets/panel/panel.js +20 -40
- package/es/widgets/places/places.js +16 -32
- package/es/widgets/powered-by/powered-by.js +10 -18
- package/es/widgets/query-rule-context/query-rule-context.js +2 -9
- package/es/widgets/query-rule-custom-data/query-rule-custom-data.js +13 -22
- package/es/widgets/range-input/range-input.js +23 -40
- package/es/widgets/range-slider/range-slider.js +28 -44
- package/es/widgets/rating-menu/defaultTemplates.js +9 -12
- package/es/widgets/rating-menu/rating-menu.js +17 -27
- package/es/widgets/refinement-list/defaultTemplates.js +6 -5
- package/es/widgets/refinement-list/refinement-list.js +39 -48
- package/es/widgets/relevant-sort/relevant-sort.js +10 -19
- package/es/widgets/search-box/defaultTemplates.js +1 -4
- package/es/widgets/search-box/search-box.js +31 -39
- package/es/widgets/sort-by/sort-by.js +11 -20
- package/es/widgets/stats/stats.js +26 -45
- package/es/widgets/toggle-refinement/toggle-refinement.js +16 -25
- package/es/widgets/voice-search/defaultTemplates.js +5 -13
- package/es/widgets/voice-search/voice-search.js +17 -26
- package/package.json +20 -119
- package/scripts/transforms/__testfixtures__/addWidget-to-addWidgets/imported.input.js +0 -1
- package/scripts/transforms/__testfixtures__/addWidget-to-addWidgets/imported.output.js +0 -1
- package/CHANGELOG.md +0 -3684
|
@@ -1,29 +1,16 @@
|
|
|
1
1
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
2
|
-
|
|
3
2
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
-
|
|
5
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
|
|
6
|
-
|
|
3
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
7
4
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
8
|
-
|
|
9
|
-
function
|
|
10
|
-
|
|
11
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
12
|
-
|
|
5
|
+
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; }
|
|
6
|
+
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; }
|
|
13
7
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
14
|
-
|
|
15
8
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
16
|
-
|
|
17
9
|
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."); }
|
|
18
|
-
|
|
19
10
|
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); }
|
|
20
|
-
|
|
21
11
|
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; }
|
|
22
|
-
|
|
23
|
-
function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
24
|
-
|
|
12
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
25
13
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
26
|
-
|
|
27
14
|
import { checkRendering, createDocumentationLink, createDocumentationMessageGenerator, noop, warning } from "../../lib/utils/index.js";
|
|
28
15
|
var withUsage = createDocumentationMessageGenerator({
|
|
29
16
|
name: 'rating-menu',
|
|
@@ -32,33 +19,27 @@ var withUsage = createDocumentationMessageGenerator({
|
|
|
32
19
|
var $$type = 'ais.ratingMenu';
|
|
33
20
|
var MAX_VALUES_PER_FACET_API_LIMIT = 1000;
|
|
34
21
|
var STEP = 1;
|
|
35
|
-
|
|
36
22
|
var createSendEvent = function createSendEvent(_ref) {
|
|
37
23
|
var instantSearchInstance = _ref.instantSearchInstance,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
24
|
+
helper = _ref.helper,
|
|
25
|
+
getRefinedStar = _ref.getRefinedStar,
|
|
26
|
+
attribute = _ref.attribute;
|
|
41
27
|
return function () {
|
|
42
28
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
43
29
|
args[_key] = arguments[_key];
|
|
44
30
|
}
|
|
45
|
-
|
|
46
31
|
if (args.length === 1) {
|
|
47
32
|
instantSearchInstance.sendEventToInsights(args[0]);
|
|
48
33
|
return;
|
|
49
34
|
}
|
|
50
|
-
|
|
51
35
|
var eventType = args[0],
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
36
|
+
facetValue = args[1],
|
|
37
|
+
_args$ = args[2],
|
|
38
|
+
eventName = _args$ === void 0 ? 'Filter Applied' : _args$;
|
|
56
39
|
if (eventType !== 'click') {
|
|
57
40
|
return;
|
|
58
41
|
}
|
|
59
|
-
|
|
60
42
|
var isRefined = getRefinedStar() === Number(facetValue);
|
|
61
|
-
|
|
62
43
|
if (!isRefined) {
|
|
63
44
|
instantSearchInstance.sendEventToInsights({
|
|
64
45
|
insightsMethod: 'clickedFilters',
|
|
@@ -74,7 +55,6 @@ var createSendEvent = function createSendEvent(_ref) {
|
|
|
74
55
|
}
|
|
75
56
|
};
|
|
76
57
|
};
|
|
77
|
-
|
|
78
58
|
/**
|
|
79
59
|
* **StarRating** connector provides the logic to build a custom widget that will let
|
|
80
60
|
* the user refine search results based on ratings.
|
|
@@ -88,85 +68,68 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
88
68
|
checkRendering(renderFn, withUsage());
|
|
89
69
|
return function (widgetParams) {
|
|
90
70
|
var _ref2 = widgetParams || {},
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
71
|
+
attribute = _ref2.attribute,
|
|
72
|
+
_ref2$max = _ref2.max,
|
|
73
|
+
max = _ref2$max === void 0 ? 5 : _ref2$max;
|
|
95
74
|
var sendEvent;
|
|
96
|
-
|
|
97
75
|
if (!attribute) {
|
|
98
76
|
throw new Error(withUsage('The `attribute` option is required.'));
|
|
99
77
|
}
|
|
100
|
-
|
|
101
78
|
var _getRefinedStar = function getRefinedStar(state) {
|
|
102
79
|
var _values$;
|
|
103
|
-
|
|
104
80
|
var values = state.getNumericRefinements(attribute);
|
|
105
|
-
|
|
106
81
|
if (!((_values$ = values['>=']) !== null && _values$ !== void 0 && _values$.length)) {
|
|
107
82
|
return undefined;
|
|
108
83
|
}
|
|
109
|
-
|
|
110
84
|
return values['>='][0];
|
|
111
85
|
};
|
|
112
|
-
|
|
113
86
|
var getFacetsMaxDecimalPlaces = function getFacetsMaxDecimalPlaces(facetResults) {
|
|
114
87
|
var maxDecimalPlaces = 0;
|
|
115
88
|
facetResults.forEach(function (facetResult) {
|
|
116
89
|
var _facetResult$name$spl = facetResult.name.split('.'),
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
90
|
+
_facetResult$name$spl2 = _slicedToArray(_facetResult$name$spl, 2),
|
|
91
|
+
_facetResult$name$spl3 = _facetResult$name$spl2[1],
|
|
92
|
+
decimal = _facetResult$name$spl3 === void 0 ? '' : _facetResult$name$spl3;
|
|
121
93
|
maxDecimalPlaces = Math.max(maxDecimalPlaces, decimal.length);
|
|
122
94
|
});
|
|
123
95
|
return maxDecimalPlaces;
|
|
124
96
|
};
|
|
125
|
-
|
|
126
97
|
var getFacetValuesWarningMessage = function getFacetValuesWarningMessage(_ref3) {
|
|
127
98
|
var maxDecimalPlaces = _ref3.maxDecimalPlaces,
|
|
128
|
-
|
|
129
|
-
|
|
99
|
+
maxFacets = _ref3.maxFacets,
|
|
100
|
+
maxValuesPerFacet = _ref3.maxValuesPerFacet;
|
|
130
101
|
var maxDecimalPlacesInRange = Math.max(0, Math.floor(Math.log10(MAX_VALUES_PER_FACET_API_LIMIT / max)));
|
|
131
102
|
var maxFacetsInRange = Math.min(MAX_VALUES_PER_FACET_API_LIMIT, Math.pow(10, maxDecimalPlacesInRange) * max);
|
|
132
103
|
var solutions = [];
|
|
133
|
-
|
|
134
104
|
if (maxFacets > MAX_VALUES_PER_FACET_API_LIMIT) {
|
|
135
105
|
solutions.push("- Update your records to lower the precision of the values in the \"".concat(attribute, "\" attribute (for example: ").concat(5.123456789.toPrecision(maxDecimalPlaces + 1), " to ").concat(5.123456789.toPrecision(maxDecimalPlacesInRange + 1), ")"));
|
|
136
106
|
}
|
|
137
|
-
|
|
138
107
|
if (maxValuesPerFacet < maxFacetsInRange) {
|
|
139
108
|
solutions.push("- Increase the maximum number of facet values to ".concat(maxFacetsInRange, " using the \"configure\" widget ").concat(createDocumentationLink({
|
|
140
109
|
name: 'configure'
|
|
141
110
|
}), " and the \"maxValuesPerFacet\" parameter https://www.algolia.com/doc/api-reference/api-parameters/maxValuesPerFacet/"));
|
|
142
111
|
}
|
|
143
|
-
|
|
144
112
|
return "The ".concat(attribute, " attribute can have ").concat(maxFacets, " different values (0 to ").concat(max, " with a maximum of ").concat(maxDecimalPlaces, " decimals = ").concat(maxFacets, ") but you retrieved only ").concat(maxValuesPerFacet, " facet values. Therefore the number of results that match the refinements can be incorrect.\n ").concat(solutions.length ? "To resolve this problem you can:\n".concat(solutions.join('\n')) : "");
|
|
145
113
|
};
|
|
146
|
-
|
|
147
114
|
function getRefinedState(state, facetValue) {
|
|
148
115
|
var isRefined = _getRefinedStar(state) === Number(facetValue);
|
|
149
116
|
var emptyState = state.resetPage().removeNumericRefinement(attribute);
|
|
150
|
-
|
|
151
117
|
if (!isRefined) {
|
|
152
118
|
return emptyState.addNumericRefinement(attribute, '<=', max).addNumericRefinement(attribute, '>=', Number(facetValue));
|
|
153
119
|
}
|
|
154
|
-
|
|
155
120
|
return emptyState;
|
|
156
121
|
}
|
|
157
|
-
|
|
158
122
|
var toggleRefinement = function toggleRefinement(helper, facetValue) {
|
|
159
123
|
sendEvent('click', facetValue);
|
|
160
124
|
helper.setState(getRefinedState(helper.state, facetValue)).search();
|
|
161
125
|
};
|
|
162
|
-
|
|
163
126
|
var connectorState = {
|
|
164
127
|
toggleRefinementFactory: function toggleRefinementFactory(helper) {
|
|
165
128
|
return toggleRefinement.bind(null, helper);
|
|
166
129
|
},
|
|
167
130
|
createURLFactory: function createURLFactory(_ref4) {
|
|
168
131
|
var state = _ref4.state,
|
|
169
|
-
|
|
132
|
+
createURL = _ref4.createURL;
|
|
170
133
|
return function (value) {
|
|
171
134
|
return createURL(getRefinedState(state, value));
|
|
172
135
|
};
|
|
@@ -193,12 +156,11 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
193
156
|
},
|
|
194
157
|
getWidgetRenderState: function getWidgetRenderState(_ref5) {
|
|
195
158
|
var helper = _ref5.helper,
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
159
|
+
results = _ref5.results,
|
|
160
|
+
state = _ref5.state,
|
|
161
|
+
instantSearchInstance = _ref5.instantSearchInstance,
|
|
162
|
+
createURL = _ref5.createURL;
|
|
200
163
|
var facetValues = [];
|
|
201
|
-
|
|
202
164
|
if (!sendEvent) {
|
|
203
165
|
sendEvent = createSendEvent({
|
|
204
166
|
instantSearchInstance: instantSearchInstance,
|
|
@@ -209,11 +171,9 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
209
171
|
attribute: attribute
|
|
210
172
|
});
|
|
211
173
|
}
|
|
212
|
-
|
|
213
174
|
var refinementIsApplied = false;
|
|
214
175
|
var totalCount = 0;
|
|
215
176
|
var facetResults = results === null || results === void 0 ? void 0 : results.getFacetValues(attribute, {});
|
|
216
|
-
|
|
217
177
|
if (results && facetResults) {
|
|
218
178
|
var maxValuesPerFacet = facetResults.length;
|
|
219
179
|
var maxDecimalPlaces = getFacetsMaxDecimalPlaces(facetResults);
|
|
@@ -223,9 +183,7 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
223
183
|
maxFacets: maxFacets,
|
|
224
184
|
maxValuesPerFacet: maxValuesPerFacet
|
|
225
185
|
})) : void 0;
|
|
226
|
-
|
|
227
186
|
var refinedStar = _getRefinedStar(state);
|
|
228
|
-
|
|
229
187
|
var _loop = function _loop(star) {
|
|
230
188
|
var isRefined = refinedStar === star;
|
|
231
189
|
refinementIsApplied = refinementIsApplied || isRefined;
|
|
@@ -237,17 +195,14 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
237
195
|
return sum + current;
|
|
238
196
|
}, 0);
|
|
239
197
|
totalCount += count;
|
|
240
|
-
|
|
241
198
|
if (refinedStar && !isRefined && count === 0) {
|
|
242
199
|
// skip count==0 when at least 1 refinement is enabled
|
|
243
200
|
// eslint-disable-next-line no-continue
|
|
244
201
|
return "continue";
|
|
245
202
|
}
|
|
246
|
-
|
|
247
203
|
var stars = _toConsumableArray(new Array(Math.floor(max / STEP))).map(function (_v, i) {
|
|
248
204
|
return i * STEP < star;
|
|
249
205
|
});
|
|
250
|
-
|
|
251
206
|
facetValues.push({
|
|
252
207
|
stars: stars,
|
|
253
208
|
name: String(star),
|
|
@@ -257,14 +212,11 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
257
212
|
isRefined: isRefined
|
|
258
213
|
});
|
|
259
214
|
};
|
|
260
|
-
|
|
261
215
|
for (var star = STEP; star < max; star += STEP) {
|
|
262
216
|
var _ret = _loop(star);
|
|
263
|
-
|
|
264
217
|
if (_ret === "continue") continue;
|
|
265
218
|
}
|
|
266
219
|
}
|
|
267
|
-
|
|
268
220
|
facetValues = facetValues.reverse();
|
|
269
221
|
var hasNoResults = results ? results.nbHits === 0 : true;
|
|
270
222
|
return {
|
|
@@ -287,13 +239,10 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
287
239
|
},
|
|
288
240
|
getWidgetUiState: function getWidgetUiState(uiState, _ref7) {
|
|
289
241
|
var searchParameters = _ref7.searchParameters;
|
|
290
|
-
|
|
291
242
|
var value = _getRefinedStar(searchParameters);
|
|
292
|
-
|
|
293
243
|
if (typeof value !== 'number') {
|
|
294
244
|
return uiState;
|
|
295
245
|
}
|
|
296
|
-
|
|
297
246
|
return _objectSpread(_objectSpread({}, uiState), {}, {
|
|
298
247
|
ratingMenu: _objectSpread(_objectSpread({}, uiState.ratingMenu), {}, _defineProperty({}, attribute, value))
|
|
299
248
|
});
|
|
@@ -303,17 +252,14 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
303
252
|
var value = uiState.ratingMenu && uiState.ratingMenu[attribute];
|
|
304
253
|
var withoutRefinements = searchParameters.clearRefinements(attribute);
|
|
305
254
|
var withDisjunctiveFacet = withoutRefinements.addDisjunctiveFacet(attribute);
|
|
306
|
-
|
|
307
255
|
if (!value) {
|
|
308
256
|
return withDisjunctiveFacet.setQueryParameters({
|
|
309
257
|
numericRefinements: _objectSpread(_objectSpread({}, withDisjunctiveFacet.numericRefinements), {}, _defineProperty({}, attribute, {}))
|
|
310
258
|
});
|
|
311
259
|
}
|
|
312
|
-
|
|
313
260
|
return withDisjunctiveFacet.addNumericRefinement(attribute, '<=', max).addNumericRefinement(attribute, '>=', value);
|
|
314
261
|
}
|
|
315
262
|
};
|
|
316
263
|
};
|
|
317
264
|
};
|
|
318
|
-
|
|
319
265
|
export default connectRatingMenu;
|
|
@@ -1,20 +1,14 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
2
|
-
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
|
-
|
|
1
|
+
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; }
|
|
2
|
+
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; }
|
|
5
3
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
-
|
|
7
4
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
8
|
-
|
|
9
5
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
10
|
-
|
|
11
6
|
import { escapeFacets, TAG_PLACEHOLDER, TAG_REPLACEMENT, checkRendering, createDocumentationMessageGenerator, createSendEventForFacet, noop } from "../../lib/utils/index.js";
|
|
12
7
|
var withUsage = createDocumentationMessageGenerator({
|
|
13
8
|
name: 'refinement-list',
|
|
14
9
|
connector: true
|
|
15
10
|
});
|
|
16
11
|
var DEFAULT_SORT = ['isRefined', 'count:desc', 'name:asc'];
|
|
17
|
-
|
|
18
12
|
/**
|
|
19
13
|
* **RefinementList** connector provides the logic to build a custom widget that
|
|
20
14
|
* will let the user filter the results based on the values of a specific facet.
|
|
@@ -32,83 +26,71 @@ var connectRefinementList = function connectRefinementList(renderFn) {
|
|
|
32
26
|
checkRendering(renderFn, withUsage());
|
|
33
27
|
return function (widgetParams) {
|
|
34
28
|
var _ref = widgetParams || {},
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
29
|
+
attribute = _ref.attribute,
|
|
30
|
+
_ref$operator = _ref.operator,
|
|
31
|
+
operator = _ref$operator === void 0 ? 'or' : _ref$operator,
|
|
32
|
+
_ref$limit = _ref.limit,
|
|
33
|
+
limit = _ref$limit === void 0 ? 10 : _ref$limit,
|
|
34
|
+
_ref$showMore = _ref.showMore,
|
|
35
|
+
showMore = _ref$showMore === void 0 ? false : _ref$showMore,
|
|
36
|
+
_ref$showMoreLimit = _ref.showMoreLimit,
|
|
37
|
+
showMoreLimit = _ref$showMoreLimit === void 0 ? 20 : _ref$showMoreLimit,
|
|
38
|
+
_ref$sortBy = _ref.sortBy,
|
|
39
|
+
sortBy = _ref$sortBy === void 0 ? DEFAULT_SORT : _ref$sortBy,
|
|
40
|
+
_ref$escapeFacetValue = _ref.escapeFacetValues,
|
|
41
|
+
escapeFacetValues = _ref$escapeFacetValue === void 0 ? true : _ref$escapeFacetValue,
|
|
42
|
+
_ref$transformItems = _ref.transformItems,
|
|
43
|
+
transformItems = _ref$transformItems === void 0 ? function (items) {
|
|
44
|
+
return items;
|
|
45
|
+
} : _ref$transformItems;
|
|
53
46
|
if (!attribute) {
|
|
54
47
|
throw new Error(withUsage('The `attribute` option is required.'));
|
|
55
48
|
}
|
|
56
|
-
|
|
57
49
|
if (!/^(and|or)$/.test(operator)) {
|
|
58
50
|
throw new Error(withUsage("The `operator` must one of: `\"and\"`, `\"or\"` (got \"".concat(operator, "\").")));
|
|
59
51
|
}
|
|
60
|
-
|
|
61
52
|
if (showMore === true && showMoreLimit <= limit) {
|
|
62
53
|
throw new Error(withUsage('`showMoreLimit` should be greater than `limit`.'));
|
|
63
54
|
}
|
|
64
|
-
|
|
65
55
|
var formatItems = function formatItems(_ref2) {
|
|
66
56
|
var label = _ref2.name,
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
57
|
+
value = _ref2.escapedValue,
|
|
58
|
+
item = _objectWithoutProperties(_ref2, ["name", "escapedValue"]);
|
|
70
59
|
return _objectSpread(_objectSpread({}, item), {}, {
|
|
71
60
|
value: value,
|
|
72
61
|
label: label,
|
|
73
62
|
highlighted: label
|
|
74
63
|
});
|
|
75
64
|
};
|
|
76
|
-
|
|
77
65
|
var lastResultsFromMainSearch;
|
|
78
66
|
var lastItemsFromMainSearch = [];
|
|
79
67
|
var hasExhaustiveItems = true;
|
|
80
68
|
var triggerRefine;
|
|
81
69
|
var sendEvent;
|
|
82
|
-
var isShowingMore = false;
|
|
70
|
+
var isShowingMore = false;
|
|
71
|
+
// Provide the same function to the `renderFn` so that way the user
|
|
83
72
|
// has to only bind it once when `isFirstRendering` for instance
|
|
84
|
-
|
|
85
73
|
var toggleShowMore = function toggleShowMore() {};
|
|
86
|
-
|
|
87
74
|
function cachedToggleShowMore() {
|
|
88
75
|
toggleShowMore();
|
|
89
76
|
}
|
|
90
|
-
|
|
91
77
|
function createToggleShowMore(renderOptions, widget) {
|
|
92
78
|
return function () {
|
|
93
79
|
isShowingMore = !isShowingMore;
|
|
94
80
|
widget.render(renderOptions);
|
|
95
81
|
};
|
|
96
82
|
}
|
|
97
|
-
|
|
98
83
|
function getLimit() {
|
|
99
84
|
return isShowingMore ? showMoreLimit : limit;
|
|
100
85
|
}
|
|
101
|
-
|
|
102
86
|
var searchForFacetValues = function searchForFacetValues() {
|
|
103
87
|
return function () {};
|
|
104
88
|
};
|
|
105
|
-
|
|
106
89
|
var createSearchForFacetValues = function createSearchForFacetValues(helper, widget) {
|
|
107
90
|
return function (renderOptions) {
|
|
108
91
|
return function (query) {
|
|
109
92
|
var instantSearchInstance = renderOptions.instantSearchInstance,
|
|
110
|
-
|
|
111
|
-
|
|
93
|
+
searchResults = renderOptions.results;
|
|
112
94
|
if (query === '' && lastItemsFromMainSearch) {
|
|
113
95
|
// render with previous data from the helper.
|
|
114
96
|
renderFn(_objectSpread(_objectSpread({}, widget.getWidgetRenderState(_objectSpread(_objectSpread({}, renderOptions), {}, {
|
|
@@ -121,16 +103,16 @@ var connectRefinementList = function connectRefinementList(renderFn) {
|
|
|
121
103
|
highlightPreTag: escapeFacetValues ? TAG_PLACEHOLDER.highlightPreTag : TAG_REPLACEMENT.highlightPreTag,
|
|
122
104
|
highlightPostTag: escapeFacetValues ? TAG_PLACEHOLDER.highlightPostTag : TAG_REPLACEMENT.highlightPostTag
|
|
123
105
|
};
|
|
124
|
-
helper.searchForFacetValues(attribute, query,
|
|
106
|
+
helper.searchForFacetValues(attribute, query,
|
|
107
|
+
// We cap the `maxFacetHits` value to 100 because the Algolia API
|
|
125
108
|
// doesn't support a greater number.
|
|
126
109
|
// See https://www.algolia.com/doc/api-reference/api-parameters/maxFacetHits/
|
|
127
110
|
Math.min(getLimit(), 100), tags).then(function (results) {
|
|
128
111
|
var facetValues = escapeFacetValues ? escapeFacets(results.facetHits) : results.facetHits;
|
|
129
112
|
var normalizedFacetValues = transformItems(facetValues.map(function (_ref3) {
|
|
130
113
|
var escapedValue = _ref3.escapedValue,
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
114
|
+
value = _ref3.value,
|
|
115
|
+
item = _objectWithoutProperties(_ref3, ["escapedValue", "value"]);
|
|
134
116
|
return _objectSpread(_objectSpread({}, item), {}, {
|
|
135
117
|
value: escapedValue,
|
|
136
118
|
label: value
|
|
@@ -152,7 +134,6 @@ var connectRefinementList = function connectRefinementList(renderFn) {
|
|
|
152
134
|
};
|
|
153
135
|
};
|
|
154
136
|
};
|
|
155
|
-
|
|
156
137
|
return {
|
|
157
138
|
$$type: 'ais.refinementList',
|
|
158
139
|
init: function init(initOptions) {
|
|
@@ -172,13 +153,12 @@ var connectRefinementList = function connectRefinementList(renderFn) {
|
|
|
172
153
|
},
|
|
173
154
|
getWidgetRenderState: function getWidgetRenderState(renderOptions) {
|
|
174
155
|
var results = renderOptions.results,
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
156
|
+
state = renderOptions.state,
|
|
157
|
+
_createURL = renderOptions.createURL,
|
|
158
|
+
instantSearchInstance = renderOptions.instantSearchInstance,
|
|
159
|
+
helper = renderOptions.helper;
|
|
179
160
|
var items = [];
|
|
180
161
|
var facetValues = [];
|
|
181
|
-
|
|
182
162
|
if (!sendEvent || !triggerRefine || !searchForFacetValues) {
|
|
183
163
|
sendEvent = createSendEventForFacet({
|
|
184
164
|
instantSearchInstance: instantSearchInstance,
|
|
@@ -186,15 +166,12 @@ var connectRefinementList = function connectRefinementList(renderFn) {
|
|
|
186
166
|
attribute: attribute,
|
|
187
167
|
widgetType: this.$$type
|
|
188
168
|
});
|
|
189
|
-
|
|
190
169
|
triggerRefine = function triggerRefine(facetValue) {
|
|
191
170
|
sendEvent('click', facetValue);
|
|
192
171
|
helper.toggleFacetRefinement(attribute, facetValue).search();
|
|
193
172
|
};
|
|
194
|
-
|
|
195
173
|
searchForFacetValues = createSearchForFacetValues(helper, this);
|
|
196
174
|
}
|
|
197
|
-
|
|
198
175
|
if (results) {
|
|
199
176
|
var values = results.getFacetValues(attribute, {
|
|
200
177
|
sortBy: sortBy,
|
|
@@ -205,24 +182,23 @@ var connectRefinementList = function connectRefinementList(renderFn) {
|
|
|
205
182
|
results: results
|
|
206
183
|
});
|
|
207
184
|
var maxValuesPerFacetConfig = state.maxValuesPerFacet;
|
|
208
|
-
var currentLimit = getLimit();
|
|
185
|
+
var currentLimit = getLimit();
|
|
186
|
+
// If the limit is the max number of facet retrieved it is impossible to know
|
|
209
187
|
// if the facets are exhaustive. The only moment we are sure it is exhaustive
|
|
210
188
|
// is when it is strictly under the number requested unless we know that another
|
|
211
189
|
// widget has requested more values (maxValuesPerFacet > getLimit()).
|
|
212
190
|
// Because this is used for making the search of facets unable or not, it is important
|
|
213
191
|
// to be conservative here.
|
|
214
|
-
|
|
215
192
|
hasExhaustiveItems = maxValuesPerFacetConfig > currentLimit ? facetValues.length <= currentLimit : facetValues.length < currentLimit;
|
|
216
193
|
lastResultsFromMainSearch = results;
|
|
217
194
|
lastItemsFromMainSearch = items;
|
|
218
|
-
|
|
219
195
|
if (renderOptions.results) {
|
|
220
196
|
toggleShowMore = createToggleShowMore(renderOptions, this);
|
|
221
197
|
}
|
|
222
|
-
}
|
|
223
|
-
// function
|
|
224
|
-
|
|
198
|
+
}
|
|
225
199
|
|
|
200
|
+
// Do not mistake searchForFacetValues and searchFacetValues which is the actual search
|
|
201
|
+
// function
|
|
226
202
|
var searchFacetValues = searchForFacetValues && searchForFacetValues(renderOptions);
|
|
227
203
|
var canShowLess = isShowingMore && lastItemsFromMainSearch.length > limit;
|
|
228
204
|
var canShowMore = showMore && !hasExhaustiveItems;
|
|
@@ -248,21 +224,17 @@ var connectRefinementList = function connectRefinementList(renderFn) {
|
|
|
248
224
|
var state = _ref4.state;
|
|
249
225
|
unmountFn();
|
|
250
226
|
var withoutMaxValuesPerFacet = state.setQueryParameter('maxValuesPerFacet', undefined);
|
|
251
|
-
|
|
252
227
|
if (operator === 'and') {
|
|
253
228
|
return withoutMaxValuesPerFacet.removeFacet(attribute);
|
|
254
229
|
}
|
|
255
|
-
|
|
256
230
|
return withoutMaxValuesPerFacet.removeDisjunctiveFacet(attribute);
|
|
257
231
|
},
|
|
258
232
|
getWidgetUiState: function getWidgetUiState(uiState, _ref5) {
|
|
259
233
|
var searchParameters = _ref5.searchParameters;
|
|
260
234
|
var values = operator === 'or' ? searchParameters.getDisjunctiveRefinements(attribute) : searchParameters.getConjunctiveRefinements(attribute);
|
|
261
|
-
|
|
262
235
|
if (!values.length) {
|
|
263
236
|
return uiState;
|
|
264
237
|
}
|
|
265
|
-
|
|
266
238
|
return _objectSpread(_objectSpread({}, uiState), {}, {
|
|
267
239
|
refinementList: _objectSpread(_objectSpread({}, uiState.refinementList), {}, _defineProperty({}, attribute, values))
|
|
268
240
|
});
|
|
@@ -276,12 +248,10 @@ var connectRefinementList = function connectRefinementList(renderFn) {
|
|
|
276
248
|
var currentMaxValuesPerFacet = withFacetConfiguration.maxValuesPerFacet || 0;
|
|
277
249
|
var nextMaxValuesPerFacet = Math.max(currentMaxValuesPerFacet, showMore ? showMoreLimit : limit);
|
|
278
250
|
var withMaxValuesPerFacet = withFacetConfiguration.setQueryParameter('maxValuesPerFacet', nextMaxValuesPerFacet);
|
|
279
|
-
|
|
280
251
|
if (!values) {
|
|
281
252
|
var key = isDisjunctive ? 'disjunctiveFacetsRefinements' : 'facetsRefinements';
|
|
282
253
|
return withMaxValuesPerFacet.setQueryParameters(_defineProperty({}, key, _objectSpread(_objectSpread({}, withMaxValuesPerFacet[key]), {}, _defineProperty({}, attribute, []))));
|
|
283
254
|
}
|
|
284
|
-
|
|
285
255
|
return values.reduce(function (parameters, value) {
|
|
286
256
|
return isDisjunctive ? parameters.addDisjunctiveFacetRefinement(attribute, value) : parameters.addFacetRefinement(attribute, value);
|
|
287
257
|
}, withMaxValuesPerFacet);
|
|
@@ -289,5 +259,4 @@ var connectRefinementList = function connectRefinementList(renderFn) {
|
|
|
289
259
|
};
|
|
290
260
|
};
|
|
291
261
|
};
|
|
292
|
-
|
|
293
262
|
export default connectRefinementList;
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
2
|
-
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
|
-
|
|
1
|
+
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; }
|
|
2
|
+
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; }
|
|
5
3
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
-
|
|
7
4
|
import { noop } from "../../lib/utils/index.js";
|
|
8
|
-
|
|
9
5
|
var connectRelevantSort = function connectRelevantSort() {
|
|
10
6
|
var renderFn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;
|
|
11
7
|
var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;
|
|
@@ -37,17 +33,14 @@ var connectRelevantSort = function connectRelevantSort() {
|
|
|
37
33
|
},
|
|
38
34
|
getWidgetRenderState: function getWidgetRenderState(_ref2) {
|
|
39
35
|
var results = _ref2.results,
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
helper = _ref2.helper;
|
|
42
37
|
if (!connectorState.refine) {
|
|
43
38
|
connectorState.refine = function (relevancyStrictness) {
|
|
44
39
|
helper.setQueryParameter('relevancyStrictness', relevancyStrictness).search();
|
|
45
40
|
};
|
|
46
41
|
}
|
|
47
|
-
|
|
48
42
|
var _ref3 = results || {},
|
|
49
|
-
|
|
50
|
-
|
|
43
|
+
appliedRelevancyStrictness = _ref3.appliedRelevancyStrictness;
|
|
51
44
|
var isVirtualReplica = appliedRelevancyStrictness !== undefined;
|
|
52
45
|
return {
|
|
53
46
|
isRelevantSorted: typeof appliedRelevancyStrictness !== 'undefined' && appliedRelevancyStrictness > 0,
|
|
@@ -59,7 +52,6 @@ var connectRelevantSort = function connectRelevantSort() {
|
|
|
59
52
|
},
|
|
60
53
|
getWidgetSearchParameters: function getWidgetSearchParameters(state, _ref4) {
|
|
61
54
|
var _uiState$relevantSort;
|
|
62
|
-
|
|
63
55
|
var uiState = _ref4.uiState;
|
|
64
56
|
return state.setQueryParameter('relevancyStrictness', (_uiState$relevantSort = uiState.relevantSort) !== null && _uiState$relevantSort !== void 0 ? _uiState$relevantSort : state.relevancyStrictness);
|
|
65
57
|
},
|
|
@@ -72,5 +64,4 @@ var connectRelevantSort = function connectRelevantSort() {
|
|
|
72
64
|
};
|
|
73
65
|
};
|
|
74
66
|
};
|
|
75
|
-
|
|
76
67
|
export default connectRelevantSort;
|