All files / src/hooks useSearchSession.tsx

100% Statements 8/8
100% Branches 2/2
100% Functions 3/3
100% Lines 8/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 5812x                       5x 5x                                                             2x   2x     2x 1x   1x          
import {
  AddressAutofillOptions,
  AddressAutofillRetrieveResponse,
  AddressAutofillSuggestion,
  AddressAutofillSuggestionResponse,
  AddressAutofillCore,
  SearchBoxCore,
  SearchBoxOptions,
  SearchBoxRetrieveResponse,
  SearchBoxSuggestion,
  SearchBoxSuggestionResponse,
  SearchSession
} from '@mapbox/search-js-core';
import { useMemo } from 'react';
 
export type SearchSessionType = SearchSession<
  SearchBoxOptions,
  SearchBoxSuggestion,
  SearchBoxSuggestionResponse,
  SearchBoxRetrieveResponse
>;
 
export type AddressAutofillSearchSessionType = SearchSession<
  AddressAutofillOptions,
  AddressAutofillSuggestion,
  AddressAutofillSuggestionResponse,
  AddressAutofillRetrieveResponse
>;
 
function useSearchSession(search: SearchBoxCore): SearchSessionType;
function useSearchSession(
  autofill: AddressAutofillCore
): AddressAutofillSearchSessionType;
 
/**
 * A React hook that returns a {@link SearchSession} instance.
 *
 * @param {SearchBoxCore | AddressAutofillCore} search
 * @returns {SearchSession}
 * @see {@link SearchSession}
 */
function useSearchSession(
  search: SearchBoxCore | AddressAutofillCore
): SearchSessionType | AddressAutofillSearchSessionType {
  const searchSession = useMemo(() => {
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    return new SearchSession(search as any);
  }, [search]);
 
  if (search instanceof SearchBoxCore) {
    return searchSession as SearchSessionType;
  } else {
    return searchSession as AddressAutofillSearchSessionType;
  }
}
 
export { useSearchSession };