/*!
 * KoliBri - The accessible HTML-Standard
 */
import{r as i,h as s,H as t}from"./index-12b1e13a.js";import{a as e}from"./align-floating-elements-db77d917.js";import{w as o}from"./prop.validators-9feb1d92.js";import{g as a}from"./dev.utils-fab45cbc.js";import{a as h}from"./align-82100bda.js";import{v as l}from"./show-484b637e.js";import"./reuse-32931294.js";import"./index-da3e0c00.js";const d=(e,t)=>{o(e,"_on",(e=>"object"==typeof e&&null!==e),new Set(["PopoverCallbacksPropType {Events.onClose}"]),t)},r=class{constructor(e){i(this,e),this.hidePopoverByEscape=e=>{"Escape"===e.key&&this.hidePopover(e)},this.hidePopoverByClickOutside=e=>{this.host&&!this.host.contains(e.target)&&this.hidePopover(e)},this.catchHostAndTriggerElement=e=>{e&&(this.host=e,this.triggerElement=e.previousElementSibling)},this.catchPopoverElement=e=>{this.popoverElement=e},this.catchArrowElement=e=>{this.arrowElement=e},this._align="top",this._on=void 0,this._show=!1,this.state={_align:"top",_on:{},_show:!1,_visible:!1}}async showPopover(){this.addListenersToBody(),this.triggerElement&&this.popoverElement&&(await e({align:this._align,referenceElement:this.triggerElement,arrowElement:this.arrowElement,floatingElement:this.popoverElement}),this.state=Object.assign(Object.assign({},this.state),{_visible:!0}))}hidePopover(e){var t,s,i;this.state=Object.assign(Object.assign({},this.state),{_visible:!1}),this._show=!1,null===(t=this.triggerElement)||void 0===t||t.focus(),this.removeListenersToBody(),null===(i=null===(s=this.state._on)||void 0===s?void 0:s.onClose)||void 0===i||i.call(s,e)}addListenersToBody(){var e;const t=a().body;t.addEventListener("keyup",this.hidePopoverByEscape),t.addEventListener("click",this.hidePopoverByClickOutside),null===(e=document.scrollingElement)||void 0===e||e.addEventListener("scroll",(()=>{this.showPopover()}),{passive:!0})}removeListenersToBody(){var e;const t=a().body;t.removeEventListener("keyup",this.hidePopoverByEscape),t.removeEventListener("click",this.hidePopoverByClickOutside),null===(e=document.scrollingElement)||void 0===e||e.removeEventListener("scroll",(()=>{this.showPopover()}))}render(){return s(t,{key:"c9c429d2ab88094fdd44fc60e98e584620ab5f69",ref:this.catchHostAndTriggerElement,class:"kol-popover"},s("div",{key:"3273b90d3470f426f9fda0d822d0ac53e7271e75",class:{popover:!0,show:this.state._visible},ref:this.catchPopoverElement,hidden:!this.state._show},s("div",{key:"823fa670c74d381037ec0cccd348bc70b0b8cada",class:`arrow ${this.state._align}`,ref:this.catchArrowElement}),s("slot",{key:"941723ef75a9631c9314c4f8d18f63910e1ed392"})))}validateAlign(e){h(this,e)}validateOn(e){d(this,e)}validateShow(e){l(this,e),e&&this.showPopover()}componentWillLoad(){this.validateAlign(this._align),this.validateShow(this._show)}static get watchers(){return{_align:["validateAlign"],_on:["validateOn"],_show:["validateShow"]}}};export{r as kol_popover_wc};