@diplodoc/transform
Version:
A simple transformer of text in YFM (Yandex Flavored Markdown) to HTML
3 lines (2 loc) • 3.34 kB
JavaScript
()=>{(()=>{var p=t=>{let e=t.composedPath();return Array.isArray(e)&&e.length>0?e[0]:t.target},S=t=>{let e=p(t);return!e||!e.matches},b={TITLE:".yfm .yfm-term_title",CONTENT:".yfm .yfm-term_dfn"},r="open",f=b.CONTENT.replace(/\./g,"")+" "+r,d=!0;function P(t,e){let n=e.getAttribute("id")||Math.random().toString(36).substr(2,8);t==null||t.setAttribute("term-id",n)}function w(t,e){let n=e.getAttribute("aria-live")||"polite";t==null||t.setAttribute("aria-live",n),t==null||t.setAttribute("aria-modal","true")}function y(t,e){let{x:n,y:i,right:o,left:c,width:l,height:h}=e.getBoundingClientRect(),s=T(e);if(!s)return;let{right:v,left:O}=s.getBoundingClientRect();if((v<c||O>o)&&!d){a(t);return}d&&s&&(s.addEventListener("scroll",L),d=!1);let R=Number(t.getAttribute("relativeX")),k=Number(t.getAttribute("relativeY"));if(R===n&&k===i)return;t.setAttribute("relativeX",String(n)),t.setAttribute("relativeY",String(i));let x=h+5,u=t.parentElement;if(!u)return;let{width:g}=t.getBoundingClientRect(),{left:W}=u.getBoundingClientRect(),C=Number(m(e).left),N=g+C,X=C-g<0,D=N>document.body.clientWidth,Y=(D||document.dir==="rtl")&&!X?g-l:0,_=m(u).top-u.offsetTop,F=D?N-document.body.clientWidth+5:0,B=m(e).left-W+u.offsetLeft-Y,M=B+g>=document.body.clientWidth;t.style.top=Number(m(e).top+x-_)+"px",t.style.left=Number(B-(M?F:0))+"px"}function L(){let t=document.getElementsByClassName(f)[0];if(!t)return;let e=t.getAttribute("term-id")||"",n=document.getElementById(e);n&&y(t,n)}function T(t){return t?t.closest("table")||t.closest("code")||t.parentElement:null}function A(t){let e=document.getElementsByClassName(f)[0],n=t.getAttribute("id"),i=t.getAttribute("term-key"),o=document.getElementById(i+"_element");if(e&&n===e.getAttribute("term-id")){a(e);return}let l=t.closest([b.CONTENT.replace(" ",""),r].join("."));e&&!l&&a(e),!(!t.matches(b.TITLE)||!o)&&(P(o,t),w(o,t),y(o,t),o.classList.toggle(r),I(o))}function a(t){t.classList.remove(r);let e=E(t),n=T(e);n&&(n.removeEventListener("scroll",L),d=!0)}function m(t){let e=t.getBoundingClientRect(),n=document.body,i=document.documentElement,o=window.pageYOffset||i.scrollTop||n.scrollTop,c=window.pageXOffset||i.scrollLeft||n.scrollLeft,l=i.clientTop||n.clientTop||0,h=i.clientLeft||n.clientLeft||0,s=e.top+o-l,v=e.left+c-h;return{top:Math.round(s),left:Math.round(v)}}function I(t){let e=t.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),n=e[0],i=e[e.length-1];n&&n.focus(),t.addEventListener("keydown",function(o){(o.key==="Tab"||o.keyCode===9)&&(o.shiftKey?document.activeElement===n&&(i.focus(),o.preventDefault()):document.activeElement===i&&(n.focus(),o.preventDefault()))})}function E(t){let e=t.getAttribute("term-id");return e?document.getElementById(e):null}typeof document!="undefined"&&(document.addEventListener("click",t=>{(p(t)||!S(t))&&A(p(t))}),document.addEventListener("keydown",t=>{var e;let n=document.getElementsByClassName(f)[0];t.key==="Enter"&&document.activeElement&&A(document.activeElement),t.key==="Escape"&&n&&(a(n),(e=E(n))==null||e.focus())}),window.addEventListener("resize",()=>{let t=document.getElementsByClassName(f)[0];if(!t)return;let e=t.getAttribute("term-id")||"",n=document.getElementById(e);if(!n){t.classList.toggle(r);return}y(t,n)}))})();})();
//# sourceMappingURL=_yfm-only.min.js.map
;(