UNPKG

naviix

Version:

Spatial navigation. Arrow key navigation.

3 lines (2 loc) 4.32 kB
"use strict";function r(){return r=Object.assign?Object.assign.bind():function(r){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var o in t)({}).hasOwnProperty.call(t,o)&&(r[o]=t[o])}return r},r.apply(null,arguments)}function n(r,o){var a=new Map,i=new Map;if(!o&&r.length>1){var c=r.map((function(r){return r.wrap}));r.forEach((function(r){i.set(r.wrap.id,r.locs[0])}));var e=t(c).x;a=e}return r.forEach((function(r){var o=r.locs,c=r.subs,e=r.wrap,u=(c||[]).map((function(r){return r.wrap}));(c||[]).map((function(r){i.set(r.wrap.id,r.locs[0])}));var s=t(o.concat(u),e,u).x,l=n(c||[],!0),f=l.x,p=l.firstInWrap;a=new Map(Array.from(a).concat(Array.from(s)).concat(Array.from(f))),i=new Map(Array.from(i).concat(Array.from(p)))})),{x:a,firstInWrap:i}}function t(r,n,t){var e=[].concat(r);e.sort((function(r,n){return r.loc[0]-n.loc[0]}));var u=[].concat(r);u.sort((function(r,n){return r.loc[1]-n.loc[1]}));var s=new Map,l=-1/0,f=1/0,p=1/0,d=-1/0;return r.forEach((function(r){for(var v=r.loc,w=v[0],h=v[1],g=v[2],b=v[3],y=u.findIndex((function(n){return n.id===r.id})),x=e.findIndex((function(n){return n.id===r.id})),A=1/0,j=n,m=!1,M=y-1;M>-1;--M){var P=u[M],W=o(r.loc,P.loc),O=W.dis,E=W.isProj;if(O<A&&(m=!0,j=P,A=O,E))break}for(var I=1/0,k=n,S=!1,B=y+1;B<u.length;++B){var C=u[B],H=a(r.loc,C.loc),L=H.dis,R=H.isProj;if(L<I&&(S=!0,k=C,I=L,R))break}for(var T=1/0,q=n,z=!1,D=x-1;D>-1;--D){var F=e[D],G=i(r.loc,F.loc),J=G.dis,K=G.isProj;if(J<T&&(z=!0,q=F,T=J,K))break}for(var N=1/0,Q=n,U=!1,V=x+1;V<e.length;++V){var X=e[V],Y=c(r.loc,X.loc),Z=Y.dis,$=Y.isProj;if(Z<N&&(U=!0,Q=X,N=Z,$))break}s.set(r.id,{up:k,down:j,left:q,right:Q,nextWrap:{up:!S,down:!m,right:!U,left:!z},nextSubWrap:{up:t.includes(k),down:t.includes(j),right:t.includes(Q),left:t.includes(q)}}),l=h+b>l?h+b:l,f=h-b<f?h-b:f,p=w-b<p?w-g:p,d=w+b>d?w+g:d})),{x:s,t:l,b:f,l:p,r:d}}function o(r,n){var t=r[0],o=r[1],a=r[2],i=r[3],c=n[0],u=n[1],s=n[2],l=n[3],f=1/0,p=!1;return o>u&&(c-s>t+a?c-s-t-a<o-i-u-l&&(f=e(t+a,o-i,c-s,u+l)):c+s<t-a?t-a-c-s<o-i-u-l&&(f=e(t+a,o-i,c+s,u+l)):(p=!0,f=Math.pow(o-i-u-l,2),u+l>o-i&&(f=-f))),{dis:f,isProj:p}}function a(r,n){var t=r[0],o=r[1],a=r[2],i=r[3],c=n[0],u=n[1],s=n[2],l=n[3],f=1/0,p=!1;return o<u&&(c-s>t+a?c-s-t-a<u-l-o-i&&(f=e(t+a,o+i,c-s,u-l)):c+s<t-a?t-a-c-s<u-l-o-i&&(f=e(t-a,o+i,c+s,u-l)):(f=Math.pow(u-l-o-i,2),u-l<o+i&&(f=-f),p=!0)),{dis:f,isProj:p}}function i(r,n){var t=r[0],o=r[1],a=r[2],i=r[3],c=n[0],u=n[1],s=n[2],l=n[3],f=1/0,p=!1;return t>c&&(u-l>o+i?u-l-o-i<t-a-c-s&&(f=e(t-a,o+i,c+s,u-l)):u+l<o-i?o-i-u-l<t-a-c-s&&(f=e(t-a,o-i,c+s,u+l)):(f=Math.pow(t-a-c-s,2),c+s>t-a&&(f=-f),p=!0)),{dis:f,isProj:p}}function c(r,n){var t=r[0],o=r[1],a=r[2],i=r[3],c=n[0],u=n[1],s=n[2],l=n[3],f=1/0,p=!1;return c>t&&(u-l>o+i?u-l-o-i<c-s-t-a&&(f=e(t+a,o+i,c-s,u-l)):u+l<o-i?o-i-u-l<c-s-t-a&&(f=e(t+a,o-i,c-s,u+l)):(f=Math.pow(c-s-t-a,2),c-s<t+a&&(f=-f),p=!0)),{dis:f,isProj:p}}function e(r,n,t,o){var a=t-r,i=o-n;return a*a+i*i}function u(r){if(null!=r){var n=Array.isArray(r),t=n&&(Array.isArray(r[0])?"number"==typeof r[0][0]:null!=r[0].loc||f(r[0])),o=!n,a=!t&&!o,i=null;if(t)i=[{locs:r.map((function(r){return Array.isArray(r)?{id:r,loc:r}:s(r)}))}];else if(o){var c=r.wrap,e=r.subs;i=[{locs:u(r.locs)[0].locs}],null!=e&&Object.assign(i[0],{subs:u(r.subs)}),null!=c&&Object.assign(i[0],{wrap:Array.isArray(c)?{loc:c,id:c}:s(c)})}else a&&(i=r.map((function(r){var n=r.locs,t=r.wrap,o=r.subs,a={locs:u(n)[0].locs,wrap:Array.isArray(t)?{loc:t,id:t}:s(t)};return o&&Object.assign(a,{subs:u(o)}),a})));return i}}function s(n){return f(n)?{id:t=n,loc:l(t)}:f(n.loc)?r({},n,{loc:l(n.loc)}):n;var t}function l(r){var n=r.getBoundingClientRect(),t=n.x,o=n.y,a=n.width/2,i=n.height/2;return[t+a,-o-i,a,i]}function f(r){return r instanceof HTMLElement}module.exports=function(r){var t=n(u(r));return function(r,n){var t=new Map;return r.forEach((function(r,n){var a=r.up,i=r.right,c=r.down,e=r.left,u=r.nextWrap,s=r.nextSubWrap,l=u.up,f=u.right,p=u.down,d=u.left,v=s.up,w=s.right,h=s.down,g=s.left,b=o("up",a,l,v),y=o("right",i,f,w),x=o("down",c,p,h),A=o("left",e,d,g);t.set(n,{up:b,right:y,down:x,left:A})})),t;function o(t,o,a,i){var c=o;if(o&&a){var e=r.get(o.id),u=e.nextSubWrap;c=e[t],u[t]&&(c=n.get(e[t].id))}else i&&(c=n.get(o.id));return c}}(t.x,t.firstInWrap)}; //# sourceMappingURL=naviix.min.js.map