basb-cli
Version:
Blog as Second Brain!
2 lines (1 loc) • 2.27 kB
JavaScript
import{d1 as r,b1 as t}from"./index.js";function e(t){for(var e=[],a=0;a<t.length;a++){var n=t[a];if(!n.defaultAttr.ignore){var i=n.label,o=i.getComputedTransform(),l=i.getBoundingRect(),f=!o||o[1]<1e-5&&o[2]<1e-5,c=i.style.margin||0,u=l.clone();u.applyTransform(o),u.x-=c/2,u.y-=c/2,u.width+=c,u.height+=c;var s=f?new r(l,o):null;e.push({label:i,labelLine:n.labelLine,rect:u,localRect:l,obb:s,priority:n.priority,defaultAttr:n.defaultAttr,layoutOption:n.computedLayoutOption,axisAligned:f,transform:o})}}return e}function a(r,t,e,a){return function(r,t,e,a,n,i){var o=r.length;if(!(o<2)){r.sort((function(r,e){return r.rect[t]-e.rect[t]}));for(var l,f=0,c=!1,u=0,s=0;s<o;s++){var b=r[s],h=b.rect;(l=h[t]-f)<0&&(h[t]-=l,b.label[t]-=l,c=!0),u+=Math.max(-l,0),f=h[t]+h[e]}u>0&&i&&x(-u/o,0,o);var v,g,p=r[0],d=r[o-1];return m(),v<0&&A(-v,.8),g<0&&A(g,.8),m(),y(v,g,1),y(g,v,-1),m(),v<0&&M(-v),g<0&&M(g),c}function m(){v=p.rect[t]-a,g=n-d.rect[t]-d.rect[e]}function y(r,t,e){if(r<0){var a=Math.min(t,-r);if(a>0){x(a*e,0,o);var n=a+r;n<0&&A(-n*e,1)}else A(-r*e,1)}}function x(e,a,n){0!==e&&(c=!0);for(var i=a;i<n;i++){var o=r[i];o.rect[t]+=e,o.label[t]+=e}}function A(a,n){for(var i=[],l=0,f=1;f<o;f++){var c=r[f-1].rect,u=Math.max(r[f].rect[t]-c[t]-c[e],0);i.push(u),l+=u}if(l){var s=Math.min(Math.abs(a)/l,n);if(a>0)for(f=0;f<o-1;f++)x(i[f]*s,0,f+1);else for(f=o-1;f>0;f--)x(-i[f-1]*s,f,o)}}function M(r){var t=r<0?-1:1;r=Math.abs(r);for(var e=Math.ceil(r/(o-1)),a=0;a<o-1;a++)if(t>0?x(e,0,a+1):x(-e,o-a-1,o),(r-=e)<=0)return}}(r,"y","height",t,e,a)}function n(e){var a=[];e.sort((function(r,t){return t.priority-r.priority}));var n=new t(0,0,0,0);function i(r){if(!r.ignore){var t=r.ensureState("emphasis");null==t.ignore&&(t.ignore=!1)}r.ignore=!0}for(var o=0;o<e.length;o++){var l=e[o],f=l.axisAligned,c=l.localRect,u=l.transform,s=l.label,b=l.labelLine;n.copy(l.rect),n.width-=.1,n.height-=.1,n.x+=.05,n.y+=.05;for(var h=l.obb,v=!1,g=0;g<a.length;g++){var p=a[g];if(n.intersect(p.rect)){if(f&&p.axisAligned){v=!0;break}if(p.obb||(p.obb=new r(p.localRect,p.transform)),h||(h=new r(c,u)),h.intersect(p.obb)){v=!0;break}}}v?(i(s),b&&i(b)):(s.attr("ignore",l.defaultAttr.ignore),b&&b.attr("ignore",l.defaultAttr.labelGuideIgnore),a.push(l))}}export{n as h,e as p,a as s};