diff --git a/dist/bpstudio.js b/dist/bpstudio.js index 7330cb11..9ee96e61 100644 --- a/dist/bpstudio.js +++ b/dist/bpstudio.js @@ -1 +1 @@ -!function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():t.BPStudio=e()}(this,(function(){var t=this&&this.__decorate||function(t,e,i,s){var n,r=arguments.length,o=r<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,i,s);else for(var h=t.length-1;h>=0;h--)(n=t[h])&&(o=(r<3?n(o):r>3?n(e,i,o):n(e,i))||o);return r>3&&o&&Object.defineProperty(e,i,o),o};if("object"!=typeof Shrewd)throw new Error("BPStudio requires Shrewd.");const{shrewd:e}=Shrewd;Shrewd.option.autoCommit=!1,setInterval((()=>Shrewd.commit()),50);let i=!1;function s(t,e){if(void 0===e)return(e,i)=>n(e,i,t);n(t,e,{})}function n(t,i,s){e({validator(t){var e,n;let o=r.get(this);o||r.set(this,o={});let h=null===(n=null===(e=s.validator)||void 0===e?void 0:e.apply(this,[t]))||void 0===n||n;if(h){if(i in o&&o[i]!=t){if(!("design"in this))debugger;this.design.history.fieldChange(this,i,o[i],t)}o[i]=t}return h}})(t,i)}const r=new WeakMap;function o(t,e,i){let s=i.get;return{get(){let t=h.get(this);return t||h.set(this,t={}),e in t?t[e]:t[e]=s.apply(this)},enumerable:!1,configurable:!1}}const h=new WeakMap;class l{constructor(t,e){this.configuration=t,this.overlaps=e.overlaps,this.strategy=e.strategy}static getMaxIntersectionDistance(t,e,i,s){let n=s?2:0,r=t.node.get(e.c[n].e),o=t.node.get(i.c[n].e),h=t.node.get(e.c[2-n].e);return t.distTriple(r,o,h).d3}*generate(){let{strategy:t}=this;if(1==this.overlaps.length){let e=this.overlaps[0],i=this.configuration.repository.structure[e.parent];if(t==Rt.halfIntegral)for(let t of this.halfKamiya(e,i.sx))yield{gadgets:[t]};if(t==Rt.universal)for(let t of this.universalGPS(e,i.sx))yield{gadgets:[t]};else for(let t of c.gops(e,i.sx))yield{gadgets:[{pieces:[t]}]}}if(2==this.overlaps.length){let e=this.configuration.repository.getJoiner(this.overlaps);t==Rt.baseJoin?yield*e.baseJoin():t==Rt.standardJoin?yield*e.standardJoin():yield*e.simpleJoin(t)}}*universalGPS(t,e){let i=2,s=!1;for(;!s;){let n=Ht(t);n.ox*=i,n.oy*=i;for(let t of c.gops(n,e*i)){let e=c.instantiate(t).shrink(i);if(!Number.isInteger(e.v))continue;let{ox:n,oy:r,u:o,v:h}=e,l={ox:n,oy:r,u:h,v:o},a={x:0,y:0},d={x:r+o+h,y:n+o+h};e.detours=[[a,d]],l.detours=[[d,a]];let u=e.oy+e.u+e.v,p=Math.ceil(u)-u,g=new Dt({pieces:[e,l]}),f=g.reverseGPS();yield g.addSlack(2,p),yield f.addSlack(0,p),s=!0}i+=2}}*halfKamiya(t,e){if(t.ox%2==0||t.oy%2==0)return;let i=Ht(t);i.ox<<=1,i.oy<<=1;for(let t of c.gops(i,2*e)){let e=c.instantiate(t);if(e.rank>3)continue;let i=e.v%2==0;if(e.ox==e.oy&&i)continue;let{ox:s,oy:n,u:r,v:o}=e.shrink(2),h=Math.abs(s-n)/2;if(!Number.isInteger(h))debugger;let l,a=Math.min(s,n);if(i&&s>=n)e.detours=[[{x:h,y:3*h},{x:n+r+o,y:s+r+o}]],l={ox:a,oy:a,u:o,v:r-h,detours:[[{x:a+r+o-h,y:a+r+o-h},{x:0,y:0}]],shift:{x:h,y:3*h}};else{if(i||!(n>=s))continue;e.detours=[[{x:n+r+o,y:s+r+o},{x:3*h,y:h}]],l={ox:a,oy:a,u:o-h,v:r,detours:[[{x:0,y:0},{x:a+r+o-h,y:a+r+o-h}]],shift:{x:3*h,y:h}}}let d=new Dt({pieces:[e,l]}),u=d.reverseGPS();yield d.addSlack(2,.5),yield u.addSlack(0,.5)}}}class a{get axisParallels(){let t=this.shape.contour.find((t=>t.isIntegral)),e=this.direction,i=e.rotate90().normalize(),s=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY;for(let e of this.shape.contour){let r=e.sub(t).dot(i);r>n&&(n=r),rt.addBy(this._shift))),n}get _shift(){var t,e,i,s,n,r,o,h;return new R((null!==(e=null===(t=this.shift)||void 0===t?void 0:t.x)&&void 0!==e?e:0)+(null!==(s=null===(i=this._offset)||void 0===i?void 0:i.x)&&void 0!==s?s:0),(null!==(r=null===(n=this.shift)||void 0===n?void 0:n.y)&&void 0!==r?r:0)+(null!==(h=null===(o=this._offset)||void 0===o?void 0:o.y)&&void 0!==h?h:0))}get shape(){let t=this._points.concat(),e=t.map(((t,e,i)=>new Ct(t,i[(e+1)%i.length])));return(this.detours||[]).forEach((i=>{let s=i.map((t=>new T(t.x,t.y).addBy(this._shift))),n=s[0],r=s[s.length-1],o=[];for(let t=0;te.eq(t[0])))?t[0]:null,e.includes(t[1])?t[1]:null,e.some((e=>e.eq(t[2])))?t[2]:null,e.includes(t[3])?t[3]:null]}get direction(){let{oy:t,v:e}=this;return new R(t+e,e).doubleAngle()}get sx(){return this.oy+this.u+this.v}get sy(){return this.ox+this.u+this.v}get rank(){let t=Ft.reduce(this.oy+this.v,this.oy)[0],e=Ft.reduce(this.ox+this.u,this.ox)[0];return Math.max(t,e)}reverse(t,e){let{shift:i,detours:s,sx:n,sy:r}=this;i=i||{x:0,y:0};let o={x:t-n-i.x,y:e-r-i.y};(o.x||o.y)&&(this.shift=o),null==s||s.forEach((t=>t.forEach((t=>{t.x=n-t.x,t.y=r-t.y}))))}shrink(t=2){return h.delete(this),this.ox/=t,this.oy/=t,this.u/=t,this.v/=t,this}offset(t){!t||this._offset&&this._offset.x==t.x&&this._offset.y==t.y||(this._offset=t,h.delete(this))}addDetour(t){t=Ht(t);for(let e=0;e!Number.isSafeInteger(t))))return;if(i%2&&s%2)return;void 0===e&&(e=Number.POSITIVE_INFINITY);let n=i*s/2;for(let t,r=Math.floor(Math.sqrt(n));r>0&&r+(t=n/r)+s<=e;r--)if(n%r==0&&(r==t&&(yield{ox:i,oy:s,u:r,v:t}),r!=t)){let e=new c({ox:i,oy:s,u:r,v:t}),n=new c({ox:i,oy:s,u:t,v:r});e.rank>n.rank?(yield n,yield e):(yield e,yield n)}}static instantiate(t,e=!1){return t instanceof c&&!e?t:new c(t)}}t([o],c.prototype,"_points",null),t([function(t,e,i){if(i)return i.enumerable=!1,i;Object.defineProperty(t,e,{set(t){Object.defineProperty(this,e,{value:t,writable:!0,configurable:!1})},configurable:!0})}],c.prototype,"_offset",void 0),t([o],c.prototype,"_shift",null),t([o],c.prototype,"shape",null),t([o],c.prototype,"anchors",null),t([o],c.prototype,"direction",null),t([o],c.prototype,"rank",null);class u extends a{constructor(t){super(),this.contour=t.contour,this.dir=t.dir}get shape(){let t=this.contour.map((t=>new T(t))),e=t.map(((t,e,i)=>new Ct(t,i[(e+1)%i.length])));return{contour:t,ridges:e}}get direction(){return new R(this.dir)}static instantiate(t){return t instanceof u?t:new u(t)}}t([o],u.prototype,"shape",null),t([o],u.prototype,"direction",null);let p=class{constructor(){this._map=new Map,this._size=0}set(t,e,i){return this.has(t,e)||(this._map.has(t)||this._map.set(t,new Map),this._map.has(e)||this._map.set(e,new Map),this._size++),this._map.get(t).set(e,i),this._map.get(e).set(t,i),this}get[Symbol.toStringTag](){return"DoubleMap"}has(...t){return this._size,1==t.length?this._map.has(t[0]):this._map.has(t[0])&&this._map.get(t[0]).has(t[1])}get(...t){return this._size,1==t.length?this._map.get(t[0]):this.has(t[0],t[1])?this._map.get(t[0]).get(t[1]):void 0}get size(){return this._size}clear(){this._map.clear(),this._size=0}forEach(t,e){e||(e=this);for(let[i,s,n]of this.entries())t.apply(e,[n,i,s,this])}delete(...t){if(1==t.length){if(!this._map.has(t[0]))return!1;this._size-=this._map.get(t[0]).size,this._map.delete(t[0]);for(let e of this._map.values())e.delete(t[0]);return!0}return!!this.has(t[0],t[1])&&(this._map.get(t[0]).delete(t[1]),this._map.get(t[1]).delete(t[0]),this._size--,!0)}[Symbol.iterator](){return this.entries()}*entries(){for(let[t,e]of this.keys())yield[t,e,this.get(t,e)]}*keys(){this._size;let t=new Map;for(let e of this._map.keys()){t.set(e,new Set);for(let i of this._map.get(e).keys())t.has(i)&&t.get(i).has(e)||(t.get(e).add(i),yield[e,i])}}firstKeys(){return this._size,this._map.keys()}*values(){for(let[t,e]of this.keys())yield this.get(t,e)}};t([e],p.prototype,"_size",void 0),p=t([e],p);class g{constructor(t,e,i,s){this.source=t,this.keyGen=e,this.ctor=i,this.dtor=s,this._map=new Map}render(){for(let[t,e]of this._map)this.dtor(t,e)&&this._map.delete(t);for(let t of this.source()){let e=this.keyGen(t);this._map.has(e)||this._map.set(e,this.ctor(t))}return new Map(this._map)}get(t){return this.render().get(t)}has(t){return this.render().has(t)}forEach(t,e){return this.render().forEach(t,e)}get size(){return this.render().size}[Symbol.iterator](){return this.render()[Symbol.iterator]()}entries(){return this.render().entries()}keys(){return this.render().keys()}values(){return this.render().values()}toJSON(){return Array.from(this.values()).map((t=>t.toJSON()))}}t([e],g.prototype,"render",null);let f=class{constructor(t,e){this._source=t,this._constructor=e,this._map=new p}dispose(){Shrewd.terminate(this._map),Shrewd.terminate(this)}has(...t){return this._map.has.apply(this._map,t)}get(...t){return this._map.get.apply(this._map,t)}get size(){return this._map.size}forEach(t,e){return this._map.forEach(t,e)}[Symbol.iterator](){return this._map[Symbol.iterator]()}entries(){return this._map.entries()}keys(){return this._map.keys()}firstKeys(){return this._map.firstKeys()}values(){return this._map.values()}};t([e({renderer(t){for(let e of t.firstKeys())e.disposed&&t.delete(e);let e=Array.from(this._source());e.length>1&&0==t.size&&t.set(e[0],e[1],this._constructor(e[0],e[1]));for(let i of e)if(!t.has(i)){let e=Array.from(t.firstKeys());for(let s of e)t.set(i,s,this._constructor(i,s))}return t}})],f.prototype,"_map",void 0),f=t([e],f),window.BigInt=window.BigInt||(t=>t);const y=BigInt(1);class v{constructor(t,e=1){if(t instanceof v)this._p=t._p,this._q=t._q*BigInt(e);else if("bigint"==typeof t&&"bigint"==typeof e)this._p=t,this._q=e;else if("bigint"==typeof t&&1===e)this._p=t,this._q=y;else{if("number"!=typeof t||"number"!=typeof e){debugger;throw new Error("Parameters are not valid")}if(Number.isSafeInteger(t)&&Number.isSafeInteger(e))this._p=BigInt(t),this._q=BigInt(e);else{if(!Number.isFinite(t/e)){debugger;throw new Error("Parameters are not valid")}{let i=v.toFraction(t/e);this._p=i._p,this._q=i._q}}}}static toFraction(t,e=1,i=0,s=v.ERROR){let n=Math.floor(t),r=t-n,o=n*i+e;return r/o/((1-r)*o+i)1?"/"+this._q:"")}c(){return new v(this._p,this._q)}smp(){return[this._p,this._q]=Ft.reduce(this._p,this._q),this._check()}n(){return this._p=-this._p,this}i(){return[this._p,this._q]=[this._q,this._p],this}r(){return this._p=BigInt(Math.round(this.value)),this._q=y,this}a(t){return t instanceof v?(this._p=this._p*t._q+this._q*t._p,this._q*=t._q):Number.isInteger(t)?this._p+=BigInt(t)*this._q:this.a(new v(t)),this}s(t){return t instanceof v?(this._p=this._p*t._q-this._q*t._p,this._q*=t._q):Number.isInteger(t)?this._p-=BigInt(t)*this._q:this.s(new v(t)),this}m(t){return t instanceof v?(this._p*=t._p,this._q*=t._q):Number.isInteger(t)?this._p*=BigInt(t):this.m(new v(t)),this._check()}d(t){return t instanceof v?(this._p*=t._q,this._q*=t._p):Number.isInteger(t)?this._q*=BigInt(t):this.d(new v(t)),this._check()}_check(){return this._q<0&&(this._q=-this._q,this._p=-this._p),this}get neg(){return this.c().n()}get inv(){return this.c().i()}add(t){return this.c().a(t)}sub(t){return this.c().s(t)}mul(t){return this.c().m(t)}div(t){return this.c().d(t)}eq(t){return t instanceof v?this._p*t._q==this._q*t._p:this._p==this._q*BigInt(t)}ne(t){return t instanceof v?this._p*t._q!=this._q*t._p:Number.isSafeInteger(t)?this._p!=this._q*BigInt(t):this.ne(new v(t))}lt(t){return t instanceof v?this._p*t._qthis._q*t._p:Number.isSafeInteger(t)?this._p>this._q*BigInt(t):this.gt(new v(t))}le(t){return t instanceof v?this._p*t._q<=this._q*t._p:Number.isSafeInteger(t)?this._p<=this._q*BigInt(t):this.le(new v(t))}ge(t){return t instanceof v?this._p*t._q>=this._q*t._p:Number.isSafeInteger(t)?this._p>=this._q*BigInt(t):this.ge(new v(t))}toJSON(){return this.toString()}}v.ERROR=1e-12;class _ extends l{constructor(t,e){super(t,e),this.cornerMap=[];for(let[t,i]of e.overlaps.entries())for(let[e,s]of i.c.entries())this.cornerMap.push([s,t,e])}get intersectionCorners(){return this.cornerMap.filter((t=>{let e=t[0].type;return e==mt.side||e==mt.intersection}))}get outCorners(){return this.intersectionCorners.concat(this.cornerMap.filter((t=>t[0].type==mt.flap)))}get constraints(){return this.cornerMap.filter((t=>{let e=t[0].type;return e==mt.socket||e==mt.internal||e==mt.flap}))}getOriginalDisplacement(t){let e=this.overlaps.find((t=>t.c[0].type!=mt.coincide));return t.getConnectionTarget(e.c[0]).sub(this.configuration.repository.stretch.origin)}get _sideConnectionTarget(){let t=new Map,e=this.configuration.sheet.design.flapsById;for(let[i,s,n]of this.intersectionCorners){let r=this.overlaps[s],o=this.getParent(r),[h,l]=[o.c[0],o.c[2]],[a,d]=[e.get(h.e),e.get(l.e)],c=a.quadrants[h.q],u=0,p=d.quadrants[l.q],g=0;if(i.type==mt.intersection){let t=r.c[0].e<0,e=this.configuration.sheet.design.tree,s=e.node.get(i.e),n=e.distTriple(a.node,d.node,s);if(t?g=n.d2-d.radius:u=n.d1-a.radius,isNaN(u)||isNaN(g))debugger}r=this.getExposedOverlap(r);let f=c.getOverlapCorner(r,o,n,u),y=p.getOverlapCorner(r,o,It(n),g);t.set(i,[f,y])}return t}getExposedOverlap(t){var e;if(1==this.overlaps.length)return t;let i=Ht(t),s=this.getParent(t);i.shift=null!==(e=i.shift)&&void 0!==e?e:{x:0,y:0};for(let e of this.overlaps)if(e!=t){let t=this.getParent(e),n=i.ox+i.shift.x,r=i.oy+i.shift.y;t.c[0].e==s.c[0].e&&(t.ox0){t.overlaps=Ht(t.overlaps);for(let i of t.overlaps)for(let t of i.c)void 0!==t.e&&t.e>=0&&(t.e=e.get(t.e))}return t}}t([o],_.prototype,"intersectionCorners",null),t([o],_.prototype,"outCorners",null),t([o],_.prototype,"constraints",null),t([e],_.prototype,"_sideConnectionTarget",null);let x=class extends g{constructor(t,e){super(t,(t=>t),e,((t,e)=>e.disposed))}};x=t([e],x);let m=class extends g{constructor(t,e,i){super(t,e,i,((t,e)=>e.disposed))}};m=t([e],m);class w extends d{constructor(t){super(),this._oldStudio=null,this.mountTarget=t}get shouldDispose(){return super.shouldDispose||this.mountTarget instanceof w&&this.mountTarget.disposed}get $studio(){return this.disposed||!this.isActive?null:this.mountTarget instanceof w?this.mountTarget.$studio:this.mountTarget}mountEvents(){this.$studio!==this._oldStudio&&(this.$studio&&this.onMount(this.$studio),this._oldStudio&&this.onDismount(this._oldStudio),this._oldStudio=this.$studio)}onDispose(){this._oldStudio&&this.onDismount(this._oldStudio),super.onDispose()}get isActive(){return!0}static isActive(t){return t.isActive}onMount(t){}onDismount(t){}}t([e],w.prototype,"$studio",null),t([e],w.prototype,"mountEvents",null);let b=class extends d{constructor(t,e){for(super(t),this.node=new Map,this.edge=new p,this.path=new f((()=>this.node.values()),((t,e)=>new k(t,e))),this.nextId=0,this.jidMap=new Map,this.design=t;null==e?void 0:e.length;){let t=[],i=!1;for(let s of e)this.addEdge(s.n1,s.n2,s.length)?i=!0:t.push(s);if(!i)break;e=t}}onDispose(){Shrewd.terminate(this.edge),this.path.dispose()}get leaf(){var t=new Set;for(let e of this.node.values())1==e.degree&&t.add(e);return t}generateJID(){let t=Array.from(this.node.values()).sort(((t,e)=>t.id-e.id)),e=0;for(let i of t)this.jidMap.set(i.id,i.jid=e++)}dist(t,e){let i=this.path.get(t,e);return i?i.length:NaN}getOrAddNode(t){let e;return this.node.has(t)?e=this.node.get(t):(this.node.set(t,e=new P(this,t)),t>=this.nextId&&(this.nextId=t+1)),e}split(t){let e=this.getOrAddNode(this.nextId),{n1:i,n2:s}=t;return this.edge.delete(i,s),this.edge.set(e,i,new N(e,i,Math.ceil(t.length/2))),this.edge.set(e,s,new N(e,s,Math.max(Math.floor(t.length/2),1))),t.dispose(),e}deleteAndMerge(t){let e=this.getOrAddNode(this.nextId),{n1:i,n2:s,a1:n,a2:r}=t;this.edge.delete(i,s);for(let t of n){let s=t.n(i);this.edge.delete(s,i),this.edge.set(e,s,new N(e,s,t.length))}for(let t of r){let i=t.n(s);this.edge.delete(i,s),this.edge.set(e,i,new N(e,i,t.length))}return i.dispose(!0),s.dispose(!0),e}deleteAndJoin(t){let e=t.edges;if(2!=e.length)return void console.warn(`Incorrectly calling delete-and-join at [${t.id}].`);let i=e[0],s=e[1],n=i.n(t),r=s.n(t),o=new N(n,r,i.length+s.length);return this.edge.set(n,r,o),t.dispose(!0),o}addLeafAt(t,e){let i=this.nextId;return this.addEdge(t,i,e),this.node.get(i)}addEdge(t,e,i){let s=this.node.has(t),n=this.node.has(e);if(0!=this.node.size&&!s&&!n)return console.warn(`Adding edge (${t},${e}) disconnects the graph.`),!1;let r=this.getOrAddNode(t),o=this.getOrAddNode(e);if(this.edge.has(r,o))return this.edge.get(r,o).length=i,!1;if(s&&n)return console.warn(`Adding edge (${t},${e}) will cause circuit.`),!1;let h=new N(r,o,i);return this.edge.set(r,o,h),!0}distTriple(t,e,i){let s=this.dist(t,e),n=this.dist(t,i),r=this.dist(e,i),o=(s+n+r)/2;return{d1:o-r,d2:o-n,d3:o-s}}};t([e({renderer(t){for(let[e,i]of t)i.disposed&&t.delete(e);return t}})],b.prototype,"node",void 0),t([e({renderer(t){for(let e of t.firstKeys())e.disposed&&t.delete(e);return t}})],b.prototype,"edge",void 0),t([e],b.prototype,"leaf",null),b=t([e],b);class S{constructor(...t){void 0===t[1]&&(t=[t[0]._x,t[0]._y]),this._x=new v(t[0]),this._y=new v(t[1])}get x(){return this._x.value}set x(t){this._x=new v(t)}get y(){return this._y.value}set y(t){this._y=new v(t)}smp(){return this._x.smp(),this._y.smp(),this}eq(t){return!!t&&(this._x.eq(t._x)&&this._y.eq(t._y))}clone(){return new this.constructor(this._x,this._y)}toString(){return"("+this._x+", "+this._y+")"}toJSON(){return this.toString()}set(t,e=0){return t instanceof S?(this._x=new v(t._x),this._y=new v(t._y)):(this._x=new v(t),this._y=new v(e)),this}add(t){return new this.constructor(this._x.add(t._x),this._y.add(t._y)).smp()}addBy(t){return this._x.a(t._x),this._y.a(t._y),this.smp()}round(t=1){return this._x.d(t).r().m(t),this._y.d(t).r().m(t),this.smp()}range(t,e,i,s){return this._x.lt(t)&&(this._x=new v(t)),this._x.gt(e)&&(this._x=new v(e)),this._y.lt(i)&&(this._y=new v(i)),this._y.gt(s)&&(this._y=new v(s)),this}toIPoint(){return{x:this.x,y:this.y}}}class M extends w{constructor(t,e){if(super(t),this.id=M._id++,this.dragging=!1,this.edges=new x((()=>this.tree.edge.values()),(t=>new ot(this.TreeSheet,this.vertices.get(t.n1),this.vertices.get(t.n2),t))),this.rivers=new x((()=>[...this.tree.edge.values()].filter((t=>t.isRiver))),(t=>new lt(this.LayoutSheet,t))),this.vertices=new x((()=>this.tree.node.values()),(t=>new nt(this.TreeSheet,t))),this.flaps=new x((()=>this.tree.leaf),(t=>new it(this.LayoutSheet,t))),this.junctions=new f((()=>this.flaps.values()),((t,e)=>new ht(this.LayoutSheet,t,e))),this.stretches=new x((()=>this.teams.keys()),(t=>new A(this.LayoutSheet,t))),this.data=zt(ct.getSample(),e),this.data.tree.nodes.length<3)throw new Error("Invalid format.");this.options=new pt(this.data),this.history=new dt(this)}sortJEdge(){let t=this.edges.toJSON();if(0==t.length)return[];let e=new Set,i=[];for(;t.length;){let s=t.shift();0==e.size||e.has(s.n1)||e.has(s.n2)?(i.push(s),e.add(s.n1),e.add(s.n2)):t.push(s)}return i}get isActive(){return this instanceof E&&this.mountTarget.design==this}get patternNotFound(){return[...this.stretches.values()].some((t=>t.isTotallyValid&&null==t.pattern))}onDispose(){Shrewd.terminate(this.edges),Shrewd.terminate(this.vertices),Shrewd.terminate(this.rivers),Shrewd.terminate(this.flaps),Shrewd.terminate(this.stretches),this.junctions.dispose()}get validJunctions(){return[...this.junctions.values()].filter((t=>t.isValid))}get teams(){let t,e=new Set(this.activeJunctions),i=new Map;function s(i){if(e.has(i)){t.push(i),e.delete(i);for(let t of i.neighbors)s(t)}}for(;e.size>0;)t=[],s(e.values().next().value),t.sort(ht.sort),i.set(ht.createTeamId(t,(t=>t.node.id)),t);return i}get devices(){let t=[];for(let e of this.stretches.values())t.push(...e.devices);return t}get activeJunctions(){return this.validJunctions.filter((t=>!t.isCovered))}get junctionsByQuadrant(){return M.ToQuadrantMap(this.junctions.values())}get activeJunctionsByQuadrant(){return M.ToQuadrantMap(this.activeJunctions)}static ToQuadrantMap(t){let e=new Map;function i(t,i){let s=e.get(t);s||e.set(t,s=[]),s.push(i)}for(let e of t)i(e.q1,e),i(e.q2,e);return e}get stretchByQuadrant(){let t=new Map;for(let e of this.stretches.values())if(e.isActive)for(let i of e.junctions)t.set(i.q1,e),t.set(i.q2,e);return t}getStretchByQuadrant(t){var e;return null!==(e=this.stretchByQuadrant.get(t))&&void 0!==e?e:null}get flapsById(){let t=new Map;for(let e of this.flaps.values())t.set(e.node.id,e);return t}get openAnchors(){let t=new Map;for(let e of this.activeStretches){let i=e.fx*e.fy;for(let s of e.pattern.devices)for(let e of s.openAnchors){let s=i+","+(e.x-i*e.y),n=t.get(s);n||t.set(s,n=[]),n.push(e)}}return t}get activeStretches(){return[...this.stretches.values()].filter((t=>t.isActive&&!!t.pattern))}get overflow(){return Math.max(...[...this.flaps.values(),...this.edges.values(),...this.vertices.values()].map((t=>t.view.overflow)))}}M._id=0,t([e],M.prototype,"dragging",void 0),t([e],M.prototype,"isActive",null),t([e],M.prototype,"patternNotFound",null),t([e],M.prototype,"validJunctions",null),t([e],M.prototype,"teams",null),t([e],M.prototype,"devices",null),t([e],M.prototype,"activeJunctions",null),t([e],M.prototype,"junctionsByQuadrant",null),t([e],M.prototype,"activeJunctionsByQuadrant",null),t([e],M.prototype,"stretchByQuadrant",null),t([e],M.prototype,"flapsById",null),t([e],M.prototype,"openAnchors",null),t([e],M.prototype,"activeStretches",null),t([e],M.prototype,"overflow",null);class q extends w{constructor(t){super(t),this.sheet=t}get design(){return this.sheet.design}}let I=class extends w{constructor(t,e,...i){super(t),this._activeControlCache=[],this._independentRect=new Et(T.ZERO,T.ZERO),this.width=e.width,this.height=e.height,this.scale=e.scale,this._controlMaps=i,this.view=new V(this)}get controls(){var t=[];for(let e of this._controlMaps)t.push(...e());return t}get activeControls(){return this.design.dragging||(this._activeControlCache=this.controls.filter((t=>w.isActive(t)))),this._activeControlCache}constraint(t,e){return t.range(-e.x,this.width-e.x,-e.y,this.height-e.y)}get design(){return this.mountTarget}get isActive(){return this.design.sheet==this}get displayScale(){return this.$studio?this.$studio.$display.scale:1}toJSON(){return{width:this.width,height:this.height,scale:this.scale}}get size(){return Math.max(this.width,this.height)}contains(t){return 0<=t.x&&t.x<=this.width&&0<=t.y&&t.y<=this.height}get independents(){return this.controls.filter((t=>t instanceof U))}_getIndependentRect(){let t=Number.POSITIVE_INFINITY,e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,s=Number.NEGATIVE_INFINITY;for(let n of this.independents){let r=n.location;r.xi&&(i=r.x),r.ys&&(s=r.y)}this._independentRect=new Et(new T(t,e),new T(i,s))}};t([e],I.prototype,"controls",null),t([e],I.prototype,"activeControls",null),t([s({validator(t){let e=t>=8&&t>=this._independentRect.width,i=t-this._independentRect.right;if(e&&i<0)for(let t of this.independents)t.location.x+=i;return e}})],I.prototype,"width",void 0),t([s({validator(t){let e=t>=8&&t>=this._independentRect.height,i=t-this._independentRect.top;if(e&&i<0)for(let t of this.independents)t.location.y+=i;return e}})],I.prototype,"height",void 0),t([s({validator(t){var e,i;return t>=Math.min(10,Math.ceil(null!==(i=null===(e=this.$studio)||void 0===e?void 0:e.$display.getAutoScale())&&void 0!==i?i:10))}})],I.prototype,"scale",void 0),t([e],I.prototype,"isActive",null),t([e],I.prototype,"displayScale",null),t([e],I.prototype,"size",null),t([e],I.prototype,"independents",null),t([e],I.prototype,"_getIndependentRect",null),I=t([e],I);class C extends w{constructor(){super(...arguments),this._paths=[]}draw(){this.mountEvents(),this.$studio&&(this.$studio.$display.render(),this.render())}$addItem(t,e){this._paths.push([t,e])}onMount(t){for(let[e,i]of this._paths)t.$display.project.layers[e].addChild(i)}onDismount(t){for(let[t,e]of this._paths)e.remove()}contains(t){return!1}}t([e],C.prototype,"draw",null);let P=class extends d{constructor(t,e){super(t),this.name="",this.tree=t,this.id=e}get shouldDispose(){return super.shouldDispose||this.tree.disposed}dispose(t=!1){if(t||1==this.degree)super.dispose();else{if(2==this.degree)return this.tree.deleteAndJoin(this);1!=this.degree&&console.warn(`Node [${this.name?this.name:this.id}] is not a leaf.`)}}addLeaf(t){return this.tree.addLeafAt(this.id,t)}get design(){return this.tree.design}get edges(){let t=this.tree.edge.get(this);return t?Array.from(t.values()):[]}get degree(){return this.edges.length}get firstEdge(){return this.edges[0]}get radius(){return 1==this.degree?this.edges[0].length:NaN}};t([s],P.prototype,"name",void 0),t([e],P.prototype,"edges",null),t([e],P.prototype,"degree",null),t([e],P.prototype,"firstEdge",null),t([e],P.prototype,"radius",null),P=t([e],P);let N=class extends d{constructor(t,e,i){super(),this._n1=t,this._n2=e,this.length=i}get design(){return this.n1.design}get shouldDispose(){return super.shouldDispose||this._n1.disposed||this._n2.disposed}get isRiver(){return this.g1.length>1&&this.g2.length>1}adjacentEdges(t){return t.edges.filter((t=>t!=this))}get a1(){return this.adjacentEdges(this._n1)}get a2(){return this.adjacentEdges(this._n2)}group(t,e){let i=[t];for(let s of e)i.push(...s.g(t));return i}get g1(){return this.group(this._n1,this.a1)}get g2(){return this.group(this._n2,this.a2)}g(t){return t==this._n1?this.g2:this.g1}get l1(){return this.g1.filter((t=>1==t.degree))}get l2(){return this.g2.filter((t=>1==t.degree))}get t1(){return this.a1.map((t=>t.t(this._n1)+t.length)).reduce(((t,e)=>t+e),0)}get t2(){return this.a2.map((t=>t.t(this._n2)+t.length)).reduce(((t,e)=>t+e),0)}t(t){return t==this._n1?this.t2:this.t1}get p1(){return Math.max(...this.l1.map((t=>t.tree.dist(t,this.n1))))}get p2(){return Math.max(...this.l2.map((t=>t.tree.dist(t,this.n2))))}get wrapSide(){return this.isRiver?this.p1>this.p2?2:this.p1this.t2?2:this.t1this.g2.length?1:this.g1.lengtht>0})],N.prototype,"length",void 0),t([e],N.prototype,"isRiver",null),t([e],N.prototype,"a1",null),t([e],N.prototype,"a2",null),t([e],N.prototype,"g1",null),t([e],N.prototype,"g2",null),t([e],N.prototype,"l1",null),t([e],N.prototype,"l2",null),t([e],N.prototype,"t1",null),t([e],N.prototype,"t2",null),t([e],N.prototype,"p1",null),t([e],N.prototype,"p2",null),t([e],N.prototype,"wrapSide",null),N=t([e],N);let k=class extends d{constructor(t,e){super(),this._n1=t,this._n2=e}get shouldDispose(){return super.shouldDispose||this._n1.disposed||this._n2.disposed}get edges(){let t=[],e=this._n1,i=!0;for(;e!=this._n2&&i;){i=!1;for(let s of e.edges)if(s.g(e).includes(this._n2)){i=!0,t.push(s),e=s.n(e);break}}return t}get length(){return this.edges.reduce(((t,e)=>t+e.length),0)}};t([e],k.prototype,"edges",null),t([e],k.prototype,"length",null),k=t([e],k);class T extends S{static get ZERO(){return new T(0,0)}constructor(...t){void 0===t[1]?super(t[0].x,t[0].y):super(...t)}dist(t){return this.sub(t).length}paramDist(t){return Math.max(Math.abs(t.x-this.x),Math.abs(t.y-this.y))}sub(t){return t instanceof R?new T(this._x.sub(t._x),this._y.sub(t._y)).smp():t instanceof T?new R(this._x.sub(t._x),this._y.sub(t._y)).smp():new R(this._x.sub(t.x),this._y.sub(t.y)).smp()}subBy(t){return this._x.s(t.x),this._y.s(t.y),this}diagonalXRange(t,e,i){this._x.lt(t)&&this.setDiagonalX(t,i),this._x.gt(e)&&this.setDiagonalX(e,i)}toPaper(){return new paper.Point(this.x,this.y)}setDiagonalX(t,e){var i=this._x.sub(t);this._x.s(i),e?this._y.a(i):this._y.s(i)}eq(t){return t instanceof T||!t?super.eq(t):this.x==t.x&&this.y==t.y}get isIntegral(){return this._x.$denominator===y&&this._y.$denominator===y}transform(t,e){return new T(this._x.mul(t),this._y.mul(e))}}class R extends S{static get ZERO(){return new R(0,0)}constructor(...t){void 0===t[1]?super(t[0].x,t[0].y):super(...t)}get length(){return Math.sqrt(this.dot(this))}get slope(){return this._y.div(this._x)}rotate90(){return new R(this._y.neg,this._x)}normalize(){return this.scale(new v(this.length).inv)}scale(t,e){return t instanceof S?this.scale(t._x,t._y):(e||(e=t),new R(this._x.mul(t),this._y.mul(e)).smp())}dot(t){return this._x.mul(t._x).a(this._y.mul(t._y)).value}get neg(){return new R(this._x.neg,this._y.neg)}get angle(){return Math.atan2(this.y,this.x)}reduce(){let[t,e]=[this._x.$numerator,this._y.$numerator],[i,s]=[this._x.$denominator,this._y.$denominator],[n,r]=Ft.reduce(t*s,e*i);return new R(Number(n),Number(r))}doubleAngle(t=1){let{x:e,y:i}=this.reduce();return[e,i]=Ft.reduce(e*e-i*i,2*e*i),new R(t*e,t*i)}parallel(t){return this._x.mul(t._y).eq(this._y.mul(t._x))}static bisector(t,e){let[i,s]=Ft.reduce(t.x,t.y),[n,r]=Ft.reduce(e.x,e.y),o=Math.sqrt(i*i+s*s),h=Math.sqrt(n*n+r*r);return new R(i*h+n*o,s*h+r*o)}}let E=class extends M{constructor(t,e){super(t,e),this.LayoutSheet=new I(this,this.data.layout.sheet,(()=>this.flaps.values()),(()=>this.rivers.values()),(()=>this.stretches.values()),(()=>this.devices)),this.TreeSheet=new I(this,this.data.tree.sheet,(()=>this.edges.values()),(()=>this.vertices.values())),this.title=this.data.title,this.fullscreen=this.data.fullscreen,this.description=this.data.description,this.mode=this.data.mode,this.tree=new b(this,this.data.tree.edges)}get sheet(){return"layout"==this.mode?this.LayoutSheet:this.TreeSheet}get design(){return this}toJSON(){this.tree.generateJID();let t={title:this.title,description:this.description,fullscreen:this.fullscreen,version:ct.current,mode:this.mode,layout:{sheet:this.LayoutSheet.toJSON(),flaps:this.flaps.toJSON(),stretches:this.stretches.toJSON()},tree:{sheet:this.TreeSheet.toJSON(),nodes:this.vertices.toJSON(),edges:this.sortJEdge()}};return this.tree.jidMap.clear(),t}deleteVertices(t){this.history.takeAction((()=>{let e=t.concat().sort(((t,e)=>t.node.degree-e.node.degree));for(;this.vertices.size>3;){let t=e.find((t=>1==t.node.degree));if(!t)break;t.node.dispose(),e.splice(e.indexOf(t),1),Shrewd.commit()}}))}deleteFlaps(t){this.history.takeAction((()=>{for(let e of t){if(3==this.vertices.size)break;e.node.dispose(),Shrewd.commit()}}))}clearCPSelection(){for(let t of this.LayoutSheet.controls)t.selected=!1}clearTreeSelection(){for(let t of this.TreeSheet.controls)t.selected=!1}flapToVertex(t){this.clearTreeSelection();for(let e of t){let t=this.vertices.get(e.node);t&&(t.selected=!0)}this.mode="tree"}vertexToFlap(t){this.clearCPSelection();for(let e of t){let t=this.flaps.get(e.node);t&&(t.selected=!0)}this.mode="layout"}riverToEdge(t){this.clearTreeSelection();let e=this.edges.get(t.edge);e&&(e.selected=!0),this.mode="tree"}edgeToRiver(t){this.clearCPSelection();let e=t.edge;if(e.isRiver){let t=this.rivers.get(e);t&&(t.selected=!0)}else{let t=1==e.n1.degree?e.n1:e.n2,i=this.flaps.get(t);i&&(i.selected=!0)}this.mode="layout"}};t([e],E.prototype,"fullscreen",void 0),t([e],E.prototype,"mode",void 0),t([s],E.prototype,"description",void 0),t([s],E.prototype,"title",void 0),t([e],E.prototype,"sheet",null),E=t([e],E);class O extends q{constructor(){super(...arguments),this.selected=!1}selectableWith(t){return!1}get dragSelectAnchor(){return null}toggle(){this.selected=!this.selected}contains(t){return!1}static isDragSelectable(t){return null!=t.dragSelectAnchor}}var j;t([e],O.prototype,"selected",void 0);let D=j=class extends q{constructor(t,e,i){super(t),this.flap=e,this.q=i,this.qv=j.QV[i],this.sv=j.SV[i],this.pv=j.SV[(i+1)%4],this.fx=0==this.q||3==this.q?1:-1,this.fy=0==this.q||1==this.q?1:-1}getOverlapCorner(t,e,i,s){var n,r,o,h;let l=this.flap.radius+s,a=null!==(r=null===(n=t.shift)||void 0===n?void 0:n.x)&&void 0!==r?r:0,d=null!==(h=null===(o=t.shift)||void 0===o?void 0:o.y)&&void 0!==h?h:0;return this.flap.node.id!=e.c[0].e&&(a=e.ox-(t.ox+a),d=e.oy-(t.oy+d)),new T(this.x(l-(3==i?0:t.ox)-a),this.y(l-(1==i?0:t.oy)-d))}makeContour(t){let e,i=this.flap.radius+t,s=this.sv.scale(i),n=this.getStart(i),r=this.point.add(s.rotate90()),o=this.pattern;if(o){let t=o.linesForTracing[this.q].concat(),s=o.stretch.junctions,h=this.findNextDelta(s,!1),l=new Set,a=this.findLead(s,i,t,l),d=a?this.findNextDelta(s,!0):void 0;e=kt.create(t,null!=a?a:n,this.pv,l,null!=h?h:new Ct(r,this.pv),d),d&&this.outside(e[0],i,this.q%2!=1)&&e.unshift(this.q%2?d.yIntersection(this.y(i)):d.xIntersection(this.x(i))),h&&this.outside(e[e.length-1],i,this.q%2==1)&&e.push(this.q%2?h.xIntersection(this.x(i)):h.yIntersection(this.y(i)))}else e=[n,this.point.add(this.qv.scale(i))];return e.map((t=>t.toPaper()))}outside(t,e,i){return i?t.x*this.fx>this.x(e)*this.fx:t.y*this.fy>this.y(e)*this.fy}getStart(t){return this.point.add(this.sv.scale(t))}y(t){return this.point.y+this.fy*t}x(t){return this.point.x+this.fx*t}findNextDelta(t,e){let i=this.findJoinNextQ(t,e,!0);if(!i)return;let{joinQ:s,nextQ:n,mode:r}=i,{d1:o,d2:h}=this.design.tree.distTriple(this.flap.node,n.flap.node,s.flap.node),l=r?new T(n.x(h),this.y(o)):new T(this.x(o),n.y(h));return new Ct(l,this.qv)}findJoinNextQ(t,e,i){if(1==t.length)return;let s,n=!!(this.q%2)==e,r=n?"oy":"ox",o=ht.findMinMax(t.filter((t=>t.q1==this||t.q2==this)),r,-1),h=o.q1==this?o.q2:o.q1;if(1!=h.activeJunctions.length){if(i){let t=h.activeJunctions.concat().sort(((t,e)=>t[r]-e[r]));if(s=t[t.indexOf(o)+1],!s)return}else if(s=ht.findMinMax(h.activeJunctions,r,1),s==o)return;return{joinQ:h,nextQ:s.q1==h?s.q2:s.q1,mode:n}}}findLead(t,e,i,s){var n;let r=this.findJoinNextQ(t,!0,!1);if(!r)return;let{joinQ:o,nextQ:h}=r,l=this.design.junctions.get(this.flap,h.flap).status==vt.tooFar,a=this.design.tree.distTriple(this.flap.node,h.flap.node,o.flap.node);if(e<=a.d1&&(l||e!=a.d1))return;let d=e-a.d1+a.d2,c=this.q%2?new T(h.x(d),this.y(e)):new T(this.x(e),h.y(d));return s.add(c.toString()),null!==(n=h.findLead(t,d,i,s))&&void 0!==n?n:h.getStart(d)}getOverriddenPath(t){let e=[];if(this.pattern)return e;let i=this.flap.radius+t;for(let[t,s]of this.coveredJunctions){let{ox:n,oy:r}=t,o=this.point.add(this.qv.scale(i));for(let t of s){let e=t.sub(o);n=Math.min(-e.x*this.fx,n),r=Math.min(-e.y*this.fy,r)}let h=new R(n*this.fx,r*this.fy);e.push(new paper.Path.Rectangle(o.toPaper(),o.sub(h).toPaper()))}return e}get pattern(){let t=this.design.getStretchByQuadrant(this);return t?t.pattern:null}get corner(){let t=this.flap.radius;return this.point.add(this.qv.scale(t))}get junctions(){var t;return null!==(t=this.design.junctionsByQuadrant.get(this))&&void 0!==t?t:[]}get coveredJunctions(){return this.junctions.filter((t=>t.isValid&&t.isCovered)).map((t=>{let e=t.q1==this?t.q2:t.q1;return[t,t.coveredBy.map((t=>t.q1==e?t.q2.point:t.q1.point))]}))}get point(){return this.flap.points[this.q]}get activeJunctions(){let t=this.design.activeJunctionsByQuadrant.get(this);return t||[]}static transform(t,e,i){return e<0&&(t+=t%2?3:1),i<0&&(t+=t%2?1:3),t%4}getBaseRectangle(t){let e=this.flap.radius;return new Et(new T(this.x(e),this.y(e)),new T(this.x(e-t.ox),this.y(e-t.oy)))}debug(t=0){i=!0,console.log(this.makeContour(t).map((t=>t.toString()))),i=!1}};D.QV=[new R(1,1),new R(-1,1),new R(-1,-1),new R(1,-1)],D.SV=[new R(1,0),new R(0,1),new R(-1,0),new R(0,-1)],t([e],D.prototype,"pattern",null),t([e],D.prototype,"corner",null),t([e],D.prototype,"junctions",null),t([e],D.prototype,"coveredJunctions",null),t([e],D.prototype,"point",null),t([e],D.prototype,"activeJunctions",null),D=j=t([e],D);let A=class extends O{constructor(t,e){super(t),this._repoCache=new Map,this.signature=e}get type(){return"Stretch"}get junctions(){var t;let e=null!==(t=this.design.teams.get(this.signature))&&void 0!==t?t:[];if(this.junctionCache&&this.junctionCache.length==e.length){for(let t in e)if(e[t]!=this.junctionCache[t])return this.junctionCache=e;return this.junctionCache}return this.junctionCache=e}get flaps(){let t=new Set;for(let e of this.junctions)t.add(e.f1),t.add(e.f2);return Array.from(t)}get origin(){var t,e,i;return null!==(i=null===(e=null===(t=this.junctions[0])||void 0===t?void 0:t.q1)||void 0===e?void 0:e.point)&&void 0!==i?i:T.ZERO}get repository(){if(!this.isValid)return null;let t,e=this.structureSignature;if(this._repoCache.has(e))t=this._repoCache.get(e);else{let i=this.design.options.get("stretch",this.signature);t=new $t(this,e,i)}return this.design.dragging||this._repoCache.clear(),this._repoCache.set(e,t),t}get fx(){var t,e;return null!==(e=null===(t=this.junctions[0])||void 0===t?void 0:t.fx)&&void 0!==e?e:1}get fy(){var t,e;return null!==(e=null===(t=this.junctions[0])||void 0===t?void 0:t.fy)&&void 0!==e?e:1}get shouldDispose(){return super.shouldDispose||!this.isActive&&!this.design.dragging}get isActive(){return this.design.teams.has(this.signature)}get pattern(){var t,e,i;return null!==(i=null===(e=null===(t=this.repository)||void 0===t?void 0:t.entry)||void 0===e?void 0:e.entry)&&void 0!==i?i:null}get isValid(){return this.junctions.every((t=>t.status==vt.overlap))}get isTotallyValid(){if(!this.isActive)return!1;for(let t=0;t{let e=t.toJSON(),i=e.c;return t.fx!=this.fx&&(e.c=[i[2],i[3],i[0],i[1]]),e}))):""}get devices(){return this.pattern?this.pattern.devices:[]}toJSON(){var t,e,i,s;return{id:ht.createTeamId(this.junctions,(t=>t.node.jid)),configuration:null!==(e=null===(t=this.pattern)||void 0===t?void 0:t.configuration.toJSON())&&void 0!==e?e:void 0,pattern:null!==(s=null===(i=this.pattern)||void 0===i?void 0:i.toJSON())&&void 0!==s?s:void 0}}};t([e],A.prototype,"junctions",null),t([e],A.prototype,"flaps",null),t([e],A.prototype,"repository",null),t([e],A.prototype,"isActive",null),t([e],A.prototype,"pattern",null),t([e],A.prototype,"isValid",null),t([e],A.prototype,"isTotallyValid",null),t([e],A.prototype,"structureSignature",null),A=t([e],A);let J=class extends q{constructor(t,e){super(t.sheet),this.configuration=t,this.devices=e.devices.map(((e,i)=>new jt(this,t.partitions[i],e))),this.gadgets=this.devices.reduce(((t,e)=>t.concat(e.gadgets)),[]),this.signature=JSON.stringify(e)}static getSignature(t){let e=t.devices;t.devices=t.devices.map((t=>((t=Ht(t)).gadgets.forEach((t=>Dt.simplify(t))),t.offset=void 0,t)));let i=JSON.stringify(t);return t.devices=e,i}get shouldDispose(){return super.shouldDispose||this.configuration.disposed}get isActive(){return this.configuration.isActive&&this.configuration.entry==this}get linesForTracing(){if(!this.isActive)return Mt((t=>[]));let t=this.configuration.repository.stretch.junctions[0].direction,{fx:e,fy:i}=this.stretch;return Mt((s=>{let n=[];if(t%2!=s%2)return n;for(let t of this.devices){let r=D.QV[s].scale(this.design.sheet.size);n.push(...t.ridges),n.push(...t.getConnectionRidges(!0));for(let[o,h,l]of t.partition.outCorners){let a=t.anchors[h][l];if(o.type==mt.side||o.type==mt.flap&&s!=D.transform(l,e,i)||o.type==mt.internal&&s!=D.transform(o.q,e,i))n.push(new Ct(a,a.add(r)));else if(o.type==mt.intersection){let e=t.partition.overlaps[h].c.find((t=>t.type==mt.flap)).q,i=t.partition.getSideConnectionTarget(a,o,e);i&&n.push(new Ct(a,i))}else n.push(new Ct(a,this.getConnectionTarget(o)))}}return Ct.distinct(n)}))}toJSON(){return{devices:this.devices.map((t=>t.toJSON()))}}get selected(){return this.devices.some((t=>t.selected))}get stretch(){return this.configuration.repository.stretch}getConnectionTarget(t){if(t.e>=0)return this.design.flapsById.get(t.e).points[t.q];{let[e,i]=this.configuration.overlapMap.get(t.e);return this.devices[e].anchors[i][t.q]}}};t([e],J.prototype,"isActive",null),t([e],J.prototype,"linesForTracing",null),J=t([e],J);class $ extends q{constructor(){super(...arguments),this.index=0,this._prototypeCache=[],this._cache=[]}get _prototypes(){if(!this.generator)return this._prototypeCache;if(this.design.dragging)return this.buildFirst(),this._prototypeCache.concat();0==this._cache.length&&this.buildFirst();for(let t of this.generator)this._prototypeCache.push(t);return delete this.generator,this._prototypeCache}buildFirst(){let t=this.generator.next();if(!t.done)try{this._cache[0]=this.builder(t.value),this._prototypeCache.push(t.value)}catch(t){console.log("Incompatible old version.")}}get entry(){let t=this._prototypes,e=this.index;return 0==t.length?null:this._cache[e]=this._cache[e]||this.builder(t[e])}move(t=1){let e=this.index,i=this._prototypes.length;this.index=(this.index+t+i)%i,this.onMove(this.index,e),Shrewd.commit()}get size(){return this._prototypes.length}}t([s],$.prototype,"index",void 0),t([e],$.prototype,"_prototypes",null),t([e],$.prototype,"entry",null);class L extends C{constructor(t){super(t),this.control=t}drawSelection(){this.renderSelection(this.control.selected)}}t([e],L.prototype,"drawSelection",null);let B=class extends C{constructor(t){super(t),this.visible=!1,this.$addItem(xt.drag,this._rectangle=new paper.Path.Rectangle(bt.selection))}contains(t){return this._rectangle.contains(t)}render(){if(this._rectangle.visible=this.visible){let t=new paper.Path.Rectangle({from:this.down,to:this.now});this._rectangle.set({segments:t.segments})}}};t([e],B.prototype,"visible",void 0),t([e],B.prototype,"down",void 0),t([e],B.prototype,"now",void 0),B=t([e],B);let V=class extends C{constructor(t){super(t),this._sheet=t,this._border=new paper.Path.Rectangle({point:[0,0],size:[0,0],strokeWidth:3}),this.$addItem(xt.sheet,this._border),this._grid=new paper.CompoundPath(bt.sheet),this.$addItem(xt.sheet,this._grid)}contains(t){return this._border.contains(t)}render(){var t;if(!this.$studio)return;let e=this._sheet.width,i=this._sheet.height;Wt.setRectangleSize(this._border,e,i),this._grid.visible=null===(t=this.$studio)||void 0===t?void 0:t.$display.settings.showGrid,this._grid.removeChildren();for(let t=1;tnew _(this,t))),this.generator=this.generate()}get isActive(){return this.repository.isActive&&this.repository.entry==this}builder(t){return new J(this,t)}*generate(){this.seed&&(yield this.seed);yield*Bt.filter(this.search([]),(t=>!this.seedSignature||this.seedSignature!=J.getSignature(t)))}*search(t,e=0){if(e==this.partitions.length){let e=this.makePattern(Ht(t));e&&(yield e)}else for(let i of this.partitions[e].generate())t.push(i),yield*this.search(t,e+1),t.pop()}makePattern(t){t.forEach((t=>t.gadgets=t.gadgets.map((t=>Dt.instantiate(t)))));let e=t,i=this.repository.structure;if(1==i.length){let t=i[0].sx;if(1==e.length)return e[0].offset=Math.floor((t-e[0].gadgets[0].sx)/2),{devices:e};if(2==e.length){let[i,s]=e.map((t=>t.gadgets[0])),n=this.overlaps[0].c[2],r=this.overlaps[1].c[0],o=i.sx+s.rx(n.q,2),h=s.sx+i.rx(r.q,0);return o>t||h>t?null:(e[1].offset=t-h,{devices:e})}}if(2==i.length&&1==this.partitions.length){let[t,i]=this.overlaps,[s,n]=[t,i].map((t=>this.repository.structure[t.parent])),r=s.c[0].e==n.c[0].e,o=e[0].gadgets;return o[0].sx>s.sx||o[1].sx>n.sx?null:(r||(e[0].offset=s.sx-o[0].sx),{devices:e})}if(2==i.length&&2==this.partitions.length){let[t,i]=e.map((t=>t.gadgets[0])),[s,n]=this.overlaps,r=s.c[0].e>=0&&s.c[2].e>=0;r&&([t,i]=[i,t],[s,n]=[n,s]);let[o,h]=[s,n].map((t=>this.repository.structure[t.parent])),l=s.c[0].e<0,a=l?0:2,d=s.c[a].q,c=o.sx,u=t.sx,p=t.setupConnectionSlack(i,a,d);c-=Math.ceil(i.rx(d,a))+p;let g=l?[null!=p?p:0,0]:[c-u,h.sx-i.sx];return r&&g.reverse(),u>c?null:i.contains(this.getRelativeDelta(o,h,i))?null:(e.forEach(((t,e)=>t.offset=g[e])),{devices:e})}return null}getRelativeDelta(t,e,i){let s=t.c[0].e==e.c[0].e,n=l.getMaxIntersectionDistance(this.design.tree,t,e,s);e.ox>t.ox&&([t,e]=[e,t]);let r={x:n-e.ox,y:n-t.oy};return s||(r.x=i.sx-r.x,r.y=i.sy-r.y),new T(r)}onMove(){this.repository.stretch.selected=!this.entry.selected}toJSON(){return{partitions:this.partitions.map((t=>t.toJSON()))}}get jidMap(){return this.design.tree.jidMap}};t([e],W.prototype,"isActive",null),W=t([e],W);class z extends L{get overflow(){if(!this.$studio)return 0;this.render();let t=0,e=this._label.bounds,i=this.$studio.$display.scale*this.control.sheet.width,s=e.x,n=e.x+e.width;return s<0&&(t=-s),n>i&&(t=Math.max(t,n-i)),Math.ceil(t)}}var H;t([e],z.prototype,"overflow",null);let G=H=class extends C{constructor(t){super(t),this._junction=t,this.$addItem(xt.junction,this._shade=new paper.CompoundPath(bt.junction))}render(){if(this._shade.visible=this._junction.status==vt.tooClose){let t=this._junction.f1,e=this._junction.f2;this._shade.removeChildren();let i=this._junction.$treeDistance-(t.radius+e.radius);if(0==i)this._shade.addChild(t.view.circle.intersect(e.view.circle)),this._shade.strokeWidth=H.widthForArea(this._shade.area);else{let s=t.view.makeRectangle(i),n=e.view.makeRectangle(i);this._shade.addChild(t.view.circle.intersect(n)),this._shade.addChild(e.view.circle.intersect(s)),this._shade.strokeWidth=H.widthForArea(this._shade.area)}}}static widthForArea(t){return t<.25?4:t<.5?3:t<1?2:1}};G=H=t([e],G);let Q=class extends L{constructor(t){super(t),this.components=new x((()=>this.info.components),(([t,e])=>new K(this,t,e))),this.$addItem(xt.shade,this._shade=new paper.CompoundPath(bt.shade)),this.$addItem(xt.hinge,this._hinge=new paper.CompoundPath(bt.hinge)),this.$addItem(xt.ridge,this._ridge=new paper.CompoundPath(bt.ridge)),this.boundary=new paper.CompoundPath({})}contains(t){return this.control.sheet.view.contains(t)&&this._shade.contains(t)}get info(){if(this.disposed)return{adjacent:[],length:0,components:[]};let t,e,i=this.control.edge;return 0==i.wrapSide?(e=this.toComponents(i.l1,i.n1).concat(this.toComponents(i.l2,i.n2)),t=i.a1.concat(i.a2)):2==i.wrapSide?(e=this.toComponents(i.l2,i.n2),t=i.a2):(e=this.toComponents(i.l1,i.n1),t=i.a1),{adjacent:t,length:i.length,components:e}}toComponents(t,e){return t.map((t=>[this.design.flaps.get(t),e]))}get design(){return this.control.sheet.design}onDispose(){Shrewd.terminate(this.components),super.onDispose()}get closure(){let t=new paper.PathItem;if(this.disposed)return t;for(let e of this.components.values()){let i=e.contour;t=t.isEmpty()?i:t.unite(i,{insert:!1})}return t}get actualPath(){var t;let{adjacent:e}=this.info,i=this.control.sheet.design,s=this.closure;if(this.disposed)return s;for(let n of e)if(n.isRiver){let e=i.rivers.get(n);for(let i of null!==(t=e.view.closure.children)&&void 0!==t?t:[e.view.closure])s=s.subtract(i,{insert:!1})}else{let t=i.flaps.get(1==n.n1.degree?n.n1:n.n2);t.view.renderHinge(),s=s.subtract(t.view.hinge,{insert:!1})}return s.reorient(!1,!0)}render(){Wt.replaceContent(this.boundary,this.closure,!0),Wt.replaceContent(this._shade,this.actualPath,!1),Wt.replaceContent(this._hinge,this.actualPath,!1),this.renderRidge()}get corners(){var t;if(this.disposed)return[];let e=this.actualPath,i=(null!==(t=e.children)&&void 0!==t?t:[e]).map((t=>t.segments.map((t=>new T(t.point)))));if(0==i[0].length)return[];let{paths:s,map:n}=Nt.collect(i),r=[];for(let t of s){let e=t.length,i=t[e-1],s=t[0],o=s.sub(i);for(let h=0;h0){let t=new R(Math.sign(a.x)-Math.sign(o.x),Math.sign(a.y)-Math.sign(o.y)).scale(this.control.length),e=s.add(t);r.push([s,e,n.has(e.toString())])}i=s,s=l,o=a}}return r}renderRidge(){var t;this._ridge.removeChildren();for(let[e,i,s]of this.corners){let n=new Ct(e,i),r=n.slope.value,o=r+","+(e.x-r*e.y),h=(null!==(t=this.control.sheet.design.openAnchors.get(o))&&void 0!==t?t:[]).find((t=>n.contains(t,!0)));h?Wt.addLine(this._ridge,e,h):s&&Wt.addLine(this._ridge,e,i)}}renderSelection(t){this._shade.visible=t}};t([e],Q.prototype,"info",null),t([e],Q.prototype,"closure",null),t([e],Q.prototype,"actualPath",null),t([e],Q.prototype,"corners",null),Q=t([e],Q);let K=class extends d{constructor(t,e,i){super(t),this.view=t,this.flap=e,this.node=i}get shouldDispose(){return super.shouldDispose||this.flap.disposed||!this.view.info.components.some((t=>t[0]==this.flap))}get distance(){if(this.disposed)return 0;let{design:t,info:e}=this.view,i=this.flap;return t.tree.dist(i.node,this.node)-i.radius+e.length}get contour(){return this.flap.view.draw(),this.flap.view.makeContour(this.distance)}};t([e],K.prototype,"distance",null),t([e],K.prototype,"contour",null),K=t([e],K);class Y extends F{constructor(){super(...arguments),this.location={x:0,y:0}}dragStart(t){this._dragOffset=t.sub(this.location)}dragConstraint(t){if(t instanceof R)return this.constraint(t,this.location);{let e=new T(this.location),i=this.constraint(t.sub(this._dragOffset).sub(e),e);return e.add(i).add(this._dragOffset)}}drag(t){t instanceof T?(t=t.sub(this._dragOffset)).eq(this.location)||this.design.history.takeAction((()=>{this.location.x=t.x,this.location.y=t.y})):t.eq(R.ZERO)||this.design.history.takeAction((()=>{this.location.x+=t.x,this.location.y+=t.y}))}constraint(t,e){return R.ZERO}}t([e],Y.prototype,"location",void 0);class U extends Y{}let Z=class extends z{constructor(t){super(t),this.$addItem(xt.shade,this._shade=new paper.Path.Rectangle(bt.shade)),this.$addItem(xt.hinge,this.hinge=new paper.Path.Rectangle(bt.hinge)),this.$addItem(xt.shade,this._circle=new paper.Path(bt.circle)),this._dots=Mt((t=>{let e=new paper.Path.Circle(bt.dot);return this.$addItem(xt.dot,e),e})),this.$addItem(xt.ridge,this._innerRidges=new paper.CompoundPath(bt.ridge)),this.$addItem(xt.ridge,this._outerRidges=new paper.CompoundPath(bt.ridge)),this.$addItem(xt.label,this._glow=new paper.PointText(bt.glow)),this.$addItem(xt.label,this._label=new paper.PointText(bt.label))}contains(t){return this.control.sheet.view.contains(t)&&(this.hinge.contains(t)||null!=this.hinge.hitTest(t))}get circle(){return this.makeRectangle(0)}makeRectangle(t){let e=this.control.points,i=this.control.node.radius+t;return new paper.Path.Rectangle({from:[e[2].x-i,e[2].y-i],to:[e[0].x+i,e[0].y+i],radius:i})}makeContour(t){let e=new paper.Path({closed:!0});this.control.quadrants.forEach((i=>e.add(...i.makeContour(t))));let i=e;for(let e of this.control.quadrants)for(let s of e.getOverriddenPath(t))i=i.subtract(s,{insert:!1});return i}renderHinge(){var t,e;this._circle.visible=null!==(e=null===(t=this.$studio)||void 0===t?void 0:t.$display.settings.showHinge)&&void 0!==e&&e,this.hinge.removeSegments(),this.control.quadrants.forEach((t=>this.hinge.add(...t.makeContour(0))))}render(){let t=this.control.sheet.displayScale,e=this.control.width,i=this.control.height;this._circle.copyContent(this.circle),this.renderHinge();let s=Mt((e=>{let i=this.control.points[e].toPaper();return this._dots[e].position.set((e=>[e.x*t,-e.y*t])(i)),i}));this._dots[2].visible=e>0||i>0,this._dots[1].visible=this._dots[3].visible=e>0&&i>0,this._innerRidges.removeChildren(),this._innerRidges.moveTo(s[3]),s.forEach((t=>this._innerRidges.lineTo(t))),this._innerRidges.visible=e>0||i>0,this._outerRidges.removeChildren(),this.control.quadrants.forEach(((t,e)=>{null==t.pattern&&Wt.addLine(this._outerRidges,s[e],t.corner)})),this._label.content=this.control.node.name,Vt.setLabel(this.control.sheet,this._label,this._glow,this.control.dragSelectAnchor,this._dots[0]),this._shade.copyContent(this.hinge)}renderSelection(t){this._shade.visible=t}};t([e],Z.prototype,"circle",null),t([e],Z.prototype,"renderHinge",null),Z=t([e],Z);let X=class extends z{constructor(t){super(t),this.$addItem(xt.ridge,this.line=new paper.Path.Line(bt.edge)),this.$addItem(xt.label,this._glow=new paper.PointText(bt.glow)),this.$addItem(xt.label,this._label=new paper.PointText(bt.label)),this._lineRegion=new paper.Path.Line({strokeWidth:15})}contains(t){return!(null==this._lineRegion.hitTest(t)&&null==this._glow.hitTest(t.transform(this._glow.layer.matrix.inverted()))||this.control.v1.view.contains(t)||this.control.v2.view.contains(t))}render(){let t=this.control.v1.location,e=this.control.v2.location,i={x:(t.x+e.x)/2,y:(t.y+e.y)/2};this._lineRegion.segments[0].point.set([t.x,t.y]),this._lineRegion.segments[1].point.set([e.x,e.y]),this.line.copyContent(this._lineRegion),this._label.content=this.control.length.toString(),Vt.setLabel(this.control.sheet,this._label,this._glow,i,this.line)}renderSelection(t){let e=t?Wt.Red():Wt.Black();this._label.fillColor=this._label.strokeColor=this.line.strokeColor=e,this.line.strokeWidth=t?3:2}};X=t([e],X);let tt=class extends z{constructor(t){super(t);let e=Object.assign({},bt.dot,{radius:4});this.$addItem(xt.dot,this._dot=new paper.Path.Circle(e)),this.$addItem(xt.label,this._glow=new paper.PointText(bt.glow)),this.$addItem(xt.label,this._label=new paper.PointText(bt.label)),this._circle=new paper.Path.Circle({radius:.4})}contains(t){return this._circle.contains(t)||null!=this._glow.hitTest(t.transform(this._glow.layer.matrix.inverted()))}render(){let t=this.control.sheet.displayScale,e=this.control.location.x,i=this.control.location.y;this._circle.position.set([e,i]),this._dot.position.set([e*t,-i*t]);let s=this.control.node.edges.map((t=>{let e=this.control.sheet.design.edges.get(t).view;return e.draw(),e.line}));this._label.content=this.control.node.name,Vt.setLabel(this.control.sheet,this._label,this._glow,{x:e,y:i},this._dot,...s)}renderSelection(t){this._dot.set(t?bt.dotSelected:bt.dot)}};var et;tt=t([e],tt);let it=et=class extends U{constructor(t,e){super(t),this.width=0,this.height=0,this.node=e;let i=this.sheet.design.options.get("flap",e.id);i&&(this.location.x=i.x,this.location.y=i.y,this.width=i.width,this.height=i.height),this.quadrants=Mt((e=>new D(t,this,e))),this.view=new Z(this)}get type(){return"Flap"}selectableWith(t){return t instanceof et}get dragSelectAnchor(){return{x:this.location.x+this.width/2,y:this.location.y+this.height/2}}get points(){let t=this.location.x,e=this.location.y,i=this.width,s=this.height;return[new T(t+i,e+s),new T(t,e+s),new T(t,e),new T(t+i,e)]}get name(){return this.node.name}set name(t){this.node.name=t}get radius(){var t,e;return null!==(e=null===(t=this.node.firstEdge)||void 0===t?void 0:t.length)&&void 0!==e?e:0}set radius(t){this.node.firstEdge.length=t}get shouldDispose(){return super.shouldDispose||this.node.disposed||1!=this.node.degree}toJSON(){return{id:this.node.jid,width:this.width,height:this.height,x:this.location.x,y:this.location.y}}constraint(t,e){return this.sheet.constraint(t,e),this.sheet.constraint(t,{x:e.x+this.width,y:e.y+this.height}),t}debug(t=0){console.log(this.view.makeContour(t).exportJSON())}};var st;t([s({validator(t){let e=t>=0&&t<=this.sheet.width,i=this.location.x+t-this.sheet.width;return i>0&&(this.location.x-=i),e}})],it.prototype,"width",void 0),t([s({validator(t){let e=t>=0&&t<=this.sheet.height,i=this.location.y+t-this.sheet.height;return i>0&&(this.location.y-=i),e}})],it.prototype,"height",void 0),t([e],it.prototype,"dragSelectAnchor",null),t([e],it.prototype,"points",null),it=et=t([e],it);let nt=st=class extends U{constructor(t,e){super(t),this.height=0,this.width=0,this.node=e;let i=t.design.options.get("vertex",this.node.id);i&&(null!=i.name&&(this.node.name=i.name),this.location.x=i.x,this.location.y=i.y),this.view=new tt(this)}get type(){return"Vertex"}get name(){return this.node.name}set name(t){this.node.name=t}get degree(){return this.node.degree}selectableWith(t){return t instanceof st}get dragSelectAnchor(){return this.location}addLeaf(t=1){this.design.history.takeAction((()=>{let e=[...this.design.vertices.values()],i=this.node.addLeaf(t),s=this.findClosestEmptyPoint(e);this.design.options.set("vertex",i.id,{id:i.id,name:i.name,x:s.x,y:s.y})}))}findClosestEmptyPoint(t){let{x:e,y:i}=this.location,s=new T(e+.125,i+.0625),n=[],r=new Set;for(let e of t)r.add(e.location.x+","+e.location.y);for(let t=e-5;t<=e+5;t++)for(let e=i-5;e<=i+5;e++)if(!r.has(t+","+e)){let i=new T(t,e);n.push([i,i.dist(s)])}return n.sort(((t,e)=>t[1]-e[1])),n[0][0]}deleteAndJoin(){2==this.node.degree&&this.design.history.takeAction((()=>{let t=this.node.dispose();Shrewd.commit(),this.design.edges.get(t).selected=!0}))}get shouldDispose(){return super.shouldDispose||this.node.disposed}toJSON(){return{id:this.node.jid,name:this.name,x:this.location.x,y:this.location.y}}constraint(t,e){return this.sheet.constraint(t,e),t}};nt=st=t([e],nt);let rt=class{constructor(t){if(this.designMap=new Map,this.design=null,"object"!=typeof paper)throw new Error("BPStudio requires paper.js.");let e=document.querySelector(t);if(null==e||!(e instanceof HTMLElement))throw new Error("selector is not valid");this.$el=e,this.$paper=new paper.PaperScope,this.$display=new at(this),this.system=new ft(this)}load(t){return"string"==typeof t&&(t=JSON.parse(t)),this.tryLoad(ct.process(t,this.onDeprecate))}create(t){return Object.assign(t,{version:ct.current,layout:{flaps:[{id:0,width:0,height:0,x:8,y:7},{id:2,width:0,height:0,x:8,y:9}]},tree:{nodes:[{id:0,name:"",x:10,y:13},{id:1,name:"",x:10,y:10},{id:2,name:"",x:10,y:7}],edges:[{n1:0,n2:1,length:1},{n1:2,n2:1,length:1}]}}),this.restore(t)}restore(t){let e=new E(this,ct.process(t,this.onDeprecate));return this.designMap.set(e.id,e),e}select(t){if(null!=t){let e=this.designMap.get(t);e&&(this.design=e)}else this.design=null}close(t){let e=this.designMap.get(t);e&&(this.designMap.delete(t),e.dispose())}closeAll(){this.design=null;for(let t of this.designMap.values())t.dispose();this.designMap.clear()}tryLoad(t){return this.design=new E(this,t),this.designMap.set(this.design.id,this.design),Shrewd.commit(),this.design}toBPS(){if(!this.design)return"";let t=this.design.toJSON();delete t.history;let e=JSON.stringify(t),i=new Blob([e],{type:"application/octet-stream"});return URL.createObjectURL(i)}get TreeMaker(){return Lt}};t([e],rt.prototype,"design",void 0),rt=t([e],rt);let ot=class extends F{constructor(t,e,i,s){super(t),this.v1=e,this.v2=i,this.edge=s,this.view=new X(this)}get type(){return"Edge"}get shouldDispose(){return super.shouldDispose||this.edge.disposed}split(){this.design.history.takeAction((()=>this.toVertex(b.prototype.split)))}deleteAndMerge(){this.design.history.takeAction((()=>this.toVertex(b.prototype.deleteAndMerge)))}toVertex(t){let e=this.v1.location,i=this.v2.location,s=Math.round((e.x+i.x)/2),n=Math.round((e.y+i.y)/2),r=t.apply(this.design.tree,[this.edge]);this.design.options.set("vertex",r.id,{id:r.id,name:r.name,x:s,y:n}),Shrewd.commit(),this.design.vertices.get(r).selected=!0}get length(){return this.edge.length}set length(t){this.edge.length=t}toJSON(){return{n1:this.v1.node.jid,n2:this.v2.node.jid,length:this.edge.length}}};ot=t([e],ot);let ht=class extends q{constructor(t,e,i){super(t),e.node.id>i.node.id&&([e,i]=[i,e]),this.f1=e,this.f2=i,this.id=e.node.id+":"+i.node.id,new G(this)}static createTeamId(t,e){let i=new Set;return t.forEach((t=>{i.add(e(t.f1)),i.add(e(t.f2))})),Array.from(i).sort(((t,e)=>t-e)).join(",")}static sort(t,e){let i=t.f1.node.id-e.f1.node.id;return 0!=i?i:t.f2.node.id-e.f2.node.id}get shouldDispose(){return super.shouldDispose||this.f1.disposed||this.f2.disposed}get baseRectangle(){if(!this.isValid)return;let t=this.sx>0?this.q2:this.q1;return null==t?void 0:t.getBaseRectangle(this)}isCoveredBy(t){if(this==t||this.direction%2!=t.direction%2)return!1;let[e,i]=[t.baseRectangle,this.baseRectangle];return!!(e&&i&&e.contains(i))&&(!e.equals(i)||(Math.abs(t.sx)this.isCoveredBy(t))):[]}get isCovered(){return this.coveredBy.some((t=>0==t.coveredBy.length))}toJSON(){return{c:[{type:mt.flap,e:this.f1.node.id,q:this.q1.q},{type:mt.side},{type:mt.flap,e:this.f2.node.id,q:this.q2.q},{type:mt.side}],ox:this.ox,oy:this.oy,sx:this.sx<0?-this.sx:this.sx}}get neighbors(){if(this.direction>3)return[];let t=this.q1.activeJunctions.concat(),e=this.q2.activeJunctions.concat();return t.splice(t.indexOf(this),1),e.splice(e.indexOf(this),1),t.concat(e)}get q1(){return qt(this.direction)?this.f1.quadrants[this.direction]:null}get q2(){return qt(this.direction)?this.f2.quadrants[It(this.direction)]:null}get $treeDistance(){return this.design.tree.dist(this.f1.node,this.f2.node)}get status(){return this._flapDistance0?t:NaN}get oy(){let t=this.$treeDistance-Math.abs(this.sy);return t>0?t:NaN}get sx(){let t=this.f1.location.x,e=this.f2.location.x,i=this.f1.width,s=t-e-this.f2.width;return s>=0?s:(s=t+i-e,s<=0?s:NaN)}get sy(){let t=this.f1.location.y,e=this.f2.location.y,i=this.f1.height,s=t-e-this.f2.height;return s>=0?s:(s=t+i-e,s<=0?s:NaN)}get direction(){let t=this.sx,e=this.sy;return t<0&&e<0?_t.UR:t>0&&e<0?_t.UL:t>0&&e>0?_t.LL:t<0&&e>0?_t.LR:t<0?_t.R:t>0?_t.L:e<0?_t.T:e>0?_t.B:_t.none}get _flapDistance(){let t=this.sx,e=this.sy,i=0!=t&&!isNaN(t),s=0!=e&&!isNaN(e);return i&&s?Math.sqrt(t*t+e*e):i?Math.abs(t):s?Math.abs(e):0}get isValid(){return this.status==vt.overlap}static findMinMax(t,e,i){let s=t[0][e],n=t[0];for(let r=1;rs*i&&(n=t[r],s=t[r][e]);return n}};t([e],ht.prototype,"baseRectangle",null),t([e],ht.prototype,"coveredBy",null),t([e],ht.prototype,"isCovered",null),t([e],ht.prototype,"neighbors",null),t([e],ht.prototype,"q1",null),t([e],ht.prototype,"q2",null),t([e],ht.prototype,"$treeDistance",null),t([e],ht.prototype,"status",null),t([e],ht.prototype,"fx",null),t([e],ht.prototype,"fy",null),t([e],ht.prototype,"ox",null),t([e],ht.prototype,"oy",null),t([e],ht.prototype,"sx",null),t([e],ht.prototype,"sy",null),t([e],ht.prototype,"direction",null),t([e],ht.prototype,"_flapDistance",null),t([e],ht.prototype,"isValid",null),ht=t([e],ht);let lt=class extends F{constructor(t,e){super(t),this.edge=e,this.view=new Q(this)}get type(){return"River"}get shouldDispose(){return super.shouldDispose||this.edge.disposed||!this.edge.isRiver}delete(){this.design.edges.get(this.edge).deleteAndMerge()}get length(){return this.edge.length}set length(t){this.edge.length=t}};lt=t([e],lt);let at=class{constructor(t){this.MARGIN=30,this.lockViewport=!1,this.scroll={x:0,y:0},this.settings={showAxialParallel:!0,showGrid:!0,showHinge:!0,showRidge:!0,showLabel:!0,showDot:!0,includeHiddenElement:!1},this._printing=!1,this.horMargin=0,this._studio=t,t.$el.appendChild(this.spaceHolder=document.createElement("div")),t.$el.addEventListener("scroll",this.onScroll.bind(this)),this.spaceHolder.style.zIndex="-10",this._canvas=document.createElement("canvas"),t.$el.appendChild(this._canvas),window.addEventListener("resize",this.setSize.bind(this)),this.setSize(),setTimeout((()=>this.setSize()),10),window.addEventListener("beforeprint",this.beforePrint.bind(this)),window.addEventListener("afterprint",this.afterPrint.bind(this));let e=matchMedia("(hover: none), (pointer: coarse)").matches;document.addEventListener("focusin",(t=>{e&&(t.target instanceof HTMLInputElement||t.target instanceof HTMLTextAreaElement)&&(this.lockViewport=!0)})),document.addEventListener("focusout",(t=>this.lockViewport=!1)),t.$paper.setup(this._canvas),t.$paper.settings.insertItems=!1,this.project=t.$paper.project,this.project.currentStyle.strokeColor=Wt.Black(),this.project.currentStyle.strokeScaling=!1;for(let t of yt.values(xt))this.project.addLayer(new paper.Layer({name:xt[t]}));this.boundary=new paper.Path.Rectangle({from:[0,0],to:[0,0]});for(let t of yt.values(xt))wt[t].clipped&&(this.project.layers[t].addChild(this.boundary.clone()),this.project.layers[t].clipped=!0)}setSize(){this.lockViewport||(this.viewWidth=this._studio.$el.clientWidth,this.viewHeight=this._studio.$el.clientHeight)}toSVG(){let t=Math.max(this.sheetWidth,this.viewWidth),e=Math.max(this.sheetHeight,this.viewHeight),i=(t-this.sheetWidth)/2-this.scroll.x,s=(e-this.sheetHeight)/2-this.scroll.y,n=new paper.Rectangle(i,s,this.sheetWidth,this.sheetHeight),r=this._studio.$paper.project.exportSVG({bounds:n,matrix:this.project.view.matrix});this.settings.includeHiddenElement||this.removeHidden(r);let o=new Blob([r.outerHTML],{type:"image/svg+xml"});return URL.createObjectURL(o)}removeHidden(t){let e=Array.from(t.children);for(let i of e)"hidden"==i.getAttribute("visibility")?t.removeChild(i):this.removeHidden(i)}get img(){return this._img||this.spaceHolder.appendChild(this._img=new Image),this._img}createPNG(){let t=document.createElement("canvas"),e=t.getContext("2d"),i=this.img;return new Promise((s=>{i.addEventListener("load",(()=>{t.width=i.clientWidth,t.height=i.clientHeight,e.fillStyle="white",e.fillRect(0,0,t.width,t.height),e.drawImage(i,0,0,i.naturalWidth,i.naturalHeight,0,0,i.clientWidth,i.clientHeight),this._printing=!1,t.toBlob((t=>s(t)))}),{once:!0}),this.beforePrint()}))}toPNG(){return this.createPNG().then((t=>URL.createObjectURL(t)))}copyPNG(){return this.createPNG().then((t=>navigator.clipboard.write([new ClipboardItem({"image/png":t})])))}beforePrint(){if(clearTimeout(this._debounce),!this._printing&&"visible"==document.visibilityState){let t=this.img.src;setTimeout((()=>URL.revokeObjectURL(t)),5e3),this.img.src=this.toSVG(),this._printing=!0}}afterPrint(){this._debounce=setTimeout((()=>{this._printing=!1,this._debounce=NaN}),1e3)}onScroll(){this.scroll.x=this._studio.$el.scrollLeft,this.scroll.y=this._studio.$el.scrollTop}get scale(){if(this._studio.design&&this._studio.design.sheet){if(this._studio.design.fullscreen){let t=(this.viewWidth-2*this.horMargin)/this._studio.design.sheet.width,e=(this.viewHeight-2*this.MARGIN)/this._studio.design.sheet.height;return Math.min(t,e)}return this._studio.design.sheet.scale}return 1}getHorMargin(){var t,e;let i=Math.max((null!==(e=null===(t=this._studio.design)||void 0===t?void 0:t.overflow)&&void 0!==e?e:0)+10,this.MARGIN);setTimeout((()=>this.horMargin=i),0)}get sheetWidth(){var t,e,i;return(null!==(i=null===(e=null===(t=this._studio.design)||void 0===t?void 0:t.sheet)||void 0===e?void 0:e.width)&&void 0!==i?i:0)*this.scale+2*this.horMargin}get sheetHeight(){var t,e,i;return(null!==(i=null===(e=null===(t=this._studio.design)||void 0===t?void 0:t.sheet)||void 0===e?void 0:e.height)&&void 0!==i?i:0)*this.scale+2*this.MARGIN}get isXScrollable(){return this.sheetWidth>this.viewWidth+1}get isYScrollable(){return this.sheetHeight>this.viewHeight+1}getAutoScale(){var t,e,i,s,n,r;let o=(this.viewWidth-2*this.horMargin)/(null!==(i=null===(e=null===(t=this._studio.design)||void 0===t?void 0:t.sheet)||void 0===e?void 0:e.width)&&void 0!==i?i:1),h=(this.viewHeight-2*this.MARGIN)/(null!==(r=null===(n=null===(s=this._studio.design)||void 0===s?void 0:s.sheet)||void 0===n?void 0:n.height)&&void 0!==r?r:1);return Math.min(o,h)}isScrollable(){return this._studio.$el.classList.toggle("scroll-x",this.isXScrollable),this._studio.$el.classList.toggle("scroll-y",this.isYScrollable),this.isXScrollable||this.isYScrollable}renderSetting(){var t,e;let i=null!==(e="layout"!=(null===(t=this._studio.design)||void 0===t?void 0:t.mode))&&void 0!==e&&e;this.project.layers[xt.hinge].visible=this.settings.showHinge,this.project.layers[xt.ridge].visible=this.settings.showRidge||i,this.project.layers[xt.axisParallel].visible=this.settings.showAxialParallel,this.project.layers[xt.label].visible=this.settings.showLabel,this.project.layers[xt.dot].visible=this.settings.showDot||i}render(){let t=0,e=0,i=this.scale;this._studio.design&&this._studio.design.sheet&&({width:t,height:e}=this._studio.design.sheet);let s=Math.max(this.sheetWidth,this.viewWidth),n=Math.max(this.sheetHeight,this.viewHeight);this.spaceHolder.style.width=s+"px",this.spaceHolder.style.height=n+"px",Wt.setRectangleSize(this.boundary,t,e);let r=this._studio.$el,o=(s-this.sheetWidth)/2+this.horMargin,h=(n+this.sheetHeight)/2-this.MARGIN;this.lockViewport?this.project.view.viewSize.set(this.viewWidth,this.viewHeight):this.project.view.viewSize.set(r.clientWidth,r.clientHeight),this.project.view.matrix.set(i,0,0,-i,o-this.scroll.x,h-this.scroll.y);for(let t of yt.values(xt)){let e=this.project.layers[t];wt[t].clipped&&e.children[0].set({segments:this.boundary.segments}),wt[t].scaled||(e.applyMatrix=!1,e.matrix.set(1/i,0,0,-1/i,0,0))}}};t([e],at.prototype,"viewWidth",void 0),t([e],at.prototype,"viewHeight",void 0),t([e],at.prototype,"scroll",void 0),t([e],at.prototype,"settings",void 0),t([e],at.prototype,"scale",null),t([e],at.prototype,"horMargin",void 0),t([e],at.prototype,"getHorMargin",null),t([e],at.prototype,"sheetWidth",null),t([e],at.prototype,"sheetHeight",null),t([e],at.prototype,"isXScrollable",null),t([e],at.prototype,"isYScrollable",null),t([e],at.prototype,"isScrollable",null),t([e],at.prototype,"renderSetting",null),t([e],at.prototype,"render",null),at=t([e],at);class dt{constructor(t){this._modified=!1,this.design=t}get modified(){return this._modified}notifySave(){this._modified=!1}takeAction(t){this._modified=!0,t()}fieldChange(t,e,i,s){this._modified=!0}}var ct,ut;!function(t){function e(t,e){let i=[],s=new Map;for(let[e,n]of t.entries()){if(s.has(e))continue;let r=n.c.filter((t=>t.type==mt.coincide)),o=r.find((t=>s.has(-t.e-1))),h=i.length;if(o){let t=s.get(-o.e-1);s.set(e,t),i[t].push(n)}else s.set(e,h),i.push([n]);r.forEach((n=>{e=-n.e-1,s.has(e)||(s.set(e,h),i[h].push(t[e]))}))}return i.map((t=>({overlaps:t,strategy:e})))}t.current="0",t.getSample=function(){return{title:"",version:t.current,fullscreen:!0,mode:"layout",history:{index:0,modified:!1,actions:[]},layout:{sheet:{width:16,height:16,scale:20},flaps:[],stretches:[]},tree:{sheet:{width:20,height:20,scale:16},nodes:[],edges:[]}}},t.process=function(t,i){var s;let n=!1;if("version"in t||("cp"==t.mode&&(t.mode="layout"),t.layout=t.cp,delete t.cp,t.version="beta",delete t.layout.stretches,n=!0),"beta"==t.version){t.version="rc0";let e=t.layout.stretches;if(e)for(let t of e.concat()){let i=t.configuration;!i||i.overlaps&&!i.overlaps.some((t=>t.c.some((t=>t.type==mt.intersection&&void 0===t.e))))||(e.splice(e.indexOf(t),1),n=!0)}}if("rc0"==t.version){t.version="rc1";let i=t.layout.stretches;if(i)for(let t of i.concat()){if(t.configuration){t.configuration={partitions:e(t.configuration.overlaps,t.configuration.strategy)},t.pattern&&(1==t.configuration.partitions.length?t.pattern={devices:[{gadgets:t.pattern.gadgets,offset:null===(s=t.pattern.offsets)||void 0===s?void 0:s[0]}]}:t.pattern={devices:t.pattern.gadgets.map(((e,i)=>{var s;return{gadgets:[e],offset:null===(s=t.pattern.offsets)||void 0===s?void 0:s[i]}}))})}}}return"rc1"==t.version&&(t.version="0"),n&&i&&i(t.title),t}}(ct||(ct={}));class pt{constructor(t){this.options=new Map;for(let e of t.tree.nodes)this.set("vertex",e.id,e);for(let e of t.layout.flaps)this.set("flap",e.id,e);for(let e of t.layout.stretches)this.set("stretch",e.id,e)}get(t,e){e=t+e;let i=this.options.get(e);return this.options.delete(e),i}set(t,e,i){this.options.set(t+e,i)}}const gt="undefined"!=typeof TouchEvent;let ft=ut=class{constructor(t){this.dragging=!1,this._spaceDown=!1,this._touchScaling=[0,0],this._scrolled=!1,this._possiblyReselect=!1,this._studio=t;let e=t.$paper.view.element,i=t.$paper.tool=new paper.Tool;i.onKeyDown=this._canvasKeydown.bind(this),i.onKeyUp=this._canvasKeyup.bind(this),i.onMouseDown=this._canvasMousedown.bind(this),i.onMouseDrag=this._canvasMouseDrag.bind(this),i.onMouseUp=this._canvasMouseup.bind(this),e.addEventListener("wheel",this._canvasWheel.bind(this)),e.addEventListener("touchstart",this._canvasTouch.bind(this)),document.addEventListener("mousemove",this._bodyMousemove.bind(this)),document.addEventListener("touchmove",this._bodyMousemove.bind(this)),document.addEventListener("mouseup",this._bodyMouseup.bind(this)),document.addEventListener("touchend",this._bodyMouseup.bind(this)),document.addEventListener("contextmenu",this._bodyMenu.bind(this)),this._dragSelectView=new B(t)}static controlPriority(t){return t instanceof jt||t instanceof nt?1:t instanceof it||t instanceof ot?2:3}get _controls(){let t=this._studio.design?this._studio.design.sheet.activeControls.concat():[];return t.sort(((t,e)=>ut.controlPriority(t)-ut.controlPriority(e))),this._dragSelectables=t.filter(O.isDragSelectable),t.length||(this._ctrl=[null,null]),t}get selections(){return this._controls.filter((t=>t.selected))}draggableSelections(){return this.selections.filter((t=>t instanceof Y))}get _canvas(){return this._studio.$paper.view.element}_processSelection(t,e){var i=null,s=null,n=null,r=this._controls.filter((e=>e.contains(t)));for(let t of r)i||(i=t),t.selected?s=t:s&&!n&&(n=t);if(n||!i||i.selected||(n=i),s){let t=ut.controlPriority(s);r.some((e=>ut.controlPriority(e)1)&&!(t instanceof MouseEvent&&0!=t.button)}_canvasKeydown(t){let e=document.activeElement;return e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||this.key(t.key,t.modifiers.control)}key(t,e=!1){let i=new R(0,0);switch(t){case"space":return this._studio.$display.isScrollable()&&(this._canvas.style.cursor="grab",this._spaceDown=!0),!1;case"delete":let t=this.selections[0];return t instanceof it&&this._studio.design.deleteFlaps(this.selections),t instanceof nt&&this._studio.design.deleteVertices(this.selections),!1;case"a":let s=this._studio.design;return e&&s&&(this._clearSelection(),"layout"==s.mode&&s.flaps.forEach((t=>t.selected=!0)),"tree"==s.mode&&s.vertices.forEach((t=>t.selected=!0))),!1;case"up":i.set(0,1);break;case"down":i.set(0,-1);break;case"left":i.set(-1,0);break;case"right":i.set(1,0);break;default:return!0}let s=this.draggableSelections();if(0==s.length)return!0;s[0]instanceof jt&&(i=i.scale(2));for(let t of s)i=t.dragConstraint(i);for(let t of s)t.drag(i);return!1}_canvasKeyup(){this._canvas.style.cursor="unset",this._spaceDown=!1}_canvasMousedown(t){if(t.event instanceof MouseEvent&&(this._spaceDown||2==t.event.button))return console.log(t.point.round().toString()),void this._setScroll(t.event);let e=document.activeElement;if(e instanceof HTMLElement&&e.blur(),!this._checkEvent(t.event)||this._scrollStart)return;let i=t.point;if(this._processSelection(i,t.modifiers.control),1==this.selections.length&&this.isTouch(t.event)&&(this._longPressTimeout=window.setTimeout((()=>{this.onLongPress()}),750)),this.draggableSelections().length){this._lastKnownCursorLocation=new T(t.downPoint).round();for(let t of this.draggableSelections())t.dragStart(this._lastKnownCursorLocation);this.dragging=!0}}_canvasMouseup(t){this._dragSelectView.visible=!1,this._checkEvent(t.event)&&(this._scrollStart?t.event instanceof MouseEvent&&(this._scrollStart=null):t.modifiers.control||this._processNextSelection())}_reselect(t){this._clearSelection(),this._processSelection(t.point,!1),Shrewd.commit();for(let t of this.draggableSelections())t.dragStart(this._lastKnownCursorLocation);this._possiblyReselect=!1}_canvasMouseDrag(t){var e;if(!this._scrollStart)if(this._possiblyReselect&&(this._reselect(t),this.dragging=!0),this.dragging){let i=new T(t.point).round();if(this._lastKnownCursorLocation.eq(i))return;window.clearTimeout(this._longPressTimeout),null===(e=this.onDrag)||void 0===e||e.apply(null),this._lastKnownCursorLocation.set(i);for(let t of this.draggableSelections())i=t.dragConstraint(i);for(let t of this.draggableSelections())t.drag(i);this._studio.design.dragging=!0}else if(this._dragSelectables.length){if(!this._dragSelectView.visible){if(this.isTouch(t.event)&&t.downPoint.getDistance(t.point)<1)return;this._clearSelection(),this._dragSelectView.visible=!0,this._dragSelectView.down=t.downPoint,Shrewd.commit()}this._dragSelectView.now=t.point,this._dragSelectView.draw();for(let t of this._dragSelectables)t.selected=this._dragSelectView.contains(new paper.Point(t.dragSelectAnchor))}}_canvasWheel(t){if(t.ctrlKey){t.preventDefault();let e=this._studio.design;e&&(e.fullscreen&&(e.sheet.scale=Math.round(this._studio.$display.scale),e.fullscreen=!1),e.sheet.scale-=Math.round(t.deltaY/100))}}_canvasTouch(t){t.touches.length>1&&(this._clearSelection(),this._setScroll(t),this._touchScaling=[this.getTouchDistance(t),this._studio.$display.scale])}getTouchDistance(t){let e=t.touches,i=e[1].screenX-e[0].screenX,s=e[1].screenY-e[0].screenY;return Math.sqrt(i*i+s*s)}_bodyMousemove(t){var e;if(this._scrollStart&&(t instanceof MouseEvent||t.touches.length>=2)){let i=this.isTouch(t)?t.touches[0]:t,s=new T(i.screenX,i.screenY).sub(this._lastKnownCursorLocation),n=this._studio.$el;if(this._studio.$display.isXScrollable&&(n.scrollLeft=this._scrollStart.x-s.x),this._studio.$display.isYScrollable&&(n.scrollTop=this._scrollStart.y-s.y),this.isTouch(t)){let i=null===(e=this._studio.design)||void 0===e?void 0:e.sheet;if(i){let e=(this.getTouchDistance(t)-this._touchScaling[0])/30,s=this._studio.$display.getAutoScale();e=Math.round(e+this._touchScaling[1]),e<=s?(i.scale=Math.ceil(s),i.design.fullscreen=!0):(i.scale=Math.ceil(e),i.design.fullscreen=!1)}}this._scrolled=!0}}_setScroll(t){let e=this._studio.$el,i=this.isTouch(t)?t.touches[0]:t;window.clearTimeout(this._longPressTimeout),this._scrollStart=new T(e.scrollLeft,e.scrollTop),this._scrolled=!1,this._lastKnownCursorLocation=new T(i.screenX,i.screenY)}_bodyMouseup(t){this._dragEnd(),window.clearTimeout(this._longPressTimeout),this.isTouch(t)&&0==t.touches.length&&(this._scrollStart=null)}_dragEnd(){this.dragging=!1,this._studio.design&&(this._studio.design.dragging=!1)}_bodyMenu(t){t.preventDefault(),this._scrollStart=null}isTouch(t){return gt&&t instanceof TouchEvent}};var yt,vt,_t,xt,mt;t([e],ft.prototype,"_controls",null),t([e],ft.prototype,"selections",null),t([e],ft.prototype,"draggableSelections",null),t([e],ft.prototype,"dragging",void 0),ft=ut=t([e],ft),function(t){t.values=function(t){return Object.values(t).filter((t=>!isNaN(Number(t))))}}(yt||(yt={})),function(t){t[t.tooClose=0]="tooClose",t[t.overlap=1]="overlap",t[t.tooFar=2]="tooFar"}(vt||(vt={})),function(t){t[t.UR=0]="UR",t[t.UL=1]="UL",t[t.LL=2]="LL",t[t.LR=3]="LR",t[t.R=4]="R",t[t.T=5]="T",t[t.L=6]="L",t[t.B=7]="B",t[t.none=8]="none"}(_t||(_t={})),function(t){t[t.sheet=0]="sheet",t[t.shade=1]="shade",t[t.hinge=2]="hinge",t[t.ridge=3]="ridge",t[t.axisParallel=4]="axisParallel",t[t.junction=5]="junction",t[t.dot=6]="dot",t[t.label=7]="label",t[t.drag=8]="drag"}(xt||(xt={})),function(t){t[t.socket=0]="socket",t[t.internal=1]="internal",t[t.side=2]="side",t[t.intersection=3]="intersection",t[t.flap=4]="flap",t[t.coincide=5]="coincide"}(mt||(mt={}));const wt={[xt.sheet]:{clipped:!1,scaled:!0},[xt.shade]:{clipped:!0,scaled:!0},[xt.hinge]:{clipped:!0,scaled:!0},[xt.ridge]:{clipped:!0,scaled:!0},[xt.axisParallel]:{clipped:!0,scaled:!0},[xt.junction]:{clipped:!0,scaled:!0},[xt.dot]:{clipped:!1,scaled:!1},[xt.label]:{clipped:!1,scaled:!1},[xt.drag]:{clipped:!1,scaled:!0}};var bt;!function(t){t.circle={strokeWidth:1,strokeColor:"#69F"},t.dot={fillColor:"#69F",strokeWidth:1,strokeColor:"#000",radius:3},t.dotSelected={strokeWidth:3,strokeColor:"red"},t.hinge={strokeColor:"#69F",strokeWidth:3},t.sheet={strokeWidth:.25,strokeColor:"#000"},t.label={point:[0,0],fillColor:"black",fontWeight:"normal",strokeWidth:.5,fontSize:14},t.glow={point:[0,0],fontWeight:"normal",strokeWidth:2.5,strokeColor:"white",fontSize:14},t.edge={},t.ridge={strokeWidth:1.25,strokeColor:"red"},t.selection={strokeColor:"#69f",fillColor:"rgba(102, 153, 255, 0.2)"},t.shade={fillColor:"#69F",opacity:.3,strokeWidth:0},t.junction={strokeColor:"red",fillColor:"red",opacity:.3},t.axisParallel={strokeWidth:1,strokeColor:"green"},t.top={}}(bt||(bt={}));const St=[0,1,2,3];function Mt(t){return St.map(t)}function qt(t){return t<4}function It(t){return(t+2)%4}class Ct{constructor(t,e){e instanceof R&&(e=t.add(e)),this.p1=t,this.p2=e}toString(){return[this.p1,this.p2].sort().toString()}get isDegenerated(){return this.p1.eq(this.p2)}eq(t){return this.p1.eq(t.p1)&&this.p2.eq(t.p2)||this.p1.eq(t.p2)&&this.p2.eq(t.p1)}contains(t,e=!1){let i=t instanceof T?t:new T(t);if(e&&(i.eq(this.p1)||i.eq(this.p2)))return!0;var s=i.sub(this.p1),n=i.sub(this.p2);return s._x.mul(n._y).eq(n._x.mul(s._y))&&s.dot(n)<0}lineContains(t){return this.vector.parallel(t.sub(this.p1))}intersection(...t){if(void 0===t[1])return this.intersection(t[0].p1,t[0].p2.sub(t[0].p1));let[e,i,s]=t;var n=this.p2.sub(this.p1),r=new Pt(n._x,i._x,n._y,i._y).inverse;if(null==r)return null;var o=r.multiply(new T(e.sub(this.p1))),h=o._x,l=o._y.neg;return h.lt(0)||h.gt(1)||s&&l.lt(0)?null:e.add(i.scale(l))}transform(t,e){return new Ct(this.p1.transform(t,e),this.p2.transform(t,e))}shift(t){return new Ct(this.p1.add(t),this.p2.add(t))}static distinct(t){let e=new Set;return t.filter((t=>{let i=t.toString(),s=!e.has(i);return s&&e.add(i),s}))}static subtract(t,e){let i=[],s=new Map;for(let t of e){let e=t.slope.toString(),i=s.get(e);i||s.set(e,i=[]),i.push(t)}for(let e of t){let t=e.slope.toString();s.has(t)?i.push(...e.cancel(s.get(t))):i.push(e)}return i}cancel(t){let e=[this];for(let i of t){let t=[];for(let s of e)t.push(...s._cancel(i));e=t}return e}*_cancel(t){let e=this.contains(t.p1,!0),i=this.contains(t.p2,!0),s=t.contains(this.p1,!0),n=t.contains(this.p2,!0);if(!s||!n)if(!e&&!i||!s&&!n)yield this;else if(e&&i){let e=new Ct(this.p1,t.p1),i=new Ct(this.p1,t.p2),s=new Ct(this.p2,t.p1),n=new Ct(this.p2,t.p2);e.isDegenerated?yield n:i.isDegenerated?yield s:s.isDegenerated?yield i:n.isDegenerated?yield e:e.contains(t.p2)?(yield i,yield s):(yield e,yield n)}else{let i=e?t.p1:t.p2,s=n?this.p1:this.p2;i.eq(s)||(yield new Ct(i,s))}}get slope(){return this.p1._x.sub(this.p2._x).d(this.p1._y.sub(this.p2._y))}xOrient(){return this.p1._x.gt(this.p2._x)?[this.p2,this.p1]:[this.p1,this.p2]}*gridPoints(){let{p1:t,p2:e}=this,i=e.x-t.x,s=e.y-t.y;if(Math.abs(i)t.sub(i))),l=Pt.getTransformMatrix(o,r);return i.add(l.multiply(h))},t.collect=function(t){let e=[],i=new Map,n=0;for(let r of t){let t=!1;for(let[o,h]of r.entries()){let l=h.toString(),a=i.get(l);if(a){if(!e[a[0]])continue;e[a[0]].splice(a[1],0,...s(r,o));for(let[t,s]of e[a[0]].entries())i.set(s.toString(),[a[0],t]);t=!0;break}i.set(l,[n,o])}t||(e.push(r),n++)}return{paths:e,map:i}},t.join=function(t,e){t=t.concat(),e=e.concat();for(let i=0;it.add(e)))},t.polygonIntersect=function(t,s){let n=e(t),r=e(s);return t.some((t=>i(t,r)))||s.some((t=>i(t,n)))},t.lineInsidePath=function(t,s){let n=e(s);return i(t.p1,n,!0)&&i(t.p2,n,!0)},t.pointInsidePath=function(t,s){return i(t,e(s))}}(Nt||(Nt={}));class Et{constructor(t,e){t._x.gt(e._x)&&([t,e]=[e,t]),t._y.gt(e._y)&&([t,e]=[new T(t._x,e._y),new T(e._x,t._y)]),[this.p1,this.p2]=[t,e]}contains(t){return this.p1._x.le(t.p1._x)&&this.p1._y.le(t.p1._y)&&this.p2._x.ge(t.p2._x)&&this.p2._y.ge(t.p2._y)}equals(t){return this.p1.eq(t.p1)&&this.p2.eq(t.p2)}get width(){return this.p2._x.sub(this.p1._x).value}get height(){return this.p2._y.sub(this.p1._y).value}get top(){return this.p2.y}get right(){return this.p2.x}}!function(t){function e(t,e,i){let s=[],n=t.length-1;do{s.push(t[n])}while(!t[n--].eq(e));if(!(s.length<=2))for(let t of i)Nt.lineInsidePath(t,s)&&i.delete(t)}function s(t,e,i){return null!=t&&(null==e||t.dist.lt(e.dist)||t.dist.eq(e.dist)&&t.angle*iMath.PI;)i-=Math.PI;return i}function o(t,e,i,s,n){let o=i.rotate90(),h=t.p1.sub(e),l=t.p2.sub(e),a=h.dot(o),d=l.dot(o),c=h.dot(i),u=l.dot(i);return(a*s>0||d*s>0)&&(c>0||u>0||!!n&&r(i,t.vector)*s>n*s)}t.create=function(t,h,l,a,d,c){let u,p,g,f=[],y=[],v=l,_=h,x=new Set,m=new Set(t);i&&console.log([...a].toString());do{u=null;for(let t of m){let e=n(t,_,v);if(e){let n=p?r(v,p):void 0,h=a.has(e.point.toString())?-1:1;if(!o(t,_,v,h,n))continue;i&&console.log([JSON.stringify(e),t.toString()]),s(e,u,h)&&(u=e,g=t)}}if(u){let t=u.point,s=new Ct(_,t);if(c){let t=s.intersection(c);t&&(y.push(t),c=void 0)}let n=s.intersection(d);if(n){y.push(n);break}let r=t.toString();x.has(r)?e(f,t,m):x.add(r),f.push(t),c||y.length&&y[y.length-1].eq(t)||y.push(t),p=g.vector,v=g.reflect(v),i&&console.log([t.toString(),g.toString(),v.toString(),p.toString()]),_=t,m.delete(g)}}while(null!=u);return y}}(kt||(kt={})),function(t){function e(t,e){return{c:Ht(t.c),ox:t.ox,oy:t.oy,parent:e}}t.joinOverlaps=function(t,e,i,s,n,r=!1){r&&([t,e]=[e,t],[i,s]=[s,i]);let o=n?0:2,h=((e.ox>t.ox?3:1)+o)%4;return e.c[o]={type:mt.coincide,e:i,q:o},e.c[h]={type:mt.intersection,e:t.c[It(o)].e},t.c[It(h)]={type:mt.coincide,e:s,q:h},e},t.cut=function(t,i,s,n,r){let o=e(t,i),h=e(t,i);return n>0?(o.c[2]={type:mt.internal,e:s-1,q:3},o.c[1]={type:mt.socket,e:s-1,q:0},o.ox=n,h.c[3]={type:mt.socket,e:s,q:2},h.c[0]={type:mt.internal,e:s,q:1},h.ox=t.ox-n,h.shift={x:n,y:0}):(o.c[2]={type:mt.internal,e:s-1,q:1},o.c[3]={type:mt.socket,e:s-1,q:0},o.oy=r,h.c[1]={type:mt.socket,e:s,q:2},h.c[0]={type:mt.internal,e:s,q:3},h.oy=t.oy-r,h.shift={x:0,y:r}),[{overlaps:[o]},{overlaps:[h]}]},t.toOverlap=e}(Tt||(Tt={})),function(t){t.halfIntegral="HALFINTEGRAL",t.universal="UNIVERSAL",t.baseJoin="BASE_JOIN",t.standardJoin="STANDARD_JOIN",t.perfect="PERFECT"}(Rt||(Rt={}));class Ot{constructor(t,e){this.repo=t,this.seed=null==e?void 0:e.configuration,this.seedSignature=JSON.stringify(this.seed),this.pattern=null==e?void 0:e.pattern}*generate(t){if(this.seed&&this.pattern)try{let t=new W(this.repo,this.seed,this.pattern);if(!t.entry)throw!0;yield t}catch(t){this.seedSignature=void 0,console.log("Incompatible old version.")}yield*Bt.filter(this.search(),(t=>!this.seedSignature||this.seedSignature!=JSON.stringify(t))),t()}*search(){const t=this.repo.structure,e=t=>null!=t.entry;if(1==t.length){let[i]=t;yield*Bt.first([this.searchSingleGadget(i),this.searchDoubleRelay(i,0),this.searchSingleGadget(i,Rt.halfIntegral),this.searchSingleGadget(i,Rt.universal)],e)}if(2==t.length){let i=t;yield*Bt.first([this.searchThreeFlapJoin(i,Rt.perfect),this.searchThreeFlapRelay(i),this.searchThreeFlapJoin(i),this.searchThreeFlapRelayJoin(i),this.searchThreeFlapJoin(i,Rt.baseJoin),this.searchThreeFlapRelayJoin(i,Rt.baseJoin),this.searchThreeFlapJoin(i,Rt.standardJoin),this.searchThreeFlapRelayJoin(i,Rt.standardJoin),this.searchThreeFlapRelay(i,Rt.halfIntegral)],e)}}*searchSingleGadget(t,e){yield new W(this.repo,{partitions:[{overlaps:[Tt.toOverlap(t,0)],strategy:e}]})}*searchDoubleRelay(t,e){if(!(t.ox*t.oy%2))if(t.oxTt.toOverlap(t,e))),n=i.c[2].e==s.c[2].e;i.ox>s.ox&&([i,s]=[s,i]);let[r,o]=Ht([i,s]);o.ox-=i.ox,r.oy-=s.oy;let[h,l,a,d]=n?[0,1,2,3]:[2,3,0,1];o.c[a]={type:mt.internal,e:-1,q:d},o.c[l]={type:mt.intersection,e:i.c[h].e},i.c[d]={type:mt.socket,e:-2,q:a},r.c[a]={type:mt.internal,e:-2,q:l},r.c[d]={type:mt.intersection,e:s.c[h].e},s.c[l]={type:mt.socket,e:-1,q:a},n||(o.shift={x:i.ox,y:0},r.shift={x:0,y:s.oy}),yield new W(this.repo,{partitions:[{overlaps:[i],strategy:e},{overlaps:[o],strategy:e}]}),yield new W(this.repo,{partitions:[{overlaps:[r],strategy:e},{overlaps:[s],strategy:e}]})}*searchThreeFlapJoin(t,e){let[i,s]=t.map(((t,e)=>Tt.toOverlap(t,e)));Tt.joinOverlaps(i,s,-1,-2,i.c[0].e==s.c[0].e),yield new W(this.repo,{partitions:[{overlaps:[i,s],strategy:e}]})}*searchThreeFlapRelayJoin(t,e){let[i,s]=t.map(((t,e)=>Tt.toOverlap(t,e))),n=i.c[0].e==s.c[0].e,r=s.ox>i.ox,o=(r?i:s).ox,h=(r?s:i).oy;for(let t=1;tDt.instantiate(t))),this.addOns=null!==(n=null===(s=i.addOns)||void 0===s?void 0:s.map((t=>u.instantiate(t))))&&void 0!==n?n:[];let l=null!==(r=i.offset)&&void 0!==r?r:0;this.location={x:l*o,y:l*h},this.view=new Gt(this)}get type(){return"Device"}toJSON(){return{gadgets:this.gadgets.map((t=>t.toJSON())),offset:this.offset,addOns:this.addOns.length?this.addOns:void 0}}get _origin(){return this._originalDisplacement||(this._originalDisplacement=this.partition.getOriginalDisplacement(this.pattern)),this.pattern.stretch.origin.add(this._originalDisplacement)}get shouldDispose(){return super.shouldDispose||this.pattern.disposed}get isActive(){return this.pattern.isActive}get anchors(){let t=[],{fx:e,fy:i}=this.pattern.stretch;for(let s of this.gadgets)t.push(s.anchorMap.map((t=>{if(!t[0])debugger;return t[0].transform(e,i).add(this.delta)})));return t}get delta(){return this._origin.add(new R(this.location)).sub(T.ZERO)}get regions(){let t=[];for(let e of this.gadgets)t.push(...e.pieces);return t.push(...this.addOns),t}get regionRidges(){let t=new Map;for(let e of this.regions){let i=this.regions.filter((t=>t!=e&&t.direction.parallel(e.direction))).reduce(((t,e)=>(t.push(...e.shape.ridges.filter((t=>!t.perpendicular(e.direction)))),t)),[]);t.set(e,Ct.subtract(e.shape.ridges,i))}return t}get rawRidges(){let{fx:t,fy:e}=this.pattern.stretch,i=[],s=this.regionRidges;for(let n of this.regions)i.push(...s.get(n).map((i=>i.transform(t,e).shift(this.delta))));return Ct.distinct(i)}get ridges(){return Ct.subtract(this.rawRidges,this.neighbors.reduce(((t,e)=>(t.push(...e.rawRidges),t)),[]))}get axisParallels(){let{fx:t,fy:e}=this.pattern.stretch,i=[];for(let s of this.regions)for(let n of s.axisParallels)i.push(n.transform(t,e).shift(this.delta));return i}get outerRidges(){if(!this.isActive)return[];let t=this.getConnectionRidges();for(let[e,i]of this.intersectionMap)i&&t.push(new Ct(e,i));return Ct.distinct(t)}get intersectionMap(){let t=[];if(!this.isActive)return t;for(let[e,i,s]of this.partition.intersectionCorners){let n=this.anchors[i][s],r=this.partition.getSideConnectionTarget(n,e);t.push([n,r])}return t}get openAnchors(){return this.intersectionMap.filter((t=>!t[1]||t[0].eq(t[1]))).map((t=>t[0]))}getConnectionRidges(t=!1){let e=[];for(let[i,s]of this.partition.overlaps.entries())for(let[n,r]of s.c.entries())(r.type==mt.flap&&!t||r.type==mt.internal)&&e.push(new Ct(this.anchors[i][n],this.pattern.getConnectionTarget(r)));return e}constraint(t,e){let{fx:i,fy:s}=this.pattern.stretch,n=i*s,r=Math.round((t.x+n*t.y)/2);for(let[t,e,i]of this.partition.constraints)r=this.fix(r,t,e,i);return new R(r,n*r)}get neighbors(){let t=new Set;for(let e of this.partition.overlaps)for(let i of e.c)if(i.type==mt.socket||i.type==mt.internal){let[e]=this.partition.configuration.overlapMap.get(i.e);t.add(this.pattern.devices[e])}return Array.from(t)}fix(t,e,i,s){let n=e.type!=mt.socket,r=this.pattern.stretch.fx*(0==(n?s:It(e.q))?-1:1),o=this.pattern.getConnectionTarget(e),h=n?this.gadgets[i].slacks[s]:this.pattern.gadgets[-e.e-1].slacks[e.q],l=o.x-this.anchors[i][s].x-h*r;return t*r>l*r&&(t=l),t}get offset(){let t=this.partition.getOriginalDisplacement(this.pattern).x;return t-=this._originalDisplacement.x,(this.location.x-t)*this.pattern.stretch.fx}};t([e],jt.prototype,"isActive",null),t([e],jt.prototype,"anchors",null),t([e],jt.prototype,"delta",null),t([o],jt.prototype,"regions",null),t([o],jt.prototype,"regionRidges",null),t([e],jt.prototype,"rawRidges",null),t([e],jt.prototype,"ridges",null),t([e],jt.prototype,"axisParallels",null),t([e],jt.prototype,"outerRidges",null),t([e],jt.prototype,"intersectionMap",null),t([e],jt.prototype,"openAnchors",null),t([e],jt.prototype,"neighbors",null),jt=t([e],jt);class Dt{constructor(t){this.pieces=t.pieces.map((t=>c.instantiate(t))),this.offset=t.offset,this.pieces.forEach((t=>t.offset(this.offset))),this.anchors=t.anchors}toJSON(){return Ht(this)}get anchorMap(){return Mt((t=>{var e,i;if(null===(i=null===(e=this.anchors)||void 0===e?void 0:e[t])||void 0===i?void 0:i.location){let e=new T(this.anchors[t].location);return this.offset&&e.addBy(new R(this.offset)),[e,null]}if(1==this.pieces.length)return[this.pieces[0].anchors[t],0];for(let[e,i]of this.pieces.entries())if(i.anchors[t])return[i.anchors[t],e];debugger;throw new Error}))}_getSlack(t){var e,i,s;return null!==(s=null===(i=null===(e=this.anchors)||void 0===e?void 0:e[t])||void 0===i?void 0:i.slack)&&void 0!==s?s:0}get slacks(){return Mt((t=>this._getSlack(t)))}get sx(){return Math.ceil(this.anchorMap[2][0].x-this.anchorMap[0][0].x)}get sy(){return Math.ceil(this.anchorMap[2][0].y-this.anchorMap[0][0].y)}reverseGPS(){let t=Dt.instantiate(this.toJSON()),[e,i]=t.pieces,s=Math.ceil(Math.max(e.sx,i.sx)),n=Math.ceil(Math.max(e.sy,i.sy));return e.reverse(s,n),i.reverse(s,n),t}addSlack(t,e){var i;return this.anchors=this.anchors||[],this.anchors[t]=this.anchors[t]||{},this.anchors[t].slack=(null!==(i=this.anchors[t].slack)&&void 0!==i?i:0)+e,this}setupConnectionSlack(t,e,i){let s=this.contour,n=t.contour,r=0==e?1:-1,o=new R(r,r),h=t.anchorMap[i][0].sub(T.ZERO).addBy(o.scale(this._getSlack(e)));s=Nt.shift(s,0==e?h:h.add(T.ZERO.sub(this.anchorMap[2][0])));let l=0;for(;Nt.polygonIntersect(s,n);)s=Nt.shift(s,o),l++;return this.addSlack(e,l),l}get contour(){let t=this.pieces,e=t[0].shape.contour;for(let i=1;iNt.pointInsidePath(t,e.shape.contour)))}static instantiate(t){return t instanceof Dt?t:new Dt(t)}static simplify(t){if(t.offset&&0==t.offset.x&&0==t.offset.y&&delete t.offset,t.anchors){for(let[e,i]of t.anchors.entries())i&&(0===i.slack&&delete i.slack,0==Object.keys(i).length&&delete t.anchors[e]);t.anchors.some((t=>!!t))||delete t.anchors}return t}}t([o],Dt.prototype,"anchorMap",null),t([o],Dt.prototype,"slacks",null),t([o],Dt.prototype,"sx",null),t([o],Dt.prototype,"sy",null),t([o],Dt.prototype,"contour",null);class At{constructor(t,e){let i=[],[s,n]=t;if(s.ox==n.ox||s.oy==n.oy)return;[this.g1,this.g2]=t.map((t=>{let s=e.structure[t.parent];return i.push(s),Array.from(c.gops(t,s.sx))}));let[r,o]=i;this.oriented=r.c[0].e==o.c[0].e,this.cw=s.ox>n.ox,this.q=this.oriented?0:2,[this.q1,this.q2]=this.oriented?this.cw?[2,1]:[1,2]:this.cw?[0,3]:[3,0],this.intDist=l.getMaxIntersectionDistance(e.sheet.design.tree,r,o,this.oriented),[this.s1,this.s2]=this.oriented?[s.shift,n.shift]:[this.getReverseShift(s,r),this.getReverseShift(n,o)]}*join(t,e){let{g1:i,g2:s}=this,n=[];if(i){for(let r of i)for(let i of s){let s=c.instantiate(r,!0),o=c.instantiate(i,!0);e&&!e(s,o)||n.push(...t(new Jt(this,s,o)))}n.sort(((t,e)=>t[1]-e[1]));for(let[t]of n)yield t}}*simpleJoin(t){let{s1:e,s2:i}=this;yield*this.join((t=>t.simpleJoin()),((s,n)=>{let r=s.direction.parallel(n.direction);return!(t==Rt.perfect&&!r)&&(!e&&!i||!r)}))}*baseJoin(){yield*this.join((t=>t.baseJoin()))}*standardJoin(){let{s1:t,s2:e}=this,i=!!t||!!e,s=0;yield*this.join((t=>t.standardJoin()),((t,e)=>i||0==s++))}getReverseShift(t,e){var i,s,n,r;let o=t.ox+(null!==(s=null===(i=t.shift)||void 0===i?void 0:i.x)&&void 0!==s?s:0),h=t.oy+(null!==(r=null===(n=t.shift)||void 0===n?void 0:n.y)&&void 0!==r?r:0);if(o!=e.ox||h!=e.oy)return{x:o-e.ox,y:h-e.oy}}getRelayJoinIntersection(t,e,i){let s=this.oriented?new R(1,1):new R(-1,-1),n=t.anchors[this.q].sub(new R(e));return t.shape.ridges[i].intersection(n,s)}}class Jt{constructor(t,e,i){let{oriented:s,s1:n,s2:r,q1:o,q2:h,q:l}=this.joiner=t,a=[],d=[],c=e.sx+i.sx,u={x:0,y:0},p={x:0,y:0};if(n){let r=t.getRelayJoinIntersection(i,n,(o+2)%4);if(!r||!r.isIntegral)return;s?(e.offset(u=r.toIPoint()),c+=u.x,a[l]={location:{x:-u.x,y:-u.y}}):(i.offset(p={x:i.sx-r.x,y:i.sy-r.y}),c+=p.x,a[l]={location:{x:e.sx+p.x,y:e.sy+p.y}})}if(r){let n=t.getRelayJoinIntersection(e,r,(h+2)%4);if(!n||!n.isIntegral)return;s?(i.offset(p=n.toIPoint()),c+=p.x,d[l]={location:{x:-p.x,y:-p.y}}):(i.offset(p={x:n.x-e.sx,y:n.y-e.sy}),c-=p.x,d[l]={location:{x:i.sx-p.x,y:i.sy-p.y}})}let g,f=R.ZERO;s||(g={x:e.sx-i.sx,y:e.sy-i.sy},f=new R(g));let y=new R(u).neg,v=new R(p).addBy(f).neg,_=n?e.anchors[l]:i.anchors[l].add(f),x=_.add(y).toIPoint(),m=_.add(v).toIPoint(),w=e.shape.ridges[o],b=i.shape.ridges[h].shift(f),S=R.bisector(e.direction,i.direction),M=s?T.ZERO:n?new T(a[l].location):e.anchors[l],q=s?1:-1;this.data={p1:e,p2:i,v1:y,v2:v,a1:a,a2:d,off1:u,off2:p,offset:g,size:c,pt:_,pt1:x,pt2:m,e1:w,e2:b,bv:S,org:M,f:q}}*simpleJoin(){if(!this.data)return;let{e1:t,e2:e,p1:i,p2:s,pt:n,bv:r}=this.data,o=t.intersection(e);o&&(i.direction.parallel(s.direction)||o.sub(n).parallel(r))&&this.setupAnchor(o)&&(this.setupDetour([o],[o]),yield this.result())}get deltaPt(){let{org:t,p1:e,p2:i,f:s}=this.data,{cw:n,intDist:r}=this.joiner;return new T(t.x+(r-(n?i:e).ox)*s,t.y+(r-(n?e:i).oy)*s)}baseJoinIntersections(){let{bv:t,e1:e,e2:i,pt:s}=this.data,n=new Ct(this.deltaPt,D.QV[0]),r=new Ct(s,t);return{D1:e.intersection(n),D2:i.intersection(n),B1:e.intersection(r),B2:i.intersection(r),delta:n}}*baseJoin(){if(!this.data)return;let{D1:t,D2:e,B1:i,B2:s}=this.baseJoinIntersections();if((null==i?void 0:i.isIntegral)&&(null==e?void 0:e.isIntegral)&&!i.eq(e)){if(!this.setupAnchor(e))return;this.setupDetour([i],[e,i]),yield this.result(!0)}if((null==s?void 0:s.isIntegral)&&(null==t?void 0:t.isIntegral)&&!s.eq(t)){if(!this.setupAnchor(t))return;this.setupDetour([t,s],[s]),yield this.result()}}substituteEnd(t,e){let[i,s]=t.xOrient();return new Ct(e,this.joiner.oriented?s:i)}closestGridPoint(t,e){let i,s=Number.POSITIVE_INFINITY;for(let n of t.gridPoints()){let t=n.dist(e);ti.x*r?yield*this.obtuseStandardJoin(i,e,0):yield*this.acuteStandardJoin(i,e,1,n)),s&&t&&!s.eq(t)&&(t.x*r>s.x*r?yield*this.obtuseStandardJoin(s,t,1):yield*this.acuteStandardJoin(s,t,0,n))}*obtuseStandardJoin(t,e,i){if(t.isIntegral)return;let{e1:s,e2:n,p1:r,p2:o,pt:h,f:l}=this.data,{cw:a}=this.joiner,d=[s,n][i],c=[r,o][i];if(a!=r.direction.slope.gt(o.direction.slope))return;if(!this.setupAnchor(e))return;let u=e.sub(t).slope.gt(1)?d.xIntersection(e.x):d.yIntersection(e.y),p=this.closestGridPoint(this.substituteEnd(d,t),e);if(p.eq(d.p1)||p.eq(d.p2))return;let g=Nt.triangleTransform([e,u,t],p);g.x*lt.toIPoint())),dir:new Ct(p,g).reflect(c.direction).toIPoint()}],this.setupDetour([0==i?p:e,g],[0==i?e:p,g]),yield this.result(!0,g.dist(p)))}*acuteStandardJoin(t,e,i,s){if(e.isIntegral)return;let{e1:n,e2:r,p1:o,p2:h}=this.data,l=[n,r][i],a=[o,h][i],d=this.closestGridPoint(this.substituteEnd(l,e),t);if(d.eq(l.p1)||d.eq(l.p2))return;let c=e.sub(t).slope.gt(1)?s.yIntersection(d.y):s.xIntersection(d.x),u=Nt.triangleTransform([d,e,c],t);this.setupAnchor(u)&&(this.data.addOns=[{contour:[t,d,u].map((t=>t.toIPoint())),dir:new Ct(d,t).reflect(a.direction).toIPoint()}],this.setupDetour(0==i?[d,t]:[t],0==i?[t]:[d,t]),yield this.result(!0,t.dist(d)))}setupDetour(t,e){let{p1:i,p2:s,v1:n,v2:r,pt1:o,pt2:h}=this.data,l=t.map((t=>t.add(n).toIPoint()));l.push(o);let a=e.map((t=>t.add(r).toIPoint()));a.push(h),(this.joiner.cw?a:l).reverse(),i.clearDetour(),i.addDetour(l),s.clearDetour(),s.addDetour(a)}setupAnchor(t){let{a1:e,a2:i,v1:s,v2:n,f:r}=this.data,{oriented:o,cw:h}=this.joiner;if(t.x*r>this.deltaPt.x*r)return!1;let l=o==h;return e[l?3:1]={location:t.add(s).toIPoint()},i[l?1:3]={location:t.add(n).toIPoint()},!0}result(t=!1,e){let{p1:i,p2:s,a1:n,a2:r,off1:o,off2:h,offset:l,size:a,addOns:d}=this.data;return this.data.addOns=void 0,l&&(h={x:h.x+l.x,y:h.y+l.y}),[{gadgets:[{pieces:[t?i.toJSON():i],offset:this.simplifyIPoint(o),anchors:n.concat()},{pieces:[t?s.toJSON():s],offset:this.simplifyIPoint(h),anchors:r.concat()}],addOns:d},a+10*(null!=e?e:0)]}simplifyIPoint(t){return t&&0==t.x&&0==t.y?void 0:t}}t([o],Jt.prototype,"deltaPt",null);let $t=class extends ${constructor(t,e,i){super(t.sheet),this.joinerCache=new Map,this.stretch=t,this.signature=e,this.structure=JSON.parse(e),this.generator=new Ot(this,i).generate((()=>this.joinerCache.clear()))}builder(t){return t}get isActive(){return this.stretch.isActive&&this.stretch.repository==this}onMove(){this.stretch.selected=!this.entry.entry.selected}getJoiner(t){let e=JSON.stringify(t),i=this.joinerCache.get(e);return i||this.joinerCache.set(e,i=new At(t,this)),i}};var Lt,Bt,Vt,Ft,Wt;function zt(t,...e){for(let i of e)if(i instanceof Object){let e=Object.keys(i);for(let s of e){let e=i[s];e instanceof Object?t[s]instanceof Object&&t[s]!=e?t[s]=zt(t[s],e):t[s]=Ht(e):t[s]=e}}return t}function Ht(t){return zt(t instanceof Array?[]:{},t)}t([e],$t.prototype,"isActive",null),$t=t([e],$t),function(t){t.parse=function(t,s){try{let n=new e(s),{result:r}=new i(n);return r.title=t,r}catch(t){throw"string"==typeof t?new Error(t):new Error("plugin.TreeMaker.invalid")}};class e{constructor(t){this.lines=t.split("\n").values()}get next(){return this.lines.next().value.trim()}get int(){return parseInt(this.next)}get float(){return parseFloat(this.next)}get bool(){return"true"==this.next}skip(t){for(let e=0;e{let e=t.clone({insert:!1});return t.layer&&e.transform(t.layer.matrix),e})),a=0,d=0;for([a,d]of h){i(t,s,n,r,a,d);let e=new paper.Path.Rectangle(t.bounds);if(t.layer&&e.transform(t.layer.matrix),l.every((t=>{let i=e.intersect(t,{insert:!1}).isEmpty(),s=!e.intersects(t);return i&&s})))break}e.set(t,{dx:a,dy:d,timeout:void 0})}(s,p,g,u,o);!function(t,e){e.point.set(t.point),e.justification=t.justification}(s,n)}}(Vt||(Vt={})),function(t){function e(t,e){if("number"==typeof t&&!Number.isSafeInteger(t))throw new Error("Not a safe integer: "+t);if("number"==typeof e&&!Number.isSafeInteger(e))throw new Error("Not a safe integer: "+e);if(0==t&&0==e)throw new Error("Input cannot be both zero");for(t<0&&(t=-t),e<0&&(e=-e);t&&e;)(t%=e)&&(e%=t);return t||e}t.GCD=e,t.LCM=function(t){let i=t[0];for(let s=1;s0?Math.ceil(t):Math.floor(t)}}(Ft||(Ft={})),function(t){let e,i;t.replaceContent=function(t,e,i){t.removeChildren(),e instanceof paper.CompoundPath?t.copyContent(e):(i&&(e=e.clone({insert:!1})),t.addChild(e))},t.setRectangleSize=function(t,e,i){t.segments[1].point.set(e,0),t.segments[2].point.set(e,i),t.segments[3].point.set(0,i)},t.addLine=function(t,e,i){e instanceof T&&(e=e.toPaper()),i instanceof T&&(i=i.toPaper()),t.moveTo(e),t.lineTo(i)},t.setLines=function(e,...i){e.removeChildren();for(let s of i)for(let i of s)t.addLine(e,i.p1,i.p2)},t.Black=function(){return e=e||new paper.Color("black")},t.Red=function(){return i=i||new paper.Color("red")}}(Wt||(Wt={}));let Gt=class extends L{constructor(t){super(t),this.$addItem(xt.axisParallel,this._axisParallels=new paper.CompoundPath(bt.axisParallel)),this.$addItem(xt.ridge,this._ridges=new paper.CompoundPath(bt.ridge)),this.$addItem(xt.shade,this._shade=new paper.CompoundPath(bt.shade))}contains(t){return this._shade.contains(t)}render(){let t=null;for(let e of this.control.regions){let i=this.contourToPath(e.shape.contour);t=t?t.unite(i,{insert:!1}):i}Wt.replaceContent(this._shade,t,!1),Wt.setLines(this._ridges,this.control.ridges,this.control.outerRidges),Wt.setLines(this._axisParallels,this.control.axisParallels)}contourToPath(t){let e=new paper.Path({closed:!0}),{fx:i,fy:s}=this.control.pattern.stretch,n=this.control.delta;return t.forEach((t=>e.add(t.transform(i,s).add(n).toPaper()))),e}renderSelection(t){this._shade.visible=t||this.control.pattern.configuration.repository.stretch.selected}};return Gt=t([e],Gt),rt})); \ No newline at end of file +!function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():t.BPStudio=e()}(this,(function(){var t=this&&this.__decorate||function(t,e,i,s){var n,r=arguments.length,o=r<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,i,s);else for(var h=t.length-1;h>=0;h--)(n=t[h])&&(o=(r<3?n(o):r>3?n(e,i,o):n(e,i))||o);return r>3&&o&&Object.defineProperty(e,i,o),o};if("object"!=typeof Shrewd)throw new Error("BPStudio requires Shrewd.");const{shrewd:e}=Shrewd;Shrewd.option.autoCommit=!1,setInterval((()=>Shrewd.commit()),50);let i=!1;function s(t,e){if(void 0===e)return(e,i)=>n(e,i,t);n(t,e,{})}function n(t,i,s){e({validator(t){var e,n;let o=r.get(this);o||r.set(this,o={});let h=null===(n=null===(e=s.validator)||void 0===e?void 0:e.apply(this,[t]))||void 0===n||n;if(h){if(i in o&&o[i]!=t){if(!("design"in this))debugger;this.design.history.fieldChange(this,i,o[i],t)}o[i]=t}return h}})(t,i)}const r=new WeakMap;function o(t,e,i){let s=i.get;return{get(){let t=h.get(this);return t||h.set(this,t={}),e in t?t[e]:t[e]=s.apply(this)},enumerable:!1,configurable:!1}}const h=new WeakMap;class l{constructor(t,e){this.configuration=t,this.overlaps=e.overlaps,this.strategy=e.strategy}static getMaxIntersectionDistance(t,e,i,s){let n=s?2:0,r=t.node.get(e.c[n].e),o=t.node.get(i.c[n].e),h=t.node.get(e.c[2-n].e);return t.distTriple(r,o,h).d3}*generate(){let{strategy:t}=this;if(1==this.overlaps.length){let e=this.overlaps[0],i=this.configuration.repository.structure[e.parent];if(t==Rt.halfIntegral)for(let t of this.halfKamiya(e,i.sx))yield{gadgets:[t]};if(t==Rt.universal)for(let t of this.universalGPS(e,i.sx))yield{gadgets:[t]};else for(let t of c.gops(e,i.sx))yield{gadgets:[{pieces:[t]}]}}if(2==this.overlaps.length){let e=this.configuration.repository.getJoiner(this.overlaps);t==Rt.baseJoin?yield*e.baseJoin():t==Rt.standardJoin?yield*e.standardJoin():yield*e.simpleJoin(t)}}*universalGPS(t,e){let i=2,s=!1;for(;!s;){let n=Ht(t);n.ox*=i,n.oy*=i;for(let t of c.gops(n,e*i)){let e=c.instantiate(t).shrink(i);if(!Number.isInteger(e.v))continue;let{ox:n,oy:r,u:o,v:h}=e,l={ox:n,oy:r,u:h,v:o},a={x:0,y:0},d={x:r+o+h,y:n+o+h};e.detours=[[a,d]],l.detours=[[d,a]];let u=e.oy+e.u+e.v,p=Math.ceil(u)-u,g=new jt({pieces:[e,l]}),f=g.reverseGPS();yield g.addSlack(2,p),yield f.addSlack(0,p),s=!0}i+=2}}*halfKamiya(t,e){if(t.ox%2==0||t.oy%2==0)return;let i=Ht(t);i.ox<<=1,i.oy<<=1;for(let t of c.gops(i,2*e)){let e=c.instantiate(t);if(e.rank>3)continue;let i=e.v%2==0;if(e.ox==e.oy&&i)continue;let{ox:s,oy:n,u:r,v:o}=e.shrink(2),h=Math.abs(s-n)/2;if(!Number.isInteger(h))debugger;let l,a=Math.min(s,n);if(i&&s>=n)e.detours=[[{x:h,y:3*h},{x:n+r+o,y:s+r+o}]],l={ox:a,oy:a,u:o,v:r-h,detours:[[{x:a+r+o-h,y:a+r+o-h},{x:0,y:0}]],shift:{x:h,y:3*h}};else{if(i||!(n>=s))continue;e.detours=[[{x:n+r+o,y:s+r+o},{x:3*h,y:h}]],l={ox:a,oy:a,u:o-h,v:r,detours:[[{x:0,y:0},{x:a+r+o-h,y:a+r+o-h}]],shift:{x:3*h,y:h}}}let d=new jt({pieces:[e,l]}),u=d.reverseGPS();yield d.addSlack(2,.5),yield u.addSlack(0,.5)}}}class a{get axisParallels(){let t=this.shape.contour.find((t=>t.isIntegral)),e=this.direction,i=e.rotate90().normalize(),s=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY;for(let e of this.shape.contour){let r=e.sub(t).dot(i);r>n&&(n=r),rt.addBy(this._shift))),n}get _shift(){var t,e,i,s,n,r,o,h;return new R((null!==(e=null===(t=this.shift)||void 0===t?void 0:t.x)&&void 0!==e?e:0)+(null!==(s=null===(i=this._offset)||void 0===i?void 0:i.x)&&void 0!==s?s:0),(null!==(r=null===(n=this.shift)||void 0===n?void 0:n.y)&&void 0!==r?r:0)+(null!==(h=null===(o=this._offset)||void 0===o?void 0:o.y)&&void 0!==h?h:0))}get shape(){let t=this._points.concat(),e=t.map(((t,e,i)=>new Nt(t,i[(e+1)%i.length])));return(this.detours||[]).forEach((i=>{let s=i.map((t=>new T(t.x,t.y).addBy(this._shift))),n=s[0],r=s[s.length-1],o=[];for(let t=0;te.eq(t[0])))?t[0]:null,e.includes(t[1])?t[1]:null,e.some((e=>e.eq(t[2])))?t[2]:null,e.includes(t[3])?t[3]:null]}get direction(){let{oy:t,v:e}=this;return new R(t+e,e).doubleAngle()}get sx(){return this.oy+this.u+this.v}get sy(){return this.ox+this.u+this.v}get rank(){let t=Ft.reduce(this.oy+this.v,this.oy)[0],e=Ft.reduce(this.ox+this.u,this.ox)[0];return Math.max(t,e)}reverse(t,e){let{shift:i,detours:s,sx:n,sy:r}=this;i=i||{x:0,y:0};let o={x:t-n-i.x,y:e-r-i.y};(o.x||o.y)&&(this.shift=o),null==s||s.forEach((t=>t.forEach((t=>{t.x=n-t.x,t.y=r-t.y}))))}shrink(t=2){return h.delete(this),this.ox/=t,this.oy/=t,this.u/=t,this.v/=t,this}offset(t){!t||this._offset&&this._offset.x==t.x&&this._offset.y==t.y||(this._offset=t,h.delete(this))}addDetour(t){t=Ht(t);for(let e=0;e!Number.isSafeInteger(t))))return;if(i%2&&s%2)return;void 0===e&&(e=Number.POSITIVE_INFINITY);let n=i*s/2;for(let t,r=Math.floor(Math.sqrt(n));r>0&&r+(t=n/r)+s<=e;r--)if(n%r==0&&(r==t&&(yield{ox:i,oy:s,u:r,v:t}),r!=t)){let e=new c({ox:i,oy:s,u:r,v:t}),n=new c({ox:i,oy:s,u:t,v:r});e.rank>n.rank?(yield n,yield e):(yield e,yield n)}}static instantiate(t,e=!1){return t instanceof c&&!e?t:new c(t)}}t([o],c.prototype,"_points",null),t([function(t,e,i){if(i)return i.enumerable=!1,i;Object.defineProperty(t,e,{set(t){Object.defineProperty(this,e,{value:t,writable:!0,configurable:!1})},configurable:!0})}],c.prototype,"_offset",void 0),t([o],c.prototype,"_shift",null),t([o],c.prototype,"shape",null),t([o],c.prototype,"anchors",null),t([o],c.prototype,"direction",null),t([o],c.prototype,"rank",null);class u extends a{constructor(t){super(),this.contour=t.contour,this.dir=t.dir}get shape(){let t=this.contour.map((t=>new T(t))),e=t.map(((t,e,i)=>new Nt(t,i[(e+1)%i.length])));return{contour:t,ridges:e}}get direction(){return new R(this.dir)}static instantiate(t){return t instanceof u?t:new u(t)}}t([o],u.prototype,"shape",null),t([o],u.prototype,"direction",null);let p=class{constructor(){this._map=new Map,this._size=0}set(t,e,i){return this.has(t,e)||(this._map.has(t)||this._map.set(t,new Map),this._map.has(e)||this._map.set(e,new Map),this._size++),this._map.get(t).set(e,i),this._map.get(e).set(t,i),this}get[Symbol.toStringTag](){return"DoubleMap"}has(...t){return this._size,1==t.length?this._map.has(t[0]):this._map.has(t[0])&&this._map.get(t[0]).has(t[1])}get(...t){return this._size,1==t.length?this._map.get(t[0]):this.has(t[0],t[1])?this._map.get(t[0]).get(t[1]):void 0}get size(){return this._size}clear(){this._map.clear(),this._size=0}forEach(t,e){e||(e=this);for(let[i,s,n]of this.entries())t.apply(e,[n,i,s,this])}delete(...t){if(1==t.length){if(!this._map.has(t[0]))return!1;this._size-=this._map.get(t[0]).size,this._map.delete(t[0]);for(let e of this._map.values())e.delete(t[0]);return!0}return!!this.has(t[0],t[1])&&(this._map.get(t[0]).delete(t[1]),this._map.get(t[1]).delete(t[0]),this._size--,!0)}[Symbol.iterator](){return this.entries()}*entries(){for(let[t,e]of this.keys())yield[t,e,this.get(t,e)]}*keys(){this._size;let t=new Map;for(let e of this._map.keys()){t.set(e,new Set);for(let i of this._map.get(e).keys())t.has(i)&&t.get(i).has(e)||(t.get(e).add(i),yield[e,i])}}firstKeys(){return this._size,this._map.keys()}*values(){for(let[t,e]of this.keys())yield this.get(t,e)}};t([e],p.prototype,"_size",void 0),p=t([e],p);class g{constructor(t,e,i,s){this.source=t,this.keyGen=e,this.ctor=i,this.dtor=s,this._map=new Map}render(){for(let[t,e]of this._map)this.dtor(t,e)&&this._map.delete(t);for(let t of this.source()){let e=this.keyGen(t);this._map.has(e)||this._map.set(e,this.ctor(t))}return new Map(this._map)}get(t){return this.render().get(t)}has(t){return this.render().has(t)}forEach(t,e){return this.render().forEach(t,e)}get size(){return this.render().size}[Symbol.iterator](){return this.render()[Symbol.iterator]()}entries(){return this.render().entries()}keys(){return this.render().keys()}values(){return this.render().values()}toJSON(){return Array.from(this.values()).map((t=>t.toJSON()))}}t([e],g.prototype,"render",null);let f=class{constructor(t,e){this._source=t,this._constructor=e,this._map=new p}dispose(){Shrewd.terminate(this._map),Shrewd.terminate(this)}has(...t){return this._map.has.apply(this._map,t)}get(...t){return this._map.get.apply(this._map,t)}get size(){return this._map.size}forEach(t,e){return this._map.forEach(t,e)}[Symbol.iterator](){return this._map[Symbol.iterator]()}entries(){return this._map.entries()}keys(){return this._map.keys()}firstKeys(){return this._map.firstKeys()}values(){return this._map.values()}};t([e({renderer(t){for(let e of t.firstKeys())e.disposed&&t.delete(e);let e=Array.from(this._source());e.length>1&&0==t.size&&t.set(e[0],e[1],this._constructor(e[0],e[1]));for(let i of e)if(!t.has(i)){let e=Array.from(t.firstKeys());for(let s of e)t.set(i,s,this._constructor(i,s))}return t}})],f.prototype,"_map",void 0),f=t([e],f),window.BigInt=window.BigInt||(t=>t);const y=BigInt(1);class v{constructor(t,e=1){if(t instanceof v)this._p=t._p,this._q=t._q*BigInt(e);else if("bigint"==typeof t&&"bigint"==typeof e)this._p=t,this._q=e;else if("bigint"==typeof t&&1===e)this._p=t,this._q=y;else{if("number"!=typeof t||"number"!=typeof e){debugger;throw new Error("Parameters are not valid")}if(Number.isSafeInteger(t)&&Number.isSafeInteger(e))this._p=BigInt(t),this._q=BigInt(e);else{if(!Number.isFinite(t/e)){debugger;throw new Error("Parameters are not valid")}{let i=v.toFraction(t/e);this._p=i._p,this._q=i._q}}}}static toFraction(t,e=1,i=0,s=v.ERROR){let n=Math.floor(t),r=t-n,o=n*i+e;return r/o/((1-r)*o+i)1?"/"+this._q:"")}c(){return new v(this._p,this._q)}smp(){return[this._p,this._q]=Ft.reduce(this._p,this._q),this._check()}n(){return this._p=-this._p,this}i(){return[this._p,this._q]=[this._q,this._p],this}r(){return this._p=BigInt(Math.round(this.value)),this._q=y,this}a(t){return t instanceof v?(this._p=this._p*t._q+this._q*t._p,this._q*=t._q):Number.isInteger(t)?this._p+=BigInt(t)*this._q:this.a(new v(t)),this}s(t){return t instanceof v?(this._p=this._p*t._q-this._q*t._p,this._q*=t._q):Number.isInteger(t)?this._p-=BigInt(t)*this._q:this.s(new v(t)),this}m(t){return t instanceof v?(this._p*=t._p,this._q*=t._q):Number.isInteger(t)?this._p*=BigInt(t):this.m(new v(t)),this._check()}d(t){return t instanceof v?(this._p*=t._q,this._q*=t._p):Number.isInteger(t)?this._q*=BigInt(t):this.d(new v(t)),this._check()}_check(){return this._q<0&&(this._q=-this._q,this._p=-this._p),this}get neg(){return this.c().n()}get inv(){return this.c().i()}add(t){return this.c().a(t)}sub(t){return this.c().s(t)}mul(t){return this.c().m(t)}div(t){return this.c().d(t)}eq(t){return t instanceof v?this._p*t._q==this._q*t._p:this._p==this._q*BigInt(t)}ne(t){return t instanceof v?this._p*t._q!=this._q*t._p:Number.isSafeInteger(t)?this._p!=this._q*BigInt(t):this.ne(new v(t))}lt(t){return t instanceof v?this._p*t._qthis._q*t._p:Number.isSafeInteger(t)?this._p>this._q*BigInt(t):this.gt(new v(t))}le(t){return t instanceof v?this._p*t._q<=this._q*t._p:Number.isSafeInteger(t)?this._p<=this._q*BigInt(t):this.le(new v(t))}ge(t){return t instanceof v?this._p*t._q>=this._q*t._p:Number.isSafeInteger(t)?this._p>=this._q*BigInt(t):this.ge(new v(t))}toJSON(){return this.toString()}}v.ERROR=1e-12;class _ extends l{constructor(t,e){super(t,e),this.cornerMap=[];for(let[t,i]of e.overlaps.entries())for(let[e,s]of i.c.entries())this.cornerMap.push([s,t,e])}get intersectionCorners(){return this.cornerMap.filter((t=>{let e=t[0].type;return e==xt.side||e==xt.intersection}))}get outCorners(){return this.intersectionCorners.concat(this.cornerMap.filter((t=>t[0].type==xt.flap)))}get constraints(){return this.cornerMap.filter((t=>{let e=t[0].type;return e==xt.socket||e==xt.internal||e==xt.flap}))}getOriginalDisplacement(t){let e=this.overlaps.find((t=>t.c[0].type!=xt.coincide));return t.getConnectionTarget(e.c[0]).sub(this.configuration.repository.stretch.origin)}get _sideConnectionTarget(){let t=new Map,e=this.configuration.sheet.design.flapsById;for(let[i,s,n]of this.intersectionCorners){let r=this.overlaps[s],o=this.getParent(r),[h,l]=[o.c[0],o.c[2]],[a,d]=[e.get(h.e),e.get(l.e)],c=a.quadrants[h.q],u=0,p=d.quadrants[l.q],g=0;if(i.type==xt.intersection){let t=r.c[0].e<0,e=this.configuration.sheet.design.tree,s=e.node.get(i.e),n=e.distTriple(a.node,d.node,s);if(t?g=n.d2-d.radius:u=n.d1-a.radius,isNaN(u)||isNaN(g))debugger}r=this.getExposedOverlap(r);let f=c.getOverlapCorner(r,o,n,u),y=p.getOverlapCorner(r,o,It(n),g);t.set(i,[f,y])}return t}getExposedOverlap(t){var e;if(1==this.overlaps.length)return t;let i=Ht(t),s=this.getParent(t);i.shift=null!==(e=i.shift)&&void 0!==e?e:{x:0,y:0};for(let e of this.overlaps)if(e!=t){let t=this.getParent(e),n=i.ox+i.shift.x,r=i.oy+i.shift.y;t.c[0].e==s.c[0].e&&(t.ox0){t.overlaps=Ht(t.overlaps);for(let i of t.overlaps)for(let t of i.c)void 0!==t.e&&t.e>=0&&(t.e=e.get(t.e))}return t}}t([o],_.prototype,"intersectionCorners",null),t([o],_.prototype,"outCorners",null),t([o],_.prototype,"constraints",null),t([e],_.prototype,"_sideConnectionTarget",null);let w=class extends g{constructor(t,e){super(t,(t=>t),e,((t,e)=>e.disposed))}};w=t([e],w);let x=class extends g{constructor(t,e,i){super(t,e,i,((t,e)=>e.disposed))}};x=t([e],x);class m extends d{constructor(t){super(),this._oldStudio=null,this.mountTarget=t}get shouldDispose(){return super.shouldDispose||this.mountTarget instanceof m&&this.mountTarget.disposed}get $studio(){return this.disposed||!this.isActive?null:this.mountTarget instanceof m?this.mountTarget.$studio:this.mountTarget}mountEvents(){this.$studio!==this._oldStudio&&(this.$studio&&this.onMount(this.$studio),this._oldStudio&&this.onDismount(this._oldStudio),this._oldStudio=this.$studio)}onDispose(){this._oldStudio&&this.onDismount(this._oldStudio),super.onDispose()}get isActive(){return!0}static isActive(t){return t.isActive}onMount(t){}onDismount(t){}}t([e],m.prototype,"$studio",null),t([e],m.prototype,"mountEvents",null);let b=class extends d{constructor(t,e){for(super(t),this.node=new Map,this.edge=new p,this.path=new f((()=>this.node.values()),((t,e)=>new k(t,e))),this.nextId=0,this.jidMap=new Map,this.design=t;null==e?void 0:e.length;){let t=[],i=!1;for(let s of e)this.addEdge(s.n1,s.n2,s.length)?i=!0:t.push(s);if(!i)break;e=t}}onDispose(){Shrewd.terminate(this.edge),this.path.dispose()}get leaf(){var t=new Set;for(let e of this.node.values())1==e.degree&&t.add(e);return t}generateJID(){let t=Array.from(this.node.values()).sort(((t,e)=>t.id-e.id)),e=0;for(let i of t)this.jidMap.set(i.id,i.jid=e++)}dist(t,e){let i=this.path.get(t,e);return i?i.length:NaN}getOrAddNode(t){let e;return this.node.has(t)?e=this.node.get(t):(this.node.set(t,e=new C(this,t)),t>=this.nextId&&(this.nextId=t+1)),e}split(t){let e=this.getOrAddNode(this.nextId),{n1:i,n2:s}=t;return this.edge.delete(i,s),this.edge.set(e,i,new P(e,i,Math.ceil(t.length/2))),this.edge.set(e,s,new P(e,s,Math.max(Math.floor(t.length/2),1))),t.dispose(),e}deleteAndMerge(t){let e=this.getOrAddNode(this.nextId),{n1:i,n2:s,a1:n,a2:r}=t;this.edge.delete(i,s);for(let t of n){let s=t.n(i);this.edge.delete(s,i),this.edge.set(e,s,new P(e,s,t.length))}for(let t of r){let i=t.n(s);this.edge.delete(i,s),this.edge.set(e,i,new P(e,i,t.length))}return i.dispose(!0),s.dispose(!0),e}deleteAndJoin(t){let e=t.edges;if(2!=e.length)return void console.warn(`Incorrectly calling delete-and-join at [${t.id}].`);let i=e[0],s=e[1],n=i.n(t),r=s.n(t),o=new P(n,r,i.length+s.length);return this.edge.set(n,r,o),t.dispose(!0),o}addLeafAt(t,e){let i=this.nextId;return this.addEdge(t,i,e),this.node.get(i)}addEdge(t,e,i){let s=this.node.has(t),n=this.node.has(e);if(0!=this.node.size&&!s&&!n)return console.warn(`Adding edge (${t},${e}) disconnects the graph.`),!1;let r=this.getOrAddNode(t),o=this.getOrAddNode(e);if(this.edge.has(r,o))return this.edge.get(r,o).length=i,!1;if(s&&n)return console.warn(`Adding edge (${t},${e}) will cause circuit.`),!1;let h=new P(r,o,i);return this.edge.set(r,o,h),!0}distTriple(t,e,i){let s=this.dist(t,e),n=this.dist(t,i),r=this.dist(e,i),o=(s+n+r)/2;return{d1:o-r,d2:o-n,d3:o-s}}};t([e({renderer(t){for(let[e,i]of t)i.disposed&&t.delete(e);return t}})],b.prototype,"node",void 0),t([e({renderer(t){for(let e of t.firstKeys())e.disposed&&t.delete(e);return t}})],b.prototype,"edge",void 0),t([e],b.prototype,"leaf",null),b=t([e],b);class S{constructor(...t){void 0===t[1]&&(t=[t[0]._x,t[0]._y]),this._x=new v(t[0]),this._y=new v(t[1])}get x(){return this._x.value}set x(t){this._x=new v(t)}get y(){return this._y.value}set y(t){this._y=new v(t)}smp(){return this._x.smp(),this._y.smp(),this}eq(t){return!!t&&(this._x.eq(t._x)&&this._y.eq(t._y))}clone(){return new this.constructor(this._x,this._y)}toString(){return"("+this._x+", "+this._y+")"}toJSON(){return this.toString()}set(t,e=0){return t instanceof S?(this._x=new v(t._x),this._y=new v(t._y)):(this._x=new v(t),this._y=new v(e)),this}add(t){return new this.constructor(this._x.add(t._x),this._y.add(t._y)).smp()}addBy(t){return this._x.a(t._x),this._y.a(t._y),this.smp()}round(t=1){return this._x.d(t).r().m(t),this._y.d(t).r().m(t),this.smp()}range(t,e,i,s){return this._x.lt(t)&&(this._x=new v(t)),this._x.gt(e)&&(this._x=new v(e)),this._y.lt(i)&&(this._y=new v(i)),this._y.gt(s)&&(this._y=new v(s)),this}toIPoint(){return{x:this.x,y:this.y}}}class M extends m{constructor(t,e){if(super(t),this.id=M._id++,this.dragging=!1,this.edges=new w((()=>this.tree.edge.values()),(t=>new ot(this.TreeSheet,this.vertices.get(t.n1),this.vertices.get(t.n2),t))),this.rivers=new w((()=>[...this.tree.edge.values()].filter((t=>t.isRiver))),(t=>new lt(this.LayoutSheet,t))),this.vertices=new w((()=>this.tree.node.values()),(t=>new nt(this.TreeSheet,t))),this.flaps=new w((()=>this.tree.leaf),(t=>new it(this.LayoutSheet,t))),this.junctions=new f((()=>this.flaps.values()),((t,e)=>new ht(this.LayoutSheet,t,e))),this.stretches=new w((()=>this.teams.keys()),(t=>new A(this.LayoutSheet,t))),this.data=zt(ct.getSample(),e),this.data.tree.nodes.length<3)throw new Error("Invalid format.");this.options=new pt(this.data),this.history=new dt(this)}sortJEdge(){let t=this.edges.toJSON();if(0==t.length)return[];let e=new Set,i=[];for(;t.length;){let s=t.shift();0==e.size||e.has(s.n1)||e.has(s.n2)?(i.push(s),e.add(s.n1),e.add(s.n2)):t.push(s)}return i}get isActive(){return this instanceof E&&this.mountTarget.design==this}get patternNotFound(){return[...this.stretches.values()].some((t=>t.isTotallyValid&&null==t.pattern))}onDispose(){Shrewd.terminate(this.edges),Shrewd.terminate(this.vertices),Shrewd.terminate(this.rivers),Shrewd.terminate(this.flaps),Shrewd.terminate(this.stretches),this.junctions.dispose()}get validJunctions(){return[...this.junctions.values()].filter((t=>t.isValid))}get teams(){let t,e=new Set(this.activeJunctions),i=new Map;function s(i){if(e.has(i)){t.push(i),e.delete(i);for(let t of i.neighbors)s(t)}}for(;e.size>0;)t=[],s(e.values().next().value),t.sort(ht.sort),i.set(ht.createTeamId(t,(t=>t.node.id)),t);return i}get devices(){let t=[];for(let e of this.stretches.values())t.push(...e.devices);return t}get activeJunctions(){return this.validJunctions.filter((t=>!t.isCovered))}get junctionsByQuadrant(){return M.ToQuadrantMap(this.junctions.values())}get activeJunctionsByQuadrant(){return M.ToQuadrantMap(this.activeJunctions)}static ToQuadrantMap(t){let e=new Map;function i(t,i){let s=e.get(t);s||e.set(t,s=[]),s.push(i)}for(let e of t)i(e.q1,e),i(e.q2,e);return e}get stretchByQuadrant(){let t=new Map;for(let e of this.stretches.values())if(e.isActive)for(let i of e.junctions)t.set(i.q1,e),t.set(i.q2,e);return t}getStretchByQuadrant(t){var e;return null!==(e=this.stretchByQuadrant.get(t))&&void 0!==e?e:null}get flapsById(){let t=new Map;for(let e of this.flaps.values())t.set(e.node.id,e);return t}get openAnchors(){let t=new Map;for(let e of this.activeStretches){let i=e.fx*e.fy;for(let s of e.pattern.devices)for(let e of s.openAnchors){let s=i+","+(e.x-i*e.y),n=t.get(s);n||t.set(s,n=[]),n.push(e)}}return t}get activeStretches(){return[...this.stretches.values()].filter((t=>t.isActive&&!!t.pattern))}get overflow(){return Math.max(...[...this.flaps.values(),...this.edges.values(),...this.vertices.values()].map((t=>t.view.overflow)))}}M._id=0,t([e],M.prototype,"dragging",void 0),t([e],M.prototype,"isActive",null),t([e],M.prototype,"patternNotFound",null),t([e],M.prototype,"validJunctions",null),t([e],M.prototype,"teams",null),t([e],M.prototype,"devices",null),t([e],M.prototype,"activeJunctions",null),t([e],M.prototype,"junctionsByQuadrant",null),t([e],M.prototype,"activeJunctionsByQuadrant",null),t([e],M.prototype,"stretchByQuadrant",null),t([e],M.prototype,"flapsById",null),t([e],M.prototype,"openAnchors",null),t([e],M.prototype,"activeStretches",null),t([e],M.prototype,"overflow",null);class q extends m{constructor(t){super(t),this.sheet=t}get design(){return this.sheet.design}}let I=class extends m{constructor(t,e,...i){super(t),this._activeControlCache=[],this._independentRect=new Et(T.ZERO,T.ZERO),this.width=e.width,this.height=e.height,this.scale=e.scale,this._controlMaps=i,this.view=new V(this)}get controls(){var t=[];for(let e of this._controlMaps)t.push(...e());return t}get activeControls(){return this.design.dragging||(this._activeControlCache=this.controls.filter((t=>m.isActive(t)))),this._activeControlCache}constraint(t,e){return t.range(-e.x,this.width-e.x,-e.y,this.height-e.y)}get design(){return this.mountTarget}get isActive(){return this.design.sheet==this}get displayScale(){return this.$studio?this.$studio.$display.scale:1}toJSON(){return{width:this.width,height:this.height,scale:this.scale}}get size(){return Math.max(this.width,this.height)}contains(t){return 0<=t.x&&t.x<=this.width&&0<=t.y&&t.y<=this.height}get independents(){return this.controls.filter((t=>t instanceof U))}_getIndependentRect(){let t=Number.POSITIVE_INFINITY,e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY,s=Number.NEGATIVE_INFINITY;for(let n of this.independents){let r=n.location;r.xi&&(i=r.x),r.ys&&(s=r.y)}this._independentRect=new Et(new T(t,e),new T(i,s))}};t([e],I.prototype,"controls",null),t([e],I.prototype,"activeControls",null),t([s({validator(t){let e=t>=8&&t>=this._independentRect.width,i=t-this._independentRect.right;if(e&&i<0)for(let t of this.independents)t.location.x+=i;return e}})],I.prototype,"width",void 0),t([s({validator(t){let e=t>=8&&t>=this._independentRect.height,i=t-this._independentRect.top;if(e&&i<0)for(let t of this.independents)t.location.y+=i;return e}})],I.prototype,"height",void 0),t([s({validator(t){var e,i;return t>=Math.min(10,Math.ceil(null!==(i=null===(e=this.$studio)||void 0===e?void 0:e.$display.getAutoScale())&&void 0!==i?i:10))}})],I.prototype,"scale",void 0),t([e],I.prototype,"isActive",null),t([e],I.prototype,"displayScale",null),t([e],I.prototype,"size",null),t([e],I.prototype,"independents",null),t([e],I.prototype,"_getIndependentRect",null),I=t([e],I);class N extends m{constructor(){super(...arguments),this._paths=[]}draw(){this.mountEvents(),this.$studio&&(this.$studio.$display.render(),this.render())}$addItem(t,e){this._paths.push([t,e])}onMount(t){for(let[e,i]of this._paths)t.$display.project.layers[e].addChild(i)}onDismount(t){for(let[t,e]of this._paths)e.remove()}contains(t){return!1}}t([e],N.prototype,"draw",null);let C=class extends d{constructor(t,e){super(t),this.name="",this.tree=t,this.id=e}get shouldDispose(){return super.shouldDispose||this.tree.disposed}dispose(t=!1){if(t||1==this.degree)super.dispose();else{if(2==this.degree)return this.tree.deleteAndJoin(this);1!=this.degree&&console.warn(`Node [${this.name?this.name:this.id}] is not a leaf.`)}}addLeaf(t){return this.tree.addLeafAt(this.id,t)}get design(){return this.tree.design}get edges(){let t=this.tree.edge.get(this);return t?Array.from(t.values()):[]}get degree(){return this.edges.length}get firstEdge(){return this.edges[0]}get radius(){return 1==this.degree?this.edges[0].length:NaN}};t([s],C.prototype,"name",void 0),t([e],C.prototype,"edges",null),t([e],C.prototype,"degree",null),t([e],C.prototype,"firstEdge",null),t([e],C.prototype,"radius",null),C=t([e],C);let P=class extends d{constructor(t,e,i){super(),this._n1=t,this._n2=e,this.length=i}get design(){return this.n1.design}get shouldDispose(){return super.shouldDispose||this._n1.disposed||this._n2.disposed}get isRiver(){return this.g1.length>1&&this.g2.length>1}adjacentEdges(t){return t.edges.filter((t=>t!=this))}get a1(){return this.adjacentEdges(this._n1)}get a2(){return this.adjacentEdges(this._n2)}group(t,e){let i=[t];for(let s of e)i.push(...s.g(t));return i}get g1(){return this.group(this._n1,this.a1)}get g2(){return this.group(this._n2,this.a2)}g(t){return t==this._n1?this.g2:this.g1}get l1(){return this.g1.filter((t=>1==t.degree))}get l2(){return this.g2.filter((t=>1==t.degree))}get t1(){return this.a1.map((t=>t.t(this._n1)+t.length)).reduce(((t,e)=>t+e),0)}get t2(){return this.a2.map((t=>t.t(this._n2)+t.length)).reduce(((t,e)=>t+e),0)}t(t){return t==this._n1?this.t2:this.t1}get p1(){return Math.max(...this.l1.map((t=>t.tree.dist(t,this.n1))))}get p2(){return Math.max(...this.l2.map((t=>t.tree.dist(t,this.n2))))}get wrapSide(){return this.isRiver?this.p1>this.p2?2:this.p1this.t2?2:this.t1this.g2.length?1:this.g1.lengtht>0})],P.prototype,"length",void 0),t([e],P.prototype,"isRiver",null),t([e],P.prototype,"a1",null),t([e],P.prototype,"a2",null),t([e],P.prototype,"g1",null),t([e],P.prototype,"g2",null),t([e],P.prototype,"l1",null),t([e],P.prototype,"l2",null),t([e],P.prototype,"t1",null),t([e],P.prototype,"t2",null),t([e],P.prototype,"p1",null),t([e],P.prototype,"p2",null),t([e],P.prototype,"wrapSide",null),P=t([e],P);let k=class extends d{constructor(t,e){super(),this._n1=t,this._n2=e}get shouldDispose(){return super.shouldDispose||this._n1.disposed||this._n2.disposed}get edges(){let t=[],e=this._n1,i=!0;for(;e!=this._n2&&i;){i=!1;for(let s of e.edges)if(s.g(e).includes(this._n2)){i=!0,t.push(s),e=s.n(e);break}}return t}get length(){return this.edges.reduce(((t,e)=>t+e.length),0)}};t([e],k.prototype,"edges",null),t([e],k.prototype,"length",null),k=t([e],k);class T extends S{static get ZERO(){return new T(0,0)}constructor(...t){void 0===t[1]?super(t[0].x,t[0].y):super(...t)}dist(t){return this.sub(t).length}paramDist(t){return Math.max(Math.abs(t.x-this.x),Math.abs(t.y-this.y))}sub(t){return t instanceof R?new T(this._x.sub(t._x),this._y.sub(t._y)).smp():t instanceof T?new R(this._x.sub(t._x),this._y.sub(t._y)).smp():new R(this._x.sub(t.x),this._y.sub(t.y)).smp()}subBy(t){return this._x.s(t.x),this._y.s(t.y),this}diagonalXRange(t,e,i){this._x.lt(t)&&this.setDiagonalX(t,i),this._x.gt(e)&&this.setDiagonalX(e,i)}toPaper(){return new paper.Point(this.x,this.y)}setDiagonalX(t,e){var i=this._x.sub(t);this._x.s(i),e?this._y.a(i):this._y.s(i)}eq(t){return t instanceof T||!t?super.eq(t):this.x==t.x&&this.y==t.y}get isIntegral(){return this._x.$denominator===y&&this._y.$denominator===y}transform(t,e){return new T(this._x.mul(t),this._y.mul(e))}}class R extends S{static get ZERO(){return new R(0,0)}constructor(...t){void 0===t[1]?super(t[0].x,t[0].y):super(...t)}get length(){return Math.sqrt(this.dot(this))}get slope(){return this._y.div(this._x)}rotate90(){return new R(this._y.neg,this._x)}normalize(){return this.scale(new v(this.length).inv)}scale(t,e){return t instanceof S?this.scale(t._x,t._y):(e||(e=t),new R(this._x.mul(t),this._y.mul(e)).smp())}dot(t){return this._x.mul(t._x).a(this._y.mul(t._y)).value}get neg(){return new R(this._x.neg,this._y.neg)}get angle(){return Math.atan2(this.y,this.x)}reduce(){let[t,e]=[this._x.$numerator,this._y.$numerator],[i,s]=[this._x.$denominator,this._y.$denominator],[n,r]=Ft.reduce(t*s,e*i);return new R(Number(n),Number(r))}doubleAngle(t=1){let{x:e,y:i}=this.reduce();return[e,i]=Ft.reduce(e*e-i*i,2*e*i),new R(t*e,t*i)}parallel(t){return this._x.mul(t._y).eq(this._y.mul(t._x))}static bisector(t,e){let[i,s]=Ft.reduce(t.x,t.y),[n,r]=Ft.reduce(e.x,e.y),o=Math.sqrt(i*i+s*s),h=Math.sqrt(n*n+r*r);return new R(i*h+n*o,s*h+r*o)}}let E=class extends M{constructor(t,e){super(t,e),this.LayoutSheet=new I(this,this.data.layout.sheet,(()=>this.flaps.values()),(()=>this.rivers.values()),(()=>this.stretches.values()),(()=>this.devices)),this.TreeSheet=new I(this,this.data.tree.sheet,(()=>this.edges.values()),(()=>this.vertices.values())),this.title=this.data.title,this.fullscreen=this.data.fullscreen,this.description=this.data.description,this.mode=this.data.mode,this.tree=new b(this,this.data.tree.edges)}get sheet(){return"layout"==this.mode?this.LayoutSheet:this.TreeSheet}get design(){return this}toJSON(){this.tree.generateJID();let t={title:this.title,description:this.description,fullscreen:this.fullscreen,version:ct.current,mode:this.mode,layout:{sheet:this.LayoutSheet.toJSON(),flaps:this.flaps.toJSON(),stretches:this.stretches.toJSON()},tree:{sheet:this.TreeSheet.toJSON(),nodes:this.vertices.toJSON(),edges:this.sortJEdge()}};return this.tree.jidMap.clear(),t}deleteVertices(t){this.history.takeAction((()=>{let e=t.concat().sort(((t,e)=>t.node.degree-e.node.degree));for(;this.vertices.size>3;){let t=e.find((t=>1==t.node.degree));if(!t)break;t.node.dispose(),e.splice(e.indexOf(t),1),Shrewd.commit()}}))}deleteFlaps(t){this.history.takeAction((()=>{for(let e of t){if(3==this.vertices.size)break;e.node.dispose(),Shrewd.commit()}}))}clearCPSelection(){for(let t of this.LayoutSheet.controls)t.selected=!1}clearTreeSelection(){for(let t of this.TreeSheet.controls)t.selected=!1}flapToVertex(t){this.clearTreeSelection();for(let e of t){let t=this.vertices.get(e.node);t&&(t.selected=!0)}this.mode="tree"}vertexToFlap(t){this.clearCPSelection();for(let e of t){let t=this.flaps.get(e.node);t&&(t.selected=!0)}this.mode="layout"}riverToEdge(t){this.clearTreeSelection();let e=this.edges.get(t.edge);e&&(e.selected=!0),this.mode="tree"}edgeToRiver(t){this.clearCPSelection();let e=t.edge;if(e.isRiver){let t=this.rivers.get(e);t&&(t.selected=!0)}else{let t=1==e.n1.degree?e.n1:e.n2,i=this.flaps.get(t);i&&(i.selected=!0)}this.mode="layout"}};t([e],E.prototype,"fullscreen",void 0),t([e],E.prototype,"mode",void 0),t([s],E.prototype,"description",void 0),t([s],E.prototype,"title",void 0),t([e],E.prototype,"sheet",null),E=t([e],E);class D extends q{constructor(){super(...arguments),this.selected=!1}selectableWith(t){return!1}get dragSelectAnchor(){return null}toggle(){this.selected=!this.selected}contains(t){return!1}static isDragSelectable(t){return null!=t.dragSelectAnchor}}var O;t([e],D.prototype,"selected",void 0);let j=O=class extends q{constructor(t,e,i){super(t),this.flap=e,this.q=i,this.qv=O.QV[i],this.sv=O.SV[i],this.pv=O.SV[(i+1)%4],this.fx=0==this.q||3==this.q?1:-1,this.fy=0==this.q||1==this.q?1:-1}getOverlapCorner(t,e,i,s){var n,r,o,h;let l=this.flap.radius+s,a=null!==(r=null===(n=t.shift)||void 0===n?void 0:n.x)&&void 0!==r?r:0,d=null!==(h=null===(o=t.shift)||void 0===o?void 0:o.y)&&void 0!==h?h:0;return this.flap.node.id!=e.c[0].e&&(a=e.ox-(t.ox+a),d=e.oy-(t.oy+d)),new T(this.x(l-(3==i?0:t.ox)-a),this.y(l-(1==i?0:t.oy)-d))}makeContour(t){let e,i=this.flap.radius+t,s=this.sv.scale(i),n=this.getStart(i),r=this.point.add(s.rotate90()),o=this.pattern;if(o){let t=o.linesForTracing[this.q].concat(),s=o.stretch.junctions,h=this.findNextDelta(s,!1),l=new Set,a=this.findLead(s,i,t,l),d=a?this.findNextDelta(s,!0):void 0;e=kt.create(t,null!=a?a:n,this.pv,l,null!=h?h:new Nt(r,this.pv),d),d&&this.outside(e[0],i,this.q%2!=1)&&e.unshift(this.q%2?d.yIntersection(this.y(i)):d.xIntersection(this.x(i))),h&&this.outside(e[e.length-1],i,this.q%2==1)&&e.push(this.q%2?h.xIntersection(this.x(i)):h.yIntersection(this.y(i)))}else e=[n,this.point.add(this.qv.scale(i))];return e.map((t=>t.toPaper()))}outside(t,e,i){return i?t.x*this.fx>this.x(e)*this.fx:t.y*this.fy>this.y(e)*this.fy}getStart(t){return this.point.add(this.sv.scale(t))}y(t){return this.point.y+this.fy*t}x(t){return this.point.x+this.fx*t}findNextDelta(t,e){let i=this.findJoinNextQ(t,e,!0);if(!i)return;let{joinQ:s,nextQ:n,mode:r}=i,{d1:o,d2:h}=this.design.tree.distTriple(this.flap.node,n.flap.node,s.flap.node),l=r?new T(n.x(h),this.y(o)):new T(this.x(o),n.y(h));return new Nt(l,this.qv)}findJoinNextQ(t,e,i){if(1==t.length)return;let s,n=!!(this.q%2)==e,r=n?"oy":"ox",o=ht.findMinMax(t.filter((t=>t.q1==this||t.q2==this)),r,-1),h=o.q1==this?o.q2:o.q1;if(1!=h.activeJunctions.length){if(i){let t=h.activeJunctions.concat().sort(((t,e)=>t[r]-e[r]));if(s=t[t.indexOf(o)+1],!s)return}else if(s=ht.findMinMax(h.activeJunctions,r,1),s==o)return;return{joinQ:h,nextQ:s.q1==h?s.q2:s.q1,mode:n}}}findLead(t,e,i,s){var n;let r=this.findJoinNextQ(t,!0,!1);if(!r)return;let{joinQ:o,nextQ:h}=r,l=this.design.junctions.get(this.flap,h.flap).status==vt.tooFar,a=this.design.tree.distTriple(this.flap.node,h.flap.node,o.flap.node);if(e<=a.d1&&(l||e!=a.d1))return;let d=e-a.d1+a.d2,c=this.q%2?new T(h.x(d),this.y(e)):new T(this.x(e),h.y(d));return s.add(c.toString()),null!==(n=h.findLead(t,d,i,s))&&void 0!==n?n:h.getStart(d)}getOverriddenPath(t){let e=[];if(this.pattern)return e;let i=this.flap.radius+t;for(let[t,s]of this.coveredJunctions){let{ox:n,oy:r}=t,o=this.point.add(this.qv.scale(i));for(let t of s){let e=t.sub(o);n=Math.min(-e.x*this.fx,n),r=Math.min(-e.y*this.fy,r)}let h=new R(n*this.fx,r*this.fy);e.push(new paper.Path.Rectangle(o.toPaper(),o.sub(h).toPaper()))}return e}get pattern(){let t=this.design.getStretchByQuadrant(this);return t?t.pattern:null}get corner(){let t=this.flap.radius;return this.point.add(this.qv.scale(t))}get junctions(){var t;return null!==(t=this.design.junctionsByQuadrant.get(this))&&void 0!==t?t:[]}get coveredJunctions(){return this.junctions.filter((t=>t.isValid&&t.isCovered)).map((t=>{let e=t.q1==this?t.q2:t.q1;return[t,t.coveredBy.map((t=>t.q1==e?t.q2.point:t.q1.point))]}))}get point(){return this.flap.points[this.q]}get activeJunctions(){let t=this.design.activeJunctionsByQuadrant.get(this);return t||[]}static transform(t,e,i){return e<0&&(t+=t%2?3:1),i<0&&(t+=t%2?1:3),t%4}getBaseRectangle(t){let e=this.flap.radius;return new Et(new T(this.x(e),this.y(e)),new T(this.x(e-t.ox),this.y(e-t.oy)))}debug(t=0){i=!0,console.log(this.makeContour(t).map((t=>t.toString()))),i=!1}};j.QV=[new R(1,1),new R(-1,1),new R(-1,-1),new R(1,-1)],j.SV=[new R(1,0),new R(0,1),new R(-1,0),new R(0,-1)],t([e],j.prototype,"pattern",null),t([e],j.prototype,"corner",null),t([e],j.prototype,"junctions",null),t([e],j.prototype,"coveredJunctions",null),t([e],j.prototype,"point",null),t([e],j.prototype,"activeJunctions",null),j=O=t([e],j);let A=class extends D{constructor(t,e){super(t),this._repoCache=new Map,this.signature=e}get type(){return"Stretch"}get junctions(){var t;let e=null!==(t=this.design.teams.get(this.signature))&&void 0!==t?t:[];if(this.junctionCache&&this.junctionCache.length==e.length){for(let t in e)if(e[t]!=this.junctionCache[t])return this.junctionCache=e;return this.junctionCache}return this.junctionCache=e}get flaps(){let t=new Set;for(let e of this.junctions)t.add(e.f1),t.add(e.f2);return Array.from(t)}get origin(){var t,e,i;return null!==(i=null===(e=null===(t=this.junctions[0])||void 0===t?void 0:t.q1)||void 0===e?void 0:e.point)&&void 0!==i?i:T.ZERO}get repository(){if(!this.isValid)return null;let t,e=this.structureSignature;if(this._repoCache.has(e))t=this._repoCache.get(e);else{let i=this.design.options.get("stretch",this.signature);t=new $t(this,e,i)}return this.design.dragging||this._repoCache.clear(),this._repoCache.set(e,t),t}get fx(){var t,e;return null!==(e=null===(t=this.junctions[0])||void 0===t?void 0:t.fx)&&void 0!==e?e:1}get fy(){var t,e;return null!==(e=null===(t=this.junctions[0])||void 0===t?void 0:t.fy)&&void 0!==e?e:1}get shouldDispose(){return super.shouldDispose||!this.isActive&&!this.design.dragging}get isActive(){return this.design.teams.has(this.signature)}get pattern(){var t,e,i;return null!==(i=null===(e=null===(t=this.repository)||void 0===t?void 0:t.entry)||void 0===e?void 0:e.entry)&&void 0!==i?i:null}get isValid(){return this.junctions.every((t=>t.status==vt.overlap))}get isTotallyValid(){if(!this.isActive)return!1;for(let t=0;t{let e=t.toJSON(),i=e.c;return t.fx!=this.fx&&(e.c=[i[2],i[3],i[0],i[1]]),e}))):""}get devices(){return this.pattern?this.pattern.devices:[]}toJSON(){var t,e,i,s;return{id:ht.createTeamId(this.junctions,(t=>t.node.jid)),configuration:null!==(e=null===(t=this.pattern)||void 0===t?void 0:t.configuration.toJSON())&&void 0!==e?e:void 0,pattern:null!==(s=null===(i=this.pattern)||void 0===i?void 0:i.toJSON())&&void 0!==s?s:void 0}}};t([e],A.prototype,"junctions",null),t([e],A.prototype,"flaps",null),t([e],A.prototype,"repository",null),t([e],A.prototype,"isActive",null),t([e],A.prototype,"pattern",null),t([e],A.prototype,"isValid",null),t([e],A.prototype,"isTotallyValid",null),t([e],A.prototype,"structureSignature",null),A=t([e],A);let J=class extends q{constructor(t,e){super(t.sheet),this.configuration=t,this.devices=e.devices.map(((e,i)=>new Ot(this,t.partitions[i],e))),this.gadgets=this.devices.reduce(((t,e)=>t.concat(e.gadgets)),[]),this.signature=JSON.stringify(e)}static getSignature(t){let e=t.devices;t.devices=t.devices.map((t=>((t=Ht(t)).gadgets.forEach((t=>jt.simplify(t))),t.offset=void 0,t)));let i=JSON.stringify(t);return t.devices=e,i}get shouldDispose(){return super.shouldDispose||this.configuration.disposed}get isActive(){return this.configuration.isActive&&this.configuration.entry==this}get linesForTracing(){if(!this.isActive)return Mt((t=>[]));let t=this.configuration.repository.stretch.junctions[0].direction,{fx:e,fy:i}=this.stretch;return Mt((s=>{let n=[];if(t%2!=s%2)return n;for(let t of this.devices){let r=j.QV[s].scale(this.design.sheet.size);n.push(...t.ridges),n.push(...t.getConnectionRidges(!0));for(let[o,h,l]of t.partition.outCorners){let a=t.anchors[h][l];if(o.type==xt.side||o.type==xt.flap&&s!=j.transform(l,e,i)||o.type==xt.internal&&s!=j.transform(o.q,e,i))n.push(new Nt(a,a.add(r)));else if(o.type==xt.intersection){let e=t.partition.overlaps[h].c.find((t=>t.type==xt.flap)).q,i=t.partition.getSideConnectionTarget(a,o,e);i&&n.push(new Nt(a,i))}else n.push(new Nt(a,this.getConnectionTarget(o)))}}return Nt.distinct(n)}))}toJSON(){return{devices:this.devices.map((t=>t.toJSON()))}}get selected(){return this.devices.some((t=>t.selected))}get stretch(){return this.configuration.repository.stretch}getConnectionTarget(t){if(t.e>=0)return this.design.flapsById.get(t.e).points[t.q];{let[e,i]=this.configuration.overlapMap.get(t.e);return this.devices[e].anchors[i][t.q]}}};t([e],J.prototype,"isActive",null),t([e],J.prototype,"linesForTracing",null),J=t([e],J);class $ extends q{constructor(){super(...arguments),this.index=0,this._prototypeCache=[],this._cache=[]}get _prototypes(){if(!this.generator)return this._prototypeCache;if(this.design.dragging)return this.buildFirst(),this._prototypeCache.concat();0==this._cache.length&&this.buildFirst();for(let t of this.generator)this._prototypeCache.push(t);return delete this.generator,this._prototypeCache}buildFirst(){let t=this.generator.next();if(!t.done)try{this._cache[0]=this.builder(t.value),this._prototypeCache.push(t.value)}catch(t){console.log("Incompatible old version.")}}get entry(){let t=this._prototypes,e=this.index;return 0==t.length?null:this._cache[e]=this._cache[e]||this.builder(t[e])}move(t=1){let e=this.index,i=this._prototypes.length;this.index=(this.index+t+i)%i,this.onMove(this.index,e),Shrewd.commit()}get size(){return this._prototypes.length}}t([s],$.prototype,"index",void 0),t([e],$.prototype,"_prototypes",null),t([e],$.prototype,"entry",null);class L extends N{constructor(t){super(t),this.control=t}drawSelection(){this.renderSelection(this.control.selected)}}t([e],L.prototype,"drawSelection",null);let B=class extends N{constructor(t){super(t),this.visible=!1,this.$addItem(wt.drag,this._rectangle=new paper.Path.Rectangle(bt.selection))}contains(t){return this._rectangle.contains(t)}render(){if(this._rectangle.visible=this.visible){let t=new paper.Path.Rectangle({from:this.down,to:this.now});this._rectangle.set({segments:t.segments})}}};t([e],B.prototype,"visible",void 0),t([e],B.prototype,"down",void 0),t([e],B.prototype,"now",void 0),B=t([e],B);let V=class extends N{constructor(t){super(t),this._sheet=t,this._border=new paper.Path.Rectangle({point:[0,0],size:[0,0],strokeWidth:3}),this.$addItem(wt.sheet,this._border),this._grid=new paper.CompoundPath(bt.sheet),this.$addItem(wt.sheet,this._grid)}contains(t){return this._border.contains(t)}render(){var t;if(!this.$studio)return;let e=this._sheet.width,i=this._sheet.height;Wt.setRectangleSize(this._border,e,i),this._grid.visible=null===(t=this.$studio)||void 0===t?void 0:t.$display.settings.showGrid,this._grid.removeChildren();for(let t=1;tnew _(this,t))),this.generator=this.generate()}get isActive(){return this.repository.isActive&&this.repository.entry==this}builder(t){return new J(this,t)}*generate(){this.seed&&(yield this.seed);yield*Bt.filter(this.search([]),(t=>!this.seedSignature||this.seedSignature!=J.getSignature(t)))}*search(t,e=0){if(e==this.partitions.length){let e=this.makePattern(Ht(t));e&&(yield e)}else for(let i of this.partitions[e].generate())t.push(i),yield*this.search(t,e+1),t.pop()}makePattern(t){t.forEach((t=>t.gadgets=t.gadgets.map((t=>jt.instantiate(t)))));let e=t,i=this.repository.structure;if(1==i.length){let t=i[0].sx;if(1==e.length)return e[0].offset=Math.floor((t-e[0].gadgets[0].sx)/2),{devices:e};if(2==e.length){let[i,s]=e.map((t=>t.gadgets[0])),n=this.overlaps[0].c[2],r=this.overlaps[1].c[0],o=i.sx+s.rx(n.q,2),h=s.sx+i.rx(r.q,0);return o>t||h>t?null:(e[1].offset=t-h,{devices:e})}}if(2==i.length&&1==this.partitions.length){let[t,i]=this.overlaps,[s,n]=[t,i].map((t=>this.repository.structure[t.parent])),r=s.c[0].e==n.c[0].e,o=e[0].gadgets;return o[0].sx>s.sx||o[1].sx>n.sx?null:(r||(e[0].offset=s.sx-o[0].sx),{devices:e})}if(2==i.length&&2==this.partitions.length){let[t,i]=e.map((t=>t.gadgets[0])),[s,n]=this.overlaps,r=s.c[0].e>=0&&s.c[2].e>=0;r&&([t,i]=[i,t],[s,n]=[n,s]);let[o,h]=[s,n].map((t=>this.repository.structure[t.parent])),l=s.c[0].e<0,a=l?0:2,d=s.c[a].q,c=o.sx,u=t.sx,p=t.setupConnectionSlack(i,a,d);c-=Math.ceil(i.rx(d,a))+p;let g=l?[null!=p?p:0,0]:[c-u,h.sx-i.sx];return r&&g.reverse(),u>c?null:i.contains(this.getRelativeDelta(o,h,i))?null:(e.forEach(((t,e)=>t.offset=g[e])),{devices:e})}return null}getRelativeDelta(t,e,i){let s=t.c[0].e==e.c[0].e,n=l.getMaxIntersectionDistance(this.design.tree,t,e,s);e.ox>t.ox&&([t,e]=[e,t]);let r={x:n-e.ox,y:n-t.oy};return s||(r.x=i.sx-r.x,r.y=i.sy-r.y),new T(r)}onMove(){this.repository.stretch.selected=!this.entry.selected}toJSON(){return{partitions:this.partitions.map((t=>t.toJSON()))}}get jidMap(){return this.design.tree.jidMap}};t([e],W.prototype,"isActive",null),W=t([e],W);class z extends L{get overflow(){if(!this.$studio)return 0;this.render();let t=0,e=this._label.bounds,i=this.$studio.$display.scale*this.control.sheet.width,s=e.x,n=e.x+e.width;return s<0&&(t=-s),n>i&&(t=Math.max(t,n-i)),Math.ceil(t)}}var H;t([e],z.prototype,"overflow",null);let G=H=class extends N{constructor(t){super(t),this._junction=t,this.$addItem(wt.junction,this._shade=new paper.CompoundPath(bt.junction))}render(){if(this._shade.visible=this._junction.status==vt.tooClose){let t=this._junction.f1,e=this._junction.f2;this._shade.removeChildren();let i=this._junction.$treeDistance-(t.radius+e.radius);if(0==i)this._shade.addChild(t.view.circle.intersect(e.view.circle)),this._shade.strokeWidth=H.widthForArea(this._shade.area);else{let s=t.view.makeRectangle(i),n=e.view.makeRectangle(i);this._shade.addChild(t.view.circle.intersect(n)),this._shade.addChild(e.view.circle.intersect(s)),this._shade.strokeWidth=H.widthForArea(this._shade.area)}}}static widthForArea(t){return t<.25?4:t<.5?3:t<1?2:1}};G=H=t([e],G);let Q=class extends L{constructor(t){super(t),this.components=new w((()=>this.info.components),(([t,e])=>new K(this,t,e))),this.$addItem(wt.shade,this._shade=new paper.CompoundPath(bt.shade)),this.$addItem(wt.hinge,this._hinge=new paper.CompoundPath(bt.hinge)),this.$addItem(wt.ridge,this._ridge=new paper.CompoundPath(bt.ridge)),this.boundary=new paper.CompoundPath({})}contains(t){return this.control.sheet.view.contains(t)&&this._shade.contains(t)}get info(){if(this.disposed)return{adjacent:[],length:0,components:[]};let t,e,i=this.control.edge;return 0==i.wrapSide?(e=this.toComponents(i.l1,i.n1).concat(this.toComponents(i.l2,i.n2)),t=i.a1.concat(i.a2)):2==i.wrapSide?(e=this.toComponents(i.l2,i.n2),t=i.a2):(e=this.toComponents(i.l1,i.n1),t=i.a1),{adjacent:t,length:i.length,components:e}}toComponents(t,e){return t.map((t=>[this.design.flaps.get(t),e]))}get design(){return this.control.sheet.design}onDispose(){Shrewd.terminate(this.components),super.onDispose()}get closure(){let t=new paper.PathItem;if(this.disposed)return t;for(let e of this.components.values()){let i=e.contour;t=t.isEmpty()?i:t.unite(i,{insert:!1})}return t}get actualPath(){var t;let{adjacent:e}=this.info,i=this.control.sheet.design,s=this.closure;if(this.disposed)return s;for(let n of e)if(n.isRiver){let e=i.rivers.get(n);for(let i of null!==(t=e.view.closure.children)&&void 0!==t?t:[e.view.closure])s=s.subtract(i,{insert:!1})}else{let t=i.flaps.get(1==n.n1.degree?n.n1:n.n2);t.view.renderHinge(),s=s.subtract(t.view.hinge,{insert:!1})}return s.reorient(!1,!0)}render(){Wt.replaceContent(this.boundary,this.closure,!0),Wt.replaceContent(this._shade,this.actualPath,!1),Wt.replaceContent(this._hinge,this.actualPath,!1),this.renderRidge()}get corners(){var t;if(this.disposed)return[];let e=this.actualPath,i=(null!==(t=e.children)&&void 0!==t?t:[e]).map((t=>t.segments.map((t=>new T(t.point)))));if(0==i[0].length)return[];let{paths:s,map:n}=Pt.collect(i),r=[];for(let t of s){let e=t.length,i=t[e-1],s=t[0],o=s.sub(i);for(let h=0;h0){let t=new R(Math.sign(a.x)-Math.sign(o.x),Math.sign(a.y)-Math.sign(o.y)).scale(this.control.length),e=s.add(t);r.push([s,e,n.has(e.toString())])}i=s,s=l,o=a}}return r}renderRidge(){var t;this._ridge.removeChildren();for(let[e,i,s]of this.corners){let n=new Nt(e,i),r=n.slope.value,o=r+","+(e.x-r*e.y),h=(null!==(t=this.control.sheet.design.openAnchors.get(o))&&void 0!==t?t:[]).find((t=>n.contains(t,!0)));h?Wt.addLine(this._ridge,e,h):s&&Wt.addLine(this._ridge,e,i)}}renderSelection(t){this._shade.visible=t}};t([e],Q.prototype,"info",null),t([e],Q.prototype,"closure",null),t([e],Q.prototype,"actualPath",null),t([e],Q.prototype,"corners",null),Q=t([e],Q);let K=class extends d{constructor(t,e,i){super(t),this.view=t,this.flap=e,this.node=i}get shouldDispose(){return super.shouldDispose||this.flap.disposed||!this.view.info.components.some((t=>t[0]==this.flap))}get distance(){if(this.disposed)return 0;let{design:t,info:e}=this.view,i=this.flap;return t.tree.dist(i.node,this.node)-i.radius+e.length}get contour(){return this.flap.view.draw(),this.flap.view.makeContour(this.distance)}};t([e],K.prototype,"distance",null),t([e],K.prototype,"contour",null),K=t([e],K);class Y extends F{constructor(){super(...arguments),this.location={x:0,y:0}}dragStart(t){this._dragOffset=t.sub(this.location)}dragConstraint(t){if(t instanceof R)return this.constraint(t,this.location);{let e=new T(this.location),i=this.constraint(t.sub(this._dragOffset).sub(e),e);return e.add(i).add(this._dragOffset)}}drag(t){t instanceof T?(t=t.sub(this._dragOffset)).eq(this.location)||this.design.history.takeAction((()=>{this.location.x=t.x,this.location.y=t.y,this.onDragged()})):t.eq(R.ZERO)||this.design.history.takeAction((()=>{this.location.x+=t.x,this.location.y+=t.y,this.onDragged()}))}onDragged(){}constraint(t,e){return R.ZERO}static relocate(t,e){let i=t.sheet,s=e.sheet;e.location.x=Math.round(t.location.x/i.width*s.width),e.location.y=Math.round(t.location.y/i.height*s.height)}}t([e],Y.prototype,"location",void 0);class U extends Y{constructor(){super(...arguments),this._isNew=!0}get isNew(){return this._isNew}set isNew(t){t||(this._isNew=t)}watchIsNew(){this._isNew&&this.sheet!=this.design.sheet&&(this._isNew=!1)}}t([e],U.prototype,"watchIsNew",null);let Z=class extends z{constructor(t){super(t),this.$addItem(wt.shade,this._shade=new paper.Path.Rectangle(bt.shade)),this.$addItem(wt.hinge,this.hinge=new paper.Path.Rectangle(bt.hinge)),this.$addItem(wt.shade,this._circle=new paper.Path(bt.circle)),this._dots=Mt((t=>{let e=new paper.Path.Circle(bt.dot);return this.$addItem(wt.dot,e),e})),this.$addItem(wt.ridge,this._innerRidges=new paper.CompoundPath(bt.ridge)),this.$addItem(wt.ridge,this._outerRidges=new paper.CompoundPath(bt.ridge)),this.$addItem(wt.label,this._glow=new paper.PointText(bt.glow)),this.$addItem(wt.label,this._label=new paper.PointText(bt.label))}contains(t){return this.control.sheet.view.contains(t)&&(this.hinge.contains(t)||null!=this.hinge.hitTest(t))}get circle(){return this.makeRectangle(0)}makeRectangle(t){let e=this.control.points,i=this.control.node.radius+t;return new paper.Path.Rectangle({from:[e[2].x-i,e[2].y-i],to:[e[0].x+i,e[0].y+i],radius:i})}makeContour(t){let e=new paper.Path({closed:!0});this.control.quadrants.forEach((i=>e.add(...i.makeContour(t))));let i=e;for(let e of this.control.quadrants)for(let s of e.getOverriddenPath(t))i=i.subtract(s,{insert:!1});return i}renderHinge(){var t,e;this._circle.visible=null!==(e=null===(t=this.$studio)||void 0===t?void 0:t.$display.settings.showHinge)&&void 0!==e&&e,this.hinge.removeSegments(),this.control.quadrants.forEach((t=>this.hinge.add(...t.makeContour(0))))}render(){let t=this.control.sheet.displayScale,e=this.control.width,i=this.control.height;this._circle.copyContent(this.circle),this.renderHinge();let s=Mt((e=>{let i=this.control.points[e].toPaper();return this._dots[e].position.set((e=>[e.x*t,-e.y*t])(i)),i}));this._dots[2].visible=e>0||i>0,this._dots[1].visible=this._dots[3].visible=e>0&&i>0,this._innerRidges.removeChildren(),this._innerRidges.moveTo(s[3]),s.forEach((t=>this._innerRidges.lineTo(t))),this._innerRidges.visible=e>0||i>0,this._outerRidges.removeChildren(),this.control.quadrants.forEach(((t,e)=>{null==t.pattern&&Wt.addLine(this._outerRidges,s[e],t.corner)})),this._label.content=this.control.node.name,Vt.setLabel(this.control.sheet,this._label,this._glow,this.control.dragSelectAnchor,this._dots[0]),this._shade.copyContent(this.hinge)}renderSelection(t){this._shade.visible=t}};t([e],Z.prototype,"circle",null),t([e],Z.prototype,"renderHinge",null),Z=t([e],Z);let X=class extends z{constructor(t){super(t),this.$addItem(wt.ridge,this.line=new paper.Path.Line(bt.edge)),this.$addItem(wt.label,this._glow=new paper.PointText(bt.glow)),this.$addItem(wt.label,this._label=new paper.PointText(bt.label)),this._lineRegion=new paper.Path.Line({strokeWidth:15})}contains(t){return!(null==this._lineRegion.hitTest(t)&&null==this._glow.hitTest(t.transform(this._glow.layer.matrix.inverted()))||this.control.v1.view.contains(t)||this.control.v2.view.contains(t))}render(){let t=this.control.v1.location,e=this.control.v2.location,i={x:(t.x+e.x)/2,y:(t.y+e.y)/2};this._lineRegion.segments[0].point.set([t.x,t.y]),this._lineRegion.segments[1].point.set([e.x,e.y]),this.line.copyContent(this._lineRegion),this._label.content=this.control.length.toString(),Vt.setLabel(this.control.sheet,this._label,this._glow,i,this.line)}renderSelection(t){let e=t?Wt.Red():Wt.Black();this._label.fillColor=this._label.strokeColor=this.line.strokeColor=e,this.line.strokeWidth=t?3:2}};X=t([e],X);let tt=class extends z{constructor(t){super(t);let e=Object.assign({},bt.dot,{radius:4});this.$addItem(wt.dot,this._dot=new paper.Path.Circle(e)),this.$addItem(wt.label,this._glow=new paper.PointText(bt.glow)),this.$addItem(wt.label,this._label=new paper.PointText(bt.label)),this._circle=new paper.Path.Circle({radius:.4})}contains(t){return this._circle.contains(t)||null!=this._glow.hitTest(t.transform(this._glow.layer.matrix.inverted()))}render(){let t=this.control.sheet.displayScale,e=this.control.location.x,i=this.control.location.y;this._circle.position.set([e,i]),this._dot.position.set([e*t,-i*t]);let s=this.control.node.edges.map((t=>{let e=this.control.sheet.design.edges.get(t).view;return e.draw(),e.line}));this._label.content=this.control.node.name,Vt.setLabel(this.control.sheet,this._label,this._glow,{x:e,y:i},this._dot,...s)}renderSelection(t){this._dot.set(t?bt.dotSelected:bt.dot)}};var et;tt=t([e],tt);let it=et=class extends U{constructor(t,e){super(t),this.width=0,this.height=0,this.node=e;let i=t.design,s=i.options.get("flap",e.id);s?(this.location.x=s.x,this.location.y=s.y,this.width=s.width,this.height=s.height,this.isNew=!1):Y.relocate(i.vertices.get(this.node),this),this.quadrants=Mt((e=>new j(t,this,e))),this.view=new Z(this)}get type(){return"Flap"}selectableWith(t){return t instanceof et}get dragSelectAnchor(){return{x:this.location.x+this.width/2,y:this.location.y+this.height/2}}get points(){let t=this.location.x,e=this.location.y,i=this.width,s=this.height;return[new T(t+i,e+s),new T(t,e+s),new T(t,e),new T(t+i,e)]}get name(){return this.node.name}set name(t){this.node.name=t}get radius(){var t,e;return null!==(e=null===(t=this.node.firstEdge)||void 0===t?void 0:t.length)&&void 0!==e?e:0}set radius(t){this.node.firstEdge.length=t}onDragged(){this.isNew&&Y.relocate(this,this.design.vertices.get(this.node))}get shouldDispose(){return super.shouldDispose||this.node.disposed||1!=this.node.degree}toJSON(){return{id:this.node.jid,width:this.width,height:this.height,x:this.location.x,y:this.location.y}}constraint(t,e){return this.sheet.constraint(t,e),this.sheet.constraint(t,{x:e.x+this.width,y:e.y+this.height}),t}debug(t=0){console.log(this.view.makeContour(t).exportJSON())}};var st;t([s({validator(t){let e=t>=0&&t<=this.sheet.width,i=this.location.x+t-this.sheet.width;return i>0&&(this.location.x-=i),e}})],it.prototype,"width",void 0),t([s({validator(t){let e=t>=0&&t<=this.sheet.height,i=this.location.y+t-this.sheet.height;return i>0&&(this.location.y-=i),e}})],it.prototype,"height",void 0),t([e],it.prototype,"dragSelectAnchor",null),t([e],it.prototype,"points",null),it=et=t([e],it);let nt=st=class extends U{constructor(t,e){super(t),this.height=0,this.width=0,this.node=e;let i=t.design.options.get("vertex",this.node.id);i&&(null!=i.name&&(this.node.name=i.name),this.location.x=i.x,this.location.y=i.y,this.isNew=!!i.isNew),this.view=new tt(this)}get type(){return"Vertex"}get name(){return this.node.name}set name(t){this.node.name=t}get degree(){return this.node.degree}selectableWith(t){return t instanceof st}get dragSelectAnchor(){return this.location}onDragged(){this.isNew&&Y.relocate(this,this.design.flaps.get(this.node))}addLeaf(t=1){this.design.history.takeAction((()=>{let e=[...this.design.vertices.values()],i=this.node.addLeaf(t),s=this.findClosestEmptyPoint(e);this.design.options.set("vertex",i.id,{id:i.id,name:i.name,x:s.x,y:s.y,isNew:!0})}))}findClosestEmptyPoint(t){let{x:e,y:i}=this.location,s=new T(e+.125,i+.0625),n=[],r=new Set;for(let e of t)r.add(e.location.x+","+e.location.y);for(let t=e-5;t<=e+5;t++)for(let e=i-5;e<=i+5;e++)if(!r.has(t+","+e)){let i=new T(t,e);n.push([i,i.dist(s)])}return n.sort(((t,e)=>t[1]-e[1])),n[0][0]}deleteAndJoin(){2==this.node.degree&&this.design.history.takeAction((()=>{let t=this.node.dispose();Shrewd.commit(),this.design.edges.get(t).selected=!0}))}get shouldDispose(){return super.shouldDispose||this.node.disposed}toJSON(){return{id:this.node.jid,name:this.name,x:this.location.x,y:this.location.y}}constraint(t,e){return this.sheet.constraint(t,e),t}};nt=st=t([e],nt);let rt=class{constructor(t){if(this.designMap=new Map,this.design=null,"object"!=typeof paper)throw new Error("BPStudio requires paper.js.");let e=document.querySelector(t);if(null==e||!(e instanceof HTMLElement))throw new Error("selector is not valid");this.$el=e,this.$paper=new paper.PaperScope,this.$display=new at(this),this.system=new ft(this)}load(t){return"string"==typeof t&&(t=JSON.parse(t)),this.tryLoad(ct.process(t,this.onDeprecate))}create(t){return Object.assign(t,{version:ct.current,tree:{nodes:[{id:0,name:"",x:10,y:7},{id:1,name:"",x:10,y:10},{id:2,name:"",x:10,y:13}],edges:[{n1:0,n2:1,length:1},{n1:2,n2:1,length:1}]}}),this.restore(t)}restore(t){let e=new E(this,ct.process(t,this.onDeprecate));return this.designMap.set(e.id,e),e}select(t){if(null!=t){let e=this.designMap.get(t);e&&(this.design=e)}else this.design=null}close(t){let e=this.designMap.get(t);e&&(this.designMap.delete(t),e.dispose())}closeAll(){this.design=null;for(let t of this.designMap.values())t.dispose();this.designMap.clear()}tryLoad(t){return this.design=new E(this,t),this.designMap.set(this.design.id,this.design),Shrewd.commit(),this.design}toBPS(){if(!this.design)return"";let t=this.design.toJSON();delete t.history;let e=JSON.stringify(t),i=new Blob([e],{type:"application/octet-stream"});return URL.createObjectURL(i)}get TreeMaker(){return Lt}};t([e],rt.prototype,"design",void 0),rt=t([e],rt);let ot=class extends F{constructor(t,e,i,s){super(t),this.v1=e,this.v2=i,this.edge=s,this.view=new X(this)}get type(){return"Edge"}get shouldDispose(){return super.shouldDispose||this.edge.disposed}split(){this.design.history.takeAction((()=>this.toVertex(b.prototype.split)))}deleteAndMerge(){this.design.history.takeAction((()=>this.toVertex(b.prototype.deleteAndMerge)))}toVertex(t){let e=this.v1.location,i=this.v2.location,s=Math.round((e.x+i.x)/2),n=Math.round((e.y+i.y)/2),r=t.apply(this.design.tree,[this.edge]);this.design.options.set("vertex",r.id,{id:r.id,name:r.name,x:s,y:n}),Shrewd.commit(),this.design.vertices.get(r).selected=!0}get length(){return this.edge.length}set length(t){this.edge.length=t}toJSON(){return{n1:this.v1.node.jid,n2:this.v2.node.jid,length:this.edge.length}}};ot=t([e],ot);let ht=class extends q{constructor(t,e,i){super(t),e.node.id>i.node.id&&([e,i]=[i,e]),this.f1=e,this.f2=i,this.id=e.node.id+":"+i.node.id,new G(this)}static createTeamId(t,e){let i=new Set;return t.forEach((t=>{i.add(e(t.f1)),i.add(e(t.f2))})),Array.from(i).sort(((t,e)=>t-e)).join(",")}static sort(t,e){let i=t.f1.node.id-e.f1.node.id;return 0!=i?i:t.f2.node.id-e.f2.node.id}get shouldDispose(){return super.shouldDispose||this.f1.disposed||this.f2.disposed}get baseRectangle(){if(!this.isValid)return;let t=this.sx>0?this.q2:this.q1;return null==t?void 0:t.getBaseRectangle(this)}isCoveredBy(t){if(this==t||this.direction%2!=t.direction%2)return!1;let[e,i]=[t.baseRectangle,this.baseRectangle];return!!(e&&i&&e.contains(i))&&(!e.equals(i)||(Math.abs(t.sx)this.isCoveredBy(t))):[]}get isCovered(){return this.coveredBy.some((t=>0==t.coveredBy.length))}toJSON(){return{c:[{type:xt.flap,e:this.f1.node.id,q:this.q1.q},{type:xt.side},{type:xt.flap,e:this.f2.node.id,q:this.q2.q},{type:xt.side}],ox:this.ox,oy:this.oy,sx:this.sx<0?-this.sx:this.sx}}get neighbors(){if(this.direction>3)return[];let t=this.q1.activeJunctions.concat(),e=this.q2.activeJunctions.concat();return t.splice(t.indexOf(this),1),e.splice(e.indexOf(this),1),t.concat(e)}get q1(){return qt(this.direction)?this.f1.quadrants[this.direction]:null}get q2(){return qt(this.direction)?this.f2.quadrants[It(this.direction)]:null}get $treeDistance(){return this.design.tree.dist(this.f1.node,this.f2.node)}get status(){return this._flapDistance0?t:NaN}get oy(){let t=this.$treeDistance-Math.abs(this.sy);return t>0?t:NaN}get sx(){let t=this.f1.location.x,e=this.f2.location.x,i=this.f1.width,s=t-e-this.f2.width;return s>=0?s:(s=t+i-e,s<=0?s:NaN)}get sy(){let t=this.f1.location.y,e=this.f2.location.y,i=this.f1.height,s=t-e-this.f2.height;return s>=0?s:(s=t+i-e,s<=0?s:NaN)}get direction(){let t=this.sx,e=this.sy;return t<0&&e<0?_t.UR:t>0&&e<0?_t.UL:t>0&&e>0?_t.LL:t<0&&e>0?_t.LR:t<0?_t.R:t>0?_t.L:e<0?_t.T:e>0?_t.B:_t.none}get _flapDistance(){let t=this.sx,e=this.sy,i=0!=t&&!isNaN(t),s=0!=e&&!isNaN(e);return i&&s?Math.sqrt(t*t+e*e):i?Math.abs(t):s?Math.abs(e):0}get isValid(){return this.status==vt.overlap}static findMinMax(t,e,i){let s=t[0][e],n=t[0];for(let r=1;rs*i&&(n=t[r],s=t[r][e]);return n}};t([e],ht.prototype,"baseRectangle",null),t([e],ht.prototype,"coveredBy",null),t([e],ht.prototype,"isCovered",null),t([e],ht.prototype,"neighbors",null),t([e],ht.prototype,"q1",null),t([e],ht.prototype,"q2",null),t([e],ht.prototype,"$treeDistance",null),t([e],ht.prototype,"status",null),t([e],ht.prototype,"fx",null),t([e],ht.prototype,"fy",null),t([e],ht.prototype,"ox",null),t([e],ht.prototype,"oy",null),t([e],ht.prototype,"sx",null),t([e],ht.prototype,"sy",null),t([e],ht.prototype,"direction",null),t([e],ht.prototype,"_flapDistance",null),t([e],ht.prototype,"isValid",null),ht=t([e],ht);let lt=class extends F{constructor(t,e){super(t),this.edge=e,this.view=new Q(this)}get type(){return"River"}get shouldDispose(){return super.shouldDispose||this.edge.disposed||!this.edge.isRiver}delete(){this.design.edges.get(this.edge).deleteAndMerge()}get length(){return this.edge.length}set length(t){this.edge.length=t}};lt=t([e],lt);let at=class{constructor(t){this.MARGIN=30,this.lockViewport=!1,this.scroll={x:0,y:0},this.settings={showAxialParallel:!0,showGrid:!0,showHinge:!0,showRidge:!0,showLabel:!0,showDot:!0,includeHiddenElement:!1},this._printing=!1,this.horMargin=0,this._studio=t,t.$el.appendChild(this.spaceHolder=document.createElement("div")),t.$el.addEventListener("scroll",this.onScroll.bind(this)),this.spaceHolder.style.zIndex="-10",this._canvas=document.createElement("canvas"),t.$el.appendChild(this._canvas),window.addEventListener("resize",this.setSize.bind(this)),this.setSize(),setTimeout((()=>this.setSize()),10),window.addEventListener("beforeprint",this.beforePrint.bind(this)),window.addEventListener("afterprint",this.afterPrint.bind(this));let e=matchMedia("(hover: none), (pointer: coarse)").matches;document.addEventListener("focusin",(t=>{e&&(t.target instanceof HTMLInputElement||t.target instanceof HTMLTextAreaElement)&&(this.lockViewport=!0)})),document.addEventListener("focusout",(t=>this.lockViewport=!1)),t.$paper.setup(this._canvas),t.$paper.settings.insertItems=!1,this.project=t.$paper.project,this.project.currentStyle.strokeColor=Wt.Black(),this.project.currentStyle.strokeScaling=!1;for(let t of yt.values(wt))this.project.addLayer(new paper.Layer({name:wt[t]}));this.boundary=new paper.Path.Rectangle({from:[0,0],to:[0,0]});for(let t of yt.values(wt))mt[t].clipped&&(this.project.layers[t].addChild(this.boundary.clone()),this.project.layers[t].clipped=!0)}setSize(){this.lockViewport||(this.viewWidth=this._studio.$el.clientWidth,this.viewHeight=this._studio.$el.clientHeight)}toSVG(){let t=Math.max(this.sheetWidth,this.viewWidth),e=Math.max(this.sheetHeight,this.viewHeight),i=(t-this.sheetWidth)/2-this.scroll.x,s=(e-this.sheetHeight)/2-this.scroll.y,n=new paper.Rectangle(i,s,this.sheetWidth,this.sheetHeight),r=this._studio.$paper.project.exportSVG({bounds:n,matrix:this.project.view.matrix});this.settings.includeHiddenElement||this.removeHidden(r);let o=new Blob([r.outerHTML],{type:"image/svg+xml"});return URL.createObjectURL(o)}removeHidden(t){let e=Array.from(t.children);for(let i of e)"hidden"==i.getAttribute("visibility")?t.removeChild(i):this.removeHidden(i)}get img(){return this._img||this.spaceHolder.appendChild(this._img=new Image),this._img}createPNG(){let t=document.createElement("canvas"),e=t.getContext("2d"),i=this.img;return new Promise((s=>{i.addEventListener("load",(()=>{t.width=i.clientWidth,t.height=i.clientHeight,e.fillStyle="white",e.fillRect(0,0,t.width,t.height),e.drawImage(i,0,0,i.naturalWidth,i.naturalHeight,0,0,i.clientWidth,i.clientHeight),this._printing=!1,t.toBlob((t=>s(t)))}),{once:!0}),this.beforePrint()}))}toPNG(){return this.createPNG().then((t=>URL.createObjectURL(t)))}copyPNG(){return this.createPNG().then((t=>navigator.clipboard.write([new ClipboardItem({"image/png":t})])))}beforePrint(){if(clearTimeout(this._debounce),!this._printing&&"visible"==document.visibilityState){let t=this.img.src;setTimeout((()=>URL.revokeObjectURL(t)),5e3),this.img.src=this.toSVG(),this._printing=!0}}afterPrint(){this._debounce=setTimeout((()=>{this._printing=!1,this._debounce=NaN}),1e3)}onScroll(){this.scroll.x=this._studio.$el.scrollLeft,this.scroll.y=this._studio.$el.scrollTop}get scale(){if(this._studio.design&&this._studio.design.sheet){if(this._studio.design.fullscreen){let t=(this.viewWidth-2*this.horMargin)/this._studio.design.sheet.width,e=(this.viewHeight-2*this.MARGIN)/this._studio.design.sheet.height;return Math.min(t,e)}return this._studio.design.sheet.scale}return 1}getHorMargin(){var t,e;let i=Math.max((null!==(e=null===(t=this._studio.design)||void 0===t?void 0:t.overflow)&&void 0!==e?e:0)+10,this.MARGIN);setTimeout((()=>this.horMargin=i),0)}get sheetWidth(){var t,e,i;return(null!==(i=null===(e=null===(t=this._studio.design)||void 0===t?void 0:t.sheet)||void 0===e?void 0:e.width)&&void 0!==i?i:0)*this.scale+2*this.horMargin}get sheetHeight(){var t,e,i;return(null!==(i=null===(e=null===(t=this._studio.design)||void 0===t?void 0:t.sheet)||void 0===e?void 0:e.height)&&void 0!==i?i:0)*this.scale+2*this.MARGIN}get isXScrollable(){return this.sheetWidth>this.viewWidth+1}get isYScrollable(){return this.sheetHeight>this.viewHeight+1}getAutoScale(){var t,e,i,s,n,r;let o=(this.viewWidth-2*this.horMargin)/(null!==(i=null===(e=null===(t=this._studio.design)||void 0===t?void 0:t.sheet)||void 0===e?void 0:e.width)&&void 0!==i?i:1),h=(this.viewHeight-2*this.MARGIN)/(null!==(r=null===(n=null===(s=this._studio.design)||void 0===s?void 0:s.sheet)||void 0===n?void 0:n.height)&&void 0!==r?r:1);return Math.min(o,h)}isScrollable(){return this._studio.$el.classList.toggle("scroll-x",this.isXScrollable),this._studio.$el.classList.toggle("scroll-y",this.isYScrollable),this.isXScrollable||this.isYScrollable}renderSetting(){var t,e;let i=null!==(e="layout"!=(null===(t=this._studio.design)||void 0===t?void 0:t.mode))&&void 0!==e&&e;this.project.layers[wt.hinge].visible=this.settings.showHinge,this.project.layers[wt.ridge].visible=this.settings.showRidge||i,this.project.layers[wt.axisParallel].visible=this.settings.showAxialParallel,this.project.layers[wt.label].visible=this.settings.showLabel,this.project.layers[wt.dot].visible=this.settings.showDot||i}render(){let t=0,e=0,i=this.scale;this._studio.design&&this._studio.design.sheet&&({width:t,height:e}=this._studio.design.sheet);let s=Math.max(this.sheetWidth,this.viewWidth),n=Math.max(this.sheetHeight,this.viewHeight);this.spaceHolder.style.width=s+"px",this.spaceHolder.style.height=n+"px",Wt.setRectangleSize(this.boundary,t,e);let r=this._studio.$el,o=(s-this.sheetWidth)/2+this.horMargin,h=(n+this.sheetHeight)/2-this.MARGIN;this.lockViewport?this.project.view.viewSize.set(this.viewWidth,this.viewHeight):this.project.view.viewSize.set(r.clientWidth,r.clientHeight),this.project.view.matrix.set(i,0,0,-i,o-this.scroll.x,h-this.scroll.y);for(let t of yt.values(wt)){let e=this.project.layers[t];mt[t].clipped&&e.children[0].set({segments:this.boundary.segments}),mt[t].scaled||(e.applyMatrix=!1,e.matrix.set(1/i,0,0,-1/i,0,0))}}};t([e],at.prototype,"viewWidth",void 0),t([e],at.prototype,"viewHeight",void 0),t([e],at.prototype,"scroll",void 0),t([e],at.prototype,"settings",void 0),t([e],at.prototype,"scale",null),t([e],at.prototype,"horMargin",void 0),t([e],at.prototype,"getHorMargin",null),t([e],at.prototype,"sheetWidth",null),t([e],at.prototype,"sheetHeight",null),t([e],at.prototype,"isXScrollable",null),t([e],at.prototype,"isYScrollable",null),t([e],at.prototype,"isScrollable",null),t([e],at.prototype,"renderSetting",null),t([e],at.prototype,"render",null),at=t([e],at);class dt{constructor(t){this._modified=!1,this.design=t}get modified(){return this._modified}notifySave(){this._modified=!1}takeAction(t){this._modified=!0,t()}fieldChange(t,e,i,s){this._modified=!0}}var ct,ut;!function(t){function e(t,e){let i=[],s=new Map;for(let[e,n]of t.entries()){if(s.has(e))continue;let r=n.c.filter((t=>t.type==xt.coincide)),o=r.find((t=>s.has(-t.e-1))),h=i.length;if(o){let t=s.get(-o.e-1);s.set(e,t),i[t].push(n)}else s.set(e,h),i.push([n]);r.forEach((n=>{e=-n.e-1,s.has(e)||(s.set(e,h),i[h].push(t[e]))}))}return i.map((t=>({overlaps:t,strategy:e})))}t.current="0",t.getSample=function(){return{title:"",version:t.current,fullscreen:!0,mode:"layout",history:{index:0,modified:!1,actions:[]},layout:{sheet:{width:16,height:16,scale:20},flaps:[],stretches:[]},tree:{sheet:{width:20,height:20,scale:16},nodes:[],edges:[]}}},t.process=function(t,i){var s;let n=!1;if("version"in t||("cp"==t.mode&&(t.mode="layout"),t.layout=t.cp,delete t.cp,t.version="beta",delete t.layout.stretches,n=!0),"beta"==t.version){t.version="rc0";let e=t.layout.stretches;if(e)for(let t of e.concat()){let i=t.configuration;!i||i.overlaps&&!i.overlaps.some((t=>t.c.some((t=>t.type==xt.intersection&&void 0===t.e))))||(e.splice(e.indexOf(t),1),n=!0)}}if("rc0"==t.version){t.version="rc1";let i=t.layout.stretches;if(i)for(let t of i.concat()){if(t.configuration){t.configuration={partitions:e(t.configuration.overlaps,t.configuration.strategy)},t.pattern&&(1==t.configuration.partitions.length?t.pattern={devices:[{gadgets:t.pattern.gadgets,offset:null===(s=t.pattern.offsets)||void 0===s?void 0:s[0]}]}:t.pattern={devices:t.pattern.gadgets.map(((e,i)=>{var s;return{gadgets:[e],offset:null===(s=t.pattern.offsets)||void 0===s?void 0:s[i]}}))})}}}return"rc1"==t.version&&(t.version="0"),n&&i&&i(t.title),t}}(ct||(ct={}));class pt{constructor(t){this.options=new Map;for(let e of t.tree.nodes)this.set("vertex",e.id,e);for(let e of t.layout.flaps)this.set("flap",e.id,e);for(let e of t.layout.stretches)this.set("stretch",e.id,e)}get(t,e){e=t+e;let i=this.options.get(e);return this.options.delete(e),i}set(t,e,i){this.options.set(t+e,i)}}const gt="undefined"!=typeof TouchEvent;let ft=ut=class{constructor(t){this.dragging=!1,this._spaceDown=!1,this._touchScaling=[0,0],this._scrolled=!1,this._possiblyReselect=!1,this._studio=t;let e=t.$paper.view.element,i=t.$paper.tool=new paper.Tool;i.onKeyDown=this._canvasKeydown.bind(this),i.onKeyUp=this._canvasKeyup.bind(this),i.onMouseDown=this._canvasMousedown.bind(this),i.onMouseDrag=this._canvasMouseDrag.bind(this),i.onMouseUp=this._canvasMouseup.bind(this),e.addEventListener("wheel",this._canvasWheel.bind(this)),e.addEventListener("touchstart",this._canvasTouch.bind(this)),document.addEventListener("mousemove",this._bodyMousemove.bind(this)),document.addEventListener("touchmove",this._bodyMousemove.bind(this)),document.addEventListener("mouseup",this._bodyMouseup.bind(this)),document.addEventListener("touchend",this._bodyMouseup.bind(this)),document.addEventListener("contextmenu",this._bodyMenu.bind(this)),this._dragSelectView=new B(t)}static controlPriority(t){return t instanceof Ot||t instanceof nt?1:t instanceof it||t instanceof ot?2:3}get _controls(){let t=this._studio.design?this._studio.design.sheet.activeControls.concat():[];return t.sort(((t,e)=>ut.controlPriority(t)-ut.controlPriority(e))),this._dragSelectables=t.filter(D.isDragSelectable),t.length||(this._ctrl=[null,null]),t}get selections(){return this._controls.filter((t=>t.selected))}draggableSelections(){return this.selections.filter((t=>t instanceof Y))}get _canvas(){return this._studio.$paper.view.element}_processSelection(t,e){var i=null,s=null,n=null,r=this._controls.filter((e=>e.contains(t)));for(let t of r)i||(i=t),t.selected?s=t:s&&!n&&(n=t);if(n||!i||i.selected||(n=i),s){let t=ut.controlPriority(s);r.some((e=>ut.controlPriority(e)1)&&!(t instanceof MouseEvent&&0!=t.button)}_canvasKeydown(t){let e=document.activeElement;return e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||this.key(t.key,t.modifiers.control)}key(t,e=!1){let i=new R(0,0);switch(t){case"space":return this._studio.$display.isScrollable()&&(this._canvas.style.cursor="grab",this._spaceDown=!0),!1;case"delete":let t=this.selections[0];return t instanceof it&&this._studio.design.deleteFlaps(this.selections),t instanceof nt&&this._studio.design.deleteVertices(this.selections),!1;case"a":let s=this._studio.design;return e&&s&&(this._clearSelection(),"layout"==s.mode&&s.flaps.forEach((t=>t.selected=!0)),"tree"==s.mode&&s.vertices.forEach((t=>t.selected=!0))),!1;case"up":i.set(0,1);break;case"down":i.set(0,-1);break;case"left":i.set(-1,0);break;case"right":i.set(1,0);break;default:return!0}let s=this.draggableSelections();if(0==s.length)return!0;s[0]instanceof Ot&&(i=i.scale(2));for(let t of s)i=t.dragConstraint(i);for(let t of s)t.drag(i);return!1}_canvasKeyup(){this._canvas.style.cursor="unset",this._spaceDown=!1}_canvasMousedown(t){if(t.event instanceof MouseEvent&&(this._spaceDown||2==t.event.button))return console.log(t.point.round().toString()),void this._setScroll(t.event);let e=document.activeElement;if(e instanceof HTMLElement&&e.blur(),!this._checkEvent(t.event)||this._scrollStart)return;let i=t.point;if(this._processSelection(i,t.modifiers.control),1==this.selections.length&&this.isTouch(t.event)&&(this._longPressTimeout=window.setTimeout((()=>{this.onLongPress()}),750)),this.draggableSelections().length){this._lastKnownCursorLocation=new T(t.downPoint).round();for(let t of this.draggableSelections())t.dragStart(this._lastKnownCursorLocation);this.dragging=!0}}_canvasMouseup(t){this._dragSelectView.visible=!1,this._checkEvent(t.event)&&(this._scrollStart?t.event instanceof MouseEvent&&(this._scrollStart=null):t.modifiers.control||this._processNextSelection())}_reselect(t){this._clearSelection(),this._processSelection(t.point,!1),Shrewd.commit();for(let t of this.draggableSelections())t.dragStart(this._lastKnownCursorLocation);this._possiblyReselect=!1}_canvasMouseDrag(t){var e;if(!this._scrollStart)if(this._possiblyReselect&&(this._reselect(t),this.dragging=!0),this.dragging){let i=new T(t.point).round();if(this._lastKnownCursorLocation.eq(i))return;window.clearTimeout(this._longPressTimeout),null===(e=this.onDrag)||void 0===e||e.apply(null),this._lastKnownCursorLocation.set(i);for(let t of this.draggableSelections())i=t.dragConstraint(i);for(let t of this.draggableSelections())t.drag(i);this._studio.design.dragging=!0}else if(this._dragSelectables.length){if(!this._dragSelectView.visible){if(this.isTouch(t.event)&&t.downPoint.getDistance(t.point)<1)return;this._clearSelection(),this._dragSelectView.visible=!0,this._dragSelectView.down=t.downPoint,Shrewd.commit()}this._dragSelectView.now=t.point,this._dragSelectView.draw();for(let t of this._dragSelectables)t.selected=this._dragSelectView.contains(new paper.Point(t.dragSelectAnchor))}}_canvasWheel(t){if(t.ctrlKey){t.preventDefault();let e=this._studio.design;e&&(e.fullscreen&&(e.sheet.scale=Math.round(this._studio.$display.scale),e.fullscreen=!1),e.sheet.scale-=Math.round(t.deltaY/100))}}_canvasTouch(t){t.touches.length>1&&(this._clearSelection(),this._setScroll(t),this._touchScaling=[this.getTouchDistance(t),this._studio.$display.scale])}getTouchDistance(t){let e=t.touches,i=e[1].screenX-e[0].screenX,s=e[1].screenY-e[0].screenY;return Math.sqrt(i*i+s*s)}_bodyMousemove(t){var e;if(this._scrollStart&&(t instanceof MouseEvent||t.touches.length>=2)){let i=this.isTouch(t)?t.touches[0]:t,s=new T(i.screenX,i.screenY).sub(this._lastKnownCursorLocation),n=this._studio.$el;if(this._studio.$display.isXScrollable&&(n.scrollLeft=this._scrollStart.x-s.x),this._studio.$display.isYScrollable&&(n.scrollTop=this._scrollStart.y-s.y),this.isTouch(t)){let i=null===(e=this._studio.design)||void 0===e?void 0:e.sheet;if(i){let e=(this.getTouchDistance(t)-this._touchScaling[0])/30,s=this._studio.$display.getAutoScale();e=Math.round(e+this._touchScaling[1]),e<=s?(i.scale=Math.ceil(s),i.design.fullscreen=!0):(i.scale=Math.ceil(e),i.design.fullscreen=!1)}}this._scrolled=!0}}_setScroll(t){let e=this._studio.$el,i=this.isTouch(t)?t.touches[0]:t;window.clearTimeout(this._longPressTimeout),this._scrollStart=new T(e.scrollLeft,e.scrollTop),this._scrolled=!1,this._lastKnownCursorLocation=new T(i.screenX,i.screenY)}_bodyMouseup(t){this._dragEnd(),window.clearTimeout(this._longPressTimeout),this.isTouch(t)&&0==t.touches.length&&(this._scrollStart=null)}_dragEnd(){this.dragging=!1,this._studio.design&&(this._studio.design.dragging=!1)}_bodyMenu(t){t.preventDefault(),this._scrollStart=null}isTouch(t){return gt&&t instanceof TouchEvent}};var yt,vt,_t,wt,xt;t([e],ft.prototype,"_controls",null),t([e],ft.prototype,"selections",null),t([e],ft.prototype,"draggableSelections",null),t([e],ft.prototype,"dragging",void 0),ft=ut=t([e],ft),function(t){t.values=function(t){return Object.values(t).filter((t=>!isNaN(Number(t))))}}(yt||(yt={})),function(t){t[t.tooClose=0]="tooClose",t[t.overlap=1]="overlap",t[t.tooFar=2]="tooFar"}(vt||(vt={})),function(t){t[t.UR=0]="UR",t[t.UL=1]="UL",t[t.LL=2]="LL",t[t.LR=3]="LR",t[t.R=4]="R",t[t.T=5]="T",t[t.L=6]="L",t[t.B=7]="B",t[t.none=8]="none"}(_t||(_t={})),function(t){t[t.sheet=0]="sheet",t[t.shade=1]="shade",t[t.hinge=2]="hinge",t[t.ridge=3]="ridge",t[t.axisParallel=4]="axisParallel",t[t.junction=5]="junction",t[t.dot=6]="dot",t[t.label=7]="label",t[t.drag=8]="drag"}(wt||(wt={})),function(t){t[t.socket=0]="socket",t[t.internal=1]="internal",t[t.side=2]="side",t[t.intersection=3]="intersection",t[t.flap=4]="flap",t[t.coincide=5]="coincide"}(xt||(xt={}));const mt={[wt.sheet]:{clipped:!1,scaled:!0},[wt.shade]:{clipped:!0,scaled:!0},[wt.hinge]:{clipped:!0,scaled:!0},[wt.ridge]:{clipped:!0,scaled:!0},[wt.axisParallel]:{clipped:!0,scaled:!0},[wt.junction]:{clipped:!0,scaled:!0},[wt.dot]:{clipped:!1,scaled:!1},[wt.label]:{clipped:!1,scaled:!1},[wt.drag]:{clipped:!1,scaled:!0}};var bt;!function(t){t.circle={strokeWidth:1,strokeColor:"#69F"},t.dot={fillColor:"#69F",strokeWidth:1,strokeColor:"#000",radius:3},t.dotSelected={strokeWidth:3,strokeColor:"red"},t.hinge={strokeColor:"#69F",strokeWidth:3},t.sheet={strokeWidth:.25,strokeColor:"#000"},t.label={point:[0,0],fillColor:"black",fontWeight:"normal",strokeWidth:.5,fontSize:14},t.glow={point:[0,0],fontWeight:"normal",strokeWidth:2.5,strokeColor:"white",fontSize:14},t.edge={},t.ridge={strokeWidth:1.25,strokeColor:"red"},t.selection={strokeColor:"#69f",fillColor:"rgba(102, 153, 255, 0.2)"},t.shade={fillColor:"#69F",opacity:.3,strokeWidth:0},t.junction={strokeColor:"red",fillColor:"red",opacity:.3},t.axisParallel={strokeWidth:1,strokeColor:"green"},t.top={}}(bt||(bt={}));const St=[0,1,2,3];function Mt(t){return St.map(t)}function qt(t){return t<4}function It(t){return(t+2)%4}class Nt{constructor(t,e){e instanceof R&&(e=t.add(e)),this.p1=t,this.p2=e}toString(){return[this.p1,this.p2].sort().toString()}get isDegenerated(){return this.p1.eq(this.p2)}eq(t){return this.p1.eq(t.p1)&&this.p2.eq(t.p2)||this.p1.eq(t.p2)&&this.p2.eq(t.p1)}contains(t,e=!1){let i=t instanceof T?t:new T(t);if(e&&(i.eq(this.p1)||i.eq(this.p2)))return!0;var s=i.sub(this.p1),n=i.sub(this.p2);return s._x.mul(n._y).eq(n._x.mul(s._y))&&s.dot(n)<0}lineContains(t){return this.vector.parallel(t.sub(this.p1))}intersection(...t){if(void 0===t[1])return this.intersection(t[0].p1,t[0].p2.sub(t[0].p1));let[e,i,s]=t;var n=this.p2.sub(this.p1),r=new Ct(n._x,i._x,n._y,i._y).inverse;if(null==r)return null;var o=r.multiply(new T(e.sub(this.p1))),h=o._x,l=o._y.neg;return h.lt(0)||h.gt(1)||s&&l.lt(0)?null:e.add(i.scale(l))}transform(t,e){return new Nt(this.p1.transform(t,e),this.p2.transform(t,e))}shift(t){return new Nt(this.p1.add(t),this.p2.add(t))}static distinct(t){let e=new Set;return t.filter((t=>{let i=t.toString(),s=!e.has(i);return s&&e.add(i),s}))}static subtract(t,e){let i=[],s=new Map;for(let t of e){let e=t.slope.toString(),i=s.get(e);i||s.set(e,i=[]),i.push(t)}for(let e of t){let t=e.slope.toString();s.has(t)?i.push(...e.cancel(s.get(t))):i.push(e)}return i}cancel(t){let e=[this];for(let i of t){let t=[];for(let s of e)t.push(...s._cancel(i));e=t}return e}*_cancel(t){let e=this.contains(t.p1,!0),i=this.contains(t.p2,!0),s=t.contains(this.p1,!0),n=t.contains(this.p2,!0);if(!s||!n)if(!e&&!i||!s&&!n)yield this;else if(e&&i){let e=new Nt(this.p1,t.p1),i=new Nt(this.p1,t.p2),s=new Nt(this.p2,t.p1),n=new Nt(this.p2,t.p2);e.isDegenerated?yield n:i.isDegenerated?yield s:s.isDegenerated?yield i:n.isDegenerated?yield e:e.contains(t.p2)?(yield i,yield s):(yield e,yield n)}else{let i=e?t.p1:t.p2,s=n?this.p1:this.p2;i.eq(s)||(yield new Nt(i,s))}}get slope(){return this.p1._x.sub(this.p2._x).d(this.p1._y.sub(this.p2._y))}xOrient(){return this.p1._x.gt(this.p2._x)?[this.p2,this.p1]:[this.p1,this.p2]}*gridPoints(){let{p1:t,p2:e}=this,i=e.x-t.x,s=e.y-t.y;if(Math.abs(i)t.sub(i))),l=Ct.getTransformMatrix(o,r);return i.add(l.multiply(h))},t.collect=function(t){let e=[],i=new Map,n=0;for(let r of t){let t=!1;for(let[o,h]of r.entries()){let l=h.toString(),a=i.get(l);if(a){if(!e[a[0]])continue;e[a[0]].splice(a[1],0,...s(r,o));for(let[t,s]of e[a[0]].entries())i.set(s.toString(),[a[0],t]);t=!0;break}i.set(l,[n,o])}t||(e.push(r),n++)}return{paths:e,map:i}},t.join=function(t,e){t=t.concat(),e=e.concat();for(let i=0;it.add(e)))},t.polygonIntersect=function(t,s){let n=e(t),r=e(s);return t.some((t=>i(t,r)))||s.some((t=>i(t,n)))},t.lineInsidePath=function(t,s){let n=e(s);return i(t.p1,n,!0)&&i(t.p2,n,!0)},t.pointInsidePath=function(t,s){return i(t,e(s))}}(Pt||(Pt={}));class Et{constructor(t,e){t._x.gt(e._x)&&([t,e]=[e,t]),t._y.gt(e._y)&&([t,e]=[new T(t._x,e._y),new T(e._x,t._y)]),[this.p1,this.p2]=[t,e]}contains(t){return this.p1._x.le(t.p1._x)&&this.p1._y.le(t.p1._y)&&this.p2._x.ge(t.p2._x)&&this.p2._y.ge(t.p2._y)}equals(t){return this.p1.eq(t.p1)&&this.p2.eq(t.p2)}get width(){return this.p2._x.sub(this.p1._x).value}get height(){return this.p2._y.sub(this.p1._y).value}get top(){return this.p2.y}get right(){return this.p2.x}}!function(t){function e(t,e,i){let s=[],n=t.length-1;do{s.push(t[n])}while(!t[n--].eq(e));if(!(s.length<=2))for(let t of i)Pt.lineInsidePath(t,s)&&i.delete(t)}function s(t,e,i){return null!=t&&(null==e||t.dist.lt(e.dist)||t.dist.eq(e.dist)&&t.angle*iMath.PI;)i-=Math.PI;return i}function o(t,e,i,s,n){let o=i.rotate90(),h=t.p1.sub(e),l=t.p2.sub(e),a=h.dot(o),d=l.dot(o),c=h.dot(i),u=l.dot(i);return(a*s>0||d*s>0)&&(c>0||u>0||!!n&&r(i,t.vector)*s>n*s)}t.create=function(t,h,l,a,d,c){let u,p,g,f=[],y=[],v=l,_=h,w=new Set,x=new Set(t);i&&console.log([...a].toString());do{u=null;for(let t of x){let e=n(t,_,v);if(e){let n=p?r(v,p):void 0,h=a.has(e.point.toString())?-1:1;if(!o(t,_,v,h,n))continue;i&&console.log([JSON.stringify(e),t.toString()]),s(e,u,h)&&(u=e,g=t)}}if(u){let t=u.point,s=new Nt(_,t);if(c){let t=s.intersection(c);t&&(y.push(t),c=void 0)}let n=s.intersection(d);if(n){y.push(n);break}let r=t.toString();w.has(r)?e(f,t,x):w.add(r),f.push(t),c||y.length&&y[y.length-1].eq(t)||y.push(t),p=g.vector,v=g.reflect(v),i&&console.log([t.toString(),g.toString(),v.toString(),p.toString()]),_=t,x.delete(g)}}while(null!=u);return y}}(kt||(kt={})),function(t){function e(t,e){return{c:Ht(t.c),ox:t.ox,oy:t.oy,parent:e}}t.joinOverlaps=function(t,e,i,s,n,r=!1){r&&([t,e]=[e,t],[i,s]=[s,i]);let o=n?0:2,h=((e.ox>t.ox?3:1)+o)%4;return e.c[o]={type:xt.coincide,e:i,q:o},e.c[h]={type:xt.intersection,e:t.c[It(o)].e},t.c[It(h)]={type:xt.coincide,e:s,q:h},e},t.cut=function(t,i,s,n,r){let o=e(t,i),h=e(t,i);return n>0?(o.c[2]={type:xt.internal,e:s-1,q:3},o.c[1]={type:xt.socket,e:s-1,q:0},o.ox=n,h.c[3]={type:xt.socket,e:s,q:2},h.c[0]={type:xt.internal,e:s,q:1},h.ox=t.ox-n,h.shift={x:n,y:0}):(o.c[2]={type:xt.internal,e:s-1,q:1},o.c[3]={type:xt.socket,e:s-1,q:0},o.oy=r,h.c[1]={type:xt.socket,e:s,q:2},h.c[0]={type:xt.internal,e:s,q:3},h.oy=t.oy-r,h.shift={x:0,y:r}),[{overlaps:[o]},{overlaps:[h]}]},t.toOverlap=e}(Tt||(Tt={})),function(t){t.halfIntegral="HALFINTEGRAL",t.universal="UNIVERSAL",t.baseJoin="BASE_JOIN",t.standardJoin="STANDARD_JOIN",t.perfect="PERFECT"}(Rt||(Rt={}));class Dt{constructor(t,e){this.repo=t,this.seed=null==e?void 0:e.configuration,this.seedSignature=JSON.stringify(this.seed),this.pattern=null==e?void 0:e.pattern}*generate(t){if(this.seed&&this.pattern)try{let t=new W(this.repo,this.seed,this.pattern);if(!t.entry)throw!0;yield t}catch(t){this.seedSignature=void 0,console.log("Incompatible old version.")}yield*Bt.filter(this.search(),(t=>!this.seedSignature||this.seedSignature!=JSON.stringify(t))),t()}*search(){const t=this.repo.structure,e=t=>null!=t.entry;if(1==t.length){let[i]=t;yield*Bt.first([this.searchSingleGadget(i),this.searchDoubleRelay(i,0),this.searchSingleGadget(i,Rt.halfIntegral),this.searchSingleGadget(i,Rt.universal)],e)}if(2==t.length){let i=t;yield*Bt.first([this.searchThreeFlapJoin(i,Rt.perfect),this.searchThreeFlapRelay(i),this.searchThreeFlapJoin(i),this.searchThreeFlapRelayJoin(i),this.searchThreeFlapJoin(i,Rt.baseJoin),this.searchThreeFlapRelayJoin(i,Rt.baseJoin),this.searchThreeFlapJoin(i,Rt.standardJoin),this.searchThreeFlapRelayJoin(i,Rt.standardJoin),this.searchThreeFlapRelay(i,Rt.halfIntegral)],e)}}*searchSingleGadget(t,e){yield new W(this.repo,{partitions:[{overlaps:[Tt.toOverlap(t,0)],strategy:e}]})}*searchDoubleRelay(t,e){if(!(t.ox*t.oy%2))if(t.oxTt.toOverlap(t,e))),n=i.c[2].e==s.c[2].e;i.ox>s.ox&&([i,s]=[s,i]);let[r,o]=Ht([i,s]);o.ox-=i.ox,r.oy-=s.oy;let[h,l,a,d]=n?[0,1,2,3]:[2,3,0,1];o.c[a]={type:xt.internal,e:-1,q:d},o.c[l]={type:xt.intersection,e:i.c[h].e},i.c[d]={type:xt.socket,e:-2,q:a},r.c[a]={type:xt.internal,e:-2,q:l},r.c[d]={type:xt.intersection,e:s.c[h].e},s.c[l]={type:xt.socket,e:-1,q:a},n||(o.shift={x:i.ox,y:0},r.shift={x:0,y:s.oy}),yield new W(this.repo,{partitions:[{overlaps:[i],strategy:e},{overlaps:[o],strategy:e}]}),yield new W(this.repo,{partitions:[{overlaps:[r],strategy:e},{overlaps:[s],strategy:e}]})}*searchThreeFlapJoin(t,e){let[i,s]=t.map(((t,e)=>Tt.toOverlap(t,e)));Tt.joinOverlaps(i,s,-1,-2,i.c[0].e==s.c[0].e),yield new W(this.repo,{partitions:[{overlaps:[i,s],strategy:e}]})}*searchThreeFlapRelayJoin(t,e){let[i,s]=t.map(((t,e)=>Tt.toOverlap(t,e))),n=i.c[0].e==s.c[0].e,r=s.ox>i.ox,o=(r?i:s).ox,h=(r?s:i).oy;for(let t=1;tjt.instantiate(t))),this.addOns=null!==(n=null===(s=i.addOns)||void 0===s?void 0:s.map((t=>u.instantiate(t))))&&void 0!==n?n:[];let l=null!==(r=i.offset)&&void 0!==r?r:0;this.location={x:l*o,y:l*h},this.view=new Gt(this)}get type(){return"Device"}toJSON(){return{gadgets:this.gadgets.map((t=>t.toJSON())),offset:this.offset,addOns:this.addOns.length?this.addOns:void 0}}get _origin(){return this._originalDisplacement||(this._originalDisplacement=this.partition.getOriginalDisplacement(this.pattern)),this.pattern.stretch.origin.add(this._originalDisplacement)}get shouldDispose(){return super.shouldDispose||this.pattern.disposed}get isActive(){return this.pattern.isActive}get anchors(){let t=[],{fx:e,fy:i}=this.pattern.stretch;for(let s of this.gadgets)t.push(s.anchorMap.map((t=>{if(!t[0])debugger;return t[0].transform(e,i).add(this.delta)})));return t}get delta(){return this._origin.add(new R(this.location)).sub(T.ZERO)}get regions(){let t=[];for(let e of this.gadgets)t.push(...e.pieces);return t.push(...this.addOns),t}get regionRidges(){let t=new Map;for(let e of this.regions){let i=this.regions.filter((t=>t!=e&&t.direction.parallel(e.direction))).reduce(((t,e)=>(t.push(...e.shape.ridges.filter((t=>!t.perpendicular(e.direction)))),t)),[]);t.set(e,Nt.subtract(e.shape.ridges,i))}return t}get rawRidges(){let{fx:t,fy:e}=this.pattern.stretch,i=[],s=this.regionRidges;for(let n of this.regions)i.push(...s.get(n).map((i=>i.transform(t,e).shift(this.delta))));return Nt.distinct(i)}get ridges(){return Nt.subtract(this.rawRidges,this.neighbors.reduce(((t,e)=>(t.push(...e.rawRidges),t)),[]))}get axisParallels(){let{fx:t,fy:e}=this.pattern.stretch,i=[];for(let s of this.regions)for(let n of s.axisParallels)i.push(n.transform(t,e).shift(this.delta));return i}get outerRidges(){if(!this.isActive)return[];let t=this.getConnectionRidges();for(let[e,i]of this.intersectionMap)i&&t.push(new Nt(e,i));return Nt.distinct(t)}get intersectionMap(){let t=[];if(!this.isActive)return t;for(let[e,i,s]of this.partition.intersectionCorners){let n=this.anchors[i][s],r=this.partition.getSideConnectionTarget(n,e);t.push([n,r])}return t}get openAnchors(){return this.intersectionMap.filter((t=>!t[1]||t[0].eq(t[1]))).map((t=>t[0]))}getConnectionRidges(t=!1){let e=[];for(let[i,s]of this.partition.overlaps.entries())for(let[n,r]of s.c.entries())(r.type==xt.flap&&!t||r.type==xt.internal)&&e.push(new Nt(this.anchors[i][n],this.pattern.getConnectionTarget(r)));return e}constraint(t,e){let{fx:i,fy:s}=this.pattern.stretch,n=i*s,r=Math.round((t.x+n*t.y)/2);for(let[t,e,i]of this.partition.constraints)r=this.fix(r,t,e,i);return new R(r,n*r)}get neighbors(){let t=new Set;for(let e of this.partition.overlaps)for(let i of e.c)if(i.type==xt.socket||i.type==xt.internal){let[e]=this.partition.configuration.overlapMap.get(i.e);t.add(this.pattern.devices[e])}return Array.from(t)}fix(t,e,i,s){let n=e.type!=xt.socket,r=this.pattern.stretch.fx*(0==(n?s:It(e.q))?-1:1),o=this.pattern.getConnectionTarget(e),h=n?this.gadgets[i].slacks[s]:this.pattern.gadgets[-e.e-1].slacks[e.q],l=o.x-this.anchors[i][s].x-h*r;return t*r>l*r&&(t=l),t}get offset(){let t=this.partition.getOriginalDisplacement(this.pattern).x;return t-=this._originalDisplacement.x,(this.location.x-t)*this.pattern.stretch.fx}};t([e],Ot.prototype,"isActive",null),t([e],Ot.prototype,"anchors",null),t([e],Ot.prototype,"delta",null),t([o],Ot.prototype,"regions",null),t([o],Ot.prototype,"regionRidges",null),t([e],Ot.prototype,"rawRidges",null),t([e],Ot.prototype,"ridges",null),t([e],Ot.prototype,"axisParallels",null),t([e],Ot.prototype,"outerRidges",null),t([e],Ot.prototype,"intersectionMap",null),t([e],Ot.prototype,"openAnchors",null),t([e],Ot.prototype,"neighbors",null),Ot=t([e],Ot);class jt{constructor(t){this.pieces=t.pieces.map((t=>c.instantiate(t))),this.offset=t.offset,this.pieces.forEach((t=>t.offset(this.offset))),this.anchors=t.anchors}toJSON(){return Ht(this)}get anchorMap(){return Mt((t=>{var e,i;if(null===(i=null===(e=this.anchors)||void 0===e?void 0:e[t])||void 0===i?void 0:i.location){let e=new T(this.anchors[t].location);return this.offset&&e.addBy(new R(this.offset)),[e,null]}if(1==this.pieces.length)return[this.pieces[0].anchors[t],0];for(let[e,i]of this.pieces.entries())if(i.anchors[t])return[i.anchors[t],e];debugger;throw new Error}))}_getSlack(t){var e,i,s;return null!==(s=null===(i=null===(e=this.anchors)||void 0===e?void 0:e[t])||void 0===i?void 0:i.slack)&&void 0!==s?s:0}get slacks(){return Mt((t=>this._getSlack(t)))}get sx(){return Math.ceil(this.anchorMap[2][0].x-this.anchorMap[0][0].x)}get sy(){return Math.ceil(this.anchorMap[2][0].y-this.anchorMap[0][0].y)}reverseGPS(){let t=jt.instantiate(this.toJSON()),[e,i]=t.pieces,s=Math.ceil(Math.max(e.sx,i.sx)),n=Math.ceil(Math.max(e.sy,i.sy));return e.reverse(s,n),i.reverse(s,n),t}addSlack(t,e){var i;return this.anchors=this.anchors||[],this.anchors[t]=this.anchors[t]||{},this.anchors[t].slack=(null!==(i=this.anchors[t].slack)&&void 0!==i?i:0)+e,this}setupConnectionSlack(t,e,i){let s=this.contour,n=t.contour,r=0==e?1:-1,o=new R(r,r),h=t.anchorMap[i][0].sub(T.ZERO).addBy(o.scale(this._getSlack(e)));s=Pt.shift(s,0==e?h:h.add(T.ZERO.sub(this.anchorMap[2][0])));let l=0;for(;Pt.polygonIntersect(s,n);)s=Pt.shift(s,o),l++;return this.addSlack(e,l),l}get contour(){let t=this.pieces,e=t[0].shape.contour;for(let i=1;iPt.pointInsidePath(t,e.shape.contour)))}static instantiate(t){return t instanceof jt?t:new jt(t)}static simplify(t){if(t.offset&&0==t.offset.x&&0==t.offset.y&&delete t.offset,t.anchors){for(let[e,i]of t.anchors.entries())i&&(0===i.slack&&delete i.slack,0==Object.keys(i).length&&delete t.anchors[e]);t.anchors.some((t=>!!t))||delete t.anchors}return t}}t([o],jt.prototype,"anchorMap",null),t([o],jt.prototype,"slacks",null),t([o],jt.prototype,"sx",null),t([o],jt.prototype,"sy",null),t([o],jt.prototype,"contour",null);class At{constructor(t,e){let i=[],[s,n]=t;if(s.ox==n.ox||s.oy==n.oy)return;[this.g1,this.g2]=t.map((t=>{let s=e.structure[t.parent];return i.push(s),Array.from(c.gops(t,s.sx))}));let[r,o]=i;this.oriented=r.c[0].e==o.c[0].e,this.cw=s.ox>n.ox,this.q=this.oriented?0:2,[this.q1,this.q2]=this.oriented?this.cw?[2,1]:[1,2]:this.cw?[0,3]:[3,0],this.intDist=l.getMaxIntersectionDistance(e.sheet.design.tree,r,o,this.oriented),[this.s1,this.s2]=this.oriented?[s.shift,n.shift]:[this.getReverseShift(s,r),this.getReverseShift(n,o)]}*join(t,e){let{g1:i,g2:s}=this,n=[];if(i){for(let r of i)for(let i of s){let s=c.instantiate(r,!0),o=c.instantiate(i,!0);e&&!e(s,o)||n.push(...t(new Jt(this,s,o)))}n.sort(((t,e)=>t[1]-e[1]));for(let[t]of n)yield t}}*simpleJoin(t){let{s1:e,s2:i}=this;yield*this.join((t=>t.simpleJoin()),((s,n)=>{let r=s.direction.parallel(n.direction);return!(t==Rt.perfect&&!r)&&(!e&&!i||!r)}))}*baseJoin(){yield*this.join((t=>t.baseJoin()))}*standardJoin(){let{s1:t,s2:e}=this,i=!!t||!!e,s=0;yield*this.join((t=>t.standardJoin()),((t,e)=>i||0==s++))}getReverseShift(t,e){var i,s,n,r;let o=t.ox+(null!==(s=null===(i=t.shift)||void 0===i?void 0:i.x)&&void 0!==s?s:0),h=t.oy+(null!==(r=null===(n=t.shift)||void 0===n?void 0:n.y)&&void 0!==r?r:0);if(o!=e.ox||h!=e.oy)return{x:o-e.ox,y:h-e.oy}}getRelayJoinIntersection(t,e,i){let s=this.oriented?new R(1,1):new R(-1,-1),n=t.anchors[this.q].sub(new R(e));return t.shape.ridges[i].intersection(n,s)}}class Jt{constructor(t,e,i){let{oriented:s,s1:n,s2:r,q1:o,q2:h,q:l}=this.joiner=t,a=[],d=[],c=e.sx+i.sx,u={x:0,y:0},p={x:0,y:0};if(n){let r=t.getRelayJoinIntersection(i,n,(o+2)%4);if(!r||!r.isIntegral)return;s?(e.offset(u=r.toIPoint()),c+=u.x,a[l]={location:{x:-u.x,y:-u.y}}):(i.offset(p={x:i.sx-r.x,y:i.sy-r.y}),c+=p.x,a[l]={location:{x:e.sx+p.x,y:e.sy+p.y}})}if(r){let n=t.getRelayJoinIntersection(e,r,(h+2)%4);if(!n||!n.isIntegral)return;s?(i.offset(p=n.toIPoint()),c+=p.x,d[l]={location:{x:-p.x,y:-p.y}}):(i.offset(p={x:n.x-e.sx,y:n.y-e.sy}),c-=p.x,d[l]={location:{x:i.sx-p.x,y:i.sy-p.y}})}let g,f=R.ZERO;s||(g={x:e.sx-i.sx,y:e.sy-i.sy},f=new R(g));let y=new R(u).neg,v=new R(p).addBy(f).neg,_=n?e.anchors[l]:i.anchors[l].add(f),w=_.add(y).toIPoint(),x=_.add(v).toIPoint(),m=e.shape.ridges[o],b=i.shape.ridges[h].shift(f),S=R.bisector(e.direction,i.direction),M=s?T.ZERO:n?new T(a[l].location):e.anchors[l],q=s?1:-1;this.data={p1:e,p2:i,v1:y,v2:v,a1:a,a2:d,off1:u,off2:p,offset:g,size:c,pt:_,pt1:w,pt2:x,e1:m,e2:b,bv:S,org:M,f:q}}*simpleJoin(){if(!this.data)return;let{e1:t,e2:e,p1:i,p2:s,pt:n,bv:r}=this.data,o=t.intersection(e);o&&(i.direction.parallel(s.direction)||o.sub(n).parallel(r))&&this.setupAnchor(o)&&(this.setupDetour([o],[o]),yield this.result())}get deltaPt(){let{org:t,p1:e,p2:i,f:s}=this.data,{cw:n,intDist:r}=this.joiner;return new T(t.x+(r-(n?i:e).ox)*s,t.y+(r-(n?e:i).oy)*s)}baseJoinIntersections(){let{bv:t,e1:e,e2:i,pt:s}=this.data,n=new Nt(this.deltaPt,j.QV[0]),r=new Nt(s,t);return{D1:e.intersection(n),D2:i.intersection(n),B1:e.intersection(r),B2:i.intersection(r),delta:n}}*baseJoin(){if(!this.data)return;let{D1:t,D2:e,B1:i,B2:s}=this.baseJoinIntersections();if((null==i?void 0:i.isIntegral)&&(null==e?void 0:e.isIntegral)&&!i.eq(e)){if(!this.setupAnchor(e))return;this.setupDetour([i],[e,i]),yield this.result(!0)}if((null==s?void 0:s.isIntegral)&&(null==t?void 0:t.isIntegral)&&!s.eq(t)){if(!this.setupAnchor(t))return;this.setupDetour([t,s],[s]),yield this.result()}}substituteEnd(t,e){let[i,s]=t.xOrient();return new Nt(e,this.joiner.oriented?s:i)}closestGridPoint(t,e){let i,s=Number.POSITIVE_INFINITY;for(let n of t.gridPoints()){let t=n.dist(e);ti.x*r?yield*this.obtuseStandardJoin(i,e,0):yield*this.acuteStandardJoin(i,e,1,n)),s&&t&&!s.eq(t)&&(t.x*r>s.x*r?yield*this.obtuseStandardJoin(s,t,1):yield*this.acuteStandardJoin(s,t,0,n))}*obtuseStandardJoin(t,e,i){if(t.isIntegral)return;let{e1:s,e2:n,p1:r,p2:o,pt:h,f:l}=this.data,{cw:a}=this.joiner,d=[s,n][i],c=[r,o][i];if(a!=r.direction.slope.gt(o.direction.slope))return;if(!this.setupAnchor(e))return;let u=e.sub(t).slope.gt(1)?d.xIntersection(e.x):d.yIntersection(e.y),p=this.closestGridPoint(this.substituteEnd(d,t),e);if(p.eq(d.p1)||p.eq(d.p2))return;let g=Pt.triangleTransform([e,u,t],p);g.x*lt.toIPoint())),dir:new Nt(p,g).reflect(c.direction).toIPoint()}],this.setupDetour([0==i?p:e,g],[0==i?e:p,g]),yield this.result(!0,g.dist(p)))}*acuteStandardJoin(t,e,i,s){if(e.isIntegral)return;let{e1:n,e2:r,p1:o,p2:h}=this.data,l=[n,r][i],a=[o,h][i],d=this.closestGridPoint(this.substituteEnd(l,e),t);if(d.eq(l.p1)||d.eq(l.p2))return;let c=e.sub(t).slope.gt(1)?s.yIntersection(d.y):s.xIntersection(d.x),u=Pt.triangleTransform([d,e,c],t);this.setupAnchor(u)&&(this.data.addOns=[{contour:[t,d,u].map((t=>t.toIPoint())),dir:new Nt(d,t).reflect(a.direction).toIPoint()}],this.setupDetour(0==i?[d,t]:[t],0==i?[t]:[d,t]),yield this.result(!0,t.dist(d)))}setupDetour(t,e){let{p1:i,p2:s,v1:n,v2:r,pt1:o,pt2:h}=this.data,l=t.map((t=>t.add(n).toIPoint()));l.push(o);let a=e.map((t=>t.add(r).toIPoint()));a.push(h),(this.joiner.cw?a:l).reverse(),i.clearDetour(),i.addDetour(l),s.clearDetour(),s.addDetour(a)}setupAnchor(t){let{a1:e,a2:i,v1:s,v2:n,f:r}=this.data,{oriented:o,cw:h}=this.joiner;if(t.x*r>this.deltaPt.x*r)return!1;let l=o==h;return e[l?3:1]={location:t.add(s).toIPoint()},i[l?1:3]={location:t.add(n).toIPoint()},!0}result(t=!1,e){let{p1:i,p2:s,a1:n,a2:r,off1:o,off2:h,offset:l,size:a,addOns:d}=this.data;return this.data.addOns=void 0,l&&(h={x:h.x+l.x,y:h.y+l.y}),[{gadgets:[{pieces:[t?i.toJSON():i],offset:this.simplifyIPoint(o),anchors:n.concat()},{pieces:[t?s.toJSON():s],offset:this.simplifyIPoint(h),anchors:r.concat()}],addOns:d},a+10*(null!=e?e:0)]}simplifyIPoint(t){return t&&0==t.x&&0==t.y?void 0:t}}t([o],Jt.prototype,"deltaPt",null);let $t=class extends ${constructor(t,e,i){super(t.sheet),this.joinerCache=new Map,this.stretch=t,this.signature=e,this.structure=JSON.parse(e),this.generator=new Dt(this,i).generate((()=>this.joinerCache.clear()))}builder(t){return t}get isActive(){return this.stretch.isActive&&this.stretch.repository==this}onMove(){this.stretch.selected=!this.entry.entry.selected}getJoiner(t){let e=JSON.stringify(t),i=this.joinerCache.get(e);return i||this.joinerCache.set(e,i=new At(t,this)),i}};var Lt,Bt,Vt,Ft,Wt;function zt(t,...e){for(let i of e)if(i instanceof Object){let e=Object.keys(i);for(let s of e){let e=i[s];e instanceof Object?t[s]instanceof Object&&t[s]!=e?t[s]=zt(t[s],e):t[s]=Ht(e):t[s]=e}}return t}function Ht(t){return zt(t instanceof Array?[]:{},t)}t([e],$t.prototype,"isActive",null),$t=t([e],$t),function(t){t.parse=function(t,s){try{let n=new e(s),{result:r}=new i(n);return r.title=t,r}catch(t){throw"string"==typeof t?new Error(t):new Error("plugin.TreeMaker.invalid")}};class e{constructor(t){this.lines=t.split("\n").values()}get next(){return this.lines.next().value.trim()}get int(){return parseInt(this.next)}get float(){return parseFloat(this.next)}get bool(){return"true"==this.next}skip(t){for(let e=0;e{let e=t.clone({insert:!1});return t.layer&&e.transform(t.layer.matrix),e})),a=0,d=0;for([a,d]of h){i(t,s,n,r,a,d);let e=new paper.Path.Rectangle(t.bounds);if(t.layer&&e.transform(t.layer.matrix),l.every((t=>{let i=e.intersect(t,{insert:!1}).isEmpty(),s=!e.intersects(t);return i&&s})))break}e.set(t,{dx:a,dy:d,timeout:void 0})}(s,p,g,u,o);!function(t,e){e.point.set(t.point),e.justification=t.justification}(s,n)}}(Vt||(Vt={})),function(t){function e(t,e){if("number"==typeof t&&!Number.isSafeInteger(t))throw new Error("Not a safe integer: "+t);if("number"==typeof e&&!Number.isSafeInteger(e))throw new Error("Not a safe integer: "+e);if(0==t&&0==e)throw new Error("Input cannot be both zero");for(t<0&&(t=-t),e<0&&(e=-e);t&&e;)(t%=e)&&(e%=t);return t||e}t.GCD=e,t.LCM=function(t){let i=t[0];for(let s=1;s0?Math.ceil(t):Math.floor(t)}}(Ft||(Ft={})),function(t){let e,i;t.replaceContent=function(t,e,i){t.removeChildren(),e instanceof paper.CompoundPath?t.copyContent(e):(i&&(e=e.clone({insert:!1})),t.addChild(e))},t.setRectangleSize=function(t,e,i){t.segments[1].point.set(e,0),t.segments[2].point.set(e,i),t.segments[3].point.set(0,i)},t.addLine=function(t,e,i){e instanceof T&&(e=e.toPaper()),i instanceof T&&(i=i.toPaper()),t.moveTo(e),t.lineTo(i)},t.setLines=function(e,...i){e.removeChildren();for(let s of i)for(let i of s)t.addLine(e,i.p1,i.p2)},t.Black=function(){return e=e||new paper.Color("black")},t.Red=function(){return i=i||new paper.Color("red")}}(Wt||(Wt={}));let Gt=class extends L{constructor(t){super(t),this.$addItem(wt.axisParallel,this._axisParallels=new paper.CompoundPath(bt.axisParallel)),this.$addItem(wt.ridge,this._ridges=new paper.CompoundPath(bt.ridge)),this.$addItem(wt.shade,this._shade=new paper.CompoundPath(bt.shade))}contains(t){return this._shade.contains(t)}render(){let t=null;for(let e of this.control.regions){let i=this.contourToPath(e.shape.contour);t=t?t.unite(i,{insert:!1}):i}Wt.replaceContent(this._shade,t,!1),Wt.setLines(this._ridges,this.control.ridges,this.control.outerRidges),Wt.setLines(this._axisParallels,this.control.axisParallels)}contourToPath(t){let e=new paper.Path({closed:!0}),{fx:i,fy:s}=this.control.pattern.stretch,n=this.control.delta;return t.forEach((t=>e.add(t.transform(i,s).add(n).toPaper()))),e}renderSelection(t){this._shade.visible=t||this.control.pattern.configuration.repository.stretch.selected}};return Gt=t([e],Gt),rt})); \ No newline at end of file diff --git a/dist/bpstudio.js.map b/dist/bpstudio.js.map index 0b7ba82f..3ed3dfa3 100644 --- a/dist/bpstudio.js.map +++ b/dist/bpstudio.js.map @@ -1 +1 @@ -{"version":3,"sources":["global/import.ts","util/Decorators.ts","pattern/Partitioner.ts","pattern/Region.ts","class/Disposable.ts","pattern/Piece.ts","pattern/AddOn.ts","model/DoubleMap.ts","mapping/BaseMapping.ts","mapping/DoubleMapping.ts","math/Fraction.ts","pattern/Partition.ts","mapping/Mapping.ts","mapping/GroupMapping.ts","class/Mountable.ts","model/Tree.ts","math/Couple.ts","core/DesignBase.ts","class/SheetObject.ts","components/Sheet.ts","view/View.ts","model/TreeNode.ts","model/TreeEdge.ts","model/TreePath.ts","math/Point.ts","math/Vector.ts","core/Design.ts","class/Control.ts","components/Quadrant.ts","pattern/Stretch.ts","pattern/Pattern.ts","pattern/Store.ts","view/ControlView.ts","view/DragSelectView.ts","view/SheetView.ts","class/ViewedControl.ts","pattern/Configuration.ts","view/LabeledView.ts","view/JunctionView.ts","view/RiverView.ts","class/Draggable.ts","view/FlapView.ts","view/EdgeView.ts","view/VertexView.ts","components/Flap.ts","components/Vertex.ts","BPStudio.ts","components/Edge.ts","components/Junction.ts","components/River.ts","core/Display.ts","core/History.ts","core/Migration.ts","core/OptionManager.ts","core/System.ts","global/Enums.ts","global/Style.ts","global/Types.ts","math/Line.ts","math/Matrix.ts","math/PathUtil.ts","math/Rectangle.ts","math/Trace.ts","pattern/ConfigUtil.ts","pattern/Configurator.ts","pattern/Device.ts","pattern/Gadget.ts","pattern/Joiner.ts","pattern/JoinerCore.ts","pattern/Repository.ts","plugin/TreeMaker.ts","util/DeepCopy.ts","util/GeneratorUtil.ts","util/LabelUtil.ts","util/MathUtil.ts","util/PaperUtil.ts","view/DeviceView.ts","global/Interface.ts","pattern/Interfaces.ts"],"names":[],"mappings":"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","file":"bpstudio.js","sourceRoot":"../src/core"} \ No newline at end of file +{"version":3,"sources":["global/import.ts","util/Decorators.ts","pattern/Partitioner.ts","pattern/Region.ts","class/Disposable.ts","pattern/Piece.ts","pattern/AddOn.ts","model/DoubleMap.ts","mapping/BaseMapping.ts","mapping/DoubleMapping.ts","math/Fraction.ts","pattern/Partition.ts","mapping/Mapping.ts","mapping/GroupMapping.ts","class/Mountable.ts","model/Tree.ts","math/Couple.ts","core/DesignBase.ts","class/SheetObject.ts","components/Sheet.ts","view/View.ts","model/TreeNode.ts","model/TreeEdge.ts","model/TreePath.ts","math/Point.ts","math/Vector.ts","core/Design.ts","class/Control.ts","components/Quadrant.ts","pattern/Stretch.ts","pattern/Pattern.ts","pattern/Store.ts","view/ControlView.ts","view/DragSelectView.ts","view/SheetView.ts","class/ViewedControl.ts","pattern/Configuration.ts","view/LabeledView.ts","view/JunctionView.ts","view/RiverView.ts","class/Draggable.ts","view/FlapView.ts","view/EdgeView.ts","view/VertexView.ts","components/Flap.ts","components/Vertex.ts","BPStudio.ts","components/Edge.ts","components/Junction.ts","components/River.ts","core/Display.ts","core/History.ts","core/Migration.ts","core/OptionManager.ts","core/System.ts","global/Enums.ts","global/Style.ts","global/Types.ts","math/Line.ts","math/Matrix.ts","math/PathUtil.ts","math/Rectangle.ts","math/Trace.ts","pattern/ConfigUtil.ts","pattern/Configurator.ts","pattern/Device.ts","pattern/Gadget.ts","pattern/Joiner.ts","pattern/JoinerCore.ts","pattern/Repository.ts","plugin/TreeMaker.ts","util/DeepCopy.ts","util/GeneratorUtil.ts","util/LabelUtil.ts","util/MathUtil.ts","util/PaperUtil.ts","view/DeviceView.ts","global/Interface.ts","pattern/Interfaces.ts"],"names":[],"mappings":"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","file":"bpstudio.js","sourceRoot":"../src/core"} \ No newline at end of file diff --git a/dist/index.htm b/dist/index.htm index 34d7098b..c693084c 100644 --- a/dist/index.htm +++ b/dist/index.htm @@ -1 +1 @@ -Box Pleating Studio
\ No newline at end of file +Box Pleating Studio
\ No newline at end of file diff --git a/dist/index.html b/dist/index.html index 63787b87..4d888495 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1 +1 @@ -Box Pleating Studio
\ No newline at end of file +Box Pleating Studio
\ No newline at end of file diff --git a/dist/log/20210118.md b/dist/log/20210118.md new file mode 100644 index 00000000..c0026e68 --- /dev/null +++ b/dist/log/20210118.md @@ -0,0 +1,5 @@ + +## Version 0.3.0 + +New feature: +- Now newly created flaps will locate themselves based on the relative locations of the corresponding vertices on the sheet. diff --git a/dist/log/log.js b/dist/log/log.js index 452dead5..238668e9 100644 --- a/dist/log/log.js +++ b/dist/log/log.js @@ -1 +1 @@ -let logs=[20201224,20201229,20210108] \ No newline at end of file +let logs=[20201224,20201229,20210108,20210118] \ No newline at end of file diff --git a/dist/sw.js b/dist/sw.js index a630a0a2..fe645a90 100644 --- a/dist/sw.js +++ b/dist/sw.js @@ -1 +1 @@ -importScripts("https://storage.googleapis.com/workbox-cdn/releases/6.0.2/workbox-sw.js");const{strategies:strategies,routing:routing,googleAnalytics:googleAnalytics,broadcastUpdate:broadcastUpdate,precaching:precaching}=workbox;googleAnalytics.initialize();let defaultHandler=new strategies.StaleWhileRevalidate({cacheName:"assets",plugins:[new broadcastUpdate.BroadcastUpdatePlugin({generatePayload:e=>({path:new URL(e.request.url).pathname})})]});routing.setDefaultHandler(defaultHandler);const precacheController=new precaching.PrecacheController({cacheName:"assets"});precacheController.addToCacheList([{url:"donate.htm",revision:"e3710edca72642e95208c3b9d55c8c50"},{url:"index.htm",revision:"32284d0a8e0f745f0d4658142e1a649b"},{url:"bpstudio.js",revision:"2c282ad9e8b5176a80c0caedf085f1d3"},{url:"donate.js",revision:"f2d9a42ebc0e8334a2ac9d07a0cf4b50"},{url:"lib/bootstrap/bootstrap.min.js",revision:"cabc5d07dec4c381f521bbcd41c009db"},{url:"lib/bootstrap/popper.min.js",revision:"1f3b5fab3d72c6fccb24033b6f2524a0"},{url:"lib/clickout-event.js",revision:"098a254fce051cb5a0f1b1b5f7b8b74e"},{url:"lib/jszip.min.js",revision:"11baf76eea8c783234b22bdce63aa7a9"},{url:"lib/lzma_worker-min.js",revision:"522bc8c23346ddf54992d531acabcb3e"},{url:"lib/marked.min.js",revision:"5cd02d93f2d1c372109c3ccdc9970b5a"},{url:"lib/paper-core.min.js",revision:"2b941c6b57632537a4752e533ae88bfe"},{url:"lib/sortable.min.js",revision:"db61fae4ce93e28e89e8710eb275fe3c"},{url:"lib/vue-clipboard.min.js",revision:"7ed42cdcf96b7af11366d227331880c4"},{url:"lib/vue-i18n.js",revision:"2730c39eb8ceb1660ad70b94b7052d07"},{url:"lib/vue.runtime.min.js",revision:"80cb121dd45a5b6b11f9345af205dc0e"},{url:"lib/vuedraggable.umd.min.js",revision:"4f38b11a5046baa0b1e5b7d994e7052d"},{url:"locale.js",revision:"8fd87d331990e73e5b28c411b61fbba7"},{url:"log/log.js",revision:"7ac06cee5332e54b11378a5682d3e6a0"},{url:"main.js",revision:"fb0ff9df6eed8e2b49b3580df328e7f6"},{url:"shrewd.min.js",revision:"876cc96c7b62c255900791ea5b66421b"},{url:"assets/bps/style.css",revision:"d45125abdd2766eb5e40a431158ae3dc"},{url:"lib/bootstrap/bootstrap.min.css",revision:"bbf4700154b05c5746c74bd564a029a0"},{url:"lib/font-awesome/css/all.min.css",revision:"84d8ad2b4fcdc0f0c58247e778133b3a"},{url:"main.css",revision:"a0bdd00a7fa953a9832fccdca18ffdf2"},{url:"assets/bps/fonts/bps.woff2",revision:"aef5d23b55a316e55aeeac094e331ade"},{url:"lib/font-awesome/webfonts/fa-brands-400.woff2",revision:"cac68c831145804808381a7032fdc7c2"},{url:"lib/font-awesome/webfonts/fa-regular-400.woff2",revision:"3a3398a6ef60fc64eacf45665958342e"},{url:"lib/font-awesome/webfonts/fa-solid-900.woff2",revision:"c500da19d776384ba69573ae6fe274e7"},{url:"manifest.json",revision:"17acf8568b0e6bb8a6c25af07c7290ef"},{url:"assets/icon/icon-32.png",revision:"e3373fcd5a66b341b6c9c6d9d6283a23"},{url:"assets/icon/icon-192.png",revision:"e9085f6760d9bb625882c85bef6fd16f"},{url:"log/20210108.md",revision:"adc9c3a5120274ffd854dd00b52b90a9"}]);const precacheRoute=new precaching.PrecacheRoute(precacheController,{ignoreURLParametersMatching:[/.*/],directoryIndex:"index.htm",cleanURLs:!1});async function message(e){if(e.ports[0]&&"id"==e.data){let a=await self.clients.matchAll({type:"window"}),s=Number.POSITIVE_INFINITY;for(let i of a)if(i.id!=e.source.id){let e=await callClient(i,"id");e{let i=new MessageChannel;i.port1.onmessage=e=>s(e.data),e.postMessage(a,[i.port2])}))}routing.registerRoute(precacheRoute),caches.delete("versioned"),routing.registerRoute((({url:e})=>e.pathname.endsWith(".md")),new strategies.NetworkFirst({fetchOptions:{cache:"reload"},cacheName:"assets"})),routing.registerRoute((({request:e})=>"POST"==e.method),new strategies.NetworkOnly,"POST"),self.addEventListener("install",(e=>{skipWaiting(),console.log("service worker installing"),precacheController.install(e)})),self.addEventListener("activate",(e=>{precacheController.activate(e)})),self.addEventListener("message",(e=>{e.waitUntil(message(e))})); \ No newline at end of file +importScripts("https://storage.googleapis.com/workbox-cdn/releases/6.0.2/workbox-sw.js");const{strategies:strategies,routing:routing,googleAnalytics:googleAnalytics,broadcastUpdate:broadcastUpdate,precaching:precaching}=workbox;googleAnalytics.initialize();let defaultHandler=new strategies.StaleWhileRevalidate({cacheName:"assets",plugins:[new broadcastUpdate.BroadcastUpdatePlugin({generatePayload:e=>({path:new URL(e.request.url).pathname})})]});routing.setDefaultHandler(defaultHandler);const precacheController=new precaching.PrecacheController({cacheName:"assets"});precacheController.addToCacheList([{url:"donate.htm",revision:"e3710edca72642e95208c3b9d55c8c50"},{url:"index.htm",revision:"6e5e4d8da2625d3852d5d6cf90e2d48c"},{url:"bpstudio.js",revision:"62d8ce388f6932af30c9108fc81c65aa"},{url:"donate.js",revision:"f2d9a42ebc0e8334a2ac9d07a0cf4b50"},{url:"lib/bootstrap/bootstrap.min.js",revision:"cabc5d07dec4c381f521bbcd41c009db"},{url:"lib/bootstrap/popper.min.js",revision:"1f3b5fab3d72c6fccb24033b6f2524a0"},{url:"lib/clickout-event.js",revision:"098a254fce051cb5a0f1b1b5f7b8b74e"},{url:"lib/jszip.min.js",revision:"11baf76eea8c783234b22bdce63aa7a9"},{url:"lib/lzma_worker-min.js",revision:"522bc8c23346ddf54992d531acabcb3e"},{url:"lib/marked.min.js",revision:"5cd02d93f2d1c372109c3ccdc9970b5a"},{url:"lib/paper-core.min.js",revision:"2b941c6b57632537a4752e533ae88bfe"},{url:"lib/sortable.min.js",revision:"db61fae4ce93e28e89e8710eb275fe3c"},{url:"lib/vue-clipboard.min.js",revision:"7ed42cdcf96b7af11366d227331880c4"},{url:"lib/vue-i18n.js",revision:"2730c39eb8ceb1660ad70b94b7052d07"},{url:"lib/vue.runtime.min.js",revision:"80cb121dd45a5b6b11f9345af205dc0e"},{url:"lib/vuedraggable.umd.min.js",revision:"4f38b11a5046baa0b1e5b7d994e7052d"},{url:"locale.js",revision:"8fd87d331990e73e5b28c411b61fbba7"},{url:"log/log.js",revision:"8019955cfc770ea4c68869760f2ecd9b"},{url:"main.js",revision:"fb0ff9df6eed8e2b49b3580df328e7f6"},{url:"shrewd.min.js",revision:"876cc96c7b62c255900791ea5b66421b"},{url:"assets/bps/style.css",revision:"d45125abdd2766eb5e40a431158ae3dc"},{url:"lib/bootstrap/bootstrap.min.css",revision:"bbf4700154b05c5746c74bd564a029a0"},{url:"lib/font-awesome/css/all.min.css",revision:"84d8ad2b4fcdc0f0c58247e778133b3a"},{url:"main.css",revision:"a0bdd00a7fa953a9832fccdca18ffdf2"},{url:"assets/bps/fonts/bps.woff2",revision:"aef5d23b55a316e55aeeac094e331ade"},{url:"lib/font-awesome/webfonts/fa-brands-400.woff2",revision:"cac68c831145804808381a7032fdc7c2"},{url:"lib/font-awesome/webfonts/fa-regular-400.woff2",revision:"3a3398a6ef60fc64eacf45665958342e"},{url:"lib/font-awesome/webfonts/fa-solid-900.woff2",revision:"c500da19d776384ba69573ae6fe274e7"},{url:"manifest.json",revision:"17acf8568b0e6bb8a6c25af07c7290ef"},{url:"assets/icon/icon-32.png",revision:"e3373fcd5a66b341b6c9c6d9d6283a23"},{url:"assets/icon/icon-192.png",revision:"e9085f6760d9bb625882c85bef6fd16f"},{url:"log/20210118.md",revision:"29b52ff8ad122a3f2581fa64fe9693c4"}]);const precacheRoute=new precaching.PrecacheRoute(precacheController,{ignoreURLParametersMatching:[/.*/],directoryIndex:"index.htm",cleanURLs:!1});async function message(e){if(e.ports[0]&&"id"==e.data){let a=await self.clients.matchAll({type:"window"}),s=Number.POSITIVE_INFINITY;for(let i of a)if(i.id!=e.source.id){let e=await callClient(i,"id");e{let i=new MessageChannel;i.port1.onmessage=e=>s(e.data),e.postMessage(a,[i.port2])}))}routing.registerRoute(precacheRoute),caches.delete("versioned"),routing.registerRoute((({url:e})=>e.pathname.endsWith(".md")),new strategies.NetworkFirst({fetchOptions:{cache:"reload"},cacheName:"assets"})),routing.registerRoute((({request:e})=>"POST"==e.method),new strategies.NetworkOnly,"POST"),self.addEventListener("install",(e=>{skipWaiting(),console.log("service worker installing"),precacheController.install(e)})),self.addEventListener("activate",(e=>{precacheController.activate(e)})),self.addEventListener("message",(e=>{e.waitUntil(message(e))})); \ No newline at end of file diff --git a/src/app/index.htm b/src/app/index.htm index b783f67b..8b764864 100644 --- a/src/app/index.htm +++ b/src/app/index.htm @@ -9,7 +9,7 @@ - + @@ -20,7 +20,7 @@ page_title: document.title, page_path: "/", app_name: document.title, - app_version: "741" + app_version: "745" }; gtag('js', new Date()); gtag('config', 'G-GG1TEZGBCQ', app_config); diff --git a/src/core/BPStudio.ts b/src/core/BPStudio.ts index d60024d6..4126b8fe 100644 --- a/src/core/BPStudio.ts +++ b/src/core/BPStudio.ts @@ -95,17 +95,11 @@ public create(json: any): Design { Object.assign(json, { version: Migration.current, - layout: { - flaps: [ - { id: 0, width: 0, height: 0, x: 8, y: 7 }, - { id: 2, width: 0, height: 0, x: 8, y: 9 } - ] - }, tree: { nodes: [ - { id: 0, name: "", x: 10, y: 13 }, + { id: 0, name: "", x: 10, y: 7 }, { id: 1, name: "", x: 10, y: 10 }, - { id: 2, name: "", x: 10, y: 7 } + { id: 2, name: "", x: 10, y: 13 } ], edges: [ { n1: 0, n2: 1, length: 1 }, diff --git a/src/core/class/Draggable.ts b/src/core/class/Draggable.ts index 39567deb..9e486379 100644 --- a/src/core/class/Draggable.ts +++ b/src/core/class/Draggable.ts @@ -39,15 +39,20 @@ abstract class Draggable extends ViewedControl { if(!by.eq(this.location)) this.design.history.takeAction(() => { this.location.x = by.x; this.location.y = by.y; + this.onDragged(); }); } else { if(!by.eq(Vector.ZERO)) this.design.history.takeAction(() => { this.location.x += by.x; this.location.y += by.y; + this.onDragged(); }); } } + /** 真的發生拖曳之後的 callback */ + protected onDragged() { } + /** * 把一個傳入的 `Vector` 進行修正到實際上可以被容許的移動範圍之上, * 預設行為是會一律修正成零向量(換句話說,`Control` 將不能動)。 @@ -62,6 +67,14 @@ abstract class Draggable extends ViewedControl { /** 當前位置 */ @shrewd public location: IPoint = { x: 0, y: 0 }; + + /** 把 target 移動到 source 的相對應位置上 */ + public static relocate(source: Draggable, target: Draggable) { + // TODO: 不同的形狀的 Sheet 要如何處理 + let ss = source.sheet, ts = target.sheet; + target.location.x = Math.round(source.location.x / ss.width * ts.width); + target.location.y = Math.round(source.location.y / ss.height * ts.height); + } } ////////////////////////////////////////////////////////////////// @@ -74,6 +87,16 @@ abstract class Draggable extends ViewedControl { abstract class IndependentDraggable extends Draggable { + private _isNew: boolean = true; + + /** 這個物件自從建構以來,Design 是否尚未切換過 Sheet */ + protected get isNew() { return this._isNew; } + protected set isNew(v) { if(!v) this._isNew = v; } + + @shrewd private watchIsNew() { + if(this._isNew && this.sheet != this.design.sheet) this._isNew = false; + } + /** 物件在 Sheet 上佔據的高度 */ public abstract readonly height: number; diff --git a/src/core/components/Flap.ts b/src/core/components/Flap.ts index ab7b9763..7e82584c 100644 --- a/src/core/components/Flap.ts +++ b/src/core/components/Flap.ts @@ -74,18 +74,28 @@ interface JFlap { super(sheet); this.node = node; - let option = this.sheet.design.options.get("flap", node.id); + let design = sheet.design; + let option = design.options.get("flap", node.id); if(option) { + // 找得到設定就用設定值 this.location.x = option.x; this.location.y = option.y; this.width = option.width; this.height = option.height; + this.isNew = false; + } else { + // 否則根據對應的頂點的位置來粗略估計初始化 + Draggable.relocate(design.vertices.get(this.node)!, this); } this.quadrants = MakePerQuadrant(i => new Quadrant(sheet, this, i)); this.view = new FlapView(this); } + protected onDragged() { + if(this.isNew) Draggable.relocate(this, this.design.vertices.get(this.node)!); + } + protected get shouldDispose(): boolean { return super.shouldDispose || this.node.disposed || this.node.degree != 1; } diff --git a/src/core/components/Vertex.ts b/src/core/components/Vertex.ts index b301eb4d..bff99dc8 100644 --- a/src/core/components/Vertex.ts +++ b/src/core/components/Vertex.ts @@ -2,6 +2,7 @@ interface JVertex extends IPoint { id: number; name: string; + isNew?: boolean; } @@ -32,6 +33,10 @@ interface JVertex extends IPoint { return this.location; } + protected onDragged() { + if(this.isNew) Draggable.relocate(this, this.design.flaps.get(this.node)!); + } + public addLeaf(length = 1) { this.design.history.takeAction(() => { // 在新增 TreeNode 之前先把全體 Vertex 快取起來, @@ -48,7 +53,8 @@ interface JVertex extends IPoint { id: node.id, name: node.name, x: p.x, - y: p.y + y: p.y, + isNew: true }); }); } @@ -90,6 +96,7 @@ interface JVertex extends IPoint { if(option.name != undefined) this.node.name = option.name; this.location.x = option.x; this.location.y = option.y; + this.isNew = !!option.isNew; } this.view = new VertexView(this); diff --git a/src/core/core/Design.ts b/src/core/core/Design.ts index 8ebd3ede..b37bbf68 100644 --- a/src/core/core/Design.ts +++ b/src/core/core/Design.ts @@ -21,9 +21,9 @@ interface IDesignObject { @action public title: string; - protected readonly LayoutSheet: Sheet; + public readonly LayoutSheet: Sheet; - protected readonly TreeSheet: Sheet; + public readonly TreeSheet: Sheet; public readonly tree: Tree;