@kit-data-manager/react-search-component
Version:
All-in-one component for rendering an elastic search UI for searching anything. Built-in support for visualizing related items in a graph and resolving unique identifiers.
40 lines • 1.47 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { useMemo } from "react";
import { PlaceholderResultView } from "../../components/result/PlaceholderResultView";
import * as z from "zod/mini";
const resultWithMeta = z.object({
_meta: z.object({
rawHit: z.object({
_index: z.string()
})
})
});
export function ResultViewSelector({ resultProps, resultView, resultViewPerIndex }) {
const fallbackResultView = useMemo(() => {
return resultView ?? ((props) => _jsx(PlaceholderResultView, { ...props }));
}, [resultView]);
const index = useMemo(() => {
try {
const parsed = resultWithMeta.parse(resultProps.result);
return parsed._meta.rawHit._index;
}
catch (e) {
console.error("Could not determine result source index in ResultViewSelector", e);
return null;
}
}, [resultProps.result]);
const specificResultView = useMemo(() => {
if (index === null)
return null;
if (resultViewPerIndex && index in resultViewPerIndex) {
return resultViewPerIndex[index];
}
else
return null;
}, [index, resultViewPerIndex]);
const Selected = useMemo(() => {
return specificResultView ?? fallbackResultView;
}, [fallbackResultView, specificResultView]);
return _jsx(Selected, { ...resultProps });
}
//# sourceMappingURL=ResultViewSelector.js.map