!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).littlefoot={})}(this,(function(t){"use strict";function e(t,e){t.classList.add(e)}function n(t,e){t.classList.remove(e)}function o(t,e){return t.classList.contains(e)}const i="littlefoot__tooltip";function s(t,e){var n,o;return(null!==(o=null===(n=t.ownerDocument)||void 0===n?void 0:n.defaultView)&&void 0!==o?o:window).getComputedStyle(t).getPropertyValue(e)||""}function r(t,e){const n=Number.parseFloat(s(t,e));return Number.isNaN(n)?0:n}function l(t){const e=r(t,"margin-left"),n=t.offsetWidth-e;return(t.getBoundingClientRect().left+n/2)/window.innerWidth}function c(t,o,i){const[s,c]=function(t,e){const n=r(e,"margin-top"),o=2*n+e.offsetHeight,i=t.getBoundingClientRect().top+t.offsetHeight/2,s=window.innerHeight-i;return s>=o||s>=i?["below",s-n-15]:["above",i-n-15]}(o,t);if(i!==s){n(t,"is-"+i),e(t,"is-"+s);const r=100*l(o)+"%",c="above"===s?"100%":"0";t.style.transformOrigin=r+" "+c}return[s,c]}const a="is-active",u="is-changing",d="is-scrollable";function f({id:t,button:f,content:m,host:p,popover:v,wrapper:h}){let b=0,g="above";const y=()=>document.body.contains(v);return{id:t,activate:t=>{f.setAttribute("aria-expanded","true"),e(f,u),e(f,a),f.insertAdjacentElement("afterend",v),v.style.maxWidth=document.body.clientWidth+"px",b=function(t){const e=s(t,"max-height");if(""===e||"none"===e)return Number.POSITIVE_INFINITY;const n=Number.parseFloat(e);return Number.isNaN(n)?Number.POSITIVE_INFINITY:Math.round(n)}(m),null==t||t(v,f)},dismiss:t=>{f.setAttribute("aria-expanded","false"),e(f,u),n(f,a),n(v,a),null==t||t(v,f)},isActive:()=>o(f,a),isReady:()=>!o(f,u),ready:()=>{e(v,a),n(f,u)},remove:()=>{v.remove(),n(f,u)},reposition:()=>{if(y()){const[t,o]=c(v,f,g);g=t,m.style.maxHeight=Math.min(b,o)+"px",v.offsetHeight{y()&&(v.style.left=function(t,e){const n=t.offsetWidth;return-l(e)*n+r(e,"margin-left")+e.offsetWidth/2}(m,f)+"px",h.style.maxWidth=m.offsetWidth+"px",function(t,e){const n=t.querySelector("."+i);n&&(n.style.left=100*l(e)+"%")}(v,f))},destroy:()=>p.remove()}}function m(t,e=0){let n,o=0;return function(...i){const s=Date.now(),r=Math.max(0,o+e-s);if(0===r)return o=s,void t.apply(this,i);void 0!==n&&window.clearTimeout(n),n=window.setTimeout((()=>{o=Date.now(),n=void 0,t.apply(this,i)}),r)}}const p="is-fully-scrolled",v=t=>o=>{const i=o.currentTarget,s=-o.deltaY;s>0&&n(t,p),i&&s<=0&&st.forEach((t=>{e(t,g)}));function w(t,e){return Array.from(t.querySelectorAll(e))}function E(t,e){return t.querySelector("."+e)||t.firstElementChild||t}function T(t){const e=document.createElement("div");e.innerHTML=t;const n=e.firstElementChild;return n.remove(),n}function x(t){return void 0!==t}function A(t){const e=t.parentElement,n=w(e,":scope > :not(."+g+")"),o=n.filter((t=>"HR"===t.tagName));n.length===o.length&&(y(...o.concat(e)),A(e))}function D(t,e){const n=t.parentElement;t.remove(),n&&n!==e&&!n.innerHTML.replace(/(\[\]| |\s)/g,"")&&D(n,e)}function S([t,e,n],o){const i=T(n.outerHTML);w(i,'[href$="#'+t+'"]').forEach((t=>{D(t,i)}));const s=i.innerHTML.trim();return[e,n,{id:String(o+1),number:o+1,reference:"lf-"+t,content:s.startsWith("<")?s:"

"+s+"

"}]}function O(t){return e=>t.replace(/<%=?\s*(\w+?)\s*%>/g,((t,n)=>{var o;return String(null!==(o=e[n])&&void 0!==o?o:"")}))}function H(t,e){const n=O(t),o=O(e);return([t,e])=>{const i=e.id,s=T(''+n(e)+""),r=s.firstElementChild;r.setAttribute("aria-expanded","false"),r.dataset.footnoteButton="",r.dataset.footnoteId=i;const l=T(o(e));l.dataset.footnotePopover="",l.dataset.footnoteId=i;const c=E(l,b),a=E(l,h);return function(t,e){t.addEventListener("wheel",m(v(e),16))}(a,l),t.insertAdjacentElement("beforebegin",s),{id:i,button:r,host:s,popover:l,content:a,wrapper:c}}}function N({allowDuplicates:t,anchorParentSelector:e,anchorPattern:o,buttonTemplate:i,contentTemplate:s,footnoteSelector:r,numberResetSelector:l,scope:c}){const a=function(t,e,n){return w(t,n+' a[href*="#"]').filter((t=>(t.href+t.rel).match(e)))}(document,o,c).map(function(t,e,n,o){const i=[];return s=>{var r;const l=s.href.split("#")[1];if(!l)return;const c=null===(r=w(t,"#"+window.CSS.escape(l)).find((t=>e||!i.includes(t))))||void 0===r?void 0:r.closest(o);if(!c)return;i.push(c);const a=s.closest(n)||s;return[a.id||s.id,a,c]}}(document,t,e,r)).filter(x).map(S).map(l?function(t){let e=0,n=null;return([o,i,s])=>{const r=o.closest(t);return e=n===r?e+1:1,n=r,[o,i,Object.assign(Object.assign({},s),{number:e})]}}(l):t=>t).map((([t,e,n])=>(y(t,e),A(e),[t,n]))).map(H(i,s)).map(f);return{footnotes:a,unmount(){a.forEach((t=>{t.destroy()})),w(document,"."+g).forEach((t=>{n(t,g)}))}}}const _="[data-footnote-id]",I=(t,e)=>t.target.closest(e),M=t=>null==t?void 0:t.dataset.footnoteId,C=t=>e=>{e.preventDefault();const n=I(e,_),o=M(n);o&&t(o)},L=document.addEventListener,P=window.addEventListener,R=(t,e,n,o)=>L(t,(t=>{const o=t.target;(null==o?void 0:o.closest(e))&&n.call(o,t)}),o);const W={activateDelay:100,activateOnHover:!1,allowDuplicates:!0,allowMultiple:!1,anchorParentSelector:"sup",anchorPattern:/(fn|footnote|note)[:\-_\d]/gi,dismissDelay:100,dismissOnUnhover:!1,dismissOnDocumentTouch:!0,footnoteSelector:"li",hoverDelay:250,numberResetSelector:"",scope:"",contentTemplate:``,buttonTemplate:''};function j(t={}){const e=Object.assign(Object.assign({},W),t),n=function({footnotes:t,unmount:e},n){let o;const i=t=>e=>{e.isReady()&&(e.dismiss(n.dismissCallback),setTimeout(e.remove,t))},s=e=>o=>{n.allowMultiple||t.filter((t=>t.id!==o.id)).forEach(i(n.dismissDelay)),o.isReady()&&(o.activate(n.activateCallback),o.reposition(),o.resize(),setTimeout(o.ready,e))},r=e=>n=>{const o=t.find((t=>t.id===n));o&&e(o)},l=()=>t.forEach(i(n.dismissDelay));return{activate:(t,e)=>r(s(e))(t),dismiss:(t,e)=>r(i(e))(t),dismissAll:l,touchOutside:()=>{n.dismissOnDocumentTouch&&l()},repositionAll:()=>t.forEach((t=>{t.reposition()})),resizeAll:()=>t.forEach((t=>{t.resize()})),toggle:r((t=>t.isActive()?i(n.dismissDelay)(t):s(n.activateDelay)(t))),hover:r((t=>{o=t.id,n.activateOnHover&&!t.isActive()&&s(n.hoverDelay)(t)})),unhover:r((e=>{e.id===o&&(o=null),n.dismissOnUnhover&&setTimeout((()=>t.filter((t=>t.id!==o)).forEach(i(n.dismissDelay))),n.hoverDelay)})),unmount:e}}(N(e),e),o=function(t){const e=e=>{const n=I(e,"[data-footnote-button]"),o=M(n);o?(e.preventDefault(),t.toggle(o)):I(e,"[data-footnote-popover]")||t.touchOutside()},n=m(t.repositionAll,16),o=m(t.resizeAll,16),i=C(t.hover),s=C(t.unhover),r=new AbortController,l={signal:r.signal};return L("touchend",e,l),L("click",e,l),L("keyup",(e=>{27!==e.keyCode&&"Escape"!==e.key&&"Esc"!==e.key||t.dismissAll()}),l),L("gestureend",n,l),P("scroll",n,l),P("resize",o,l),R("mouseover",_,i,l),R("mouseout",_,s,l),()=>{r.abort()}}(n);return{activate(t,o=e.activateDelay){n.activate(t,o)},dismiss(t,o=e.dismissDelay){void 0===t?n.dismissAll():n.dismiss(t,o)},unmount(){o(),n.unmount()},getSetting:t=>e[t],updateSetting(t,n){e[t]=n}}}t.default=j,t.littlefoot=j,Object.defineProperty(t,"__esModule",{value:!0})}));