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,27 +1,25 @@
|
|
|
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
|
import { checkRendering, aroundLatLngToPosition, insideBoundingBoxToBoundingBox, createDocumentationMessageGenerator, createSendEventForHits, noop } from "../../lib/utils/index.js";
|
|
8
8
|
var withUsage = createDocumentationMessageGenerator({
|
|
9
9
|
name: 'geo-search',
|
|
10
10
|
connector: true
|
|
11
|
-
});
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
// in this connector, we assume insideBoundingBox is only a string,
|
|
12
14
|
// even though in the helper it's defined as number[][] alone.
|
|
13
15
|
// This can be done, since the connector assumes "control" of the parameter
|
|
14
|
-
|
|
15
16
|
function getBoundingBoxAsString(state) {
|
|
16
17
|
return state.insideBoundingBox || '';
|
|
17
18
|
}
|
|
18
|
-
|
|
19
19
|
function setBoundingBoxAsString(state, value) {
|
|
20
20
|
return state.setQueryParameter('insideBoundingBox', value);
|
|
21
21
|
}
|
|
22
|
-
|
|
23
22
|
var $$type = 'ais.geoSearch';
|
|
24
|
-
|
|
25
23
|
/**
|
|
26
24
|
* The **GeoSearch** connector provides the logic to build a widget that will display the results on a map. It also provides a way to search for results based on their position. The connector provides functions to manage the search experience (search on map interaction or control the interaction for example).
|
|
27
25
|
*
|
|
@@ -36,13 +34,12 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
|
36
34
|
checkRendering(renderFn, withUsage());
|
|
37
35
|
return function (widgetParams) {
|
|
38
36
|
var _ref = widgetParams || {},
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
37
|
+
_ref$enableRefineOnMa = _ref.enableRefineOnMapMove,
|
|
38
|
+
enableRefineOnMapMove = _ref$enableRefineOnMa === void 0 ? true : _ref$enableRefineOnMa,
|
|
39
|
+
_ref$transformItems = _ref.transformItems,
|
|
40
|
+
transformItems = _ref$transformItems === void 0 ? function (items) {
|
|
41
|
+
return items;
|
|
42
|
+
} : _ref$transformItems;
|
|
46
43
|
var widgetState = {
|
|
47
44
|
isRefineOnMapMove: enableRefineOnMapMove,
|
|
48
45
|
// @MAJOR hasMapMoveSinceLastRefine -> hasMapMovedSinceLastRefine
|
|
@@ -52,72 +49,59 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
|
52
49
|
internalToggleRefineOnMapMove: noop,
|
|
53
50
|
internalSetMapMoveSinceLastRefine: noop
|
|
54
51
|
};
|
|
55
|
-
|
|
56
52
|
var getPositionFromState = function getPositionFromState(state) {
|
|
57
53
|
return state.aroundLatLng ? aroundLatLngToPosition(state.aroundLatLng) : undefined;
|
|
58
54
|
};
|
|
59
|
-
|
|
60
55
|
var getCurrentRefinementFromState = function getCurrentRefinementFromState(state) {
|
|
61
56
|
return state.insideBoundingBox && insideBoundingBoxToBoundingBox(state.insideBoundingBox);
|
|
62
57
|
};
|
|
63
|
-
|
|
64
58
|
var refine = function refine(helper) {
|
|
65
59
|
return function (_ref2) {
|
|
66
60
|
var ne = _ref2.northEast,
|
|
67
|
-
|
|
61
|
+
sw = _ref2.southWest;
|
|
68
62
|
var boundingBox = [ne.lat, ne.lng, sw.lat, sw.lng].join();
|
|
69
63
|
helper.setState(setBoundingBoxAsString(helper.state, boundingBox).resetPage()).search();
|
|
70
64
|
widgetState.hasMapMoveSinceLastRefine = false;
|
|
71
65
|
widgetState.lastRefineBoundingBox = boundingBox;
|
|
72
66
|
};
|
|
73
67
|
};
|
|
74
|
-
|
|
75
68
|
var clearMapRefinement = function clearMapRefinement(helper) {
|
|
76
69
|
return function () {
|
|
77
70
|
helper.setQueryParameter('insideBoundingBox', undefined).search();
|
|
78
71
|
};
|
|
79
72
|
};
|
|
80
|
-
|
|
81
73
|
var isRefinedWithMap = function isRefinedWithMap(state) {
|
|
82
74
|
return function () {
|
|
83
75
|
return Boolean(state.insideBoundingBox);
|
|
84
76
|
};
|
|
85
77
|
};
|
|
86
|
-
|
|
87
78
|
var toggleRefineOnMapMove = function toggleRefineOnMapMove() {
|
|
88
79
|
return widgetState.internalToggleRefineOnMapMove();
|
|
89
80
|
};
|
|
90
|
-
|
|
91
81
|
var createInternalToggleRefinementOnMapMove = function createInternalToggleRefinementOnMapMove(renderOptions, render) {
|
|
92
82
|
return function () {
|
|
93
83
|
widgetState.isRefineOnMapMove = !widgetState.isRefineOnMapMove;
|
|
94
84
|
render(renderOptions);
|
|
95
85
|
};
|
|
96
86
|
};
|
|
97
|
-
|
|
98
87
|
var isRefineOnMapMove = function isRefineOnMapMove() {
|
|
99
88
|
return widgetState.isRefineOnMapMove;
|
|
100
89
|
};
|
|
101
|
-
|
|
102
90
|
var setMapMoveSinceLastRefine = function setMapMoveSinceLastRefine() {
|
|
103
91
|
return widgetState.internalSetMapMoveSinceLastRefine();
|
|
104
92
|
};
|
|
105
|
-
|
|
106
93
|
var createInternalSetMapMoveSinceLastRefine = function createInternalSetMapMoveSinceLastRefine(renderOptions, render) {
|
|
107
94
|
return function () {
|
|
108
95
|
var shouldTriggerRender = widgetState.hasMapMoveSinceLastRefine !== true;
|
|
109
96
|
widgetState.hasMapMoveSinceLastRefine = true;
|
|
110
|
-
|
|
111
97
|
if (shouldTriggerRender) {
|
|
112
98
|
render(renderOptions);
|
|
113
99
|
}
|
|
114
100
|
};
|
|
115
101
|
};
|
|
116
|
-
|
|
117
102
|
var hasMapMoveSinceLastRefine = function hasMapMoveSinceLastRefine() {
|
|
118
103
|
return widgetState.hasMapMoveSinceLastRefine;
|
|
119
104
|
};
|
|
120
|
-
|
|
121
105
|
var sendEvent;
|
|
122
106
|
return {
|
|
123
107
|
$$type: $$type,
|
|
@@ -132,18 +116,16 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
|
132
116
|
},
|
|
133
117
|
render: function render(renderArgs) {
|
|
134
118
|
var helper = renderArgs.helper,
|
|
135
|
-
|
|
136
|
-
var isFirstRendering = false;
|
|
119
|
+
instantSearchInstance = renderArgs.instantSearchInstance;
|
|
120
|
+
var isFirstRendering = false;
|
|
121
|
+
// We don't use the state provided by the render function because we need
|
|
137
122
|
// to be sure that the state is the latest one for the following condition
|
|
138
|
-
|
|
139
123
|
var state = helper.state;
|
|
140
124
|
var positionChangedSinceLastRefine = Boolean(state.aroundLatLng) && Boolean(widgetState.lastRefinePosition) && state.aroundLatLng !== widgetState.lastRefinePosition;
|
|
141
125
|
var boundingBoxChangedSinceLastRefine = !state.insideBoundingBox && Boolean(widgetState.lastRefineBoundingBox) && state.insideBoundingBox !== widgetState.lastRefineBoundingBox;
|
|
142
|
-
|
|
143
126
|
if (positionChangedSinceLastRefine || boundingBoxChangedSinceLastRefine) {
|
|
144
127
|
widgetState.hasMapMoveSinceLastRefine = false;
|
|
145
128
|
}
|
|
146
|
-
|
|
147
129
|
widgetState.lastRefinePosition = state.aroundLatLng || '';
|
|
148
130
|
widgetState.lastRefineBoundingBox = getBoundingBoxAsString(state);
|
|
149
131
|
widgetState.internalToggleRefineOnMapMove = createInternalToggleRefinementOnMapMove(renderArgs, this.render.bind(this));
|
|
@@ -156,15 +138,14 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
|
156
138
|
},
|
|
157
139
|
getWidgetRenderState: function getWidgetRenderState(renderOptions) {
|
|
158
140
|
var helper = renderOptions.helper,
|
|
159
|
-
|
|
160
|
-
|
|
141
|
+
results = renderOptions.results,
|
|
142
|
+
instantSearchInstance = renderOptions.instantSearchInstance;
|
|
161
143
|
var state = helper.state;
|
|
162
144
|
var items = results ? transformItems(results.hits.filter(function (hit) {
|
|
163
145
|
return hit._geoloc;
|
|
164
146
|
}), {
|
|
165
147
|
results: results
|
|
166
148
|
}) : [];
|
|
167
|
-
|
|
168
149
|
if (!sendEvent) {
|
|
169
150
|
sendEvent = createSendEventForHits({
|
|
170
151
|
instantSearchInstance: instantSearchInstance,
|
|
@@ -172,7 +153,6 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
|
172
153
|
widgetType: $$type
|
|
173
154
|
});
|
|
174
155
|
}
|
|
175
|
-
|
|
176
156
|
return {
|
|
177
157
|
items: items,
|
|
178
158
|
position: getPositionFromState(state),
|
|
@@ -201,11 +181,9 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
|
201
181
|
getWidgetUiState: function getWidgetUiState(uiState, _ref4) {
|
|
202
182
|
var searchParameters = _ref4.searchParameters;
|
|
203
183
|
var boundingBox = getBoundingBoxAsString(searchParameters);
|
|
204
|
-
|
|
205
184
|
if (!boundingBox || uiState && uiState.geoSearch && uiState.geoSearch.boundingBox === boundingBox) {
|
|
206
185
|
return uiState;
|
|
207
186
|
}
|
|
208
|
-
|
|
209
187
|
return _objectSpread(_objectSpread({}, uiState), {}, {
|
|
210
188
|
geoSearch: {
|
|
211
189
|
boundingBox: boundingBox
|
|
@@ -214,15 +192,12 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
|
214
192
|
},
|
|
215
193
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {
|
|
216
194
|
var uiState = _ref5.uiState;
|
|
217
|
-
|
|
218
195
|
if (!uiState || !uiState.geoSearch) {
|
|
219
196
|
return searchParameters.setQueryParameter('insideBoundingBox', undefined);
|
|
220
197
|
}
|
|
221
|
-
|
|
222
198
|
return setBoundingBoxAsString(searchParameters, uiState.geoSearch.boundingBox);
|
|
223
199
|
}
|
|
224
200
|
};
|
|
225
201
|
};
|
|
226
202
|
};
|
|
227
|
-
|
|
228
203
|
export default connectGeoSearch;
|
|
@@ -1,32 +1,24 @@
|
|
|
1
|
-
function
|
|
2
|
-
|
|
3
|
-
function
|
|
4
|
-
|
|
5
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
-
|
|
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
|
+
var _excluded = ["name", "escapedValue", "data", "path"];
|
|
3
|
+
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; }
|
|
4
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
5
|
+
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; }
|
|
6
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
7
|
+
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
8
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
8
|
-
|
|
9
9
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
10
|
-
|
|
11
10
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
12
|
-
|
|
13
11
|
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."); }
|
|
14
|
-
|
|
15
12
|
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); }
|
|
16
|
-
|
|
17
|
-
function
|
|
18
|
-
|
|
19
|
-
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; }
|
|
20
|
-
|
|
13
|
+
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; }
|
|
14
|
+
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; } }
|
|
21
15
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
22
|
-
|
|
23
16
|
import { checkRendering, warning, createDocumentationMessageGenerator, createSendEventForFacet, isEqual, noop } from "../../lib/utils/index.js";
|
|
24
17
|
var withUsage = createDocumentationMessageGenerator({
|
|
25
18
|
name: 'hierarchical-menu',
|
|
26
19
|
connector: true
|
|
27
20
|
});
|
|
28
21
|
var DEFAULT_SORT = ['name:asc'];
|
|
29
|
-
|
|
30
22
|
/**
|
|
31
23
|
* **HierarchicalMenu** connector provides the logic to build a custom widget
|
|
32
24
|
* that will give the user the ability to explore facets in a tree-like structure.
|
|
@@ -45,86 +37,73 @@ var connectHierarchicalMenu = function connectHierarchicalMenu(renderFn) {
|
|
|
45
37
|
checkRendering(renderFn, withUsage());
|
|
46
38
|
return function (widgetParams) {
|
|
47
39
|
var _ref = widgetParams || {},
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
40
|
+
attributes = _ref.attributes,
|
|
41
|
+
_ref$separator = _ref.separator,
|
|
42
|
+
separator = _ref$separator === void 0 ? ' > ' : _ref$separator,
|
|
43
|
+
_ref$rootPath = _ref.rootPath,
|
|
44
|
+
rootPath = _ref$rootPath === void 0 ? null : _ref$rootPath,
|
|
45
|
+
_ref$showParentLevel = _ref.showParentLevel,
|
|
46
|
+
showParentLevel = _ref$showParentLevel === void 0 ? true : _ref$showParentLevel,
|
|
47
|
+
_ref$limit = _ref.limit,
|
|
48
|
+
limit = _ref$limit === void 0 ? 10 : _ref$limit,
|
|
49
|
+
_ref$showMore = _ref.showMore,
|
|
50
|
+
showMore = _ref$showMore === void 0 ? false : _ref$showMore,
|
|
51
|
+
_ref$showMoreLimit = _ref.showMoreLimit,
|
|
52
|
+
showMoreLimit = _ref$showMoreLimit === void 0 ? 20 : _ref$showMoreLimit,
|
|
53
|
+
_ref$sortBy = _ref.sortBy,
|
|
54
|
+
sortBy = _ref$sortBy === void 0 ? DEFAULT_SORT : _ref$sortBy,
|
|
55
|
+
_ref$transformItems = _ref.transformItems,
|
|
56
|
+
transformItems = _ref$transformItems === void 0 ? function (items) {
|
|
57
|
+
return items;
|
|
58
|
+
} : _ref$transformItems;
|
|
68
59
|
if (!attributes || !Array.isArray(attributes) || attributes.length === 0) {
|
|
69
60
|
throw new Error(withUsage('The `attributes` option expects an array of strings.'));
|
|
70
61
|
}
|
|
71
|
-
|
|
72
62
|
if (showMore === true && showMoreLimit <= limit) {
|
|
73
63
|
throw new Error(withUsage('The `showMoreLimit` option must be greater than `limit`.'));
|
|
74
64
|
}
|
|
75
|
-
|
|
76
65
|
// we need to provide a hierarchicalFacet name for the search state
|
|
77
66
|
// so that we can always map $hierarchicalFacetName => real attributes
|
|
78
67
|
// we use the first attribute name
|
|
79
68
|
var _attributes = _slicedToArray(attributes, 1),
|
|
80
|
-
|
|
69
|
+
hierarchicalFacetName = _attributes[0];
|
|
70
|
+
var sendEvent;
|
|
81
71
|
|
|
82
|
-
|
|
72
|
+
// Provide the same function to the `renderFn` so that way the user
|
|
83
73
|
// has to only bind it once when `isFirstRendering` for instance
|
|
84
|
-
|
|
85
74
|
var toggleShowMore = function toggleShowMore() {};
|
|
86
|
-
|
|
87
75
|
function cachedToggleShowMore() {
|
|
88
76
|
toggleShowMore();
|
|
89
77
|
}
|
|
90
|
-
|
|
91
78
|
var _refine;
|
|
92
|
-
|
|
93
79
|
var isShowingMore = false;
|
|
94
|
-
|
|
95
80
|
function createToggleShowMore(renderOptions, widget) {
|
|
96
81
|
return function () {
|
|
97
82
|
isShowingMore = !isShowingMore;
|
|
98
83
|
widget.render(renderOptions);
|
|
99
84
|
};
|
|
100
85
|
}
|
|
101
|
-
|
|
102
86
|
function getLimit() {
|
|
103
87
|
return isShowingMore ? showMoreLimit : limit;
|
|
104
88
|
}
|
|
105
|
-
|
|
106
89
|
function _prepareFacetValues(facetValues) {
|
|
107
90
|
return facetValues.slice(0, getLimit()).map(function (_ref2) {
|
|
108
91
|
var label = _ref2.name,
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
92
|
+
value = _ref2.escapedValue,
|
|
93
|
+
data = _ref2.data,
|
|
94
|
+
path = _ref2.path,
|
|
95
|
+
subValue = _objectWithoutProperties(_ref2, _excluded);
|
|
114
96
|
var item = _objectSpread(_objectSpread({}, subValue), {}, {
|
|
115
97
|
value: value,
|
|
116
98
|
label: label,
|
|
117
99
|
data: null
|
|
118
100
|
});
|
|
119
|
-
|
|
120
101
|
if (Array.isArray(data)) {
|
|
121
102
|
item.data = _prepareFacetValues(data);
|
|
122
103
|
}
|
|
123
|
-
|
|
124
104
|
return item;
|
|
125
105
|
});
|
|
126
106
|
}
|
|
127
|
-
|
|
128
107
|
return {
|
|
129
108
|
$$type: 'ais.hierarchicalMenu',
|
|
130
109
|
init: function init(initOptions) {
|
|
@@ -152,17 +131,17 @@ var connectHierarchicalMenu = function connectHierarchicalMenu(renderFn) {
|
|
|
152
131
|
},
|
|
153
132
|
getWidgetRenderState: function getWidgetRenderState(_ref4) {
|
|
154
133
|
var results = _ref4.results,
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
134
|
+
state = _ref4.state,
|
|
135
|
+
createURL = _ref4.createURL,
|
|
136
|
+
instantSearchInstance = _ref4.instantSearchInstance,
|
|
137
|
+
helper = _ref4.helper;
|
|
159
138
|
var items = [];
|
|
160
|
-
var canToggleShowMore = false;
|
|
139
|
+
var canToggleShowMore = false;
|
|
161
140
|
|
|
141
|
+
// Bind createURL to this specific attribute
|
|
162
142
|
function _createURL(facetValue) {
|
|
163
143
|
return createURL(state.resetPage().toggleFacetRefinement(hierarchicalFacetName, facetValue));
|
|
164
144
|
}
|
|
165
|
-
|
|
166
145
|
if (!sendEvent) {
|
|
167
146
|
sendEvent = createSendEventForFacet({
|
|
168
147
|
instantSearchInstance: instantSearchInstance,
|
|
@@ -174,33 +153,31 @@ var connectHierarchicalMenu = function connectHierarchicalMenu(renderFn) {
|
|
|
174
153
|
widgetType: this.$$type
|
|
175
154
|
});
|
|
176
155
|
}
|
|
177
|
-
|
|
178
156
|
if (!_refine) {
|
|
179
157
|
_refine = function _refine(facetValue) {
|
|
180
158
|
sendEvent('click', facetValue);
|
|
181
159
|
helper.toggleFacetRefinement(hierarchicalFacetName, facetValue).search();
|
|
182
160
|
};
|
|
183
161
|
}
|
|
184
|
-
|
|
185
162
|
if (results) {
|
|
186
163
|
var facetValues = results.getFacetValues(hierarchicalFacetName, {
|
|
187
164
|
sortBy: sortBy,
|
|
188
165
|
facetOrdering: sortBy === DEFAULT_SORT
|
|
189
166
|
});
|
|
190
|
-
var facetItems = facetValues && !Array.isArray(facetValues) && facetValues.data ? facetValues.data : [];
|
|
167
|
+
var facetItems = facetValues && !Array.isArray(facetValues) && facetValues.data ? facetValues.data : [];
|
|
168
|
+
|
|
169
|
+
// If the limit is the max number of facet retrieved it is impossible to know
|
|
191
170
|
// if the facets are exhaustive. The only moment we are sure it is exhaustive
|
|
192
171
|
// is when it is strictly under the number requested unless we know that another
|
|
193
172
|
// widget has requested more values (maxValuesPerFacet > getLimit()).
|
|
194
173
|
// Because this is used for making the search of facets unable or not, it is important
|
|
195
174
|
// to be conservative here.
|
|
196
|
-
|
|
197
175
|
var hasExhaustiveItems = (state.maxValuesPerFacet || 0) > getLimit() ? facetItems.length <= getLimit() : facetItems.length < getLimit();
|
|
198
176
|
canToggleShowMore = showMore && (isShowingMore || !hasExhaustiveItems);
|
|
199
177
|
items = transformItems(_prepareFacetValues(facetItems), {
|
|
200
178
|
results: results
|
|
201
179
|
});
|
|
202
180
|
}
|
|
203
|
-
|
|
204
181
|
return {
|
|
205
182
|
items: items,
|
|
206
183
|
refine: _refine,
|
|
@@ -216,11 +193,9 @@ var connectHierarchicalMenu = function connectHierarchicalMenu(renderFn) {
|
|
|
216
193
|
getWidgetUiState: function getWidgetUiState(uiState, _ref5) {
|
|
217
194
|
var searchParameters = _ref5.searchParameters;
|
|
218
195
|
var path = searchParameters.getHierarchicalFacetBreadcrumb(hierarchicalFacetName);
|
|
219
|
-
|
|
220
196
|
if (!path.length) {
|
|
221
197
|
return uiState;
|
|
222
198
|
}
|
|
223
|
-
|
|
224
199
|
return _objectSpread(_objectSpread({}, uiState), {}, {
|
|
225
200
|
hierarchicalMenu: _objectSpread(_objectSpread({}, uiState.hierarchicalMenu), {}, _defineProperty({}, hierarchicalFacetName, path))
|
|
226
201
|
});
|
|
@@ -228,12 +203,10 @@ var connectHierarchicalMenu = function connectHierarchicalMenu(renderFn) {
|
|
|
228
203
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {
|
|
229
204
|
var uiState = _ref6.uiState;
|
|
230
205
|
var values = uiState.hierarchicalMenu && uiState.hierarchicalMenu[hierarchicalFacetName];
|
|
231
|
-
|
|
232
206
|
if (searchParameters.isHierarchicalFacet(hierarchicalFacetName)) {
|
|
233
207
|
var facet = searchParameters.getHierarchicalFacetByName(hierarchicalFacetName);
|
|
234
208
|
process.env.NODE_ENV === 'development' ? warning(isEqual(facet.attributes, attributes) && facet.separator === separator && facet.rootPath === rootPath, 'Using Breadcrumb and HierarchicalMenu on the same facet with different options overrides the configuration of the HierarchicalMenu.') : void 0;
|
|
235
209
|
}
|
|
236
|
-
|
|
237
210
|
var withFacetConfiguration = searchParameters.removeHierarchicalFacet(hierarchicalFacetName).addHierarchicalFacet({
|
|
238
211
|
name: hierarchicalFacetName,
|
|
239
212
|
attributes: attributes,
|
|
@@ -244,17 +217,14 @@ var connectHierarchicalMenu = function connectHierarchicalMenu(renderFn) {
|
|
|
244
217
|
var currentMaxValuesPerFacet = withFacetConfiguration.maxValuesPerFacet || 0;
|
|
245
218
|
var nextMaxValuesPerFacet = Math.max(currentMaxValuesPerFacet, showMore ? showMoreLimit : limit);
|
|
246
219
|
var withMaxValuesPerFacet = withFacetConfiguration.setQueryParameter('maxValuesPerFacet', nextMaxValuesPerFacet);
|
|
247
|
-
|
|
248
220
|
if (!values) {
|
|
249
221
|
return withMaxValuesPerFacet.setQueryParameters({
|
|
250
222
|
hierarchicalFacetsRefinements: _objectSpread(_objectSpread({}, withMaxValuesPerFacet.hierarchicalFacetsRefinements), {}, _defineProperty({}, hierarchicalFacetName, []))
|
|
251
223
|
});
|
|
252
224
|
}
|
|
253
|
-
|
|
254
225
|
return withMaxValuesPerFacet.addHierarchicalFacetRefinement(hierarchicalFacetName, values.join(separator));
|
|
255
226
|
}
|
|
256
227
|
};
|
|
257
228
|
};
|
|
258
229
|
};
|
|
259
|
-
|
|
260
230
|
export default connectHierarchicalMenu;
|
|
@@ -1,27 +1,25 @@
|
|
|
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
|
import { escapeHits, TAG_PLACEHOLDER, checkRendering, createDocumentationMessageGenerator, addAbsolutePosition, addQueryID, createSendEventForHits, createBindEventForHits, noop } from "../../lib/utils/index.js";
|
|
8
8
|
var withUsage = createDocumentationMessageGenerator({
|
|
9
9
|
name: 'hits',
|
|
10
10
|
connector: true
|
|
11
11
|
});
|
|
12
|
-
|
|
13
12
|
var connectHits = function connectHits(renderFn) {
|
|
14
13
|
var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;
|
|
15
14
|
checkRendering(renderFn, withUsage());
|
|
16
15
|
return function (widgetParams) {
|
|
17
16
|
var _ref = widgetParams || {},
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
_ref$escapeHTML = _ref.escapeHTML,
|
|
18
|
+
escapeHTML = _ref$escapeHTML === void 0 ? true : _ref$escapeHTML,
|
|
19
|
+
_ref$transformItems = _ref.transformItems,
|
|
20
|
+
transformItems = _ref$transformItems === void 0 ? function (items) {
|
|
21
|
+
return items;
|
|
22
|
+
} : _ref$transformItems;
|
|
25
23
|
var sendEvent;
|
|
26
24
|
var bindEvent;
|
|
27
25
|
return {
|
|
@@ -45,9 +43,8 @@ var connectHits = function connectHits(renderFn) {
|
|
|
45
43
|
},
|
|
46
44
|
getWidgetRenderState: function getWidgetRenderState(_ref2) {
|
|
47
45
|
var results = _ref2.results,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
helper = _ref2.helper,
|
|
47
|
+
instantSearchInstance = _ref2.instantSearchInstance;
|
|
51
48
|
if (!sendEvent) {
|
|
52
49
|
sendEvent = createSendEventForHits({
|
|
53
50
|
instantSearchInstance: instantSearchInstance,
|
|
@@ -55,14 +52,12 @@ var connectHits = function connectHits(renderFn) {
|
|
|
55
52
|
widgetType: this.$$type
|
|
56
53
|
});
|
|
57
54
|
}
|
|
58
|
-
|
|
59
55
|
if (!bindEvent) {
|
|
60
56
|
bindEvent = createBindEventForHits({
|
|
61
57
|
index: helper.getIndex(),
|
|
62
58
|
widgetType: this.$$type
|
|
63
59
|
});
|
|
64
60
|
}
|
|
65
|
-
|
|
66
61
|
if (!results) {
|
|
67
62
|
return {
|
|
68
63
|
hits: [],
|
|
@@ -72,11 +67,9 @@ var connectHits = function connectHits(renderFn) {
|
|
|
72
67
|
widgetParams: widgetParams
|
|
73
68
|
};
|
|
74
69
|
}
|
|
75
|
-
|
|
76
70
|
if (escapeHTML && results.hits.length > 0) {
|
|
77
71
|
results.hits = escapeHits(results.hits);
|
|
78
72
|
}
|
|
79
|
-
|
|
80
73
|
var hitsWithAbsolutePosition = addAbsolutePosition(results.hits, results.page, results.hitsPerPage);
|
|
81
74
|
var hitsWithAbsolutePositionAndQueryID = addQueryID(hitsWithAbsolutePosition, results.queryID);
|
|
82
75
|
var transformedHits = transformItems(hitsWithAbsolutePositionAndQueryID, {
|
|
@@ -93,11 +86,9 @@ var connectHits = function connectHits(renderFn) {
|
|
|
93
86
|
dispose: function dispose(_ref3) {
|
|
94
87
|
var state = _ref3.state;
|
|
95
88
|
unmountFn();
|
|
96
|
-
|
|
97
89
|
if (!escapeHTML) {
|
|
98
90
|
return state;
|
|
99
91
|
}
|
|
100
|
-
|
|
101
92
|
return state.setQueryParameters(Object.keys(TAG_PLACEHOLDER).reduce(function (acc, key) {
|
|
102
93
|
return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, undefined));
|
|
103
94
|
}, {}));
|
|
@@ -106,11 +97,9 @@ var connectHits = function connectHits(renderFn) {
|
|
|
106
97
|
if (!escapeHTML) {
|
|
107
98
|
return state;
|
|
108
99
|
}
|
|
109
|
-
|
|
110
100
|
return state.setQueryParameters(TAG_PLACEHOLDER);
|
|
111
101
|
}
|
|
112
102
|
};
|
|
113
103
|
};
|
|
114
104
|
};
|
|
115
|
-
|
|
116
105
|
export default connectHits;
|