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
|
@@ -4,49 +4,38 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
var _utils = require("../../lib/utils");
|
|
8
|
+
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); }
|
|
10
9
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
11
|
-
|
|
12
10
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
13
|
-
|
|
14
11
|
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); }
|
|
15
|
-
|
|
16
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
|
|
17
|
-
|
|
12
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
18
13
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
19
|
-
|
|
20
|
-
function
|
|
21
|
-
|
|
22
|
-
function
|
|
23
|
-
|
|
24
|
-
function
|
|
25
|
-
|
|
26
|
-
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; }
|
|
27
|
-
|
|
28
|
-
var withUsage = (0, _index.createDocumentationMessageGenerator)({
|
|
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 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; }
|
|
16
|
+
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; }
|
|
17
|
+
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; }
|
|
18
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
19
|
+
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); }
|
|
20
|
+
var withUsage = (0, _utils.createDocumentationMessageGenerator)({
|
|
29
21
|
name: 'current-refinements',
|
|
30
22
|
connector: true
|
|
31
23
|
});
|
|
32
|
-
|
|
33
24
|
var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
|
|
34
|
-
var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] :
|
|
35
|
-
(0,
|
|
25
|
+
var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _utils.noop;
|
|
26
|
+
(0, _utils.checkRendering)(renderFn, withUsage());
|
|
36
27
|
return function (widgetParams) {
|
|
37
28
|
if ((widgetParams || {}).includedAttributes && (widgetParams || {}).excludedAttributes) {
|
|
38
29
|
throw new Error(withUsage('The options `includedAttributes` and `excludedAttributes` cannot be used together.'));
|
|
39
30
|
}
|
|
40
|
-
|
|
41
31
|
var _ref = widgetParams || {},
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
32
|
+
includedAttributes = _ref.includedAttributes,
|
|
33
|
+
_ref$excludedAttribut = _ref.excludedAttributes,
|
|
34
|
+
excludedAttributes = _ref$excludedAttribut === void 0 ? ['query'] : _ref$excludedAttribut,
|
|
35
|
+
_ref$transformItems = _ref.transformItems,
|
|
36
|
+
transformItems = _ref$transformItems === void 0 ? function (items) {
|
|
37
|
+
return items;
|
|
38
|
+
} : _ref$transformItems;
|
|
50
39
|
return {
|
|
51
40
|
$$type: 'ais.currentRefinements',
|
|
52
41
|
init: function init(initOptions) {
|
|
@@ -71,10 +60,9 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
|
|
|
71
60
|
},
|
|
72
61
|
getWidgetRenderState: function getWidgetRenderState(_ref2) {
|
|
73
62
|
var results = _ref2.results,
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
63
|
+
scopedResults = _ref2.scopedResults,
|
|
64
|
+
_createURL = _ref2.createURL,
|
|
65
|
+
helper = _ref2.helper;
|
|
78
66
|
function getItems() {
|
|
79
67
|
if (!results) {
|
|
80
68
|
return transformItems(getRefinementsItems({
|
|
@@ -86,7 +74,6 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
|
|
|
86
74
|
results: results
|
|
87
75
|
});
|
|
88
76
|
}
|
|
89
|
-
|
|
90
77
|
return scopedResults.reduce(function (accResults, scopedResult) {
|
|
91
78
|
return accResults.concat(transformItems(getRefinementsItems({
|
|
92
79
|
results: scopedResult.results,
|
|
@@ -98,7 +85,6 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
|
|
|
98
85
|
}));
|
|
99
86
|
}, []);
|
|
100
87
|
}
|
|
101
|
-
|
|
102
88
|
var items = getItems();
|
|
103
89
|
return {
|
|
104
90
|
items: items,
|
|
@@ -115,19 +101,18 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
|
|
|
115
101
|
};
|
|
116
102
|
};
|
|
117
103
|
};
|
|
118
|
-
|
|
119
104
|
function getRefinementsItems(_ref3) {
|
|
120
105
|
var results = _ref3.results,
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
106
|
+
helper = _ref3.helper,
|
|
107
|
+
includedAttributes = _ref3.includedAttributes,
|
|
108
|
+
excludedAttributes = _ref3.excludedAttributes;
|
|
124
109
|
var includesQuery = (includedAttributes || []).indexOf('query') !== -1 || (excludedAttributes || []).indexOf('query') === -1;
|
|
125
110
|
var filterFunction = includedAttributes ? function (item) {
|
|
126
111
|
return includedAttributes.indexOf(item.attribute) !== -1;
|
|
127
112
|
} : function (item) {
|
|
128
113
|
return excludedAttributes.indexOf(item.attribute) === -1;
|
|
129
114
|
};
|
|
130
|
-
var items = (0,
|
|
115
|
+
var items = (0, _utils.getRefinements)(results, helper.state, includesQuery).map(normalizeRefinement).filter(filterFunction);
|
|
131
116
|
return items.reduce(function (allItems, currentItem) {
|
|
132
117
|
return [].concat(_toConsumableArray(allItems.filter(function (item) {
|
|
133
118
|
return item.attribute !== currentItem.attribute;
|
|
@@ -137,7 +122,8 @@ function getRefinementsItems(_ref3) {
|
|
|
137
122
|
label: currentItem.attribute,
|
|
138
123
|
refinements: items.filter(function (result) {
|
|
139
124
|
return result.attribute === currentItem.attribute;
|
|
140
|
-
})
|
|
125
|
+
})
|
|
126
|
+
// We want to keep the order of refinements except the numeric ones.
|
|
141
127
|
.sort(function (a, b) {
|
|
142
128
|
return a.type === 'numeric' ? a.value - b.value : 0;
|
|
143
129
|
}),
|
|
@@ -147,55 +133,41 @@ function getRefinementsItems(_ref3) {
|
|
|
147
133
|
}]);
|
|
148
134
|
}, []);
|
|
149
135
|
}
|
|
150
|
-
|
|
151
136
|
function clearRefinementFromState(state, refinement) {
|
|
152
137
|
state = state.resetPage();
|
|
153
|
-
|
|
154
138
|
switch (refinement.type) {
|
|
155
139
|
case 'facet':
|
|
156
140
|
return state.removeFacetRefinement(refinement.attribute, String(refinement.value));
|
|
157
|
-
|
|
158
141
|
case 'disjunctive':
|
|
159
142
|
return state.removeDisjunctiveFacetRefinement(refinement.attribute, String(refinement.value));
|
|
160
|
-
|
|
161
143
|
case 'hierarchical':
|
|
162
144
|
return state.removeHierarchicalFacetRefinement(refinement.attribute);
|
|
163
|
-
|
|
164
145
|
case 'exclude':
|
|
165
146
|
return state.removeExcludeRefinement(refinement.attribute, String(refinement.value));
|
|
166
|
-
|
|
167
147
|
case 'numeric':
|
|
168
148
|
return state.removeNumericRefinement(refinement.attribute, refinement.operator, String(refinement.value));
|
|
169
|
-
|
|
170
149
|
case 'tag':
|
|
171
150
|
return state.removeTagRefinement(String(refinement.value));
|
|
172
|
-
|
|
173
151
|
case 'query':
|
|
174
152
|
return state.setQueryParameter('query', '');
|
|
175
|
-
|
|
176
153
|
default:
|
|
177
|
-
process.env.NODE_ENV === 'development' ? (0,
|
|
154
|
+
process.env.NODE_ENV === 'development' ? (0, _utils.warning)(false, "The refinement type \"".concat(refinement.type, "\" does not exist and cannot be cleared from the current refinements.")) : void 0;
|
|
178
155
|
return state;
|
|
179
156
|
}
|
|
180
157
|
}
|
|
181
|
-
|
|
182
158
|
function clearRefinement(helper, refinement) {
|
|
183
159
|
helper.setState(clearRefinementFromState(helper.state, refinement)).search();
|
|
184
160
|
}
|
|
185
|
-
|
|
186
161
|
function getOperatorSymbol(operator) {
|
|
187
162
|
switch (operator) {
|
|
188
163
|
case '>=':
|
|
189
164
|
return '≥';
|
|
190
|
-
|
|
191
165
|
case '<=':
|
|
192
166
|
return '≤';
|
|
193
|
-
|
|
194
167
|
default:
|
|
195
168
|
return operator;
|
|
196
169
|
}
|
|
197
170
|
}
|
|
198
|
-
|
|
199
171
|
function normalizeRefinement(refinement) {
|
|
200
172
|
var value = getValue(refinement);
|
|
201
173
|
var label = refinement.operator ? "".concat(getOperatorSymbol(refinement.operator), " ").concat(refinement.name) : refinement.name;
|
|
@@ -205,33 +177,25 @@ function normalizeRefinement(refinement) {
|
|
|
205
177
|
value: value,
|
|
206
178
|
label: label
|
|
207
179
|
};
|
|
208
|
-
|
|
209
180
|
if (refinement.operator !== undefined) {
|
|
210
181
|
normalizedRefinement.operator = refinement.operator;
|
|
211
182
|
}
|
|
212
|
-
|
|
213
183
|
if (refinement.count !== undefined) {
|
|
214
184
|
normalizedRefinement.count = refinement.count;
|
|
215
185
|
}
|
|
216
|
-
|
|
217
186
|
if (refinement.exhaustive !== undefined) {
|
|
218
187
|
normalizedRefinement.exhaustive = refinement.exhaustive;
|
|
219
188
|
}
|
|
220
|
-
|
|
221
189
|
return normalizedRefinement;
|
|
222
190
|
}
|
|
223
|
-
|
|
224
191
|
function getValue(refinement) {
|
|
225
192
|
if (refinement.type === 'numeric') {
|
|
226
193
|
return Number(refinement.name);
|
|
227
194
|
}
|
|
228
|
-
|
|
229
195
|
if ('escapedValue' in refinement) {
|
|
230
196
|
return refinement.escapedValue;
|
|
231
197
|
}
|
|
232
|
-
|
|
233
198
|
return refinement.name;
|
|
234
199
|
}
|
|
235
|
-
|
|
236
200
|
var _default = connectCurrentRefinements;
|
|
237
201
|
exports.default = _default;
|
|
@@ -4,54 +4,46 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
function
|
|
11
|
-
|
|
12
|
-
function
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
17
|
-
|
|
18
|
-
var withUsage = (0, _index.createDocumentationMessageGenerator)({
|
|
7
|
+
var _utils = require("../../lib/utils");
|
|
8
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
9
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
10
|
+
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; }
|
|
11
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
12
|
+
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); }
|
|
13
|
+
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); }
|
|
14
|
+
var withUsage = (0, _utils.createDocumentationMessageGenerator)({
|
|
19
15
|
name: 'dynamic-widgets',
|
|
20
16
|
connector: true
|
|
21
17
|
});
|
|
22
18
|
var MAX_WILDCARD_FACETS = 20;
|
|
23
|
-
|
|
24
19
|
var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
25
|
-
var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] :
|
|
26
|
-
(0,
|
|
20
|
+
var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _utils.noop;
|
|
21
|
+
(0, _utils.checkRendering)(renderFn, withUsage());
|
|
27
22
|
return function (widgetParams) {
|
|
28
23
|
var widgets = widgetParams.widgets,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
24
|
+
_widgetParams$maxValu = widgetParams.maxValuesPerFacet,
|
|
25
|
+
maxValuesPerFacet = _widgetParams$maxValu === void 0 ? 20 : _widgetParams$maxValu,
|
|
26
|
+
_widgetParams$facets = widgetParams.facets,
|
|
27
|
+
facets = _widgetParams$facets === void 0 ? ['*'] : _widgetParams$facets,
|
|
28
|
+
_widgetParams$transfo = widgetParams.transformItems,
|
|
29
|
+
transformItems = _widgetParams$transfo === void 0 ? function (items) {
|
|
30
|
+
return items;
|
|
31
|
+
} : _widgetParams$transfo,
|
|
32
|
+
fallbackWidget = widgetParams.fallbackWidget;
|
|
39
33
|
if (!(widgets && Array.isArray(widgets) && widgets.every(function (widget) {
|
|
40
34
|
return _typeof(widget) === 'object';
|
|
41
35
|
}))) {
|
|
42
36
|
throw new Error(withUsage('The `widgets` option expects an array of widgets.'));
|
|
43
37
|
}
|
|
44
|
-
|
|
45
38
|
if (!(Array.isArray(facets) && facets.length <= 1 && (facets[0] === '*' || facets[0] === undefined))) {
|
|
46
39
|
throw new Error(withUsage("The `facets` option only accepts [] or [\"*\"], you passed ".concat(JSON.stringify(facets))));
|
|
47
40
|
}
|
|
48
|
-
|
|
49
41
|
var localWidgets = new Map();
|
|
50
42
|
return {
|
|
51
43
|
$$type: 'ais.dynamicWidgets',
|
|
52
44
|
init: function init(initOptions) {
|
|
53
45
|
widgets.forEach(function (widget) {
|
|
54
|
-
var attribute = (0,
|
|
46
|
+
var attribute = (0, _utils.getWidgetAttribute)(widget, initOptions);
|
|
55
47
|
localWidgets.set(attribute, {
|
|
56
48
|
widget: widget,
|
|
57
49
|
isMounted: false
|
|
@@ -66,7 +58,6 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
|
66
58
|
var renderState = this.getWidgetRenderState(renderOptions);
|
|
67
59
|
var widgetsToUnmount = [];
|
|
68
60
|
var widgetsToMount = [];
|
|
69
|
-
|
|
70
61
|
if (fallbackWidget) {
|
|
71
62
|
renderState.attributesToRender.forEach(function (attribute) {
|
|
72
63
|
if (!localWidgets.has(attribute)) {
|
|
@@ -80,12 +71,10 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
|
80
71
|
}
|
|
81
72
|
});
|
|
82
73
|
}
|
|
83
|
-
|
|
84
74
|
localWidgets.forEach(function (_ref, attribute) {
|
|
85
75
|
var widget = _ref.widget,
|
|
86
|
-
|
|
76
|
+
isMounted = _ref.isMounted;
|
|
87
77
|
var shouldMount = renderState.attributesToRender.indexOf(attribute) > -1;
|
|
88
|
-
|
|
89
78
|
if (!isMounted && shouldMount) {
|
|
90
79
|
widgetsToMount.push(widget);
|
|
91
80
|
localWidgets.set(attribute, {
|
|
@@ -100,10 +89,10 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
|
100
89
|
});
|
|
101
90
|
}
|
|
102
91
|
});
|
|
103
|
-
parent.addWidgets(widgetsToMount);
|
|
92
|
+
parent.addWidgets(widgetsToMount);
|
|
93
|
+
// make sure this only happens after the regular render, otherwise it
|
|
104
94
|
// happens too quick, since render is "deferred" for the next microtask,
|
|
105
95
|
// so this needs to be a whole task later
|
|
106
|
-
|
|
107
96
|
setTimeout(function () {
|
|
108
97
|
return parent.removeWidgets(widgetsToUnmount);
|
|
109
98
|
}, 0);
|
|
@@ -116,8 +105,7 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
|
116
105
|
var toRemove = [];
|
|
117
106
|
localWidgets.forEach(function (_ref3) {
|
|
118
107
|
var widget = _ref3.widget,
|
|
119
|
-
|
|
120
|
-
|
|
108
|
+
isMounted = _ref3.isMounted;
|
|
121
109
|
if (isMounted) {
|
|
122
110
|
toRemove.push(widget);
|
|
123
111
|
}
|
|
@@ -140,27 +128,22 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
|
140
128
|
},
|
|
141
129
|
getWidgetRenderState: function getWidgetRenderState(_ref4) {
|
|
142
130
|
var _results$renderingCon, _results$renderingCon2, _results$renderingCon3, _results$renderingCon4;
|
|
143
|
-
|
|
144
131
|
var results = _ref4.results,
|
|
145
|
-
|
|
146
|
-
|
|
132
|
+
state = _ref4.state;
|
|
147
133
|
if (!results) {
|
|
148
134
|
return {
|
|
149
135
|
attributesToRender: [],
|
|
150
136
|
widgetParams: widgetParams
|
|
151
137
|
};
|
|
152
138
|
}
|
|
153
|
-
|
|
154
139
|
var attributesToRender = transformItems((_results$renderingCon = (_results$renderingCon2 = results.renderingContent) === null || _results$renderingCon2 === void 0 ? void 0 : (_results$renderingCon3 = _results$renderingCon2.facetOrdering) === null || _results$renderingCon3 === void 0 ? void 0 : (_results$renderingCon4 = _results$renderingCon3.facets) === null || _results$renderingCon4 === void 0 ? void 0 : _results$renderingCon4.order) !== null && _results$renderingCon !== void 0 ? _results$renderingCon : [], {
|
|
155
140
|
results: results
|
|
156
141
|
});
|
|
157
|
-
|
|
158
142
|
if (!Array.isArray(attributesToRender)) {
|
|
159
143
|
throw new Error(withUsage('The `transformItems` option expects a function that returns an Array.'));
|
|
160
144
|
}
|
|
161
|
-
|
|
162
|
-
process.env.NODE_ENV === 'development' ? (0,
|
|
163
|
-
process.env.NODE_ENV === 'development' ? (0, _index.warning)(attributesToRender.length <= MAX_WILDCARD_FACETS || widgetParams.facets !== undefined, "More than ".concat(MAX_WILDCARD_FACETS, " facets are requested to be displayed without explicitly setting which facets to retrieve. This could have a performance impact. Set \"facets\" to [] to do two smaller network requests, or explicitly to ['*'] to avoid this warning.")) : void 0;
|
|
145
|
+
process.env.NODE_ENV === 'development' ? (0, _utils.warning)(maxValuesPerFacet >= (state.maxValuesPerFacet || 0), "The maxValuesPerFacet set by dynamic widgets (".concat(maxValuesPerFacet, ") is smaller than one of the limits set by a widget (").concat(state.maxValuesPerFacet, "). This causes a mismatch in query parameters and thus an extra network request when that widget is mounted.")) : void 0;
|
|
146
|
+
process.env.NODE_ENV === 'development' ? (0, _utils.warning)(attributesToRender.length <= MAX_WILDCARD_FACETS || widgetParams.facets !== undefined, "More than ".concat(MAX_WILDCARD_FACETS, " facets are requested to be displayed without explicitly setting which facets to retrieve. This could have a performance impact. Set \"facets\" to [] to do two smaller network requests, or explicitly to ['*'] to avoid this warning.")) : void 0;
|
|
164
147
|
return {
|
|
165
148
|
attributesToRender: attributesToRender,
|
|
166
149
|
widgetParams: widgetParams
|
|
@@ -169,6 +152,5 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
|
169
152
|
};
|
|
170
153
|
};
|
|
171
154
|
};
|
|
172
|
-
|
|
173
155
|
var _default = connectDynamicWidgets;
|
|
174
156
|
exports.default = _default;
|
|
@@ -4,32 +4,28 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
function
|
|
11
|
-
|
|
12
|
-
function
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
var withUsage = (0, _index.createDocumentationMessageGenerator)({
|
|
7
|
+
var _utils = require("../../lib/utils");
|
|
8
|
+
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); }
|
|
9
|
+
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; }
|
|
10
|
+
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; }
|
|
11
|
+
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; }
|
|
12
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
13
|
+
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); }
|
|
14
|
+
var withUsage = (0, _utils.createDocumentationMessageGenerator)({
|
|
17
15
|
name: 'geo-search',
|
|
18
16
|
connector: true
|
|
19
|
-
});
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
// in this connector, we assume insideBoundingBox is only a string,
|
|
20
20
|
// even though in the helper it's defined as number[][] alone.
|
|
21
21
|
// This can be done, since the connector assumes "control" of the parameter
|
|
22
|
-
|
|
23
22
|
function getBoundingBoxAsString(state) {
|
|
24
23
|
return state.insideBoundingBox || '';
|
|
25
24
|
}
|
|
26
|
-
|
|
27
25
|
function setBoundingBoxAsString(state, value) {
|
|
28
26
|
return state.setQueryParameter('insideBoundingBox', value);
|
|
29
27
|
}
|
|
30
|
-
|
|
31
28
|
var $$type = 'ais.geoSearch';
|
|
32
|
-
|
|
33
29
|
/**
|
|
34
30
|
* 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).
|
|
35
31
|
*
|
|
@@ -40,118 +36,102 @@ var $$type = 'ais.geoSearch';
|
|
|
40
36
|
* Currently, the feature is not compatible with multiple values in the _geoloc attribute.
|
|
41
37
|
*/
|
|
42
38
|
var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
43
|
-
var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] :
|
|
44
|
-
(0,
|
|
39
|
+
var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _utils.noop;
|
|
40
|
+
(0, _utils.checkRendering)(renderFn, withUsage());
|
|
45
41
|
return function (widgetParams) {
|
|
46
42
|
var _ref = widgetParams || {},
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
43
|
+
_ref$enableRefineOnMa = _ref.enableRefineOnMapMove,
|
|
44
|
+
enableRefineOnMapMove = _ref$enableRefineOnMa === void 0 ? true : _ref$enableRefineOnMa,
|
|
45
|
+
_ref$transformItems = _ref.transformItems,
|
|
46
|
+
transformItems = _ref$transformItems === void 0 ? function (items) {
|
|
47
|
+
return items;
|
|
48
|
+
} : _ref$transformItems;
|
|
54
49
|
var widgetState = {
|
|
55
50
|
isRefineOnMapMove: enableRefineOnMapMove,
|
|
56
51
|
// @MAJOR hasMapMoveSinceLastRefine -> hasMapMovedSinceLastRefine
|
|
57
52
|
hasMapMoveSinceLastRefine: false,
|
|
58
53
|
lastRefinePosition: '',
|
|
59
54
|
lastRefineBoundingBox: '',
|
|
60
|
-
internalToggleRefineOnMapMove:
|
|
61
|
-
internalSetMapMoveSinceLastRefine:
|
|
55
|
+
internalToggleRefineOnMapMove: _utils.noop,
|
|
56
|
+
internalSetMapMoveSinceLastRefine: _utils.noop
|
|
62
57
|
};
|
|
63
|
-
|
|
64
58
|
var getPositionFromState = function getPositionFromState(state) {
|
|
65
|
-
return state.aroundLatLng ? (0,
|
|
59
|
+
return state.aroundLatLng ? (0, _utils.aroundLatLngToPosition)(state.aroundLatLng) : undefined;
|
|
66
60
|
};
|
|
67
|
-
|
|
68
61
|
var getCurrentRefinementFromState = function getCurrentRefinementFromState(state) {
|
|
69
|
-
return state.insideBoundingBox && (0,
|
|
62
|
+
return state.insideBoundingBox && (0, _utils.insideBoundingBoxToBoundingBox)(state.insideBoundingBox);
|
|
70
63
|
};
|
|
71
|
-
|
|
72
64
|
var refine = function refine(helper) {
|
|
73
65
|
return function (_ref2) {
|
|
74
66
|
var ne = _ref2.northEast,
|
|
75
|
-
|
|
67
|
+
sw = _ref2.southWest;
|
|
76
68
|
var boundingBox = [ne.lat, ne.lng, sw.lat, sw.lng].join();
|
|
77
69
|
helper.setState(setBoundingBoxAsString(helper.state, boundingBox).resetPage()).search();
|
|
78
70
|
widgetState.hasMapMoveSinceLastRefine = false;
|
|
79
71
|
widgetState.lastRefineBoundingBox = boundingBox;
|
|
80
72
|
};
|
|
81
73
|
};
|
|
82
|
-
|
|
83
74
|
var clearMapRefinement = function clearMapRefinement(helper) {
|
|
84
75
|
return function () {
|
|
85
76
|
helper.setQueryParameter('insideBoundingBox', undefined).search();
|
|
86
77
|
};
|
|
87
78
|
};
|
|
88
|
-
|
|
89
79
|
var isRefinedWithMap = function isRefinedWithMap(state) {
|
|
90
80
|
return function () {
|
|
91
81
|
return Boolean(state.insideBoundingBox);
|
|
92
82
|
};
|
|
93
83
|
};
|
|
94
|
-
|
|
95
84
|
var toggleRefineOnMapMove = function toggleRefineOnMapMove() {
|
|
96
85
|
return widgetState.internalToggleRefineOnMapMove();
|
|
97
86
|
};
|
|
98
|
-
|
|
99
87
|
var createInternalToggleRefinementOnMapMove = function createInternalToggleRefinementOnMapMove(renderOptions, render) {
|
|
100
88
|
return function () {
|
|
101
89
|
widgetState.isRefineOnMapMove = !widgetState.isRefineOnMapMove;
|
|
102
90
|
render(renderOptions);
|
|
103
91
|
};
|
|
104
92
|
};
|
|
105
|
-
|
|
106
93
|
var isRefineOnMapMove = function isRefineOnMapMove() {
|
|
107
94
|
return widgetState.isRefineOnMapMove;
|
|
108
95
|
};
|
|
109
|
-
|
|
110
96
|
var setMapMoveSinceLastRefine = function setMapMoveSinceLastRefine() {
|
|
111
97
|
return widgetState.internalSetMapMoveSinceLastRefine();
|
|
112
98
|
};
|
|
113
|
-
|
|
114
99
|
var createInternalSetMapMoveSinceLastRefine = function createInternalSetMapMoveSinceLastRefine(renderOptions, render) {
|
|
115
100
|
return function () {
|
|
116
101
|
var shouldTriggerRender = widgetState.hasMapMoveSinceLastRefine !== true;
|
|
117
102
|
widgetState.hasMapMoveSinceLastRefine = true;
|
|
118
|
-
|
|
119
103
|
if (shouldTriggerRender) {
|
|
120
104
|
render(renderOptions);
|
|
121
105
|
}
|
|
122
106
|
};
|
|
123
107
|
};
|
|
124
|
-
|
|
125
108
|
var hasMapMoveSinceLastRefine = function hasMapMoveSinceLastRefine() {
|
|
126
109
|
return widgetState.hasMapMoveSinceLastRefine;
|
|
127
110
|
};
|
|
128
|
-
|
|
129
111
|
var sendEvent;
|
|
130
112
|
return {
|
|
131
113
|
$$type: $$type,
|
|
132
114
|
init: function init(initArgs) {
|
|
133
115
|
var instantSearchInstance = initArgs.instantSearchInstance;
|
|
134
116
|
var isFirstRendering = true;
|
|
135
|
-
widgetState.internalToggleRefineOnMapMove = createInternalToggleRefinementOnMapMove(initArgs,
|
|
136
|
-
widgetState.internalSetMapMoveSinceLastRefine = createInternalSetMapMoveSinceLastRefine(initArgs,
|
|
117
|
+
widgetState.internalToggleRefineOnMapMove = createInternalToggleRefinementOnMapMove(initArgs, _utils.noop);
|
|
118
|
+
widgetState.internalSetMapMoveSinceLastRefine = createInternalSetMapMoveSinceLastRefine(initArgs, _utils.noop);
|
|
137
119
|
renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initArgs)), {}, {
|
|
138
120
|
instantSearchInstance: instantSearchInstance
|
|
139
121
|
}), isFirstRendering);
|
|
140
122
|
},
|
|
141
123
|
render: function render(renderArgs) {
|
|
142
124
|
var helper = renderArgs.helper,
|
|
143
|
-
|
|
144
|
-
var isFirstRendering = false;
|
|
125
|
+
instantSearchInstance = renderArgs.instantSearchInstance;
|
|
126
|
+
var isFirstRendering = false;
|
|
127
|
+
// We don't use the state provided by the render function because we need
|
|
145
128
|
// to be sure that the state is the latest one for the following condition
|
|
146
|
-
|
|
147
129
|
var state = helper.state;
|
|
148
130
|
var positionChangedSinceLastRefine = Boolean(state.aroundLatLng) && Boolean(widgetState.lastRefinePosition) && state.aroundLatLng !== widgetState.lastRefinePosition;
|
|
149
131
|
var boundingBoxChangedSinceLastRefine = !state.insideBoundingBox && Boolean(widgetState.lastRefineBoundingBox) && state.insideBoundingBox !== widgetState.lastRefineBoundingBox;
|
|
150
|
-
|
|
151
132
|
if (positionChangedSinceLastRefine || boundingBoxChangedSinceLastRefine) {
|
|
152
133
|
widgetState.hasMapMoveSinceLastRefine = false;
|
|
153
134
|
}
|
|
154
|
-
|
|
155
135
|
widgetState.lastRefinePosition = state.aroundLatLng || '';
|
|
156
136
|
widgetState.lastRefineBoundingBox = getBoundingBoxAsString(state);
|
|
157
137
|
widgetState.internalToggleRefineOnMapMove = createInternalToggleRefinementOnMapMove(renderArgs, this.render.bind(this));
|
|
@@ -164,23 +144,21 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
|
164
144
|
},
|
|
165
145
|
getWidgetRenderState: function getWidgetRenderState(renderOptions) {
|
|
166
146
|
var helper = renderOptions.helper,
|
|
167
|
-
|
|
168
|
-
|
|
147
|
+
results = renderOptions.results,
|
|
148
|
+
instantSearchInstance = renderOptions.instantSearchInstance;
|
|
169
149
|
var state = helper.state;
|
|
170
150
|
var items = results ? transformItems(results.hits.filter(function (hit) {
|
|
171
151
|
return hit._geoloc;
|
|
172
152
|
}), {
|
|
173
153
|
results: results
|
|
174
154
|
}) : [];
|
|
175
|
-
|
|
176
155
|
if (!sendEvent) {
|
|
177
|
-
sendEvent = (0,
|
|
156
|
+
sendEvent = (0, _utils.createSendEventForHits)({
|
|
178
157
|
instantSearchInstance: instantSearchInstance,
|
|
179
158
|
index: helper.getIndex(),
|
|
180
159
|
widgetType: $$type
|
|
181
160
|
});
|
|
182
161
|
}
|
|
183
|
-
|
|
184
162
|
return {
|
|
185
163
|
items: items,
|
|
186
164
|
position: getPositionFromState(state),
|
|
@@ -209,11 +187,9 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
|
209
187
|
getWidgetUiState: function getWidgetUiState(uiState, _ref4) {
|
|
210
188
|
var searchParameters = _ref4.searchParameters;
|
|
211
189
|
var boundingBox = getBoundingBoxAsString(searchParameters);
|
|
212
|
-
|
|
213
190
|
if (!boundingBox || uiState && uiState.geoSearch && uiState.geoSearch.boundingBox === boundingBox) {
|
|
214
191
|
return uiState;
|
|
215
192
|
}
|
|
216
|
-
|
|
217
193
|
return _objectSpread(_objectSpread({}, uiState), {}, {
|
|
218
194
|
geoSearch: {
|
|
219
195
|
boundingBox: boundingBox
|
|
@@ -222,16 +198,13 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
|
222
198
|
},
|
|
223
199
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {
|
|
224
200
|
var uiState = _ref5.uiState;
|
|
225
|
-
|
|
226
201
|
if (!uiState || !uiState.geoSearch) {
|
|
227
202
|
return searchParameters.setQueryParameter('insideBoundingBox', undefined);
|
|
228
203
|
}
|
|
229
|
-
|
|
230
204
|
return setBoundingBoxAsString(searchParameters, uiState.geoSearch.boundingBox);
|
|
231
205
|
}
|
|
232
206
|
};
|
|
233
207
|
};
|
|
234
208
|
};
|
|
235
|
-
|
|
236
209
|
var _default = connectGeoSearch;
|
|
237
210
|
exports.default = _default;
|