{"version":3,"file":"index.cjs","names":[],"sources":["../../../src/utils/mergeEventHandlers/index.ts"],"sourcesContent":["/**\n * @description 여러 이벤트 핸들러를 하나의 핸들러로 병합합니다.\n *\n * 이벤트 핸들러가 반환하는 값이 `false`일 경우 이후 전달된 이벤트 핸들러의 실행을 중단합니다.\n *\n * @param {((event: E) => boolean | void)[]} handlers 병합할 이벤트 핸들러 배열\n * @returns {((event: E) => void)} 병합된 이벤트 핸들러\n *\n * @example\n * const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n *   console.log('clicked');\n * };\n * const handleClick2 = (event: React.MouseEvent<HTMLButtonElement>) => {\n *   console.log('clicked2');\n * };\n *\n * const mergedEventHandler = mergeEventHandlers(handleClick, handleClick2);\n *\n * @example\n * // 이벤트 핸들러가 반환하는 값이 `false`일 경우 이후 전달된 이벤트 핸들러의 실행을 중단합니다.\n * const handleClick1 = (event: React.MouseEvent<HTMLButtonElement>) => {\n *   console.log('clicked');\n *\n *   // 짝수일 경우 false를 반환하여 이후 전달된 이벤트 핸들러의 실행을 중단합니다.\n *   if (num % 2 === 0) {\n *     return false;\n *   }\n * };\n *\n * const handleClick2 = (event: React.MouseEvent<HTMLButtonElement>) => {\n *   console.log('clicked2');\n * };\n *\n * const mergedEventHandler = mergeEventHandlers(handleClick1, handleClick2);\n */\nexport const mergeEventHandlers = <E>(\n  ...handlers: ((event: E) => boolean | void)[]\n): ((event: E) => void) => {\n  return (event: E) => {\n    for (let i = 0; i < handlers.length; i++) {\n      const result = handlers[i](event);\n\n      if (result === false) {\n        break;\n      }\n    }\n  };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,MAAa,sBACX,GAAG,aACsB;CACzB,QAAQ,UAAa;EACnB,KAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAGnC,IAFe,SAAS,GAAG,MAEjB,KAAK,OACb"}