{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?c994","webpack:///./src/App.vue","webpack:///./src/components/Settings.vue","webpack:///./src/lib/units.js","webpack:///./src/components/Settings.vue?b32f","webpack:///./src/components/Layers.vue","webpack:///./src/components/Layers.vue?f1ba","webpack:///./src/components/Wood.vue","webpack:///./src/components/Wood.vue?85c2","webpack:///./src/components/EndGrainPreview.vue","webpack:///./src/components/EndGrainPreview.vue?ab3d","webpack:///./src/components/EdgeGrainPreview.vue","webpack:///./src/components/EdgeGrainPreview.vue?0ca3","webpack:///./src/components/CuttingList.vue","webpack:///./src/components/CuttingList.vue?203c","webpack:///./src/lib/base64.js","webpack:///./src/App.vue?eabf","webpack:///./src/store.js","webpack:///./src/main.js","webpack:///./src/components/Layers.vue?7dcb","webpack:///./src/components/EndGrainPreview.vue?c0f2","webpack:///./src/components/EdgeGrainPreview.vue?62cc","webpack:///./src/App.vue?8952","webpack:///./src/components/Settings.vue?8881","webpack:///./src/components/CuttingList.vue?6f02","webpack:///./src/components/Wood.vue?628f"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","class","for","type","ref","accept","href","target","tab","icon","size","fixed-width","printEdgeGrain","id","printEndGrain","printCuttingList","print","saveFilename","save","load","scale","settings","units","$store","commit","$event","checked","borders","boardThickness","parseFloatDef","boardLength","bladeKerf","crosscutWidth","alternateDirection","millimetersPerInch","millimetersPerCentimeter","pixelsPerMillimeter","convert","fromUnits","toUnits","millimeters","this","toMillimeters","fromMillimeters","toPixels","Math","ceil","console","error","display","displayValue","limitDecimals","decimals","power","pow","round","computed","state","methods","parsedValue","parseFloat","is","NaN","render","__scopeId","addLayer","layers","layer","index","dropTarget","startDrag","wood","item","width","removeLayer","dragIndex","boards","board","dragMouseMove","event","getTargetLayer","pageY","document","removeEventListener","from","to","addEventListener","yPos","firstLayer","getPageOffsetRect","$refs","layer0","lastLayer","bottom","top","currentTarget","testTarget","element","clientRect","getBoundingClientRect","scrollLeft","pageXOffset","documentElement","scrollTop","pageYOffset","left","right","addWood","color","removeWood","boardWidth","boardHeight","viewportWidth","height","viewportHeight","viewBox","x","y","getLayerOffset","style","getLayerStyle","stripsPerBoard","strip","xlink:href","transform","getLayerTransform","props","Number","stripAndKerf","floor","map","currentValue","reduce","accumulator","boardPixelWidth","boardPixelHeight","offset","woodIndex","borderStyle","getLayerWood","getLayerWidth","bom","stock","woodName","woodTally","forEach","base64abc","base64codes","getBase64Code","charCode","Error","code","bytesToBase64","bytes","base64ToBytes","str","indexOf","buffer","missingOctets","endsWith","Uint8Array","charCodeAt","subarray","components","EndGrainPreview","EdgeGrainPreview","Settings","Layers","Wood","CuttingList","created","self","checkHash","location","hash","substring","decoded","e","getters","saveMsgPack","blob","Blob","loadFile","files","toLowerCase","reader","FileReader","readAsBinaryString","watch","newValue","history","replaceState","mergeObject","source","loadObject","parsedPayload","newBoards","newWood","createStore","mutations","payload","moveLayer","updateSettings","oldUnits","JSON","parse","loadMsgPack","deserialize","stringify","serialize","library","add","faSlidersH","faLayerGroup","faSave","faPrint","faInfoCircle","faTree","createApp","App","use","store","component","FontAwesomeIcon","mount"],"mappings":"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","file":"js/app.9fbbf467.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./App.vue?vue&type=style&index=0&id=42450ddb&lang=scss\"","\n\n\n\n\n\n\n","\r\n\r\n\r\n\r\n","const millimetersPerInch = 25.4;\r\nconst millimetersPerCentimeter = 10;\r\nconst pixelsPerMillimeter = 1;\r\n\r\n\r\n\r\nconst units = {\r\n convert(value, fromUnits, toUnits)\r\n {\r\n const millimeters = this.toMillimeters(value, fromUnits);\r\n return this.fromMillimeters(millimeters, toUnits);\r\n },\r\n\r\n\r\n toPixels(value, units)\r\n {\r\n return Math.ceil(this.toMillimeters(value, units) * pixelsPerMillimeter);\r\n },\r\n\r\n\r\n toMillimeters(value, units)\r\n {\r\n switch (units)\r\n {\r\n case 'mm': return value;\r\n case 'cm': return value * millimetersPerCentimeter;\r\n case 'inchdecimal': return value * millimetersPerInch;\r\n }\r\n\r\n console.error('Invalid units type: ' + units);\r\n return 0;\r\n },\r\n\r\n\r\n fromMillimeters(value, units)\r\n {\r\n switch (units)\r\n {\r\n case 'mm': return value;\r\n case 'cm': return value / millimetersPerCentimeter;\r\n case 'inchdecimal': return value / millimetersPerInch;\r\n }\r\n\r\n console.error('Invalid units type: ' + units);\r\n return 0;\r\n },\r\n\r\n\r\n display(value, units)\r\n {\r\n const displayValue = this.limitDecimals(value, 3);\r\n\r\n switch (units)\r\n {\r\n case 'mm': return displayValue + ' mm';\r\n case 'cm': return displayValue + ' cm';\r\n case 'inchdecimal': return displayValue + ' inch';\r\n }\r\n\r\n console.error('Invalid units type: ' + units);\r\n return displayValue;\r\n },\r\n\r\n\r\n limitDecimals(value, decimals)\r\n {\r\n // toFixed turns it into a string and pads it with zeroes\r\n const power = Math.pow(10, decimals);\r\n return Math.round(value * power) / power;\r\n }\r\n};\r\n\r\n\r\nexport { units }","import { render } from \"./Settings.vue?vue&type=template&id=7b473d48&scoped=true\"\nimport script from \"./Settings.vue?vue&type=script&lang=js\"\nexport * from \"./Settings.vue?vue&type=script&lang=js\"\n\nimport \"./Settings.vue?vue&type=style&index=0&id=7b473d48&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-7b473d48\"\n\nexport default script","\r\n\r\n\r\n\r\n","import { render } from \"./Layers.vue?vue&type=template&id=6c03155a&scoped=true\"\nimport script from \"./Layers.vue?vue&type=script&lang=js\"\nexport * from \"./Layers.vue?vue&type=script&lang=js\"\n\nimport \"./Layers.vue?vue&type=style&index=0&id=6c03155a&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-6c03155a\"\n\nexport default script","\r\n\r\n\r\n\r\n","import { render } from \"./Wood.vue?vue&type=template&id=423726cc&scoped=true\"\nimport script from \"./Wood.vue?vue&type=script&lang=js\"\nexport * from \"./Wood.vue?vue&type=script&lang=js\"\n\nimport \"./Wood.vue?vue&type=style&index=0&id=423726cc&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-423726cc\"\n\nexport default script","\n\n\n\n","import { render } from \"./EndGrainPreview.vue?vue&type=template&id=5e438b66&scoped=true\"\nimport script from \"./EndGrainPreview.vue?vue&type=script&lang=js\"\nexport * from \"./EndGrainPreview.vue?vue&type=script&lang=js\"\n\nimport \"./EndGrainPreview.vue?vue&type=style&index=0&id=5e438b66&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-5e438b66\"\n\nexport default script","\n\n\n\n","import { render } from \"./EdgeGrainPreview.vue?vue&type=template&id=6637d5af&scoped=true\"\nimport script from \"./EdgeGrainPreview.vue?vue&type=script&lang=js\"\nexport * from \"./EdgeGrainPreview.vue?vue&type=script&lang=js\"\n\nimport \"./EdgeGrainPreview.vue?vue&type=style&index=0&id=6637d5af&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-6637d5af\"\n\nexport default script","\r\n\r\n\r\n\r\n","import { render } from \"./CuttingList.vue?vue&type=template&id=a57a7268&scoped=true\"\nimport script from \"./CuttingList.vue?vue&type=script&lang=js\"\nexport * from \"./CuttingList.vue?vue&type=script&lang=js\"\n\nimport \"./CuttingList.vue?vue&type=style&index=0&id=a57a7268&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-a57a7268\"\n\nexport default script","/*\r\nMIT License\r\nCopyright (c) 2020 Egor Nepomnyaschih\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n*/\r\n\r\n/*\r\n// This constant can also be computed with the following algorithm:\r\nconst base64abc = [],\r\n A = \"A\".charCodeAt(0),\r\n a = \"a\".charCodeAt(0),\r\n n = \"0\".charCodeAt(0);\r\nfor (let i = 0; i < 26; ++i) {\r\n base64abc.push(String.fromCharCode(A + i));\r\n}\r\nfor (let i = 0; i < 26; ++i) {\r\n base64abc.push(String.fromCharCode(a + i));\r\n}\r\nfor (let i = 0; i < 10; ++i) {\r\n base64abc.push(String.fromCharCode(n + i));\r\n}\r\nbase64abc.push(\"+\");\r\nbase64abc.push(\"/\");\r\n*/\r\nconst base64abc = [\r\n \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\",\r\n \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\",\r\n \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\",\r\n \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\",\r\n \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"+\", \"/\"\r\n];\r\n\r\n/*\r\n// This constant can also be computed with the following algorithm:\r\nconst l = 256, base64codes = new Uint8Array(l);\r\nfor (let i = 0; i < l; ++i) {\r\n base64codes[i] = 255; // invalid character\r\n}\r\nbase64abc.forEach((char, index) => {\r\n base64codes[char.charCodeAt(0)] = index;\r\n});\r\nbase64codes[\"=\".charCodeAt(0)] = 0; // ignored anyway, so we just need to prevent an error\r\n*/\r\nconst base64codes = [\r\n 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\r\n 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\r\n 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255, 255, 255, 63,\r\n 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, 255, 0, 255, 255,\r\n 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,\r\n 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 255,\r\n 255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,\r\n 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51\r\n];\r\n\r\nfunction getBase64Code(charCode) {\r\n if (charCode >= base64codes.length) {\r\n throw new Error(\"Unable to parse base64 string.\");\r\n }\r\n const code = base64codes[charCode];\r\n if (code === 255) {\r\n throw new Error(\"Unable to parse base64 string.\");\r\n }\r\n return code;\r\n}\r\n\r\nexport function bytesToBase64(bytes) {\r\n let result = '', i, l = bytes.length;\r\n for (i = 2; i < l; i += 3) {\r\n result += base64abc[bytes[i - 2] >> 2];\r\n result += base64abc[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)];\r\n result += base64abc[((bytes[i - 1] & 0x0F) << 2) | (bytes[i] >> 6)];\r\n result += base64abc[bytes[i] & 0x3F];\r\n }\r\n if (i === l + 1) { // 1 octet yet to write\r\n result += base64abc[bytes[i - 2] >> 2];\r\n result += base64abc[(bytes[i - 2] & 0x03) << 4];\r\n result += \"==\";\r\n }\r\n if (i === l) { // 2 octets yet to write\r\n result += base64abc[bytes[i - 2] >> 2];\r\n result += base64abc[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)];\r\n result += base64abc[(bytes[i - 1] & 0x0F) << 2];\r\n result += \"=\";\r\n }\r\n return result;\r\n}\r\n\r\nexport function base64ToBytes(str) {\r\n if (str.length % 4 !== 0) {\r\n throw new Error(\"Unable to parse base64 string.\");\r\n }\r\n const index = str.indexOf(\"=\");\r\n if (index !== -1 && index < str.length - 2) {\r\n throw new Error(\"Unable to parse base64 string.\");\r\n }\r\n let missingOctets = str.endsWith(\"==\") ? 2 : str.endsWith(\"=\") ? 1 : 0,\r\n n = str.length,\r\n result = new Uint8Array(3 * (n / 4)),\r\n buffer;\r\n for (let i = 0, j = 0; i < n; i += 4, j += 3) {\r\n buffer =\r\n getBase64Code(str.charCodeAt(i)) << 18 |\r\n getBase64Code(str.charCodeAt(i + 1)) << 12 |\r\n getBase64Code(str.charCodeAt(i + 2)) << 6 |\r\n getBase64Code(str.charCodeAt(i + 3));\r\n result[j] = buffer >> 16;\r\n result[j + 1] = (buffer >> 8) & 0xFF;\r\n result[j + 2] = buffer & 0xFF;\r\n }\r\n return result.subarray(0, result.length - missingOctets);\r\n}\r\n\r\nexport function base64encode(str, encoder = new TextEncoder()) {\r\n return bytesToBase64(encoder.encode(str));\r\n}\r\n\r\nexport function base64decode(str, decoder = new TextDecoder()) {\r\n return decoder.decode(base64ToBytes(str));\r\n}","import { render } from \"./App.vue?vue&type=template&id=42450ddb&scoped=true\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=42450ddb&lang=scss\"\nimport \"./App.vue?vue&type=style&index=1&id=42450ddb&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-42450ddb\"\n\nexport default script","import { createStore } from 'vuex';\nimport { units } from './lib/units';\n\nimport { serialize, deserialize } from '@ygoe/msgpack';\n\n\nfunction mergeObject(source, target)\n{\n for (const property in source)\n {\n if (!source.hasOwnProperty(property) || !target.hasOwnProperty(property))\n continue;\n\n target[property] = source[property];\n }\n}\n\n\nfunction parseFloatDef(value)\n{\n const parsedValue = parseFloat(value);\n return Object.is(parsedValue, NaN) ? 0 : parsedValue;\n}\n\n\n\nfunction loadObject(state, parsedPayload)\n{\n if (parsedPayload.hasOwnProperty('settings'))\n mergeObject(parsedPayload.settings, state.settings);\n\n if (parsedPayload.hasOwnProperty('boards'))\n {\n\n const newBoards = parsedPayload.boards.map(board =>\n {\n if (!board.hasOwnProperty('layers'))\n {\n return {\n layers: []\n };\n }\n\n return {\n layers: board.layers.map(layer =>\n {\n return {\n wood: parseFloatDef(layer.wood),\n width: parseFloatDef(layer.width)\n }\n })\n };\n })\n\n if (newBoards.length === 0)\n newBoards.push({ layers: [] });\n\n state.boards = newBoards;\n }\n\n if (parsedPayload.hasOwnProperty('wood'))\n {\n const newWood = parsedPayload.wood.map(item =>\n {\n return {\n name: item.name,\n color: item.color\n };\n });\n\n state.wood = newWood;\n }\n}\n\n\n\nexport default createStore({\n state: {\n settings: {\n units: 'cm',\n borders: false,\n boardThickness: 2,\n boardLength: 70,\n bladeKerf: 0.35,\n crosscutWidth: 3,\n\n alternateDirection: true\n },\n\n wood: [\n { name: 'Walnut', color: '#58443f' },\n { name: 'Maple', color: '#f2e0aa' },\n { name: 'Cherry', color: '#bb8359' },\n { name: 'Mahogany', color: '#98473f' },\n { name: 'Yellowheart', color: '#ffff84' },\n { name: 'White oak', color: '#fdf4b9' },\n { name: 'Bubinga', color: '#7e3c34' },\n { name: 'Jatoba', color: '#9b281c' },\n { name: 'Padouk', color: '#933350' }\n ],\n\n boards: [\n {\n layers: [\n { wood: 8, width: 1 },\n { wood: 1, width: 1.5 },\n { wood: 8, width: 2 },\n { wood: 1, width: 2 },\n { wood: 8, width: 15 },\n { wood: 1, width: 2 },\n { wood: 8, width: 1.5 },\n { wood: 1, width: 1 }\n ]\n }\n ]\n },\n\n mutations: {\n addLayer(state, board)\n {\n if (board < 0 || board >= state.boards.length)\n return;\n\n state.boards[board].layers.push({\n wood: 0,\n width: units.fromMillimeters(20, state.settings.units)\n });\n },\n\n removeLayer(state, payload)\n {\n if (payload.board < 0 || payload.board >= state.boards.length)\n return;\n\n const board = state.boards[payload.board];\n\n if (payload.layer < 0 || payload.layer >= board.layers.length)\n return;\n\n board.layers.splice(payload.layer, 1);\n },\n\n moveLayer(state, payload)\n {\n if (payload.board < 0 || payload.board >= state.boards.length)\n return;\n\n const board = state.boards[payload.board];\n\n if (payload.from < 0 || payload.from >= board.layers.length)\n return;\n\n if (payload.to < 0 || payload.to > board.layers.length)\n return;\n\n if (payload.to == board.layers.length)\n {\n // Move to end\n board.layers.push(board.layers[payload.from]);\n board.layers.splice(payload.from, 1);\n }\n else\n {\n const item = board.layers[payload.from];\n board.layers.splice(payload.from, 1);\n\n if (payload.to > payload.from)\n payload.to--;\n\n board.layers.splice(payload.to, 0, item);\n }\n },\n\n\n addWood(state)\n {\n state.wood.push({\n name: 'Wood #' + (state.wood.length + 1),\n color: '#f2e0aa'\n });\n },\n\n removeWood(state, index)\n {\n if (index < 0 || index >= state.wood.length)\n return;\n\n // Update all layers\n state.boards.forEach(board =>\n {\n board.layers.forEach(layer =>\n {\n if (layer.wood === index)\n layer.wood = null\n else if (layer.wood > index)\n layer.wood--;\n });\n });\n\n state.wood.splice(index, 1);\n },\n\n\n updateSettings(state, payload)\n {\n const oldUnits = state.settings.units;\n\n mergeObject(payload, state.settings);\n\n if (oldUnits !== state.settings.units)\n {\n // Convert the settings\n state.settings.boardThickness = units.limitDecimals(units.convert(state.settings.boardThickness, oldUnits, state.settings.units), 3);\n state.settings.boardLength = units.limitDecimals(units.convert(state.settings.boardLength, oldUnits, state.settings.units), 3);\n state.settings.bladeKerf = units.limitDecimals(units.convert(state.settings.bladeKerf, oldUnits, state.settings.units), 3);\n state.settings.crosscutWidth = units.limitDecimals(units.convert(state.settings.crosscutWidth, oldUnits, state.settings.units), 3);\n\n // Convert the layers\n state.boards.forEach(board =>\n {\n board.layers.forEach(layer =>\n {\n layer.width = units.limitDecimals(units.convert(layer.width, oldUnits, state.settings.units), 3);\n });\n });\n }\n },\n\n\n load(state, payload)\n {\n const parsedPayload = JSON.parse(payload);\n loadObject(state, parsedPayload);\n },\n\n loadMsgPack(state, payload)\n {\n try\n {\n const parsedPayload = deserialize(payload);\n loadObject(state, parsedPayload);\n }\n catch(e)\n {\n console.error(e);\n }\n }\n },\n\n getters: {\n save(state)\n {\n return JSON.stringify(state);\n },\n\n saveMsgPack(state)\n {\n return serialize(state);\n }\n }\n})\n","import { createApp } from 'vue';\nimport App from './App.vue';\nimport store from './store';\n\nimport { library } from '@fortawesome/fontawesome-svg-core';\nimport { faSlidersH, faLayerGroup, faSave, faPrint, faInfoCircle, faTree } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\n\nlibrary.add(faSlidersH, faLayerGroup, faSave, faPrint, faInfoCircle, faTree);\n\ncreateApp(App)\n .use(store)\n .component('font-awesome-icon', FontAwesomeIcon)\n .mount('#app');\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Layers.vue?vue&type=style&index=0&id=6c03155a&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./EndGrainPreview.vue?vue&type=style&index=0&id=5e438b66&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./EdgeGrainPreview.vue?vue&type=style&index=0&id=6637d5af&lang=scss&scoped=true\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./App.vue?vue&type=style&index=1&id=42450ddb&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Settings.vue?vue&type=style&index=0&id=7b473d48&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./CuttingList.vue?vue&type=style&index=0&id=a57a7268&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Wood.vue?vue&type=style&index=0&id=423726cc&lang=scss&scoped=true\""],"sourceRoot":""}