(function(t){function e(e){for(var n,s,a=e[0],c=e[1],l=e[2],d=0,h=[];d Tip: click and drag the layer number to move a layer  Wood typeWidth ',5),U={class:"remove"};Object(n["i"])();var A=_((function(t,e,r,o,i,s){return Object(n["h"])(),Object(n["c"])("div",N,[Object(n["f"])("div",K,[Object(n["f"])("button",{onClick:e[1]||(e[1]=function(t){return s.addLayer()})},"Add layer")]),R,(Object(n["h"])(!0),Object(n["c"])(n["a"],null,Object(n["l"])(s.layers,(function(t,e){return Object(n["h"])(),Object(n["c"])(n["a"],null,[Object(n["f"])("div",{class:["index",{dropTargetAbove:i.dropTarget===e,dropTargetBelow:i.dropTarget===s.layers.length&&e===s.layers.length-1}],ref:"layer"+e,onMousedown:Object(n["s"])((function(t){return s.startDrag(e)}),["prevent"])},Object(n["n"])(e+1),43,["onMousedown"]),Object(n["r"])(Object(n["f"])("select",{"onUpdate:modelValue":function(e){return t.wood=e},class:"wood"},[(Object(n["h"])(!0),Object(n["c"])(n["a"],null,Object(n["l"])(s.wood,(function(t,e){return Object(n["h"])(),Object(n["c"])("option",{value:e},Object(n["n"])(t.name),9,["value"])})),256))],8,["onUpdate:modelValue"]),[[n["o"],t.wood]]),Object(n["f"])("input",{type:"number",class:"width",value:t.width,onInput:function(e){return t.width=s.parseFloatDef(e.target.value)}},null,40,["value","onInput"]),Object(n["f"])("div",U,[Object(n["f"])("button",{onClick:function(t){return s.removeLayer(e)}},"X",8,["onClick"])])],64)})),256))])})),V={data:function(){return{dragIndex:null,dropTarget:null}},computed:{settings:function(){return this.$store.state.settings},wood:function(){return this.$store.state.wood},layers:function(){return this.$store.state.boards[0].layers}},methods:{parseFloatDef:function(t){var e=parseFloat(t);return Object.is(e,NaN)?0:e},addLayer:function(){this.$store.commit("addLayer",0)},removeLayer:function(t){this.$store.commit("removeLayer",{board:0,layer:t})},startDrag:function(t){var e=this;this.dragIndex=t,this.dropTarget=t;var r,n=function(t){e.dropTarget=e.getTargetLayer(t.pageY)};r=function(){document.removeEventListener("mousemove",n),document.removeEventListener("mouseup",r),e.dragIndex!==e.dropTarget&&e.$store.commit("moveLayer",{board:0,from:e.dragIndex,to:e.dropTarget}),e.dropTarget=null,e.dragIndex=null},document.addEventListener("mousemove",n),document.addEventListener("mouseup",r)},getTargetLayer:function(t){if(0==this.layers.length)return null;var e=this.getPageOffsetRect(this.$refs.layer0),r=this.getPageOffsetRect(this.$refs["layer"+(this.layers.length-1)]);if(t<=e.bottom)return 0;if(t>=r.bottom)return this.layers.length;if(t>=r.top)return this.layers.length-1;if(null!==this.dropTarget&&this.dropTarget>0&&this.dropTarget=n.top&&t=i.top&&t=this.layers.length)return 0;for(var e=0,r=0;r=this.layers.length)return"fill: fuchsia";var e=this.layers[t].wood;if(null===e)return"";var r=this.settings.borders?"; stroke-width: 1; stroke: black":"";return"fill: "+this.wood[e].color+r},getLayerTransform:function(t){return this.settings.alternateDirection&&t%2!=0?"scale(1, -1) translate(0, -"+this.boardPixelHeight+")":""}}};lt.render=ct;var ut=lt,dt={class:"preview"},ht={class:"dimensions"};function ft(t,e,r,o,i,s){return Object(n["h"])(),Object(n["c"])("div",dt,[Object(n["f"])("div",ht,"Dimensions: "+Object(n["n"])(s.display(s.boardWidth))+" x "+Object(n["n"])(s.display(s.boardHeight))+" x "+Object(n["n"])(s.display(s.settings.boardThickness)),1),(Object(n["h"])(),Object(n["c"])("svg",{width:s.viewportWidth,height:s.viewportHeight,viewBox:s.viewBox},[(Object(n["h"])(!0),Object(n["c"])(n["a"],null,Object(n["l"])(s.layers,(function(t,e){return Object(n["h"])(),Object(n["c"])("rect",{width:s.toPixels(s.settings.boardLength),height:s.toPixels(t.width),x:"0",y:s.getLayerOffset(e),style:s.getLayerStyle(e)},null,12,["width","height","y"])})),256))],8,["width","height","viewBox"]))])}var bt={props:{scale:Number},computed:{settings:function(){return this.$store.state.settings},wood:function(){return this.$store.state.wood},layers:function(){return this.$store.state.boards[0].layers},boardWidth:function(){return this.settings.boardLength},boardHeight:function(){return this.layers.map((function(t){return t.width})).reduce((function(t,e){return t+e}))},boardPixelWidth:function(){return this.toPixels(this.boardWidth)},boardPixelHeight:function(){return this.toPixels(this.boardHeight)},viewportWidth:function(){return Math.floor(this.boardPixelWidth*this.scale)},viewportHeight:function(){return Math.floor(this.boardPixelHeight*this.scale)},viewBox:function(){return"0 0 "+this.boardPixelWidth+" "+this.boardPixelHeight}},methods:{toPixels:function(t){return F.toPixels(t,this.settings.units)},display:function(t){return F.display(t,this.settings.units)},getLayerOffset:function(t){if(t<0||t>=this.layers.length)return 0;for(var e=0,r=0;r=this.layers.length)return"fill: fuchsia";var e=this.layers[t].wood;if(null===e)return"";var r=this.settings.borders?"; stroke-width: 1; stroke: black":"";return"fill: "+this.wood[e].color+r}}};bt.render=ft;var gt=bt,pt=r("21a6"),mt={name:"App",components:{EndGrainPreview:ut,EdgeGrainPreview:gt,Settings:I,Layers:G,Wood:ot},data:function(){return{saveFilename:"My cutting board"}},methods:{save:function(){var t=this.$store.getters.save,e=new Blob([t],{type:"text/plain; charset=utf-8"});Object(pt["saveAs"])(e,this.saveFilename+".json")},load:function(){var t=this,e=this.$refs.loadFile.files[0];if(e){this.saveFilename=e.name.toLowerCase().endsWith(".json")?e.name.substring(0,e.name.length-5):e.name;var r=new FileReader;r.addEventListener("load",(function(e){t.$store.commit("load",e.target.result)})),r.readAsBinaryString(e)}}}};r("6cf2");mt.render=p;var vt=mt,Ot=(r("4160"),r("a434"),r("159b"),r("5502"));function jt(t,e){for(var r in t)t.hasOwnProperty(r)&&e.hasOwnProperty(r)&&(e[r]=t[r])}function yt(t){var e=parseFloat(t);return Object.is(e,NaN)?0:e}var wt=Object(Ot["a"])({state:{settings:{units:"cm",borders:!1,boardThickness:2,boardLength:70,bladeKerf:.35,crosscutWidth:3,alternateDirection:!0},wood:[{name:"Walnut",color:"#58443f"},{name:"Maple",color:"#f2e0aa"},{name:"Cherry",color:"#bb8359"},{name:"Mahogany",color:"#98473f"},{name:"Yellowheart",color:"#ffff84"},{name:"White oak",color:"#fdf4b9"},{name:"Bubinga",color:"#7e3c34"},{name:"Jatoba",color:"#9b281c"},{name:"Padouk",color:"#933350"}],boards:[{layers:[{wood:8,width:1},{wood:1,width:1.5},{wood:8,width:2},{wood:1,width:2},{wood:8,width:15},{wood:1,width:2},{wood:8,width:1.5},{wood:1,width:1}]}]},mutations:{addLayer:function(t,e){e<0||e>=t.boards.length||t.boards[e].layers.push({wood:0,width:F.fromMillimeters(20,t.settings.units)})},removeLayer:function(t,e){if(!(e.board<0||e.board>=t.boards.length)){var r=t.boards[e.board];e.layer<0||e.layer>=r.layers.length||r.layers.splice(e.layer,1)}},moveLayer:function(t,e){if(!(e.board<0||e.board>=t.boards.length)){var r=t.boards[e.board];if(!(e.from<0||e.from>=r.layers.length)&&!(e.to<0||e.to>r.layers.length))if(e.to==r.layers.length)r.layers.push(r.layers[e.from]),r.layers.splice(e.from,1);else{var n=r.layers[e.from];r.layers.splice(e.from,1),e.to>e.from&&e.to--,r.layers.splice(e.to,0,n)}}},addWood:function(t){t.wood.push({name:"Wood #"+(t.wood.length+1),color:"#f2e0aa"})},removeWood:function(t,e){e<0||e>=t.wood.length||(t.boards.forEach((function(t){t.layers.forEach((function(t){t.wood===e?t.wood=null:t.wood>e&&t.wood--}))})),t.wood.splice(e,1))},updateSettings:function(t,e){var r=t.settings.units;jt(e,t.settings),r!==t.settings.units&&(t.settings.boardThickness=F.limitDecimals(F.convert(t.settings.boardThickness,r,t.settings.units),3),t.settings.boardLength=F.limitDecimals(F.convert(t.settings.boardLength,r,t.settings.units),3),t.settings.bladeKerf=F.limitDecimals(F.convert(t.settings.bladeKerf,r,t.settings.units),3),t.settings.crosscutWidth=F.limitDecimals(F.convert(t.settings.crosscutWidth,r,t.settings.units),3),t.boards.forEach((function(e){e.layers.forEach((function(e){e.width=F.limitDecimals(F.convert(e.width,r,t.settings.units),3)}))})))},load:function(t,e){var r=JSON.parse(e);if(r.hasOwnProperty("settings")&&jt(r.settings,t.settings),r.hasOwnProperty("boards")){var n=r.boards.map((function(t){return t.hasOwnProperty("layers")?{layers:t.layers.map((function(t){return{wood:yt(t.wood),width:yt(t.width)}}))}:{layers:[]}}));0===n.length&&n.push({layers:[]}),t.boards=n}if(r.hasOwnProperty("wood")){var o=r.wood.map((function(t){return{name:t.name,color:t.color}}));t.wood=o}}},getters:{save:function(t){return JSON.stringify(t)}}});Object(n["b"])(vt).use(wt).mount("#app")},"5af7":function(t,e,r){},"667a":function(t,e,r){"use strict";r("6ac4")},"6ac4":function(t,e,r){},"6cf2":function(t,e,r){"use strict";r("5af7")},"83e0":function(t,e,r){"use strict";r("4c86")},a408:function(t,e,r){},e40c:function(t,e,r){"use strict";r("a408")}}); //# sourceMappingURL=app.0b618788.js.map