spb/countryatlas
Public
TypeScript 57%
Python 38.6%
JavaScript 3.6%
CSS 0.6%
1'use client';2import dynamic from 'next/dynamic';3import { useSearch } from './search-context';45const SearchDialog = dynamic(() => import('./search-dialog').then((m) => m.SearchDialog), { ssr: false });67/** Loads the search dialog bundle only once the user opens it (or has opened it before in this session). */8export function SearchContainer() {9 const { open } = useSearch();10 const [everOpened, setEver] = useStateOnce(open);11 if (!everOpened) return null;12 void setEver;13 return <SearchDialog />;14}1516import { useEffect, useState } from 'react';17function useStateOnce(flag: boolean) {18 const [v, setV] = useState(flag);19 useEffect(() => {20 if (flag) setV(true);21 }, [flag]);22 return [v, setV] as const;23}24