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,122 +4,99 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.mergeSearchParameters = void 0;
|
|
7
|
-
|
|
8
7
|
var _findIndex = require("./findIndex.js");
|
|
9
|
-
|
|
10
8
|
var _uniq = require("./uniq.js");
|
|
11
|
-
|
|
12
|
-
function
|
|
13
|
-
|
|
14
|
-
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; }
|
|
15
|
-
|
|
9
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
10
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
16
11
|
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; }
|
|
17
|
-
|
|
18
12
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
19
|
-
|
|
20
13
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
21
|
-
|
|
22
14
|
var mergeWithRest = function mergeWithRest(left, right) {
|
|
23
15
|
var facets = right.facets,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
16
|
+
disjunctiveFacets = right.disjunctiveFacets,
|
|
17
|
+
facetsRefinements = right.facetsRefinements,
|
|
18
|
+
facetsExcludes = right.facetsExcludes,
|
|
19
|
+
disjunctiveFacetsRefinements = right.disjunctiveFacetsRefinements,
|
|
20
|
+
numericRefinements = right.numericRefinements,
|
|
21
|
+
tagRefinements = right.tagRefinements,
|
|
22
|
+
hierarchicalFacets = right.hierarchicalFacets,
|
|
23
|
+
hierarchicalFacetsRefinements = right.hierarchicalFacetsRefinements,
|
|
24
|
+
ruleContexts = right.ruleContexts,
|
|
25
|
+
rest = _objectWithoutProperties(right, ["facets", "disjunctiveFacets", "facetsRefinements", "facetsExcludes", "disjunctiveFacetsRefinements", "numericRefinements", "tagRefinements", "hierarchicalFacets", "hierarchicalFacetsRefinements", "ruleContexts"]);
|
|
35
26
|
return left.setQueryParameters(rest);
|
|
36
|
-
};
|
|
37
|
-
|
|
27
|
+
};
|
|
38
28
|
|
|
29
|
+
// Merge facets
|
|
39
30
|
var mergeFacets = function mergeFacets(left, right) {
|
|
40
31
|
return right.facets.reduce(function (_, name) {
|
|
41
32
|
return _.addFacet(name);
|
|
42
33
|
}, left);
|
|
43
34
|
};
|
|
44
|
-
|
|
45
35
|
var mergeDisjunctiveFacets = function mergeDisjunctiveFacets(left, right) {
|
|
46
36
|
return right.disjunctiveFacets.reduce(function (_, name) {
|
|
47
37
|
return _.addDisjunctiveFacet(name);
|
|
48
38
|
}, left);
|
|
49
39
|
};
|
|
50
|
-
|
|
51
40
|
var mergeHierarchicalFacets = function mergeHierarchicalFacets(left, right) {
|
|
52
41
|
return left.setQueryParameters({
|
|
53
42
|
hierarchicalFacets: right.hierarchicalFacets.reduce(function (facets, facet) {
|
|
54
43
|
var index = (0, _findIndex.findIndex)(facets, function (_) {
|
|
55
44
|
return _.name === facet.name;
|
|
56
45
|
});
|
|
57
|
-
|
|
58
46
|
if (index === -1) {
|
|
59
47
|
return facets.concat(facet);
|
|
60
48
|
}
|
|
61
|
-
|
|
62
49
|
var nextFacets = facets.slice();
|
|
63
50
|
nextFacets.splice(index, 1, facet);
|
|
64
51
|
return nextFacets;
|
|
65
52
|
}, left.hierarchicalFacets)
|
|
66
53
|
});
|
|
67
|
-
};
|
|
68
|
-
|
|
54
|
+
};
|
|
69
55
|
|
|
56
|
+
// Merge facet refinements
|
|
70
57
|
var mergeTagRefinements = function mergeTagRefinements(left, right) {
|
|
71
58
|
return right.tagRefinements.reduce(function (_, value) {
|
|
72
59
|
return _.addTagRefinement(value);
|
|
73
60
|
}, left);
|
|
74
61
|
};
|
|
75
|
-
|
|
76
62
|
var mergeFacetRefinements = function mergeFacetRefinements(left, right) {
|
|
77
63
|
return left.setQueryParameters({
|
|
78
64
|
facetsRefinements: _objectSpread(_objectSpread({}, left.facetsRefinements), right.facetsRefinements)
|
|
79
65
|
});
|
|
80
66
|
};
|
|
81
|
-
|
|
82
67
|
var mergeFacetsExcludes = function mergeFacetsExcludes(left, right) {
|
|
83
68
|
return left.setQueryParameters({
|
|
84
69
|
facetsExcludes: _objectSpread(_objectSpread({}, left.facetsExcludes), right.facetsExcludes)
|
|
85
70
|
});
|
|
86
71
|
};
|
|
87
|
-
|
|
88
72
|
var mergeDisjunctiveFacetsRefinements = function mergeDisjunctiveFacetsRefinements(left, right) {
|
|
89
73
|
return left.setQueryParameters({
|
|
90
74
|
disjunctiveFacetsRefinements: _objectSpread(_objectSpread({}, left.disjunctiveFacetsRefinements), right.disjunctiveFacetsRefinements)
|
|
91
75
|
});
|
|
92
76
|
};
|
|
93
|
-
|
|
94
77
|
var mergeNumericRefinements = function mergeNumericRefinements(left, right) {
|
|
95
78
|
return left.setQueryParameters({
|
|
96
79
|
numericRefinements: _objectSpread(_objectSpread({}, left.numericRefinements), right.numericRefinements)
|
|
97
80
|
});
|
|
98
81
|
};
|
|
99
|
-
|
|
100
82
|
var mergeHierarchicalFacetsRefinements = function mergeHierarchicalFacetsRefinements(left, right) {
|
|
101
83
|
return left.setQueryParameters({
|
|
102
84
|
hierarchicalFacetsRefinements: _objectSpread(_objectSpread({}, left.hierarchicalFacetsRefinements), right.hierarchicalFacetsRefinements)
|
|
103
85
|
});
|
|
104
86
|
};
|
|
105
|
-
|
|
106
87
|
var mergeRuleContexts = function mergeRuleContexts(left, right) {
|
|
107
88
|
var ruleContexts = (0, _uniq.uniq)([].concat(left.ruleContexts).concat(right.ruleContexts).filter(Boolean));
|
|
108
|
-
|
|
109
89
|
if (ruleContexts.length > 0) {
|
|
110
90
|
return left.setQueryParameters({
|
|
111
91
|
ruleContexts: ruleContexts
|
|
112
92
|
});
|
|
113
93
|
}
|
|
114
|
-
|
|
115
94
|
return left;
|
|
116
95
|
};
|
|
117
|
-
|
|
118
96
|
var mergeSearchParameters = function mergeSearchParameters() {
|
|
119
97
|
for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
120
98
|
parameters[_key] = arguments[_key];
|
|
121
99
|
}
|
|
122
|
-
|
|
123
100
|
return parameters.reduce(function (left, right) {
|
|
124
101
|
var hierarchicalFacetsRefinementsMerged = mergeHierarchicalFacetsRefinements(left, right);
|
|
125
102
|
var hierarchicalFacetsMerged = mergeHierarchicalFacets(hierarchicalFacetsRefinementsMerged, right);
|
|
@@ -134,5 +111,4 @@ var mergeSearchParameters = function mergeSearchParameters() {
|
|
|
134
111
|
return mergeWithRest(facetsMerged, right);
|
|
135
112
|
});
|
|
136
113
|
};
|
|
137
|
-
|
|
138
114
|
exports.mergeSearchParameters = mergeSearchParameters;
|
package/cjs/lib/utils/noop.js
CHANGED
package/cjs/lib/utils/range.js
CHANGED
|
@@ -4,32 +4,26 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.range = range;
|
|
7
|
-
|
|
8
7
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
9
|
-
|
|
10
8
|
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."); }
|
|
11
|
-
|
|
12
9
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
13
|
-
|
|
14
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
|
|
15
|
-
|
|
10
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
16
11
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
17
|
-
|
|
18
12
|
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; }
|
|
19
|
-
|
|
20
13
|
function range(_ref) {
|
|
21
14
|
var _ref$start = _ref.start,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
15
|
+
start = _ref$start === void 0 ? 0 : _ref$start,
|
|
16
|
+
end = _ref.end,
|
|
17
|
+
_ref$step = _ref.step,
|
|
18
|
+
step = _ref$step === void 0 ? 1 : _ref$step;
|
|
26
19
|
// We can't divide by 0 so we re-assign the step to 1 if it happens.
|
|
27
|
-
var limitStep = step === 0 ? 1 : step;
|
|
20
|
+
var limitStep = step === 0 ? 1 : step;
|
|
21
|
+
|
|
22
|
+
// In some cases the array to create has a decimal length.
|
|
28
23
|
// We therefore need to round the value.
|
|
29
24
|
// Example:
|
|
30
25
|
// { start: 1, end: 5000, step: 500 }
|
|
31
26
|
// => Array length = (5000 - 1) / 500 = 9.998
|
|
32
|
-
|
|
33
27
|
var arrayLength = Math.round((end - start) / limitStep);
|
|
34
28
|
return _toConsumableArray(Array(arrayLength)).map(function (_, current) {
|
|
35
29
|
return start + current * limitStep;
|
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.createInitArgs = createInitArgs;
|
|
7
7
|
exports.createRenderArgs = createRenderArgs;
|
|
8
|
-
|
|
9
8
|
function createInitArgs(instantSearchInstance, parent, uiState) {
|
|
10
9
|
var helper = parent.getHelper();
|
|
11
10
|
return {
|
|
@@ -25,7 +24,6 @@ function createInitArgs(instantSearchInstance, parent, uiState) {
|
|
|
25
24
|
error: instantSearchInstance.error
|
|
26
25
|
};
|
|
27
26
|
}
|
|
28
|
-
|
|
29
27
|
function createRenderArgs(instantSearchInstance, parent) {
|
|
30
28
|
var results = parent.getResults();
|
|
31
29
|
return {
|
|
@@ -4,15 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.resolveSearchParameters = resolveSearchParameters;
|
|
7
|
-
|
|
8
7
|
function resolveSearchParameters(current) {
|
|
9
8
|
var parent = current.getParent();
|
|
10
9
|
var states = [current.getHelper().state];
|
|
11
|
-
|
|
12
10
|
while (parent !== null) {
|
|
13
11
|
states = [parent.getHelper().state].concat(states);
|
|
14
12
|
parent = parent.getParent();
|
|
15
13
|
}
|
|
16
|
-
|
|
17
14
|
return states;
|
|
18
15
|
}
|
|
@@ -4,15 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.reverseHighlightedParts = reverseHighlightedParts;
|
|
7
|
-
|
|
8
7
|
var _getHighlightFromSiblings = require("./getHighlightFromSiblings.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
|
function reverseHighlightedParts(parts) {
|
|
17
12
|
if (!parts.some(function (part) {
|
|
18
13
|
return part.isHighlighted;
|
|
@@ -23,7 +18,6 @@ function reverseHighlightedParts(parts) {
|
|
|
23
18
|
});
|
|
24
19
|
});
|
|
25
20
|
}
|
|
26
|
-
|
|
27
21
|
return parts.map(function (part, i) {
|
|
28
22
|
return _objectSpread(_objectSpread({}, part), {}, {
|
|
29
23
|
isHighlighted: !(0, _getHighlightFromSiblings.getHighlightFromSiblings)(parts, i)
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.safelyRunOnBrowser = safelyRunOnBrowser;
|
|
7
|
-
|
|
8
7
|
// eslint-disable-next-line no-restricted-globals
|
|
9
8
|
|
|
10
9
|
/**
|
|
@@ -12,18 +11,17 @@ exports.safelyRunOnBrowser = safelyRunOnBrowser;
|
|
|
12
11
|
*/
|
|
13
12
|
function safelyRunOnBrowser(callback) {
|
|
14
13
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
fallback: function fallback() {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
fallback = _ref.fallback;
|
|
21
19
|
// eslint-disable-next-line no-restricted-globals
|
|
22
20
|
if (typeof window === 'undefined') {
|
|
23
21
|
return fallback();
|
|
24
|
-
}
|
|
25
|
-
|
|
22
|
+
}
|
|
26
23
|
|
|
24
|
+
// eslint-disable-next-line no-restricted-globals
|
|
27
25
|
return callback({
|
|
28
26
|
window: window
|
|
29
27
|
});
|
|
@@ -3,13 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.serializePayload = serializePayload;
|
|
7
6
|
exports.deserializePayload = deserializePayload;
|
|
8
|
-
|
|
7
|
+
exports.serializePayload = serializePayload;
|
|
9
8
|
function serializePayload(payload) {
|
|
10
9
|
return btoa(encodeURIComponent(JSON.stringify(payload)));
|
|
11
10
|
}
|
|
12
|
-
|
|
13
11
|
function deserializePayload(serialized) {
|
|
14
12
|
return JSON.parse(decodeURIComponent(atob(serialized)));
|
|
15
13
|
}
|
|
@@ -4,21 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.setIndexHelperState = setIndexHelperState;
|
|
7
|
-
|
|
8
7
|
var _isIndexWidget = require("./isIndexWidget.js");
|
|
9
|
-
|
|
10
8
|
var _checkIndexUiState = require("./checkIndexUiState.js");
|
|
11
|
-
|
|
12
9
|
function setIndexHelperState(finalUiState, indexWidget) {
|
|
13
10
|
var nextIndexUiState = finalUiState[indexWidget.getIndexId()] || {};
|
|
14
|
-
|
|
15
11
|
if (process.env.NODE_ENV === 'development') {
|
|
16
12
|
(0, _checkIndexUiState.checkIndexUiState)({
|
|
17
13
|
index: indexWidget,
|
|
18
14
|
indexUiState: nextIndexUiState
|
|
19
15
|
});
|
|
20
16
|
}
|
|
21
|
-
|
|
22
17
|
indexWidget.getHelper().setState(indexWidget.getWidgetSearchParameters(indexWidget.getHelper().state, {
|
|
23
18
|
uiState: nextIndexUiState
|
|
24
19
|
}));
|
package/cjs/lib/utils/toArray.js
CHANGED
package/cjs/lib/utils/uniq.js
CHANGED
package/cjs/lib/version.js
CHANGED
|
@@ -4,26 +4,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
function
|
|
9
|
-
|
|
10
|
-
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; }
|
|
11
|
-
|
|
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; }
|
|
12
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; }
|
|
13
|
-
|
|
14
10
|
// `SpeechRecognition` is an API used on the browser so we can safely disable
|
|
15
11
|
// the `window` check.
|
|
16
|
-
|
|
17
12
|
/* eslint-disable no-restricted-globals */
|
|
18
|
-
|
|
19
13
|
/* global SpeechRecognition SpeechRecognitionEvent */
|
|
14
|
+
|
|
20
15
|
var createVoiceSearchHelper = function createVoiceSearchHelper(_ref) {
|
|
21
16
|
var searchAsYouSpeak = _ref.searchAsYouSpeak,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
language = _ref.language,
|
|
18
|
+
onQueryChange = _ref.onQueryChange,
|
|
19
|
+
onStateChange = _ref.onStateChange;
|
|
25
20
|
var SpeechRecognitionAPI = window.webkitSpeechRecognition || window.SpeechRecognition;
|
|
26
|
-
|
|
27
21
|
var getDefaultState = function getDefaultState(status) {
|
|
28
22
|
return {
|
|
29
23
|
status: status,
|
|
@@ -32,96 +26,77 @@ var createVoiceSearchHelper = function createVoiceSearchHelper(_ref) {
|
|
|
32
26
|
errorCode: undefined
|
|
33
27
|
};
|
|
34
28
|
};
|
|
35
|
-
|
|
36
29
|
var state = getDefaultState('initial');
|
|
37
30
|
var recognition;
|
|
38
|
-
|
|
39
31
|
var isBrowserSupported = function isBrowserSupported() {
|
|
40
32
|
return Boolean(SpeechRecognitionAPI);
|
|
41
33
|
};
|
|
42
|
-
|
|
43
34
|
var isListening = function isListening() {
|
|
44
35
|
return state.status === 'askingPermission' || state.status === 'waiting' || state.status === 'recognizing';
|
|
45
36
|
};
|
|
46
|
-
|
|
47
37
|
var setState = function setState() {
|
|
48
38
|
var newState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
49
39
|
state = _objectSpread(_objectSpread({}, state), newState);
|
|
50
40
|
onStateChange();
|
|
51
41
|
};
|
|
52
|
-
|
|
53
42
|
var getState = function getState() {
|
|
54
43
|
return state;
|
|
55
44
|
};
|
|
56
|
-
|
|
57
45
|
var resetState = function resetState() {
|
|
58
46
|
var status = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'initial';
|
|
59
47
|
setState(getDefaultState(status));
|
|
60
48
|
};
|
|
61
|
-
|
|
62
49
|
var onStart = function onStart() {
|
|
63
50
|
setState({
|
|
64
51
|
status: 'waiting'
|
|
65
52
|
});
|
|
66
53
|
};
|
|
67
|
-
|
|
68
54
|
var onError = function onError(event) {
|
|
69
55
|
setState({
|
|
70
56
|
status: 'error',
|
|
71
57
|
errorCode: event.error
|
|
72
58
|
});
|
|
73
59
|
};
|
|
74
|
-
|
|
75
60
|
var onResult = function onResult(event) {
|
|
76
61
|
setState({
|
|
77
62
|
status: 'recognizing',
|
|
78
63
|
transcript: event.results[0] && event.results[0][0] && event.results[0][0].transcript || '',
|
|
79
64
|
isSpeechFinal: event.results[0] && event.results[0].isFinal
|
|
80
65
|
});
|
|
81
|
-
|
|
82
66
|
if (searchAsYouSpeak && state.transcript) {
|
|
83
67
|
onQueryChange(state.transcript);
|
|
84
68
|
}
|
|
85
69
|
};
|
|
86
|
-
|
|
87
70
|
var onEnd = function onEnd() {
|
|
88
71
|
if (!state.errorCode && state.transcript && !searchAsYouSpeak) {
|
|
89
72
|
onQueryChange(state.transcript);
|
|
90
73
|
}
|
|
91
|
-
|
|
92
74
|
if (state.status !== 'error') {
|
|
93
75
|
setState({
|
|
94
76
|
status: 'finished'
|
|
95
77
|
});
|
|
96
78
|
}
|
|
97
79
|
};
|
|
98
|
-
|
|
99
80
|
var startListening = function startListening() {
|
|
100
81
|
recognition = new SpeechRecognitionAPI();
|
|
101
|
-
|
|
102
82
|
if (!recognition) {
|
|
103
83
|
return;
|
|
104
84
|
}
|
|
105
|
-
|
|
106
85
|
resetState('askingPermission');
|
|
107
86
|
recognition.interimResults = true;
|
|
108
|
-
|
|
109
87
|
if (language) {
|
|
110
88
|
recognition.lang = language;
|
|
111
89
|
}
|
|
112
|
-
|
|
113
90
|
recognition.addEventListener('start', onStart);
|
|
114
91
|
recognition.addEventListener('error', onError);
|
|
115
92
|
recognition.addEventListener('result', onResult);
|
|
116
93
|
recognition.addEventListener('end', onEnd);
|
|
117
94
|
recognition.start();
|
|
118
95
|
};
|
|
119
|
-
|
|
120
96
|
var dispose = function dispose() {
|
|
121
97
|
if (!recognition) {
|
|
122
98
|
return;
|
|
123
99
|
}
|
|
124
|
-
|
|
125
100
|
recognition.stop();
|
|
126
101
|
recognition.removeEventListener('start', onStart);
|
|
127
102
|
recognition.removeEventListener('error', onError);
|
|
@@ -129,15 +104,13 @@ var createVoiceSearchHelper = function createVoiceSearchHelper(_ref) {
|
|
|
129
104
|
recognition.removeEventListener('end', onEnd);
|
|
130
105
|
recognition = undefined;
|
|
131
106
|
};
|
|
132
|
-
|
|
133
107
|
var stopListening = function stopListening() {
|
|
134
|
-
dispose();
|
|
108
|
+
dispose();
|
|
109
|
+
// Because `dispose` removes event listeners, `end` listener is not called.
|
|
135
110
|
// So we're setting the `status` as `finished` here.
|
|
136
111
|
// If we don't do it, it will be still `waiting` or `recognizing`.
|
|
137
|
-
|
|
138
112
|
resetState('finished');
|
|
139
113
|
};
|
|
140
|
-
|
|
141
114
|
return {
|
|
142
115
|
getState: getState,
|
|
143
116
|
isBrowserSupported: isBrowserSupported,
|
|
@@ -147,6 +120,5 @@ var createVoiceSearchHelper = function createVoiceSearchHelper(_ref) {
|
|
|
147
120
|
dispose: dispose
|
|
148
121
|
};
|
|
149
122
|
};
|
|
150
|
-
|
|
151
123
|
var _default = createVoiceSearchHelper;
|
|
152
124
|
exports.default = _default;
|