UNPKG

@modern-kit/react

Version:
1 lines 1.86 kB
{"version":3,"file":"index.cjs","sources":["../../../src/hooks/useDocumentTitle/index.ts"],"sourcesContent":["import { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';\n\ninterface UseDocumentTitleOption {\n preserveTitleOnUnmount?: boolean;\n}\n\n/**\n * @description Client 환경에서 문서의 제목(`document.title`)을 설정하는 커스텀 훅입니다.\n *\n * `useDocumentTitle` 훅은 컴포넌트가 마운트될 때 주어진 제목으로 `document.title`을 설정하고,\n * 컴포넌트가 언마운트될 때 선택적으로 이전 제목으로 복원할 수 있습니다.\n *\n * @param {string} title - 설정할 문서의 제목입니다.\n * @param {{ preserveTitleOnUnmount: boolean }} options - 옵션 객체입니다.\n * - `preserveTitleOnUnmount`: `true`로 설정하면 컴포넌트가 언마운트될 때 제목을 이전 상태로 복원하지 않습니다. 기본값은 `false`입니다.\n *\n * @returns {void}\n *\n * @example\n * useDocumentTitle('새로운 제목', { preserveTitleOnUnmount: true });\n */\nexport function useDocumentTitle(\n title: string,\n { preserveTitleOnUnmount = false }: UseDocumentTitleOption = {}\n): void {\n useIsomorphicLayoutEffect(() => {\n const prevTitle = document.title;\n document.title = title;\n\n return () => {\n if (!preserveTitleOnUnmount) {\n document.title = prevTitle;\n }\n };\n }, [title, preserveTitleOnUnmount]);\n}\n"],"names":["useIsomorphicLayoutEffect"],"mappings":";;;;;;AAqBO,SAAS,iBACd,KAAA,EACA,EAAE,yBAAyB,KAAA,EAAM,GAA4B,EAAC,EACxD;AACN,EAAAA,wDAAA,CAA0B,MAAM;AAC9B,IAAA,MAAM,YAAY,QAAA,CAAS,KAAA;AAC3B,IAAA,QAAA,CAAS,KAAA,GAAQ,KAAA;AAEjB,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,CAAC,sBAAA,EAAwB;AAC3B,QAAA,QAAA,CAAS,KAAA,GAAQ,SAAA;AAAA,MACnB;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,sBAAsB,CAAC,CAAA;AACpC;;;;"}