instantsearch.js 4.49.1 → 4.49.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/cjs/components/Answers/Answers.js +6 -16
- package/cjs/components/Breadcrumb/Breadcrumb.js +5 -12
- package/cjs/components/ClearRefinements/ClearRefinements.js +4 -11
- package/cjs/components/CurrentRefinements/CurrentRefinements.js +5 -12
- package/cjs/components/GeoSearchControls/GeoSearchButton.js +4 -6
- package/cjs/components/GeoSearchControls/GeoSearchControls.js +11 -20
- package/cjs/components/GeoSearchControls/GeoSearchToggle.js +4 -6
- package/cjs/components/Highlight/Highlight.js +3 -11
- package/cjs/components/Hits/Hits.js +8 -20
- package/cjs/components/InfiniteHits/InfiniteHits.js +13 -25
- package/cjs/components/InternalHighlight/InternalHighlight.js +0 -3
- package/cjs/components/MenuSelect/MenuSelect.js +9 -19
- package/cjs/components/Pagination/Pagination.js +10 -17
- package/cjs/components/Panel/Panel.js +7 -26
- package/cjs/components/PoweredBy/PoweredBy.js +4 -5
- package/cjs/components/QueryRuleCustomData/QueryRuleCustomData.js +2 -6
- package/cjs/components/RangeInput/RangeInput.js +16 -48
- package/cjs/components/RefinementList/RefinementList.js +19 -73
- package/cjs/components/RefinementList/RefinementListItem.js +8 -14
- package/cjs/components/RelevantSort/RelevantSort.js +4 -8
- package/cjs/components/ReverseHighlight/ReverseHighlight.js +3 -11
- package/cjs/components/ReverseSnippet/ReverseSnippet.js +3 -11
- package/cjs/components/SearchBox/SearchBox.js +25 -69
- package/cjs/components/Selector/Selector.js +3 -6
- package/cjs/components/Slider/Pit.js +3 -10
- package/cjs/components/Slider/Rheostat.js +63 -131
- package/cjs/components/Slider/Slider.js +28 -65
- package/cjs/components/Snippet/Snippet.js +3 -11
- package/cjs/components/Stats/Stats.js +7 -20
- package/cjs/components/Template/Template.js +8 -37
- package/cjs/components/ToggleRefinement/ToggleRefinement.js +4 -10
- package/cjs/components/VoiceSearch/VoiceSearch.js +8 -15
- package/cjs/connectors/answers/connectAnswers.js +21 -36
- package/cjs/connectors/autocomplete/connectAutocomplete.js +8 -25
- package/cjs/connectors/breadcrumb/connectBreadcrumb.js +17 -48
- package/cjs/connectors/clear-refinements/connectClearRefinements.js +27 -45
- package/cjs/connectors/configure/connectConfigure.js +6 -20
- package/cjs/connectors/configure-related-items/connectConfigureRelatedItems.js +11 -36
- package/cjs/connectors/current-refinements/connectCurrentRefinements.js +18 -57
- package/cjs/connectors/dynamic-widgets/connectDynamicWidgets.js +17 -37
- package/cjs/connectors/geo-search/connectGeoSearch.js +17 -47
- package/cjs/connectors/hierarchical-menu/connectHierarchicalMenu.js +38 -74
- package/cjs/connectors/hits/connectHits.js +10 -26
- package/cjs/connectors/hits/connectHitsWithInsights.js +0 -4
- package/cjs/connectors/hits-per-page/connectHitsPerPage.js +15 -38
- package/cjs/connectors/index.js +62 -96
- package/cjs/connectors/infinite-hits/connectInfiniteHits.js +26 -62
- package/cjs/connectors/infinite-hits/connectInfiniteHitsWithInsights.js +0 -4
- package/cjs/connectors/menu/connectMenu.js +28 -66
- package/cjs/connectors/numeric-menu/connectNumericMenu.js +24 -78
- package/cjs/connectors/pagination/Paginator.js +3 -20
- package/cjs/connectors/pagination/connectPagination.js +8 -25
- package/cjs/connectors/powered-by/connectPoweredBy.js +4 -13
- package/cjs/connectors/query-rules/connectQueryRules.js +32 -56
- package/cjs/connectors/range/connectRange.js +41 -101
- package/cjs/connectors/rating-menu/connectRatingMenu.js +23 -79
- package/cjs/connectors/refinement-list/connectRefinementList.js +37 -70
- package/cjs/connectors/relevant-sort/connectRelevantSort.js +4 -14
- package/cjs/connectors/search-box/connectSearchBox.js +7 -23
- package/cjs/connectors/sort-by/connectSortBy.js +11 -21
- package/cjs/connectors/stats/connectStats.js +4 -11
- package/cjs/connectors/toggle-refinement/connectToggleRefinement.js +29 -63
- package/cjs/connectors/voice-search/connectVoiceSearch.js +13 -35
- package/cjs/helpers/components/Highlight.js +4 -12
- package/cjs/helpers/components/ReverseHighlight.js +7 -19
- package/cjs/helpers/components/ReverseSnippet.js +7 -19
- package/cjs/helpers/components/Snippet.js +4 -12
- package/cjs/helpers/components/index.js +0 -8
- package/cjs/helpers/get-insights-anonymous-user-token.js +4 -15
- package/cjs/helpers/highlight.js +10 -16
- package/cjs/helpers/index.js +17 -31
- package/cjs/helpers/insights.js +5 -17
- package/cjs/helpers/reverseHighlight.js +10 -16
- package/cjs/helpers/reverseSnippet.js +10 -16
- package/cjs/helpers/snippet.js +10 -16
- package/cjs/index.js +3 -18
- package/cjs/lib/InstantSearch.js +79 -180
- package/cjs/lib/createHelpers.js +4 -11
- package/cjs/lib/formatNumber.js +0 -1
- package/cjs/lib/infiniteHitsCache/index.js +0 -2
- package/cjs/lib/infiniteHitsCache/sessionStorage.js +9 -18
- package/cjs/lib/insights/client.js +8 -34
- package/cjs/lib/insights/index.js +7 -13
- package/cjs/lib/insights/listener.js +4 -20
- package/cjs/lib/routers/history.js +63 -102
- package/cjs/lib/routers/index.js +0 -2
- package/cjs/lib/stateMappings/index.js +0 -3
- package/cjs/lib/stateMappings/simple.js +6 -13
- package/cjs/lib/stateMappings/singleIndex.js +1 -7
- package/cjs/lib/suit.js +2 -5
- package/cjs/lib/templating/index.js +0 -4
- package/cjs/lib/templating/prepareTemplateProps.js +8 -19
- package/cjs/lib/templating/renderTemplate.js +9 -24
- package/cjs/lib/utils/capitalize.js +0 -1
- package/cjs/lib/utils/checkIndexUiState.js +15 -43
- package/cjs/lib/utils/checkRendering.js +0 -2
- package/cjs/lib/utils/clearRefinements.js +2 -9
- package/cjs/lib/utils/concatHighlightedParts.js +1 -3
- package/cjs/lib/utils/createConcurrentSafePromise.js +0 -3
- package/cjs/lib/utils/createSendEventForFacet.js +7 -14
- package/cjs/lib/utils/createSendEventForHits.js +9 -33
- package/cjs/lib/utils/debounce.js +0 -3
- package/cjs/lib/utils/defer.js +0 -11
- package/cjs/lib/utils/detect-insights-client.js +0 -2
- package/cjs/lib/utils/documentation.js +2 -5
- package/cjs/lib/utils/escape-highlight.js +5 -22
- package/cjs/lib/utils/escape-html.js +9 -7
- package/cjs/lib/utils/escapeFacetValue.js +1 -5
- package/cjs/lib/utils/find.js +2 -5
- package/cjs/lib/utils/findIndex.js +0 -3
- package/cjs/lib/utils/geo-search.js +14 -34
- package/cjs/lib/utils/getAppIdAndApiKey.js +2 -3
- package/cjs/lib/utils/getContainerNode.js +0 -6
- package/cjs/lib/utils/getHighlightFromSiblings.js +0 -6
- package/cjs/lib/utils/getHighlightedParts.js +1 -4
- package/cjs/lib/utils/getObjectType.js +0 -1
- package/cjs/lib/utils/getPropertyByPath.js +0 -1
- package/cjs/lib/utils/getRefinements.js +13 -26
- package/cjs/lib/utils/getWidgetAttribute.js +0 -6
- package/cjs/lib/utils/hits-absolute-position.js +2 -6
- package/cjs/lib/utils/hits-query-id.js +2 -7
- package/cjs/lib/utils/index.js +0 -92
- package/cjs/lib/utils/isDomElement.js +0 -1
- package/cjs/lib/utils/isEqual.js +0 -8
- package/cjs/lib/utils/isFacetRefined.js +0 -1
- package/cjs/lib/utils/isFiniteNumber.js +0 -1
- package/cjs/lib/utils/isIndexWidget.js +0 -1
- package/cjs/lib/utils/isPlainObject.js +3 -11
- package/cjs/lib/utils/isSpecialClick.js +0 -1
- package/cjs/lib/utils/logger.js +3 -13
- package/cjs/lib/utils/mergeSearchParameters.js +16 -40
- package/cjs/lib/utils/noop.js +0 -1
- package/cjs/lib/utils/range.js +8 -14
- package/cjs/lib/utils/render-args.js +0 -2
- package/cjs/lib/utils/resolveSearchParameters.js +0 -3
- package/cjs/lib/utils/reverseHighlightedParts.js +2 -8
- package/cjs/lib/utils/safelyRunOnBrowser.js +7 -9
- package/cjs/lib/utils/serializer.js +1 -3
- package/cjs/lib/utils/setIndexHelperState.js +0 -5
- package/cjs/lib/utils/toArray.js +0 -1
- package/cjs/lib/utils/typedObject.js +0 -1
- package/cjs/lib/utils/uniq.js +0 -1
- package/cjs/lib/version.js +1 -1
- package/cjs/lib/voiceSearchHelper/index.js +8 -36
- package/cjs/middlewares/createInsightsMiddleware.js +15 -44
- package/cjs/middlewares/createMetadataMiddleware.js +4 -12
- package/cjs/middlewares/createRouterMiddleware.js +8 -19
- package/cjs/middlewares/index.js +0 -6
- package/cjs/types/algoliasearch.js +0 -2
- package/cjs/types/index.js +0 -28
- package/cjs/widgets/analytics/analytics.js +12 -47
- package/cjs/widgets/answers/answers.js +19 -39
- package/cjs/widgets/breadcrumb/breadcrumb.js +18 -38
- package/cjs/widgets/clear-refinements/clear-refinements.js +15 -35
- package/cjs/widgets/configure/configure.js +2 -10
- package/cjs/widgets/configure-related-items/configure-related-items.js +2 -10
- package/cjs/widgets/current-refinements/current-refinements.js +12 -30
- package/cjs/widgets/dynamic-widgets/dynamic-widgets.js +6 -25
- package/cjs/widgets/geo-search/GeoSearchRenderer.js +41 -68
- package/cjs/widgets/geo-search/createHTMLMarker.js +30 -60
- package/cjs/widgets/geo-search/defaultTemplates.js +0 -3
- package/cjs/widgets/geo-search/geo-search.js +27 -59
- package/cjs/widgets/hierarchical-menu/defaultTemplates.js +4 -7
- package/cjs/widgets/hierarchical-menu/hierarchical-menu.js +28 -47
- package/cjs/widgets/hits/hits.js +16 -37
- package/cjs/widgets/hits-per-page/hits-per-page.js +13 -31
- package/cjs/widgets/index/index.js +49 -95
- package/cjs/widgets/index.js +12 -50
- package/cjs/widgets/infinite-hits/infinite-hits.js +23 -44
- package/cjs/widgets/menu/defaultTemplates.js +3 -6
- package/cjs/widgets/menu/menu.js +23 -43
- package/cjs/widgets/menu-select/defaultTemplates.js +1 -3
- package/cjs/widgets/menu-select/menu-select.js +18 -38
- package/cjs/widgets/numeric-menu/defaultTemplates.js +3 -4
- package/cjs/widgets/numeric-menu/numeric-menu.js +17 -37
- package/cjs/widgets/pagination/pagination.js +32 -53
- package/cjs/widgets/panel/panel.js +20 -48
- package/cjs/widgets/places/places.js +16 -33
- package/cjs/widgets/powered-by/powered-by.js +10 -27
- package/cjs/widgets/query-rule-context/query-rule-context.js +2 -13
- package/cjs/widgets/query-rule-custom-data/query-rule-custom-data.js +14 -32
- package/cjs/widgets/range-input/range-input.js +23 -50
- package/cjs/widgets/range-slider/range-slider.js +28 -53
- package/cjs/widgets/rating-menu/defaultTemplates.js +8 -14
- package/cjs/widgets/rating-menu/rating-menu.js +17 -38
- package/cjs/widgets/refinement-list/defaultTemplates.js +5 -8
- package/cjs/widgets/refinement-list/refinement-list.js +39 -60
- package/cjs/widgets/relevant-sort/relevant-sort.js +10 -29
- package/cjs/widgets/search-box/defaultTemplates.js +0 -5
- package/cjs/widgets/search-box/search-box.js +31 -49
- package/cjs/widgets/sort-by/sort-by.js +11 -29
- package/cjs/widgets/stats/defaultTemplates.js +0 -1
- package/cjs/widgets/stats/stats.js +27 -57
- package/cjs/widgets/toggle-refinement/toggle-refinement.js +16 -36
- package/cjs/widgets/voice-search/defaultTemplates.js +4 -14
- package/cjs/widgets/voice-search/voice-search.js +17 -36
- package/dist/instantsearch.development.d.ts +8 -6
- package/dist/instantsearch.development.js +1722 -3088
- package/dist/instantsearch.development.js.map +1 -1
- package/dist/instantsearch.production.d.ts +8 -6
- package/dist/instantsearch.production.min.d.ts +8 -6
- package/dist/instantsearch.production.min.js +2 -2
- package/dist/instantsearch.production.min.js.map +1 -1
- package/es/components/Answers/Answers.js +6 -11
- package/es/components/Breadcrumb/Breadcrumb.js +5 -7
- package/es/components/ClearRefinements/ClearRefinements.js +4 -6
- package/es/components/CurrentRefinements/CurrentRefinements.js +7 -10
- package/es/components/GeoSearchControls/GeoSearchButton.js +6 -6
- package/es/components/GeoSearchControls/GeoSearchControls.js +11 -13
- package/es/components/GeoSearchControls/GeoSearchToggle.js +6 -6
- package/es/components/Highlight/Highlight.js +3 -7
- package/es/components/Hits/Hits.js +8 -15
- package/es/components/InfiniteHits/InfiniteHits.js +13 -20
- package/es/components/MenuSelect/MenuSelect.js +9 -13
- package/es/components/Pagination/Pagination.js +12 -15
- package/es/components/Panel/Panel.js +7 -20
- package/es/components/PoweredBy/PoweredBy.js +6 -5
- package/es/components/QueryRuleCustomData/QueryRuleCustomData.js +4 -4
- package/es/components/RangeInput/RangeInput.js +16 -43
- package/es/components/RefinementList/RefinementList.js +19 -64
- package/es/components/RefinementList/RefinementListItem.js +8 -10
- package/es/components/RelevantSort/RelevantSort.js +6 -6
- package/es/components/ReverseHighlight/ReverseHighlight.js +3 -7
- package/es/components/ReverseSnippet/ReverseSnippet.js +3 -7
- package/es/components/SearchBox/SearchBox.js +25 -63
- package/es/components/Selector/Selector.js +5 -5
- package/es/components/Slider/Pit.js +3 -7
- package/es/components/Slider/Rheostat.js +64 -129
- package/es/components/Slider/Slider.js +28 -58
- package/es/components/Snippet/Snippet.js +3 -7
- package/es/components/Stats/Stats.js +7 -15
- package/es/components/Template/Template.js +8 -32
- package/es/components/ToggleRefinement/ToggleRefinement.js +4 -6
- package/es/components/VoiceSearch/VoiceSearch.js +10 -13
- package/es/connectors/answers/connectAnswers.js +21 -35
- package/es/connectors/autocomplete/connectAutocomplete.js +8 -23
- package/es/connectors/breadcrumb/connectBreadcrumb.js +17 -46
- package/es/connectors/clear-refinements/connectClearRefinements.js +27 -43
- package/es/connectors/configure/connectConfigure.js +7 -16
- package/es/connectors/configure-related-items/connectConfigureRelatedItems.js +11 -31
- package/es/connectors/current-refinements/connectCurrentRefinements.js +18 -55
- package/es/connectors/dynamic-widgets/connectDynamicWidgets.js +17 -35
- package/es/connectors/geo-search/connectGeoSearch.js +17 -45
- package/es/connectors/hierarchical-menu/connectHierarchicalMenu.js +38 -72
- package/es/connectors/hits/connectHits.js +10 -24
- package/es/connectors/hits-per-page/connectHitsPerPage.js +15 -36
- package/es/connectors/index.d.ts +2 -1
- package/es/connectors/index.js +6 -3
- package/es/connectors/infinite-hits/connectInfiniteHits.js +26 -60
- package/es/connectors/menu/connectMenu.js +28 -64
- package/es/connectors/numeric-menu/connectNumericMenu.js +24 -76
- package/es/connectors/pagination/Paginator.js +3 -19
- package/es/connectors/pagination/connectPagination.js +8 -21
- package/es/connectors/powered-by/connectPoweredBy.js +4 -11
- package/es/connectors/query-rules/connectQueryRules.js +32 -54
- package/es/connectors/range/connectRange.js +41 -99
- package/es/connectors/rating-menu/connectRatingMenu.js +23 -77
- package/es/connectors/refinement-list/connectRefinementList.js +37 -68
- package/es/connectors/relevant-sort/connectRelevantSort.js +4 -13
- package/es/connectors/search-box/connectSearchBox.js +7 -21
- package/es/connectors/sort-by/connectSortBy.js +11 -19
- package/es/connectors/stats/connectStats.js +4 -9
- package/es/connectors/toggle-refinement/connectToggleRefinement.js +29 -61
- package/es/connectors/voice-search/connectVoiceSearch.js +13 -31
- package/es/helpers/components/Highlight.js +4 -8
- package/es/helpers/components/ReverseHighlight.js +7 -15
- package/es/helpers/components/ReverseSnippet.js +7 -15
- package/es/helpers/components/Snippet.js +4 -8
- package/es/helpers/get-insights-anonymous-user-token.js +2 -10
- package/es/helpers/highlight.js +9 -11
- package/es/helpers/insights.js +3 -10
- package/es/helpers/reverseHighlight.js +9 -11
- package/es/helpers/reverseSnippet.js +9 -11
- package/es/helpers/snippet.js +9 -11
- package/es/index.js +0 -2
- package/es/lib/InstantSearch.js +79 -170
- package/es/lib/createHelpers.js +4 -8
- package/es/lib/infiniteHitsCache/sessionStorage.js +9 -16
- package/es/lib/insights/client.js +8 -32
- package/es/lib/insights/listener.js +6 -18
- package/es/lib/routers/history.js +63 -99
- package/es/lib/stateMappings/simple.js +6 -12
- package/es/lib/stateMappings/singleIndex.js +1 -6
- package/es/lib/suit.js +2 -3
- package/es/lib/templating/prepareTemplateProps.js +8 -18
- package/es/lib/templating/renderTemplate.js +9 -20
- package/es/lib/utils/checkIndexUiState.js +18 -40
- package/es/lib/utils/clearRefinements.js +2 -8
- package/es/lib/utils/concatHighlightedParts.js +1 -1
- package/es/lib/utils/createConcurrentSafePromise.js +0 -2
- package/es/lib/utils/createSendEventForFacet.js +7 -12
- package/es/lib/utils/createSendEventForHits.js +8 -30
- package/es/lib/utils/debounce.js +0 -2
- package/es/lib/utils/defer.js +0 -10
- package/es/lib/utils/documentation.js +2 -3
- package/es/lib/utils/escape-highlight.js +3 -16
- package/es/lib/utils/escape-html.js +9 -5
- package/es/lib/utils/escapeFacetValue.js +0 -2
- package/es/lib/utils/find.js +2 -4
- package/es/lib/utils/findIndex.js +0 -2
- package/es/lib/utils/geo-search.js +14 -32
- package/es/lib/utils/getAppIdAndApiKey.js +2 -2
- package/es/lib/utils/getContainerNode.js +1 -5
- package/es/lib/utils/getHighlightFromSiblings.js +0 -3
- package/es/lib/utils/getHighlightedParts.js +1 -2
- package/es/lib/utils/getRefinements.js +13 -24
- package/es/lib/utils/getWidgetAttribute.js +0 -5
- package/es/lib/utils/hits-absolute-position.js +2 -5
- package/es/lib/utils/hits-query-id.js +2 -6
- package/es/lib/utils/isEqual.js +0 -7
- package/es/lib/utils/isPlainObject.js +3 -10
- package/es/lib/utils/logger.js +2 -12
- package/es/lib/utils/mergeSearchParameters.js +16 -37
- package/es/lib/utils/range.js +8 -13
- package/es/lib/utils/resolveSearchParameters.js +0 -2
- package/es/lib/utils/reverseHighlightedParts.js +2 -6
- package/es/lib/utils/safelyRunOnBrowser.js +7 -8
- package/es/lib/utils/setIndexHelperState.js +0 -2
- package/es/lib/version.d.ts +1 -1
- package/es/lib/version.js +1 -1
- package/es/lib/voiceSearchHelper/index.js +8 -35
- package/es/middlewares/createInsightsMiddleware.js +15 -41
- package/es/middlewares/createMetadataMiddleware.js +3 -9
- package/es/middlewares/createRouterMiddleware.js +8 -13
- package/es/types/index.js +9 -5
- package/es/widgets/analytics/analytics.js +12 -45
- package/es/widgets/answers/answers.js +19 -28
- package/es/widgets/breadcrumb/breadcrumb.js +18 -27
- package/es/widgets/clear-refinements/clear-refinements.js +15 -24
- package/es/widgets/configure/configure.js +3 -6
- package/es/widgets/configure-related-items/configure-related-items.js +2 -7
- package/es/widgets/current-refinements/current-refinements.js +12 -21
- package/es/widgets/dynamic-widgets/dynamic-widgets.js +6 -20
- package/es/widgets/geo-search/GeoSearchRenderer.js +41 -63
- package/es/widgets/geo-search/createHTMLMarker.js +30 -59
- package/es/widgets/geo-search/defaultTemplates.js +2 -2
- package/es/widgets/geo-search/geo-search.js +27 -49
- package/es/widgets/hierarchical-menu/defaultTemplates.js +5 -4
- package/es/widgets/hierarchical-menu/hierarchical-menu.js +28 -36
- package/es/widgets/hits/hits.js +16 -25
- package/es/widgets/hits-per-page/hits-per-page.js +13 -22
- package/es/widgets/index/index.js +49 -91
- package/es/widgets/index.d.ts +2 -1
- package/es/widgets/index.js +4 -3
- package/es/widgets/infinite-hits/infinite-hits.js +23 -32
- package/es/widgets/menu/defaultTemplates.js +4 -3
- package/es/widgets/menu/menu.js +23 -32
- package/es/widgets/menu-select/defaultTemplates.js +1 -1
- package/es/widgets/menu-select/menu-select.js +18 -27
- package/es/widgets/numeric-menu/defaultTemplates.js +4 -3
- package/es/widgets/numeric-menu/numeric-menu.js +17 -26
- package/es/widgets/pagination/pagination.js +32 -44
- package/es/widgets/panel/panel.js +20 -40
- package/es/widgets/places/places.js +16 -32
- package/es/widgets/powered-by/powered-by.js +10 -18
- package/es/widgets/query-rule-context/query-rule-context.js +2 -9
- package/es/widgets/query-rule-custom-data/query-rule-custom-data.js +13 -22
- package/es/widgets/range-input/range-input.js +23 -40
- package/es/widgets/range-slider/range-slider.js +28 -44
- package/es/widgets/rating-menu/defaultTemplates.js +9 -12
- package/es/widgets/rating-menu/rating-menu.js +17 -27
- package/es/widgets/refinement-list/defaultTemplates.js +6 -5
- package/es/widgets/refinement-list/refinement-list.js +39 -48
- package/es/widgets/relevant-sort/relevant-sort.js +10 -19
- package/es/widgets/search-box/defaultTemplates.js +1 -4
- package/es/widgets/search-box/search-box.js +31 -39
- package/es/widgets/sort-by/sort-by.js +11 -20
- package/es/widgets/stats/stats.js +26 -45
- package/es/widgets/toggle-refinement/toggle-refinement.js +16 -25
- package/es/widgets/voice-search/defaultTemplates.js +5 -13
- package/es/widgets/voice-search/voice-search.js +17 -26
- package/package.json +20 -119
- package/scripts/transforms/__testfixtures__/addWidget-to-addWidgets/imported.input.js +0 -1
- package/scripts/transforms/__testfixtures__/addWidget-to-addWidgets/imported.output.js +0 -1
- package/CHANGELOG.md +0 -3693
|
@@ -1,27 +1,17 @@
|
|
|
1
1
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
2
|
-
|
|
3
2
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
-
|
|
5
3
|
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); }
|
|
6
|
-
|
|
7
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
|
|
8
|
-
|
|
4
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
9
5
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
10
|
-
|
|
11
6
|
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; }
|
|
12
|
-
|
|
13
|
-
function
|
|
14
|
-
|
|
15
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
16
|
-
|
|
7
|
+
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; }
|
|
8
|
+
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
9
|
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; }
|
|
18
|
-
|
|
19
10
|
import { getRefinements, checkRendering, createDocumentationMessageGenerator, noop, warning } from "../../lib/utils/index.js";
|
|
20
11
|
var withUsage = createDocumentationMessageGenerator({
|
|
21
12
|
name: 'current-refinements',
|
|
22
13
|
connector: true
|
|
23
14
|
});
|
|
24
|
-
|
|
25
15
|
var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
|
|
26
16
|
var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;
|
|
27
17
|
checkRendering(renderFn, withUsage());
|
|
@@ -29,16 +19,14 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
|
|
|
29
19
|
if ((widgetParams || {}).includedAttributes && (widgetParams || {}).excludedAttributes) {
|
|
30
20
|
throw new Error(withUsage('The options `includedAttributes` and `excludedAttributes` cannot be used together.'));
|
|
31
21
|
}
|
|
32
|
-
|
|
33
22
|
var _ref = widgetParams || {},
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
23
|
+
includedAttributes = _ref.includedAttributes,
|
|
24
|
+
_ref$excludedAttribut = _ref.excludedAttributes,
|
|
25
|
+
excludedAttributes = _ref$excludedAttribut === void 0 ? ['query'] : _ref$excludedAttribut,
|
|
26
|
+
_ref$transformItems = _ref.transformItems,
|
|
27
|
+
transformItems = _ref$transformItems === void 0 ? function (items) {
|
|
28
|
+
return items;
|
|
29
|
+
} : _ref$transformItems;
|
|
42
30
|
return {
|
|
43
31
|
$$type: 'ais.currentRefinements',
|
|
44
32
|
init: function init(initOptions) {
|
|
@@ -63,10 +51,9 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
|
|
|
63
51
|
},
|
|
64
52
|
getWidgetRenderState: function getWidgetRenderState(_ref2) {
|
|
65
53
|
var results = _ref2.results,
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
54
|
+
scopedResults = _ref2.scopedResults,
|
|
55
|
+
_createURL = _ref2.createURL,
|
|
56
|
+
helper = _ref2.helper;
|
|
70
57
|
function getItems() {
|
|
71
58
|
if (!results) {
|
|
72
59
|
return transformItems(getRefinementsItems({
|
|
@@ -78,7 +65,6 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
|
|
|
78
65
|
results: results
|
|
79
66
|
});
|
|
80
67
|
}
|
|
81
|
-
|
|
82
68
|
return scopedResults.reduce(function (accResults, scopedResult) {
|
|
83
69
|
return accResults.concat(transformItems(getRefinementsItems({
|
|
84
70
|
results: scopedResult.results,
|
|
@@ -90,7 +76,6 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
|
|
|
90
76
|
}));
|
|
91
77
|
}, []);
|
|
92
78
|
}
|
|
93
|
-
|
|
94
79
|
var items = getItems();
|
|
95
80
|
return {
|
|
96
81
|
items: items,
|
|
@@ -107,12 +92,11 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
|
|
|
107
92
|
};
|
|
108
93
|
};
|
|
109
94
|
};
|
|
110
|
-
|
|
111
95
|
function getRefinementsItems(_ref3) {
|
|
112
96
|
var results = _ref3.results,
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
97
|
+
helper = _ref3.helper,
|
|
98
|
+
includedAttributes = _ref3.includedAttributes,
|
|
99
|
+
excludedAttributes = _ref3.excludedAttributes;
|
|
116
100
|
var includesQuery = (includedAttributes || []).indexOf('query') !== -1 || (excludedAttributes || []).indexOf('query') === -1;
|
|
117
101
|
var filterFunction = includedAttributes ? function (item) {
|
|
118
102
|
return includedAttributes.indexOf(item.attribute) !== -1;
|
|
@@ -129,7 +113,8 @@ function getRefinementsItems(_ref3) {
|
|
|
129
113
|
label: currentItem.attribute,
|
|
130
114
|
refinements: items.filter(function (result) {
|
|
131
115
|
return result.attribute === currentItem.attribute;
|
|
132
|
-
})
|
|
116
|
+
})
|
|
117
|
+
// We want to keep the order of refinements except the numeric ones.
|
|
133
118
|
.sort(function (a, b) {
|
|
134
119
|
return a.type === 'numeric' ? a.value - b.value : 0;
|
|
135
120
|
}),
|
|
@@ -139,55 +124,41 @@ function getRefinementsItems(_ref3) {
|
|
|
139
124
|
}]);
|
|
140
125
|
}, []);
|
|
141
126
|
}
|
|
142
|
-
|
|
143
127
|
function clearRefinementFromState(state, refinement) {
|
|
144
128
|
state = state.resetPage();
|
|
145
|
-
|
|
146
129
|
switch (refinement.type) {
|
|
147
130
|
case 'facet':
|
|
148
131
|
return state.removeFacetRefinement(refinement.attribute, String(refinement.value));
|
|
149
|
-
|
|
150
132
|
case 'disjunctive':
|
|
151
133
|
return state.removeDisjunctiveFacetRefinement(refinement.attribute, String(refinement.value));
|
|
152
|
-
|
|
153
134
|
case 'hierarchical':
|
|
154
135
|
return state.removeHierarchicalFacetRefinement(refinement.attribute);
|
|
155
|
-
|
|
156
136
|
case 'exclude':
|
|
157
137
|
return state.removeExcludeRefinement(refinement.attribute, String(refinement.value));
|
|
158
|
-
|
|
159
138
|
case 'numeric':
|
|
160
139
|
return state.removeNumericRefinement(refinement.attribute, refinement.operator, String(refinement.value));
|
|
161
|
-
|
|
162
140
|
case 'tag':
|
|
163
141
|
return state.removeTagRefinement(String(refinement.value));
|
|
164
|
-
|
|
165
142
|
case 'query':
|
|
166
143
|
return state.setQueryParameter('query', '');
|
|
167
|
-
|
|
168
144
|
default:
|
|
169
145
|
process.env.NODE_ENV === 'development' ? warning(false, "The refinement type \"".concat(refinement.type, "\" does not exist and cannot be cleared from the current refinements.")) : void 0;
|
|
170
146
|
return state;
|
|
171
147
|
}
|
|
172
148
|
}
|
|
173
|
-
|
|
174
149
|
function clearRefinement(helper, refinement) {
|
|
175
150
|
helper.setState(clearRefinementFromState(helper.state, refinement)).search();
|
|
176
151
|
}
|
|
177
|
-
|
|
178
152
|
function getOperatorSymbol(operator) {
|
|
179
153
|
switch (operator) {
|
|
180
154
|
case '>=':
|
|
181
155
|
return '≥';
|
|
182
|
-
|
|
183
156
|
case '<=':
|
|
184
157
|
return '≤';
|
|
185
|
-
|
|
186
158
|
default:
|
|
187
159
|
return operator;
|
|
188
160
|
}
|
|
189
161
|
}
|
|
190
|
-
|
|
191
162
|
function normalizeRefinement(refinement) {
|
|
192
163
|
var value = getValue(refinement);
|
|
193
164
|
var label = refinement.operator ? "".concat(getOperatorSymbol(refinement.operator), " ").concat(refinement.name) : refinement.name;
|
|
@@ -197,32 +168,24 @@ function normalizeRefinement(refinement) {
|
|
|
197
168
|
value: value,
|
|
198
169
|
label: label
|
|
199
170
|
};
|
|
200
|
-
|
|
201
171
|
if (refinement.operator !== undefined) {
|
|
202
172
|
normalizedRefinement.operator = refinement.operator;
|
|
203
173
|
}
|
|
204
|
-
|
|
205
174
|
if (refinement.count !== undefined) {
|
|
206
175
|
normalizedRefinement.count = refinement.count;
|
|
207
176
|
}
|
|
208
|
-
|
|
209
177
|
if (refinement.exhaustive !== undefined) {
|
|
210
178
|
normalizedRefinement.exhaustive = refinement.exhaustive;
|
|
211
179
|
}
|
|
212
|
-
|
|
213
180
|
return normalizedRefinement;
|
|
214
181
|
}
|
|
215
|
-
|
|
216
182
|
function getValue(refinement) {
|
|
217
183
|
if (refinement.type === 'numeric') {
|
|
218
184
|
return Number(refinement.name);
|
|
219
185
|
}
|
|
220
|
-
|
|
221
186
|
if ('escapedValue' in refinement) {
|
|
222
187
|
return refinement.escapedValue;
|
|
223
188
|
}
|
|
224
|
-
|
|
225
189
|
return refinement.name;
|
|
226
190
|
}
|
|
227
|
-
|
|
228
191
|
export default connectCurrentRefinements;
|
|
@@ -1,43 +1,35 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
2
|
-
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
|
-
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
5
3
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
-
|
|
7
|
-
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); }
|
|
8
|
-
|
|
4
|
+
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
5
|
import { checkRendering, createDocumentationMessageGenerator, getWidgetAttribute, noop, warning } from "../../lib/utils/index.js";
|
|
10
6
|
var withUsage = createDocumentationMessageGenerator({
|
|
11
7
|
name: 'dynamic-widgets',
|
|
12
8
|
connector: true
|
|
13
9
|
});
|
|
14
10
|
var MAX_WILDCARD_FACETS = 20;
|
|
15
|
-
|
|
16
11
|
var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
17
12
|
var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;
|
|
18
13
|
checkRendering(renderFn, withUsage());
|
|
19
14
|
return function (widgetParams) {
|
|
20
15
|
var widgets = widgetParams.widgets,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
16
|
+
_widgetParams$maxValu = widgetParams.maxValuesPerFacet,
|
|
17
|
+
maxValuesPerFacet = _widgetParams$maxValu === void 0 ? 20 : _widgetParams$maxValu,
|
|
18
|
+
_widgetParams$facets = widgetParams.facets,
|
|
19
|
+
facets = _widgetParams$facets === void 0 ? ['*'] : _widgetParams$facets,
|
|
20
|
+
_widgetParams$transfo = widgetParams.transformItems,
|
|
21
|
+
transformItems = _widgetParams$transfo === void 0 ? function (items) {
|
|
22
|
+
return items;
|
|
23
|
+
} : _widgetParams$transfo,
|
|
24
|
+
fallbackWidget = widgetParams.fallbackWidget;
|
|
31
25
|
if (!(widgets && Array.isArray(widgets) && widgets.every(function (widget) {
|
|
32
26
|
return _typeof(widget) === 'object';
|
|
33
27
|
}))) {
|
|
34
28
|
throw new Error(withUsage('The `widgets` option expects an array of widgets.'));
|
|
35
29
|
}
|
|
36
|
-
|
|
37
30
|
if (!(Array.isArray(facets) && facets.length <= 1 && (facets[0] === '*' || facets[0] === undefined))) {
|
|
38
31
|
throw new Error(withUsage("The `facets` option only accepts [] or [\"*\"], you passed ".concat(JSON.stringify(facets))));
|
|
39
32
|
}
|
|
40
|
-
|
|
41
33
|
var localWidgets = new Map();
|
|
42
34
|
return {
|
|
43
35
|
$$type: 'ais.dynamicWidgets',
|
|
@@ -58,7 +50,6 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
|
58
50
|
var renderState = this.getWidgetRenderState(renderOptions);
|
|
59
51
|
var widgetsToUnmount = [];
|
|
60
52
|
var widgetsToMount = [];
|
|
61
|
-
|
|
62
53
|
if (fallbackWidget) {
|
|
63
54
|
renderState.attributesToRender.forEach(function (attribute) {
|
|
64
55
|
if (!localWidgets.has(attribute)) {
|
|
@@ -72,12 +63,10 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
|
72
63
|
}
|
|
73
64
|
});
|
|
74
65
|
}
|
|
75
|
-
|
|
76
66
|
localWidgets.forEach(function (_ref, attribute) {
|
|
77
67
|
var widget = _ref.widget,
|
|
78
|
-
|
|
68
|
+
isMounted = _ref.isMounted;
|
|
79
69
|
var shouldMount = renderState.attributesToRender.indexOf(attribute) > -1;
|
|
80
|
-
|
|
81
70
|
if (!isMounted && shouldMount) {
|
|
82
71
|
widgetsToMount.push(widget);
|
|
83
72
|
localWidgets.set(attribute, {
|
|
@@ -92,10 +81,10 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
|
92
81
|
});
|
|
93
82
|
}
|
|
94
83
|
});
|
|
95
|
-
parent.addWidgets(widgetsToMount);
|
|
84
|
+
parent.addWidgets(widgetsToMount);
|
|
85
|
+
// make sure this only happens after the regular render, otherwise it
|
|
96
86
|
// happens too quick, since render is "deferred" for the next microtask,
|
|
97
87
|
// so this needs to be a whole task later
|
|
98
|
-
|
|
99
88
|
setTimeout(function () {
|
|
100
89
|
return parent.removeWidgets(widgetsToUnmount);
|
|
101
90
|
}, 0);
|
|
@@ -108,8 +97,7 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
|
108
97
|
var toRemove = [];
|
|
109
98
|
localWidgets.forEach(function (_ref3) {
|
|
110
99
|
var widget = _ref3.widget,
|
|
111
|
-
|
|
112
|
-
|
|
100
|
+
isMounted = _ref3.isMounted;
|
|
113
101
|
if (isMounted) {
|
|
114
102
|
toRemove.push(widget);
|
|
115
103
|
}
|
|
@@ -132,25 +120,20 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
|
132
120
|
},
|
|
133
121
|
getWidgetRenderState: function getWidgetRenderState(_ref4) {
|
|
134
122
|
var _results$renderingCon, _results$renderingCon2, _results$renderingCon3, _results$renderingCon4;
|
|
135
|
-
|
|
136
123
|
var results = _ref4.results,
|
|
137
|
-
|
|
138
|
-
|
|
124
|
+
state = _ref4.state;
|
|
139
125
|
if (!results) {
|
|
140
126
|
return {
|
|
141
127
|
attributesToRender: [],
|
|
142
128
|
widgetParams: widgetParams
|
|
143
129
|
};
|
|
144
130
|
}
|
|
145
|
-
|
|
146
131
|
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 : [], {
|
|
147
132
|
results: results
|
|
148
133
|
});
|
|
149
|
-
|
|
150
134
|
if (!Array.isArray(attributesToRender)) {
|
|
151
135
|
throw new Error(withUsage('The `transformItems` option expects a function that returns an Array.'));
|
|
152
136
|
}
|
|
153
|
-
|
|
154
137
|
process.env.NODE_ENV === 'development' ? 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;
|
|
155
138
|
process.env.NODE_ENV === 'development' ? 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;
|
|
156
139
|
return {
|
|
@@ -161,5 +144,4 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
|
|
|
161
144
|
};
|
|
162
145
|
};
|
|
163
146
|
};
|
|
164
|
-
|
|
165
147
|
export default connectDynamicWidgets;
|
|
@@ -1,27 +1,22 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
2
|
-
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
|
-
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
5
3
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
-
|
|
7
4
|
import { checkRendering, aroundLatLngToPosition, insideBoundingBoxToBoundingBox, createDocumentationMessageGenerator, createSendEventForHits, noop } from "../../lib/utils/index.js";
|
|
8
5
|
var withUsage = createDocumentationMessageGenerator({
|
|
9
6
|
name: 'geo-search',
|
|
10
7
|
connector: true
|
|
11
|
-
});
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
// in this connector, we assume insideBoundingBox is only a string,
|
|
12
11
|
// even though in the helper it's defined as number[][] alone.
|
|
13
12
|
// This can be done, since the connector assumes "control" of the parameter
|
|
14
|
-
|
|
15
13
|
function getBoundingBoxAsString(state) {
|
|
16
14
|
return state.insideBoundingBox || '';
|
|
17
15
|
}
|
|
18
|
-
|
|
19
16
|
function setBoundingBoxAsString(state, value) {
|
|
20
17
|
return state.setQueryParameter('insideBoundingBox', value);
|
|
21
18
|
}
|
|
22
|
-
|
|
23
19
|
var $$type = 'ais.geoSearch';
|
|
24
|
-
|
|
25
20
|
/**
|
|
26
21
|
* 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
22
|
*
|
|
@@ -36,13 +31,12 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
|
36
31
|
checkRendering(renderFn, withUsage());
|
|
37
32
|
return function (widgetParams) {
|
|
38
33
|
var _ref = widgetParams || {},
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
34
|
+
_ref$enableRefineOnMa = _ref.enableRefineOnMapMove,
|
|
35
|
+
enableRefineOnMapMove = _ref$enableRefineOnMa === void 0 ? true : _ref$enableRefineOnMa,
|
|
36
|
+
_ref$transformItems = _ref.transformItems,
|
|
37
|
+
transformItems = _ref$transformItems === void 0 ? function (items) {
|
|
38
|
+
return items;
|
|
39
|
+
} : _ref$transformItems;
|
|
46
40
|
var widgetState = {
|
|
47
41
|
isRefineOnMapMove: enableRefineOnMapMove,
|
|
48
42
|
// @MAJOR hasMapMoveSinceLastRefine -> hasMapMovedSinceLastRefine
|
|
@@ -52,72 +46,59 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
|
52
46
|
internalToggleRefineOnMapMove: noop,
|
|
53
47
|
internalSetMapMoveSinceLastRefine: noop
|
|
54
48
|
};
|
|
55
|
-
|
|
56
49
|
var getPositionFromState = function getPositionFromState(state) {
|
|
57
50
|
return state.aroundLatLng ? aroundLatLngToPosition(state.aroundLatLng) : undefined;
|
|
58
51
|
};
|
|
59
|
-
|
|
60
52
|
var getCurrentRefinementFromState = function getCurrentRefinementFromState(state) {
|
|
61
53
|
return state.insideBoundingBox && insideBoundingBoxToBoundingBox(state.insideBoundingBox);
|
|
62
54
|
};
|
|
63
|
-
|
|
64
55
|
var refine = function refine(helper) {
|
|
65
56
|
return function (_ref2) {
|
|
66
57
|
var ne = _ref2.northEast,
|
|
67
|
-
|
|
58
|
+
sw = _ref2.southWest;
|
|
68
59
|
var boundingBox = [ne.lat, ne.lng, sw.lat, sw.lng].join();
|
|
69
60
|
helper.setState(setBoundingBoxAsString(helper.state, boundingBox).resetPage()).search();
|
|
70
61
|
widgetState.hasMapMoveSinceLastRefine = false;
|
|
71
62
|
widgetState.lastRefineBoundingBox = boundingBox;
|
|
72
63
|
};
|
|
73
64
|
};
|
|
74
|
-
|
|
75
65
|
var clearMapRefinement = function clearMapRefinement(helper) {
|
|
76
66
|
return function () {
|
|
77
67
|
helper.setQueryParameter('insideBoundingBox', undefined).search();
|
|
78
68
|
};
|
|
79
69
|
};
|
|
80
|
-
|
|
81
70
|
var isRefinedWithMap = function isRefinedWithMap(state) {
|
|
82
71
|
return function () {
|
|
83
72
|
return Boolean(state.insideBoundingBox);
|
|
84
73
|
};
|
|
85
74
|
};
|
|
86
|
-
|
|
87
75
|
var toggleRefineOnMapMove = function toggleRefineOnMapMove() {
|
|
88
76
|
return widgetState.internalToggleRefineOnMapMove();
|
|
89
77
|
};
|
|
90
|
-
|
|
91
78
|
var createInternalToggleRefinementOnMapMove = function createInternalToggleRefinementOnMapMove(renderOptions, render) {
|
|
92
79
|
return function () {
|
|
93
80
|
widgetState.isRefineOnMapMove = !widgetState.isRefineOnMapMove;
|
|
94
81
|
render(renderOptions);
|
|
95
82
|
};
|
|
96
83
|
};
|
|
97
|
-
|
|
98
84
|
var isRefineOnMapMove = function isRefineOnMapMove() {
|
|
99
85
|
return widgetState.isRefineOnMapMove;
|
|
100
86
|
};
|
|
101
|
-
|
|
102
87
|
var setMapMoveSinceLastRefine = function setMapMoveSinceLastRefine() {
|
|
103
88
|
return widgetState.internalSetMapMoveSinceLastRefine();
|
|
104
89
|
};
|
|
105
|
-
|
|
106
90
|
var createInternalSetMapMoveSinceLastRefine = function createInternalSetMapMoveSinceLastRefine(renderOptions, render) {
|
|
107
91
|
return function () {
|
|
108
92
|
var shouldTriggerRender = widgetState.hasMapMoveSinceLastRefine !== true;
|
|
109
93
|
widgetState.hasMapMoveSinceLastRefine = true;
|
|
110
|
-
|
|
111
94
|
if (shouldTriggerRender) {
|
|
112
95
|
render(renderOptions);
|
|
113
96
|
}
|
|
114
97
|
};
|
|
115
98
|
};
|
|
116
|
-
|
|
117
99
|
var hasMapMoveSinceLastRefine = function hasMapMoveSinceLastRefine() {
|
|
118
100
|
return widgetState.hasMapMoveSinceLastRefine;
|
|
119
101
|
};
|
|
120
|
-
|
|
121
102
|
var sendEvent;
|
|
122
103
|
return {
|
|
123
104
|
$$type: $$type,
|
|
@@ -132,18 +113,16 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
|
132
113
|
},
|
|
133
114
|
render: function render(renderArgs) {
|
|
134
115
|
var helper = renderArgs.helper,
|
|
135
|
-
|
|
136
|
-
var isFirstRendering = false;
|
|
116
|
+
instantSearchInstance = renderArgs.instantSearchInstance;
|
|
117
|
+
var isFirstRendering = false;
|
|
118
|
+
// We don't use the state provided by the render function because we need
|
|
137
119
|
// to be sure that the state is the latest one for the following condition
|
|
138
|
-
|
|
139
120
|
var state = helper.state;
|
|
140
121
|
var positionChangedSinceLastRefine = Boolean(state.aroundLatLng) && Boolean(widgetState.lastRefinePosition) && state.aroundLatLng !== widgetState.lastRefinePosition;
|
|
141
122
|
var boundingBoxChangedSinceLastRefine = !state.insideBoundingBox && Boolean(widgetState.lastRefineBoundingBox) && state.insideBoundingBox !== widgetState.lastRefineBoundingBox;
|
|
142
|
-
|
|
143
123
|
if (positionChangedSinceLastRefine || boundingBoxChangedSinceLastRefine) {
|
|
144
124
|
widgetState.hasMapMoveSinceLastRefine = false;
|
|
145
125
|
}
|
|
146
|
-
|
|
147
126
|
widgetState.lastRefinePosition = state.aroundLatLng || '';
|
|
148
127
|
widgetState.lastRefineBoundingBox = getBoundingBoxAsString(state);
|
|
149
128
|
widgetState.internalToggleRefineOnMapMove = createInternalToggleRefinementOnMapMove(renderArgs, this.render.bind(this));
|
|
@@ -156,15 +135,14 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
|
156
135
|
},
|
|
157
136
|
getWidgetRenderState: function getWidgetRenderState(renderOptions) {
|
|
158
137
|
var helper = renderOptions.helper,
|
|
159
|
-
|
|
160
|
-
|
|
138
|
+
results = renderOptions.results,
|
|
139
|
+
instantSearchInstance = renderOptions.instantSearchInstance;
|
|
161
140
|
var state = helper.state;
|
|
162
141
|
var items = results ? transformItems(results.hits.filter(function (hit) {
|
|
163
142
|
return hit._geoloc;
|
|
164
143
|
}), {
|
|
165
144
|
results: results
|
|
166
145
|
}) : [];
|
|
167
|
-
|
|
168
146
|
if (!sendEvent) {
|
|
169
147
|
sendEvent = createSendEventForHits({
|
|
170
148
|
instantSearchInstance: instantSearchInstance,
|
|
@@ -172,7 +150,6 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
|
172
150
|
widgetType: $$type
|
|
173
151
|
});
|
|
174
152
|
}
|
|
175
|
-
|
|
176
153
|
return {
|
|
177
154
|
items: items,
|
|
178
155
|
position: getPositionFromState(state),
|
|
@@ -201,11 +178,9 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
|
201
178
|
getWidgetUiState: function getWidgetUiState(uiState, _ref4) {
|
|
202
179
|
var searchParameters = _ref4.searchParameters;
|
|
203
180
|
var boundingBox = getBoundingBoxAsString(searchParameters);
|
|
204
|
-
|
|
205
181
|
if (!boundingBox || uiState && uiState.geoSearch && uiState.geoSearch.boundingBox === boundingBox) {
|
|
206
182
|
return uiState;
|
|
207
183
|
}
|
|
208
|
-
|
|
209
184
|
return _objectSpread(_objectSpread({}, uiState), {}, {
|
|
210
185
|
geoSearch: {
|
|
211
186
|
boundingBox: boundingBox
|
|
@@ -214,15 +189,12 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
|
|
|
214
189
|
},
|
|
215
190
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {
|
|
216
191
|
var uiState = _ref5.uiState;
|
|
217
|
-
|
|
218
192
|
if (!uiState || !uiState.geoSearch) {
|
|
219
193
|
return searchParameters.setQueryParameter('insideBoundingBox', undefined);
|
|
220
194
|
}
|
|
221
|
-
|
|
222
195
|
return setBoundingBoxAsString(searchParameters, uiState.geoSearch.boundingBox);
|
|
223
196
|
}
|
|
224
197
|
};
|
|
225
198
|
};
|
|
226
199
|
};
|
|
227
|
-
|
|
228
200
|
export default connectGeoSearch;
|