Files
datahub/packages/core/src/ui/Search/SearchProvider.tsx
Ola Rubaj af134cac8b Integrate flowershow packages (#923)
* [packages][m]: mv @flowershow/core package here

* [packages/core][xs]: rename to @portaljs/core

* [package.json][xs]: setup npm workspaces

* [packages/core][xs]:replace deprecated rollup executor

* [core/package.json][s]: fix mermaid versions

* [core/tsconfig][xs]: rm extends

* [core/jest.config][xs]: rm coverageDirectory

* [core/package.json][xs]: install core-js

* [packages.json][s]:use same version for all nrwl packages

* [core/.eslintrc][xs]: adjust ignorePatterns

* [core/project.json][xs]: rm publish targets

* [packages][m]: mv @flowershow/remark-wiki-link here

* [packages][m]: mv @flowershow/remark-wiki-link here

* [packages][m]: mv @flowershow/remark-embed here

* [remark-callouts/project.json][xs]: adjst test pattern

* [package.json][s]: install missing deps

* [remark-callouts][xs]: adjst fields in package.json

* [remark-callouts][s]: rm pubish targets and adjst build executor

* [remark-embed/jest.config][xs]: rm unknown option coverageDirectory

* [remark-embed][xs]: rm publish targets

* [remark-embed][s]: rename to @portaljs/remark-embed

* [remark-wiki-link/eslintrc][xs]:adjst ignorePatterns

* [package.json][xs]: install missing deps

* [remark-wiki-link/test][xs]:specify format

- also temporarily force any type on htmlExtension

* [remark-wiki-link/README][xs]: replace @flowershow with @portaljs

* [remark-wiki-link][xs]:rm old changelog

* [remark-wiki-link][xs]: adjst package.json

* [remark-wiki-link/project.json][xs]: rm publish targets

* [core][s]: rm old changelog

* [core/README][xs]:correct scope name

* [remark-callouts/README][xs]: add @portaljs to pckg name

* [remark-embed/README][xs]: add @portaljs to pckg name

* [package-lock.json][xs]: refresh after rebasing on main
2023-06-07 07:21:00 -03:00

70 lines
1.5 KiB
TypeScript

import dynamic from "next/dynamic.js";
import {
SearchProvider as SearchProviderType,
SearchProviderConfig,
} from "../types";
const AlgoliaSearchProvider = dynamic(
async () => {
return await import("./Algolia").then((mod) => mod.AlgoliaSearchProvider);
},
{ ssr: false }
);
const AlgoliaSearchContext = dynamic(
async () => {
return await import("./Algolia").then(
(mod) => mod.AlgoliaSearchContext.Consumer
);
},
{ ssr: false }
);
const KBarProvider = dynamic(
async () => {
return await import("./KBar").then((mod) => mod.KBarSearchProvider);
},
{ ssr: false }
);
const KBarSearchContext = dynamic(
async () => {
return await import("kbar").then((mod) => mod.KBarContext.Consumer);
},
{ ssr: false }
);
export const SearchProvider = ({
searchConfig,
children,
}: {
searchConfig: SearchProviderConfig;
children: React.ReactNode;
}) => {
switch (searchConfig?.provider) {
case "algolia":
return (
<AlgoliaSearchProvider config={searchConfig.config}>
{children}
</AlgoliaSearchProvider>
);
case "kbar":
return (
<KBarProvider config={searchConfig.config}>{children}</KBarProvider>
);
default:
return <>{children}</>;
}
};
export const SearchContext = (provider: SearchProviderType) => {
switch (provider) {
case "algolia":
return AlgoliaSearchContext;
case "kbar":
return KBarSearchContext;
default:
return undefined;
}
};