{"version":3,"sources":["../src/listener.tsx"],"sourcesContent":["import { useEffect } from 'react';\nimport type { FunctionComponent } from 'react';\n\nimport { useEventTarget } from './contexts/event-target';\nimport type { AllowedKey } from './types/utils';\n\nexport function useListener(target: any, type: string, listener: (...args: any[]) => void) {\n  useEffect(() => {\n    const _listener = (...args: any[]) => listener(...args, target);\n    const mapEventListener = naver.maps.Event.addListener(target, type, _listener);\n\n    return () => {\n      naver.maps.Event.removeListener(mapEventListener);\n    };\n  }, [target, type, listener]);\n}\n\nexport interface Props {\n  target?: any;\n  type: string;\n  listener: (...args: any[]) => any;\n}\n\nexport const Listener: FunctionComponent<Props> = (props) => {\n  const {\n    target: propTarget,\n    type,\n    listener,\n  } = props;\n\n  const contextTarget = useEventTarget();\n  const target = propTarget || contextTarget;\n  if (!target) {\n    throw new Error('react-naver-maps: No Target to add listener');\n  }\n\n  // TODO: FIX DefinitelyTyped\n  useListener((target as unknown) as EventTarget, type, listener);\n\n  return null;\n};\n\nexport function getListenerKeys<P extends Record<string, any>>(props: P) {\n  return Object.keys(props).filter(key => /on[A-Z]\\w+/.test(key)) as unknown as Array<AllowedKey<P, `on${string}`>>;\n}\n"],"mappings":";;;;;AAAA,SAAS,iBAAiB;AAMnB,SAAS,YAAY,QAAa,MAAc,UAAoC;AACzF,YAAU,MAAM;AACd,UAAM,YAAY,IAAI,SAAgB,SAAS,GAAG,MAAM,MAAM;AAC9D,UAAM,mBAAmB,MAAM,KAAK,MAAM,YAAY,QAAQ,MAAM,SAAS;AAE7E,WAAO,MAAM;AACX,YAAM,KAAK,MAAM,eAAe,gBAAgB;AAAA,IAClD;AAAA,EACF,GAAG,CAAC,QAAQ,MAAM,QAAQ,CAAC;AAC7B;AAQO,IAAM,WAAqC,CAAC,UAAU;AAC3D,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,gBAAgB,eAAe;AACrC,QAAM,SAAS,cAAc;AAC7B,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,6CAA6C;AAAA,EAC/D;AAGA,cAAa,QAAmC,MAAM,QAAQ;AAE9D,SAAO;AACT;AAEO,SAAS,gBAA+C,OAAU;AACvE,SAAO,OAAO,KAAK,KAAK,EAAE,OAAO,SAAO,aAAa,KAAK,GAAG,CAAC;AAChE;","names":[]}