UNPKG

react-typed-event

Version:

Type-safe event handling utilities for React

1 lines 2.67 kB
{"version":3,"sources":["../src/index.ts","../src/hooks/usePreservedCallback/index.ts","../src/hooks/useEventCallback/index.ts"],"sourcesContent":["export * from './hooks/useEventCallback'\n","import { type DependencyList, useCallback, useEffect, useRef } from 'react'\n\n/**\n * @internal\n * @link https://github.com/toss/react-simplikit/blob/94bbc0896f5e0bf47f6f8f5f9d0abf1d73b0dc9a/src/hooks/usePreservedCallback/usePreservedCallback.ts\n */\nexport function usePreservedCallback<\n Arguments extends any[] = any[],\n ReturnValue = unknown,\n>(\n callback: (...args: Arguments) => ReturnValue,\n deps: DependencyList = [],\n) {\n const callbackRef = useRef(callback)\n\n useEffect(() => {\n callbackRef.current = callback\n }, [callback])\n\n return useCallback((...args: Arguments) => {\n return callbackRef.current(...args)\n }, deps)\n}\n","import { usePreservedCallback } from '../usePreservedCallback'\nimport { AnyEventHandler, EventCallback, EventNames, ElementNames, EventHandlers } from '../../types/event'\nimport { type DependencyList } from 'react'\n\nexport function useEventCallback(handler: AnyEventHandler<HTMLElement>): AnyEventHandler<HTMLElement>\n\nexport function useEventCallback<\n ElementName extends ElementNames,\n EventName extends EventNames<ElementName>,\n>(callback: EventCallback<ElementName, EventName>, deps?: DependencyList): EventCallback<ElementName, EventName>\n\nexport function useEventCallback<\n EventName extends keyof EventHandlers<HTMLElement>,\n>(event: EventName, callback: EventHandlers[EventName], deps?: DependencyList): EventHandlers[EventName]\n\nexport function useEventCallback<\n ElementName extends ElementNames,\n EventName extends EventNames<ElementName>,\n>(\n element: ElementName,\n event: EventName,\n callback: EventCallback<ElementName, EventName>,\n deps?: DependencyList\n): EventCallback<ElementName, EventName>\n\nexport function useEventCallback(...args: any[]): any {\n const last = args.pop()\n if (Array.isArray(last)) return usePreservedCallback(args.pop(), last)\n if (typeof last === 'function') return usePreservedCallback(last)\n throw new Error('invalid arguments')\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAoE;AAM7D,SAAS,qBAId,UACA,OAAuB,CAAC,GACxB;AACA,QAAM,kBAAc,qBAAO,QAAQ;AAEnC,8BAAU,MAAM;AACd,gBAAY,UAAU;AAAA,EACxB,GAAG,CAAC,QAAQ,CAAC;AAEb,aAAO,0BAAY,IAAI,SAAoB;AACzC,WAAO,YAAY,QAAQ,GAAG,IAAI;AAAA,EACpC,GAAG,IAAI;AACT;;;ACGO,SAAS,oBAAoB,MAAkB;AACpD,QAAM,OAAO,KAAK,IAAI;AACtB,MAAI,MAAM,QAAQ,IAAI,EAAG,QAAO,qBAAqB,KAAK,IAAI,GAAG,IAAI;AACrE,MAAI,OAAO,SAAS,WAAY,QAAO,qBAAqB,IAAI;AAChE,QAAM,IAAI,MAAM,mBAAmB;AACrC;","names":[]}