{"version":3,"file":"useRemoteTrigger.cjs","sources":["../../../src/components/Dialog/useRemoteTrigger.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react'\n\nexport const TRIGGER_EVENT = 'smarthr-ui:remote-dialog-trigger-dispatch'\n\ntype Props = {\n  id: string\n  onClickClose?: (close: () => void) => void\n  onPressEscape?: (close: () => void) => void\n  onToggle?: (isOpen: boolean) => void\n  onOpen?: () => void\n  onClose?: () => void\n}\n\nexport function useRemoteTrigger({\n  onClickClose: orgOnClickClose,\n  onPressEscape: orgOnPressEscape,\n  onToggle,\n  onOpen,\n  onClose,\n  id,\n}: Props) {\n  const [isOpen, setIsOpen] = useState(false)\n  const togglerRef = useRef<Pick<Props, 'onToggle' | 'onOpen' | 'onClose'>>({\n    onToggle,\n    onOpen,\n    onClose,\n  })\n\n  const onClickClose = useCallback(() => {\n    if (orgOnClickClose) {\n      return orgOnClickClose(() => {\n        setIsOpen(false)\n      })\n    }\n\n    setIsOpen(false)\n  }, [orgOnClickClose])\n\n  const onPressEscape = useCallback(() => {\n    if (orgOnPressEscape) {\n      return orgOnPressEscape(() => {\n        setIsOpen(false)\n      })\n    }\n\n    setIsOpen(false)\n  }, [orgOnPressEscape])\n\n  useEffect(() => {\n    const handler = ((e: Event & { detail: { id: string } }) => {\n      if (id === e.detail.id) {\n        setIsOpen(true)\n      }\n    }) as Parameters<typeof document.addEventListener>['1']\n\n    document.addEventListener(TRIGGER_EVENT, handler)\n\n    return () => {\n      document.removeEventListener(TRIGGER_EVENT, handler)\n    }\n  }, [id])\n\n  useEffect(() => {\n    togglerRef.current.onToggle = onToggle\n    togglerRef.current.onOpen = onOpen\n    togglerRef.current.onClose = onClose\n  }, [onToggle, onOpen, onClose])\n\n  useEffect(() => {\n    togglerRef.current.onToggle?.(isOpen)\n\n    if (isOpen) {\n      togglerRef.current.onOpen?.()\n    } else {\n      togglerRef.current.onClose?.()\n    }\n  }, [isOpen])\n\n  return {\n    isOpen,\n    onClickClose,\n    onPressEscape,\n  }\n}\n"],"names":["useState","useRef","useCallback","useEffect"],"mappings":";;;;AAEO,MAAM,aAAa,GAAG;SAWb,gBAAgB,CAAC,EAC/B,YAAY,EAAE,eAAe,EAC7B,aAAa,EAAE,gBAAgB,EAC/B,QAAQ,EACR,MAAM,EACN,OAAO,EACP,EAAE,GACI,EAAA;IACN,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAGA,cAAQ,CAAC,KAAK,CAAC;IAC3C,MAAM,UAAU,GAAGC,YAAM,CAAiD;QACxE,QAAQ;QACR,MAAM;QACN,OAAO;AACR,KAAA,CAAC;AAEF,IAAA,MAAM,YAAY,GAAGC,iBAAW,CAAC,MAAK;QACpC,IAAI,eAAe,EAAE;YACnB,OAAO,eAAe,CAAC,MAAK;gBAC1B,SAAS,CAAC,KAAK,CAAC;AAClB,YAAA,CAAC,CAAC;QACJ;QAEA,SAAS,CAAC,KAAK,CAAC;AAClB,IAAA,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;AAErB,IAAA,MAAM,aAAa,GAAGA,iBAAW,CAAC,MAAK;QACrC,IAAI,gBAAgB,EAAE;YACpB,OAAO,gBAAgB,CAAC,MAAK;gBAC3B,SAAS,CAAC,KAAK,CAAC;AAClB,YAAA,CAAC,CAAC;QACJ;QAEA,SAAS,CAAC,KAAK,CAAC;AAClB,IAAA,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAEtBC,eAAS,CAAC,MAAK;AACb,QAAA,MAAM,OAAO,IAAI,CAAC,CAAqC,KAAI;YACzD,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE;gBACtB,SAAS,CAAC,IAAI,CAAC;YACjB;AACF,QAAA,CAAC,CAAsD;AAEvD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC;AAEjD,QAAA,OAAO,MAAK;AACV,YAAA,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC;AACtD,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAERA,eAAS,CAAC,MAAK;AACb,QAAA,UAAU,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ;AACtC,QAAA,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM;AAClC,QAAA,UAAU,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO;IACtC,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/BA,eAAS,CAAC,MAAK;QACb,UAAU,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;QAErC,IAAI,MAAM,EAAE;AACV,YAAA,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI;QAC/B;aAAO;AACL,YAAA,UAAU,CAAC,OAAO,CAAC,OAAO,IAAI;QAChC;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAEZ,OAAO;QACL,MAAM;QACN,YAAY;QACZ,aAAa;KACd;AACH;;;;;"}