instantsearch.js 4.49.1 → 4.49.3
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 +14 -8
- package/cjs/components/Answers/Answers.js +11 -18
- package/cjs/components/Breadcrumb/Breadcrumb.js +6 -13
- package/cjs/components/ClearRefinements/ClearRefinements.js +5 -12
- package/cjs/components/CurrentRefinements/CurrentRefinements.js +8 -16
- package/cjs/components/GeoSearchControls/GeoSearchButton.js +4 -7
- package/cjs/components/GeoSearchControls/GeoSearchControls.js +14 -23
- package/cjs/components/GeoSearchControls/GeoSearchToggle.js +4 -7
- package/cjs/components/Highlight/Highlight.js +5 -12
- package/cjs/components/Hits/Hits.js +13 -22
- package/cjs/components/InfiniteHits/InfiniteHits.js +18 -27
- package/cjs/components/InternalHighlight/InternalHighlight.js +0 -3
- package/cjs/components/MenuSelect/MenuSelect.js +12 -22
- package/cjs/components/Pagination/Pagination.js +12 -20
- package/cjs/components/Panel/Panel.js +9 -28
- package/cjs/components/PoweredBy/PoweredBy.js +4 -6
- package/cjs/components/QueryRuleCustomData/QueryRuleCustomData.js +3 -8
- package/cjs/components/RangeInput/RangeInput.js +21 -51
- package/cjs/components/RefinementList/RefinementList.js +30 -81
- package/cjs/components/RefinementList/RefinementListItem.js +9 -15
- package/cjs/components/RelevantSort/RelevantSort.js +5 -10
- package/cjs/components/ReverseHighlight/ReverseHighlight.js +5 -12
- package/cjs/components/ReverseSnippet/ReverseSnippet.js +5 -12
- package/cjs/components/SearchBox/SearchBox.js +35 -77
- package/cjs/components/Selector/Selector.js +3 -7
- package/cjs/components/Slider/Pit.js +7 -11
- package/cjs/components/Slider/Rheostat.js +69 -133
- package/cjs/components/Slider/Slider.js +39 -72
- package/cjs/components/Snippet/Snippet.js +5 -12
- package/cjs/components/Stats/Stats.js +13 -22
- package/cjs/components/Template/Template.js +17 -44
- package/cjs/components/ToggleRefinement/ToggleRefinement.js +5 -11
- package/cjs/components/VoiceSearch/VoiceSearch.js +9 -17
- package/cjs/connectors/answers/connectAnswers.js +36 -46
- package/cjs/connectors/autocomplete/connectAutocomplete.js +21 -35
- package/cjs/connectors/breadcrumb/connectBreadcrumb.js +27 -55
- package/cjs/connectors/clear-refinements/connectClearRefinements.js +41 -56
- package/cjs/connectors/configure/connectConfigure.js +17 -28
- package/cjs/connectors/configure-related-items/connectConfigureRelatedItems.js +21 -43
- package/cjs/connectors/current-refinements/connectCurrentRefinements.js +29 -65
- package/cjs/connectors/dynamic-widgets/connectDynamicWidgets.js +27 -45
- package/cjs/connectors/geo-search/connectGeoSearch.js +32 -59
- package/cjs/connectors/hierarchical-menu/connectHierarchicalMenu.js +50 -82
- package/cjs/connectors/hits/connectHits.js +25 -38
- package/cjs/connectors/hits/connectHitsWithInsights.js +3 -7
- package/cjs/connectors/hits-per-page/connectHitsPerPage.js +26 -46
- package/cjs/connectors/index.js +92 -126
- package/cjs/connectors/infinite-hits/connectInfiniteHits.js +43 -75
- package/cjs/connectors/infinite-hits/connectInfiniteHitsWithInsights.js +3 -7
- package/cjs/connectors/menu/connectMenu.js +39 -73
- package/cjs/connectors/numeric-menu/connectNumericMenu.js +37 -86
- package/cjs/connectors/pagination/Paginator.js +11 -25
- package/cjs/connectors/pagination/connectPagination.js +17 -31
- package/cjs/connectors/powered-by/connectPoweredBy.js +13 -19
- package/cjs/connectors/query-rules/connectQueryRules.js +44 -65
- package/cjs/connectors/range/connectRange.js +72 -129
- package/cjs/connectors/rating-menu/connectRatingMenu.js +34 -87
- package/cjs/connectors/refinement-list/connectRefinementList.js +51 -79
- package/cjs/connectors/relevant-sort/connectRelevantSort.js +11 -18
- package/cjs/connectors/search-box/connectSearchBox.js +15 -28
- package/cjs/connectors/sort-by/connectSortBy.js +21 -28
- package/cjs/connectors/stats/connectStats.js +12 -16
- package/cjs/connectors/toggle-refinement/connectToggleRefinement.js +44 -75
- package/cjs/connectors/voice-search/connectVoiceSearch.js +22 -41
- package/cjs/helpers/components/Highlight.js +11 -18
- package/cjs/helpers/components/ReverseHighlight.js +19 -26
- package/cjs/helpers/components/ReverseSnippet.js +19 -26
- package/cjs/helpers/components/Snippet.js +11 -18
- package/cjs/helpers/components/index.js +4 -12
- package/cjs/helpers/get-insights-anonymous-user-token.js +6 -17
- package/cjs/helpers/highlight.js +15 -19
- package/cjs/helpers/index.js +23 -37
- package/cjs/helpers/insights.js +9 -21
- package/cjs/helpers/reverseHighlight.js +16 -20
- package/cjs/helpers/reverseSnippet.js +16 -20
- package/cjs/helpers/snippet.js +15 -19
- package/cjs/index.js +12 -27
- package/cjs/lib/InstantSearch.js +108 -207
- package/cjs/lib/createHelpers.js +15 -19
- package/cjs/lib/formatNumber.js +0 -1
- package/cjs/lib/infiniteHitsCache/index.js +1 -3
- package/cjs/lib/infiniteHitsCache/sessionStorage.js +14 -22
- package/cjs/lib/insights/client.js +17 -40
- package/cjs/lib/insights/index.js +9 -15
- package/cjs/lib/insights/listener.js +7 -24
- package/cjs/lib/routers/history.js +75 -117
- package/cjs/lib/routers/index.js +1 -3
- package/cjs/lib/stateMappings/index.js +2 -5
- package/cjs/lib/stateMappings/simple.js +11 -14
- package/cjs/lib/stateMappings/singleIndex.js +6 -8
- package/cjs/lib/suit.js +2 -5
- package/cjs/lib/templating/index.js +2 -6
- package/cjs/lib/templating/prepareTemplateProps.js +14 -22
- package/cjs/lib/templating/renderTemplate.js +17 -30
- package/cjs/lib/utils/capitalize.js +0 -1
- package/cjs/lib/utils/checkIndexUiState.js +19 -47
- package/cjs/lib/utils/checkRendering.js +1 -3
- package/cjs/lib/utils/clearRefinements.js +2 -9
- package/cjs/lib/utils/concatHighlightedParts.js +2 -4
- package/cjs/lib/utils/createConcurrentSafePromise.js +0 -3
- package/cjs/lib/utils/createSendEventForFacet.js +8 -15
- package/cjs/lib/utils/createSendEventForHits.js +10 -34
- package/cjs/lib/utils/debounce.js +0 -3
- package/cjs/lib/utils/defer.js +0 -11
- package/cjs/lib/utils/detect-insights-client.js +1 -3
- package/cjs/lib/utils/documentation.js +2 -5
- package/cjs/lib/utils/escape-highlight.js +13 -26
- 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 +21 -37
- package/cjs/lib/utils/getAppIdAndApiKey.js +2 -3
- package/cjs/lib/utils/getContainerNode.js +1 -7
- package/cjs/lib/utils/getHighlightFromSiblings.js +1 -7
- package/cjs/lib/utils/getHighlightedParts.js +2 -5
- package/cjs/lib/utils/getObjectType.js +0 -1
- package/cjs/lib/utils/getPropertyByPath.js +0 -1
- package/cjs/lib/utils/getRefinements.js +30 -45
- package/cjs/lib/utils/getWidgetAttribute.js +0 -6
- package/cjs/lib/utils/hits-absolute-position.js +6 -7
- package/cjs/lib/utils/hits-query-id.js +6 -8
- package/cjs/lib/utils/index.js +46 -138
- package/cjs/lib/utils/isDomElement.js +0 -1
- package/cjs/lib/utils/isEqual.js +2 -7
- 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 +6 -16
- package/cjs/lib/utils/mergeSearchParameters.js +23 -43
- package/cjs/lib/utils/noop.js +0 -1
- package/cjs/lib/utils/range.js +9 -15
- package/cjs/lib/utils/render-args.js +0 -2
- package/cjs/lib/utils/resolveSearchParameters.js +0 -3
- package/cjs/lib/utils/reverseHighlightedParts.js +7 -10
- package/cjs/lib/utils/safelyRunOnBrowser.js +7 -9
- package/cjs/lib/utils/serializer.js +1 -3
- package/cjs/lib/utils/setIndexHelperState.js +2 -7
- 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 +12 -37
- package/cjs/middlewares/createInsightsMiddleware.js +30 -54
- package/cjs/middlewares/createMetadataMiddleware.js +7 -15
- package/cjs/middlewares/createRouterMiddleware.js +16 -24
- package/cjs/middlewares/index.js +3 -9
- package/cjs/types/algoliasearch.js +0 -2
- package/cjs/types/index.js +14 -42
- package/cjs/widgets/analytics/analytics.js +22 -48
- package/cjs/widgets/answers/answers.js +32 -49
- package/cjs/widgets/breadcrumb/breadcrumb.js +31 -48
- package/cjs/widgets/clear-refinements/clear-refinements.js +28 -45
- package/cjs/widgets/configure/configure.js +9 -14
- package/cjs/widgets/configure-related-items/configure-related-items.js +9 -14
- package/cjs/widgets/current-refinements/current-refinements.js +22 -37
- package/cjs/widgets/dynamic-widgets/dynamic-widgets.js +17 -32
- package/cjs/widgets/geo-search/GeoSearchRenderer.js +50 -72
- package/cjs/widgets/geo-search/createHTMLMarker.js +34 -62
- package/cjs/widgets/geo-search/defaultTemplates.js +0 -3
- package/cjs/widgets/geo-search/geo-search.js +44 -70
- package/cjs/widgets/hierarchical-menu/defaultTemplates.js +5 -9
- package/cjs/widgets/hierarchical-menu/hierarchical-menu.js +41 -57
- package/cjs/widgets/hits/hits.js +32 -50
- package/cjs/widgets/hits-per-page/hits-per-page.js +24 -39
- package/cjs/widgets/index/index.js +71 -113
- package/cjs/widgets/index.js +47 -85
- package/cjs/widgets/infinite-hits/infinite-hits.js +39 -57
- package/cjs/widgets/menu/defaultTemplates.js +4 -8
- package/cjs/widgets/menu/menu.js +36 -53
- package/cjs/widgets/menu-select/defaultTemplates.js +2 -4
- package/cjs/widgets/menu-select/menu-select.js +31 -48
- package/cjs/widgets/numeric-menu/defaultTemplates.js +3 -5
- package/cjs/widgets/numeric-menu/numeric-menu.js +30 -47
- package/cjs/widgets/pagination/pagination.js +43 -61
- package/cjs/widgets/panel/panel.js +31 -56
- package/cjs/widgets/places/places.js +22 -34
- package/cjs/widgets/powered-by/powered-by.js +20 -34
- package/cjs/widgets/query-rule-context/query-rule-context.js +10 -18
- package/cjs/widgets/query-rule-custom-data/query-rule-custom-data.js +24 -39
- package/cjs/widgets/range-input/range-input.js +36 -60
- package/cjs/widgets/range-slider/range-slider.js +39 -61
- package/cjs/widgets/rating-menu/defaultTemplates.js +9 -16
- package/cjs/widgets/rating-menu/rating-menu.js +30 -48
- package/cjs/widgets/refinement-list/defaultTemplates.js +6 -10
- package/cjs/widgets/refinement-list/refinement-list.js +54 -72
- package/cjs/widgets/relevant-sort/relevant-sort.js +21 -37
- package/cjs/widgets/search-box/defaultTemplates.js +0 -5
- package/cjs/widgets/search-box/search-box.js +42 -57
- package/cjs/widgets/sort-by/sort-by.js +21 -36
- package/cjs/widgets/stats/defaultTemplates.js +1 -2
- package/cjs/widgets/stats/stats.js +40 -67
- package/cjs/widgets/toggle-refinement/toggle-refinement.js +29 -46
- package/cjs/widgets/voice-search/defaultTemplates.js +4 -14
- package/cjs/widgets/voice-search/voice-search.js +28 -44
- package/dist/instantsearch.development.d.ts +9 -6
- package/dist/instantsearch.development.js +1840 -3142
- package/dist/instantsearch.development.js.map +1 -1
- package/dist/instantsearch.production.d.ts +9 -6
- package/dist/instantsearch.production.min.d.ts +9 -6
- package/dist/instantsearch.production.min.js +2 -2
- package/dist/instantsearch.production.min.js.map +1 -1
- package/es/components/Answers/Answers.js +10 -13
- package/es/components/Breadcrumb/Breadcrumb.js +5 -8
- package/es/components/ClearRefinements/ClearRefinements.js +4 -7
- package/es/components/CurrentRefinements/CurrentRefinements.js +5 -10
- package/es/components/GeoSearchControls/GeoSearchButton.js +4 -6
- package/es/components/GeoSearchControls/GeoSearchControls.js +11 -14
- package/es/components/GeoSearchControls/GeoSearchToggle.js +4 -6
- package/es/components/Highlight/Highlight.js +4 -7
- package/es/components/Hits/Hits.js +12 -17
- package/es/components/InfiniteHits/InfiniteHits.js +17 -22
- package/es/components/MenuSelect/MenuSelect.js +9 -14
- package/es/components/Pagination/Pagination.js +10 -15
- package/es/components/Panel/Panel.js +8 -22
- package/es/components/PoweredBy/PoweredBy.js +4 -5
- package/es/components/QueryRuleCustomData/QueryRuleCustomData.js +2 -4
- package/es/components/RangeInput/RangeInput.js +20 -46
- package/es/components/RefinementList/RefinementList.js +24 -67
- package/es/components/RefinementList/RefinementListItem.js +8 -11
- package/es/components/RelevantSort/RelevantSort.js +4 -6
- package/es/components/ReverseHighlight/ReverseHighlight.js +4 -7
- package/es/components/ReverseSnippet/ReverseSnippet.js +4 -7
- package/es/components/SearchBox/SearchBox.js +29 -66
- package/es/components/Selector/Selector.js +3 -5
- package/es/components/Slider/Pit.js +7 -9
- package/es/components/Slider/Rheostat.js +70 -133
- package/es/components/Slider/Slider.js +34 -61
- package/es/components/Snippet/Snippet.js +4 -7
- package/es/components/Stats/Stats.js +12 -17
- package/es/components/Template/Template.js +12 -35
- package/es/components/ToggleRefinement/ToggleRefinement.js +4 -7
- package/es/components/VoiceSearch/VoiceSearch.js +8 -13
- package/es/connectors/answers/connectAnswers.js +27 -36
- package/es/connectors/autocomplete/connectAutocomplete.js +12 -24
- package/es/connectors/breadcrumb/connectBreadcrumb.js +22 -48
- package/es/connectors/clear-refinements/connectClearRefinements.js +32 -45
- package/es/connectors/configure/connectConfigure.js +11 -17
- package/es/connectors/configure-related-items/connectConfigureRelatedItems.js +16 -33
- package/es/connectors/current-refinements/connectCurrentRefinements.js +23 -57
- package/es/connectors/dynamic-widgets/connectDynamicWidgets.js +20 -36
- package/es/connectors/geo-search/connectGeoSearch.js +21 -46
- package/es/connectors/hierarchical-menu/connectHierarchicalMenu.js +44 -74
- package/es/connectors/hits/connectHits.js +14 -25
- package/es/connectors/hits-per-page/connectHitsPerPage.js +20 -38
- package/es/connectors/index.d.ts +2 -1
- package/es/connectors/index.js +6 -3
- package/es/connectors/infinite-hits/connectInfiniteHits.js +32 -62
- package/es/connectors/menu/connectMenu.js +34 -66
- package/es/connectors/numeric-menu/connectNumericMenu.js +31 -78
- package/es/connectors/pagination/Paginator.js +8 -21
- package/es/connectors/pagination/connectPagination.js +12 -22
- package/es/connectors/powered-by/connectPoweredBy.js +8 -12
- package/es/connectors/query-rules/connectQueryRules.js +37 -56
- package/es/connectors/range/connectRange.js +46 -101
- package/es/connectors/rating-menu/connectRatingMenu.js +28 -79
- package/es/connectors/refinement-list/connectRefinementList.js +43 -69
- package/es/connectors/relevant-sort/connectRelevantSort.js +8 -14
- package/es/connectors/search-box/connectSearchBox.js +11 -22
- package/es/connectors/sort-by/connectSortBy.js +15 -20
- package/es/connectors/stats/connectStats.js +8 -10
- package/es/connectors/toggle-refinement/connectToggleRefinement.js +33 -62
- package/es/connectors/toggle-refinement/types.js +1 -0
- package/es/connectors/voice-search/connectVoiceSearch.js +17 -32
- package/es/helpers/components/Highlight.js +5 -8
- package/es/helpers/components/ReverseHighlight.js +13 -16
- package/es/helpers/components/ReverseSnippet.js +13 -16
- package/es/helpers/components/Snippet.js +5 -8
- package/es/helpers/get-insights-anonymous-user-token.js +2 -10
- package/es/helpers/highlight.js +10 -10
- package/es/helpers/insights.js +3 -10
- package/es/helpers/reverseHighlight.js +10 -10
- package/es/helpers/reverseSnippet.js +10 -10
- package/es/helpers/snippet.js +10 -10
- package/es/index.js +0 -2
- package/es/lib/InstantSearch.js +83 -172
- package/es/lib/createHelpers.js +8 -9
- package/es/lib/infiniteHitsCache/sessionStorage.js +10 -16
- package/es/lib/insights/client.js +12 -33
- package/es/lib/insights/listener.js +4 -18
- package/es/lib/routers/history.js +69 -108
- package/es/lib/stateMappings/simple.js +11 -13
- package/es/lib/stateMappings/singleIndex.js +6 -7
- package/es/lib/suit.js +2 -3
- package/es/lib/templating/prepareTemplateProps.js +13 -20
- package/es/lib/templating/renderTemplate.js +12 -21
- package/es/lib/utils/checkIndexUiState.js +19 -41
- 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 +9 -18
- 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 +21 -35
- 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 +28 -41
- package/es/lib/utils/getWidgetAttribute.js +0 -5
- package/es/lib/utils/hits-absolute-position.js +6 -6
- package/es/lib/utils/hits-query-id.js +6 -7
- package/es/lib/utils/isEqual.js +2 -6
- package/es/lib/utils/isPlainObject.js +3 -10
- package/es/lib/utils/logger.js +4 -14
- package/es/lib/utils/mergeSearchParameters.js +21 -38
- package/es/lib/utils/range.js +9 -14
- package/es/lib/utils/resolveSearchParameters.js +0 -2
- package/es/lib/utils/reverseHighlightedParts.js +6 -7
- 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 +12 -36
- package/es/lib/voiceSearchHelper/types.js +1 -0
- package/es/middlewares/createInsightsMiddleware.js +21 -42
- package/es/middlewares/createMetadataMiddleware.js +3 -9
- package/es/middlewares/createRouterMiddleware.js +12 -14
- package/es/types/algoliasearch.js +1 -0
- package/es/types/component.js +1 -0
- package/es/types/connector.js +1 -0
- package/es/types/index.js +9 -5
- package/es/types/insights.js +1 -0
- package/es/types/instantsearch.js +1 -0
- package/es/types/middleware.js +1 -0
- package/es/types/render-state.js +1 -0
- package/es/types/results.js +1 -0
- package/es/types/router.js +1 -0
- package/es/types/templates.js +1 -0
- package/es/types/ui-state.js +1 -0
- package/es/types/utils.js +1 -0
- package/es/types/widget-factory.js +1 -0
- package/es/types/widget.js +1 -0
- package/es/widgets/analytics/analytics.js +19 -43
- package/es/widgets/answers/answers.js +23 -30
- package/es/widgets/breadcrumb/breadcrumb.js +22 -29
- package/es/widgets/clear-refinements/clear-refinements.js +19 -26
- package/es/widgets/configure/configure.js +7 -7
- package/es/widgets/configure-related-items/configure-related-items.js +6 -8
- package/es/widgets/current-refinements/current-refinements.js +16 -23
- package/es/widgets/dynamic-widgets/dynamic-widgets.js +11 -21
- package/es/widgets/geo-search/GeoSearchRenderer.d.js +1 -0
- package/es/widgets/geo-search/GeoSearchRenderer.js +47 -65
- package/es/widgets/geo-search/createHTMLMarker.d.ts +1 -0
- package/es/widgets/geo-search/createHTMLMarker.js +34 -61
- package/es/widgets/geo-search/defaultTemplates.js +0 -2
- package/es/widgets/geo-search/geo-search.d.ts +1 -0
- package/es/widgets/geo-search/geo-search.js +34 -50
- package/es/widgets/hierarchical-menu/defaultTemplates.js +4 -4
- package/es/widgets/hierarchical-menu/hierarchical-menu.js +32 -38
- package/es/widgets/hits/hits.js +20 -27
- package/es/widgets/hits-per-page/hits-per-page.js +17 -24
- package/es/widgets/index/index.js +55 -93
- package/es/widgets/index.d.ts +2 -1
- package/es/widgets/index.js +4 -3
- package/es/widgets/infinite-hits/infinite-hits.js +27 -34
- package/es/widgets/menu/defaultTemplates.js +3 -3
- package/es/widgets/menu/menu.js +27 -34
- package/es/widgets/menu-select/defaultTemplates.js +1 -1
- package/es/widgets/menu-select/menu-select.js +22 -29
- package/es/widgets/numeric-menu/defaultTemplates.js +3 -3
- package/es/widgets/numeric-menu/numeric-menu.js +21 -28
- package/es/widgets/pagination/pagination.js +36 -46
- package/es/widgets/panel/panel.js +24 -42
- package/es/widgets/places/places.js +22 -33
- package/es/widgets/powered-by/powered-by.js +14 -20
- package/es/widgets/query-rule-context/query-rule-context.js +6 -10
- package/es/widgets/query-rule-custom-data/query-rule-custom-data.js +17 -24
- package/es/widgets/range-input/range-input.js +28 -43
- package/es/widgets/range-slider/range-slider.js +33 -47
- package/es/widgets/rating-menu/defaultTemplates.js +8 -12
- package/es/widgets/rating-menu/rating-menu.js +21 -29
- package/es/widgets/refinement-list/defaultTemplates.js +5 -5
- package/es/widgets/refinement-list/refinement-list.js +43 -50
- package/es/widgets/relevant-sort/relevant-sort.js +14 -21
- package/es/widgets/search-box/defaultTemplates.js +0 -4
- package/es/widgets/search-box/search-box.js +35 -41
- package/es/widgets/sort-by/sort-by.js +15 -22
- package/es/widgets/stats/stats.js +30 -47
- package/es/widgets/toggle-refinement/toggle-refinement.js +20 -27
- package/es/widgets/voice-search/defaultTemplates.js +4 -13
- package/es/widgets/voice-search/voice-search.js +21 -28
- 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/scripts/transforms/__tests__/addWidget-to-addWidgets.test.js +1 -0
- package/CHANGELOG.md +0 -3693
|
@@ -1,21 +1,15 @@
|
|
|
1
|
-
function
|
|
2
|
-
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
4
|
-
|
|
5
|
-
function
|
|
6
|
-
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
+
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; }
|
|
3
|
+
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; }
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
6
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
7
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
8
|
-
|
|
9
8
|
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."); }
|
|
10
|
-
|
|
11
9
|
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); }
|
|
12
|
-
|
|
13
|
-
function
|
|
14
|
-
|
|
15
|
-
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; }
|
|
16
|
-
|
|
10
|
+
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; }
|
|
11
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
17
12
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
18
|
-
|
|
19
13
|
import { checkRendering, createDocumentationMessageGenerator, isFiniteNumber, find, noop } from "../../lib/utils/index.js";
|
|
20
14
|
var withUsage = createDocumentationMessageGenerator({
|
|
21
15
|
name: 'range-input',
|
|
@@ -25,17 +19,17 @@ var withUsage = createDocumentationMessageGenerator({
|
|
|
25
19
|
connector: true
|
|
26
20
|
});
|
|
27
21
|
var $$type = 'ais.range';
|
|
28
|
-
|
|
29
22
|
function toPrecision(_ref) {
|
|
30
23
|
var min = _ref.min,
|
|
31
|
-
|
|
32
|
-
|
|
24
|
+
max = _ref.max,
|
|
25
|
+
precision = _ref.precision;
|
|
33
26
|
var pow = Math.pow(10, precision);
|
|
34
27
|
return {
|
|
35
28
|
min: min ? Math.floor(min * pow) / pow : min,
|
|
36
29
|
max: max ? Math.ceil(max * pow) / pow : max
|
|
37
30
|
};
|
|
38
31
|
}
|
|
32
|
+
|
|
39
33
|
/**
|
|
40
34
|
* **Range** connector provides the logic to create custom widget that will let
|
|
41
35
|
* the user refine results using a numeric range.
|
|
@@ -43,32 +37,26 @@ function toPrecision(_ref) {
|
|
|
43
37
|
* This connectors provides a `refine()` function that accepts bounds. It will also provide
|
|
44
38
|
* information about the min and max bounds for the current result set.
|
|
45
39
|
*/
|
|
46
|
-
|
|
47
|
-
|
|
48
40
|
var connectRange = function connectRange(renderFn) {
|
|
49
41
|
var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;
|
|
50
42
|
checkRendering(renderFn, withUsage());
|
|
51
43
|
return function (widgetParams) {
|
|
52
44
|
var _ref2 = widgetParams || {},
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
45
|
+
_ref2$attribute = _ref2.attribute,
|
|
46
|
+
attribute = _ref2$attribute === void 0 ? '' : _ref2$attribute,
|
|
47
|
+
minBound = _ref2.min,
|
|
48
|
+
maxBound = _ref2.max,
|
|
49
|
+
_ref2$precision = _ref2.precision,
|
|
50
|
+
precision = _ref2$precision === void 0 ? 0 : _ref2$precision;
|
|
60
51
|
if (!attribute) {
|
|
61
52
|
throw new Error(withUsage('The `attribute` option is required.'));
|
|
62
53
|
}
|
|
63
|
-
|
|
64
54
|
if (isFiniteNumber(minBound) && isFiniteNumber(maxBound) && minBound > maxBound) {
|
|
65
55
|
throw new Error(withUsage("The `max` option can't be lower than `min`."));
|
|
66
56
|
}
|
|
67
|
-
|
|
68
57
|
var formatToNumber = function formatToNumber(v) {
|
|
69
58
|
return Number(Number(v).toFixed(precision));
|
|
70
59
|
};
|
|
71
|
-
|
|
72
60
|
var rangeFormatter = {
|
|
73
61
|
from: function from(v) {
|
|
74
62
|
return v.toLocaleString();
|
|
@@ -76,34 +64,29 @@ var connectRange = function connectRange(renderFn) {
|
|
|
76
64
|
to: function to(v) {
|
|
77
65
|
return formatToNumber(v).toLocaleString();
|
|
78
66
|
}
|
|
79
|
-
};
|
|
67
|
+
};
|
|
80
68
|
|
|
69
|
+
// eslint-disable-next-line complexity
|
|
81
70
|
var getRefinedState = function getRefinedState(helper, currentRange, nextMin, nextMax) {
|
|
82
71
|
var resolvedState = helper.state;
|
|
83
72
|
var currentRangeMin = currentRange.min,
|
|
84
|
-
|
|
85
|
-
|
|
73
|
+
currentRangeMax = currentRange.max;
|
|
86
74
|
var _ref3 = resolvedState.getNumericRefinement(attribute, '>=') || [],
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
75
|
+
_ref4 = _slicedToArray(_ref3, 1),
|
|
76
|
+
min = _ref4[0];
|
|
90
77
|
var _ref5 = resolvedState.getNumericRefinement(attribute, '<=') || [],
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
78
|
+
_ref6 = _slicedToArray(_ref5, 1),
|
|
79
|
+
max = _ref6[0];
|
|
94
80
|
var isResetMin = nextMin === undefined || nextMin === '';
|
|
95
81
|
var isResetMax = nextMax === undefined || nextMax === '';
|
|
96
|
-
|
|
97
82
|
var _toPrecision = toPrecision({
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
83
|
+
min: !isResetMin ? parseFloat(nextMin) : undefined,
|
|
84
|
+
max: !isResetMax ? parseFloat(nextMax) : undefined,
|
|
85
|
+
precision: precision
|
|
86
|
+
}),
|
|
87
|
+
nextMinAsNumber = _toPrecision.min,
|
|
88
|
+
nextMaxAsNumber = _toPrecision.max;
|
|
105
89
|
var newNextMin;
|
|
106
|
-
|
|
107
90
|
if (!isFiniteNumber(minBound) && currentRangeMin === nextMinAsNumber) {
|
|
108
91
|
newNextMin = undefined;
|
|
109
92
|
} else if (isFiniteNumber(minBound) && isResetMin) {
|
|
@@ -111,9 +94,7 @@ var connectRange = function connectRange(renderFn) {
|
|
|
111
94
|
} else {
|
|
112
95
|
newNextMin = nextMinAsNumber;
|
|
113
96
|
}
|
|
114
|
-
|
|
115
97
|
var newNextMax;
|
|
116
|
-
|
|
117
98
|
if (!isFiniteNumber(maxBound) && currentRangeMax === nextMaxAsNumber) {
|
|
118
99
|
newNextMax = undefined;
|
|
119
100
|
} else if (isFiniteNumber(maxBound) && isResetMax) {
|
|
@@ -121,7 +102,6 @@ var connectRange = function connectRange(renderFn) {
|
|
|
121
102
|
} else {
|
|
122
103
|
newNextMax = nextMaxAsNumber;
|
|
123
104
|
}
|
|
124
|
-
|
|
125
105
|
var isResetNewNextMin = newNextMin === undefined;
|
|
126
106
|
var isGreaterThanCurrentRange = isFiniteNumber(currentRangeMin) && currentRangeMin <= newNextMin;
|
|
127
107
|
var isMinValid = isResetNewNextMin || isFiniteNumber(newNextMin) && (!isFiniteNumber(currentRangeMin) || isGreaterThanCurrentRange);
|
|
@@ -130,24 +110,18 @@ var connectRange = function connectRange(renderFn) {
|
|
|
130
110
|
var isMaxValid = isResetNewNextMax || isFiniteNumber(newNextMax) && (!isFiniteNumber(currentRangeMax) || isLowerThanRange);
|
|
131
111
|
var hasMinChange = min !== newNextMin;
|
|
132
112
|
var hasMaxChange = max !== newNextMax;
|
|
133
|
-
|
|
134
113
|
if ((hasMinChange || hasMaxChange) && isMinValid && isMaxValid) {
|
|
135
114
|
resolvedState = resolvedState.removeNumericRefinement(attribute);
|
|
136
|
-
|
|
137
115
|
if (isFiniteNumber(newNextMin)) {
|
|
138
116
|
resolvedState = resolvedState.addNumericRefinement(attribute, '>=', newNextMin);
|
|
139
117
|
}
|
|
140
|
-
|
|
141
118
|
if (isFiniteNumber(newNextMax)) {
|
|
142
119
|
resolvedState = resolvedState.addNumericRefinement(attribute, '<=', newNextMax);
|
|
143
120
|
}
|
|
144
|
-
|
|
145
121
|
return resolvedState.resetPage();
|
|
146
122
|
}
|
|
147
|
-
|
|
148
123
|
return null;
|
|
149
124
|
};
|
|
150
|
-
|
|
151
125
|
var createSendEvent = function createSendEvent(instantSearchInstance) {
|
|
152
126
|
return function () {
|
|
153
127
|
if (arguments.length === 1) {
|
|
@@ -156,10 +130,8 @@ var connectRange = function connectRange(renderFn) {
|
|
|
156
130
|
}
|
|
157
131
|
};
|
|
158
132
|
};
|
|
159
|
-
|
|
160
133
|
function _getCurrentRange(stats) {
|
|
161
134
|
var min;
|
|
162
|
-
|
|
163
135
|
if (isFiniteNumber(minBound)) {
|
|
164
136
|
min = minBound;
|
|
165
137
|
} else if (isFiniteNumber(stats.min)) {
|
|
@@ -167,9 +139,7 @@ var connectRange = function connectRange(renderFn) {
|
|
|
167
139
|
} else {
|
|
168
140
|
min = 0;
|
|
169
141
|
}
|
|
170
|
-
|
|
171
142
|
var max;
|
|
172
|
-
|
|
173
143
|
if (isFiniteNumber(maxBound)) {
|
|
174
144
|
max = maxBound;
|
|
175
145
|
} else if (isFiniteNumber(stats.max)) {
|
|
@@ -177,43 +147,35 @@ var connectRange = function connectRange(renderFn) {
|
|
|
177
147
|
} else {
|
|
178
148
|
max = 0;
|
|
179
149
|
}
|
|
180
|
-
|
|
181
150
|
return toPrecision({
|
|
182
151
|
min: min,
|
|
183
152
|
max: max,
|
|
184
153
|
precision: precision
|
|
185
154
|
});
|
|
186
155
|
}
|
|
187
|
-
|
|
188
156
|
function _getCurrentRefinement(helper) {
|
|
189
157
|
var _ref7 = helper.getNumericRefinement(attribute, '>=') || [],
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
158
|
+
_ref8 = _slicedToArray(_ref7, 1),
|
|
159
|
+
minValue = _ref8[0];
|
|
193
160
|
var _ref9 = helper.getNumericRefinement(attribute, '<=') || [],
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
161
|
+
_ref10 = _slicedToArray(_ref9, 1),
|
|
162
|
+
maxValue = _ref10[0];
|
|
197
163
|
var min = isFiniteNumber(minValue) ? minValue : -Infinity;
|
|
198
164
|
var max = isFiniteNumber(maxValue) ? maxValue : Infinity;
|
|
199
165
|
return [min, max];
|
|
200
166
|
}
|
|
201
|
-
|
|
202
167
|
function _refine(helper, currentRange) {
|
|
203
168
|
return function () {
|
|
204
169
|
var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [undefined, undefined],
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
170
|
+
_ref12 = _slicedToArray(_ref11, 2),
|
|
171
|
+
nextMin = _ref12[0],
|
|
172
|
+
nextMax = _ref12[1];
|
|
209
173
|
var refinedState = getRefinedState(helper, currentRange, nextMin, nextMax);
|
|
210
|
-
|
|
211
174
|
if (refinedState) {
|
|
212
175
|
helper.setState(refinedState).search();
|
|
213
176
|
}
|
|
214
177
|
};
|
|
215
178
|
}
|
|
216
|
-
|
|
217
179
|
return {
|
|
218
180
|
$$type: $$type,
|
|
219
181
|
init: function init(initOptions) {
|
|
@@ -233,8 +195,8 @@ var connectRange = function connectRange(renderFn) {
|
|
|
233
195
|
},
|
|
234
196
|
getWidgetRenderState: function getWidgetRenderState(_ref13) {
|
|
235
197
|
var results = _ref13.results,
|
|
236
|
-
|
|
237
|
-
|
|
198
|
+
helper = _ref13.helper,
|
|
199
|
+
instantSearchInstance = _ref13.instantSearchInstance;
|
|
238
200
|
var facetsFromResults = results && results.disjunctiveFacets || [];
|
|
239
201
|
var facet = find(facetsFromResults, function (facetResult) {
|
|
240
202
|
return facetResult.name === attribute;
|
|
@@ -243,13 +205,9 @@ var connectRange = function connectRange(renderFn) {
|
|
|
243
205
|
min: undefined,
|
|
244
206
|
max: undefined
|
|
245
207
|
};
|
|
246
|
-
|
|
247
208
|
var currentRange = _getCurrentRange(stats);
|
|
248
|
-
|
|
249
209
|
var start = _getCurrentRefinement(helper);
|
|
250
|
-
|
|
251
210
|
var refine;
|
|
252
|
-
|
|
253
211
|
if (!results) {
|
|
254
212
|
// On first render pass an empty range
|
|
255
213
|
// to be able to bypass the validation
|
|
@@ -261,7 +219,6 @@ var connectRange = function connectRange(renderFn) {
|
|
|
261
219
|
} else {
|
|
262
220
|
refine = _refine(helper, currentRange);
|
|
263
221
|
}
|
|
264
|
-
|
|
265
222
|
return {
|
|
266
223
|
refine: refine,
|
|
267
224
|
canRefine: currentRange.min !== currentRange.max,
|
|
@@ -281,17 +238,14 @@ var connectRange = function connectRange(renderFn) {
|
|
|
281
238
|
},
|
|
282
239
|
getWidgetUiState: function getWidgetUiState(uiState, _ref15) {
|
|
283
240
|
var searchParameters = _ref15.searchParameters;
|
|
284
|
-
|
|
285
241
|
var _searchParameters$get = searchParameters.getNumericRefinements(attribute),
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
242
|
+
_searchParameters$get2 = _searchParameters$get['>='],
|
|
243
|
+
min = _searchParameters$get2 === void 0 ? [] : _searchParameters$get2,
|
|
244
|
+
_searchParameters$get3 = _searchParameters$get['<='],
|
|
245
|
+
max = _searchParameters$get3 === void 0 ? [] : _searchParameters$get3;
|
|
291
246
|
if (min.length === 0 && max.length === 0) {
|
|
292
247
|
return uiState;
|
|
293
248
|
}
|
|
294
|
-
|
|
295
249
|
return _objectSpread(_objectSpread({}, uiState), {}, {
|
|
296
250
|
range: _objectSpread(_objectSpread({}, uiState.range), {}, _defineProperty({}, attribute, "".concat(min, ":").concat(max)))
|
|
297
251
|
});
|
|
@@ -301,40 +255,31 @@ var connectRange = function connectRange(renderFn) {
|
|
|
301
255
|
var widgetSearchParameters = searchParameters.addDisjunctiveFacet(attribute).setQueryParameters({
|
|
302
256
|
numericRefinements: _objectSpread(_objectSpread({}, searchParameters.numericRefinements), {}, _defineProperty({}, attribute, {}))
|
|
303
257
|
});
|
|
304
|
-
|
|
305
258
|
if (isFiniteNumber(minBound)) {
|
|
306
259
|
widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '>=', minBound);
|
|
307
260
|
}
|
|
308
|
-
|
|
309
261
|
if (isFiniteNumber(maxBound)) {
|
|
310
262
|
widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '<=', maxBound);
|
|
311
263
|
}
|
|
312
|
-
|
|
313
264
|
var value = uiState.range && uiState.range[attribute];
|
|
314
|
-
|
|
315
265
|
if (!value || value.indexOf(':') === -1) {
|
|
316
266
|
return widgetSearchParameters;
|
|
317
267
|
}
|
|
318
|
-
|
|
319
268
|
var _value$split$map = value.split(':').map(parseFloat),
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
269
|
+
_value$split$map2 = _slicedToArray(_value$split$map, 2),
|
|
270
|
+
lowerBound = _value$split$map2[0],
|
|
271
|
+
upperBound = _value$split$map2[1];
|
|
324
272
|
if (isFiniteNumber(lowerBound) && (!isFiniteNumber(minBound) || minBound < lowerBound)) {
|
|
325
273
|
widgetSearchParameters = widgetSearchParameters.removeNumericRefinement(attribute, '>=');
|
|
326
274
|
widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '>=', lowerBound);
|
|
327
275
|
}
|
|
328
|
-
|
|
329
276
|
if (isFiniteNumber(upperBound) && (!isFiniteNumber(maxBound) || upperBound < maxBound)) {
|
|
330
277
|
widgetSearchParameters = widgetSearchParameters.removeNumericRefinement(attribute, '<=');
|
|
331
278
|
widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '<=', upperBound);
|
|
332
279
|
}
|
|
333
|
-
|
|
334
280
|
return widgetSearchParameters;
|
|
335
281
|
}
|
|
336
282
|
};
|
|
337
283
|
};
|
|
338
284
|
};
|
|
339
|
-
|
|
340
285
|
export default connectRange;
|
|
@@ -1,29 +1,19 @@
|
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
1
2
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
2
|
-
|
|
3
3
|
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
|
-
|
|
4
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
7
5
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
8
|
-
|
|
9
|
-
function
|
|
10
|
-
|
|
11
|
-
function
|
|
12
|
-
|
|
13
|
-
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
|
-
|
|
6
|
+
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; }
|
|
7
|
+
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; }
|
|
8
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
9
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
10
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
15
11
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
16
|
-
|
|
17
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."); }
|
|
18
|
-
|
|
19
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); }
|
|
20
|
-
|
|
21
|
-
function
|
|
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
|
-
|
|
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; }
|
|
15
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
25
16
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
26
|
-
|
|
27
17
|
import { checkRendering, createDocumentationLink, createDocumentationMessageGenerator, noop, warning } from "../../lib/utils/index.js";
|
|
28
18
|
var withUsage = createDocumentationMessageGenerator({
|
|
29
19
|
name: 'rating-menu',
|
|
@@ -32,33 +22,27 @@ var withUsage = createDocumentationMessageGenerator({
|
|
|
32
22
|
var $$type = 'ais.ratingMenu';
|
|
33
23
|
var MAX_VALUES_PER_FACET_API_LIMIT = 1000;
|
|
34
24
|
var STEP = 1;
|
|
35
|
-
|
|
36
25
|
var createSendEvent = function createSendEvent(_ref) {
|
|
37
26
|
var instantSearchInstance = _ref.instantSearchInstance,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
27
|
+
helper = _ref.helper,
|
|
28
|
+
getRefinedStar = _ref.getRefinedStar,
|
|
29
|
+
attribute = _ref.attribute;
|
|
41
30
|
return function () {
|
|
42
31
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
43
32
|
args[_key] = arguments[_key];
|
|
44
33
|
}
|
|
45
|
-
|
|
46
34
|
if (args.length === 1) {
|
|
47
35
|
instantSearchInstance.sendEventToInsights(args[0]);
|
|
48
36
|
return;
|
|
49
37
|
}
|
|
50
|
-
|
|
51
38
|
var eventType = args[0],
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
39
|
+
facetValue = args[1],
|
|
40
|
+
_args$ = args[2],
|
|
41
|
+
eventName = _args$ === void 0 ? 'Filter Applied' : _args$;
|
|
56
42
|
if (eventType !== 'click') {
|
|
57
43
|
return;
|
|
58
44
|
}
|
|
59
|
-
|
|
60
45
|
var isRefined = getRefinedStar() === Number(facetValue);
|
|
61
|
-
|
|
62
46
|
if (!isRefined) {
|
|
63
47
|
instantSearchInstance.sendEventToInsights({
|
|
64
48
|
insightsMethod: 'clickedFilters',
|
|
@@ -74,7 +58,6 @@ var createSendEvent = function createSendEvent(_ref) {
|
|
|
74
58
|
}
|
|
75
59
|
};
|
|
76
60
|
};
|
|
77
|
-
|
|
78
61
|
/**
|
|
79
62
|
* **StarRating** connector provides the logic to build a custom widget that will let
|
|
80
63
|
* the user refine search results based on ratings.
|
|
@@ -88,85 +71,68 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
88
71
|
checkRendering(renderFn, withUsage());
|
|
89
72
|
return function (widgetParams) {
|
|
90
73
|
var _ref2 = widgetParams || {},
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
74
|
+
attribute = _ref2.attribute,
|
|
75
|
+
_ref2$max = _ref2.max,
|
|
76
|
+
max = _ref2$max === void 0 ? 5 : _ref2$max;
|
|
95
77
|
var sendEvent;
|
|
96
|
-
|
|
97
78
|
if (!attribute) {
|
|
98
79
|
throw new Error(withUsage('The `attribute` option is required.'));
|
|
99
80
|
}
|
|
100
|
-
|
|
101
81
|
var _getRefinedStar = function getRefinedStar(state) {
|
|
102
82
|
var _values$;
|
|
103
|
-
|
|
104
83
|
var values = state.getNumericRefinements(attribute);
|
|
105
|
-
|
|
106
84
|
if (!((_values$ = values['>=']) !== null && _values$ !== void 0 && _values$.length)) {
|
|
107
85
|
return undefined;
|
|
108
86
|
}
|
|
109
|
-
|
|
110
87
|
return values['>='][0];
|
|
111
88
|
};
|
|
112
|
-
|
|
113
89
|
var getFacetsMaxDecimalPlaces = function getFacetsMaxDecimalPlaces(facetResults) {
|
|
114
90
|
var maxDecimalPlaces = 0;
|
|
115
91
|
facetResults.forEach(function (facetResult) {
|
|
116
92
|
var _facetResult$name$spl = facetResult.name.split('.'),
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
93
|
+
_facetResult$name$spl2 = _slicedToArray(_facetResult$name$spl, 2),
|
|
94
|
+
_facetResult$name$spl3 = _facetResult$name$spl2[1],
|
|
95
|
+
decimal = _facetResult$name$spl3 === void 0 ? '' : _facetResult$name$spl3;
|
|
121
96
|
maxDecimalPlaces = Math.max(maxDecimalPlaces, decimal.length);
|
|
122
97
|
});
|
|
123
98
|
return maxDecimalPlaces;
|
|
124
99
|
};
|
|
125
|
-
|
|
126
100
|
var getFacetValuesWarningMessage = function getFacetValuesWarningMessage(_ref3) {
|
|
127
101
|
var maxDecimalPlaces = _ref3.maxDecimalPlaces,
|
|
128
|
-
|
|
129
|
-
|
|
102
|
+
maxFacets = _ref3.maxFacets,
|
|
103
|
+
maxValuesPerFacet = _ref3.maxValuesPerFacet;
|
|
130
104
|
var maxDecimalPlacesInRange = Math.max(0, Math.floor(Math.log10(MAX_VALUES_PER_FACET_API_LIMIT / max)));
|
|
131
105
|
var maxFacetsInRange = Math.min(MAX_VALUES_PER_FACET_API_LIMIT, Math.pow(10, maxDecimalPlacesInRange) * max);
|
|
132
106
|
var solutions = [];
|
|
133
|
-
|
|
134
107
|
if (maxFacets > MAX_VALUES_PER_FACET_API_LIMIT) {
|
|
135
108
|
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
109
|
}
|
|
137
|
-
|
|
138
110
|
if (maxValuesPerFacet < maxFacetsInRange) {
|
|
139
111
|
solutions.push("- Increase the maximum number of facet values to ".concat(maxFacetsInRange, " using the \"configure\" widget ").concat(createDocumentationLink({
|
|
140
112
|
name: 'configure'
|
|
141
113
|
}), " and the \"maxValuesPerFacet\" parameter https://www.algolia.com/doc/api-reference/api-parameters/maxValuesPerFacet/"));
|
|
142
114
|
}
|
|
143
|
-
|
|
144
115
|
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
116
|
};
|
|
146
|
-
|
|
147
117
|
function getRefinedState(state, facetValue) {
|
|
148
118
|
var isRefined = _getRefinedStar(state) === Number(facetValue);
|
|
149
119
|
var emptyState = state.resetPage().removeNumericRefinement(attribute);
|
|
150
|
-
|
|
151
120
|
if (!isRefined) {
|
|
152
121
|
return emptyState.addNumericRefinement(attribute, '<=', max).addNumericRefinement(attribute, '>=', Number(facetValue));
|
|
153
122
|
}
|
|
154
|
-
|
|
155
123
|
return emptyState;
|
|
156
124
|
}
|
|
157
|
-
|
|
158
125
|
var toggleRefinement = function toggleRefinement(helper, facetValue) {
|
|
159
126
|
sendEvent('click', facetValue);
|
|
160
127
|
helper.setState(getRefinedState(helper.state, facetValue)).search();
|
|
161
128
|
};
|
|
162
|
-
|
|
163
129
|
var connectorState = {
|
|
164
130
|
toggleRefinementFactory: function toggleRefinementFactory(helper) {
|
|
165
131
|
return toggleRefinement.bind(null, helper);
|
|
166
132
|
},
|
|
167
133
|
createURLFactory: function createURLFactory(_ref4) {
|
|
168
134
|
var state = _ref4.state,
|
|
169
|
-
|
|
135
|
+
createURL = _ref4.createURL;
|
|
170
136
|
return function (value) {
|
|
171
137
|
return createURL(getRefinedState(state, value));
|
|
172
138
|
};
|
|
@@ -193,12 +159,11 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
193
159
|
},
|
|
194
160
|
getWidgetRenderState: function getWidgetRenderState(_ref5) {
|
|
195
161
|
var helper = _ref5.helper,
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
162
|
+
results = _ref5.results,
|
|
163
|
+
state = _ref5.state,
|
|
164
|
+
instantSearchInstance = _ref5.instantSearchInstance,
|
|
165
|
+
createURL = _ref5.createURL;
|
|
200
166
|
var facetValues = [];
|
|
201
|
-
|
|
202
167
|
if (!sendEvent) {
|
|
203
168
|
sendEvent = createSendEvent({
|
|
204
169
|
instantSearchInstance: instantSearchInstance,
|
|
@@ -209,11 +174,9 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
209
174
|
attribute: attribute
|
|
210
175
|
});
|
|
211
176
|
}
|
|
212
|
-
|
|
213
177
|
var refinementIsApplied = false;
|
|
214
178
|
var totalCount = 0;
|
|
215
179
|
var facetResults = results === null || results === void 0 ? void 0 : results.getFacetValues(attribute, {});
|
|
216
|
-
|
|
217
180
|
if (results && facetResults) {
|
|
218
181
|
var maxValuesPerFacet = facetResults.length;
|
|
219
182
|
var maxDecimalPlaces = getFacetsMaxDecimalPlaces(facetResults);
|
|
@@ -223,9 +186,7 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
223
186
|
maxFacets: maxFacets,
|
|
224
187
|
maxValuesPerFacet: maxValuesPerFacet
|
|
225
188
|
})) : void 0;
|
|
226
|
-
|
|
227
189
|
var refinedStar = _getRefinedStar(state);
|
|
228
|
-
|
|
229
190
|
var _loop = function _loop(star) {
|
|
230
191
|
var isRefined = refinedStar === star;
|
|
231
192
|
refinementIsApplied = refinementIsApplied || isRefined;
|
|
@@ -237,17 +198,14 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
237
198
|
return sum + current;
|
|
238
199
|
}, 0);
|
|
239
200
|
totalCount += count;
|
|
240
|
-
|
|
241
201
|
if (refinedStar && !isRefined && count === 0) {
|
|
242
202
|
// skip count==0 when at least 1 refinement is enabled
|
|
243
203
|
// eslint-disable-next-line no-continue
|
|
244
204
|
return "continue";
|
|
245
205
|
}
|
|
246
|
-
|
|
247
206
|
var stars = _toConsumableArray(new Array(Math.floor(max / STEP))).map(function (_v, i) {
|
|
248
207
|
return i * STEP < star;
|
|
249
208
|
});
|
|
250
|
-
|
|
251
209
|
facetValues.push({
|
|
252
210
|
stars: stars,
|
|
253
211
|
name: String(star),
|
|
@@ -257,14 +215,11 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
257
215
|
isRefined: isRefined
|
|
258
216
|
});
|
|
259
217
|
};
|
|
260
|
-
|
|
261
218
|
for (var star = STEP; star < max; star += STEP) {
|
|
262
219
|
var _ret = _loop(star);
|
|
263
|
-
|
|
264
220
|
if (_ret === "continue") continue;
|
|
265
221
|
}
|
|
266
222
|
}
|
|
267
|
-
|
|
268
223
|
facetValues = facetValues.reverse();
|
|
269
224
|
var hasNoResults = results ? results.nbHits === 0 : true;
|
|
270
225
|
return {
|
|
@@ -287,13 +242,10 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
287
242
|
},
|
|
288
243
|
getWidgetUiState: function getWidgetUiState(uiState, _ref7) {
|
|
289
244
|
var searchParameters = _ref7.searchParameters;
|
|
290
|
-
|
|
291
245
|
var value = _getRefinedStar(searchParameters);
|
|
292
|
-
|
|
293
246
|
if (typeof value !== 'number') {
|
|
294
247
|
return uiState;
|
|
295
248
|
}
|
|
296
|
-
|
|
297
249
|
return _objectSpread(_objectSpread({}, uiState), {}, {
|
|
298
250
|
ratingMenu: _objectSpread(_objectSpread({}, uiState.ratingMenu), {}, _defineProperty({}, attribute, value))
|
|
299
251
|
});
|
|
@@ -303,17 +255,14 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
303
255
|
var value = uiState.ratingMenu && uiState.ratingMenu[attribute];
|
|
304
256
|
var withoutRefinements = searchParameters.clearRefinements(attribute);
|
|
305
257
|
var withDisjunctiveFacet = withoutRefinements.addDisjunctiveFacet(attribute);
|
|
306
|
-
|
|
307
258
|
if (!value) {
|
|
308
259
|
return withDisjunctiveFacet.setQueryParameters({
|
|
309
260
|
numericRefinements: _objectSpread(_objectSpread({}, withDisjunctiveFacet.numericRefinements), {}, _defineProperty({}, attribute, {}))
|
|
310
261
|
});
|
|
311
262
|
}
|
|
312
|
-
|
|
313
263
|
return withDisjunctiveFacet.addNumericRefinement(attribute, '<=', max).addNumericRefinement(attribute, '>=', value);
|
|
314
264
|
}
|
|
315
265
|
};
|
|
316
266
|
};
|
|
317
267
|
};
|
|
318
|
-
|
|
319
268
|
export default connectRatingMenu;
|