New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

typesense-docsearch-react

Package Overview
Dependencies
Maintainers
1
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

typesense-docsearch-react - npm Package Compare versions

Comparing version 0.4.0-0 to 0.4.0-1

51

dist/esm/__tests__/api.test.js
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":

16

dist/esm/DocSearch.js

@@ -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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc