{"version":3,"sources":["utils/close-popup.ts"],"names":["ClosePopup","constructor","container","callback","useEscapeKey","this","attach","listener","contains","e","target","document","addEventListener","escapeListener","key","detach","removeEventListener"],"mappings":"MAAaA,WACTC,YAAoBC,EAAgCC,EAA8BC,EAAwB,CAAA,GAAtFC,KAAAH,UAAAA,EAAgCG,KAAAF,SAAAA,EAA8BE,KAAAD,aAAAA,EAC9EC,KAAKC,OAAM,CACf,CAMQA,SAGJD,KAAKE,SAAW,IACRF,KAAKH,UAAUM,SAASC,EAAEC,MAAc,GAC5CL,KAAKF,SAAQ,CACjB,EAEAQ,SAASC,iBAAiB,QAASP,KAAKE,QAAQ,EAG5CF,KAAKD,eACLC,KAAKQ,eAAiB,IACJ,WAAVJ,EAAEK,KACFT,KAAKF,SAAQ,CAErB,EAEAQ,SAASC,iBAAiB,UAAWP,KAAKQ,cAAc,EAEhE,CAMAE,SACUV,KAAKE,UACPI,SAASK,oBAAoB,QAASX,KAAKE,QAAQ,EAGjDF,KAAKQ,gBACPF,SAASK,oBAAoB,UAAWX,KAAKQ,cAAc,CAEnE,C,QA3CSb,U","file":"close-popup.js","sourcesContent":["export class ClosePopup {\r\n constructor(private container: HTMLElement, private callback: () => void, private useEscapeKey: boolean = false) {\r\n this.attach();\r\n }\r\n\r\n /* #region Private */\r\n private listener: (e: MouseEvent) => void;\r\n private escapeListener: (e: KeyboardEvent) => void;\r\n\r\n private attach() {\r\n\r\n // Click event\r\n this.listener = (e) => { \r\n if (this.container.contains(e.target as Node)) return;\r\n this.callback();\r\n };\r\n\r\n document.addEventListener(\"click\", this.listener);\r\n\r\n // Escape key event\r\n if (this.useEscapeKey) {\r\n this.escapeListener = (e) => {\r\n if (e.key === \"Escape\") {\r\n this.callback();\r\n }\r\n };\r\n\r\n document.addEventListener(\"keydown\", this.escapeListener);\r\n }\r\n }\r\n\r\n /* #endregion */\r\n\r\n /* #region Public */\r\n\r\n detach() {\r\n if (!!this.listener) {\r\n document.removeEventListener(\"click\", this.listener);\r\n }\r\n\r\n if (!!this.escapeListener) {\r\n document.removeEventListener(\"keydown\", this.escapeListener);\r\n }\r\n }\r\n\r\n /* #endregion */\r\n}"]}