react-instantsearch-nextjs
Version:
React InstantSearch SSR utilities for Next.js
40 lines (39 loc) • 1.94 kB
JavaScript
import { ServerInsertedHTMLContext } from "next/navigation.js";
import { useContext } from 'react';
import { useInstantSearchContext, useRSCContext } from 'react-instantsearch-core';
import { createInsertHTML } from "./createInsertHTML.js";
export function TriggerSearch(_ref) {
var _waitForResultsRef$cu;
var nonce = _ref.nonce;
var instantsearch = useInstantSearchContext();
var _useRSCContext = useRSCContext(),
waitForResultsRef = _useRSCContext.waitForResultsRef;
var insertHTML = useContext(ServerInsertedHTMLContext) || function () {
throw new Error('Missing ServerInsertedHTMLContext');
};
if ((waitForResultsRef === null || waitForResultsRef === void 0 ? void 0 : (_waitForResultsRef$cu = waitForResultsRef.current) === null || _waitForResultsRef$cu === void 0 ? void 0 : _waitForResultsRef$cu.status) === 'pending') {
var _instantsearch$mainHe3;
if (instantsearch._hasSearchWidget) {
if (instantsearch.compositionID) {
var _instantsearch$mainHe;
(_instantsearch$mainHe = instantsearch.mainHelper) === null || _instantsearch$mainHe === void 0 ? void 0 : _instantsearch$mainHe.searchWithComposition();
} else {
var _instantsearch$mainHe2;
(_instantsearch$mainHe2 = instantsearch.mainHelper) === null || _instantsearch$mainHe2 === void 0 ? void 0 : _instantsearch$mainHe2.searchOnlyWithDerivedHelpers();
}
}
instantsearch._hasRecommendWidget && ((_instantsearch$mainHe3 = instantsearch.mainHelper) === null || _instantsearch$mainHe3 === void 0 ? void 0 : _instantsearch$mainHe3.recommend());
// If there are no widgets, we inject empty initial results instantly
if (!instantsearch._hasSearchWidget && !instantsearch._hasRecommendWidget) {
var options = {
inserted: false
};
insertHTML(createInsertHTML({
options: options,
results: {},
nonce: nonce
}));
}
}
return null;
}