{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/Layers.vue?483f","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/App.vue?eabf","webpack:///./src/store.js","webpack:///./src/main.js","webpack:///./src/components/Wood.vue?ca33","webpack:///./src/App.vue?62ea","webpack:///./src/components/Settings.vue?800c"],"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","href","target","scale","for","id","type","checked","settings","borders","$store","commit","$event","boardThickness","parseFloatDef","boardLength","bladeKerf","crosscutWidth","alternateDirection","millimetersPerInch","millimetersPerCentimeter","pixelsPerMillimeter","units","toPixels","this","toMillimeters","console","error","fromMillimeters","computed","state","methods","parsedValue","parseFloat","is","NaN","render","__scopeId","addLayer","layers","layer","index","wood","item","width","removeLayer","boards","board","addWood","color","removeWood","viewportWidth","height","viewportHeight","viewBox","x","y","getLayerOffset","style","getLayerStyle","props","Number","boardWidth","boardHeight","map","currentValue","reduce","accumulator","Math","floor","offset","woodIndex","borderStyle","stripsPerBoard","strip","xlink:href","transform","getLayerTransform","stripAndKerf","components","EndGrainPreview","EdgeGrainPreview","Settings","Layers","Wood","createStore","mutations","payload","forEach","updateSettings","actions","createApp","App","use","store","mount"],"mappings":"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","file":"js/app.f2508f9a.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!./Layers.vue?vue&type=style&index=0&id=535527d4&lang=scss&scoped=true\"","\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 toPixels(value, units)\r\n {\r\n return 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 'inch': 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 'inch': 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\r\nexport { units }","import { render } from \"./Settings.vue?vue&type=template&id=660f17f9&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=660f17f9&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-660f17f9\"\n\nexport default script","\r\n\r\n\r\n\r\n","import { render } from \"./Layers.vue?vue&type=template&id=535527d4&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=535527d4&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-535527d4\"\n\nexport default script","\r\n\r\n\r\n\r\n","import { render } from \"./Wood.vue?vue&type=template&id=55181d8c&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=55181d8c&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-55181d8c\"\n\nexport default script","\n\n","import { render } from \"./EndGrainPreview.vue?vue&type=template&id=f0162250\"\nimport script from \"./EndGrainPreview.vue?vue&type=script&lang=js\"\nexport * from \"./EndGrainPreview.vue?vue&type=script&lang=js\"\nscript.render = render\n\nexport default script","\n\n","import { render } from \"./EdgeGrainPreview.vue?vue&type=template&id=e3d956ee\"\nimport script from \"./EdgeGrainPreview.vue?vue&type=script&lang=js\"\nexport * from \"./EdgeGrainPreview.vue?vue&type=script&lang=js\"\nscript.render = render\n\nexport default script","import { render } from \"./App.vue?vue&type=template&id=9a85d6fa\"\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=9a85d6fa&lang=scss\"\nscript.render = render\n\nexport default script","import { createStore } from 'vuex';\nimport { units } from './lib/units';\n\nexport default createStore({\n state: {\n settings: {\n units: 'mm',\n borders: false,\n boardThickness: 20,\n boardLength: 700,\n bladeKerf: 3.5,\n crosscutWidth: 30,\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: 0, width: 20 },\n { wood: 1, width: 20 },\n { wood: 0, width: 20 },\n { wood: 1, width: 20 },\n { wood: 0, width: 20 },\n { wood: 1, width: 20 },\n { wood: 0, width: 20 },\n { wood: 1, width: 20 },\n { wood: 0, width: 20 },\n { wood: 1, width: 20 },\n { wood: 0, width: 20 },\n { wood: 1, width: 20 },\n { wood: 0, width: 20 },\n { wood: 1, width: 20 }\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 if (payload.layer < 0 || payload.layer >= state.boards[payload.board].length)\n return;\n\n state.boards[payload.board].layers.splice(payload.layer, 1);\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 for (const property in payload)\n {\n if (!payload.hasOwnProperty(property) || !state.settings.hasOwnProperty(property))\n continue;\n\n state.settings[property] = payload[property];\n }\n }\n },\n\n actions: {\n }\n})\n","import { createApp } from 'vue'\nimport App from './App.vue'\nimport store from './store'\n\ncreateApp(App).use(store).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!./Wood.vue?vue&type=style&index=0&id=55181d8c&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=0&id=9a85d6fa&lang=scss\"","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=660f17f9&lang=scss&scoped=true\""],"sourceRoot":""}