SPB Git forge

spb/countryatlas

Public
20commits 1branches 0releases
268.3 MBsize
maindefault branch
12 days agolast push
TypeScript 57% Python 38.6% JavaScript 3.6% CSS 0.6%
723 B · 24 lines tsx
Raw Blame History
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