{"version":3,"file":"js/page__shared_popover-8de293727487c5cfacf1.chunk.js","mappings":"+eAyEA,MAvEA,MACE,IAAAA,GACEC,KAAKC,uBAAyB,KAE9BD,KAAKE,2BAA6BF,KAAKE,2BAA2BC,KAAKH,MACvEA,KAAKI,oBAAsBJ,KAAKI,oBAAoBD,KAAKH,MAEzDA,KAAKK,0BAELL,KAAKM,qBACP,CAEA,uBAAAD,GACEE,SAASC,iBAAiB,QAASR,KAAKI,oBAC1C,CAEA,mBAAAA,EAAoB,OAAEK,IACpB,MAAMC,EAAgBD,EAAOE,QAAQ,iBAErC,IAAKD,EAAiB,OACtB,MAAME,EAAkBL,SAASM,cAAc,2BAA2BH,EAAcI,QAAQC,mBAChGf,KAAKgB,cAAcN,EAAeE,GAClC,MAAMK,IAA+E,SAAhDL,EAAgBM,aAAa,gBAClElB,KAAKmB,yBAAyBP,EAAiBK,GACZ,OAAhCjB,KAAKC,yBACNM,SAASa,oBAAoB,QAASpB,KAAKE,4BAC3CF,KAAKqB,wBAEHJ,IACFjB,KAAKC,uBAAyBW,EAC9BL,SAASC,iBAAiB,QAASR,KAAKE,4BAE5C,CAEA,0BAAAA,CAA2BoB,GACrBtB,KAAKC,yBAA2BD,KAAKC,uBAAuBsB,SAASD,EAAMb,UAC7EF,SAASa,oBAAoB,QAASpB,KAAKE,4BAC3CF,KAAKqB,uBAET,CAEA,wBAAAF,CAAyBK,EAASC,GAChCD,EAAQE,aAAa,cAAeD,EACtC,CAEA,aAAAT,CAAcQ,EAASG,IACrB,QAAaH,EAASG,EAAW,CAC/BC,UAAW,MACXC,UAAW,CACT,CACEC,KAAM,SACNC,QAAS,CACPC,OAAQ,CAAC,EAAE,QAKrB,CAEA,oBAAAX,GACErB,KAAKmB,yBAAyBnB,KAAKC,wBAAwB,GAC3DD,KAAKC,uBAAyB,IAChC,CAEA,mBAAAK,GACEC,SAASC,iBAAiB,2BAA4ByB,IACpD1B,SAASa,oBAAoB,QAASpB,KAAKI,oBAAoB,GAEnE,E","sources":["webpack://nodalview/./app/javascript/src/shared/popover/index.js"],"sourcesContent":["import { createPopper } from '@popperjs/core';\n\nclass Popover {\n  boot() {\n    this.currentPopperContainer = null;\n\n    this.removePopperOnOutsideClick = this.removePopperOnOutsideClick.bind(this);\n    this.handleDocumentClick = this.handleDocumentClick.bind(this);\n\n    this.listenToClickOnDocument();\n\n    this._removeBeforeUnload();\n  }\n\n  listenToClickOnDocument() {\n    document.addEventListener('click', this.handleDocumentClick);\n  }\n  \n  handleDocumentClick({ target }) {\n    const popperTrigger = target.closest('[data-popper]');\n\n    if (!popperTrigger) { return }\n    const popperContainer = document.querySelector(`[data-popper-container=\"${popperTrigger.dataset.popperElement}\"]`);\n    this._createPopper(popperTrigger, popperContainer);\n    const invertedAriaAttributeValue = !(popperContainer.getAttribute('aria-hidden') === 'true');\n    this._changeElementAriaHidden(popperContainer, invertedAriaAttributeValue)\n    if(this.currentPopperContainer !== null) {\n      document.removeEventListener(\"click\", this.removePopperOnOutsideClick)\n      this._wipePopperDisplayed()\n    }\n    if(!invertedAriaAttributeValue) {\n      this.currentPopperContainer = popperContainer;\n      document.addEventListener(\"click\", this.removePopperOnOutsideClick)\n    }\n  }\n\n  removePopperOnOutsideClick(event) {\n    if (this.currentPopperContainer && !this.currentPopperContainer.contains(event.target)) {\n      document.removeEventListener(\"click\", this.removePopperOnOutsideClick)\n      this._wipePopperDisplayed();\n    }\n  }\n\n  _changeElementAriaHidden(element, value) {\n    element.setAttribute('aria-hidden', value)\n  }\n\n  _createPopper(element, container) {\n    createPopper(element, container, {\n      placement: 'top',\n      modifiers: [\n        {\n          name: 'offset',\n          options: {\n            offset: [0,10],\n          },\n        },\n      ],\n    })\n  }\n\n  _wipePopperDisplayed() {\n    this._changeElementAriaHidden(this.currentPopperContainer, true)\n    this.currentPopperContainer = null;\n  }\n\n  _removeBeforeUnload() {\n    document.addEventListener('turbolinks:before-visit', (e) => {\n      document.removeEventListener('click', this.handleDocumentClick);\n    })\n  }\n}\n\nexport default Popover\n"],"names":["boot","this","currentPopperContainer","removePopperOnOutsideClick","bind","handleDocumentClick","listenToClickOnDocument","_removeBeforeUnload","document","addEventListener","target","popperTrigger","closest","popperContainer","querySelector","dataset","popperElement","_createPopper","invertedAriaAttributeValue","getAttribute","_changeElementAriaHidden","removeEventListener","_wipePopperDisplayed","event","contains","element","value","setAttribute","container","placement","modifiers","name","options","offset","e"],"sourceRoot":""}