/*! Copyright (C) 1998-2019 by Northwoods Software Corporation. All Rights Reserved. */ window.gfp=function(t){var e={};function a(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,a),o.l=!0,o.exports}return a.m=t,a.c=e,a.d=function(t,e,n){a.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.t=function(t,e){if(1&e&&(t=a(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)a.d(n,o,function(e){return t[e]}.bind(null,o));return n},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,"a",e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p="",a(a.s=3)}([function(t,e){t.exports=window.go},function(t,e,a){"use strict";var n,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var a in e)e.hasOwnProperty(a)&&(t[a]=e[a])})(t,e)},function(t,e){function a(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(a.prototype=e.prototype,new a)});Object.defineProperty(e,"__esModule",{value:!0});var i=a(0),r=function(t){function e(){var e=t.call(this)||this;return e._buildingWall=null,e._isBuildingDivider=!1,e.name="WallBuilding",e._startPoint=null,e._endPoint=null,e._wallReshapingTool=null,e._isBuildingDivider=!1,e}return o(e,t),Object.defineProperty(e.prototype,"startPoint",{get:function(){return this._startPoint},set:function(t){this._startPoint=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endPoint",{get:function(){return this._endPoint},set:function(t){this._endPoint=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"wallReshapingTool",{get:function(){return this._wallReshapingTool},set:function(t){this._wallReshapingTool=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"buildingWall",{get:function(){return this._buildingWall},set:function(t){this._buildingWall=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isBuildingDivider",{get:function(){return this._isBuildingDivider},set:function(t){this._isBuildingDivider=t},enumerable:!0,configurable:!0}),e.prototype.doActivate=function(){this.endPoint=null,this.startTransaction(this.name),this.diagram.isMouseCaptured=!0;var t=this,e=t.diagram,a=t.diagram.lastInput.documentPoint,n=!1,o=e.findNodesByExample({category:"WallGroup"});o.iterator.each(function(o){if(e.isPointInWall(o,a)&&null===t.buildingWall){var i=a.projectOntoLineSegmentPoint(o.data.startpoint,o.data.endpoint);a=i,n=!0}}),o.iterator.each(function(t){var e=t.data.startpoint,o=t.data.endpoint;Math.sqrt(e.distanceSquaredPoint(a))<15&&(a=e,n=!0),Math.sqrt(o.distanceSquaredPoint(a))<15&&(a=o,n=!0)});var r=e.model.modelData.gridSize;t.diagram.toolManager.draggingTool.isGridSnapEnabled&&!n||(r=1e-4);var l=r*Math.round(a.x/r),s=r*Math.round(a.y/r);a=new i.Point(l,s),this.startPoint=a,this.wallReshapingTool=e.toolManager.mouseDownTools.elt(3),this.isActive=!0},e.prototype.doMouseDown=function(){var t=this.diagram;this.diagram.currentCursor="crosshair";var e={key:"wall",category:"WallGroup",caption:this.isBuildingDivider?"Divider":"Wall",type:this.isBuildingDivider?"Divider":"Wall",startpoint:this.startPoint,endpoint:this.startPoint,smpt1:this.startPoint,smpt2:this.startPoint,empt1:this.startPoint,empt2:this.startPoint,thickness:this._isBuildingDivider?.005:parseFloat(t.model.modelData.wallThickness),color:"lightgray",isGroup:!0,notes:"",isDivider:this.isBuildingDivider};this.diagram.model.addNodeData(e);var a=t.findPartForKey(e.key);this.buildingWall=a,t.updateWall(a);var n=t.findPartForData(e);null!==n&&(this.transactionResult=this.name,t.raiseDiagramEvent("PartCreated",n),null!==this.wallReshapingTool&&(this.wallReshapingTool.isEnabled=!0,t.select(n),this.wallReshapingTool.isBuilding=!0,this.wallReshapingTool.adornedShape=n.findObject("SHAPE"),this.wallReshapingTool.doActivate()))},e.prototype.doKeyDown=function(){var t=this.diagram;if("Esc"===t.lastInput.key){var e=t.selection.first();t.remove(e),t.pointNodes.iterator.each(function(e){t.remove(e)}),t.dimensionLinks.iterator.each(function(e){t.remove(e)}),t.pointNodes.clear(),t.dimensionLinks.clear(),this.doDeactivate()}i.Tool.prototype.doKeyDown.call(this)},e.prototype.doMouseMove=function(){null!==this.wallReshapingTool&&(this.diagram.currentCursor="crosshair",this.wallReshapingTool.doMouseMove())},e.prototype.doDeactivate=function(){var t=this.diagram;this.buildingWall=null,this.diagram.currentCursor="",this.diagram.isMouseCaptured=!1,null!==this.wallReshapingTool&&(this.wallReshapingTool.isEnabled=!1,this.wallReshapingTool.adornedShape=null,this.wallReshapingTool.doMouseUp(),this.wallReshapingTool.doDeactivate(),this.wallReshapingTool.isBuilding=!1),t.updateWallDimensions(),this.stopTransaction(),this.isActive=!1},e}(i.Tool);e.WallBuildingTool=r},function(t,e,a){"use strict";var n,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var a in e)e.hasOwnProperty(a)&&(t[a]=e[a])})(t,e)},function(t,e){function a(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(a.prototype=e.prototype,new a)});Object.defineProperty(e,"__esModule",{value:!0});var i=a(0),r=function(t){function e(){var e=t.call(this)||this,a=new i.Shape;return a.figure="Diamond",a.desiredSize=new i.Size(12,12),a.fill="lightblue",a.stroke="dodgerblue",a.cursor="move",e._handleArchetype=a,e._handle=null,e._adornedShape=null,e._reshapeObjectName="SHAPE",e._angle=0,e._length=0,e._isBuilding=!1,e._isIntersecting=!1,e._joinedWalls=new i.Set,e._returnPoint=null,e._returnData=null,e._joinedWalls=new i.Set,e._wallIntersecting=null,e}return o(e,t),Object.defineProperty(e.prototype,"handleArchetype",{get:function(){return this._handleArchetype},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"handle",{get:function(){return this._handle},set:function(t){this._handle=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"adornedShape",{get:function(){return this._adornedShape},set:function(t){this._adornedShape=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"angle",{get:function(){return this._angle},set:function(t){this._angle=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"length",{get:function(){return this._length},set:function(t){this._length=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"reshapeObjectName",{get:function(){return this._reshapeObjectName},set:function(t){this._reshapeObjectName=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isBuilding",{get:function(){return this._isBuilding},set:function(t){this._isBuilding=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"returnData",{get:function(){return this._returnData},set:function(t){this._returnData=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"returnPoint",{get:function(){return this._returnPoint},set:function(t){this._returnPoint=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isIntersecting",{get:function(){return this._isIntersecting},set:function(t){this._isIntersecting=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"wallIntersecting",{get:function(){return this._wallIntersecting},set:function(t){this._wallIntersecting=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"joinedWalls",{get:function(){return this._joinedWalls},set:function(t){this._joinedWalls=t},enumerable:!0,configurable:!0}),e.prototype.updateAdornments=function(t){if(!(null===t||t instanceof i.Link)){if(t.isSelected&&!this.diagram.isReadOnly){var e=t.findObject(this.reshapeObjectName);if(null!==e&&null!==e.part&&"WallGroup"===e.part.data.category){var a=e,n=t.findAdornment(this.name);if(null===n&&(n=this.makeAdornment(a)),null!==n&&null!==a.part&&null!=a.geometry){var o=a.geometry.bounds,r=a.part.actualBounds,l=n.findObject("BODY");if(null===l)return;return l.desiredSize=o.size,n.elements.each(function(e){if(void 0!==e.name){var a=0,n=0;switch(e.name){case"sPt":a=t.data.startpoint.x-r.x,n=t.data.startpoint.y-r.y;break;case"ePt":a=t.data.endpoint.x-r.x,n=t.data.endpoint.y-r.y}var l=Math.min((a-o.x)/o.width,1),s=Math.min((n-o.y)/o.height,1);l<0&&(l=0),s<0&&(s=0),l>1&&(l=1),s>1&&(s=1),isNaN(l)&&(l=0),isNaN(s)&&(s=0),e.alignment=new i.Spot(Math.max(0,l),Math.max(0,s))}}),t.addAdornment(this.name,n),void(n.location=a.getDocumentPoint(i.Spot.Center))}}}t.removeAdornment(this.name)}},e.prototype.canStart=function(){if(!this.isEnabled)return!1;var t=this.diagram;return null!==t&&!t.isReadOnly&&(!!t.allowReshape&&(!!t.lastInput.left&&(null!==this.findToolHandleAt(t.firstInput.documentPoint,this.name)||this.isBuilding)))},e.prototype.doActivate=function(){var t=this.diagram;if(null!==t){if(this.isBuilding){if(null!==this.adornedShape&&null!==this.adornedShape.part){var e=this.adornedShape.part;this.handle=this.findToolHandleAt(e.data.endpoint,this.name),this.returnPoint=e.data.startpoint}}else{if(this.handle=this.findToolHandleAt(t.firstInput.documentPoint,this.name),null===this.handle)return;var a=this.handle.part.adornedObject;e=a.part;if(!a)return;this.adornedShape=a,this.returnPoint="sPt"===this.handle.name?e.data.startpoint:e.data.endpoint;var n=e.memberParts;if(0!==n.count){var o=new i.Map;n.iterator.each(function(t){o.add(t.data.key,t.location)}),this.returnData=o}}t.isMouseCaptured=!0,this.startTransaction(this.name),this.isActive=!0}},e.prototype.doMouseMove=function(){var t=this.diagram,e=this;if(null!==e.handle){var a=e.handle.part.adornedPart,n=t.lastInput.documentPoint;if(e.isActive&&null!==t){if(t.lastInput.shift){var o="sPt"===e.handle.name?a.data.endpoint:a.data.startpoint,r=o.directionPoint(n),l=Math.sqrt(o.distanceSquaredPoint(n));r=45*Math.round(r/45);var s=new i.Point(o.x+l,o.y),d=o.x,u=o.y;s=(s=(s=s.offset(-d,-u)).rotate(r)).offset(d,u),n=s}t.findNodesByExample({category:"WallGroup"}).iterator.each(function(o){if(o.data.key!==a.data.key){var i=o.data.startpoint,r=o.data.endpoint;t.isPointInWall(o,n)&&(n=n.projectOntoLineSegmentPoint(o.data.startpoint,o.data.endpoint),e.isIntersecting=!0),Math.sqrt(i.distanceSquaredPoint(n))<10?n=i:Math.sqrt(r.distanceSquaredPoint(n))<10&&(n=r)}});var p=e.getClosestIntersectingWall(n);if(null!==p&&null===e.wallIntersecting||null!==e.wallIntersecting&&void 0!==e.wallIntersecting&&null!==e.wallIntersecting.data&&e.performMiteringOnWall(e.wallIntersecting),null!=p){e.isIntersecting=!0,e.wallIntersecting=p,n=n.projectOntoLineSegmentPoint(p.data.startpoint,p.data.endpoint);var c=Math.sqrt(n.distanceSquaredPoint(p.data.startpoint)),g=Math.sqrt(n.distanceSquaredPoint(p.data.endpoint));c<25?n=p.data.startpoint:g<10&&(n=p.data.endpoint)}else e.isIntersecting=!1,null!==e.wallIntersecting&&void 0!==e.wallIntersecting&&null!==e.wallIntersecting.data&&null===t.getWallsIntersection(a,e.wallIntersecting)&&(e.wallIntersecting=null);e.calcAngleAndLengthFromHandle(n),e.reshape(n)}e.performMiteringOnWall(a),t.updateWallDimensions(),t.updateWallAngles()}},e.prototype.getClosestIntersectingWall=function(t){if(null===this.handle)return null;var e=this.handle.part.adornedPart,a="sPt"===this.handle.name?e.data.endpoint:e.data.startpoint,n={key:"wall",category:"WallGroup",caption:"Wall",type:"Wall",startpoint:a,smpt1:a,smpt2:a,endpoint:t,empt1:t,empt2:t,thickness:parseFloat(this.diagram.model.modelData.wallThickness),isGroup:!0,notes:""};this.diagram.model.addNodeData(n);var o=this.diagram.findPartForKey(n.key),i=this.diagram,r=this.diagram.findNodesByExample({category:"WallGroup"}),l=null,s=Number.MAX_VALUE;return r.iterator.each(function(t){if(t.data.key!==e.data.key&&t.data.key!==o.data.key){var n=i.getWallsIntersection(o,t),r=!1,d=parseFloat(Math.sqrt(t.data.startpoint.distanceSquaredPoint(a)).toFixed(2)),u=parseFloat(Math.sqrt(a.distanceSquaredPoint(t.data.endpoint)).toFixed(2)),p=parseFloat(Math.sqrt(t.data.startpoint.distanceSquaredPoint(t.data.endpoint)).toFixed(2));if(Math.abs(d+u-p)<=.1&&(r=!0),null!==n&&!r){var c=Math.sqrt(a.distanceSquaredPoint(n));cO)){var j=this.isClockwise(c,g,T)?N:T;if(!isNaN(j.x)&&!isNaN(j.y)){if(this.pointsApproximatelyEqual(n,c)||this.pointsApproximatelyEqual(o,c)){var D=null;this.pointsApproximatelyEqual(g,n)?D=this.isClockwise(g,c,j)?"empt1":"empt2":this.pointsApproximatelyEqual(g,o)&&(D=this.isClockwise(g,c,j)?"smpt2":"smpt1"),null!==D&&(a.model.setDataProperty(t.data,D,j),a.updateWall(t))}if(this.pointsApproximatelyEqual(r,c)||this.pointsApproximatelyEqual(l,c)){D=null;this.pointsApproximatelyEqual(f,r)?D=this.isClockwise(f,c,j)?"empt1":"empt2":this.pointsApproximatelyEqual(f,l)&&(D=this.isClockwise(f,c,j)?"smpt2":"smpt1"),null!==D&&(a.model.setDataProperty(e.data,D,j),a.updateWall(e))}}}}}},e.prototype.getAllWallIntersectionPoints=function(){var t=this,e=t.diagram,a=e.findNodesByExample({category:"WallGroup"}),n=new i.Set;return a.iterator.each(function(a){e.findNodesByExample({category:"WallGroup"}).iterator.each(function(o){if(o.data.key!==a.data.key){var r=e.getWallsIntersection(a,o),l=!0;null!==r&&(n.iterator.each(function(e){var a=i.Point.parse(e);t.pointsApproximatelyEqual(a,r)&&(l=!1)}),l&&n.add(i.Point.stringify(r)))}})}),n},e.prototype.getAllWallsAtIntersection=function(t,e){null==e&&(e=!0);var a=this,n=a.diagram,o=new i.List;return null===t?o:(n.findObjectsNear(t,1,function(t){return null!==t.part?t.part:null},function(n){if(!(n instanceof i.Group&&"WallGroup"===n.category)||!e&&n.data.isDivider||o.contains(n))return!1;var r=n.data.startpoint,l=n.data.endpoint;return a.isPointOnSegment(r,l,t)},!0,o),o)},e.prototype.doWallsShareAnEndpoint=function(t,e){var a=t.data.startpoint,n=t.data.endpoint,o=e.data.startpoint,i=e.data.endpoint;return!!(this.pointsApproximatelyEqual(a,o)||this.pointsApproximatelyEqual(a,i)||this.pointsApproximatelyEqual(n,o)||this.pointsApproximatelyEqual(n,i))},e.prototype.maybeSplitWall=function(){var t=this;if(null!==t.handle){var e=t.handle.part.adornedPart,a="sPt"===t.handle.name?e.data.startpoint:e.data.endpoint,n=t.joinedWalls,o=t.getAllWallsAtIntersection(a);if(o.remove(e),n.iterator.each(function(t){o.remove(t)}),1===o.count)null!==(i=o.first())&&(t.doWallsShareAnEndpoint(e,i)||t.maybePerformWallSplit(i,a));if(t.isBuilding){var i,r=a===e.data.startpoint?e.data.endpoint:e.data.startpoint,l=t.getAllWallsAtIntersection(r);if(l.remove(e),n.iterator.each(function(t){o.remove(t)}),1===l.count)null!==(i=l.first())&&(t.doWallsShareAnEndpoint(e,i)||t.maybePerformWallSplit(i,r))}null!==n&&n.iterator.each(function(e){t.splitNewWall(e)})}},e.prototype.splitNewWall=function(t){var e=this,a=this.diagram,n=a.findNodesByExample({category:"WallGroup"}),o=new i.Set;n.iterator.each(function(e){var n=a.getWallsIntersection(t,e);null!==n&&o.add(n)}),o.iterator.each(function(t){e.getAllWallsAtIntersection(t).iterator.each(function(a){var n=a.data.startpoint,o=a.data.endpoint;e.pointsApproximatelyEqual(n,t)||e.pointsApproximatelyEqual(o,t)||e.maybePerformWallSplit(a,t)})})},e.prototype.maybePerformWallSplit=function(t,e){var a=this,n=a.diagram,o=t.data.startpoint,r=t.data.endpoint,l=t.data.isDivider?"Divider":"Wall",s={key:"wall",category:"WallGroup",caption:l,type:l,color:t.data.color,startpoint:o,endpoint:e,smpt1:o,smpt2:o,empt1:e,empt2:e,thickness:t.data.thickness,isGroup:!0,notes:"",isDivider:t.data.isDivider},d={key:"wall",category:"WallGroup",caption:l,type:l,color:t.data.color,startpoint:e,endpoint:r,smpt1:e,smpt2:e,empt1:r,empt2:r,thickness:t.data.thickness,isGroup:!0,notes:"",isDivider:t.data.isDivider},u=Math.sqrt(s.startpoint.distanceSquaredPoint(s.endpoint)),p=Math.sqrt(d.startpoint.distanceSquaredPoint(d.endpoint)),c=n.findNodesByExample({category:"WallGroup"}),g=!1;if(c.iterator.each(function(t){var n=t.data.startpoint,i=t.data.endpoint;(a.pointsApproximatelyEqual(o,n)&&a.pointsApproximatelyEqual(e,i)||a.pointsApproximatelyEqual(o,i)&&a.pointsApproximatelyEqual(e,n))&&(g=!0),(a.pointsApproximatelyEqual(e,n)&&a.pointsApproximatelyEqual(r,i)||a.pointsApproximatelyEqual(e,i)&&a.pointsApproximatelyEqual(r,n))&&(g=!0)}),u>1&&p>1&&!g){n.model.addNodeData(s),n.model.addNodeData(d);var f=n.findNodeForData(s),h=n.findNodeForData(d);if(a.premiterWall(f),a.premiterWall(h),a.performMiteringAtPoint(e,!1),null!==a.handle){var m=n.findNodesByExample({category:"RoomNode"}),y=a.handle.part.adornedPart;m.iterator.each(function(o){for(var r=o.data.boundaryWalls,l=function(l){var s=r[l];if(s[0]===t.data.key){var d=!1,u=a.pointsApproximatelyEqual(y.data.startpoint,e)?y.data.endpoint:y.data.startpoint;if(a.getAllWallsAtIntersection(u).iterator.each(function(t){for(var e=0;e179&&Math.abs(l-s)<181)&&(r=!0),r},e.prototype.isWallColinear=function(t,e){var a=this;this.diagram;if(t.data.isDivider!==e.data.isDivider)return!1;var n=t.data.startpoint,o=t.data.endpoint,i=e.data.startpoint,r=e.data.endpoint,l=!1;if(a.areWallsParallel(t,e)){var s=null;if(a.pointsApproximatelyEqual(n,i)||a.pointsApproximatelyEqual(n,r)?s=n:(a.pointsApproximatelyEqual(o,i)||a.pointsApproximatelyEqual(o,r))&&(s=o),null!==s){var d=a.getAllWallsAtIntersection(s),u=!1;d.iterator.each(function(e){a.areWallsParallel(e,t)||(u=!0)}),u||(l=!0)}}return l},e.prototype.findAllColinearWalls=function(t,e){null==e&&(e=new i.Set),e.add(t);var a=this;return a.diagram.findNodesByExample({category:"WallGroup"}).iterator.each(function(n){a.isWallColinear(t,n)&&void 0!==e&&!e.contains(n)&&(e.add(n),a.findAllColinearWalls(n,e))}),e},e.prototype.joinColinearWalls=function(){if(null!==this.handle){var t=this.handle.part.adornedPart,e=this.findAllColinearWalls(t),a=this.performColinearWallJoining(e,t);null!==a&&this.joinedWalls.add(a);var n=this.getAllWallsAtIntersection(this.returnPoint);if(2===n.count){var o=n.toArray(),r=o[0],l=o[1];if(this.isWallColinear(r,l)){var s=new i.Set;s.add(r),s.add(l);var d=this.performColinearWallJoining(s,r);null!==d&&this.joinedWalls.add(d)}}}},e.prototype.performColinearWallJoining=function(t,e){var a=this,n=a.diagram,o=new i.Set,r=t.first();if(null===r)return null;void 0===e&&(e=r);r.data.category;if(t.iterator.each(function(t){t.data.category}),t.count>1){var l=null,s=null,d=0,u=t.copy(),p=new i.Set;t.iterator.each(function(t){var e=n.findNodesByExample({group:t.data.key});p.addAll(e),u.iterator.each(function(e){for(var a=[t.data.startpoint,t.data.endpoint],n=[e.data.startpoint,e.data.endpoint],o=0;od&&(d=p,l=i,s=u)}}),o.add(t)});var c={key:"wall",category:"WallGroup",caption:"Wall",type:"Wall",color:e.data.color,startpoint:l,endpoint:s,smpt1:l,smpt2:l,empt1:s,empt2:s,thickness:e.data.thickness,isGroup:!0,notes:""};n.model.addNodeData(c);var g=n.findNodeForData(c);n.findNodesByExample({category:"RoomNode"}).iterator.each(function(e){for(var o=e.data.boundaryWalls,i=0;ig?1:cg?1:c0},e.prototype.isPointOnSegment=function(t,e,a){var n=Math.sqrt(t.distanceSquaredPoint(a)),o=Math.sqrt(e.distanceSquaredPoint(a)),i=Math.sqrt(t.distanceSquaredPoint(e));return Math.abs(i-(n+o))<=.1},e.prototype.doMouseUp=function(){var t=this.diagram;if(null!==this.handle){this.doMouseMove();var e=this.handle.part.adornedPart;this.joinColinearWalls(),this.maybeSplitWall(),this.joinedWalls.clear();var a=new i.Set;a.add(e),t.updateAllRoomBoundaries(a),this.stopTool()}},e.prototype.doDeactivate=function(){var t=this.diagram,e=t;if(null!==this.handle){var a=this.handle.part.adornedPart,n=a.data.startpoint,o=a.data.endpoint;if(Math.sqrt(n.distanceSquared(o.x,o.y))<1){t.remove(a),a.memberParts.iterator.each(function(e){t.remove(e)});var i=[];e.pointNodes.iterator.each(function(t){-1!==t.data.key.indexOf(a.data.key)&&i.push(t)}),2===i.length&&(t.remove(i[0]),t.remove(i[1]))}"Esc"!==t.lastInput.key||this.isBuilding||(t.skipsUndoManager=!0,t.startTransaction("reset to old data"),"sPt"===this.handle.name?a.data.startpoint=this.returnPoint:a.data.endpoint=this.returnPoint,this.performAllMitering(),e.updateWall(a),this.returnData&&this.returnData.iterator.each(function(e){var n=e.key,o=e.value,i=t.findPartForKey(n);i.location=o,i.rotateObject.angle=a.rotateObject.angle}),t.commitTransaction("reset to old data"),t.skipsUndoManager=!1);var r=this.diagram.findNodesByExample({category:"GLPointNode"});t.removeParts(r,!0),e.updateWallDimensions(),t.commitTransaction(this.name),this.isActive=!1}},e.prototype.makeAdornment=function(t){var e=new i.Adornment;e.type=i.Panel.Spot,e.locationObjectName="BODY",e.locationSpot=i.Spot.Center;var a=new i.Shape;return a.name="BODY",a.fill=null,a.stroke=null,a.strokeWidth=0,e.add(a),(a=this.makeHandle()).name="sPt",e.add(a),(a=this.makeHandle()).name="ePt",e.add(a),e.category=this.name,e.adornedObject=t,e},e.prototype.makeHandle=function(){return this.handleArchetype.copy()},e.prototype.calcAngleAndLengthFromHandle=function(t){var e=this.handle;if(null!==e&&null!==this.adornedShape){var a=null,n=this.adornedShape.part;if(null!==n){for(var o,r=n.adornments.iterator;r.next();){var l=r.value;l.category===this.name&&(o=l)}if(void 0!==o){for(var s=o.elements;s.next();){var d=s.value;void 0!==d.name&&d.name!==e.name&&(a=d)}if(null!==a){var u=a.getDocumentPoint(i.Spot.Center),p=t.y-u.y,c=t.x-u.x,g=Math.atan2(p,c)*(180/Math.PI);g<0&&(g+=360),this.angle=g;var f=Math.sqrt(t.distanceSquared(u.x,u.y));this.length=f}}}}},e.prototype.snapPointToGrid=function(t){var e=this.diagram,a=e.toolManager.draggingTool.isGridSnapEnabled?e.model.modelData.gridSize:1,n=a*Math.round(t.x/a),o=a*Math.round(t.y/a);return new i.Point(n,o)},e.prototype.reshape=function(t){var e=this.diagram,a=this.adornedShape;if(null!==a&&null!==this.handle){var n=a.part;if(null!==n){if(this.diagram.lastInput.shift&&!this.isIntersecting){var o=void 0;o="sPt"===this.handle.name?n.data.endpoint:n.data.startpoint;var r=e.model.modelData.gridSize,l=e.model.modelData.gridSize;this.diagram.toolManager.draggingTool.isGridSnapEnabled||(l=1);var s=this.angle,d=this.length;if(s>67.5&&s<112.5){var u=o.y+d;u=l*Math.round(u/l),t=new i.Point(o.x,u)}if(s>112.5&&s<202.5){var p=o.x-d;p=l*Math.round(p/l),t=new i.Point(p,o.y)}if(s>247.5&&s<292.5){u=o.y-d;u=l*Math.round(u/l),t=new i.Point(o.x,u)}if(s>337.5||s<22.5){p=o.x+d;p=l*Math.round(p/l),t=new i.Point(p,o.y)}if(s>22.5&&s<67.5){p=Math.sin(.785)*d;p=l*Math.round(p/l)+o.x;u=Math.cos(.785)*d;u=l*Math.round(u/l)+o.y,t=new i.Point(p,u)}if(s>112.5&&s<157.5){p=Math.sin(.785)*d;p=o.x-l*Math.round(p/l);u=Math.cos(.785)*d;u=l*Math.round(u/l)+o.y,t=new i.Point(p,u)}if(s>202.5&&s<247.5){p=Math.sin(.785)*d;p=o.x-l*Math.round(p/l);u=Math.cos(.785)*d;u=o.y-l*Math.round(u/l),t=new i.Point(p,u)}if(s>292.5&&s<337.5){p=Math.sin(.785)*d;p=o.x+l*Math.round(p/l);u=Math.cos(.785)*d;u=o.y-l*Math.round(u/l),t=new i.Point(p,u)}l=r}t=!this.diagram.toolManager.draggingTool.isGridSnapEnabled||this.isIntersecting||this.diagram.lastInput.shift?new i.Point(t.x,t.y):this.snapPointToGrid(t);var c=this.handle.name;if(void 0!==c){var g="sPt"===c?n.data.endpoint:n.data.startpoint,f="sPt"===c?n.data.startpoint:n.data.endpoint;this.reshapeWall(n,g,f,t,e),this.updateAdornments(n),this.showMatches(),e.updateWallDimensions()}}}},e.prototype.showMatches=function(){var t=this,e=t.diagram;if(e.model.modelData.preferences.showWallGuidelines&&null!==t.adornedShape&&null!==t.handle){var a,n=t.adornedShape.part;a="sPt"===t.handle.name?n.data.startpoint:n.data.endpoint;var o=t.adornedShape.part,i=e.findNodesByExample({category:"GLPointNode"});e.removeParts(i,!0),this.diagram.findNodesByExample({category:"WallGroup"}).iterator.each(function(e){if(null!==o&&e.data.key!==o.data.key){e.findObject("SHAPE");var n=e.data.startpoint,i=e.data.endpoint;t.checkPtLinedUp(n,a.x,n.x,a),t.checkPtLinedUp(n,a.y,n.y,a),t.checkPtLinedUp(i,a.x,i.x,a),t.checkPtLinedUp(i,a.y,i.y,a)}})}},e.prototype.checkPtLinedUp=function(t,e,a,n){function o(){var t=i.GraphObject.make;return t(i.Node,"Spot",{locationSpot:i.Spot.TopLeft,locationObjectName:"SHAPE",desiredSize:new i.Size(1,1)},new i.Binding("location","loc",i.Point.parse).makeTwoWay(i.Point.stringify),t(i.Shape,{stroke:null,strokeWidth:1,name:"SHAPE",fill:"black"}))}var r,l=this.diagram;if(Math.abs(e-a)<2){var s={category:"GLPointNode",loc:i.Point.stringify(t),key:"glpt"},d={key:"movingPt",category:"GLPointNode",loc:i.Point.stringify(n)},u={key:"guideline",category:"guideLine",from:"movingPt",to:s.key,stroke:"blue"},p=o(),c=o(),g=(r=i.GraphObject.make)(i.Link,r(i.Shape,{stroke:"black",strokeWidth:2,name:"SHAPE"},new i.Binding("strokeWidth","width"),new i.Binding("stroke","stroke")));l.add(p),l.add(c),l.add(g),p.data=s,c.data=d,g.data=u,g.fromNode=p,g.toNode=c}},e.prototype.reshapeWall=function(t,e,a,n,o){var r=t.memberParts,l=[],s=t.data.startpoint.directionPoint(t.data.endpoint);r.iterator.each(function(t){l.push(t)});for(var d=new i.Map,u=null,p=Number.MAX_VALUE,c=0;ck?(S=b,A=w):(S=k,A=x),Math.sqrt(e.distanceSquaredPoint(n))25?"10pt sans-serif":t<25&&t>15?"8pt sans-serif":"6pt sans-serif"}))))}()),a.nodeTemplateMap.add("WindowNode",function(){var t=i.GraphObject.make;return t(i.Node,"Spot",{contextMenu:g(),selectionObjectName:"SHAPE",selectionAdorned:!1,locationSpot:i.Spot.Center,toolTip:m(),minSize:new i.Size(5,5),resizable:!0,resizeAdornmentTemplate:T(),resizeObjectName:"SHAPE",rotatable:!1,dragComputation:W,layerName:"Foreground"},new i.Binding("location","loc",i.Point.parse).makeTwoWay(i.Point.stringify),new i.Binding("angle").makeTwoWay(),t(i.Shape,{name:"SHAPE",fill:"white",strokeWidth:0},new i.Binding("width","length").makeTwoWay(),new i.Binding("height").makeTwoWay(),new i.Binding("stroke","isSelected",function(t,e){return t?"dodgerblue":"black"}).ofObject(),new i.Binding("fill","isSelected",function(t,e){return t?"lightgray":"white"}).ofObject()),t(i.Shape,{name:"LINESHAPE",fill:"darkgray",strokeWidth:0,height:10},new i.Binding("width","length",function(t,e){return t-10}),new i.Binding("height","height",function(t,e){return t/5}),new i.Binding("stroke","isSelected",function(t,e){return t?"dodgerblue":"black"}).ofObject()))}()),a.nodeTemplateMap.add("PaletteWallNode",function(){var t=i.GraphObject.make;return t(i.Node,"Spot",{selectionAdorned:!1},t(i.Shape,{name:"SHAPE",fill:"black",strokeWidth:0,height:10,figure:"Rectangle"},new i.Binding("width","length").makeTwoWay(),new i.Binding("height").makeTwoWay(),new i.Binding("fill","isSelected",function(t,e){return t?"dodgerblue":"black"}).ofObject(),new i.Binding("stroke","isSelected",function(t,e){return t?"dodgerblue":"black"}).ofObject()))}()),a.nodeTemplateMap.add("DoorNode",function(){var t=i.GraphObject.make;return t(i.Node,"Spot",{contextMenu:g(),selectionObjectName:"SHAPE",selectionAdornmentTemplate:N(),locationSpot:i.Spot.BottomCenter,resizable:!0,resizeObjectName:"OPENING_SHAPE",toolTip:m(),minSize:new i.Size(10,10),dragComputation:W,resizeAdornmentTemplate:T(),layerName:"Foreground"},new i.Binding("location","loc",i.Point.parse).makeTwoWay(i.Point.stringify),new i.Binding("angle").makeTwoWay(),new i.Binding("locationSpot","doorOpeningHeight",function(t,e){return new i.Spot(.5,1,0,-t/2)}),t(i.Shape,{name:"SHAPE",fill:"rgba(0, 0, 0, 0)"},new i.Binding("width","length"),new i.Binding("height","length").makeTwoWay(),new i.Binding("stroke","isSelected",function(t,e){return t?"dodgerblue":"black"}).ofObject(),new i.Binding("geometryString","swing",function(t){return"left"===t?"F1 M0,0 v-150 a150,150 0 0,1 150,150 ":"F1 M275,175 v-150 a150,150 0 0,0 -150,150 "})),t(i.Shape,{name:"OPENING_SHAPE",fill:"white",strokeWidth:0,height:5,width:40,alignment:i.Spot.BottomCenter,alignmentFocus:i.Spot.Top},new i.Binding("height","doorOpeningHeight").makeTwoWay(),new i.Binding("stroke","isSelected",function(t,e){return t?"dodgerblue":"black"}).ofObject(),new i.Binding("fill","isSelected",function(t,e){return t?"lightgray":"white"}).ofObject(),new i.Binding("width","length").makeTwoWay()))}()),a.nodeTemplateMap.add("RoomNode",function(){var t=i.GraphObject.make;return t(i.Node,"Spot",{contextMenu:g(),toolTip:c(),selectionObjectName:"SHAPE",rotateObjectName:"SHAPE",locationSpot:i.Spot.TopLeft,reshapable:!0,copyable:!1,minSize:new i.Size(1,1),movable:!1,selectionAdornmentTemplate:A(["floor1.jpg","floor2.jpg","floor3.jpg","floor4.jpg","floor5.jpg","floor6.jpg","floor7.jpg"]),locationObjectName:"SHAPE",layerName:"Background"},new i.Binding("location","isSelected",function(t,e){var a=e.data.loc;if(t){var n=e.findObject("SHAPE").strokeWidth,o=new i.Point(a.x-2*n,a.y-2*n);return o}return void 0!==a?a:e.location}).ofObject(),t(i.Shape,{name:"SHAPE",fill:S(null),stroke:"black",strokeWidth:1},new i.Binding("stroke","isSelected",function(t,e){if(null!=e.part.containingGroup){var a=e.part.containingGroup;t&&(a.data.isSelected=!0)}return t?"dodgerblue":"black"}).ofObject(),new i.Binding("strokeWidth","isSelected",function(t,e){return t?5:1}).ofObject(),new i.Binding("fill","floorImage",function(t){return S(t)})),t(i.Panel,"Horizontal",{cursor:"move",name:"ROOM_LABEL",_isNodeLabel:!0},new i.Binding("alignment","labelAlignment"),t(i.Panel,"Auto",new i.Binding("visible","showLabel"),t(i.Shape,"RoundedRectangle",{fill:"beige",opacity:.5,stroke:null,strokeWidth:3,name:"ROOM_LABEL_SHAPE"},new i.Binding("stroke","isSelected",function(t){return t?"dodgerblue":null}).ofObject()),t(i.Panel,"Vertical",t(i.TextBlock,"Room Name",{editable:!0,cursor:"text",font:"normal normal bold 13px sans-serif"},new i.Binding("text","name").makeTwoWay()),t(i.TextBlock,"Room Size",{name:"ROOM_LABEL_SIZE"},new i.Binding("text","",function(t){var e=t.diagram,a=e.getRoomArea(t),n=e.convertPixelsToUnits(e.convertPixelsToUnits(a)).toFixed(2);return n+e.model.modelData.unitsAbbreviation+String.fromCharCode(178)}).ofObject()))),t("Button",{desiredSize:new i.Size(15,15),click:function(t,e){var a=e.part;if(null!==a){t.diagram.model.setDataProperty(a.data,"showFlooringOptions",!a.data.showFlooringOptions);var n=t.diagram;n.select(a)}},toolTip:t(i.Adornment,"Auto",t(i.Shape,{fill:"#FFFFCC"}),t(i.TextBlock,{margin:4,text:"Show/ hide floor types"}))},new i.Binding("visible","isSelected").ofObject(),t(i.Shape,"TriangleDown",{desiredSize:new i.Size(10,10)},new i.Binding("figure","showFlooringOptions",function(t){return t?"TriangleUp":"TriangleDown"})))))}()),a.groupTemplateMap.add("",function(){var t=i.GraphObject.make;return t(i.Group,"Vertical",{contextMenu:g(),toolTip:c()},new i.Binding("location","loc"),t(i.Panel,"Auto",t(i.Shape,"RoundedRectangle",{fill:"rgba(128,128,128,0.15)",stroke:"rgba(128, 128, 128, .05)",name:"SHAPE",strokeCap:"square"},new i.Binding("fill","isSelected",function(t,e){return t?"rgba(128, 128, 128, .15)":"rgba(128, 128, 128, 0.10)"}).ofObject()),t(i.Placeholder,{padding:5})))}()),a.groupTemplateMap.add("WallGroup",function(){var t=i.GraphObject.make;return t(i.Group,"Spot",{contextMenu:g(),toolTip:c(),selectionObjectName:"SHAPE",rotateObjectName:"SHAPE",locationSpot:i.Spot.TopLeft,reshapable:!0,minSize:new i.Size(1,1),movable:!1,selectionAdorned:!1,mouseDrop:x,mouseDragEnter:b,mouseDragLeave:k,copyable:!1},t(i.Shape,{name:"SHAPE",fill:"lightgray",stroke:"black",strokeWidth:1},new i.Binding("fill","color"),new i.Binding("stroke","isSelected",function(t,e){if(null!=e.part.containingGroup){var a=e.part.containingGroup;t&&(a.data.isSelected=!0)}return t?"dodgerblue":"black"}).ofObject()))}());var o=new l.WallBuildingTool;a.toolManager.mouseDownTools.insertAt(0,o);var d=new s.WallReshapingTool;a.toolManager.mouseDownTools.insertAt(3,d),o.isEnabled=!1;var u=new r.NodeLabelDraggingTool;return a.toolManager.mouseMoveTools.insertAt(0,u),a.toolManager.draggingTool.doMouseUp=function(){i.DraggingTool.prototype.doMouseUp.call(this),this.diagram.updateWallAngles(),this.isGridSnapEnabled=this.diagram.model.modelData.preferences.gridSnap},a.toolManager.draggingTool.doMouseMove=function(){this.diagram.lastInput.shift?this.isGridSnapEnabled=!1:this.isGridSnapEnabled=this.diagram.model.modelData.preferences.gridSnap,i.DraggingTool.prototype.doMouseMove.call(this)},a.toolManager.resizingTool.doMouseMove=function(){var t=this.diagram;this.adornedObject;t.updateWallDimensions(),i.ResizingTool.prototype.doMouseMove.call(this)},a.toolManager.resizingTool.computeMaxSize=function(){var t=this.adornedObject;if(null!==t){var e=t.part,a=null;if(null!==e&&(a=this.diagram.findPartForKey(e.data.group)),null!==a&&null!==e&&("DoorNode"===e.category||"WindowNode"===e.category)){for(var n,o=null,r=null,l=null,s=e.adornments.iterator;s.next();){var d=s.value;"WallPartResizeAdornment"===d.name&&(l=d)}if(null!==l)for(var u=l.elements.iterator;u.next();){var p=u.value,c=this.handle;null!==c&&(p instanceof i.Shape&&p.alignment===c.alignment&&(r=p.getDocumentPoint(i.Spot.Center)),p instanceof i.Shape&&p.alignment!==c.alignment&&(o=p.getDocumentPoint(i.Spot.Center)))}var g=Number.MAX_VALUE;a.memberParts.iterator.each(function(t){if(t.data.key!==e.data.key)for(var a=M(t),i=0;is&&(g=s,n=l)}}),null==n&&(n=a.data.startpoint.distanceSquaredPoint(r)>a.data.startpoint.distanceSquaredPoint(o)?a.data.endpoint:a.data.startpoint);var f=0;return null!==o&&(f=Math.sqrt(o.distanceSquaredPoint(n))),new i.Size(f,a.data.thickness)}}return i.ResizingTool.prototype.computeMaxSize.call(this)},a.toolManager.draggingTool.isGridSnapEnabled=!0,a}return o(e,t),Object.defineProperty(e.prototype,"palettes",{get:function(){return this._palettes},set:function(t){this._palettes=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pointNodes",{get:function(){return this._pointNodes},set:function(t){this._pointNodes=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dimensionLinks",{get:function(){return this._dimensionLinks},set:function(t){this._dimensionLinks=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"angleNodes",{get:function(){return this._angleNodes},set:function(t){this._angleNodes=t},enumerable:!0,configurable:!0}),e.prototype.convertPixelsToUnits=function(t){this.model.modelData.units;return t*this.model.modelData.unitsConversionFactor},e.prototype.convertUnitsToPixels=function(t){this.model.modelData.units;return t/this.model.modelData.unitsConversionFactor},e.prototype.getUnitsAbbreviation=function(t){switch(t){case"centimeters":return"cm";case"meters":return"m";case"inches":return"in";case"feet":return"ft"}return t},e.prototype.convertUnits=function(t,e,a){var n=a;switch(t=this.getUnitsAbbreviation(t),e=this.getUnitsAbbreviation(e),t){case"cm":switch(e){case"m":n*=.01;break;case"ft":n*=.0328084;break;case"in":n*=.393701}break;case"m":switch(e){case"cm":n*=100;break;case"ft":n*=3.28084;break;case"in":n*=39.3701}break;case"ft":switch(e){case"cm":n*=30.48;break;case"m":n*=.3048;break;case"in":n*=12}break;case"in":switch(e){case"cm":n*=2.54;break;case"m":n*=.0254;break;case"ft":n*=.0833333}}return n},e.prototype.makeDefaultFurniturePaletteNodeData=function(){return O},e.prototype.makeDefaultWallpartsPaletteNodeData=function(){return j},e.prototype.enableWallBuilding=function(){var t=this,e=t.toolManager.mouseDownTools.elt(0);e.isBuildingDivider=!1;var a=t.toolManager.mouseDownTools.elt(3);e.isEnabled=!0,a.isEnabled=!1,t.currentCursor="crosshair",t.nodes.iterator.each(function(t){t.clearAdornments()}),t.clearSelection()},e.prototype.enableDividerBuilding=function(){var t=this.toolManager.mouseDownTools.elt(0);this.enableWallBuilding(),t.isBuildingDivider=!0,this.currentCursor="crosshair"},e.prototype.disableWallBuilding=function(){var t=this,e=t.toolManager.mouseDownTools.elt(0),a=t.toolManager.mouseDownTools.elt(3);e.isEnabled=!1,a.isEnabled=!0,e.isBuildingDivider=!1,t.currentCursor="",t.nodes.iterator.each(function(t){t.clearAdornments()}),t.clearSelection()},e.prototype.checkboxChanged=function(t){this.skipsUndoManager=!0,this.startTransaction("change preference");var e=document.getElementById(t);switch(t){case"showGridCheckbox":this.grid.visible=e.checked,this.model.modelData.preferences.showGrid=e.checked;break;case"gridSnapCheckbox":this.toolManager.draggingTool.isGridSnapEnabled=e.checked,this.model.modelData.preferences.gridSnap=e.checked;break;case"wallGuidelinesCheckbox":this.model.modelData.preferences.showWallGuidelines=e.checked;break;case"wallLengthsCheckbox":this.model.modelData.preferences.showWallLengths=e.checked,this.updateWallDimensions();break;case"wallAnglesCheckbox":this.model.modelData.preferences.showWallAngles=e.checked,this.updateWallAngles();break;case"onlySmallWallAnglesCheckbox":this.model.modelData.preferences.showOnlySmallWallAngles=e.checked,this.updateWallAngles()}this.commitTransaction("change preference"),this.skipsUndoManager=!1},e.prototype.changeUnits=function(t){for(var e=this,a=t.getElementsByTagName("input"),n=e.model.modelData.units,o=0;o0?a=parseFloat(t.value):(t.value=e.convertPixelsToUnits(10).toString(),a=parseFloat(t.value)),a=e.convertUnitsToPixels(a),e.grid.gridCellSize=new i.Size(a,a),e.model.setDataProperty(e.model.modelData,"gridSize",a),e.commitTransaction("change grid size"),e.skipsUndoManager=!1},e.prototype.getCounterClockwiseWallSide=function(t,e){var a=null,n=null;this.toolManager.mouseDownTools.elt(3).pointsApproximatelyEqual(t.data.endpoint,e)?(a="smpt1",n="smpt2"):(a="empt1",n="empt2");var o,i,r,l=e,s=t.data[n],d=t.data[a];return o=l,r=d,((i=s).x-o.x)*(r.y-o.y)-(i.y-o.y)*(r.x-o.x)>0?2:1},e.prototype.getLinesIntersection=function(t,e,a,n){var o=(t.y-e.y)/(t.x-e.x),r=(a.y-n.y)/(a.x-n.x);if(o===1/0||o===-1/0){var l=r*(s=t.x)+-1*(r*a.x-a.y);return new i.Point(s,l)}if(r===1/0||r===-1/0){l=o*(s=a.x)+-1*(o*t.x-t.y);return new i.Point(s,l)}if(Math.abs(o-r)=90&&h<=270?g:f:(p=c.pointsApproximatelyEqual(g,u)?f:g,c.pointsApproximatelyEqual(g,u));var m=c.getAllWallsAtIntersection(p,!0);m.sort(function(t,a){var n=e.getWallsIntersection(t,a);if(null===n)return 0;var o=t.data.startpoint,i=t.data.endpoint,r=a.data.startpoint,l=a.data.endpoint,s=c.pointsApproximatelyEqual(p,o)?i:o,d=c.pointsApproximatelyEqual(p,r)?l:r,u=n.directionPoint(s),g=n.directionPoint(d);return u>g?1:uc?1:p1&&(P=a.sortWallsClockwiseWithSetStartWall(P,n));var w=!1;l.contains(i.Point.stringify(v))||(w=!0);var x=!1;if(!w){var b=P.toArray()[1],k=a.getCounterClockwiseWallSide(b,v);for(g=0;g1&&M)return t(n,P,v,l,s,d,u);if(!A){var W=1===p?2:1,T=[n.data.key,W];s.push(T);var N=r.getAllWallsAtIntersection(o,!0);return null!==N&&N.count>1&&(N=a.sortWallsClockwiseWithSetStartWall(N,n)),t(n,N,o,l,s,d,u)}if(-1===s.indexOf("isDone"))return void s.push("isDone")}}),s}(u,w,c,x,[],u,p);b=b.slice(0,b.length-1),s.add(u,b)}}}}),s.iterator.each(function(t){for(var n,o=t.key,i=t.value,r=0;r(a.x-n.x)*(o.y-n.y)?(l=t.data.endpoint,t.data.startpoint):(l=t.data.startpoint,t.data.endpoint),l},e.prototype.findRoomHoles=function(t,e){var a=this,n=a.toolManager.mouseDownTools.elt(3),o=a.findNodesByExample({category:"WallGroup"}),r=new i.Set,l=a.makePolygonFromRoomBoundaries(t);o.iterator.each(function(e){var n=e.data.startpoint,o=e.data.endpoint;if(null!==l&&(a.isPointInPolygon(l.toArray(),n)||a.isPointInPolygon(l.toArray(),o))){for(var i=!1,s=0;s1&&(x=a.sortWallsClockwiseWithSetStartWall(x,o));var k=!1;null===y||r.contains(i.Point.stringify(y))||(k=!0);var S=!1;if(!k&&x.toArray().length>0){var A=null;if(A=x.toArray().length>1?x.toArray()[1]:x.toArray()[0],null!==y)for(var M=a.getCounterClockwiseWallSide(A,y),W=0;W1&&x.toArray()[1].data.key===u.data.key&&(o.data.key!==u.data.key||q)||q&&(o.data.key,u.data.key),!!k||!S);if(E||-1!==l.indexOf("isDone")||l.push("isDone"),E&&x.iterator.each(function(e){if(null!==l&&e.data.key!==o.data.key&&-1===l.indexOf("isDone")){if(null!==y){var n=a.getCounterClockwiseWallSide(e,y),i=[e.data.key,n];l.push(i),s.add(e),t(e,r,l,y,u)}}else if(1===x.count&&null!==l&&-1===l.indexOf("isDone")){i=null;for(var d=0;d1){var L=x.last();null!==b&&null!==L&&(b=a.sortWallsClockwiseWithSetStartWall(b,L));var _=b.toArray()[1];if(null!==v){var F=a.getCounterClockwiseWallSide(_,v),I=[_.data.key,F],G=!1;for(W=0;Wn!=u>n&&a<(d-l)*(n-s)/(u-s)+l&&(o=!o)}return o},e.prototype.updateWall=function(t){if(t.data.startpoint&&t.data.endpoint){var e=t.findObject("SHAPE"),a=t.data,n=null,o=(a.startpoint,a.endpoint,a.smpt1,a.smpt2,a.empt1,a.empt2);t.data.isDivider&&(e.strokeWidth=2,e.opacity=.5),o=[a.startpoint,a.endpoint,a.smpt1,a.smpt2,a.empt1,a.empt2],(n=(new i.Geometry).add(new i.PathFigure(a.startpoint.x,a.startpoint.y).add(new i.PathSegment(i.PathSegment.Line,a.smpt1.x,a.smpt1.y)).add(new i.PathSegment(i.PathSegment.Line,a.empt1.x,a.empt1.y)).add(new i.PathSegment(i.PathSegment.Line,a.endpoint.x,a.endpoint.y)).add(new i.PathSegment(i.PathSegment.Line,a.empt2.x,a.empt2.y)).add(new i.PathSegment(i.PathSegment.Line,a.smpt2.x,a.smpt2.y)).add(new i.PathSegment(i.PathSegment.Line,a.startpoint.x,a.startpoint.y)))).normalize(),e.geometry=n;for(var r=Number.MAX_VALUE,l=Number.MAX_VALUE,s=0;s90&&t<270?(t+180)%360:t}),n(i.Shape,"RoundedRectangle",{fill:"beige",opacity:.8,stroke:null}),n(i.TextBlock,{text:"sometext",segmentOffset:new i.Point(0,-10),font:"13px sans-serif"},new i.Binding("text","",function(t){var e=t.diagram,a=t.data.length,n=e.convertPixelsToUnits(a).toFixed(2),o=e.model.modelData.unitsAbbreviation;return n.toString()+o}).ofObject(),new i.Binding("segmentOffset","angle",function(t,e){return new i.Point(0,10)}).ofObject(),new i.Binding("font","",function(t){var e=t.data.length;return e>40?"13px sans-serif":e<=40&&e>=20?"11px sans-serif":"9px sans-serif"}).ofObject())))}(u,p,c);s.pointNodes.add(y),s.pointNodes.add(v),s.dimensionLinks.add(P),s.add(y),s.add(v),s.add(P),y.data=g,v.data=f,P.data=m,P.fromNode=y,P.toNode=v,P.data.length=Math.sqrt(y.location.distanceSquaredPoint(v.location))},e.prototype.updateWallDimensions=function(){var t=this;if(t.skipsUndoManager=!0,t.startTransaction("update wall dimensions"),!t.model.modelData.preferences.showWallLengths)return t.pointNodes.iterator.each(function(e){t.remove(e)}),t.dimensionLinks.iterator.each(function(e){t.remove(e)}),t.pointNodes.clear(),t.dimensionLinks.clear(),t.commitTransaction("update wall dimensions"),void(t.skipsUndoManager=!1);t.pointNodes.iterator.each(function(e){t.remove(e)}),t.dimensionLinks.iterator.each(function(e){t.remove(e)}),t.pointNodes.clear(),t.dimensionLinks.clear();var e=t.selection,a=new i.Set;e.iterator.each(function(e){if("WindowNode"!==e.category&&"DoorNode"!==e.category||null===e.containingGroup||a.add(e.containingGroup),"WallGroup"===e.category&&e.data&&e.data.startpoint&&e.data.endpoint){var n=e,o=!1;if(n.memberParts.each(function(t){t.isSelected&&(o=!0)}),!o){var i=n.data.startpoint.directionPoint(n.data.endpoint),r=n.data.smpt1,l=n.data.empt1,s=r.x+r.y<=l.x+l.y?r:l,d=r.x+r.y>l.x+l.y?r:l;t.buildDimensionLink(n,1,s.copy(),d.copy(),(i+180)%360,10,!0,t,1);var u=n.data.smpt2,p=n.data.empt2;s=u.x+u.y<=p.x+p.y?u:p,d=u.x+u.y>p.x+p.y?u:p,t.buildDimensionLink(n,2,s.copy(),d.copy(),i,10,!0,t,1)}}}),a.iterator.each(function(e){for(var a=function(a){var n=e.data["smpt"+a],o=e.data["empt"+a],r=n.x+n.y<=o.x+o.y?n:o,l=n.x+n.y>o.x+o.y?n:o,s=e.data.startpoint.directionPoint(e.data.endpoint);1===a&&(s=(s+180)%360);var d=[];e.memberParts.iterator.each(function(a){if(a.isSelected){var n=M(a),o=n[0],i=n[1];t.rotateAndTranslatePoint(o,s+0,e.data.thickness/2),t.rotateAndTranslatePoint(i,s+0,e.data.thickness/2);d.push(o),d.push(i)}}),d.sort(function(t,e){return t.x+t.y>e.x+e.y?1:t.x+t.y1||m<0||m>1)return null;var y=a+g*(o-a),v=n+g*(r-n);return new i.Point(y,v)},e.prototype.getSegmentsIntersection=function(t,e,a,n){var o=t.x,r=t.y,l=e.x,s=e.y,d=a.x,u=a.y,p=n.x,c=n.y;if(o===l&&r===s||d===p&&u===c)return null;var g=(c-u)*(l-o)-(p-d)*(s-r);function f(t,e){var a=t.x,n=e.x,o=t.y,i=e.y,r=Math.abs(n-a);return Math.abs(i-o)<.05&&r<.05}if(0===g)return f(t,a)||f(t,n)?t:f(e,a)||f(e,n)?e:null;var h=((p-d)*(r-u)-(c-u)*(o-d))/g,m=((l-o)*(r-u)-(s-r)*(o-d))/g,y=+h.toFixed(4),v=+m.toFixed(4);if(y<0||y>1||v<0||v>1)return null;var P=o+h*(l-o),w=r+h*(s-r);return new i.Point(P,w)},e.prototype.updateWallAngles=function(){var t=this;if(t.skipsUndoManager=!0,t.startTransaction("display angles"),t.model.modelData.preferences.showWallAngles){t.angleNodes.iterator.each(function(t){t.visible=!0});var e=[];t.selection.iterator.each(function(t){if("WallGroup"===t.category){var a=t;e.push(a)}});for(var a=function(a){var n=new i.Set,o=e[a];t.findNodesByExample({category:"WallGroup"}).iterator.each(function(e){if(null!==e.data&&null!==o.data&&!n.contains(e.data.key)&&e.data.key!==o.data.key&&null!==t.getWallsIntersection(o,e)&&!n.contains(e.data.key)){n.add(e.data.key);var a=t.getWallsIntersection(o,e);if(null!==a){var r=t.toolManager.mouseDownTools.elt(3).getAllWallsAtIntersection(a),l=[];r.iterator.each(function(e){var n=t.model.modelData.gridSize>=10?t.model.modelData.gridSize:10;Math.sqrt(e.data.startpoint.distanceSquaredPoint(a))>n&&l.push({point:e.data.startpoint,wall:e.data.key}),Math.sqrt(e.data.endpoint.distanceSquaredPoint(a))>n&&l.push({point:e.data.endpoint,wall:e.data.key})});for(var s=30,d=0;d=0&&e.x-a.x<0)return 1;if(t.x-a.x<0&&e.x-a.x>=0)return-1;if(t.x-a.x==0&&e.x-a.x==0)return t.y-a.y>=0||e.y-a.y>=0?t.y>e.y?1:-1:e.y>t.y?1:-1;var n=(t.x-a.x)*(e.y-a.y)-(e.x-a.x)*(t.y-a.y);return n<0?1:n>0?-1:(t.x-a.x)*(t.x-a.x)+(t.y-a.y)*(t.y-a.y)>(e.x-a.x)*(e.x-a.x)+(e.y-a.y)*(e.y-a.y)?1:-1});var p=function(e){var n=l[e],o=void 0;o=null!=l[e+1]?l[e+1]:l[0];var d=a.directionPoint(n.point),u=a.directionPoint(o.point),p=Math.abs(u-d+360)%360,c=d,g=[];r.iterator.each(function(t){g.push(t)}),g.sort(function(t,e){var a=t.data.key.match(/\d+/g),n=e.data.key.match(/\d+/g);return isNaN(a)?1:isNaN(n)?-1:a>n?1:-1});for(var h="",m=0;m44?"dodgerblue":"lightblue"})),y(i.Panel,"Auto",{name:"ARCLABEL"},new i.Binding("alignment","sweep",function(t,e){var a=Math.min(30,e.part.data.maxRadius),n=e.part.data.angle,o=new i.Point(a,0).rotate(n+t/2);return new i.Spot(.5,.5,o.x,o.y)}),y(i.Shape,{fill:"white"},new i.Binding("stroke","sweep",function(t){return t%45<1||t%45>44?"dodgerblue":"lightblue"})),y(i.TextBlock,{font:"7pt sans-serif",margin:2},new i.Binding("text","sweep",function(t){return t.toFixed(2)+String.fromCharCode(176)}))));b.data=x,t.add(b),b.updateTargetBindings(),t.angleNodes.add(b)}};for(d=0;d=180&&(t.visible=!1)}),t.model.modelData.preferences.showWallAngles||t.angleNodes.iterator.each(function(t){t.visible=!1}),t.commitTransaction("display angles"),t.skipsUndoManager=!1},e.prototype.findClosestLocOnWall=function(t,e){var a=[],n=t.data.startpoint.copy(),o=t.data.endpoint.copy(),r=n.x+n.y<=o.x+o.y?n:o,l=n.x+n.y>o.x+o.y?n:o,s=[];t.memberParts.iterator.each(function(t){var e=M(t);s.push(e[0]),s.push(e[1])}),s.sort(function(t,e){return t.x+t.y>e.x+e.y?1:t.x+t.y=e.data.length&&d.push({pt1:p,pt2:c})}var g=Number.MAX_VALUE,f=null;for(u=0;u0;return a.iterator.each(function(t){"WallGroup"!==t.category&&"WindowNode"!==t.category&&"DoorNode"!==t.category&&"RoomNode"!==t.category||(n=!1)}),n}return!1}).ofObject()),t("ContextMenuButton",t(i.TextBlock,"Cut"),{click:function(t,e){var a=e.part;null!==a&&null!==a.diagram&&a.diagram.commandHandler.cutSelection()}},new i.Binding("visible","",function(t,e){if(null!==e.part.diagram){var a=e.part.diagram.selection,n=a.count>0;return a.iterator.each(function(t){"WallGroup"!==t.category&&"WindowNode"!==t.category&&"DoorNode"!==t.category&&"RoomNode"!==t.category||(n=!1)}),n}return!1}).ofObject()),t("ContextMenuButton",t(i.TextBlock,"Delete"),{click:function(t,e){var a=e.part;null!==a&&null!==a.diagram&&a.diagram.commandHandler.deleteSelection()}},new i.Binding("visible","",function(t,e){return null!==e.part.diagram&&e.part.diagram.selection.count>0}).ofObject()),t("ContextMenuButton",t(i.TextBlock,"Paste"),{click:function(t,e){var a=e.part;null!==a&&null!==a.diagram&&a.diagram.commandHandler.pasteSelection(a.diagram.lastInput.documentPoint)}}))}function f(t){var e=t.data.angle,a=t.data.sweep,n=Math.min(30,t.data.maxRadius);if("number"==typeof a&&a>0){var o=new i.Point(n,0).rotate(e);return(new i.Geometry).add(new i.PathFigure(o.x+n,o.y+n).add(new i.PathSegment(i.PathSegment.Arc,e,a,n,n,n,n))).add(new i.PathFigure(0,0)).add(new i.PathFigure(2*n,2*n))}return(new i.Geometry).add(new i.PathFigure(0,0)).add(new i.PathFigure(2*n,2*n))}function h(){return(0,i.GraphObject.make)(i.Node,"Position",new i.Binding("location","loc",i.Point.parse).makeTwoWay(i.Point.stringify))}function m(){var t=i.GraphObject.make;return t(i.Adornment,"Auto",t(i.Shape,{fill:"#FFFFCC"}),t(i.TextBlock,{margin:4},new i.Binding("text","",function(t,e){var a=e.part.adornedObject.data;return"Name: "+("MultiPurposeNode"===e.part.adornedObject.category?a.text:a.caption)+"\nNotes: "+a.notes}).ofObject()))}function y(){var t=i.GraphObject.make;function e(e,a){return t(i.Shape,{alignment:e,cursor:a,figure:"Rectangle",desiredSize:new i.Size(7,7),fill:"lightblue",stroke:"dodgerblue"})}return t(i.Adornment,"Spot",t(i.Placeholder),e(i.Spot.Top,"n-resize"),e(i.Spot.TopRight,"n-resize"),e(i.Spot.BottomRight,"se-resize"),e(i.Spot.Right,"e-resize"),e(i.Spot.Bottom,"s-resize"),e(i.Spot.BottomLeft,"sw-resize"),e(i.Spot.Left,"w-resize"),e(i.Spot.TopLeft,"nw-resize"))}function v(){var t=i.GraphObject.make;return t(i.Adornment,t(i.Shape,"Circle",{cursor:"pointer",desiredSize:new i.Size(7,7),fill:"lightblue",stroke:"dodgerblue"}))}function P(t){return(new Array(2).join("0")+t).slice(-2)}function w(t,e){var a=t.part;return null===a?"":void 0!==a.data.usesTexture&&a.data.usesTexture?S(""===e?null:-1===e.indexOf("images/textures")?"images/textures/"+e:e):void 0!==a.data.color?a.data.color:"white"}e.Floorplan=d;var x=function(t,e){if(e instanceof i.Group&&!e.data.isDivider){var a=t.diagram,n=a.selection.first();if(n&&("WindowNode"===n.category||"DoorNode"===n.category)&&null===n.containingGroup){var o=a.findClosestLocOnWall(e,n);if(null===o)return a.remove(n),void alert("There's not enough room on the wall!");e.findObject("SHAPE").stroke="black",a.model.setDataProperty(n.data,"group",e.data.key),n.location=o.projectOntoLineSegmentPoint(e.data.startpoint,e.data.endpoint),n.angle=e.data.startpoint.directionPoint(e.data.endpoint),"WindowNode"===n.category&&a.model.setDataProperty(n.data,"height",e.data.thickness),"DoorNode"===n.category&&a.model.setDataProperty(n.data,"doorOpeningHeight",e.data.thickness)}a.updateWallDimensions()}},b=function(t,e){if(e instanceof i.Group&&!e.data.isDivider){var a=t.diagram,n=a.toolManager.draggingTool.draggedParts;null===n&&(n=a.toolManager.draggingTool.copiedParts),null!==n&&n.iterator.each(function(t){var a=t.key;"WindowNode"!==a.category&&"DoorNode"!==a.category||null!==a.containingGroup||(e.findObject("SHAPE").stroke="lightblue",a.angle=e.rotateObject.angle)})}},k=function(t,e){if(e instanceof i.Group){var a=t.diagram,n=e.findObject("SHAPE");if(null!==n){n.stroke="black";var o=a.toolManager.draggingTool.draggedParts;null===o&&(o=a.toolManager.draggingTool.copiedParts),null!==o&&o.iterator.each(function(t){var e=t.key;"WindowNode"!==e.category&&"DoorNode"!==e.category||null!==e.containingGroup||(e.angle=0)})}}};function S(t){var e=i.GraphObject.make;null==t&&(t="images/textures/floor1.jpg");var a=new Image;return a.src=t,e(i.Brush,"Pattern",{pattern:a})}function A(t){var e=i.GraphObject.make;return e(i.Adornment,"Spot",{locationObjectName:"BIGPANEL"},new i.Binding("location","",function(t){return"RoomNode"===t.data.category?t.adornedPart.findObject("ROOM_LABEL").getDocumentPoint(i.Spot.BottomLeft):t.adornedPart.getDocumentPoint(i.Spot.BottomLeft)}).ofObject(),new i.Binding("visible","",function(t){var e=t.adornedPart;return"RoomNode"===e.category||e.data.usesTexture}).ofObject(),e(i.Placeholder),e(i.Panel,"Horizontal",{name:"BIGPANEL"},e("Button",{desiredSize:new i.Size(15,15),click:function(t,e){var a=e.part.adornedPart;null!==a&&(a.diagram.model.setDataProperty(a.data,"showTextureOptions",!a.data.showTextureOptions),a.updateAdornments())}},new i.Binding("visible","",function(t){var e=t.adornedPart;return null===e||!(e.diagram instanceof i.Palette||"RoomNode"===e.category)}).ofObject(),e(i.Shape,"TriangleLeft",{desiredSize:new i.Size(10,10),name:"BUTTONSHAPE"},new i.Binding("figure","showTextureOptions",function(t){return t?"TriangleLeft":"TriangleRight"}))),e(i.Panel,"Horizontal",{name:"PANEL",itemArray:t,itemTemplate:e("Button",{desiredSize:new i.Size(30,30),click:function(t,e){if(null!==e.part&&e instanceof i.Panel){var a=e.part.adornedPart,n=e.findObject("BUTTON_IMAGE").source;"RoomNode"===a.category?t.diagram.model.setDataProperty(a.data,"floorImage",n):t.diagram.model.setDataProperty(a.data,"texture",n)}}},e(i.Picture,{name:"BUTTON_IMAGE"},new i.Binding("source","",function(t,e){return"string"!=typeof t?"":"./images/textures/"+t})))},new i.Binding("visible","",function(t){var e=t.adornedPart;if(e.diagram instanceof i.Palette)return!1;if("RoomNode"===e.category)return e.data.showFlooringOptions;var a=t.findObject("BUTTONSHAPE");return null!==a?"TriangleLeft"===a.figure:void 0}).ofObject(),new i.Binding("itemArray","",function(e){return void 0===e.textures||null===e.textures?t:e.textures}))))}function M(t){var e=t.location,a=t.data.length,n=0;if(null!==t.containingGroup){var o=t.containingGroup;n=o.data.startpoint.directionPoint(o.data.endpoint)}else n=180;var r=new i.Point(e.x+a/2,e.y),l=new i.Point(e.x-a/2,e.y);r.offset(-e.x,-e.y).rotate(n).offset(e.x,e.y),l.offset(-e.x,-e.y).rotate(n).offset(e.x,e.y);var s=[];return s.push(r),s.push(l),s}var W=function(t,e,a){if(null!==t.containingGroup&&"WallGroup"===t.containingGroup.category){var n=t.diagram,o=t.containingGroup,r=o.data.startpoint,l=o.data.endpoint;Math.sqrt(r.distanceSquaredPoint(t.location))+Math.sqrt(t.location.distanceSquaredPoint(l))!==Math.sqrt(r.distanceSquaredPoint(l))&&(t.location=t.location.copy().projectOntoLineSegmentPoint(r,l));var s=function(t){var e=t.containingGroup;if(null!==e){var a,n=e.data.startpoint.copy(),o=e.data.endpoint.copy(),r=new i.Set,l=new i.Set;e.memberParts.iterator.each(function(e){if(e.data.key!==t.data.key)for(var a=M(e),n=0;nt.location.y&&a[n].x===t.location.x?r.add(a[n]):l.add(a[n])}),parseFloat(n.x.toFixed(2))t.location.y&&parseFloat(n.x.toFixed(2))===parseFloat(t.location.x.toFixed(2))?r.add(n):l.add(n),parseFloat(o.x.toFixed(2))t.location.y&&parseFloat(o.x.toFixed(2))===parseFloat(t.location.x.toFixed(2))?r.add(o):l.add(o);var s,d=Number.MAX_VALUE;r.iterator.each(function(e){var n=e,o=Math.sqrt(n.distanceSquaredPoint(t.location));o(20*o.data.thickness<100?20*o.data.thickness:100)&&(t.containingGroup=null,delete t.data.group,t.angle=0,n.pointNodes.iterator.each(function(t){n.remove(t)}),n.dimensionLinks.iterator.each(function(t){n.remove(t)}),n.pointNodes.clear(),n.dimensionLinks.clear(),n.updateWallDimensions()),e=e.copy().projectOntoLineSegmentPoint(g,f),n.skipsUndoManager=!0,n.startTransaction("set loc"),n.model.setDataProperty(t.data,"loc",i.Point.stringify(e)),n.commitTransaction("set loc"),n.skipsUndoManager=!1,n.updateWallDimensions()}return e};function T(){var t=i.GraphObject.make;return t(i.Adornment,"Spot",{name:"WallPartResizeAdornment"},t(i.Placeholder),t(i.Shape,{alignment:i.Spot.Left,cursor:"w-resize",figure:"Diamond",desiredSize:new i.Size(7,7),fill:"#ffffff",stroke:"#808080"}),t(i.Shape,{alignment:i.Spot.Right,cursor:"e-resize",figure:"Diamond",desiredSize:new i.Size(7,7),fill:"#ffffff",stroke:"#808080"}))}function N(){var t=i.GraphObject.make;return t(i.Adornment,"Vertical",{name:"DoorSelectionAdornment"},t(i.Panel,"Auto",t(i.Shape,{fill:null,stroke:null}),t(i.Placeholder)),t(i.Panel,"Horizontal",{defaultStretch:i.GraphObject.Vertical},t("Button",t(i.Picture,{source:"images/flipDoorOpeningLeft.png",column:0,desiredSize:new i.Size(12,12)},new i.Binding("source","",function(t){return null===t.adornedPart?"images/flipDoorOpeningRight.png":"left"===t.adornedPart.data.swing?"images/flipDoorOpeningRight.png":"images/flipDoorOpeningLeft.png"}).ofObject()),{click:function(t,e){var a=e.part;if(null!==a&&null!==a.diagram){var n=a.diagram;n.startTransaction("flip door");var o=e.part.adornedPart;null!==o&&("left"===o.data.swing?n.model.setDataProperty(o.data,"swing","right"):n.model.setDataProperty(o.data,"swing","left"),n.commitTransaction("flip door"))}},toolTip:t(i.Adornment,"Auto",t(i.Shape,{fill:"#FFFFCC"}),t(i.TextBlock,{margin:4,text:"Flip Door Opening"}))},new i.Binding("visible","",function(t){return null!==t.adornedPart&&null!==t.adornedPart.containingGroup}).ofObject()),t("Button",t(i.Picture,{source:"images/flipDoorSide.png",column:0,desiredSize:new i.Size(12,12)}),{click:function(t,e){var a=e.part;if(null!==a&&null!==a.diagram){var n=a.diagram;n.startTransaction("rotate door");var o=e.part.adornedPart;o.angle=(o.angle+180)%360,n.commitTransaction("rotate door")}},toolTip:t(i.Adornment,"Auto",t(i.Shape,{fill:"#FFFFCC"}),t(i.TextBlock,{margin:4,text:"Flip Door Side"}))}),new i.Binding("visible","",function(t){return null!==t.adornedPart&&null!==t.adornedPart.containingGroup}).ofObject()))}var O=[{category:"MultiPurposeNode",key:"MultiPurposeNode",caption:"Multi Purpose Node",color:"#ffffff",stroke:"#000000",name:"Writable Node",type:"Writable Node",shape:"Rectangle",text:"Write here",showLabel:!0,width:60,height:60,notes:"",texture:"granite1.jpg",usesTexture:!0,showTextureOptions:!0,textures:["wood1.jpg","wood2.jpg","granite1.jpg","porcelain1.jpg","steel1.jpg"]},{key:"roundTable",color:"#ffffff",stroke:"#000000",caption:"Round Table",type:"Round Table",shape:"Ellipse",width:61,height:61,notes:"",texture:"wood1.jpg",usesTexture:!0,showTextureOptions:!0,textures:["wood1.jpg","wood2.jpg","floor3.jpg","granite1.jpg","porcelain1.jpg"]},{key:"armChair",color:"purple",stroke:"#000000",caption:"Arm Chair",type:"Arm Chair",geo:"F1 M0 0 L40 0 40 40 0 40 0 0 M10 30 L10 10 M0 0 Q8 0 10 10 M0 40 Q20 15 40 40 M30 10 Q32 0 40 0 M30 10 L30 30",width:45,height:45,notes:"",texture:"fabric1.jpg",usesTexture:!0,showTextureOptions:!0,textures:["fabric1.jpg","fabric2.jpg","fabric3.jpg"]},{key:"sofaMedium",color:"#ffffff",stroke:"#000000",caption:"Sofa",type:"Sofa",geo:"F1 M0 0 L80 0 80 40 0 40 0 0 M10 35 L10 10 M0 0 Q8 0 10 10 M0 40 Q40 15 80 40 M70 10 Q72 0 80 0 M70 10 L70 35",height:45,width:90,notes:"",texture:"fabric2.jpg",usesTexture:!0,showTextureOptions:!0,textures:["fabric1.jpg","fabric2.jpg","fabric3.jpg"]},{key:"sink",color:"#ffffff",stroke:"#000000",caption:"Sink",type:"Sink",geo:"F1 M0 0 L40 0 40 40 0 40 0 0z M5 7.5 L18.5 7.5 M 21.5 7.5 L35 7.5 35 35 5 35 5 7.5 M 15 21.25 A 5 5 180 1 0 15 21.24M23 3.75 A 3 3 180 1 1 23 3.74 M21.5 6.25 L 21.5 12.5 18.5 12.5 18.5 6.25 M15 3.75 A 1 1 180 1 1 15 3.74M 10 4.25 L 10 3.25 13 3.25 M 13 4.25 L 10 4.25 M27 3.75 A 1 1 180 1 1 27 3.74 M 26.85 3.25 L 30 3.25 30 4.25 M 26.85 4.25 L 30 4.25",width:27,height:27,notes:"",texture:"steel1.jpg",usesTexture:!0,showTextureOptions:!0,textures:["copper1.jpg","steel1.jpg","steel2.jpg","porcelain1.jpg"]},{key:"doubleSink",color:"#ffffff",stroke:"#000000",caption:"Double Sink",type:"Double Sink",geo:"F1 M0 0 L75 0 75 40 0 40 0 0 M5 7.5 L35 7.5 35 35 5 35 5 7.5 M44 7.5 L70 7.5 70 35 40 35 40 9M15 21.25 A5 5 180 1 0 15 21.24 M50 21.25 A 5 5 180 1 0 50 21.24 M40.5 3.75 A3 3 180 1 1 40.5 3.74M40.5 3.75 L50.5 13.75 47.5 16.5 37.5 6.75 M32.5 3.75 A 1 1 180 1 1 32.5 3.74 M 27.5 4.25 L 27.5 3.25 30.5 3.25M 30.5 4.25 L 27.5 4.25 M44.5 3.75 A 1 1 180 1 1 44.5 3.74 M 44.35 3.25 L 47.5 3.25 47.5 4.25 M 44.35 4.25 L 47.5 4.25",height:27,width:52,notes:"",texture:"steel2.jpg",usesTexture:!0,showTextureOptions:!0,textures:["copper1.jpg","steel1.jpg","steel2.jpg","porcelain1.jpg"]},{key:"toilet",color:"#ffffff",stroke:"#000000",caption:"Toilet",type:"Toilet",geo:"F1 M0 0 L25 0 25 10 0 10 0 0 M20 10 L20 15 5 15 5 10 20 10 M5 15 Q0 15 0 25 Q0 40 12.5 40 Q25 40 25 25 Q25 15 20 15",width:25,height:35,notes:"",texture:"porcelain1.jpg",usesTexture:!0,showTextureOptions:!0,textures:["copper1.jpg","steel1.jpg","porcelain1.jpg"]},{key:"shower",color:"#ffffff",stroke:"#000000",caption:"Shower/Tub",type:"Shower/Tub",geo:"F1 M0 0 L40 0 40 60 0 60 0 0 M35 15 L35 55 5 55 5 15 Q5 5 20 5 Q35 5 35 15 M22.5 20 A2.5 2.5 180 1 1 22.5 19.99",width:45,height:75,notes:"",texture:"copper1.jpg",usesTexture:!0,showTextureOptions:!0,textures:["copper1.jpg","steel1.jpg","porcelain1.jpg"]},{key:"bed",color:"#ffffff",stroke:"#000000",caption:"Bed",type:"Bed",geo:"F1 M0 0 L40 0 40 60 0 60 0 0 M 7.5 2.5 L32.5 2.5 32.5 17.5 7.5 17.5 7.5 2.5 M0 20 L40 20 M0 25 L40 25",width:76.2,height:101.6,notes:"",texture:"fabric3.jpg",usesTexture:!0,showTextureOptions:!0,textures:["fabric1.jpg","fabric2.jpg","fabric3.jpg"]},{key:"staircase",color:"#ffffff",stroke:"#000000",caption:"Staircase",type:"Staircase",geo:"F1 M0 0 L 0 100 250 100 250 0 0 0 M25 100 L 25 0 M 50 100 L 50 0 M 75 100 L 75 0M 100 100 L 100 0 M 125 100 L 125 0 M 150 100 L 150 0 M 175 100 L 175 0 M 200 100 L 200 0 M 225 100 L 225 0",width:125,height:50,notes:"",texture:"",usesTexture:!0,showTextureOptions:!0,textures:["wood1.jpg","floor1.jpg","wood2.jpg","steel2.jpg","floor2.jpg"]},{key:"stove",color:"#ffffff",stroke:"#000000",caption:"Stove",type:"Stove",geo:"F1 M 0 0 L 0 100 100 100 100 0 0 0M 30 15 A 15 15 180 1 0 30.01 15M 30 20 A 10 10 180 1 0 30.01 20M 30 25 A 5 5 180 1 0 30.01 25M 70 15 A 15 15 180 1 0 70.01 15M 70 20 A 10 10 180 1 0 70.01 20M 70 25 A 5 5 180 1 0 70.01 25M 30 55 A 15 15 180 1 0 30.01 55M 30 60 A 10 10 180 1 0 30.01 60M 30 65 A 5 5 180 1 0 30.01 65M 70 55 A 15 15 180 1 0 70.01 55M 70 60 A 10 10 180 1 0 70.01 60M 70 65 A 5 5 180 1 0 70.01 65",width:75,height:75,notes:"",texture:"plaster1.jpg",usesTexture:!0,showTextureOptions:!0,textures:["steel1.jpg","porcelain1.jpg","copper1.jpg","plaster1.jpg"]},{key:"diningTable",color:"#ffffff",stroke:"#000000",caption:"Dining Table",type:"Dining Table",geo:"F1 M 0 0 L 0 100 200 100 200 0 0 0 M 25 0 L 25 -10 75 -10 75 0 M 125 0 L 125 -10 175 -10 175 0 M 200 25 L 210 25 210 75 200 75 M 125 100 L 125 110 L 175 110 L 175 100 M 25 100 L 25 110 75 110 75 100 M 0 75 -10 75 -10 25 0 25",width:125,height:62.5,notes:"",texture:"wood2.jpg",usesTexture:!0,showTextureOptions:!0,textures:["wood1.jpg","wood2.jpg","floor3.jpg","granite1.jpg","porcelain1.jpg","steel2.jpg"]}],j=[{category:"WindowNode",key:"window",color:"white",caption:"Window",type:"Window",shape:"Rectangle",height:10,length:60,notes:""},{key:"door",category:"DoorNode",caption:"Door",type:"Door",length:40,doorOpeningHeight:5,swing:"left",notes:""},{key:"floor",category:"FloorNode",src:"images/textures/floor1.jpg"}]},function(t,e,a){"use strict";var n,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var a in e)e.hasOwnProperty(a)&&(t[a]=e[a])})(t,e)},function(t,e){function a(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(a.prototype=e.prototype,new a)});Object.defineProperty(e,"__esModule",{value:!0});var i=a(0),r=function(t){function e(){var e=t.call(this)||this;return e.name="NodeLabelDragging",e.label=null,e._offset=new i.Point,e._originalAlignment=null,e._originalCenter=null,e}return o(e,t),e.prototype.canStart=function(){if(!i.Tool.prototype.canStart.call(this))return!1;var t=this.diagram;return null!==t&&(!!t.lastInput.left&&(!!this.isBeyondDragSize()&&null!==this.findLabel()))},e.prototype.findLabel=function(){var t=this.diagram,e=t.firstInput,a=t.findObjectAt(e.documentPoint,null,null);if(null===a||!(a.part instanceof i.Node))return null;for(a.part instanceof i.Node&&(a.part.isSelected=!0);null!==a.panel;){if(a._isNodeLabel&&a.panel.type===i.Panel.Spot&&a.panel.findMainElement()!==a)return a;a=a.panel}return null},e.prototype.doActivate=function(){if(this.startTransaction("Shifted Label"),this.label=this.findLabel(),null!==this.label&&(this._offset=this.diagram.firstInput.documentPoint.copy().subtract(this.label.getDocumentPoint(i.Spot.Center)),this._originalAlignment=this.label.alignment.copy(),null!==this.label&&null!==this.label.panel)){var t=this.label.panel.findMainElement();null!==t&&(this._originalCenter=t.getDocumentPoint(i.Spot.Center))}i.Tool.prototype.doActivate.call(this)},e.prototype.doDeactivate=function(){i.Tool.prototype.doDeactivate.call(this),this.stopTransaction()},e.prototype.doStop=function(){this.label=null,i.Tool.prototype.doStop.call(this)},e.prototype.doCancel=function(){if(null!==this.label&&null!==this._originalAlignment){var t=this.label.part;this.diagram.model.set(t.data,"labelAlignment",this._originalAlignment)}i.Tool.prototype.doCancel.call(this)},e.prototype.doMouseMove=function(){this.isActive&&this.updateAlignment()},e.prototype.doMouseUp=function(){this.isActive&&(this.updateAlignment(),this.transactionResult="Shifted Label",this.stopTool())},e.prototype.updateAlignment=function(){if(null!==this.label){var t=this.diagram.lastInput.documentPoint,e=this._originalCenter;if(null!==e){var a=new i.Spot(.5,.5,t.x-this._offset.x-e.x,t.y-this._offset.y-e.y),n=this.label.part;this.diagram.model.set(n.data,"labelAlignment",a)}}},e}(i.Tool);e.NodeLabelDraggingTool=r},function(t,e,a){"use strict";var n,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var a in e)e.hasOwnProperty(a)&&(t[a]=e[a])})(t,e)},function(t,e){function a(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(a.prototype=e.prototype,new a)});Object.defineProperty(e,"__esModule",{value:!0});var i=a(0),r=function(t){function e(e,a){var n=t.call(this,e)||this,o=i.GraphObject.make;return n.contentAlignment=i.Spot.Center,n.nodeTemplateMap=a.nodeTemplateMap,n.nodeTemplateMap.add("FloorNode",o(i.Node,"Auto",o(i.Shape,{fill:l(null),desiredSize:new i.Size(100,100)},new i.Binding("fill","floorImage",function(t){return l(t)})),o(i.TextBlock,"Drag me out to a wall-enclosed space to create a room",{desiredSize:new i.Size(90,NaN)},new i.Binding("visible","",function(t){return t.diagram instanceof i.Palette}).ofObject()))),n.toolManager.contextMenuTool.isEnabled=!1,a.palettes.push(n),n}return o(e,t),e}(i.Palette);function l(t){var e=i.GraphObject.make;null==t&&(t="images/textures/floor1.jpg");var a=new Image;return a.src=t,e(i.Brush,"Pattern",{pattern:a})}e.FloorplanPalette=r}]); //# sourceMappingURL=gfp.js.map