UNPKG

naviix

Version:

Spatial navigation. Arrow key navigation.

3 lines (2 loc) 3.65 kB
"use strict";function r(t,a){var o=new Map,c=new Map;if(!a&&t.length>1){var i=t.map((function(r){return r.wrap}));t.forEach((function(r){c.set(r.wrap.id,r.locs[0])}));var u=n(i).x;o=u}return t.forEach((function(t){var a=t.locs,i=t.subs,u=t.wrap,e=(i||[]).map((function(r){return r.wrap}));(i||[]).map((function(r){c.set(r.wrap.id,r.locs[0])}));var f=n(a.concat(e),u,e).x,l=r(i||[],!0),s=l.x,p=l.firstInWrap;o=new Map(Array.from(o).concat(Array.from(f)).concat(Array.from(s))),c=new Map(Array.from(c).concat(Array.from(p)))})),{x:o,firstInWrap:c}}function n(r,n,a){var o=[].concat(r);o.sort((function(r,n){return r.loc[0]-n.loc[0]}));var c=[].concat(r);c.sort((function(r,n){return r.loc[1]-n.loc[1]}));var i=new Map,u=-1/0,e=1/0,f=1/0,l=-1/0;return r.forEach((function(r){var s=r.loc,p=s[0],d=s[1],v=s[2],w=s[3],h=c.findIndex((function(n){return n.id===r.id})),y=o.findIndex((function(n){return n.id===r.id})),g=1/0,A=n,b=!1;c.slice(0,h).forEach((function(n){var a=function(r,n){var a=r[0],o=r[1],c=r[2],i=r[3],u=n[0],e=n[1],f=n[2],l=n[3],s=1/0;o>e&&(u-f>a+c?u-f-a-c<o-i-e-l&&(s=t(a+c,o-i,u-f,e+l)):u+f<a-c?a-c-u-f<o-i-e-l&&(s=t(a+c,o-i,u+f,e+l)):(s=Math.pow(o-i-e-l,2),e+l>o-i&&(s=-s)));return s}(r.loc,n.loc);a<g&&(b=!0,A=n,g=a)}));var x=1/0,m=n,M=!1;c.slice(h+1).forEach((function(n){var a=function(r,n){var a=r[0],o=r[1],c=r[2],i=r[3],u=n[0],e=n[1],f=n[2],l=n[3],s=1/0;o<e&&(u-f>a+c?u-f-a-c<e-l-o-i&&(s=t(a+c,o+i,u-f,e-l)):u+f<a-c?a-c-u-f<e-l-o-i&&(s=t(a-c,o+i,u+f,e-l)):(s=Math.pow(e-l-o-i,2),e-l<o+i&&(s=-s)));return s}(r.loc,n.loc);a<x&&(M=!0,m=n,x=a)}));var E=1/0,W=n,I=!1;o.slice(0,y).forEach((function(n){var a=function(r,n){var a=r[0],o=r[1],c=r[2],i=r[3],u=n[0],e=n[1],f=n[2],l=n[3],s=1/0;a>u&&(e-l>o+i?e-l-o-i<a-c-u-f&&(s=t(a-c,o+i,u+f,e-l)):e+l<o-i?o-i-e-l<a-c-u-f&&(s=t(a-c,o-i,u+f,e+l)):(s=Math.pow(a-c-u-f,2),u+f>a-c&&(s=-s)));return s}(r.loc,n.loc);a<E&&(I=!0,W=n,E=a)}));var j=1/0,O=n,S=!1;o.slice(y+1).forEach((function(n){var a=function(r,n){var a=r[0],o=r[1],c=r[2],i=r[3],u=n[0],e=n[1],f=n[2],l=n[3],s=1/0;u>a&&(e-l>o+i?e-l-o-i<u-f-a-c&&(s=t(a+c,o+i,u-f,e-l)):e+l<o-i?o-i-e-l<u-f-a-c&&(s=t(a+c,o-i,u-f,e+l)):(s=Math.pow(u-f-a-c,2),u-f<a+c&&(s=-s)));return s}(r.loc,n.loc);a<j&&(S=!0,O=n,j=a)})),i.set(r.id,{up:m,down:A,left:W,right:O,nextWrap:{up:!M,down:!b,right:!S,left:!I},nextSubWrap:{up:a.includes(m),down:a.includes(A),right:a.includes(O),left:a.includes(W)}}),u=d+w>u?d+w:u,e=d-w<e?d-w:e,f=p-w<f?p-v:f,l=p+w>l?p+v:l})),{x:i,t:u,b:e,l:f,r:l}}function t(r,n,t,a){var o=t-r,c=a-n;return o*o+c*c}function a(r){if(null!=r){var n=Array.isArray(r),t=n&&(Array.isArray(r[0])?"number"==typeof r[0][0]:null!=r[0].loc),o=!n,c=!t&&!o,i=null;if(t)i=[{locs:r.map((function(r){return Array.isArray(r)?{id:r,loc:r}:r}))}];else if(o){var u=r.wrap,e=r.subs;i=[{locs:a(r.locs)[0].locs}],null!=e&&Object.assign(i[0],{subs:a(r.subs)}),null!=u&&Object.assign(i[0],{wrap:Array.isArray(u)?{loc:u,id:u}:u})}else c&&(i=r.map((function(r){var n=r.locs,t=r.wrap,o=r.subs,c={locs:a(n)[0].locs,wrap:Array.isArray(t)?{loc:t,id:t}:t};return o&&Object.assign(c,{subs:a(o)}),c})));return i}}module.exports=function(n){var t=r(a(n));return function(r,n){var t=new Map;return r.forEach((function(r,n){var o=r.up,c=r.right,i=r.down,u=r.left,e=r.nextWrap,f=r.nextSubWrap,l=e.up,s=e.right,p=e.down,d=e.left,v=f.up,w=f.right,h=f.down,y=f.left,g=a("up",o,l,v),A=a("right",c,s,w),b=a("down",i,p,h),x=a("left",u,d,y);t.set(n,{up:g,right:A,down:b,left:x})})),t;function a(t,a,o,c){var i=a;if(a&&o){var u=r.get(a.id),e=u.nextSubWrap;i=u[t],e[t]&&(i=n.get(u[t].id))}else c&&(i=n.get(a.id));return i}}(t.x,t.firstInWrap)}; //# sourceMappingURL=naviix.min.js.map