{"version":3,"file":"useScrollRestoration.utils.cjs","names":[],"sources":["../../../src/hooks/useScrollRestoration/useScrollRestoration.utils.ts"],"sourcesContent":["import { getUniqId } from '@modern-kit/utils';\n\n/**\n * @description 현재 URL에 hash가 있는지 확인합니다.\n *\n * @returns {boolean} hash 존재 여부\n */\nexport const hasHash = (): boolean => {\n  if (typeof window === 'undefined') return false;\n  return Boolean(window.location.hash);\n};\n\n/**\n * @description 현재 window.history의 고유 식별자(Key)를 가져오거나 생성합니다.\n *\n * history.state에 이미 key가 존재하면 해당 값을 반환하고,\n * 없다면 새로운 고유 키를 생성하여 state에 주입(`replaceState`) 후 반환합니다.\n *\n * @returns {string} 현재 히스토리 스택의 고유 Key\n */\nexport const getHistoryKey = (): string => {\n  if (typeof window === 'undefined') return '';\n\n  const state = window.history.state;\n  const historyKey = state?.key || state?.['mk-scroll-key'];\n\n  if (historyKey) return historyKey;\n\n  const newKey = getUniqId('scroll_key_');\n  window.history.replaceState({ ...state, ['mk-scroll-key']: newKey }, '');\n  return newKey;\n};\n\n/**\n * @description 오래된 스크롤 위치 데이터를 정리하여 sessionStorage 크기를 관리합니다.\n *\n * @param {Record<string, number>} scrollPositionMap - 현재 저장된 스크롤 위치 맵\n * @param {number} maxKeepEntries - 최대 보관할 항목 수 (기본값: 50)\n * @returns {Record<string, number>} 정리된 스크롤 위치 맵\n */\nexport const pruneScrollPositionMap = (\n  scrollPositionMap: Record<string, number>,\n  maxKeepEntries: number\n): Record<string, number> => {\n  const entries = Object.entries(scrollPositionMap);\n  if (entries.length <= maxKeepEntries) return scrollPositionMap;\n\n  return Object.fromEntries(entries.slice(-maxKeepEntries));\n};\n"],"mappings":";;;;;;;;AAOA,MAAa,gBAAyB;CACpC,IAAI,OAAO,WAAW,aAAa,OAAO;CAC1C,OAAO,QAAQ,OAAO,SAAS,KAAK;;;;;;;;;;AAWtC,MAAa,sBAA8B;CACzC,IAAI,OAAO,WAAW,aAAa,OAAO;CAE1C,MAAM,QAAQ,OAAO,QAAQ;CAC7B,MAAM,aAAa,OAAO,OAAO,QAAQ;CAEzC,IAAI,YAAY,OAAO;CAEvB,MAAM,UAAA,GAAA,kBAAA,WAAmB,cAAc;CACvC,OAAO,QAAQ,aAAa;EAAE,GAAG;GAAQ,kBAAkB;EAAQ,EAAE,GAAG;CACxE,OAAO;;;;;;;;;AAUT,MAAa,0BACX,mBACA,mBAC2B;CAC3B,MAAM,UAAU,OAAO,QAAQ,kBAAkB;CACjD,IAAI,QAAQ,UAAU,gBAAgB,OAAO;CAE7C,OAAO,OAAO,YAAY,QAAQ,MAAM,CAAC,eAAe,CAAC"}