UNPKG

naviix

Version:

Spatial navigation. Arrow key navigation.

3 lines (2 loc) 4.32 kB
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){var n=t(s(r)),o=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,f=u.up,l=u.right,p=u.down,d=u.left,v=s.up,w=s.right,h=s.down,g=s.left,b=o("up",a,f,v),y=o("right",i,l,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}}(n.x,n.firstInWrap);return o}function t(r,n){var a=new Map,i=new Map;if(!n&&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=o(c).x;a=e}return r.forEach((function(r){var n=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=o(n.concat(u),e,u).x,f=t(c||[],!0),l=f.x,p=f.firstInWrap;a=new Map(Array.from(a).concat(Array.from(s)).concat(Array.from(l))),i=new Map(Array.from(i).concat(Array.from(p)))})),{x:a,firstInWrap:i}}function o(r,n,t){var o=[].concat(r);o.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,f=-1/0,l=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=o.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=a(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=i(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=o[D],G=c(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<o.length;++V){var X=o[V],Y=e(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)}}),f=h+b>f?h+b:f,l=h-b<l?h-b:l,p=w-b<p?w-g:p,d=w+b>d?w+g:d})),{x:s,t:f,b:l,l:p,r:d}}function a(r,n){var t=r[0],o=r[1],a=r[2],i=r[3],c=n[0],e=n[1],s=n[2],f=n[3],l=1/0,p=!1;return o>e&&(c-s>t+a?c-s-t-a<o-i-e-f&&(l=u(t+a,o-i,c-s,e+f)):c+s<t-a?t-a-c-s<o-i-e-f&&(l=u(t+a,o-i,c+s,e+f)):(p=!0,l=Math.pow(o-i-e-f,2),e+f>o-i&&(l=-l))),{dis:l,isProj:p}}function i(r,n){var t=r[0],o=r[1],a=r[2],i=r[3],c=n[0],e=n[1],s=n[2],f=n[3],l=1/0,p=!1;return o<e&&(c-s>t+a?c-s-t-a<e-f-o-i&&(l=u(t+a,o+i,c-s,e-f)):c+s<t-a?t-a-c-s<e-f-o-i&&(l=u(t-a,o+i,c+s,e-f)):(l=Math.pow(e-f-o-i,2),e-f<o+i&&(l=-l),p=!0)),{dis:l,isProj:p}}function c(r,n){var t=r[0],o=r[1],a=r[2],i=r[3],c=n[0],e=n[1],s=n[2],f=n[3],l=1/0,p=!1;return t>c&&(e-f>o+i?e-f-o-i<t-a-c-s&&(l=u(t-a,o+i,c+s,e-f)):e+f<o-i?o-i-e-f<t-a-c-s&&(l=u(t-a,o-i,c+s,e+f)):(l=Math.pow(t-a-c-s,2),c+s>t-a&&(l=-l),p=!0)),{dis:l,isProj:p}}function e(r,n){var t=r[0],o=r[1],a=r[2],i=r[3],c=n[0],e=n[1],s=n[2],f=n[3],l=1/0,p=!1;return c>t&&(e-f>o+i?e-f-o-i<c-s-t-a&&(l=u(t+a,o+i,c-s,e-f)):e+f<o-i?o-i-e-f<c-s-t-a&&(l=u(t+a,o-i,c-s,e+f)):(l=Math.pow(c-s-t-a,2),c-s<t+a&&(l=-l),p=!0)),{dis:l,isProj:p}}function u(r,n,t,o){var a=t-r,i=o-n;return a*a+i*i}function s(r){if(null!=r){var n=Array.isArray(r),t=n&&(Array.isArray(r[0])?"number"==typeof r[0][0]:null!=r[0].loc||p(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}:f(r)}))}];else if(o){var c=r.wrap,e=r.subs;i=[{locs:s(r.locs)[0].locs}],null!=e&&Object.assign(i[0],{subs:s(r.subs)}),null!=c&&Object.assign(i[0],{wrap:Array.isArray(c)?{loc:c,id:c}:f(c)})}else a&&(i=r.map((function(r){var n=r.locs,t=r.wrap,o=r.subs,a={locs:s(n)[0].locs,wrap:Array.isArray(t)?{loc:t,id:t}:f(t)};return o&&Object.assign(a,{subs:s(o)}),a})));return i}}function f(n){return p(n)?{id:t=n,loc:l(t)}:p(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 p(r){return r instanceof HTMLElement}export{n as default}; //# sourceMappingURL=naviix.esm.min.js.map