{"version":3,"file":"js/page__shared_popover-ffc9aae3c0e8c4813a0c.chunk.js","mappings":"+eA2EA,MAzEA,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,EACH,OAEF,MAAME,EAAkBL,SAASM,cAAc,2BAA2BH,EAAcI,QAAQC,mBAChGf,KAAKgB,cAAcN,EAAeE,GAClC,MAAMK,IAA+E,SAAhDL,EAAgBM,aAAa,gBAClElB,KAAKmB,yBAAyBP,EAAiBK,GACX,OAAhCjB,KAAKC,yBACPM,SAASa,oBAAoB,QAASpB,KAAKE,4BAC3CF,KAAKqB,wBAEFJ,IACHjB,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,EAAG,QAKtB,CAEA,oBAAAX,GACErB,KAAKmB,yBAAyBnB,KAAKC,wBAAwB,GAC3DD,KAAKC,uBAAyB,IAChC,CAEA,mBAAAK,GACEC,SAASC,iBAAiB,sBAAuByB,IAC/C1B,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) {\n      return;\n    }\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('turbo: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":""}