typesense-docsearch-react
Advanced tools
Comparing version 0.4.0-0 to 0.4.0-1
import _defineProperty from "@babel/runtime/helpers/defineProperty"; | ||
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; | ||
import _extends from "@babel/runtime/helpers/extends"; | ||
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; } | ||
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; } | ||
import _regeneratorRuntime from "@babel/runtime/regenerator"; | ||
@@ -14,3 +11,2 @@ import { render, act, fireEvent, screen } from '@testing-library/react'; | ||
import { DocSearch as DocSearchComponent } from '../DocSearch'; | ||
function DocSearch(props) { | ||
@@ -22,5 +18,5 @@ return /*#__PURE__*/React.createElement(DocSearchComponent, _extends({ | ||
}, props)); | ||
} // mock empty response | ||
} | ||
// mock empty response | ||
function noResultSearch(_queries, _requestOptions) { | ||
@@ -43,3 +39,2 @@ return new Promise(function (resolve) { | ||
} | ||
describe('api', function () { | ||
@@ -96,8 +91,5 @@ var container; | ||
return screen.findByText('Search'); | ||
case 3: | ||
_context.t1 = _context.sent; | ||
_context.t0.click.call(_context.t0, _context.t1); | ||
case 5: | ||
@@ -109,7 +101,5 @@ case "end": | ||
}))); | ||
case 4: | ||
expect(document.querySelector('.DocSearch-Modal')).toBeInTheDocument(); | ||
expect(screen.getByText('Pas de recherche récentes')).toBeInTheDocument(); | ||
case 6: | ||
@@ -153,8 +143,5 @@ case "end": | ||
return screen.findByText('Search'); | ||
case 3: | ||
_context3.t1 = _context3.sent; | ||
_context3.t0.click.call(_context3.t0, _context3.t1); | ||
case 5: | ||
@@ -166,3 +153,2 @@ case "end": | ||
}))); | ||
case 4: | ||
@@ -177,3 +163,2 @@ _context5.next = 6; | ||
return screen.findByPlaceholderText('Search docs'); | ||
case 3: | ||
@@ -186,5 +171,3 @@ _context4.t1 = _context4.sent; | ||
}; | ||
_context4.t0.input.call(_context4.t0, _context4.t1, _context4.t2); | ||
case 6: | ||
@@ -196,3 +179,2 @@ case "end": | ||
}))); | ||
case 6: | ||
@@ -204,3 +186,2 @@ expect(screen.getByText(/Pas de résultats pour/)).toBeInTheDocument(); | ||
})).toBeInTheDocument(); | ||
case 9: | ||
@@ -237,8 +218,5 @@ case "end": | ||
return screen.findByText('Search'); | ||
case 3: | ||
_context6.t1 = _context6.sent; | ||
_context6.t0.click.call(_context6.t0, _context6.t1); | ||
case 5: | ||
@@ -250,3 +228,2 @@ case "end": | ||
}))); | ||
case 4: | ||
@@ -257,3 +234,2 @@ expect(document.querySelector('.DocSearch-Cancel').innerHTML).toBe('Annuler'); | ||
expect(document.querySelector('.DocSearch-Reset').getAttribute('aria-label')).toBe('Effacer'); | ||
case 8: | ||
@@ -294,8 +270,5 @@ case "end": | ||
return screen.findByText('Search'); | ||
case 3: | ||
_context8.t1 = _context8.sent; | ||
_context8.t0.click.call(_context8.t0, _context8.t1); | ||
case 5: | ||
@@ -307,3 +280,2 @@ case "end": | ||
}))); | ||
case 4: | ||
@@ -318,3 +290,2 @@ expect(screen.getByText('Recherche par')).toBeInTheDocument(); | ||
expect(document.querySelector('.DocSearch-Commands-Key > svg[aria-label="Touche d\'entrée"]')).toBeInTheDocument(); | ||
case 12: | ||
@@ -348,8 +319,5 @@ case "end": | ||
return screen.findByText('Search'); | ||
case 3: | ||
_context10.t1 = _context10.sent; | ||
_context10.t0.click.call(_context10.t0, _context10.t1); | ||
case 5: | ||
@@ -361,3 +329,2 @@ case "end": | ||
}))); | ||
case 4: | ||
@@ -372,3 +339,2 @@ _context12.next = 6; | ||
return screen.findByPlaceholderText('Search docs'); | ||
case 3: | ||
@@ -381,5 +347,3 @@ _context11.t1 = _context11.sent; | ||
}; | ||
_context11.t0.input.call(_context11.t0, _context11.t1, _context11.t2); | ||
case 6: | ||
@@ -391,7 +355,5 @@ case "end": | ||
}))); | ||
case 6: | ||
expect(screen.getByText(/No results for/)).toBeInTheDocument(); | ||
expect(document.querySelector('.DocSearch-Help a')).not.toBeInTheDocument(); | ||
case 8: | ||
@@ -427,8 +389,5 @@ case "end": | ||
return screen.findByText('Search'); | ||
case 3: | ||
_context13.t1 = _context13.sent; | ||
_context13.t0.click.call(_context13.t0, _context13.t1); | ||
case 5: | ||
@@ -440,3 +399,2 @@ case "end": | ||
}))); | ||
case 3: | ||
@@ -451,3 +409,2 @@ _context15.next = 5; | ||
return screen.findByPlaceholderText('Search docs'); | ||
case 3: | ||
@@ -460,5 +417,3 @@ _context14.t1 = _context14.sent; | ||
}; | ||
_context14.t0.input.call(_context14.t0, _context14.t1, _context14.t2); | ||
case 6: | ||
@@ -470,3 +425,2 @@ case "end": | ||
}))); | ||
case 5: | ||
@@ -477,3 +431,2 @@ expect(screen.getByText(/No results for/)).toBeInTheDocument(); | ||
expect(link.getAttribute('href')).toBe('https://github.com/algolia/docsearch/issues/new?title=q'); | ||
case 9: | ||
@@ -480,0 +433,0 @@ case "end": |
@@ -10,15 +10,11 @@ import _extends from "@babel/runtime/helpers/extends"; | ||
var _props$translations, _props$translations2; | ||
var searchButtonRef = React.useRef(null); | ||
var _React$useState = React.useState(false), | ||
_React$useState2 = _slicedToArray(_React$useState, 2), | ||
isOpen = _React$useState2[0], | ||
setIsOpen = _React$useState2[1]; | ||
_React$useState2 = _slicedToArray(_React$useState, 2), | ||
isOpen = _React$useState2[0], | ||
setIsOpen = _React$useState2[1]; | ||
var _React$useState3 = React.useState((props === null || props === void 0 ? void 0 : props.initialQuery) || undefined), | ||
_React$useState4 = _slicedToArray(_React$useState3, 2), | ||
initialQuery = _React$useState4[0], | ||
setInitialQuery = _React$useState4[1]; | ||
_React$useState4 = _slicedToArray(_React$useState3, 2), | ||
initialQuery = _React$useState4[0], | ||
setInitialQuery = _React$useState4[1]; | ||
var onOpen = React.useCallback(function () { | ||
@@ -25,0 +21,0 @@ setIsOpen(true); |
@@ -10,22 +10,17 @@ import _extends from "@babel/runtime/helpers/extends"; | ||
var ACTION_KEY_APPLE = '⌘'; | ||
function isAppleDevice() { | ||
return /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform); | ||
} | ||
export var DocSearchButton = React.forwardRef(function (_ref, ref) { | ||
var _ref$translations = _ref.translations, | ||
translations = _ref$translations === void 0 ? {} : _ref$translations, | ||
props = _objectWithoutProperties(_ref, _excluded); | ||
translations = _ref$translations === void 0 ? {} : _ref$translations, | ||
props = _objectWithoutProperties(_ref, _excluded); | ||
var _translations$buttonT = translations.buttonText, | ||
buttonText = _translations$buttonT === void 0 ? 'Search' : _translations$buttonT, | ||
_translations$buttonA = translations.buttonAriaLabel, | ||
buttonAriaLabel = _translations$buttonA === void 0 ? 'Search' : _translations$buttonA; | ||
buttonText = _translations$buttonT === void 0 ? 'Search' : _translations$buttonT, | ||
_translations$buttonA = translations.buttonAriaLabel, | ||
buttonAriaLabel = _translations$buttonA === void 0 ? 'Search' : _translations$buttonA; | ||
var _useState = useState(null), | ||
_useState2 = _slicedToArray(_useState, 2), | ||
key = _useState2[0], | ||
setKey = _useState2[1]; | ||
_useState2 = _slicedToArray(_useState, 2), | ||
key = _useState2[0], | ||
setKey = _useState2[1]; | ||
useEffect(function () { | ||
@@ -32,0 +27,0 @@ if (typeof navigator !== 'undefined') { |
@@ -6,7 +6,4 @@ import _extends from "@babel/runtime/helpers/extends"; | ||
var _excluded = ["footer", "searchBox"]; | ||
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; } | ||
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; } | ||
import { createAutocomplete } from '@algolia/autocomplete-core'; | ||
@@ -26,46 +23,43 @@ import React from 'react'; | ||
var typesenseCollectionName = _ref.typesenseCollectionName, | ||
typesenseServerConfig = _ref.typesenseServerConfig, | ||
typesenseSearchParameters = _ref.typesenseSearchParameters, | ||
_ref$placeholder = _ref.placeholder, | ||
placeholder = _ref$placeholder === void 0 ? 'Search docs' : _ref$placeholder, | ||
_ref$onClose = _ref.onClose, | ||
onClose = _ref$onClose === void 0 ? noop : _ref$onClose, | ||
_ref$transformItems = _ref.transformItems, | ||
transformItems = _ref$transformItems === void 0 ? identity : _ref$transformItems, | ||
_ref$hitComponent = _ref.hitComponent, | ||
hitComponent = _ref$hitComponent === void 0 ? Hit : _ref$hitComponent, | ||
_ref$resultsFooterCom = _ref.resultsFooterComponent, | ||
resultsFooterComponent = _ref$resultsFooterCom === void 0 ? function () { | ||
return null; | ||
} : _ref$resultsFooterCom, | ||
navigator = _ref.navigator, | ||
_ref$initialScrollY = _ref.initialScrollY, | ||
initialScrollY = _ref$initialScrollY === void 0 ? 0 : _ref$initialScrollY, | ||
_ref$transformSearchC = _ref.transformSearchClient, | ||
transformSearchClient = _ref$transformSearchC === void 0 ? identity : _ref$transformSearchC, | ||
_ref$disableUserPerso = _ref.disableUserPersonalization, | ||
disableUserPersonalization = _ref$disableUserPerso === void 0 ? false : _ref$disableUserPerso, | ||
_ref$initialQuery = _ref.initialQuery, | ||
initialQueryFromProp = _ref$initialQuery === void 0 ? '' : _ref$initialQuery, | ||
_ref$translations = _ref.translations, | ||
translations = _ref$translations === void 0 ? {} : _ref$translations, | ||
getMissingResultsUrl = _ref.getMissingResultsUrl; | ||
typesenseServerConfig = _ref.typesenseServerConfig, | ||
typesenseSearchParameters = _ref.typesenseSearchParameters, | ||
_ref$placeholder = _ref.placeholder, | ||
placeholder = _ref$placeholder === void 0 ? 'Search docs' : _ref$placeholder, | ||
_ref$onClose = _ref.onClose, | ||
onClose = _ref$onClose === void 0 ? noop : _ref$onClose, | ||
_ref$transformItems = _ref.transformItems, | ||
transformItems = _ref$transformItems === void 0 ? identity : _ref$transformItems, | ||
_ref$hitComponent = _ref.hitComponent, | ||
hitComponent = _ref$hitComponent === void 0 ? Hit : _ref$hitComponent, | ||
_ref$resultsFooterCom = _ref.resultsFooterComponent, | ||
resultsFooterComponent = _ref$resultsFooterCom === void 0 ? function () { | ||
return null; | ||
} : _ref$resultsFooterCom, | ||
navigator = _ref.navigator, | ||
_ref$initialScrollY = _ref.initialScrollY, | ||
initialScrollY = _ref$initialScrollY === void 0 ? 0 : _ref$initialScrollY, | ||
_ref$transformSearchC = _ref.transformSearchClient, | ||
transformSearchClient = _ref$transformSearchC === void 0 ? identity : _ref$transformSearchC, | ||
_ref$disableUserPerso = _ref.disableUserPersonalization, | ||
disableUserPersonalization = _ref$disableUserPerso === void 0 ? false : _ref$disableUserPerso, | ||
_ref$initialQuery = _ref.initialQuery, | ||
initialQueryFromProp = _ref$initialQuery === void 0 ? '' : _ref$initialQuery, | ||
_ref$translations = _ref.translations, | ||
translations = _ref$translations === void 0 ? {} : _ref$translations, | ||
getMissingResultsUrl = _ref.getMissingResultsUrl; | ||
var footerTranslations = translations.footer, | ||
searchBoxTranslations = translations.searchBox, | ||
screenStateTranslations = _objectWithoutProperties(translations, _excluded); | ||
searchBoxTranslations = translations.searchBox, | ||
screenStateTranslations = _objectWithoutProperties(translations, _excluded); | ||
var _React$useState = React.useState({ | ||
query: '', | ||
collections: [], | ||
completion: null, | ||
context: {}, | ||
isOpen: false, | ||
activeItemId: null, | ||
status: 'idle' | ||
}), | ||
_React$useState2 = _slicedToArray(_React$useState, 2), | ||
state = _React$useState2[0], | ||
setState = _React$useState2[1]; | ||
query: '', | ||
collections: [], | ||
completion: null, | ||
context: {}, | ||
isOpen: false, | ||
activeItemId: null, | ||
status: 'idle' | ||
}), | ||
_React$useState2 = _slicedToArray(_React$useState, 2), | ||
state = _React$useState2[0], | ||
setState = _React$useState2[1]; | ||
var indexName = typesenseCollectionName; | ||
@@ -94,7 +88,8 @@ var containerRef = React.useRef(null); | ||
return; | ||
} // We don't store `content` record, but their parent if available. | ||
} | ||
// We don't store `content` record, but their parent if available. | ||
var search = item.type === 'content' ? item.__docsearch_parent : item; | ||
var search = item.type === 'content' ? item.__docsearch_parent : item; // We save the recent search only if it's not favorited. | ||
// We save the recent search only if it's not favorited. | ||
if (search && favoriteSearches.getAll().findIndex(function (x) { | ||
@@ -124,6 +119,5 @@ return x.objectID === search.objectID; | ||
var query = _ref2.query, | ||
sourcesState = _ref2.state, | ||
setContext = _ref2.setContext, | ||
setStatus = _ref2.setStatus; | ||
sourcesState = _ref2.state, | ||
setContext = _ref2.setContext, | ||
setStatus = _ref2.setStatus; | ||
if (!query) { | ||
@@ -133,3 +127,2 @@ if (disableUserPersonalization) { | ||
} | ||
return [{ | ||
@@ -139,5 +132,4 @@ sourceId: 'recentSearches', | ||
var item = _ref3.item, | ||
event = _ref3.event; | ||
event = _ref3.event; | ||
saveRecentSearch(item); | ||
if (!event.shiftKey && !event.ctrlKey && !event.metaKey) { | ||
@@ -158,5 +150,4 @@ onClose(); | ||
var item = _ref5.item, | ||
event = _ref5.event; | ||
event = _ref5.event; | ||
saveRecentSearch(item); | ||
if (!event.shiftKey && !event.ctrlKey && !event.metaKey) { | ||
@@ -174,5 +165,5 @@ onClose(); | ||
}]; | ||
} // @ts-expect-error | ||
} | ||
// @ts-expect-error | ||
return searchClient.search([_objectSpread({ | ||
@@ -188,3 +179,5 @@ collection: typesenseCollectionName, | ||
group_limit: 3, | ||
sort_by: 'item_priority:desc' | ||
sort_by: 'item_priority:desc', | ||
snippet_threshold: 8, | ||
highlight_affix_num_tokens: 4 | ||
}, typesenseSearchParameters)]).catch(function (error) { | ||
@@ -198,3 +191,2 @@ // The Algolia `RetryError` happens when all the servers have | ||
} | ||
throw error; | ||
@@ -204,9 +196,10 @@ }).then(function (_ref7) { | ||
var _results$ = results[0], | ||
hits = _results$.hits, | ||
nbHits = _results$.nbHits; | ||
hits = _results$.hits, | ||
nbHits = _results$.nbHits; | ||
var sources = groupBy(hits, function (hit) { | ||
return removeHighlightTags(hit); | ||
}); // We store the `lvl0`s to display them as search suggestions | ||
}); | ||
// We store the `lvl0`s to display them as search suggestions | ||
// in the "no results" screen. | ||
if (sourcesState.context.searchSuggestions.length < Object.keys(sources).length) { | ||
@@ -217,3 +210,2 @@ setContext({ | ||
} | ||
setContext({ | ||
@@ -227,5 +219,4 @@ nbHits: nbHits | ||
var item = _ref8.item, | ||
event = _ref8.event; | ||
event = _ref8.event; | ||
saveRecentSearch(item); | ||
if (!event.shiftKey && !event.ctrlKey && !event.metaKey) { | ||
@@ -259,4 +250,4 @@ onClose(); | ||
var getEnvironmentProps = autocomplete.getEnvironmentProps, | ||
getRootProps = autocomplete.getRootProps, | ||
refresh = autocomplete.refresh; | ||
getRootProps = autocomplete.getRootProps, | ||
refresh = autocomplete.refresh; | ||
useTouchEvents({ | ||
@@ -275,12 +266,13 @@ getEnvironmentProps: getEnvironmentProps, | ||
var _window$scrollTo, _window; | ||
document.body.classList.remove('DocSearch--active'); | ||
document.body.classList.remove('DocSearch--active'); // IE11 doesn't support `scrollTo` so we check that the method exists | ||
// IE11 doesn't support `scrollTo` so we check that the method exists | ||
// first. | ||
(_window$scrollTo = (_window = window).scrollTo) === null || _window$scrollTo === void 0 ? void 0 : _window$scrollTo.call(_window, 0, initialScrollY); | ||
}; | ||
(_window$scrollTo = (_window = window).scrollTo) === null || _window$scrollTo === void 0 ? void 0 : _window$scrollTo.call(_window, 0, initialScrollY); | ||
}; // eslint-disable-next-line react-hooks/exhaustive-deps | ||
// eslint-disable-next-line react-hooks/exhaustive-deps | ||
}, []); | ||
React.useEffect(function () { | ||
var isMobileMediaQuery = window.matchMedia('(max-width: 768px)'); | ||
if (isMobileMediaQuery.matches) { | ||
@@ -294,3 +286,5 @@ snippetLength.current = 5; | ||
} | ||
}, [state.query]); // We don't focus the input when there's an initial query (i.e. Selection | ||
}, [state.query]); | ||
// We don't focus the input when there's an initial query (i.e. Selection | ||
// Search) because users rather want to see the results directly, without the | ||
@@ -300,7 +294,5 @@ // keyboard appearing. | ||
// results, which is usually triggered on focus. | ||
React.useEffect(function () { | ||
if (initialQuery.length > 0) { | ||
refresh(); | ||
if (inputRef.current) { | ||
@@ -310,6 +302,7 @@ inputRef.current.focus(); | ||
} | ||
}, [initialQuery, refresh]); // We rely on a CSS property to set the modal height to the full viewport height | ||
}, [initialQuery, refresh]); | ||
// We rely on a CSS property to set the modal height to the full viewport height | ||
// because all mobile browsers don't compute their height the same way. | ||
// See https://css-tricks.com/the-trick-to-viewport-units-on-mobile/ | ||
React.useEffect(function () { | ||
@@ -322,3 +315,2 @@ function setFullViewportHeight() { | ||
} | ||
setFullViewportHeight(); | ||
@@ -325,0 +317,0 @@ window.addEventListener('resize', setFullViewportHeight); |
@@ -5,7 +5,7 @@ import React from 'react'; | ||
var _ref$translations = _ref.translations, | ||
translations = _ref$translations === void 0 ? {} : _ref$translations; | ||
translations = _ref$translations === void 0 ? {} : _ref$translations; | ||
var _translations$titleTe = translations.titleText, | ||
titleText = _translations$titleTe === void 0 ? 'Unable to fetch results' : _translations$titleTe, | ||
_translations$helpTex = translations.helpText, | ||
helpText = _translations$helpTex === void 0 ? 'You might want to check your network connection.' : _translations$helpTex; | ||
titleText = _translations$titleTe === void 0 ? 'Unable to fetch results' : _translations$titleTe, | ||
_translations$helpTex = translations.helpText, | ||
helpText = _translations$helpTex === void 0 ? 'You might want to check your network connection.' : _translations$helpTex; | ||
return /*#__PURE__*/React.createElement("div", { | ||
@@ -12,0 +12,0 @@ className: "DocSearch-ErrorScreen" |
import React from 'react'; | ||
import { TypesenseLogo } from './TypesenseLogo'; | ||
function CommandIcon(props) { | ||
@@ -18,22 +17,21 @@ return /*#__PURE__*/React.createElement("svg", { | ||
} | ||
export function Footer(_ref) { | ||
var _ref$translations = _ref.translations, | ||
translations = _ref$translations === void 0 ? {} : _ref$translations; | ||
translations = _ref$translations === void 0 ? {} : _ref$translations; | ||
var _translations$selectT = translations.selectText, | ||
selectText = _translations$selectT === void 0 ? 'to select' : _translations$selectT, | ||
_translations$selectK = translations.selectKeyAriaLabel, | ||
selectKeyAriaLabel = _translations$selectK === void 0 ? 'Enter key' : _translations$selectK, | ||
_translations$navigat = translations.navigateText, | ||
navigateText = _translations$navigat === void 0 ? 'to navigate' : _translations$navigat, | ||
_translations$navigat2 = translations.navigateUpKeyAriaLabel, | ||
navigateUpKeyAriaLabel = _translations$navigat2 === void 0 ? 'Arrow up' : _translations$navigat2, | ||
_translations$navigat3 = translations.navigateDownKeyAriaLabel, | ||
navigateDownKeyAriaLabel = _translations$navigat3 === void 0 ? 'Arrow down' : _translations$navigat3, | ||
_translations$closeTe = translations.closeText, | ||
closeText = _translations$closeTe === void 0 ? 'to close' : _translations$closeTe, | ||
_translations$closeKe = translations.closeKeyAriaLabel, | ||
closeKeyAriaLabel = _translations$closeKe === void 0 ? 'Escape key' : _translations$closeKe, | ||
_translations$searchB = translations.searchByText, | ||
searchByText = _translations$searchB === void 0 ? 'Search by' : _translations$searchB; | ||
selectText = _translations$selectT === void 0 ? 'to select' : _translations$selectT, | ||
_translations$selectK = translations.selectKeyAriaLabel, | ||
selectKeyAriaLabel = _translations$selectK === void 0 ? 'Enter key' : _translations$selectK, | ||
_translations$navigat = translations.navigateText, | ||
navigateText = _translations$navigat === void 0 ? 'to navigate' : _translations$navigat, | ||
_translations$navigat2 = translations.navigateUpKeyAriaLabel, | ||
navigateUpKeyAriaLabel = _translations$navigat2 === void 0 ? 'Arrow up' : _translations$navigat2, | ||
_translations$navigat3 = translations.navigateDownKeyAriaLabel, | ||
navigateDownKeyAriaLabel = _translations$navigat3 === void 0 ? 'Arrow down' : _translations$navigat3, | ||
_translations$closeTe = translations.closeText, | ||
closeText = _translations$closeTe === void 0 ? 'to close' : _translations$closeTe, | ||
_translations$closeKe = translations.closeKeyAriaLabel, | ||
closeKeyAriaLabel = _translations$closeKe === void 0 ? 'Escape key' : _translations$closeKe, | ||
_translations$searchB = translations.searchByText, | ||
searchByText = _translations$searchB === void 0 ? 'Search by' : _translations$searchB; | ||
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { | ||
@@ -40,0 +38,0 @@ className: "DocSearch-Logo" |
import React from 'react'; | ||
export function Hit(_ref) { | ||
var hit = _ref.hit, | ||
children = _ref.children; | ||
children = _ref.children; | ||
return /*#__PURE__*/React.createElement("a", { | ||
@@ -6,0 +6,0 @@ href: hit.url |
import React from 'react'; | ||
var LvlIcon = function LvlIcon() { | ||
@@ -16,3 +15,2 @@ return /*#__PURE__*/React.createElement("svg", { | ||
}; | ||
export function SourceIcon(props) { | ||
@@ -22,6 +20,4 @@ switch (props.type) { | ||
return /*#__PURE__*/React.createElement(LvlIcon, null); | ||
case 'content': | ||
return /*#__PURE__*/React.createElement(ContentIcon, null); | ||
default: | ||
@@ -31,3 +27,2 @@ return /*#__PURE__*/React.createElement(AnchorIcon, null); | ||
} | ||
function AnchorIcon() { | ||
@@ -47,3 +42,2 @@ return /*#__PURE__*/React.createElement("svg", { | ||
} | ||
function ContentIcon() { | ||
@@ -50,0 +44,0 @@ return /*#__PURE__*/React.createElement("svg", { |
@@ -8,13 +8,12 @@ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray"; | ||
var _ref$translations = _ref.translations, | ||
translations = _ref$translations === void 0 ? {} : _ref$translations, | ||
props = _objectWithoutProperties(_ref, _excluded); | ||
translations = _ref$translations === void 0 ? {} : _ref$translations, | ||
props = _objectWithoutProperties(_ref, _excluded); | ||
var _translations$noResul = translations.noResultsText, | ||
noResultsText = _translations$noResul === void 0 ? 'No results for' : _translations$noResul, | ||
_translations$suggest = translations.suggestedQueryText, | ||
suggestedQueryText = _translations$suggest === void 0 ? 'Try searching for' : _translations$suggest, | ||
_translations$reportM = translations.reportMissingResultsText, | ||
reportMissingResultsText = _translations$reportM === void 0 ? 'Believe this query should return results?' : _translations$reportM, | ||
_translations$reportM2 = translations.reportMissingResultsLinkText, | ||
reportMissingResultsLinkText = _translations$reportM2 === void 0 ? 'Let us know.' : _translations$reportM2; | ||
noResultsText = _translations$noResul === void 0 ? 'No results for' : _translations$noResul, | ||
_translations$suggest = translations.suggestedQueryText, | ||
suggestedQueryText = _translations$suggest === void 0 ? 'Try searching for' : _translations$suggest, | ||
_translations$reportM = translations.reportMissingResultsText, | ||
reportMissingResultsText = _translations$reportM === void 0 ? 'Believe this query should return results?' : _translations$reportM, | ||
_translations$reportM2 = translations.reportMissingResultsLinkText, | ||
reportMissingResultsLinkText = _translations$reportM2 === void 0 ? 'Let us know.' : _translations$reportM2; | ||
var searchSuggestions = props.state.context.searchSuggestions; | ||
@@ -21,0 +20,0 @@ return /*#__PURE__*/React.createElement("div", { |
@@ -9,3 +9,2 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; | ||
} | ||
return /*#__PURE__*/React.createElement("section", { | ||
@@ -23,26 +22,21 @@ className: "DocSearch-Hits" | ||
} | ||
function Result(_ref) { | ||
var item = _ref.item, | ||
index = _ref.index, | ||
renderIcon = _ref.renderIcon, | ||
renderAction = _ref.renderAction, | ||
getItemProps = _ref.getItemProps, | ||
onItemClick = _ref.onItemClick, | ||
collection = _ref.collection, | ||
hitComponent = _ref.hitComponent; | ||
index = _ref.index, | ||
renderIcon = _ref.renderIcon, | ||
renderAction = _ref.renderAction, | ||
getItemProps = _ref.getItemProps, | ||
onItemClick = _ref.onItemClick, | ||
collection = _ref.collection, | ||
hitComponent = _ref.hitComponent; | ||
var _React$useState = React.useState(false), | ||
_React$useState2 = _slicedToArray(_React$useState, 2), | ||
isDeleting = _React$useState2[0], | ||
setIsDeleting = _React$useState2[1]; | ||
_React$useState2 = _slicedToArray(_React$useState, 2), | ||
isDeleting = _React$useState2[0], | ||
setIsDeleting = _React$useState2[1]; | ||
var _React$useState3 = React.useState(false), | ||
_React$useState4 = _slicedToArray(_React$useState3, 2), | ||
isFavoriting = _React$useState4[0], | ||
setIsFavoriting = _React$useState4[1]; | ||
_React$useState4 = _slicedToArray(_React$useState3, 2), | ||
isFavoriting = _React$useState4[0], | ||
setIsFavoriting = _React$useState4[1]; | ||
var action = React.useRef(null); | ||
var Hit = hitComponent; | ||
function runDeleteTransition(cb) { | ||
@@ -52,3 +46,2 @@ setIsDeleting(true); | ||
} | ||
function runFavoriteTransition(cb) { | ||
@@ -58,3 +51,2 @@ setIsFavoriting(true); | ||
} | ||
return /*#__PURE__*/React.createElement("li", _extends({ | ||
@@ -61,0 +53,0 @@ className: ['DocSearch-Hit', item.__docsearch_parent && 'DocSearch-Hit--Child', isDeleting && 'DocSearch-Hit--deleting', isFavoriting && 'DocSearch-Hit--favoriting'].filter(Boolean).join(' '), |
@@ -13,3 +13,2 @@ import _extends from "@babel/runtime/helpers/extends"; | ||
} | ||
var title = removeHighlightTags(collection.items[0]); | ||
@@ -22,5 +21,4 @@ return /*#__PURE__*/React.createElement(Results, _extends({}, props, { | ||
var _collection$items; | ||
var item = _ref.item, | ||
index = _ref.index; | ||
index = _ref.index; | ||
return /*#__PURE__*/React.createElement(React.Fragment, null, item.__docsearch_parent && /*#__PURE__*/React.createElement("svg", { | ||
@@ -27,0 +25,0 @@ className: "DocSearch-Hit-Tree", |
@@ -11,5 +11,4 @@ import _extends from "@babel/runtime/helpers/extends"; | ||
var _ref$translations = _ref.translations, | ||
translations = _ref$translations === void 0 ? {} : _ref$translations, | ||
props = _objectWithoutProperties(_ref, _excluded); | ||
translations = _ref$translations === void 0 ? {} : _ref$translations, | ||
props = _objectWithoutProperties(_ref, _excluded); | ||
if (props.state.status === 'error') { | ||
@@ -20,7 +19,5 @@ return /*#__PURE__*/React.createElement(ErrorScreen, { | ||
} | ||
var hasCollections = props.state.collections.some(function (collection) { | ||
return collection.items.length > 0; | ||
}); | ||
if (!props.state.query) { | ||
@@ -32,3 +29,2 @@ return /*#__PURE__*/React.createElement(StartScreen, _extends({}, props, { | ||
} | ||
if (hasCollections === false) { | ||
@@ -39,3 +35,2 @@ return /*#__PURE__*/React.createElement(NoResultsScreen, _extends({}, props, { | ||
} | ||
return /*#__PURE__*/React.createElement(ResultsScreen, props); | ||
@@ -42,0 +37,0 @@ }, function areEqual(_prevProps, nextProps) { |
@@ -11,19 +11,16 @@ import _extends from "@babel/runtime/helpers/extends"; | ||
var _ref$translations = _ref.translations, | ||
translations = _ref$translations === void 0 ? {} : _ref$translations, | ||
props = _objectWithoutProperties(_ref, _excluded); | ||
translations = _ref$translations === void 0 ? {} : _ref$translations, | ||
props = _objectWithoutProperties(_ref, _excluded); | ||
var _translations$resetBu = translations.resetButtonTitle, | ||
resetButtonTitle = _translations$resetBu === void 0 ? 'Clear the query' : _translations$resetBu, | ||
_translations$resetBu2 = translations.resetButtonAriaLabel, | ||
resetButtonAriaLabel = _translations$resetBu2 === void 0 ? 'Clear the query' : _translations$resetBu2, | ||
_translations$cancelB = translations.cancelButtonText, | ||
cancelButtonText = _translations$cancelB === void 0 ? 'Cancel' : _translations$cancelB, | ||
_translations$cancelB2 = translations.cancelButtonAriaLabel, | ||
cancelButtonAriaLabel = _translations$cancelB2 === void 0 ? 'Cancel' : _translations$cancelB2; | ||
resetButtonTitle = _translations$resetBu === void 0 ? 'Clear the query' : _translations$resetBu, | ||
_translations$resetBu2 = translations.resetButtonAriaLabel, | ||
resetButtonAriaLabel = _translations$resetBu2 === void 0 ? 'Clear the query' : _translations$resetBu2, | ||
_translations$cancelB = translations.cancelButtonText, | ||
cancelButtonText = _translations$cancelB === void 0 ? 'Cancel' : _translations$cancelB, | ||
_translations$cancelB2 = translations.cancelButtonAriaLabel, | ||
cancelButtonAriaLabel = _translations$cancelB2 === void 0 ? 'Cancel' : _translations$cancelB2; | ||
var _props$getFormProps = props.getFormProps({ | ||
inputElement: props.inputRef.current | ||
}), | ||
onReset = _props$getFormProps.onReset; | ||
inputElement: props.inputRef.current | ||
}), | ||
onReset = _props$getFormProps.onReset; | ||
React.useEffect(function () { | ||
@@ -30,0 +27,0 @@ if (props.autoFocus && props.inputRef.current) { |
import _defineProperty from "@babel/runtime/helpers/defineProperty"; | ||
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties"; | ||
var _excluded = ["hit", "attribute", "tagName"]; | ||
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; } | ||
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; } | ||
import { createElement } from 'react'; | ||
export function Snippet(_ref) { | ||
var _hit$_snippetResult$a; | ||
var _hit$_highlightResult, _hit$_snippetResult, _hit$_snippetResult$a; | ||
var hit = _ref.hit, | ||
attribute = _ref.attribute, | ||
_ref$tagName = _ref.tagName, | ||
tagName = _ref$tagName === void 0 ? 'span' : _ref$tagName, | ||
rest = _objectWithoutProperties(_ref, _excluded); | ||
attribute = _ref.attribute, | ||
_ref$tagName = _ref.tagName, | ||
tagName = _ref$tagName === void 0 ? 'span' : _ref$tagName, | ||
rest = _objectWithoutProperties(_ref, _excluded); | ||
var displayValue = ((_hit$_highlightResult = hit._highlightResult[attribute]) === null || _hit$_highlightResult === void 0 ? void 0 : _hit$_highlightResult.value) || hit[attribute]; | ||
if ((_hit$_snippetResult = hit._snippetResult) !== null && _hit$_snippetResult !== void 0 && (_hit$_snippetResult$a = _hit$_snippetResult[attribute]) !== null && _hit$_snippetResult$a !== void 0 && _hit$_snippetResult$a.value) { | ||
var _hit$_snippetResult$a2; | ||
var snippetValue = (_hit$_snippetResult$a2 = hit._snippetResult[attribute]) === null || _hit$_snippetResult$a2 === void 0 ? void 0 : _hit$_snippetResult$a2.value; | ||
if (displayValue.substring(0, 20) !== snippetValue.substring(0, 20)) { | ||
snippetValue = "\u2026 ".concat(snippetValue); | ||
} | ||
if (displayValue.substring(displayValue.length - 20, displayValue.length) !== snippetValue.substring(snippetValue.length - 20, snippetValue.length)) { | ||
snippetValue = "".concat(snippetValue, " \u2026"); | ||
} | ||
displayValue = snippetValue; | ||
} | ||
return createElement(tagName, _objectSpread(_objectSpread({}, rest), {}, { | ||
dangerouslySetInnerHTML: { | ||
__html: (hit._snippetResult ? (_hit$_snippetResult$a = hit._snippetResult[attribute]) === null || _hit$_snippetResult$a === void 0 ? void 0 : _hit$_snippetResult$a.value : false) || hit[attribute] | ||
__html: displayValue | ||
} | ||
})); | ||
} |
@@ -9,18 +9,16 @@ import _extends from "@babel/runtime/helpers/extends"; | ||
var _ref$translations = _ref.translations, | ||
translations = _ref$translations === void 0 ? {} : _ref$translations, | ||
props = _objectWithoutProperties(_ref, _excluded); | ||
translations = _ref$translations === void 0 ? {} : _ref$translations, | ||
props = _objectWithoutProperties(_ref, _excluded); | ||
var _translations$recentS = translations.recentSearchesTitle, | ||
recentSearchesTitle = _translations$recentS === void 0 ? 'Recent' : _translations$recentS, | ||
_translations$noRecen = translations.noRecentSearchesText, | ||
noRecentSearchesText = _translations$noRecen === void 0 ? 'No recent searches' : _translations$noRecen, | ||
_translations$saveRec = translations.saveRecentSearchButtonTitle, | ||
saveRecentSearchButtonTitle = _translations$saveRec === void 0 ? 'Save this search' : _translations$saveRec, | ||
_translations$removeR = translations.removeRecentSearchButtonTitle, | ||
removeRecentSearchButtonTitle = _translations$removeR === void 0 ? 'Remove this search from history' : _translations$removeR, | ||
_translations$favorit = translations.favoriteSearchesTitle, | ||
favoriteSearchesTitle = _translations$favorit === void 0 ? 'Favorite' : _translations$favorit, | ||
_translations$removeF = translations.removeFavoriteSearchButtonTitle, | ||
removeFavoriteSearchButtonTitle = _translations$removeF === void 0 ? 'Remove this search from favorites' : _translations$removeF; | ||
recentSearchesTitle = _translations$recentS === void 0 ? 'Recent' : _translations$recentS, | ||
_translations$noRecen = translations.noRecentSearchesText, | ||
noRecentSearchesText = _translations$noRecen === void 0 ? 'No recent searches' : _translations$noRecen, | ||
_translations$saveRec = translations.saveRecentSearchButtonTitle, | ||
saveRecentSearchButtonTitle = _translations$saveRec === void 0 ? 'Save this search' : _translations$saveRec, | ||
_translations$removeR = translations.removeRecentSearchButtonTitle, | ||
removeRecentSearchButtonTitle = _translations$removeR === void 0 ? 'Remove this search from history' : _translations$removeR, | ||
_translations$favorit = translations.favoriteSearchesTitle, | ||
favoriteSearchesTitle = _translations$favorit === void 0 ? 'Favorite' : _translations$favorit, | ||
_translations$removeF = translations.removeFavoriteSearchButtonTitle, | ||
removeFavoriteSearchButtonTitle = _translations$removeF === void 0 ? 'Remove this search from favorites' : _translations$removeF; | ||
if (props.state.status === 'idle' && props.hasCollections === false) { | ||
@@ -30,3 +28,2 @@ if (props.disableUserPersonalization) { | ||
} | ||
return /*#__PURE__*/React.createElement("div", { | ||
@@ -38,7 +35,5 @@ className: "DocSearch-StartScreen" | ||
} | ||
if (props.hasCollections === false) { | ||
return null; | ||
} | ||
return /*#__PURE__*/React.createElement("div", { | ||
@@ -56,4 +51,4 @@ className: "DocSearch-Dropdown-Container" | ||
var item = _ref2.item, | ||
runFavoriteTransition = _ref2.runFavoriteTransition, | ||
runDeleteTransition = _ref2.runDeleteTransition; | ||
runFavoriteTransition = _ref2.runFavoriteTransition, | ||
runDeleteTransition = _ref2.runDeleteTransition; | ||
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { | ||
@@ -100,3 +95,3 @@ className: "DocSearch-Hit-action" | ||
var item = _ref3.item, | ||
runDeleteTransition = _ref3.runDeleteTransition; | ||
runDeleteTransition = _ref3.runDeleteTransition; | ||
return /*#__PURE__*/React.createElement("div", { | ||
@@ -103,0 +98,0 @@ className: "DocSearch-Hit-action" |
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties"; | ||
var _excluded = ["_highlightResult", "_snippetResult"]; | ||
function isLocalStorageSupported() { | ||
var key = '__TEST_KEY__'; | ||
try { | ||
@@ -15,3 +13,2 @@ localStorage.setItem(key, ''); | ||
} | ||
function createStorage(key) { | ||
@@ -26,3 +23,2 @@ if (isLocalStorageSupported() === false) { | ||
} | ||
return { | ||
@@ -38,7 +34,6 @@ setItem: function setItem(item) { | ||
} | ||
export function createStoredSearches(_ref) { | ||
var key = _ref.key, | ||
_ref$limit = _ref.limit, | ||
limit = _ref$limit === void 0 ? 5 : _ref$limit; | ||
_ref$limit = _ref.limit, | ||
limit = _ref$limit === void 0 ? 5 : _ref$limit; | ||
var storage = createStorage(key); | ||
@@ -49,14 +44,11 @@ var items = storage.getItem().slice(0, limit); | ||
var _ref2 = item, | ||
_highlightResult = _ref2._highlightResult, | ||
_snippetResult = _ref2._snippetResult, | ||
hit = _objectWithoutProperties(_ref2, _excluded); | ||
_highlightResult = _ref2._highlightResult, | ||
_snippetResult = _ref2._snippetResult, | ||
hit = _objectWithoutProperties(_ref2, _excluded); | ||
var isQueryAlreadySaved = items.findIndex(function (x) { | ||
return x.objectID === hit.objectID; | ||
}); | ||
if (isQueryAlreadySaved > -1) { | ||
items.splice(isQueryAlreadySaved, 1); | ||
} | ||
items.unshift(hit); | ||
@@ -63,0 +55,0 @@ items = items.slice(0, limit); |
import React from 'react'; | ||
export function TypesenseLogo(_ref) { | ||
var _ref$translations = _ref.translations, | ||
translations = _ref$translations === void 0 ? {} : _ref$translations; | ||
translations = _ref$translations === void 0 ? {} : _ref$translations; | ||
var _translations$searchB = translations.searchByText, | ||
searchByText = _translations$searchB === void 0 ? 'Search by' : _translations$searchB; | ||
searchByText = _translations$searchB === void 0 ? 'Search by' : _translations$searchB; | ||
return /*#__PURE__*/React.createElement("a", { | ||
@@ -8,0 +8,0 @@ href: "https://typesense.org/?utm_source=".concat(window.location.hostname, "&utm_medium=referral&utm_content=powered_by&utm_campaign=docsearch"), |
import React from 'react'; | ||
function isEditingContent(event) { | ||
@@ -8,9 +7,8 @@ var element = event.target; | ||
} | ||
export function useDocSearchKeyboardEvents(_ref) { | ||
var isOpen = _ref.isOpen, | ||
onOpen = _ref.onOpen, | ||
onClose = _ref.onClose, | ||
onInput = _ref.onInput, | ||
searchButtonRef = _ref.searchButtonRef; | ||
onOpen = _ref.onOpen, | ||
onClose = _ref.onClose, | ||
onInput = _ref.onInput, | ||
searchButtonRef = _ref.searchButtonRef; | ||
React.useEffect(function () { | ||
@@ -25,9 +23,9 @@ function onKeyDown(event) { | ||
} | ||
if (event.keyCode === 27 && isOpen || // The `Cmd+K` shortcut both opens and closes the modal. | ||
event.key.toLowerCase() === 'k' && (event.metaKey || event.ctrlKey) || // The `/` shortcut opens but doesn't close the modal because it's | ||
if (event.keyCode === 27 && isOpen || | ||
// The `Cmd+K` shortcut both opens and closes the modal. | ||
event.key.toLowerCase() === 'k' && (event.metaKey || event.ctrlKey) || | ||
// The `/` shortcut opens but doesn't close the modal because it's | ||
// a character. | ||
!isEditingContent(event) && event.key === '/' && !isOpen) { | ||
event.preventDefault(); | ||
if (isOpen) { | ||
@@ -39,3 +37,2 @@ onClose(); | ||
} | ||
if (searchButtonRef && searchButtonRef.current === document.activeElement && onInput) { | ||
@@ -47,3 +44,2 @@ if (/[a-zA-Z0-9]/.test(String.fromCharCode(event.keyCode))) { | ||
} | ||
window.addEventListener('keydown', onKeyDown); | ||
@@ -50,0 +46,0 @@ return function () { |
@@ -5,7 +5,4 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty"; | ||
import _regeneratorRuntime from "@babel/runtime/regenerator"; | ||
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; } | ||
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; } | ||
import React from 'react'; | ||
@@ -21,3 +18,2 @@ import { SearchClient as TypesenseSearchClient } from 'typesense'; | ||
var _ref2, request, response, typesenseSearchResponseAdapter; | ||
return _regeneratorRuntime.wrap(function _callee$(_context) { | ||
@@ -31,3 +27,2 @@ while (1) switch (_context.prev = _context.next) { | ||
}); | ||
case 3: | ||
@@ -46,3 +41,2 @@ response = _context.sent; | ||
}); | ||
case 6: | ||
@@ -54,7 +48,5 @@ case "end": | ||
})); | ||
function search(_x) { | ||
return _search.apply(this, arguments); | ||
} | ||
return search; | ||
@@ -61,0 +53,0 @@ }() |
import React from 'react'; | ||
export function useTouchEvents(_ref) { | ||
var getEnvironmentProps = _ref.getEnvironmentProps, | ||
panelElement = _ref.panelElement, | ||
formElement = _ref.formElement, | ||
inputElement = _ref.inputElement; | ||
panelElement = _ref.panelElement, | ||
formElement = _ref.formElement, | ||
inputElement = _ref.inputElement; | ||
React.useEffect(function () { | ||
@@ -11,11 +11,9 @@ if (!(panelElement && formElement && inputElement)) { | ||
} | ||
var _getEnvironmentProps = getEnvironmentProps({ | ||
panelElement: panelElement, | ||
formElement: formElement, | ||
inputElement: inputElement | ||
}), | ||
onTouchStart = _getEnvironmentProps.onTouchStart, | ||
onTouchMove = _getEnvironmentProps.onTouchMove; | ||
panelElement: panelElement, | ||
formElement: formElement, | ||
inputElement: inputElement | ||
}), | ||
onTouchStart = _getEnvironmentProps.onTouchStart, | ||
onTouchMove = _getEnvironmentProps.onTouchMove; | ||
window.addEventListener('touchstart', onTouchStart); | ||
@@ -22,0 +20,0 @@ window.addEventListener('touchmove', onTouchMove); |
@@ -8,7 +8,5 @@ import React from 'react'; | ||
} | ||
var focusableElements = container.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), input:not([disabled])'); | ||
var firstElement = focusableElements[0]; | ||
var lastElement = focusableElements[focusableElements.length - 1]; | ||
function trapFocus(event) { | ||
@@ -18,3 +16,2 @@ if (event.key !== 'Tab') { | ||
} | ||
if (event.shiftKey) { | ||
@@ -30,3 +27,2 @@ if (document.activeElement === firstElement) { | ||
} | ||
container.addEventListener('keydown', trapFocus); | ||
@@ -33,0 +29,0 @@ return function () { |
export function groupBy(values, predicate) { | ||
return values.reduce(function (acc, item) { | ||
var key = predicate(item); | ||
if (!acc.hasOwnProperty(key)) { | ||
acc[key] = []; | ||
} // We limit each section to show 5 hits maximum. | ||
} | ||
// We limit each section to show 5 hits maximum. | ||
// This acts as a frontend alternative to `distinct`. | ||
if (acc[key].length < 5) { | ||
acc[key].push(item); | ||
} | ||
return acc; | ||
}, {}); | ||
} |
@@ -5,13 +5,9 @@ var regexHighlightTags = /(<mark>|<\/mark>)/g; | ||
var _internalDocSearchHit, _internalDocSearchHit2, _hit$_highlightResult; | ||
var internalDocSearchHit = hit; | ||
if (!internalDocSearchHit.__docsearch_parent && !hit._highlightResult) { | ||
return hit['hierarchy.lvl0']; | ||
} | ||
var _ref = (internalDocSearchHit.__docsearch_parent ? (_internalDocSearchHit = internalDocSearchHit.__docsearch_parent) === null || _internalDocSearchHit === void 0 ? void 0 : (_internalDocSearchHit2 = _internalDocSearchHit._highlightResult) === null || _internalDocSearchHit2 === void 0 ? void 0 : _internalDocSearchHit2['hierarchy.lvl0'] : (_hit$_highlightResult = hit._highlightResult) === null || _hit$_highlightResult === void 0 ? void 0 : _hit$_highlightResult['hierarchy.lvl0']) || {}, | ||
value = _ref.value; | ||
value = _ref.value; | ||
return value && regexHasHighlightTags.test(value) ? value.replace(regexHighlightTags, '') : value; | ||
} |
{ | ||
"name": "typesense-docsearch-react", | ||
"description": "React package for DocSearch, customized to work with Typesense", | ||
"version": "0.4.0-0", | ||
"version": "0.4.0-1", | ||
"license": "MIT", | ||
@@ -6,0 +6,0 @@ "homepage": "https://typesense.org/docs/latest/guide/docsearch.html", |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
450121
2597