instantsearch.js 4.49.1 → 4.49.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -8
- package/cjs/components/Answers/Answers.js +11 -18
- package/cjs/components/Breadcrumb/Breadcrumb.js +6 -13
- package/cjs/components/ClearRefinements/ClearRefinements.js +5 -12
- package/cjs/components/CurrentRefinements/CurrentRefinements.js +8 -16
- package/cjs/components/GeoSearchControls/GeoSearchButton.js +4 -7
- package/cjs/components/GeoSearchControls/GeoSearchControls.js +14 -23
- package/cjs/components/GeoSearchControls/GeoSearchToggle.js +4 -7
- package/cjs/components/Highlight/Highlight.js +5 -12
- package/cjs/components/Hits/Hits.js +13 -22
- package/cjs/components/InfiniteHits/InfiniteHits.js +18 -27
- package/cjs/components/InternalHighlight/InternalHighlight.js +0 -3
- package/cjs/components/MenuSelect/MenuSelect.js +12 -22
- package/cjs/components/Pagination/Pagination.js +12 -20
- package/cjs/components/Panel/Panel.js +9 -28
- package/cjs/components/PoweredBy/PoweredBy.js +4 -6
- package/cjs/components/QueryRuleCustomData/QueryRuleCustomData.js +3 -8
- package/cjs/components/RangeInput/RangeInput.js +21 -51
- package/cjs/components/RefinementList/RefinementList.js +30 -81
- package/cjs/components/RefinementList/RefinementListItem.js +9 -15
- package/cjs/components/RelevantSort/RelevantSort.js +5 -10
- package/cjs/components/ReverseHighlight/ReverseHighlight.js +5 -12
- package/cjs/components/ReverseSnippet/ReverseSnippet.js +5 -12
- package/cjs/components/SearchBox/SearchBox.js +35 -77
- package/cjs/components/Selector/Selector.js +3 -7
- package/cjs/components/Slider/Pit.js +7 -11
- package/cjs/components/Slider/Rheostat.js +69 -133
- package/cjs/components/Slider/Slider.js +39 -72
- package/cjs/components/Snippet/Snippet.js +5 -12
- package/cjs/components/Stats/Stats.js +13 -22
- package/cjs/components/Template/Template.js +17 -44
- package/cjs/components/ToggleRefinement/ToggleRefinement.js +5 -11
- package/cjs/components/VoiceSearch/VoiceSearch.js +9 -17
- package/cjs/connectors/answers/connectAnswers.js +36 -46
- package/cjs/connectors/autocomplete/connectAutocomplete.js +21 -35
- package/cjs/connectors/breadcrumb/connectBreadcrumb.js +27 -55
- package/cjs/connectors/clear-refinements/connectClearRefinements.js +41 -56
- package/cjs/connectors/configure/connectConfigure.js +17 -28
- package/cjs/connectors/configure-related-items/connectConfigureRelatedItems.js +21 -43
- package/cjs/connectors/current-refinements/connectCurrentRefinements.js +29 -65
- package/cjs/connectors/dynamic-widgets/connectDynamicWidgets.js +27 -45
- package/cjs/connectors/geo-search/connectGeoSearch.js +32 -59
- package/cjs/connectors/hierarchical-menu/connectHierarchicalMenu.js +50 -82
- package/cjs/connectors/hits/connectHits.js +25 -38
- package/cjs/connectors/hits/connectHitsWithInsights.js +3 -7
- package/cjs/connectors/hits-per-page/connectHitsPerPage.js +26 -46
- package/cjs/connectors/index.js +92 -126
- package/cjs/connectors/infinite-hits/connectInfiniteHits.js +43 -75
- package/cjs/connectors/infinite-hits/connectInfiniteHitsWithInsights.js +3 -7
- package/cjs/connectors/menu/connectMenu.js +39 -73
- package/cjs/connectors/numeric-menu/connectNumericMenu.js +37 -86
- package/cjs/connectors/pagination/Paginator.js +11 -25
- package/cjs/connectors/pagination/connectPagination.js +17 -31
- package/cjs/connectors/powered-by/connectPoweredBy.js +13 -19
- package/cjs/connectors/query-rules/connectQueryRules.js +44 -65
- package/cjs/connectors/range/connectRange.js +72 -129
- package/cjs/connectors/rating-menu/connectRatingMenu.js +34 -87
- package/cjs/connectors/refinement-list/connectRefinementList.js +51 -79
- package/cjs/connectors/relevant-sort/connectRelevantSort.js +11 -18
- package/cjs/connectors/search-box/connectSearchBox.js +15 -28
- package/cjs/connectors/sort-by/connectSortBy.js +21 -28
- package/cjs/connectors/stats/connectStats.js +12 -16
- package/cjs/connectors/toggle-refinement/connectToggleRefinement.js +44 -75
- package/cjs/connectors/voice-search/connectVoiceSearch.js +22 -41
- package/cjs/helpers/components/Highlight.js +11 -18
- package/cjs/helpers/components/ReverseHighlight.js +19 -26
- package/cjs/helpers/components/ReverseSnippet.js +19 -26
- package/cjs/helpers/components/Snippet.js +11 -18
- package/cjs/helpers/components/index.js +4 -12
- package/cjs/helpers/get-insights-anonymous-user-token.js +6 -17
- package/cjs/helpers/highlight.js +15 -19
- package/cjs/helpers/index.js +23 -37
- package/cjs/helpers/insights.js +9 -21
- package/cjs/helpers/reverseHighlight.js +16 -20
- package/cjs/helpers/reverseSnippet.js +16 -20
- package/cjs/helpers/snippet.js +15 -19
- package/cjs/index.js +12 -27
- package/cjs/lib/InstantSearch.js +108 -207
- package/cjs/lib/createHelpers.js +15 -19
- package/cjs/lib/formatNumber.js +0 -1
- package/cjs/lib/infiniteHitsCache/index.js +1 -3
- package/cjs/lib/infiniteHitsCache/sessionStorage.js +14 -22
- package/cjs/lib/insights/client.js +17 -40
- package/cjs/lib/insights/index.js +9 -15
- package/cjs/lib/insights/listener.js +7 -24
- package/cjs/lib/routers/history.js +75 -117
- package/cjs/lib/routers/index.js +1 -3
- package/cjs/lib/stateMappings/index.js +2 -5
- package/cjs/lib/stateMappings/simple.js +11 -14
- package/cjs/lib/stateMappings/singleIndex.js +6 -8
- package/cjs/lib/suit.js +2 -5
- package/cjs/lib/templating/index.js +2 -6
- package/cjs/lib/templating/prepareTemplateProps.js +14 -22
- package/cjs/lib/templating/renderTemplate.js +17 -30
- package/cjs/lib/utils/capitalize.js +0 -1
- package/cjs/lib/utils/checkIndexUiState.js +19 -47
- package/cjs/lib/utils/checkRendering.js +1 -3
- package/cjs/lib/utils/clearRefinements.js +2 -9
- package/cjs/lib/utils/concatHighlightedParts.js +2 -4
- package/cjs/lib/utils/createConcurrentSafePromise.js +0 -3
- package/cjs/lib/utils/createSendEventForFacet.js +8 -15
- package/cjs/lib/utils/createSendEventForHits.js +10 -34
- package/cjs/lib/utils/debounce.js +0 -3
- package/cjs/lib/utils/defer.js +0 -11
- package/cjs/lib/utils/detect-insights-client.js +1 -3
- package/cjs/lib/utils/documentation.js +2 -5
- package/cjs/lib/utils/escape-highlight.js +13 -26
- package/cjs/lib/utils/escape-html.js +9 -7
- package/cjs/lib/utils/escapeFacetValue.js +1 -5
- package/cjs/lib/utils/find.js +2 -5
- package/cjs/lib/utils/findIndex.js +0 -3
- package/cjs/lib/utils/geo-search.js +21 -37
- package/cjs/lib/utils/getAppIdAndApiKey.js +2 -3
- package/cjs/lib/utils/getContainerNode.js +1 -7
- package/cjs/lib/utils/getHighlightFromSiblings.js +1 -7
- package/cjs/lib/utils/getHighlightedParts.js +2 -5
- package/cjs/lib/utils/getObjectType.js +0 -1
- package/cjs/lib/utils/getPropertyByPath.js +0 -1
- package/cjs/lib/utils/getRefinements.js +30 -45
- package/cjs/lib/utils/getWidgetAttribute.js +0 -6
- package/cjs/lib/utils/hits-absolute-position.js +6 -7
- package/cjs/lib/utils/hits-query-id.js +6 -8
- package/cjs/lib/utils/index.js +46 -138
- package/cjs/lib/utils/isDomElement.js +0 -1
- package/cjs/lib/utils/isEqual.js +2 -7
- package/cjs/lib/utils/isFacetRefined.js +0 -1
- package/cjs/lib/utils/isFiniteNumber.js +0 -1
- package/cjs/lib/utils/isIndexWidget.js +0 -1
- package/cjs/lib/utils/isPlainObject.js +3 -11
- package/cjs/lib/utils/isSpecialClick.js +0 -1
- package/cjs/lib/utils/logger.js +6 -16
- package/cjs/lib/utils/mergeSearchParameters.js +23 -43
- package/cjs/lib/utils/noop.js +0 -1
- package/cjs/lib/utils/range.js +9 -15
- package/cjs/lib/utils/render-args.js +0 -2
- package/cjs/lib/utils/resolveSearchParameters.js +0 -3
- package/cjs/lib/utils/reverseHighlightedParts.js +7 -10
- package/cjs/lib/utils/safelyRunOnBrowser.js +7 -9
- package/cjs/lib/utils/serializer.js +1 -3
- package/cjs/lib/utils/setIndexHelperState.js +2 -7
- package/cjs/lib/utils/toArray.js +0 -1
- package/cjs/lib/utils/typedObject.js +0 -1
- package/cjs/lib/utils/uniq.js +0 -1
- package/cjs/lib/version.js +1 -1
- package/cjs/lib/voiceSearchHelper/index.js +12 -37
- package/cjs/middlewares/createInsightsMiddleware.js +30 -54
- package/cjs/middlewares/createMetadataMiddleware.js +7 -15
- package/cjs/middlewares/createRouterMiddleware.js +16 -24
- package/cjs/middlewares/index.js +3 -9
- package/cjs/types/algoliasearch.js +0 -2
- package/cjs/types/index.js +14 -42
- package/cjs/widgets/analytics/analytics.js +22 -48
- package/cjs/widgets/answers/answers.js +32 -49
- package/cjs/widgets/breadcrumb/breadcrumb.js +31 -48
- package/cjs/widgets/clear-refinements/clear-refinements.js +28 -45
- package/cjs/widgets/configure/configure.js +9 -14
- package/cjs/widgets/configure-related-items/configure-related-items.js +9 -14
- package/cjs/widgets/current-refinements/current-refinements.js +22 -37
- package/cjs/widgets/dynamic-widgets/dynamic-widgets.js +17 -32
- package/cjs/widgets/geo-search/GeoSearchRenderer.js +50 -72
- package/cjs/widgets/geo-search/createHTMLMarker.js +34 -62
- package/cjs/widgets/geo-search/defaultTemplates.js +0 -3
- package/cjs/widgets/geo-search/geo-search.js +44 -70
- package/cjs/widgets/hierarchical-menu/defaultTemplates.js +5 -9
- package/cjs/widgets/hierarchical-menu/hierarchical-menu.js +41 -57
- package/cjs/widgets/hits/hits.js +32 -50
- package/cjs/widgets/hits-per-page/hits-per-page.js +24 -39
- package/cjs/widgets/index/index.js +71 -113
- package/cjs/widgets/index.js +47 -85
- package/cjs/widgets/infinite-hits/infinite-hits.js +39 -57
- package/cjs/widgets/menu/defaultTemplates.js +4 -8
- package/cjs/widgets/menu/menu.js +36 -53
- package/cjs/widgets/menu-select/defaultTemplates.js +2 -4
- package/cjs/widgets/menu-select/menu-select.js +31 -48
- package/cjs/widgets/numeric-menu/defaultTemplates.js +3 -5
- package/cjs/widgets/numeric-menu/numeric-menu.js +30 -47
- package/cjs/widgets/pagination/pagination.js +43 -61
- package/cjs/widgets/panel/panel.js +31 -56
- package/cjs/widgets/places/places.js +22 -34
- package/cjs/widgets/powered-by/powered-by.js +20 -34
- package/cjs/widgets/query-rule-context/query-rule-context.js +10 -18
- package/cjs/widgets/query-rule-custom-data/query-rule-custom-data.js +24 -39
- package/cjs/widgets/range-input/range-input.js +36 -60
- package/cjs/widgets/range-slider/range-slider.js +39 -61
- package/cjs/widgets/rating-menu/defaultTemplates.js +9 -16
- package/cjs/widgets/rating-menu/rating-menu.js +30 -48
- package/cjs/widgets/refinement-list/defaultTemplates.js +6 -10
- package/cjs/widgets/refinement-list/refinement-list.js +54 -72
- package/cjs/widgets/relevant-sort/relevant-sort.js +21 -37
- package/cjs/widgets/search-box/defaultTemplates.js +0 -5
- package/cjs/widgets/search-box/search-box.js +42 -57
- package/cjs/widgets/sort-by/sort-by.js +21 -36
- package/cjs/widgets/stats/defaultTemplates.js +1 -2
- package/cjs/widgets/stats/stats.js +40 -67
- package/cjs/widgets/toggle-refinement/toggle-refinement.js +29 -46
- package/cjs/widgets/voice-search/defaultTemplates.js +4 -14
- package/cjs/widgets/voice-search/voice-search.js +28 -44
- package/dist/instantsearch.development.d.ts +9 -6
- package/dist/instantsearch.development.js +1840 -3142
- package/dist/instantsearch.development.js.map +1 -1
- package/dist/instantsearch.production.d.ts +9 -6
- package/dist/instantsearch.production.min.d.ts +9 -6
- package/dist/instantsearch.production.min.js +2 -2
- package/dist/instantsearch.production.min.js.map +1 -1
- package/es/components/Answers/Answers.js +10 -13
- package/es/components/Breadcrumb/Breadcrumb.js +5 -8
- package/es/components/ClearRefinements/ClearRefinements.js +4 -7
- package/es/components/CurrentRefinements/CurrentRefinements.js +5 -10
- package/es/components/GeoSearchControls/GeoSearchButton.js +4 -6
- package/es/components/GeoSearchControls/GeoSearchControls.js +11 -14
- package/es/components/GeoSearchControls/GeoSearchToggle.js +4 -6
- package/es/components/Highlight/Highlight.js +4 -7
- package/es/components/Hits/Hits.js +12 -17
- package/es/components/InfiniteHits/InfiniteHits.js +17 -22
- package/es/components/MenuSelect/MenuSelect.js +9 -14
- package/es/components/Pagination/Pagination.js +10 -15
- package/es/components/Panel/Panel.js +8 -22
- package/es/components/PoweredBy/PoweredBy.js +4 -5
- package/es/components/QueryRuleCustomData/QueryRuleCustomData.js +2 -4
- package/es/components/RangeInput/RangeInput.js +20 -46
- package/es/components/RefinementList/RefinementList.js +24 -67
- package/es/components/RefinementList/RefinementListItem.js +8 -11
- package/es/components/RelevantSort/RelevantSort.js +4 -6
- package/es/components/ReverseHighlight/ReverseHighlight.js +4 -7
- package/es/components/ReverseSnippet/ReverseSnippet.js +4 -7
- package/es/components/SearchBox/SearchBox.js +29 -66
- package/es/components/Selector/Selector.js +3 -5
- package/es/components/Slider/Pit.js +7 -9
- package/es/components/Slider/Rheostat.js +70 -133
- package/es/components/Slider/Slider.js +34 -61
- package/es/components/Snippet/Snippet.js +4 -7
- package/es/components/Stats/Stats.js +12 -17
- package/es/components/Template/Template.js +12 -35
- package/es/components/ToggleRefinement/ToggleRefinement.js +4 -7
- package/es/components/VoiceSearch/VoiceSearch.js +8 -13
- package/es/connectors/answers/connectAnswers.js +27 -36
- package/es/connectors/autocomplete/connectAutocomplete.js +12 -24
- package/es/connectors/breadcrumb/connectBreadcrumb.js +22 -48
- package/es/connectors/clear-refinements/connectClearRefinements.js +32 -45
- package/es/connectors/configure/connectConfigure.js +11 -17
- package/es/connectors/configure-related-items/connectConfigureRelatedItems.js +16 -33
- package/es/connectors/current-refinements/connectCurrentRefinements.js +23 -57
- package/es/connectors/dynamic-widgets/connectDynamicWidgets.js +20 -36
- package/es/connectors/geo-search/connectGeoSearch.js +21 -46
- package/es/connectors/hierarchical-menu/connectHierarchicalMenu.js +44 -74
- package/es/connectors/hits/connectHits.js +14 -25
- package/es/connectors/hits-per-page/connectHitsPerPage.js +20 -38
- package/es/connectors/index.d.ts +2 -1
- package/es/connectors/index.js +6 -3
- package/es/connectors/infinite-hits/connectInfiniteHits.js +32 -62
- package/es/connectors/menu/connectMenu.js +34 -66
- package/es/connectors/numeric-menu/connectNumericMenu.js +31 -78
- package/es/connectors/pagination/Paginator.js +8 -21
- package/es/connectors/pagination/connectPagination.js +12 -22
- package/es/connectors/powered-by/connectPoweredBy.js +8 -12
- package/es/connectors/query-rules/connectQueryRules.js +37 -56
- package/es/connectors/range/connectRange.js +46 -101
- package/es/connectors/rating-menu/connectRatingMenu.js +28 -79
- package/es/connectors/refinement-list/connectRefinementList.js +43 -69
- package/es/connectors/relevant-sort/connectRelevantSort.js +8 -14
- package/es/connectors/search-box/connectSearchBox.js +11 -22
- package/es/connectors/sort-by/connectSortBy.js +15 -20
- package/es/connectors/stats/connectStats.js +8 -10
- package/es/connectors/toggle-refinement/connectToggleRefinement.js +33 -62
- package/es/connectors/toggle-refinement/types.js +1 -0
- package/es/connectors/voice-search/connectVoiceSearch.js +17 -32
- package/es/helpers/components/Highlight.js +5 -8
- package/es/helpers/components/ReverseHighlight.js +13 -16
- package/es/helpers/components/ReverseSnippet.js +13 -16
- package/es/helpers/components/Snippet.js +5 -8
- package/es/helpers/get-insights-anonymous-user-token.js +2 -10
- package/es/helpers/highlight.js +10 -10
- package/es/helpers/insights.js +3 -10
- package/es/helpers/reverseHighlight.js +10 -10
- package/es/helpers/reverseSnippet.js +10 -10
- package/es/helpers/snippet.js +10 -10
- package/es/index.js +0 -2
- package/es/lib/InstantSearch.js +83 -172
- package/es/lib/createHelpers.js +8 -9
- package/es/lib/infiniteHitsCache/sessionStorage.js +10 -16
- package/es/lib/insights/client.js +12 -33
- package/es/lib/insights/listener.js +4 -18
- package/es/lib/routers/history.js +69 -108
- package/es/lib/stateMappings/simple.js +11 -13
- package/es/lib/stateMappings/singleIndex.js +6 -7
- package/es/lib/suit.js +2 -3
- package/es/lib/templating/prepareTemplateProps.js +13 -20
- package/es/lib/templating/renderTemplate.js +12 -21
- package/es/lib/utils/checkIndexUiState.js +19 -41
- package/es/lib/utils/clearRefinements.js +2 -8
- package/es/lib/utils/concatHighlightedParts.js +1 -1
- package/es/lib/utils/createConcurrentSafePromise.js +0 -2
- package/es/lib/utils/createSendEventForFacet.js +7 -12
- package/es/lib/utils/createSendEventForHits.js +8 -30
- package/es/lib/utils/debounce.js +0 -2
- package/es/lib/utils/defer.js +0 -10
- package/es/lib/utils/documentation.js +2 -3
- package/es/lib/utils/escape-highlight.js +9 -18
- package/es/lib/utils/escape-html.js +9 -5
- package/es/lib/utils/escapeFacetValue.js +0 -2
- package/es/lib/utils/find.js +2 -4
- package/es/lib/utils/findIndex.js +0 -2
- package/es/lib/utils/geo-search.js +21 -35
- package/es/lib/utils/getAppIdAndApiKey.js +2 -2
- package/es/lib/utils/getContainerNode.js +1 -5
- package/es/lib/utils/getHighlightFromSiblings.js +0 -3
- package/es/lib/utils/getHighlightedParts.js +1 -2
- package/es/lib/utils/getRefinements.js +28 -41
- package/es/lib/utils/getWidgetAttribute.js +0 -5
- package/es/lib/utils/hits-absolute-position.js +6 -6
- package/es/lib/utils/hits-query-id.js +6 -7
- package/es/lib/utils/isEqual.js +2 -6
- package/es/lib/utils/isPlainObject.js +3 -10
- package/es/lib/utils/logger.js +4 -14
- package/es/lib/utils/mergeSearchParameters.js +21 -38
- package/es/lib/utils/range.js +9 -14
- package/es/lib/utils/resolveSearchParameters.js +0 -2
- package/es/lib/utils/reverseHighlightedParts.js +6 -7
- package/es/lib/utils/safelyRunOnBrowser.js +7 -8
- package/es/lib/utils/setIndexHelperState.js +0 -2
- package/es/lib/version.d.ts +1 -1
- package/es/lib/version.js +1 -1
- package/es/lib/voiceSearchHelper/index.js +12 -36
- package/es/lib/voiceSearchHelper/types.js +1 -0
- package/es/middlewares/createInsightsMiddleware.js +21 -42
- package/es/middlewares/createMetadataMiddleware.js +3 -9
- package/es/middlewares/createRouterMiddleware.js +12 -14
- package/es/types/algoliasearch.js +1 -0
- package/es/types/component.js +1 -0
- package/es/types/connector.js +1 -0
- package/es/types/index.js +9 -5
- package/es/types/insights.js +1 -0
- package/es/types/instantsearch.js +1 -0
- package/es/types/middleware.js +1 -0
- package/es/types/render-state.js +1 -0
- package/es/types/results.js +1 -0
- package/es/types/router.js +1 -0
- package/es/types/templates.js +1 -0
- package/es/types/ui-state.js +1 -0
- package/es/types/utils.js +1 -0
- package/es/types/widget-factory.js +1 -0
- package/es/types/widget.js +1 -0
- package/es/widgets/analytics/analytics.js +19 -43
- package/es/widgets/answers/answers.js +23 -30
- package/es/widgets/breadcrumb/breadcrumb.js +22 -29
- package/es/widgets/clear-refinements/clear-refinements.js +19 -26
- package/es/widgets/configure/configure.js +7 -7
- package/es/widgets/configure-related-items/configure-related-items.js +6 -8
- package/es/widgets/current-refinements/current-refinements.js +16 -23
- package/es/widgets/dynamic-widgets/dynamic-widgets.js +11 -21
- package/es/widgets/geo-search/GeoSearchRenderer.d.js +1 -0
- package/es/widgets/geo-search/GeoSearchRenderer.js +47 -65
- package/es/widgets/geo-search/createHTMLMarker.d.ts +1 -0
- package/es/widgets/geo-search/createHTMLMarker.js +34 -61
- package/es/widgets/geo-search/defaultTemplates.js +0 -2
- package/es/widgets/geo-search/geo-search.d.ts +1 -0
- package/es/widgets/geo-search/geo-search.js +34 -50
- package/es/widgets/hierarchical-menu/defaultTemplates.js +4 -4
- package/es/widgets/hierarchical-menu/hierarchical-menu.js +32 -38
- package/es/widgets/hits/hits.js +20 -27
- package/es/widgets/hits-per-page/hits-per-page.js +17 -24
- package/es/widgets/index/index.js +55 -93
- package/es/widgets/index.d.ts +2 -1
- package/es/widgets/index.js +4 -3
- package/es/widgets/infinite-hits/infinite-hits.js +27 -34
- package/es/widgets/menu/defaultTemplates.js +3 -3
- package/es/widgets/menu/menu.js +27 -34
- package/es/widgets/menu-select/defaultTemplates.js +1 -1
- package/es/widgets/menu-select/menu-select.js +22 -29
- package/es/widgets/numeric-menu/defaultTemplates.js +3 -3
- package/es/widgets/numeric-menu/numeric-menu.js +21 -28
- package/es/widgets/pagination/pagination.js +36 -46
- package/es/widgets/panel/panel.js +24 -42
- package/es/widgets/places/places.js +22 -33
- package/es/widgets/powered-by/powered-by.js +14 -20
- package/es/widgets/query-rule-context/query-rule-context.js +6 -10
- package/es/widgets/query-rule-custom-data/query-rule-custom-data.js +17 -24
- package/es/widgets/range-input/range-input.js +28 -43
- package/es/widgets/range-slider/range-slider.js +33 -47
- package/es/widgets/rating-menu/defaultTemplates.js +8 -12
- package/es/widgets/rating-menu/rating-menu.js +21 -29
- package/es/widgets/refinement-list/defaultTemplates.js +5 -5
- package/es/widgets/refinement-list/refinement-list.js +43 -50
- package/es/widgets/relevant-sort/relevant-sort.js +14 -21
- package/es/widgets/search-box/defaultTemplates.js +0 -4
- package/es/widgets/search-box/search-box.js +35 -41
- package/es/widgets/sort-by/sort-by.js +15 -22
- package/es/widgets/stats/stats.js +30 -47
- package/es/widgets/toggle-refinement/toggle-refinement.js +20 -27
- package/es/widgets/voice-search/defaultTemplates.js +4 -13
- package/es/widgets/voice-search/voice-search.js +21 -28
- package/package.json +20 -119
- package/scripts/transforms/__testfixtures__/addWidget-to-addWidgets/imported.input.js +0 -1
- package/scripts/transforms/__testfixtures__/addWidget-to-addWidgets/imported.output.js +0 -1
- package/scripts/transforms/__tests__/addWidget-to-addWidgets.test.js +1 -0
- package/CHANGELOG.md +0 -3693
|
@@ -1,31 +1,23 @@
|
|
|
1
|
-
function
|
|
2
|
-
|
|
3
|
-
function
|
|
4
|
-
|
|
5
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
-
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
+
var _excluded = ["initialSearchParameters"];
|
|
3
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
4
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
5
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
7
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
8
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
8
|
-
|
|
9
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."); }
|
|
10
|
-
|
|
11
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); }
|
|
12
|
-
|
|
13
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
|
|
14
|
-
|
|
11
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
15
12
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
16
|
-
|
|
17
|
-
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; }
|
|
18
|
-
|
|
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; }
|
|
19
14
|
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; }
|
|
20
|
-
|
|
21
15
|
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; }
|
|
22
|
-
|
|
23
16
|
import algoliasearchHelper from 'algoliasearch-helper';
|
|
24
17
|
import { checkIndexUiState, createDocumentationMessageGenerator, resolveSearchParameters, mergeSearchParameters, warning, isIndexWidget, createInitArgs, createRenderArgs } from "../../lib/utils/index.js";
|
|
25
18
|
var withUsage = createDocumentationMessageGenerator({
|
|
26
19
|
name: 'index-widget'
|
|
27
20
|
});
|
|
28
|
-
|
|
29
21
|
/**
|
|
30
22
|
* This is the same content as helper._change / setState, but allowing for extra
|
|
31
23
|
* UiState to be synchronized.
|
|
@@ -33,9 +25,8 @@ var withUsage = createDocumentationMessageGenerator({
|
|
|
33
25
|
*/
|
|
34
26
|
function privateHelperSetState(helper, _ref) {
|
|
35
27
|
var state = _ref.state,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
28
|
+
isPageReset = _ref.isPageReset,
|
|
29
|
+
_uiState = _ref._uiState;
|
|
39
30
|
if (state !== helper.state) {
|
|
40
31
|
helper.state = state;
|
|
41
32
|
helper.emit('change', {
|
|
@@ -46,48 +37,38 @@ function privateHelperSetState(helper, _ref) {
|
|
|
46
37
|
});
|
|
47
38
|
}
|
|
48
39
|
}
|
|
49
|
-
|
|
50
40
|
function getLocalWidgetsUiState(widgets, widgetStateOptions) {
|
|
51
41
|
var initialUiState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
52
42
|
return widgets.reduce(function (uiState, widget) {
|
|
53
43
|
if (isIndexWidget(widget)) {
|
|
54
44
|
return uiState;
|
|
55
45
|
}
|
|
56
|
-
|
|
57
46
|
if (!widget.getWidgetUiState && !widget.getWidgetState) {
|
|
58
47
|
return uiState;
|
|
59
48
|
}
|
|
60
|
-
|
|
61
49
|
if (widget.getWidgetUiState) {
|
|
62
50
|
return widget.getWidgetUiState(uiState, widgetStateOptions);
|
|
63
51
|
}
|
|
64
|
-
|
|
65
52
|
return widget.getWidgetState(uiState, widgetStateOptions);
|
|
66
53
|
}, initialUiState);
|
|
67
54
|
}
|
|
68
|
-
|
|
69
55
|
function getLocalWidgetsSearchParameters(widgets, widgetSearchParametersOptions) {
|
|
70
56
|
var initialSearchParameters = widgetSearchParametersOptions.initialSearchParameters,
|
|
71
|
-
|
|
72
|
-
|
|
57
|
+
rest = _objectWithoutProperties(widgetSearchParametersOptions, _excluded);
|
|
73
58
|
return widgets.filter(function (widget) {
|
|
74
59
|
return !isIndexWidget(widget);
|
|
75
60
|
}).reduce(function (state, widget) {
|
|
76
61
|
if (!widget.getWidgetSearchParameters) {
|
|
77
62
|
return state;
|
|
78
63
|
}
|
|
79
|
-
|
|
80
64
|
return widget.getWidgetSearchParameters(state, rest);
|
|
81
65
|
}, initialSearchParameters);
|
|
82
66
|
}
|
|
83
|
-
|
|
84
67
|
function resetPageFromWidgets(widgets) {
|
|
85
68
|
var indexWidgets = widgets.filter(isIndexWidget);
|
|
86
|
-
|
|
87
69
|
if (indexWidgets.length === 0) {
|
|
88
70
|
return;
|
|
89
71
|
}
|
|
90
|
-
|
|
91
72
|
indexWidgets.forEach(function (widget) {
|
|
92
73
|
var widgetHelper = widget.getHelper();
|
|
93
74
|
privateHelperSetState(widgetHelper, {
|
|
@@ -97,7 +78,6 @@ function resetPageFromWidgets(widgets) {
|
|
|
97
78
|
resetPageFromWidgets(widget.getWidgets());
|
|
98
79
|
});
|
|
99
80
|
}
|
|
100
|
-
|
|
101
81
|
function resolveScopedResultsFromWidgets(widgets) {
|
|
102
82
|
var indexWidgets = widgets.filter(isIndexWidget);
|
|
103
83
|
return indexWidgets.reduce(function (scopedResults, current) {
|
|
@@ -108,15 +88,13 @@ function resolveScopedResultsFromWidgets(widgets) {
|
|
|
108
88
|
}].concat(_toConsumableArray(resolveScopedResultsFromWidgets(current.getWidgets()))));
|
|
109
89
|
}, []);
|
|
110
90
|
}
|
|
111
|
-
|
|
112
91
|
var index = function index(widgetParams) {
|
|
113
92
|
if (widgetParams === undefined || widgetParams.indexName === undefined) {
|
|
114
93
|
throw new Error(withUsage('The `indexName` option is required.'));
|
|
115
94
|
}
|
|
116
|
-
|
|
117
95
|
var indexName = widgetParams.indexName,
|
|
118
|
-
|
|
119
|
-
|
|
96
|
+
_widgetParams$indexId = widgetParams.indexId,
|
|
97
|
+
indexId = _widgetParams$indexId === void 0 ? indexName : _widgetParams$indexId;
|
|
120
98
|
var localWidgets = [];
|
|
121
99
|
var localUiState = {};
|
|
122
100
|
var localInstantSearchInstance = null;
|
|
@@ -139,8 +117,9 @@ var index = function index(widgetParams) {
|
|
|
139
117
|
return derivedHelper && derivedHelper.lastResults;
|
|
140
118
|
},
|
|
141
119
|
getScopedResults: function getScopedResults() {
|
|
142
|
-
var widgetParent = this.getParent();
|
|
120
|
+
var widgetParent = this.getParent();
|
|
143
121
|
|
|
122
|
+
// If the widget is the root, we consider itself as the only sibling.
|
|
144
123
|
var widgetSiblings = widgetParent ? widgetParent.getWidgets() : [this];
|
|
145
124
|
return resolveScopedResultsFromWidgets(widgetSiblings);
|
|
146
125
|
},
|
|
@@ -158,19 +137,15 @@ var index = function index(widgetParams) {
|
|
|
158
137
|
},
|
|
159
138
|
addWidgets: function addWidgets(widgets) {
|
|
160
139
|
var _this = this;
|
|
161
|
-
|
|
162
140
|
if (!Array.isArray(widgets)) {
|
|
163
141
|
throw new Error(withUsage('The `addWidgets` method expects an array of widgets.'));
|
|
164
142
|
}
|
|
165
|
-
|
|
166
143
|
if (widgets.some(function (widget) {
|
|
167
144
|
return typeof widget.init !== 'function' && typeof widget.render !== 'function';
|
|
168
145
|
})) {
|
|
169
146
|
throw new Error(withUsage('The widget definition expects a `render` and/or an `init` method.'));
|
|
170
147
|
}
|
|
171
|
-
|
|
172
148
|
localWidgets = localWidgets.concat(widgets);
|
|
173
|
-
|
|
174
149
|
if (localInstantSearchInstance && Boolean(widgets.length)) {
|
|
175
150
|
privateHelperSetState(helper, {
|
|
176
151
|
state: getLocalWidgetsSearchParameters(localWidgets, {
|
|
@@ -178,10 +153,11 @@ var index = function index(widgetParams) {
|
|
|
178
153
|
initialSearchParameters: helper.state
|
|
179
154
|
}),
|
|
180
155
|
_uiState: localUiState
|
|
181
|
-
});
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
// We compute the render state before calling `init` in a separate loop
|
|
182
159
|
// to construct the whole render state object that is then passed to
|
|
183
160
|
// `init`.
|
|
184
|
-
|
|
185
161
|
widgets.forEach(function (widget) {
|
|
186
162
|
if (widget.getRenderState) {
|
|
187
163
|
var renderState = widget.getRenderState(localInstantSearchInstance.renderState[_this.getIndexId()] || {}, createInitArgs(localInstantSearchInstance, _this, localInstantSearchInstance._initialUiState));
|
|
@@ -199,26 +175,21 @@ var index = function index(widgetParams) {
|
|
|
199
175
|
});
|
|
200
176
|
localInstantSearchInstance.scheduleSearch();
|
|
201
177
|
}
|
|
202
|
-
|
|
203
178
|
return this;
|
|
204
179
|
},
|
|
205
180
|
removeWidgets: function removeWidgets(widgets) {
|
|
206
181
|
var _this2 = this;
|
|
207
|
-
|
|
208
182
|
if (!Array.isArray(widgets)) {
|
|
209
183
|
throw new Error(withUsage('The `removeWidgets` method expects an array of widgets.'));
|
|
210
184
|
}
|
|
211
|
-
|
|
212
185
|
if (widgets.some(function (widget) {
|
|
213
186
|
return typeof widget.dispose !== 'function';
|
|
214
187
|
})) {
|
|
215
188
|
throw new Error(withUsage('The widget definition expects a `dispose` method.'));
|
|
216
189
|
}
|
|
217
|
-
|
|
218
190
|
localWidgets = localWidgets.filter(function (widget) {
|
|
219
191
|
return widgets.indexOf(widget) === -1;
|
|
220
192
|
});
|
|
221
|
-
|
|
222
193
|
if (localInstantSearchInstance && Boolean(widgets.length)) {
|
|
223
194
|
var nextState = widgets.reduce(function (state, widget) {
|
|
224
195
|
// the `dispose` method exists at this point we already assert it
|
|
@@ -237,48 +208,46 @@ var index = function index(widgetParams) {
|
|
|
237
208
|
uiState: localUiState,
|
|
238
209
|
initialSearchParameters: nextState
|
|
239
210
|
}));
|
|
240
|
-
|
|
241
211
|
if (localWidgets.length) {
|
|
242
212
|
localInstantSearchInstance.scheduleSearch();
|
|
243
213
|
}
|
|
244
214
|
}
|
|
245
|
-
|
|
246
215
|
return this;
|
|
247
216
|
},
|
|
248
217
|
init: function init(_ref2) {
|
|
249
218
|
var _this3 = this,
|
|
250
|
-
|
|
251
|
-
|
|
219
|
+
_instantSearchInstanc;
|
|
252
220
|
var instantSearchInstance = _ref2.instantSearchInstance,
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
221
|
+
parent = _ref2.parent,
|
|
222
|
+
uiState = _ref2.uiState;
|
|
256
223
|
if (helper !== null) {
|
|
257
224
|
// helper is already initialized, therefore we do not need to set up
|
|
258
225
|
// any listeners
|
|
259
226
|
return;
|
|
260
227
|
}
|
|
261
|
-
|
|
262
228
|
localInstantSearchInstance = instantSearchInstance;
|
|
263
229
|
localParent = parent;
|
|
264
|
-
localUiState = uiState[indexId] || {};
|
|
230
|
+
localUiState = uiState[indexId] || {};
|
|
231
|
+
|
|
232
|
+
// The `mainHelper` is already defined at this point. The instance is created
|
|
265
233
|
// inside InstantSearch at the `start` method, which occurs before the `init`
|
|
266
234
|
// step.
|
|
267
|
-
|
|
268
235
|
var mainHelper = instantSearchInstance.mainHelper;
|
|
269
236
|
var parameters = getLocalWidgetsSearchParameters(localWidgets, {
|
|
270
237
|
uiState: localUiState,
|
|
271
238
|
initialSearchParameters: new algoliasearchHelper.SearchParameters({
|
|
272
239
|
index: indexName
|
|
273
240
|
})
|
|
274
|
-
});
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
// This Helper is only used for state management we do not care about the
|
|
275
244
|
// `searchClient`. Only the "main" Helper created at the `InstantSearch`
|
|
276
245
|
// level is aware of the client.
|
|
246
|
+
helper = algoliasearchHelper({}, parameters.index, parameters);
|
|
277
247
|
|
|
278
|
-
|
|
248
|
+
// We forward the call to `search` to the "main" instance of the Helper
|
|
279
249
|
// which is responsible for managing the queries (it's the only one that is
|
|
280
250
|
// aware of the `searchClient`).
|
|
281
|
-
|
|
282
251
|
helper.search = function () {
|
|
283
252
|
if (instantSearchInstance.onStateChange) {
|
|
284
253
|
instantSearchInstance.onStateChange({
|
|
@@ -286,45 +255,41 @@ var index = function index(widgetParams) {
|
|
|
286
255
|
setUiState: function setUiState(nextState) {
|
|
287
256
|
return instantSearchInstance.setUiState(nextState, false);
|
|
288
257
|
}
|
|
289
|
-
});
|
|
290
|
-
// responsibility of `setUiState`.
|
|
258
|
+
});
|
|
291
259
|
|
|
260
|
+
// We don't trigger a search when controlled because it becomes the
|
|
261
|
+
// responsibility of `setUiState`.
|
|
292
262
|
return mainHelper;
|
|
293
263
|
}
|
|
294
|
-
|
|
295
264
|
return mainHelper.search();
|
|
296
265
|
};
|
|
297
|
-
|
|
298
266
|
helper.searchWithoutTriggeringOnStateChange = function () {
|
|
299
267
|
return mainHelper.search();
|
|
300
|
-
};
|
|
301
|
-
|
|
268
|
+
};
|
|
302
269
|
|
|
270
|
+
// We use the same pattern for the `searchForFacetValues`.
|
|
303
271
|
helper.searchForFacetValues = function (facetName, facetValue, maxFacetHits, userState) {
|
|
304
272
|
var state = helper.state.setQueryParameters(userState);
|
|
305
273
|
return mainHelper.searchForFacetValues(facetName, facetValue, maxFacetHits, state);
|
|
306
274
|
};
|
|
307
|
-
|
|
308
275
|
derivedHelper = mainHelper.derive(function () {
|
|
309
276
|
return mergeSearchParameters.apply(void 0, _toConsumableArray(resolveSearchParameters(_this3)));
|
|
310
277
|
});
|
|
311
278
|
var indexInitialResults = (_instantSearchInstanc = instantSearchInstance._initialResults) === null || _instantSearchInstanc === void 0 ? void 0 : _instantSearchInstanc[this.getIndexId()];
|
|
312
|
-
|
|
313
279
|
if (indexInitialResults) {
|
|
314
280
|
// We restore the shape of the results provided to the instance to respect
|
|
315
281
|
// the helper's structure.
|
|
316
282
|
var results = new algoliasearchHelper.SearchResults(new algoliasearchHelper.SearchParameters(indexInitialResults.state), indexInitialResults.results);
|
|
317
283
|
derivedHelper.lastResults = results;
|
|
318
284
|
helper.lastResults = results;
|
|
319
|
-
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// Subscribe to the Helper state changes for the page before widgets
|
|
320
288
|
// are initialized. This behavior mimics the original one of the Helper.
|
|
321
289
|
// It makes sense to replicate it at the `init` step. We have another
|
|
322
290
|
// listener on `change` below, once `init` is done.
|
|
323
|
-
|
|
324
|
-
|
|
325
291
|
helper.on('change', function (_ref3) {
|
|
326
292
|
var isPageReset = _ref3.isPageReset;
|
|
327
|
-
|
|
328
293
|
if (isPageReset) {
|
|
329
294
|
resetPageFromWidgets(localWidgets);
|
|
330
295
|
}
|
|
@@ -335,7 +300,6 @@ var index = function index(widgetParams) {
|
|
|
335
300
|
// it at the index level because it's either: all of them or none of them
|
|
336
301
|
// that are stalled. The queries are performed into a single network request.
|
|
337
302
|
instantSearchInstance.scheduleStalledRender();
|
|
338
|
-
|
|
339
303
|
if (process.env.NODE_ENV === 'development') {
|
|
340
304
|
checkIndexUiState({
|
|
341
305
|
index: _this3,
|
|
@@ -348,16 +312,18 @@ var index = function index(widgetParams) {
|
|
|
348
312
|
// The index does not render the results it schedules a new render
|
|
349
313
|
// to let all the other indices emit their own results. It allows us to
|
|
350
314
|
// run the render process in one pass.
|
|
351
|
-
instantSearchInstance.scheduleRender();
|
|
315
|
+
instantSearchInstance.scheduleRender();
|
|
316
|
+
|
|
317
|
+
// the derived helper is the one which actually searches, but the helper
|
|
352
318
|
// which is exposed e.g. via instance.helper, doesn't search, and thus
|
|
353
319
|
// does not have access to lastResults, which it used to in pre-federated
|
|
354
320
|
// search behavior.
|
|
355
|
-
|
|
356
321
|
helper.lastResults = results;
|
|
357
|
-
});
|
|
322
|
+
});
|
|
323
|
+
|
|
324
|
+
// We compute the render state before calling `init` in a separate loop
|
|
358
325
|
// to construct the whole render state object that is then passed to
|
|
359
326
|
// `init`.
|
|
360
|
-
|
|
361
327
|
localWidgets.forEach(function (widget) {
|
|
362
328
|
if (widget.getRenderState) {
|
|
363
329
|
var renderState = widget.getRenderState(instantSearchInstance.renderState[_this3.getIndexId()] || {}, createInitArgs(instantSearchInstance, _this3, uiState));
|
|
@@ -369,34 +335,35 @@ var index = function index(widgetParams) {
|
|
|
369
335
|
}
|
|
370
336
|
});
|
|
371
337
|
localWidgets.forEach(function (widget) {
|
|
372
|
-
process.env.NODE_ENV === 'development' ? warning(
|
|
338
|
+
process.env.NODE_ENV === 'development' ? warning(
|
|
339
|
+
// if it has NO getWidgetState or if it has getWidgetUiState, we don't warn
|
|
373
340
|
// aka we warn if there's _only_ getWidgetState
|
|
374
341
|
!widget.getWidgetState || Boolean(widget.getWidgetUiState), 'The `getWidgetState` method is renamed `getWidgetUiState` and will no longer exist under that name in InstantSearch.js 5.x. Please use `getWidgetUiState` instead.') : void 0;
|
|
375
|
-
|
|
376
342
|
if (widget.init) {
|
|
377
343
|
widget.init(createInitArgs(instantSearchInstance, _this3, uiState));
|
|
378
344
|
}
|
|
379
|
-
});
|
|
345
|
+
});
|
|
346
|
+
|
|
347
|
+
// Subscribe to the Helper state changes for the `uiState` once widgets
|
|
380
348
|
// are initialized. Until the first render, state changes are part of the
|
|
381
349
|
// configuration step. This is mainly for backward compatibility with custom
|
|
382
350
|
// widgets. When the subscription happens before the `init` step, the (static)
|
|
383
351
|
// configuration of the widget is pushed in the URL. That's what we want to avoid.
|
|
384
352
|
// https://github.com/algolia/instantsearch.js/pull/994/commits/4a672ae3fd78809e213de0368549ef12e9dc9454
|
|
385
|
-
|
|
386
353
|
helper.on('change', function (event) {
|
|
387
354
|
var state = event.state;
|
|
388
355
|
var _uiState = event._uiState;
|
|
389
356
|
localUiState = getLocalWidgetsUiState(localWidgets, {
|
|
390
357
|
searchParameters: state,
|
|
391
358
|
helper: helper
|
|
392
|
-
}, _uiState || {});
|
|
393
|
-
// becomes the responsibility of `setUiState`.
|
|
359
|
+
}, _uiState || {});
|
|
394
360
|
|
|
361
|
+
// We don't trigger an internal change when controlled because it
|
|
362
|
+
// becomes the responsibility of `setUiState`.
|
|
395
363
|
if (!instantSearchInstance.onStateChange) {
|
|
396
364
|
instantSearchInstance.onInternalStateChange();
|
|
397
365
|
}
|
|
398
366
|
});
|
|
399
|
-
|
|
400
367
|
if (indexInitialResults) {
|
|
401
368
|
// If there are initial results, we're not notified of the next results
|
|
402
369
|
// because we don't trigger an initial search. We therefore need to directly
|
|
@@ -406,13 +373,10 @@ var index = function index(widgetParams) {
|
|
|
406
373
|
},
|
|
407
374
|
render: function render(_ref5) {
|
|
408
375
|
var _this4 = this;
|
|
409
|
-
|
|
410
376
|
var instantSearchInstance = _ref5.instantSearchInstance;
|
|
411
|
-
|
|
412
377
|
if (!this.getResults()) {
|
|
413
378
|
return;
|
|
414
379
|
}
|
|
415
|
-
|
|
416
380
|
localWidgets.forEach(function (widget) {
|
|
417
381
|
if (widget.getRenderState) {
|
|
418
382
|
var renderState = widget.getRenderState(instantSearchInstance.renderState[_this4.getIndexId()] || {}, createRenderArgs(instantSearchInstance, _this4));
|
|
@@ -430,6 +394,7 @@ var index = function index(widgetParams) {
|
|
|
430
394
|
// happens before the result e.g with a dynamically added index the request might
|
|
431
395
|
// be delayed. The render is triggered for the complete tree but some parts do
|
|
432
396
|
// not have results yet.
|
|
397
|
+
|
|
433
398
|
if (widget.render) {
|
|
434
399
|
widget.render(createRenderArgs(instantSearchInstance, _this4));
|
|
435
400
|
}
|
|
@@ -437,7 +402,6 @@ var index = function index(widgetParams) {
|
|
|
437
402
|
},
|
|
438
403
|
dispose: function dispose() {
|
|
439
404
|
var _this5 = this;
|
|
440
|
-
|
|
441
405
|
localWidgets.forEach(function (widget) {
|
|
442
406
|
if (widget.dispose) {
|
|
443
407
|
// The dispose function is always called once the instance is started
|
|
@@ -484,13 +448,11 @@ var index = function index(widgetParams) {
|
|
|
484
448
|
}
|
|
485
449
|
};
|
|
486
450
|
};
|
|
487
|
-
|
|
488
451
|
export default index;
|
|
489
|
-
|
|
490
452
|
function storeRenderState(_ref7) {
|
|
491
453
|
var renderState = _ref7.renderState,
|
|
492
|
-
|
|
493
|
-
|
|
454
|
+
instantSearchInstance = _ref7.instantSearchInstance,
|
|
455
|
+
parent = _ref7.parent;
|
|
494
456
|
var parentIndexName = parent ? parent.getIndexId() : instantSearchInstance.mainIndex.getIndexId();
|
|
495
457
|
instantSearchInstance.renderState = _objectSpread(_objectSpread({}, instantSearchInstance.renderState), {}, _defineProperty({}, parentIndexName, _objectSpread(_objectSpread({}, instantSearchInstance.renderState[parentIndexName]), renderState)));
|
|
496
458
|
}
|
package/es/widgets/index.d.ts
CHANGED
|
@@ -3,7 +3,8 @@ export { default as breadcrumb } from './breadcrumb/breadcrumb';
|
|
|
3
3
|
export { default as clearRefinements } from './clear-refinements/clear-refinements';
|
|
4
4
|
export { default as configure } from './configure/configure';
|
|
5
5
|
export { default as currentRefinements } from './current-refinements/current-refinements';
|
|
6
|
-
|
|
6
|
+
/** @deprecated answers is no longer supported */
|
|
7
|
+
export declare const EXPERIMENTAL_answers: import("./answers/answers").AnswersWidget;
|
|
7
8
|
export { default as EXPERIMENTAL_configureRelatedItems } from './configure-related-items/configure-related-items';
|
|
8
9
|
import dynamicWidgets from './dynamic-widgets/dynamic-widgets';
|
|
9
10
|
export { dynamicWidgets };
|
package/es/widgets/index.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
+
import { deprecate } from "../lib/utils/index.js";
|
|
1
2
|
export { default as analytics } from "./analytics/analytics.js";
|
|
2
3
|
export { default as breadcrumb } from "./breadcrumb/breadcrumb.js";
|
|
3
4
|
export { default as clearRefinements } from "./clear-refinements/clear-refinements.js";
|
|
4
5
|
export { default as configure } from "./configure/configure.js";
|
|
5
6
|
export { default as currentRefinements } from "./current-refinements/current-refinements.js";
|
|
6
|
-
|
|
7
|
+
import answers from "./answers/answers.js";
|
|
8
|
+
/** @deprecated answers is no longer supported */
|
|
9
|
+
export var EXPERIMENTAL_answers = deprecate(answers, 'answers is no longer supported');
|
|
7
10
|
export { default as EXPERIMENTAL_configureRelatedItems } from "./configure-related-items/configure-related-items.js";
|
|
8
11
|
import dynamicWidgets from "./dynamic-widgets/dynamic-widgets.js";
|
|
9
12
|
export { dynamicWidgets };
|
|
10
|
-
import { deprecate } from "../lib/utils/index.js";
|
|
11
13
|
/** @deprecated use dynamicWidgets */
|
|
12
|
-
|
|
13
14
|
export var EXPERIMENTAL_dynamicWidgets = deprecate(dynamicWidgets, 'use dynamicWidgets');
|
|
14
15
|
export { default as geoSearch } from "./geo-search/geo-search.js";
|
|
15
16
|
export { default as hierarchicalMenu } from "./hierarchical-menu/hierarchical-menu.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
function
|
|
2
|
-
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
4
|
-
|
|
5
|
-
function
|
|
6
|
-
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
6
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
7
|
import { h, render } from 'preact';
|
|
8
8
|
import { cx } from '@algolia/ui-components-shared';
|
|
9
9
|
import InfiniteHits from "../../components/InfiniteHits/InfiniteHits.js";
|
|
@@ -18,24 +18,22 @@ var withUsage = createDocumentationMessageGenerator({
|
|
|
18
18
|
});
|
|
19
19
|
var suit = component('InfiniteHits');
|
|
20
20
|
var InfiniteHitsWithInsightsListener = withInsightsListener(InfiniteHits);
|
|
21
|
-
|
|
22
21
|
var renderer = function renderer(_ref) {
|
|
23
22
|
var containerNode = _ref.containerNode,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
cssClasses = _ref.cssClasses,
|
|
24
|
+
renderState = _ref.renderState,
|
|
25
|
+
templates = _ref.templates,
|
|
26
|
+
hasShowPrevious = _ref.showPrevious;
|
|
28
27
|
return function (_ref2, isFirstRendering) {
|
|
29
28
|
var hits = _ref2.hits,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
29
|
+
results = _ref2.results,
|
|
30
|
+
showMore = _ref2.showMore,
|
|
31
|
+
showPrevious = _ref2.showPrevious,
|
|
32
|
+
isFirstPage = _ref2.isFirstPage,
|
|
33
|
+
isLastPage = _ref2.isLastPage,
|
|
34
|
+
instantSearchInstance = _ref2.instantSearchInstance,
|
|
35
|
+
insights = _ref2.insights,
|
|
36
|
+
bindEvent = _ref2.bindEvent;
|
|
39
37
|
if (isFirstRendering) {
|
|
40
38
|
renderState.templateProps = prepareTemplateProps({
|
|
41
39
|
defaultTemplates: defaultTemplates,
|
|
@@ -44,7 +42,6 @@ var renderer = function renderer(_ref) {
|
|
|
44
42
|
});
|
|
45
43
|
return;
|
|
46
44
|
}
|
|
47
|
-
|
|
48
45
|
render(h(InfiniteHitsWithInsightsListener, {
|
|
49
46
|
cssClasses: cssClasses,
|
|
50
47
|
hits: hits,
|
|
@@ -63,23 +60,20 @@ var renderer = function renderer(_ref) {
|
|
|
63
60
|
}), containerNode);
|
|
64
61
|
};
|
|
65
62
|
};
|
|
66
|
-
|
|
67
63
|
var infiniteHits = function infiniteHits(widgetParams) {
|
|
68
64
|
var _ref3 = widgetParams || {},
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
65
|
+
container = _ref3.container,
|
|
66
|
+
escapeHTML = _ref3.escapeHTML,
|
|
67
|
+
transformItems = _ref3.transformItems,
|
|
68
|
+
_ref3$templates = _ref3.templates,
|
|
69
|
+
templates = _ref3$templates === void 0 ? {} : _ref3$templates,
|
|
70
|
+
_ref3$cssClasses = _ref3.cssClasses,
|
|
71
|
+
userCssClasses = _ref3$cssClasses === void 0 ? {} : _ref3$cssClasses,
|
|
72
|
+
showPrevious = _ref3.showPrevious,
|
|
73
|
+
cache = _ref3.cache;
|
|
79
74
|
if (!container) {
|
|
80
75
|
throw new Error(withUsage('The `container` option is required.'));
|
|
81
76
|
}
|
|
82
|
-
|
|
83
77
|
var containerNode = getContainerNode(container);
|
|
84
78
|
var cssClasses = {
|
|
85
79
|
root: cx(suit(), userCssClasses.root),
|
|
@@ -126,5 +120,4 @@ var infiniteHits = function infiniteHits(widgetParams) {
|
|
|
126
120
|
$$widgetType: 'ais.infiniteHits'
|
|
127
121
|
});
|
|
128
122
|
};
|
|
129
|
-
|
|
130
123
|
export default infiniteHits;
|
|
@@ -4,9 +4,9 @@ import { cx } from '@algolia/ui-components-shared';
|
|
|
4
4
|
var defaultTemplates = {
|
|
5
5
|
item: function item(_ref) {
|
|
6
6
|
var cssClasses = _ref.cssClasses,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
url = _ref.url,
|
|
8
|
+
label = _ref.label,
|
|
9
|
+
count = _ref.count;
|
|
10
10
|
return h("a", {
|
|
11
11
|
className: cx(cssClasses.link),
|
|
12
12
|
href: url
|