var RoughNotation=(function(t){"use strict";const e="http://www.w3.org/2000/svg";class s{constructor(t){this.seed=t} next(){return this.seed?((2**31-1)&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}} function i(t,e,s,i,n){return{type:"path",ops:u(t,e,s,i,n)}} function n(t,e,s){const n=(t||[]).length;if(n>2){const i=[];for(let e=0;e500?0.4:-0.0016668*u+1.233334;let l=n.maxRandomnessOffset||0;l*l*100>a&&(l=u/10);const g=l/2,d=0.2+0.2*h(n);let p=(n.bowing*n.maxRandomnessOffset*(i-e))/200,_=(n.bowing*n.maxRandomnessOffset*(t-s))/200;(p=c(p,n,f)),(_=c(_,n,f));const m=[],w=()=>c(g,n,f),v=()=>c(l,n,f);return(o&&(r?m.push({op:"move",data:[t+w(),e+w()]}):m.push({op:"move",data:[t+c(l,n,f),e+c(l,n,f)]})),r?m.push({op:"bcurveTo",data:[p+t+(s-t)*d+w(),_+e+(i-e)*d+w(),p+t+2*(s-t)*d+w(),_+e+2*(i-e)*d+w(),s+w(),i+w()]}):m.push({op:"bcurveTo",data:[p+t+(s-t)*d+v(),_+e+(i-e)*d+v(),p+t+2*(s-t)*d+v(),_+e+2*(i-e)*d+v(),s+v(),i+v()]}),m)} function l(t,e,s){const i=t.length,n=[];if(i>3){const o=[],r=1-s.curveTightness;n.push({op:"move",data:[t[1][0],t[1][1]]});for(let e=1;e+2t.setAttribute(e,s);for(const a of s){const s=document.createElementNS(e,"path");if((r(s,"d",a),r(s,"fill","none"),r(s,"stroke",h.color||"currentColor"),r(s,"stroke-width",""+l),p)){const t=s.getTotalLength();i.push(t),(o+=t)} t.appendChild(s),n.push(s)} if(p){let t=0;for(let e=0;e{this._resizing||((this._resizing=!0),setTimeout(()=>{(this._resizing=!1),"showing"===this._state&&this.haveRectsChanged()&&this.show()},400))}),(this._e=t),(this._config=JSON.parse(JSON.stringify(e))),this.attach()} get animate(){return this._config.animate} set animate(t){this._config.animate=t} get animationDuration(){return this._config.animationDuration} set animationDuration(t){this._config.animationDuration=t} get iterations(){return this._config.iterations} set iterations(t){this._config.iterations=t} get color(){return this._config.color} set color(t){this._config.color!==t&&((this._config.color=t),this.refresh())} get strokeWidth(){return this._config.strokeWidth} set strokeWidth(t){this._config.strokeWidth!==t&&((this._config.strokeWidth=t),this.refresh())} get padding(){return this._config.padding} set padding(t){this._config.padding!==t&&((this._config.padding=t),this.refresh())} attach(){if("unattached"===this._state&&this._e.parentElement){!(function(){if(!window.__rno_kf_s){const t=(window.__rno_kf_s=document.createElement("style"));(t.textContent="@keyframes rough-notation-dash { to { stroke-dashoffset: 0; } }"),document.head.appendChild(t)}})();const t=(this._svg=document.createElementNS(e,"svg"));t.setAttribute("class","rough-annotation");const s=t.style;(s.position="absolute"),(s.top="0"),(s.left="0"),(s.overflow="visible"),(s.pointerEvents="none"),(s.width="100px"),(s.height="100px");const i="highlight"===this._config.type;if((this._e.insertAdjacentElement(i?"beforebegin":"afterend",t),(this._state="not-showing"),i)){const t=window.getComputedStyle(this._e).position;(!t||"static"===t)&&(this._e.style.position="relative")} this.attachListeners()}} detachListeners(){window.removeEventListener("resize",this._resizeListener),this._ro&&this._ro.unobserve(this._e)} attachListeners(){this.detachListeners(),window.addEventListener("resize",this._resizeListener,{passive:!0}),!this._ro&&"ResizeObserver" in window&&(this._ro=new window.ResizeObserver(t=>{for(const e of t)e.contentRect&&this._resizeListener()})),this._ro&&this._ro.observe(this._e)} haveRectsChanged(){if(this._lastSizes.length){const t=this.rects();if(t.length!==this._lastSizes.length)return!0;for(let e=0;eMath.round(t)===Math.round(e);return s(t.x,e.x)&&s(t.y,e.y)&&s(t.w,e.w)&&s(t.h,e.h)} isShowing(){return"not-showing"!==this._state} refresh(){this.isShowing()&&!this.pendingRefresh&&(this.pendingRefresh=Promise.resolve().then(()=>{this.isShowing()&&this.show(),delete this.pendingRefresh}))} show(){switch(this._state){case "unattached":break;case "showing":this.hide(),this._svg&&this.render(this._svg,!0);break;case "not-showing":this.attach(),this._svg&&this.render(this._svg,!1)}} hide(){if(this._svg) for(;this._svg.lastChild;) this._svg.removeChild(this._svg.lastChild);this._state="not-showing"} remove(){this._svg&&this._svg.parentElement&&this._svg.parentElement.removeChild(this._svg),(this._svg=void 0),(this._state="unattached"),this.detachListeners()} render(t,e){let s=this._config;e&&((s=JSON.parse(JSON.stringify(this._config))).animate=!1);const i=this.rects();let n=0;i.forEach(t=>(n+=t.w));const o=s.animationDuration||800;let r=0;for(let e=0;e