{"version":3,"file":"useSessionStorage.utils.cjs","names":[],"sources":["../../../src/hooks/useSessionStorage/useSessionStorage.utils.ts"],"sourcesContent":["import { parseJSON } from '@modern-kit/utils';\n\nconst CUSTOM_EVENT_KEYS = 'modern-kit-session-storage';\n\nexport const sessionStorageEventHandler = {\n  key: CUSTOM_EVENT_KEYS,\n  subscribe: (callback: () => void) => {\n    window.addEventListener(CUSTOM_EVENT_KEYS, callback);\n  },\n  unsubscribe: (callback: () => void) => {\n    window.removeEventListener(CUSTOM_EVENT_KEYS, callback);\n  },\n  dispatchEvent: () => {\n    window.dispatchEvent(new StorageEvent(CUSTOM_EVENT_KEYS));\n  },\n};\n\nexport const getSnapshot = (key: string) => {\n  try {\n    return window.sessionStorage.getItem(key);\n  } catch {\n    return null;\n  }\n};\n\n// SSR 환경에서 initialValue를 반환\nexport const getServerSnapshot = <T>(initialValue: T | null) => {\n  return JSON.stringify(initialValue);\n};\n\nexport const subscribe = (callback: () => void) => {\n  sessionStorageEventHandler.subscribe(callback);\n  return () => {\n    sessionStorageEventHandler.unsubscribe(callback);\n  };\n};\n\nexport const getParsedState = <T>(\n  state: string | null,\n  fallbackValue: T | null\n) => {\n  if (state == null) {\n    return fallbackValue;\n  }\n  return parseJSON<T>(state);\n};\n"],"mappings":";;;AAEA,MAAM,oBAAoB;AAE1B,MAAa,6BAA6B;CACxC,KAAK;CACL,YAAY,aAAyB;EACnC,OAAO,iBAAiB,mBAAmB,SAAS;;CAEtD,cAAc,aAAyB;EACrC,OAAO,oBAAoB,mBAAmB,SAAS;;CAEzD,qBAAqB;EACnB,OAAO,cAAc,IAAI,aAAa,kBAAkB,CAAC;;CAE5D;AAED,MAAa,eAAe,QAAgB;CAC1C,IAAI;EACF,OAAO,OAAO,eAAe,QAAQ,IAAI;SACnC;EACN,OAAO;;;AAKX,MAAa,qBAAwB,iBAA2B;CAC9D,OAAO,KAAK,UAAU,aAAa;;AAGrC,MAAa,aAAa,aAAyB;CACjD,2BAA2B,UAAU,SAAS;CAC9C,aAAa;EACX,2BAA2B,YAAY,SAAS;;;AAIpD,MAAa,kBACX,OACA,kBACG;CACH,IAAI,SAAS,MACX,OAAO;CAET,QAAA,GAAA,kBAAA,WAAoB,MAAM"}