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