CuttingBoard/docs/js/app.9fbbf467.js

2 lines
29 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(function(t){function e(e){for(var r,o,s=e[0],c=e[1],l=e[2],u=0,b=[];u<s.length;u++)o=s[u],Object.prototype.hasOwnProperty.call(i,o)&&i[o]&&b.push(i[o][0]),i[o]=0;for(r in c)Object.prototype.hasOwnProperty.call(c,r)&&(t[r]=c[r]);d&&d(e);while(b.length)b.shift()();return a.push.apply(a,l||[]),n()}function n(){for(var t,e=0;e<a.length;e++){for(var n=a[e],r=!0,s=1;s<n.length;s++){var c=n[s];0!==i[c]&&(r=!1)}r&&(a.splice(e--,1),t=o(o.s=n[0]))}return t}var r={},i={app:0},a=[];function o(e){if(r[e])return r[e].exports;var n=r[e]={i:e,l:!1,exports:{}};return t[e].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=t,o.c=r,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)o.d(n,r,function(e){return t[e]}.bind(null,r));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="";var s=window["webpackJsonp"]=window["webpackJsonp"]||[],c=s.push.bind(s);s.push=e,s=s.slice();for(var l=0;l<s.length;l++)e(s[l]);var d=c;a.push([0,"chunk-vendors"]),n()})({0:function(t,e,n){t.exports=n("56d7")},"0e1b":function(t,e,n){"use strict";n("f88f")},"1a73":function(t,e,n){},"22d2":function(t,e,n){},"56d7":function(t,e,n){"use strict";n.r(e);n("e260"),n("e6cf"),n("cca6"),n("a79d");var r=n("7a23"),i=Object(r["x"])("data-v-42450ddb");Object(r["l"])("data-v-42450ddb");var a={class:"sidebar hideOnPrint"},o={class:"toolbar"},s=Object(r["e"])(" Settings"),c=Object(r["e"])(" Wood"),l=Object(r["e"])(" Layers"),d=Object(r["e"])(" Save / load"),u=Object(r["e"])(" Print"),b=Object(r["e"])(" About"),f={class:"tabs"},h={class:"tab"},p={class:"tab"},g={class:"tab"},O={class:"tab"},j=Object(r["f"])("p",null," Use your browser's built-in print functionality (for example, Ctrl+P on Windows) or click the button below to get a printable version of your board and cutting list. ",-1),v=Object(r["f"])("label",{for:"printEdgeGrain"}," Edge grain preview",-1),m=Object(r["f"])("label",{for:"printEndGrain"}," End grain preview",-1),y=Object(r["f"])("label",{for:"printCuttingList"}," Cutting list and bill of materials",-1),w=Object(r["f"])("br",null,null,-1),x={class:"tab"},k=Object(r["f"])("p",null," Below you can download the current settings or load them again from a file. You can also bookmark the current page or copy the URL from the address bar instead, as it is automatically updated whenever you change anything. ",-1),P={type:"file",ref:"loadFile",accept:".json"},L={class:"tab"},W=Object(r["f"])("p",null,[Object(r["e"])(" Created by Mark van Renswoude. Open-source and available under the Unlicense to the public domain on "),Object(r["f"])("a",{href:"https://github.com/MvRens/CuttingBoard",target:"_blank"},"Github"),Object(r["e"])(", where feedback is welcome under Issues. ")],-1),C=Object(r["f"])("p",null,[Object(r["e"])(" Heavily inspired by "),Object(r["f"])("a",{href:"http://www.lastalias.com/cbdesigner/"},"CBdesigner"),Object(r["e"])(". ")],-1),E={class:"content"},T=Object(r["f"])("h1",null,"Edge grain",-1),$=Object(r["f"])("h1",null,"End grain",-1),M=Object(r["f"])("h1",null,"Cutting list",-1);Object(r["k"])();var S=i((function(t,e,n,i,S,D){var B=Object(r["o"])("font-awesome-icon"),_=Object(r["o"])("Settings"),I=Object(r["o"])("Layers"),U=Object(r["o"])("Wood"),F=Object(r["o"])("EdgeGrainPreview"),H=Object(r["o"])("EndGrainPreview"),G=Object(r["o"])("CuttingList");return Object(r["j"])(),Object(r["c"])(r["a"],null,[Object(r["f"])("div",a,[Object(r["f"])("div",o,[Object(r["f"])("a",{class:{active:"settings"===S.tab},onClick:e[1]||(e[1]=function(t){return S.tab="settings"})},[Object(r["f"])(B,{icon:"sliders-h",size:"2x","fixed-width":""}),s],2),Object(r["f"])("a",{class:{active:"wood"===S.tab},onClick:e[2]||(e[2]=function(t){return S.tab="wood"})},[Object(r["f"])(B,{icon:"tree",size:"2x","fixed-width":""}),c],2),Object(r["f"])("a",{class:{active:"layers"===S.tab},onClick:e[3]||(e[3]=function(t){return S.tab="layers"})},[Object(r["f"])(B,{icon:"layer-group",size:"2x","fixed-width":""}),l],2),Object(r["f"])("a",{class:{active:"saveLoad"===S.tab},onClick:e[4]||(e[4]=function(t){return S.tab="saveLoad"})},[Object(r["f"])(B,{icon:"save",size:"2x","fixed-width":""}),d],2),Object(r["f"])("a",{class:{active:"print"===S.tab},onClick:e[5]||(e[5]=function(t){return S.tab="print"})},[Object(r["f"])(B,{icon:"print",size:"2x","fixed-width":""}),u],2),Object(r["f"])("a",{class:{active:"about"===S.tab},onClick:e[6]||(e[6]=function(t){return S.tab="about"})},[Object(r["f"])(B,{icon:"info-circle",size:"2x","fixed-width":""}),b],2)]),Object(r["f"])("div",f,[Object(r["v"])(Object(r["f"])("div",h,[Object(r["f"])(_)],512),[[r["t"],"settings"===S.tab]]),Object(r["v"])(Object(r["f"])("div",p,[Object(r["f"])(I)],512),[[r["t"],"layers"===S.tab]]),Object(r["v"])(Object(r["f"])("div",g,[Object(r["f"])(U)],512),[[r["t"],"wood"===S.tab]]),Object(r["v"])(Object(r["f"])("div",O,[j,Object(r["f"])("div",null,[Object(r["v"])(Object(r["f"])("input",{type:"checkbox","onUpdate:modelValue":e[7]||(e[7]=function(t){return S.printEdgeGrain=t}),id:"printEdgeGrain"},null,512),[[r["q"],S.printEdgeGrain]]),v]),Object(r["f"])("div",null,[Object(r["v"])(Object(r["f"])("input",{type:"checkbox","onUpdate:modelValue":e[8]||(e[8]=function(t){return S.printEndGrain=t}),id:"printEndGrain"},null,512),[[r["q"],S.printEndGrain]]),m]),Object(r["f"])("div",null,[Object(r["v"])(Object(r["f"])("input",{type:"checkbox","onUpdate:modelValue":e[9]||(e[9]=function(t){return S.printCuttingList=t}),id:"printCuttingList"},null,512),[[r["q"],S.printCuttingList]]),y]),w,Object(r["f"])("button",{onClick:e[10]||(e[10]=function(){return D.print&&D.print.apply(D,arguments)})},"Print")],512),[[r["t"],"print"===S.tab]]),Object(r["v"])(Object(r["f"])("div",x,[k,Object(r["f"])("p",null,[Object(r["v"])(Object(r["f"])("input",{type:"text","onUpdate:modelValue":e[11]||(e[11]=function(t){return S.saveFilename=t})},null,512),[[r["s"],S.saveFilename]]),Object(r["f"])("button",{onClick:e[12]||(e[12]=function(){return D.save&&D.save.apply(D,arguments)})},"Save")]),Object(r["f"])("p",null,[Object(r["f"])("input",P,null,512),Object(r["f"])("button",{onClick:e[13]||(e[13]=function(){return D.load&&D.load.apply(D,arguments)})},"Load")])],512),[[r["t"],"saveLoad"===S.tab]]),Object(r["v"])(Object(r["f"])("div",L,[W,C],512),[[r["t"],"about"===S.tab]])])]),Object(r["f"])("div",E,[Object(r["f"])("div",{class:{hideOnPrint:!S.printEdgeGrain}},[T,Object(r["f"])(F,{scale:1})],2),Object(r["f"])("div",{class:{hideOnPrint:!S.printEndGrain}},[$,Object(r["f"])(H,{scale:1})],2),Object(r["f"])("div",{class:{hideOnPrint:!S.printCuttingList}},[M,Object(r["f"])(G)],2)])],64)})),D=(n("b0c0"),n("8a79"),Object(r["x"])("data-v-7b473d48"));Object(r["l"])("data-v-7b473d48");var B={class:"settings"},_=Object(r["f"])("h2",null,"Designer",-1),I=Object(r["f"])("label",{for:"units"},"Units",-1),U=Object(r["f"])("option",{value:"mm"},"Millimeters",-1),F=Object(r["f"])("option",{value:"cm"},"Centimeters",-1),H=Object(r["f"])("option",{value:"inchdecimal"},"Inches (decimal)",-1),G=Object(r["f"])("label",{for:"borders"},"Show borders",-1),A=Object(r["f"])("h2",null,"Material",-1),N=Object(r["f"])("label",{for:"boardThickness"},"Board thickness",-1),K=Object(r["f"])("label",{for:"boardLength"},"Board length",-1),R=Object(r["f"])("label",{for:"bladeKerf"},"Blade kerf",-1),V=Object(r["f"])("h2",null,"End grain",-1),z=Object(r["f"])("label",{for:"crosscutWidth"},"Crosscut width",-1),J=Object(r["f"])("label",{for:"alternateDirection"},"Alternate direction",-1);Object(r["k"])();var Y=D((function(t,e,n,i,a,o){return Object(r["j"])(),Object(r["c"])("div",B,[_,I,Object(r["f"])("select",{id:"units",value:o.settings.units,onChange:e[1]||(e[1]=function(e){return t.$store.commit("updateSettings",{units:e.target.value})})},[U,F,H],40,["value"]),G,Object(r["f"])("input",{id:"borders",type:"checkbox",checked:o.settings.borders,onChange:e[2]||(e[2]=function(e){return t.$store.commit("updateSettings",{borders:e.target.checked})})},null,40,["checked"]),A,N,Object(r["f"])("input",{id:"boardThickness",type:"number",value:o.settings.boardThickness,onChange:e[3]||(e[3]=function(e){return t.$store.commit("updateSettings",{boardThickness:o.parseFloatDef(e.target.value)})})},null,40,["value"]),K,Object(r["f"])("input",{id:"boardLength",type:"number",value:o.settings.boardLength,onChange:e[4]||(e[4]=function(e){return t.$store.commit("updateSettings",{boardLength:o.parseFloatDef(e.target.value)})})},null,40,["value"]),R,Object(r["f"])("input",{id:"bladeKerf",type:"number",value:o.settings.bladeKerf,onChange:e[5]||(e[5]=function(e){return t.$store.commit("updateSettings",{bladeKerf:o.parseFloatDef(e.target.value)})})},null,40,["value"]),V,z,Object(r["f"])("input",{id:"crosscutWidth",type:"number",value:o.settings.crosscutWidth,onChange:e[6]||(e[6]=function(e){return t.$store.commit("updateSettings",{crosscutWidth:o.parseFloatDef(e.target.value)})})},null,40,["value"]),J,Object(r["f"])("input",{id:"alternateDirection",type:"checkbox",checked:o.settings.alternateDirection,onChange:e[7]||(e[7]=function(e){return t.$store.commit("updateSettings",{alternateDirection:e.target.checked})})},null,40,["checked"])])})),q=(n("2b19"),25.4),X=10,Q=1,Z={convert:function(t,e,n){var r=this.toMillimeters(t,e);return this.fromMillimeters(r,n)},toPixels:function(t,e){return Math.ceil(this.toMillimeters(t,e)*Q)},toMillimeters:function(t,e){switch(e){case"mm":return t;case"cm":return t*X;case"inchdecimal":return t*q}return console.error("Invalid units type: "+e),0},fromMillimeters:function(t,e){switch(e){case"mm":return t;case"cm":return t/X;case"inchdecimal":return t/q}return console.error("Invalid units type: "+e),0},display:function(t,e){var n=this.limitDecimals(t,3);switch(e){case"mm":return n+" mm";case"cm":return n+" cm";case"inchdecimal":return n+" inch"}return console.error("Invalid units type: "+e),n},limitDecimals:function(t,e){var n=Math.pow(10,e);return Math.round(t*n)/n}},tt={computed:{settings:function(){return this.$store.state.settings}},methods:{parseFloatDef:function(t){var e=parseFloat(t);return Object.is(e,NaN)?0:e}}};n("be02");tt.render=Y,tt.__scopeId="data-v-7b473d48";var et=tt,nt=Object(r["x"])("data-v-6c03155a");Object(r["l"])("data-v-6c03155a");var rt={class:"layers"},it={class:"add"},at=Object(r["d"])('<div class="hint" data-v-6c03155a> Tip: click and drag the layer number to move a layer </div><span class="header" data-v-6c03155a> </span><span class="header" data-v-6c03155a>Wood species</span><span class="header" data-v-6c03155a>Width</span><span class="header" data-v-6c03155a> </span>',5),ot={class:"remove"};Object(r["k"])();var st=nt((function(t,e,n,i,a,o){return Object(r["j"])(),Object(r["c"])("div",rt,[Object(r["f"])("div",it,[Object(r["f"])("button",{onClick:e[1]||(e[1]=function(t){return o.addLayer()})},"Add layer")]),at,(Object(r["j"])(!0),Object(r["c"])(r["a"],null,Object(r["n"])(o.layers,(function(t,e){return Object(r["j"])(),Object(r["c"])(r["a"],null,[Object(r["f"])("div",{class:["index",{dropTargetAbove:a.dropTarget===e,dropTargetBelow:a.dropTarget===o.layers.length&&e===o.layers.length-1}],ref:"layer"+e,onMousedown:Object(r["w"])((function(t){return o.startDrag(e)}),["prevent"])},Object(r["p"])(e+1),43,["onMousedown"]),Object(r["v"])(Object(r["f"])("select",{"onUpdate:modelValue":function(e){return t.wood=e},class:"wood"},[(Object(r["j"])(!0),Object(r["c"])(r["a"],null,Object(r["n"])(o.wood,(function(t,e){return Object(r["j"])(),Object(r["c"])("option",{value:e},Object(r["p"])(t.name),9,["value"])})),256))],8,["onUpdate:modelValue"]),[[r["r"],t.wood]]),Object(r["f"])("input",{type:"number",class:"width",value:t.width,onInput:function(e){return t.width=o.parseFloatDef(e.target.value)}},null,40,["value","onInput"]),Object(r["f"])("div",ot,[Object(r["f"])("button",{onClick:function(t){return o.removeLayer(e)}},"X",8,["onClick"])])],64)})),256))])})),ct={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 n,r=function(t){e.dropTarget=e.getTargetLayer(t.pageY)};n=function(){document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",n),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",r),document.addEventListener("mouseup",n)},getTargetLayer:function(t){if(0==this.layers.length)return null;var e=this.getPageOffsetRect(this.$refs.layer0),n=this.getPageOffsetRect(this.$refs["layer"+(this.layers.length-1)]);if(t<=e.bottom)return 0;if(t>=n.bottom)return this.layers.length;if(t>=n.top)return this.layers.length-1;if(null!==this.dropTarget&&this.dropTarget>0&&this.dropTarget<this.layers.length-1){var r=this.getPageOffsetRect(this.$refs["layer"+this.dropTarget]);if(t>=r.top&&t<r.bottom)return this.dropTarget}for(var i=1;i<this.layers.length-1;i++){var a=this.getPageOffsetRect(this.$refs["layer"+i]);if(t>=a.top&&t<a.bottom)return i}return null},getPageOffsetRect:function(t){var e=t.getBoundingClientRect(),n=window.pageXOffset||document.documentElement.scrollLeft,r=window.pageYOffset||document.documentElement.scrollTop;return{top:e.top+r,left:e.left+n,right:e.right+n,bottom:e.bottom+r}}}};n("5812");ct.render=st,ct.__scopeId="data-v-6c03155a";var lt=ct,dt=Object(r["x"])("data-v-423726cc");Object(r["l"])("data-v-423726cc");var ut={class:"wood"},bt={class:"add"},ft=Object(r["f"])("span",{class:"header"},"Name",-1),ht=Object(r["f"])("span",{class:"header"},"Colour",-1),pt=Object(r["f"])("span",{class:"header"}," ",-1),gt={class:"remove"};Object(r["k"])();var Ot=dt((function(t,e,n,i,a,o){return Object(r["j"])(),Object(r["c"])("div",ut,[Object(r["f"])("div",bt,[Object(r["f"])("button",{onClick:e[1]||(e[1]=function(t){return o.addWood()})},"Add wood species")]),ft,ht,pt,(Object(r["j"])(!0),Object(r["c"])(r["a"],null,Object(r["n"])(o.wood,(function(t,e){return Object(r["j"])(),Object(r["c"])(r["a"],null,[Object(r["v"])(Object(r["f"])("input",{type:"text",class:"name","onUpdate:modelValue":function(e){return t.name=e}},null,8,["onUpdate:modelValue"]),[[r["s"],t.name]]),Object(r["v"])(Object(r["f"])("input",{type:"color",class:"color","onUpdate:modelValue":function(e){return t.color=e}},null,8,["onUpdate:modelValue"]),[[r["s"],t.color]]),Object(r["f"])("div",gt,[Object(r["f"])("button",{onClick:function(t){return o.removeWood(e)}},"X",8,["onClick"])])],64)})),256))])})),jt={computed:{settings:function(){return this.$store.state.settings},wood:function(){return this.$store.state.wood}},methods:{addWood:function(){this.$store.commit("addWood")},removeWood:function(t){this.$store.commit("removeWood",t)}}};n("ea6b");jt.render=Ot,jt.__scopeId="data-v-423726cc";var vt=jt,mt=Object(r["x"])("data-v-5e438b66");Object(r["l"])("data-v-5e438b66");var yt={class:"preview"},wt={class:"dimensions"},xt={id:"strip"};Object(r["k"])();var kt=mt((function(t,e,n,i,a,o){return Object(r["j"])(),Object(r["c"])("div",yt,[Object(r["f"])("div",wt,"Dimensions: "+Object(r["p"])(o.display(o.boardWidth))+" x "+Object(r["p"])(o.display(o.boardHeight))+" x "+Object(r["p"])(o.display(o.settings.crosscutWidth)),1),(Object(r["j"])(),Object(r["c"])("svg",{width:o.viewportWidth,height:o.viewportHeight,viewBox:o.viewBox},[Object(r["f"])("defs",null,[Object(r["f"])("g",xt,[(Object(r["j"])(!0),Object(r["c"])(r["a"],null,Object(r["n"])(o.layers,(function(t,e){return Object(r["j"])(),Object(r["c"])("rect",{width:o.toPixels(o.settings.boardThickness),height:o.toPixels(t.width),x:"0",y:o.getLayerOffset(e),style:o.getLayerStyle(e)},null,12,["width","height","y"])})),256))])]),(Object(r["j"])(!0),Object(r["c"])(r["a"],null,Object(r["n"])(o.stripsPerBoard,(function(t,e){return Object(r["j"])(),Object(r["c"])("use",{"xlink:href":"#strip",x:o.toPixels(e*o.settings.boardThickness),y:"0",transform:o.getLayerTransform(e)},null,8,["x","transform"])})),256))],8,["width","height","viewBox"]))])})),Pt=(n("d81d"),n("13d5"),n("a9e3"),{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},stripsPerBoard:function(){var t=this.settings.crosscutWidth+this.settings.bladeKerf;if(0===t)return 0;var e=(this.settings.boardLength+this.settings.bladeKerf)/t;return e=Z.limitDecimals(e,3),Math.floor(e)},boardWidth:function(){return this.stripsPerBoard*this.settings.boardThickness},boardHeight:function(){return 0==this.layers.length?0: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 Z.toPixels(t,this.settings.units)},display:function(t){return Z.display(t,this.settings.units)},getLayerOffset:function(t){if(t<0||t>=this.layers.length)return 0;for(var e=0,n=0;n<t;n++)e+=this.layers[n].width;return this.toPixels(e)},getLayerStyle:function(t){if(t<0||t>=this.layers.length)return"fill: fuchsia";var e=this.layers[t].wood;if(null===e)return"";var n=this.settings.borders?"; stroke-width: 1; stroke: black":"";return"fill: "+this.wood[e].color+n},getLayerTransform:function(t){return this.settings.alternateDirection&&t%2!=0?"scale(1, -1) translate(0, -"+this.boardPixelHeight+")":""}}});n("687d");Pt.render=kt,Pt.__scopeId="data-v-5e438b66";var Lt=Pt,Wt=Object(r["x"])("data-v-6637d5af");Object(r["l"])("data-v-6637d5af");var Ct={class:"preview"},Et={class:"dimensions"};Object(r["k"])();var Tt=Wt((function(t,e,n,i,a,o){return Object(r["j"])(),Object(r["c"])("div",Ct,[Object(r["f"])("div",Et,"Dimensions: "+Object(r["p"])(o.display(o.boardWidth))+" x "+Object(r["p"])(o.display(o.boardHeight))+" x "+Object(r["p"])(o.display(o.settings.boardThickness)),1),(Object(r["j"])(),Object(r["c"])("svg",{width:o.viewportWidth,height:o.viewportHeight,viewBox:o.viewBox},[(Object(r["j"])(!0),Object(r["c"])(r["a"],null,Object(r["n"])(o.layers,(function(t,e){return Object(r["j"])(),Object(r["c"])("rect",{width:o.toPixels(o.settings.boardLength),height:o.toPixels(t.width),x:"0",y:o.getLayerOffset(e),style:o.getLayerStyle(e)},null,12,["width","height","y"])})),256))],8,["width","height","viewBox"]))])})),$t={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 0==this.layers.length?0: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 Z.toPixels(t,this.settings.units)},display:function(t){return Z.display(t,this.settings.units)},getLayerOffset:function(t){if(t<0||t>=this.layers.length)return 0;for(var e=0,n=0;n<t;n++)e+=this.layers[n].width;return this.toPixels(e)},getLayerStyle:function(t){if(t<0||t>=this.layers.length)return"fill: fuchsia";var e=this.layers[t].wood;if(null===e)return"";var n=this.settings.borders?"; stroke-width: 1; stroke: black":"";return"fill: "+this.wood[e].color+n}}};n("839c");$t.render=Tt,$t.__scopeId="data-v-6637d5af";var Mt=$t,St=Object(r["x"])("data-v-a57a7268");Object(r["l"])("data-v-a57a7268");var Dt={class:"list"},Bt=Object(r["f"])("tr",null,[Object(r["f"])("th",null,"Layer"),Object(r["f"])("th",null,"Wood species"),Object(r["f"])("th",{class:"dimension"},"Width")],-1),_t={class:"dimension"},It=Object(r["f"])("h2",null,"Bill of materials",-1),Ut={class:"list"},Ft=Object(r["f"])("tr",null,[Object(r["f"])("th",null,"Wood species"),Object(r["f"])("th",{class:"dimension"},"Thickness"),Object(r["f"])("th",{class:"dimension"},"Length"),Object(r["f"])("th",{class:"dimension"},"Width")],-1),Ht={class:"dimension"},Gt={class:"dimension"},At={class:"dimension"};Object(r["k"])();var Nt=St((function(t,e,n,i,a,o){return Object(r["j"])(),Object(r["c"])(r["a"],null,[Object(r["f"])("table",Dt,[Bt,(Object(r["j"])(!0),Object(r["c"])(r["a"],null,Object(r["n"])(o.layers,(function(t,e){return Object(r["j"])(),Object(r["c"])("tr",null,[Object(r["f"])("td",null,Object(r["p"])(e+1),1),Object(r["f"])("td",null,Object(r["p"])(o.getLayerWood(e)),1),Object(r["f"])("td",_t,Object(r["p"])(o.getLayerWidth(e)),1)])})),256))]),It,Object(r["f"])("table",Ut,[Ft,(Object(r["j"])(!0),Object(r["c"])(r["a"],null,Object(r["n"])(o.bom,(function(t){return Object(r["j"])(),Object(r["c"])("tr",null,[Object(r["f"])("td",null,Object(r["p"])(t.woodName),1),Object(r["f"])("td",Ht,Object(r["p"])(o.display(o.settings.boardThickness)),1),Object(r["f"])("td",Gt,Object(r["p"])(o.display(o.settings.boardLength)),1),Object(r["f"])("td",At,Object(r["p"])(o.display(t.width)),1)])})),256))])],64)})),Kt=(n("4160"),n("159b"),{computed:{settings:function(){return this.$store.state.settings},layers:function(){return this.$store.state.boards[0].layers},wood:function(){return this.$store.state.wood},bom:function(){var t=this,e={};this.layers.forEach((function(n){e.hasOwnProperty(n.wood)?e[n.wood]+=n.width+t.settings.bladeKerf:e[n.wood]=n.width}));var n=[];for(var r in e)e.hasOwnProperty(r)&&n.push({woodName:null!==r&&r>=0&&r<this.wood.length?this.wood[r].name:"",width:e[r]});return n}},methods:{getLayerWood:function(t){if(t<0||t>=this.layers.length)return"";var e=this.layers[t].wood;return null===e||e<0||e>=this.wood.length?"":this.wood[e].name},getLayerWidth:function(t){return t<0||t>=this.layers.length?"":this.display(this.layers[t].width)},display:function(t){return Z.display(t,this.settings.units)}}});n("d25f");Kt.render=Nt,Kt.__scopeId="data-v-a57a7268";var Rt=Kt,Vt=n("21a6"),zt=(n("c975"),n("d3b7"),n("5cc6"),n("9a8c"),n("a975"),n("735e"),n("c1ac"),n("d139"),n("3a7b"),n("d5d6"),n("82f8"),n("e91f"),n("60bd"),n("5f96"),n("3280"),n("3fcc"),n("ca91"),n("25a1"),n("cd26"),n("3c5d"),n("2954"),n("649e"),n("219c"),n("170b"),n("b39a"),n("72f7"),["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","+","/"]),Jt=[255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,62,255,255,255,63,52,53,54,55,56,57,58,59,60,61,255,255,255,0,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255,255,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51];function Yt(t){if(t>=Jt.length)throw new Error("Unable to parse base64 string.");var e=Jt[t];if(255===e)throw new Error("Unable to parse base64 string.");return e}function qt(t){var e,n="",r=t.length;for(e=2;e<r;e+=3)n+=zt[t[e-2]>>2],n+=zt[(3&t[e-2])<<4|t[e-1]>>4],n+=zt[(15&t[e-1])<<2|t[e]>>6],n+=zt[63&t[e]];return e===r+1&&(n+=zt[t[e-2]>>2],n+=zt[(3&t[e-2])<<4],n+="=="),e===r&&(n+=zt[t[e-2]>>2],n+=zt[(3&t[e-2])<<4|t[e-1]>>4],n+=zt[(15&t[e-1])<<2],n+="="),n}function Xt(t){if(t.length%4!==0)throw new Error("Unable to parse base64 string.");var e=t.indexOf("=");if(-1!==e&&e<t.length-2)throw new Error("Unable to parse base64 string.");for(var n,r=t.endsWith("==")?2:t.endsWith("=")?1:0,i=t.length,a=new Uint8Array(i/4*3),o=0,s=0;o<i;o+=4,s+=3)n=Yt(t.charCodeAt(o))<<18|Yt(t.charCodeAt(o+1))<<12|Yt(t.charCodeAt(o+2))<<6|Yt(t.charCodeAt(o+3)),a[s]=n>>16,a[s+1]=n>>8&255,a[s+2]=255&n;return a.subarray(0,a.length-r)}var Qt={name:"App",components:{EndGrainPreview:Lt,EdgeGrainPreview:Mt,Settings:et,Layers:lt,Wood:vt,CuttingList:Rt},data:function(){return{tab:"settings",saveFilename:"My cutting board",printEdgeGrain:!0,printEndGrain:!0,printCuttingList:!0}},created:function(){var t=this,e=function(){if(location.hash){var e=location.hash.substring(1);try{var n=Xt(e);n&&t.$store.commit("loadMsgPack",n)}catch(r){console.error(r)}}};e(),window.addEventListener("hashchange",(function(){e()}))},computed:{hash:function(){return qt(this.$store.getters.saveMsgPack)}},methods:{save:function(){var t=this.$store.getters.save,e=new Blob([t],{type:"text/plain; charset=utf-8"});Object(Vt["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 n=new FileReader;n.addEventListener("load",(function(e){t.$store.commit("load",e.target.result)})),n.readAsBinaryString(e)}},print:function(){window.print()}},watch:{hash:function(t){history.replaceState({},"","#"+t)}}};n("0e1b"),n("a611");Qt.render=S,Qt.__scopeId="data-v-42450ddb";var Zt=Qt,te=(n("a434"),n("5502")),ee=n("d8b3");function ne(t,e){for(var n in t)t.hasOwnProperty(n)&&e.hasOwnProperty(n)&&(e[n]=t[n])}function re(t){var e=parseFloat(t);return Object.is(e,NaN)?0:e}function ie(t,e){if(e.hasOwnProperty("settings")&&ne(e.settings,t.settings),e.hasOwnProperty("boards")){var n=e.boards.map((function(t){return t.hasOwnProperty("layers")?{layers:t.layers.map((function(t){return{wood:re(t.wood),width:re(t.width)}}))}:{layers:[]}}));0===n.length&&n.push({layers:[]}),t.boards=n}if(e.hasOwnProperty("wood")){var r=e.wood.map((function(t){return{name:t.name,color:t.color}}));t.wood=r}}var ae=Object(te["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:Z.fromMillimeters(20,t.settings.units)})},removeLayer:function(t,e){if(!(e.board<0||e.board>=t.boards.length)){var n=t.boards[e.board];e.layer<0||e.layer>=n.layers.length||n.layers.splice(e.layer,1)}},moveLayer:function(t,e){if(!(e.board<0||e.board>=t.boards.length)){var n=t.boards[e.board];if(!(e.from<0||e.from>=n.layers.length)&&!(e.to<0||e.to>n.layers.length))if(e.to==n.layers.length)n.layers.push(n.layers[e.from]),n.layers.splice(e.from,1);else{var r=n.layers[e.from];n.layers.splice(e.from,1),e.to>e.from&&e.to--,n.layers.splice(e.to,0,r)}}},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 n=t.settings.units;ne(e,t.settings),n!==t.settings.units&&(t.settings.boardThickness=Z.limitDecimals(Z.convert(t.settings.boardThickness,n,t.settings.units),3),t.settings.boardLength=Z.limitDecimals(Z.convert(t.settings.boardLength,n,t.settings.units),3),t.settings.bladeKerf=Z.limitDecimals(Z.convert(t.settings.bladeKerf,n,t.settings.units),3),t.settings.crosscutWidth=Z.limitDecimals(Z.convert(t.settings.crosscutWidth,n,t.settings.units),3),t.boards.forEach((function(e){e.layers.forEach((function(e){e.width=Z.limitDecimals(Z.convert(e.width,n,t.settings.units),3)}))})))},load:function(t,e){var n=JSON.parse(e);ie(t,n)},loadMsgPack:function(t,e){try{var n=Object(ee["deserialize"])(e);ie(t,n)}catch(r){console.error(r)}}},getters:{save:function(t){return JSON.stringify(t)},saveMsgPack:function(t){return Object(ee["serialize"])(t)}}}),oe=n("ecee"),se=n("c074"),ce=n("ad3d");oe["c"].add(se["e"],se["b"],se["d"],se["c"],se["a"],se["f"]),Object(r["b"])(Zt).use(ae).component("font-awesome-icon",ce["a"]).mount("#app")},"57d7":function(t,e,n){},5812:function(t,e,n){"use strict";n("22d2")},"687d":function(t,e,n){"use strict";n("932f")},"78ed":function(t,e,n){},"839c":function(t,e,n){"use strict";n("fe6f")},"932f":function(t,e,n){},a611:function(t,e,n){"use strict";n("b1fd")},b1fd:function(t,e,n){},be02:function(t,e,n){"use strict";n("78ed")},d25f:function(t,e,n){"use strict";n("1a73")},ea6b:function(t,e,n){"use strict";n("57d7")},f88f:function(t,e,n){},fe6f:function(t,e,n){}});
//# sourceMappingURL=app.9fbbf467.js.map