UNPKG

@modern-kit/react

Version:
1 lines 2.11 kB
{"version":3,"file":"index.mjs","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"],"names":[],"mappings":"AAmCO,MAAM,kBAAA,GAAqB,IAC7B,QAAA,KACsB;AACzB,EAAA,OAAO,CAAC,KAAA,KAAa;AACnB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACxC,MAAA,MAAM,MAAA,GAAS,QAAA,CAAS,CAAC,CAAA,CAAE,KAAK,CAAA;AAEhC,MAAA,IAAI,WAAW,KAAA,EAAO;AACpB,QAAA;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAA;AACF;;;;"}