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
|
@@ -4,27 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _index = require("../../lib/utils/index.js");
|
|
9
|
-
|
|
10
|
-
function
|
|
11
|
-
|
|
12
|
-
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; }
|
|
13
|
-
|
|
8
|
+
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; }
|
|
9
|
+
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; }
|
|
14
10
|
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; }
|
|
15
|
-
|
|
16
11
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
17
|
-
|
|
18
12
|
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."); }
|
|
19
|
-
|
|
20
13
|
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); }
|
|
21
|
-
|
|
22
14
|
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; }
|
|
23
|
-
|
|
24
|
-
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; }
|
|
25
|
-
|
|
15
|
+
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; }
|
|
26
16
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
27
|
-
|
|
28
17
|
var withUsage = (0, _index.createDocumentationMessageGenerator)({
|
|
29
18
|
name: 'range-input',
|
|
30
19
|
connector: true
|
|
@@ -33,17 +22,17 @@ var withUsage = (0, _index.createDocumentationMessageGenerator)({
|
|
|
33
22
|
connector: true
|
|
34
23
|
});
|
|
35
24
|
var $$type = 'ais.range';
|
|
36
|
-
|
|
37
25
|
function toPrecision(_ref) {
|
|
38
26
|
var min = _ref.min,
|
|
39
|
-
|
|
40
|
-
|
|
27
|
+
max = _ref.max,
|
|
28
|
+
precision = _ref.precision;
|
|
41
29
|
var pow = Math.pow(10, precision);
|
|
42
30
|
return {
|
|
43
31
|
min: min ? Math.floor(min * pow) / pow : min,
|
|
44
32
|
max: max ? Math.ceil(max * pow) / pow : max
|
|
45
33
|
};
|
|
46
34
|
}
|
|
35
|
+
|
|
47
36
|
/**
|
|
48
37
|
* **Range** connector provides the logic to create custom widget that will let
|
|
49
38
|
* the user refine results using a numeric range.
|
|
@@ -51,32 +40,26 @@ function toPrecision(_ref) {
|
|
|
51
40
|
* This connectors provides a `refine()` function that accepts bounds. It will also provide
|
|
52
41
|
* information about the min and max bounds for the current result set.
|
|
53
42
|
*/
|
|
54
|
-
|
|
55
|
-
|
|
56
43
|
var connectRange = function connectRange(renderFn) {
|
|
57
44
|
var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _index.noop;
|
|
58
45
|
(0, _index.checkRendering)(renderFn, withUsage());
|
|
59
46
|
return function (widgetParams) {
|
|
60
47
|
var _ref2 = widgetParams || {},
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
48
|
+
_ref2$attribute = _ref2.attribute,
|
|
49
|
+
attribute = _ref2$attribute === void 0 ? '' : _ref2$attribute,
|
|
50
|
+
minBound = _ref2.min,
|
|
51
|
+
maxBound = _ref2.max,
|
|
52
|
+
_ref2$precision = _ref2.precision,
|
|
53
|
+
precision = _ref2$precision === void 0 ? 0 : _ref2$precision;
|
|
68
54
|
if (!attribute) {
|
|
69
55
|
throw new Error(withUsage('The `attribute` option is required.'));
|
|
70
56
|
}
|
|
71
|
-
|
|
72
57
|
if ((0, _index.isFiniteNumber)(minBound) && (0, _index.isFiniteNumber)(maxBound) && minBound > maxBound) {
|
|
73
58
|
throw new Error(withUsage("The `max` option can't be lower than `min`."));
|
|
74
59
|
}
|
|
75
|
-
|
|
76
60
|
var formatToNumber = function formatToNumber(v) {
|
|
77
61
|
return Number(Number(v).toFixed(precision));
|
|
78
62
|
};
|
|
79
|
-
|
|
80
63
|
var rangeFormatter = {
|
|
81
64
|
from: function from(v) {
|
|
82
65
|
return v.toLocaleString();
|
|
@@ -84,34 +67,29 @@ var connectRange = function connectRange(renderFn) {
|
|
|
84
67
|
to: function to(v) {
|
|
85
68
|
return formatToNumber(v).toLocaleString();
|
|
86
69
|
}
|
|
87
|
-
};
|
|
70
|
+
};
|
|
88
71
|
|
|
72
|
+
// eslint-disable-next-line complexity
|
|
89
73
|
var getRefinedState = function getRefinedState(helper, currentRange, nextMin, nextMax) {
|
|
90
74
|
var resolvedState = helper.state;
|
|
91
75
|
var currentRangeMin = currentRange.min,
|
|
92
|
-
|
|
93
|
-
|
|
76
|
+
currentRangeMax = currentRange.max;
|
|
94
77
|
var _ref3 = resolvedState.getNumericRefinement(attribute, '>=') || [],
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
78
|
+
_ref4 = _slicedToArray(_ref3, 1),
|
|
79
|
+
min = _ref4[0];
|
|
98
80
|
var _ref5 = resolvedState.getNumericRefinement(attribute, '<=') || [],
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
81
|
+
_ref6 = _slicedToArray(_ref5, 1),
|
|
82
|
+
max = _ref6[0];
|
|
102
83
|
var isResetMin = nextMin === undefined || nextMin === '';
|
|
103
84
|
var isResetMax = nextMax === undefined || nextMax === '';
|
|
104
|
-
|
|
105
85
|
var _toPrecision = toPrecision({
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
86
|
+
min: !isResetMin ? parseFloat(nextMin) : undefined,
|
|
87
|
+
max: !isResetMax ? parseFloat(nextMax) : undefined,
|
|
88
|
+
precision: precision
|
|
89
|
+
}),
|
|
90
|
+
nextMinAsNumber = _toPrecision.min,
|
|
91
|
+
nextMaxAsNumber = _toPrecision.max;
|
|
113
92
|
var newNextMin;
|
|
114
|
-
|
|
115
93
|
if (!(0, _index.isFiniteNumber)(minBound) && currentRangeMin === nextMinAsNumber) {
|
|
116
94
|
newNextMin = undefined;
|
|
117
95
|
} else if ((0, _index.isFiniteNumber)(minBound) && isResetMin) {
|
|
@@ -119,9 +97,7 @@ var connectRange = function connectRange(renderFn) {
|
|
|
119
97
|
} else {
|
|
120
98
|
newNextMin = nextMinAsNumber;
|
|
121
99
|
}
|
|
122
|
-
|
|
123
100
|
var newNextMax;
|
|
124
|
-
|
|
125
101
|
if (!(0, _index.isFiniteNumber)(maxBound) && currentRangeMax === nextMaxAsNumber) {
|
|
126
102
|
newNextMax = undefined;
|
|
127
103
|
} else if ((0, _index.isFiniteNumber)(maxBound) && isResetMax) {
|
|
@@ -129,7 +105,6 @@ var connectRange = function connectRange(renderFn) {
|
|
|
129
105
|
} else {
|
|
130
106
|
newNextMax = nextMaxAsNumber;
|
|
131
107
|
}
|
|
132
|
-
|
|
133
108
|
var isResetNewNextMin = newNextMin === undefined;
|
|
134
109
|
var isGreaterThanCurrentRange = (0, _index.isFiniteNumber)(currentRangeMin) && currentRangeMin <= newNextMin;
|
|
135
110
|
var isMinValid = isResetNewNextMin || (0, _index.isFiniteNumber)(newNextMin) && (!(0, _index.isFiniteNumber)(currentRangeMin) || isGreaterThanCurrentRange);
|
|
@@ -138,24 +113,18 @@ var connectRange = function connectRange(renderFn) {
|
|
|
138
113
|
var isMaxValid = isResetNewNextMax || (0, _index.isFiniteNumber)(newNextMax) && (!(0, _index.isFiniteNumber)(currentRangeMax) || isLowerThanRange);
|
|
139
114
|
var hasMinChange = min !== newNextMin;
|
|
140
115
|
var hasMaxChange = max !== newNextMax;
|
|
141
|
-
|
|
142
116
|
if ((hasMinChange || hasMaxChange) && isMinValid && isMaxValid) {
|
|
143
117
|
resolvedState = resolvedState.removeNumericRefinement(attribute);
|
|
144
|
-
|
|
145
118
|
if ((0, _index.isFiniteNumber)(newNextMin)) {
|
|
146
119
|
resolvedState = resolvedState.addNumericRefinement(attribute, '>=', newNextMin);
|
|
147
120
|
}
|
|
148
|
-
|
|
149
121
|
if ((0, _index.isFiniteNumber)(newNextMax)) {
|
|
150
122
|
resolvedState = resolvedState.addNumericRefinement(attribute, '<=', newNextMax);
|
|
151
123
|
}
|
|
152
|
-
|
|
153
124
|
return resolvedState.resetPage();
|
|
154
125
|
}
|
|
155
|
-
|
|
156
126
|
return null;
|
|
157
127
|
};
|
|
158
|
-
|
|
159
128
|
var createSendEvent = function createSendEvent(instantSearchInstance) {
|
|
160
129
|
return function () {
|
|
161
130
|
if (arguments.length === 1) {
|
|
@@ -164,10 +133,8 @@ var connectRange = function connectRange(renderFn) {
|
|
|
164
133
|
}
|
|
165
134
|
};
|
|
166
135
|
};
|
|
167
|
-
|
|
168
136
|
function _getCurrentRange(stats) {
|
|
169
137
|
var min;
|
|
170
|
-
|
|
171
138
|
if ((0, _index.isFiniteNumber)(minBound)) {
|
|
172
139
|
min = minBound;
|
|
173
140
|
} else if ((0, _index.isFiniteNumber)(stats.min)) {
|
|
@@ -175,9 +142,7 @@ var connectRange = function connectRange(renderFn) {
|
|
|
175
142
|
} else {
|
|
176
143
|
min = 0;
|
|
177
144
|
}
|
|
178
|
-
|
|
179
145
|
var max;
|
|
180
|
-
|
|
181
146
|
if ((0, _index.isFiniteNumber)(maxBound)) {
|
|
182
147
|
max = maxBound;
|
|
183
148
|
} else if ((0, _index.isFiniteNumber)(stats.max)) {
|
|
@@ -185,43 +150,35 @@ var connectRange = function connectRange(renderFn) {
|
|
|
185
150
|
} else {
|
|
186
151
|
max = 0;
|
|
187
152
|
}
|
|
188
|
-
|
|
189
153
|
return toPrecision({
|
|
190
154
|
min: min,
|
|
191
155
|
max: max,
|
|
192
156
|
precision: precision
|
|
193
157
|
});
|
|
194
158
|
}
|
|
195
|
-
|
|
196
159
|
function _getCurrentRefinement(helper) {
|
|
197
160
|
var _ref7 = helper.getNumericRefinement(attribute, '>=') || [],
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
161
|
+
_ref8 = _slicedToArray(_ref7, 1),
|
|
162
|
+
minValue = _ref8[0];
|
|
201
163
|
var _ref9 = helper.getNumericRefinement(attribute, '<=') || [],
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
164
|
+
_ref10 = _slicedToArray(_ref9, 1),
|
|
165
|
+
maxValue = _ref10[0];
|
|
205
166
|
var min = (0, _index.isFiniteNumber)(minValue) ? minValue : -Infinity;
|
|
206
167
|
var max = (0, _index.isFiniteNumber)(maxValue) ? maxValue : Infinity;
|
|
207
168
|
return [min, max];
|
|
208
169
|
}
|
|
209
|
-
|
|
210
170
|
function _refine(helper, currentRange) {
|
|
211
171
|
return function () {
|
|
212
172
|
var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [undefined, undefined],
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
173
|
+
_ref12 = _slicedToArray(_ref11, 2),
|
|
174
|
+
nextMin = _ref12[0],
|
|
175
|
+
nextMax = _ref12[1];
|
|
217
176
|
var refinedState = getRefinedState(helper, currentRange, nextMin, nextMax);
|
|
218
|
-
|
|
219
177
|
if (refinedState) {
|
|
220
178
|
helper.setState(refinedState).search();
|
|
221
179
|
}
|
|
222
180
|
};
|
|
223
181
|
}
|
|
224
|
-
|
|
225
182
|
return {
|
|
226
183
|
$$type: $$type,
|
|
227
184
|
init: function init(initOptions) {
|
|
@@ -241,8 +198,8 @@ var connectRange = function connectRange(renderFn) {
|
|
|
241
198
|
},
|
|
242
199
|
getWidgetRenderState: function getWidgetRenderState(_ref13) {
|
|
243
200
|
var results = _ref13.results,
|
|
244
|
-
|
|
245
|
-
|
|
201
|
+
helper = _ref13.helper,
|
|
202
|
+
instantSearchInstance = _ref13.instantSearchInstance;
|
|
246
203
|
var facetsFromResults = results && results.disjunctiveFacets || [];
|
|
247
204
|
var facet = (0, _index.find)(facetsFromResults, function (facetResult) {
|
|
248
205
|
return facetResult.name === attribute;
|
|
@@ -251,13 +208,9 @@ var connectRange = function connectRange(renderFn) {
|
|
|
251
208
|
min: undefined,
|
|
252
209
|
max: undefined
|
|
253
210
|
};
|
|
254
|
-
|
|
255
211
|
var currentRange = _getCurrentRange(stats);
|
|
256
|
-
|
|
257
212
|
var start = _getCurrentRefinement(helper);
|
|
258
|
-
|
|
259
213
|
var refine;
|
|
260
|
-
|
|
261
214
|
if (!results) {
|
|
262
215
|
// On first render pass an empty range
|
|
263
216
|
// to be able to bypass the validation
|
|
@@ -269,7 +222,6 @@ var connectRange = function connectRange(renderFn) {
|
|
|
269
222
|
} else {
|
|
270
223
|
refine = _refine(helper, currentRange);
|
|
271
224
|
}
|
|
272
|
-
|
|
273
225
|
return {
|
|
274
226
|
refine: refine,
|
|
275
227
|
canRefine: currentRange.min !== currentRange.max,
|
|
@@ -289,17 +241,14 @@ var connectRange = function connectRange(renderFn) {
|
|
|
289
241
|
},
|
|
290
242
|
getWidgetUiState: function getWidgetUiState(uiState, _ref15) {
|
|
291
243
|
var searchParameters = _ref15.searchParameters;
|
|
292
|
-
|
|
293
244
|
var _searchParameters$get = searchParameters.getNumericRefinements(attribute),
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
245
|
+
_searchParameters$get2 = _searchParameters$get['>='],
|
|
246
|
+
min = _searchParameters$get2 === void 0 ? [] : _searchParameters$get2,
|
|
247
|
+
_searchParameters$get3 = _searchParameters$get['<='],
|
|
248
|
+
max = _searchParameters$get3 === void 0 ? [] : _searchParameters$get3;
|
|
299
249
|
if (min.length === 0 && max.length === 0) {
|
|
300
250
|
return uiState;
|
|
301
251
|
}
|
|
302
|
-
|
|
303
252
|
return _objectSpread(_objectSpread({}, uiState), {}, {
|
|
304
253
|
range: _objectSpread(_objectSpread({}, uiState.range), {}, _defineProperty({}, attribute, "".concat(min, ":").concat(max)))
|
|
305
254
|
});
|
|
@@ -309,41 +258,32 @@ var connectRange = function connectRange(renderFn) {
|
|
|
309
258
|
var widgetSearchParameters = searchParameters.addDisjunctiveFacet(attribute).setQueryParameters({
|
|
310
259
|
numericRefinements: _objectSpread(_objectSpread({}, searchParameters.numericRefinements), {}, _defineProperty({}, attribute, {}))
|
|
311
260
|
});
|
|
312
|
-
|
|
313
261
|
if ((0, _index.isFiniteNumber)(minBound)) {
|
|
314
262
|
widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '>=', minBound);
|
|
315
263
|
}
|
|
316
|
-
|
|
317
264
|
if ((0, _index.isFiniteNumber)(maxBound)) {
|
|
318
265
|
widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '<=', maxBound);
|
|
319
266
|
}
|
|
320
|
-
|
|
321
267
|
var value = uiState.range && uiState.range[attribute];
|
|
322
|
-
|
|
323
268
|
if (!value || value.indexOf(':') === -1) {
|
|
324
269
|
return widgetSearchParameters;
|
|
325
270
|
}
|
|
326
|
-
|
|
327
271
|
var _value$split$map = value.split(':').map(parseFloat),
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
272
|
+
_value$split$map2 = _slicedToArray(_value$split$map, 2),
|
|
273
|
+
lowerBound = _value$split$map2[0],
|
|
274
|
+
upperBound = _value$split$map2[1];
|
|
332
275
|
if ((0, _index.isFiniteNumber)(lowerBound) && (!(0, _index.isFiniteNumber)(minBound) || minBound < lowerBound)) {
|
|
333
276
|
widgetSearchParameters = widgetSearchParameters.removeNumericRefinement(attribute, '>=');
|
|
334
277
|
widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '>=', lowerBound);
|
|
335
278
|
}
|
|
336
|
-
|
|
337
279
|
if ((0, _index.isFiniteNumber)(upperBound) && (!(0, _index.isFiniteNumber)(maxBound) || upperBound < maxBound)) {
|
|
338
280
|
widgetSearchParameters = widgetSearchParameters.removeNumericRefinement(attribute, '<=');
|
|
339
281
|
widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '<=', upperBound);
|
|
340
282
|
}
|
|
341
|
-
|
|
342
283
|
return widgetSearchParameters;
|
|
343
284
|
}
|
|
344
285
|
};
|
|
345
286
|
};
|
|
346
287
|
};
|
|
347
|
-
|
|
348
288
|
var _default = connectRange;
|
|
349
289
|
exports.default = _default;
|
|
@@ -4,35 +4,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _index = require("../../lib/utils/index.js");
|
|
9
|
-
|
|
10
8
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
11
|
-
|
|
12
9
|
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."); }
|
|
13
|
-
|
|
14
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
|
|
15
|
-
|
|
10
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
16
11
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
17
|
-
|
|
18
|
-
function
|
|
19
|
-
|
|
20
|
-
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; }
|
|
21
|
-
|
|
12
|
+
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; }
|
|
13
|
+
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; }
|
|
22
14
|
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; }
|
|
23
|
-
|
|
24
15
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
25
|
-
|
|
26
16
|
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."); }
|
|
27
|
-
|
|
28
17
|
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); }
|
|
29
|
-
|
|
30
18
|
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; }
|
|
31
|
-
|
|
32
|
-
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; }
|
|
33
|
-
|
|
19
|
+
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; }
|
|
34
20
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
35
|
-
|
|
36
21
|
var withUsage = (0, _index.createDocumentationMessageGenerator)({
|
|
37
22
|
name: 'rating-menu',
|
|
38
23
|
connector: true
|
|
@@ -40,33 +25,27 @@ var withUsage = (0, _index.createDocumentationMessageGenerator)({
|
|
|
40
25
|
var $$type = 'ais.ratingMenu';
|
|
41
26
|
var MAX_VALUES_PER_FACET_API_LIMIT = 1000;
|
|
42
27
|
var STEP = 1;
|
|
43
|
-
|
|
44
28
|
var createSendEvent = function createSendEvent(_ref) {
|
|
45
29
|
var instantSearchInstance = _ref.instantSearchInstance,
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
30
|
+
helper = _ref.helper,
|
|
31
|
+
getRefinedStar = _ref.getRefinedStar,
|
|
32
|
+
attribute = _ref.attribute;
|
|
49
33
|
return function () {
|
|
50
34
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
51
35
|
args[_key] = arguments[_key];
|
|
52
36
|
}
|
|
53
|
-
|
|
54
37
|
if (args.length === 1) {
|
|
55
38
|
instantSearchInstance.sendEventToInsights(args[0]);
|
|
56
39
|
return;
|
|
57
40
|
}
|
|
58
|
-
|
|
59
41
|
var eventType = args[0],
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
42
|
+
facetValue = args[1],
|
|
43
|
+
_args$ = args[2],
|
|
44
|
+
eventName = _args$ === void 0 ? 'Filter Applied' : _args$;
|
|
64
45
|
if (eventType !== 'click') {
|
|
65
46
|
return;
|
|
66
47
|
}
|
|
67
|
-
|
|
68
48
|
var isRefined = getRefinedStar() === Number(facetValue);
|
|
69
|
-
|
|
70
49
|
if (!isRefined) {
|
|
71
50
|
instantSearchInstance.sendEventToInsights({
|
|
72
51
|
insightsMethod: 'clickedFilters',
|
|
@@ -82,7 +61,6 @@ var createSendEvent = function createSendEvent(_ref) {
|
|
|
82
61
|
}
|
|
83
62
|
};
|
|
84
63
|
};
|
|
85
|
-
|
|
86
64
|
/**
|
|
87
65
|
* **StarRating** connector provides the logic to build a custom widget that will let
|
|
88
66
|
* the user refine search results based on ratings.
|
|
@@ -96,85 +74,68 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
96
74
|
(0, _index.checkRendering)(renderFn, withUsage());
|
|
97
75
|
return function (widgetParams) {
|
|
98
76
|
var _ref2 = widgetParams || {},
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
77
|
+
attribute = _ref2.attribute,
|
|
78
|
+
_ref2$max = _ref2.max,
|
|
79
|
+
max = _ref2$max === void 0 ? 5 : _ref2$max;
|
|
103
80
|
var sendEvent;
|
|
104
|
-
|
|
105
81
|
if (!attribute) {
|
|
106
82
|
throw new Error(withUsage('The `attribute` option is required.'));
|
|
107
83
|
}
|
|
108
|
-
|
|
109
84
|
var _getRefinedStar = function getRefinedStar(state) {
|
|
110
85
|
var _values$;
|
|
111
|
-
|
|
112
86
|
var values = state.getNumericRefinements(attribute);
|
|
113
|
-
|
|
114
87
|
if (!((_values$ = values['>=']) !== null && _values$ !== void 0 && _values$.length)) {
|
|
115
88
|
return undefined;
|
|
116
89
|
}
|
|
117
|
-
|
|
118
90
|
return values['>='][0];
|
|
119
91
|
};
|
|
120
|
-
|
|
121
92
|
var getFacetsMaxDecimalPlaces = function getFacetsMaxDecimalPlaces(facetResults) {
|
|
122
93
|
var maxDecimalPlaces = 0;
|
|
123
94
|
facetResults.forEach(function (facetResult) {
|
|
124
95
|
var _facetResult$name$spl = facetResult.name.split('.'),
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
96
|
+
_facetResult$name$spl2 = _slicedToArray(_facetResult$name$spl, 2),
|
|
97
|
+
_facetResult$name$spl3 = _facetResult$name$spl2[1],
|
|
98
|
+
decimal = _facetResult$name$spl3 === void 0 ? '' : _facetResult$name$spl3;
|
|
129
99
|
maxDecimalPlaces = Math.max(maxDecimalPlaces, decimal.length);
|
|
130
100
|
});
|
|
131
101
|
return maxDecimalPlaces;
|
|
132
102
|
};
|
|
133
|
-
|
|
134
103
|
var getFacetValuesWarningMessage = function getFacetValuesWarningMessage(_ref3) {
|
|
135
104
|
var maxDecimalPlaces = _ref3.maxDecimalPlaces,
|
|
136
|
-
|
|
137
|
-
|
|
105
|
+
maxFacets = _ref3.maxFacets,
|
|
106
|
+
maxValuesPerFacet = _ref3.maxValuesPerFacet;
|
|
138
107
|
var maxDecimalPlacesInRange = Math.max(0, Math.floor(Math.log10(MAX_VALUES_PER_FACET_API_LIMIT / max)));
|
|
139
108
|
var maxFacetsInRange = Math.min(MAX_VALUES_PER_FACET_API_LIMIT, Math.pow(10, maxDecimalPlacesInRange) * max);
|
|
140
109
|
var solutions = [];
|
|
141
|
-
|
|
142
110
|
if (maxFacets > MAX_VALUES_PER_FACET_API_LIMIT) {
|
|
143
111
|
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), ")"));
|
|
144
112
|
}
|
|
145
|
-
|
|
146
113
|
if (maxValuesPerFacet < maxFacetsInRange) {
|
|
147
114
|
solutions.push("- Increase the maximum number of facet values to ".concat(maxFacetsInRange, " using the \"configure\" widget ").concat((0, _index.createDocumentationLink)({
|
|
148
115
|
name: 'configure'
|
|
149
116
|
}), " and the \"maxValuesPerFacet\" parameter https://www.algolia.com/doc/api-reference/api-parameters/maxValuesPerFacet/"));
|
|
150
117
|
}
|
|
151
|
-
|
|
152
118
|
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')) : "");
|
|
153
119
|
};
|
|
154
|
-
|
|
155
120
|
function getRefinedState(state, facetValue) {
|
|
156
121
|
var isRefined = _getRefinedStar(state) === Number(facetValue);
|
|
157
122
|
var emptyState = state.resetPage().removeNumericRefinement(attribute);
|
|
158
|
-
|
|
159
123
|
if (!isRefined) {
|
|
160
124
|
return emptyState.addNumericRefinement(attribute, '<=', max).addNumericRefinement(attribute, '>=', Number(facetValue));
|
|
161
125
|
}
|
|
162
|
-
|
|
163
126
|
return emptyState;
|
|
164
127
|
}
|
|
165
|
-
|
|
166
128
|
var toggleRefinement = function toggleRefinement(helper, facetValue) {
|
|
167
129
|
sendEvent('click', facetValue);
|
|
168
130
|
helper.setState(getRefinedState(helper.state, facetValue)).search();
|
|
169
131
|
};
|
|
170
|
-
|
|
171
132
|
var connectorState = {
|
|
172
133
|
toggleRefinementFactory: function toggleRefinementFactory(helper) {
|
|
173
134
|
return toggleRefinement.bind(null, helper);
|
|
174
135
|
},
|
|
175
136
|
createURLFactory: function createURLFactory(_ref4) {
|
|
176
137
|
var state = _ref4.state,
|
|
177
|
-
|
|
138
|
+
createURL = _ref4.createURL;
|
|
178
139
|
return function (value) {
|
|
179
140
|
return createURL(getRefinedState(state, value));
|
|
180
141
|
};
|
|
@@ -201,12 +162,11 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
201
162
|
},
|
|
202
163
|
getWidgetRenderState: function getWidgetRenderState(_ref5) {
|
|
203
164
|
var helper = _ref5.helper,
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
165
|
+
results = _ref5.results,
|
|
166
|
+
state = _ref5.state,
|
|
167
|
+
instantSearchInstance = _ref5.instantSearchInstance,
|
|
168
|
+
createURL = _ref5.createURL;
|
|
208
169
|
var facetValues = [];
|
|
209
|
-
|
|
210
170
|
if (!sendEvent) {
|
|
211
171
|
sendEvent = createSendEvent({
|
|
212
172
|
instantSearchInstance: instantSearchInstance,
|
|
@@ -217,11 +177,9 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
217
177
|
attribute: attribute
|
|
218
178
|
});
|
|
219
179
|
}
|
|
220
|
-
|
|
221
180
|
var refinementIsApplied = false;
|
|
222
181
|
var totalCount = 0;
|
|
223
182
|
var facetResults = results === null || results === void 0 ? void 0 : results.getFacetValues(attribute, {});
|
|
224
|
-
|
|
225
183
|
if (results && facetResults) {
|
|
226
184
|
var maxValuesPerFacet = facetResults.length;
|
|
227
185
|
var maxDecimalPlaces = getFacetsMaxDecimalPlaces(facetResults);
|
|
@@ -231,9 +189,7 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
231
189
|
maxFacets: maxFacets,
|
|
232
190
|
maxValuesPerFacet: maxValuesPerFacet
|
|
233
191
|
})) : void 0;
|
|
234
|
-
|
|
235
192
|
var refinedStar = _getRefinedStar(state);
|
|
236
|
-
|
|
237
193
|
var _loop = function _loop(star) {
|
|
238
194
|
var isRefined = refinedStar === star;
|
|
239
195
|
refinementIsApplied = refinementIsApplied || isRefined;
|
|
@@ -245,17 +201,14 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
245
201
|
return sum + current;
|
|
246
202
|
}, 0);
|
|
247
203
|
totalCount += count;
|
|
248
|
-
|
|
249
204
|
if (refinedStar && !isRefined && count === 0) {
|
|
250
205
|
// skip count==0 when at least 1 refinement is enabled
|
|
251
206
|
// eslint-disable-next-line no-continue
|
|
252
207
|
return "continue";
|
|
253
208
|
}
|
|
254
|
-
|
|
255
209
|
var stars = _toConsumableArray(new Array(Math.floor(max / STEP))).map(function (_v, i) {
|
|
256
210
|
return i * STEP < star;
|
|
257
211
|
});
|
|
258
|
-
|
|
259
212
|
facetValues.push({
|
|
260
213
|
stars: stars,
|
|
261
214
|
name: String(star),
|
|
@@ -265,14 +218,11 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
265
218
|
isRefined: isRefined
|
|
266
219
|
});
|
|
267
220
|
};
|
|
268
|
-
|
|
269
221
|
for (var star = STEP; star < max; star += STEP) {
|
|
270
222
|
var _ret = _loop(star);
|
|
271
|
-
|
|
272
223
|
if (_ret === "continue") continue;
|
|
273
224
|
}
|
|
274
225
|
}
|
|
275
|
-
|
|
276
226
|
facetValues = facetValues.reverse();
|
|
277
227
|
var hasNoResults = results ? results.nbHits === 0 : true;
|
|
278
228
|
return {
|
|
@@ -295,13 +245,10 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
295
245
|
},
|
|
296
246
|
getWidgetUiState: function getWidgetUiState(uiState, _ref7) {
|
|
297
247
|
var searchParameters = _ref7.searchParameters;
|
|
298
|
-
|
|
299
248
|
var value = _getRefinedStar(searchParameters);
|
|
300
|
-
|
|
301
249
|
if (typeof value !== 'number') {
|
|
302
250
|
return uiState;
|
|
303
251
|
}
|
|
304
|
-
|
|
305
252
|
return _objectSpread(_objectSpread({}, uiState), {}, {
|
|
306
253
|
ratingMenu: _objectSpread(_objectSpread({}, uiState.ratingMenu), {}, _defineProperty({}, attribute, value))
|
|
307
254
|
});
|
|
@@ -311,18 +258,15 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
311
258
|
var value = uiState.ratingMenu && uiState.ratingMenu[attribute];
|
|
312
259
|
var withoutRefinements = searchParameters.clearRefinements(attribute);
|
|
313
260
|
var withDisjunctiveFacet = withoutRefinements.addDisjunctiveFacet(attribute);
|
|
314
|
-
|
|
315
261
|
if (!value) {
|
|
316
262
|
return withDisjunctiveFacet.setQueryParameters({
|
|
317
263
|
numericRefinements: _objectSpread(_objectSpread({}, withDisjunctiveFacet.numericRefinements), {}, _defineProperty({}, attribute, {}))
|
|
318
264
|
});
|
|
319
265
|
}
|
|
320
|
-
|
|
321
266
|
return withDisjunctiveFacet.addNumericRefinement(attribute, '<=', max).addNumericRefinement(attribute, '>=', value);
|
|
322
267
|
}
|
|
323
268
|
};
|
|
324
269
|
};
|
|
325
270
|
};
|
|
326
|
-
|
|
327
271
|
var _default = connectRatingMenu;
|
|
328
272
|
exports.default = _default;
|