{"version":3,"file":"create-use-external-events.cjs","sources":["../../../../src/core/utils/create-use-external-events/create-use-external-events.ts"],"sourcesContent":["import { useIsomorphicEffect } from '@raikou/hooks';\n\nfunction dispatchEvent<T>(type: string, detail?: T) {\n  window.dispatchEvent(new CustomEvent(type, { detail }));\n}\n\nexport function createUseExternalEvents<Handlers extends Record<string, (detail: any) => void>>(\n  prefix: string\n) {\n  function _useExternalEvents(events: Handlers) {\n    const handlers = Object.keys(events).reduce<any>((acc, eventKey) => {\n      acc[`${prefix}:${eventKey}`] = (event: CustomEvent) => events[eventKey](event.detail);\n      return acc;\n    }, {});\n\n    useIsomorphicEffect(() => {\n      Object.keys(handlers).forEach((eventKey) => {\n        window.removeEventListener(eventKey, handlers[eventKey]);\n        window.addEventListener(eventKey, handlers[eventKey]);\n      });\n\n      return () =>\n        Object.keys(handlers).forEach((eventKey) => {\n          window.removeEventListener(eventKey, handlers[eventKey]);\n        });\n    }, [handlers]);\n  }\n\n  function createEvent<EventKey extends keyof Handlers>(event: EventKey) {\n    type Parameter = Parameters<Handlers[EventKey]>[0];\n\n    return (...payload: Parameter extends undefined ? [undefined?] : [Parameter]) =>\n      dispatchEvent(`${prefix}:${String(event)}`, payload[0]);\n  }\n\n  return [_useExternalEvents, createEvent] as const;\n}\n"],"names":["useIsomorphicEffect"],"mappings":";;;;AAEA,SAAS,aAAA,CAAiB,MAAc,MAAY,EAAA;AAClD,EAAA,MAAA,CAAO,cAAc,IAAI,WAAA,CAAY,MAAM,EAAE,MAAA,EAAQ,CAAC,CAAA;AACxD;AAEO,SAAS,wBACd,MACA,EAAA;AACA,EAAA,SAAS,mBAAmB,MAAkB,EAAA;AAC5C,IAAM,MAAA,QAAA,GAAW,OAAO,IAAK,CAAA,MAAM,EAAE,MAAY,CAAA,CAAC,KAAK,QAAa,KAAA;AAClE,MAAA,GAAA,CAAI,CAAG,EAAA,MAAM,CAAI,CAAA,EAAA,QAAQ,CAAE,CAAA,CAAA,GAAI,CAAC,KAAA,KAAuB,MAAO,CAAA,QAAQ,CAAE,CAAA,KAAA,CAAM,MAAM,CAAA;AACpF,MAAO,OAAA,GAAA;AAAA,KACT,EAAG,EAAE,CAAA;AAEL,IAAAA,yBAAA,CAAoB,MAAM;AACxB,MAAA,MAAA,CAAO,IAAK,CAAA,QAAQ,CAAE,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AAC1C,QAAA,MAAA,CAAO,mBAAoB,CAAA,QAAA,EAAU,QAAS,CAAA,QAAQ,CAAC,CAAA;AACvD,QAAA,MAAA,CAAO,gBAAiB,CAAA,QAAA,EAAU,QAAS,CAAA,QAAQ,CAAC,CAAA;AAAA,OACrD,CAAA;AAED,MAAA,OAAO,MACL,MAAO,CAAA,IAAA,CAAK,QAAQ,CAAE,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AAC1C,QAAA,MAAA,CAAO,mBAAoB,CAAA,QAAA,EAAU,QAAS,CAAA,QAAQ,CAAC,CAAA;AAAA,OACxD,CAAA;AAAA,KACL,EAAG,CAAC,QAAQ,CAAC,CAAA;AAAA;AAGf,EAAA,SAAS,YAA6C,KAAiB,EAAA;AAGrE,IAAA,OAAO,CAAI,GAAA,OAAA,KACT,aAAc,CAAA,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,MAAO,CAAA,KAAK,CAAC,CAAA,CAAA,EAAI,OAAQ,CAAA,CAAC,CAAC,CAAA;AAAA;AAG1D,EAAO,OAAA,CAAC,oBAAoB,WAAW,CAAA;AACzC;;;;"}