{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/hooks/useCallbackOnce/index.ts"],"sourcesContent":["import { usePreservedCallback } from '../usePreservedCallback';\nimport { useRef } from 'react';\n/**\n * @description 주어진 콜백 함수가 최초 실행 이후 다시 실행되지 않도록 보장하는 커스텀 훅입니다.\n *\n * @template F - 콜백 함수의 타입. 콜백 함수는 인자들을 받을 수 있는 함수여야 합니다.\n * @param {F} callback - 최초 한 번 실행될 콜백 함수.\n *\n * @returns {F} - 최초 한 번만 실행되는 메모이제이션된 콜백 함수.\n *\n * @example\n * const Example = () => {\n *   const handleClick = useCallbackOnce(() => {\n *     console.log('최초 한번만 실행됩니다.');\n *   });\n *\n *   return <div onClick={handleClick}>Click me</div>;\n * };\n */\nexport function useCallbackOnce<F extends (...args: any[]) => void>(\n  callback: F\n): F {\n  const hasExecuted = useRef(false);\n  const memoizedCallback = usePreservedCallback((...args: Parameters<F>) => {\n    if (hasExecuted.current) return;\n    callback(...args);\n    hasExecuted.current = true;\n  });\n\n  return memoizedCallback as F;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAmBA,SAAgB,gBACd,UACG;CACH,MAAM,cAAc,OAAO,MAAM;CAOjC,OANyB,sBAAsB,GAAG,SAAwB;EACxE,IAAI,YAAY,SAAS;EACzB,SAAS,GAAG,KAAK;EACjB,YAAY,UAAU;GAGD"}