SquiggleCam/dist/static/js/app.2cf2ad8ffdb718b4ceba.js...

1 wiersz
74 KiB
XML

{"version":3,"sources":["webpack:///./src/components/ImageChooser.vue?97ce","webpack:///./src/components/ImageChooser.vue","webpack:///src/components/ImageChooser.vue","webpack:///src/components/WebCam.vue","webpack:///./src/components/WebCam.vue?55e1","webpack:///./src/components/WebCam.vue","webpack:///src/components/svgChartLine.vue","webpack:///./src/components/svgChartLine.vue?2f76","webpack:///src/components/svgChart.vue","webpack:///./src/components/svgChartLine.vue","webpack:///./src/components/svgChart.vue?66cf","webpack:///./src/components/svgChart.vue","webpack:///src/App.vue","webpack:///./src/App.vue?3f1f","webpack:///./src/App.vue","webpack:///./src/main.js"],"names":["components_ImageChooser","render","_vm","this","_h","$createElement","_c","_self","staticClass","_v","class","active","selectedItem","attrs","id","disabled","on","click","toggle","staticRenderFns","src_components_ImageChooser","__webpack_require__","normalizeComponent","name","data","methods","event","target","$emit","ssrContext","WebCam","props","width","type","Number","String","default","height","autoplay","Boolean","screenshotFormat","deviceId","playsinline","source","canvas","camerasListEmitted","cameras","watch","changeCamera","mounted","setupMedia","beforeDestroy","stop","legacyGetUserMediaSupport","constraints","getUserMedia","navigator","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","oGetUserMedia","promise_default","a","resolve","reject","call","Error","undefined","mediaDevices","testMediaAccess","loadCameras","_this","enumerateDevices","then","deviceInfos","i","length","deviceInfo","kind","push","catch","error","loadCamera","loadSrcStream","stream","_this2","$refs","video","srcObject","window","HTMLMediaElement","onloadedmetadata","stopStreamedVideo","videoElem","_this3","getTracks","forEach","track","start","_this4","$props","aspectRatio","exact","audio","device","_this5","capture","getCanvas","toDataURL","getCanvasRaw","ctx","getImageData","_canvas","document","createElement","getContext","translate","scale","clearRect","drawImage","components_WebCam","ref","src","src_components_WebCam","WebCam_normalizeComponent","svgChartLine","computed","pathD","path","d","values","point","index","Math","round","components_svgChartLine","style","strokeWidth","stroke","fill","color","svgChart","components","svgChartLine_normalizeComponent","viewbox","background","black","components_svgChart","xmlns","viewBox","_l","line","key","App","imageChooser","webcam","svgChart_normalizeComponent","cropper","dataUrl","lines","inputType","settings","frequency","amplitude","lineCount","brightness","contrast","minBrightness","maxBrightness","spacing","canvasData","img","camera","devices","streaming","webcam.camera","webcam.devices","first","settings.frequency","processImage","settings.spacing","settings.lineCount","settings.amplitude","settings.minBrightness","settings.maxBrightness","settings.brightness","settings.contrast","settings.black","widthInCM","heightInCM","downloadSVG","svgString","XMLSerializer","serializeToString","svgResult","$el","blob","Blob","svgUrl","URL","createObjectURL","downloadLink","href","download","Date","now","body","appendChild","removeChild","uploadCroppedImage","generateBlob","Image","onload","$worker","run","config","imagePixels","image","parseInt","parseFloat","squiggleData","r","b","z","currentLine","currentVerticalPixelIndex","currentHorizontalPixelIndex","contrastFactor","horizontalLineSpacing","floor","y","x","min","max","sin","assign_default","result","e","console","onCapture","onStarted","onStopped","onStop","onStart","onError","log","onCameras","onCameraChange","onInputSelected","selectortype_template_index_0_src_App","_m","for","$event","_s","directives","rawName","value","expression","domProps","__r","$set","checked","selected","preventWhiteSpace","quality","placeholder-color","remove-button-size","placeholder-font-size","remove-button-color","canvas-color","model","callback","$$v","staticStyle","display","_e","change","$$selectedVal","Array","prototype","filter","options","o","map","_value","multiple","label","device-id","started","stopped","camera-change","cx","cy","stroke-width","step","src_App","App_normalizeComponent","Vue","productionTip","use","VueWorker","Croppa","el","template"],"mappings":"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","file":"static/js/app.2cf2ad8ffdb718b4ceba.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"image-chooser\"},[_c('div',{staticClass:\"button-group stretch\"},[_c('label',[_vm._v(\"Input:\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn\",class:{ active: _vm.selectedItem === 'upload' },attrs:{\"id\":\"upload\",\"disabled\":_vm.disabled},on:{\"click\":_vm.toggle}},[_vm._v(\"File\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn\",class:{ active: _vm.selectedItem === 'webcam' },attrs:{\"id\":\"webcam\",\"disabled\":_vm.disabled},on:{\"click\":_vm.toggle}},[_vm._v(\"WebCam\")])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-4692bf3a\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/ImageChooser.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-4692bf3a\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ImageChooser.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ImageChooser.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ImageChooser.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4692bf3a\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./ImageChooser.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-4692bf3a\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/ImageChooser.vue\n// module id = null\n// module chunks = ","<template>\n <div class=\"image-chooser\">\n <div class=\"button-group stretch\">\n <label>Input:</label>\n <button id=\"upload\" :disabled=\"disabled\" v-bind:class=\"{ active: selectedItem === 'upload' }\" class=\"btn\" @click=\"toggle\">File</button>\n <button id=\"webcam\" :disabled=\"disabled\" class=\"btn\" v-bind:class=\"{ active: selectedItem === 'webcam' }\" @click=\"toggle\">WebCam</button>\n </div>\n </div>\n</template>\n\n<script>\n export default {\n name: \"ImageChooser\",\n data: function(){\n return {\n selectedItem: \"upload\",\n disabled: false\n }\n },\n methods: {\n toggle: function (event) {\n this.selectedItem = event.target.id;\n this.$emit('selected', this.selectedItem);\n }\n }\n }\n</script>\n\n<style scoped>\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/ImageChooser.vue","<template>\n <video ref=\"video\"\n :width=\"width\"\n :height=\"height\"\n :src=\"source\"\n :autoplay=\"autoplay\"\n :playsinline=\"playsinline\"/>\n</template>\n\n<script>\n export default {\n name: \"WebCam\",\n props: {\n width: {\n type: [Number, String],\n default: \"100%\"\n },\n height: {\n type: [Number, String],\n default: 200\n },\n autoplay: {\n type: Boolean,\n default: true\n },\n screenshotFormat: {\n type: String,\n default: \"image/jpeg\"\n },\n deviceId: {\n type: String,\n default: null\n },\n playsinline: {\n type: Boolean,\n default: true\n }\n },\n data() {\n return {\n source: null,\n canvas: null,\n camerasListEmitted: false,\n cameras: []\n };\n },\n watch: {\n deviceId: function(id) {\n this.changeCamera(id);\n }\n },\n mounted() {\n\n this.setupMedia();\n },\n beforeDestroy() {\n //this.camerasListEmitted = false;\n //this.cameras = [];\n this.stop();\n },\n methods: {\n legacyGetUserMediaSupport() {\n return constraints => {\n // First get a hold of the legacy getUserMedia, if present\n let getUserMedia =\n navigator.getUserMedia ||\n navigator.webkitGetUserMedia ||\n navigator.mozGetUserMedia ||\n navigator.msGetUserMedia ||\n navigator.oGetUserMedia;\n\n // Some browsers just don't implement it - return a rejected promise with an error\n // to keep a consistent interface\n if (!getUserMedia) {\n return Promise.reject(\n new Error(\"getUserMedia is not implemented in this browser\")\n );\n }\n\n // Otherwise, wrap the call to the old navigator.getUserMedia with a Promise\n return new Promise(function(resolve, reject) {\n getUserMedia.call(navigator, constraints, resolve, reject);\n });\n };\n },\n setupMedia() {\n if (navigator.mediaDevices === undefined) {\n navigator.mediaDevices = {};\n }\n\n if (navigator.mediaDevices.getUserMedia === undefined) {\n navigator.mediaDevices.getUserMedia = this.legacyGetUserMediaSupport();\n }\n\n this.testMediaAccess();\n },\n loadCameras() {\n navigator.mediaDevices\n .enumerateDevices()\n .then(deviceInfos => {\n for (let i = 0; i !== deviceInfos.length; ++i) {\n let deviceInfo = deviceInfos[i];\n if (deviceInfo.kind === \"videoinput\") {\n this.cameras.push(deviceInfo);\n }\n }\n })\n .then(() => {\n if (!this.camerasListEmitted) {\n this.$emit(\"cameras\", this.cameras);\n this.camerasListEmitted = true;\n }\n })\n .catch(error => this.$emit(\"notsupported\", error));\n },\n /**\n * change to a different camera stream, like front and back camera on phones\n */\n changeCamera(deviceId) {\n this.stop();\n this.$emit(\"camera-change\", deviceId);\n this.loadCamera(deviceId);\n },\n /**\n * load the stream to the\n */\n loadSrcStream(stream) {\n if (\"srcObject\" in this.$refs.video) {\n // new browsers api\n this.$refs.video.srcObject = stream;\n\n //this.$refs.video.setAttribute('width', this.width);\n //this.$refs.video.setAttribute('height', this.height);\n } else {\n // old broswers\n this.source = window.HTMLMediaElement.srcObject(stream);\n }\n // Emit video start/live event\n this.$refs.video.onloadedmetadata = () => {\n this.$emit(\"video-live\", stream);\n };\n\n this.$emit(\"started\", stream);\n },\n /**\n * stop the selected streamed video to change camera\n */\n stopStreamedVideo(videoElem) {\n let stream = videoElem.srcObject;\n let tracks = stream.getTracks();\n tracks.forEach(track => {\n // stops the video track\n track.stop();\n this.$emit(\"stopped\", stream);\n\n this.$refs.video.srcObject = null;\n this.source = null;\n });\n },\n // Stop the video\n stop() {\n if (this.$refs.video !== null && this.$refs.video.srcObject) {\n this.stopStreamedVideo(this.$refs.video);\n }\n },\n // Start the video\n start() {\n if (this.deviceId) {\n this.loadCamera(this.deviceId);\n }\n },\n /**\n * test access\n */\n testMediaAccess() {\n\n navigator.mediaDevices\n .getUserMedia({ video: {\n width: this.$props.width,\n aspectRatio: {\n exact: this.$props.width / this.$props.height\n }\n }, audio: false})\n .then(stream => this.loadCameras())\n .catch(error => this.$emit(\"error\", error));\n },\n /**\n * load the Camera passed as index!\n */\n loadCamera(device) {\n navigator.mediaDevices\n .getUserMedia({\n video: {\n deviceId: { exact: device },\n width: this.width,\n aspectRatio: {\n exact: this.width / this.height\n }\n },\n audio: false\n })\n .then(stream => this.loadSrcStream(stream))\n .catch(error => this.$emit(\"error\", error));\n },\n capture() {\n return this.getCanvas().toDataURL(this.screenshotFormat);\n },\n getCanvasRaw() {\n return this.ctx.getImageData(0,0,this.canvas.width, this.canvas.height);\n },\n getCanvas() {\n let video = this.$refs.video;\n if (!this.ctx) {\n let canvas = document.createElement(\"canvas\");\n canvas.height = video.height;\n canvas.width = video.width;\n this.canvas = canvas;\n this.ctx = canvas.getContext(\"2d\");\n this.ctx.translate(canvas.width, 0);\n this.ctx.scale(-1, 1);\n }\n\n const { ctx, canvas } = this;\n ctx.clearRect(0, 0, this.width, this.height);\n\n ctx.drawImage(video, 0, 0, this.width, this.height);\n\n\n return canvas;\n }\n }\n };\n</script>\n\n<style scoped>\n video {\n width:100%;\n height: auto;\n /* Flip the video horizontally*/\n -webkit-transform: scaleX(-1);\n transform: scaleX(-1);\n border: 1px solid #6F6F6F;\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/WebCam.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('video',{ref:\"video\",attrs:{\"width\":_vm.width,\"height\":_vm.height,\"src\":_vm.source,\"autoplay\":_vm.autoplay,\"playsinline\":_vm.playsinline}})}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-43507d33\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/WebCam.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-43507d33\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./WebCam.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./WebCam.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./WebCam.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-43507d33\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./WebCam.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-43507d33\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/WebCam.vue\n// module id = null\n// module chunks = ","<template>\n <path v-bind:style=\"{strokeWidth: stroke.width, fill: stroke.fill, stroke: stroke.color}\" :d=\"pathD\"></path>\n</template>\n\n<script>\n export default {\n name: \"svgChartLine\",\n props: [\"d\", \"stroke\"],\n computed: {\n pathD() {\n let path = \"\";\n this.d.values.forEach((point, index) => {\n if (index === 0) {\n path += `M ${point[0]},${point[1]}`;\n } else {\n path += `L${Math.round(point[0] * 100) / 100},${Math.round(point[1]*100)/100}`\n }\n });\n return path;\n }\n }\n }\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/svgChartLine.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('path',{style:({strokeWidth: _vm.stroke.width, fill: _vm.stroke.fill, stroke: _vm.stroke.color}),attrs:{\"d\":_vm.pathD}})}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-33ff9c8d\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/svgChartLine.vue\n// module id = null\n// module chunks = ","<template>\n <svg :style=\"{ background: background}\" xmlns=\"http://www.w3.org/2000/svg\" :view-box.camel=\"viewbox\" :width=\"width\" :height=\"height\">\n <g>\n <svg-chart-line :d=\"line\" :stroke=\"stroke\" v-for=\"(line, index) in lines\" :key=\"index\"></svg-chart-line>\n </g>\n </svg>\n</template>\n\n<script>\n import svgChartLine from '../components/svgChartLine'\n export default {\n name: \"svgChart\",\n components: {\n svgChartLine\n },\n props: [\"lines\", \"black\",\"width\",\"height\"],\n computed: {\n viewbox() {\n return `0 0 ${this.width} ${this.height}`;\n },\n background(){\n return this.black ? '#000000' : '#FFFFFF'\n },\n stroke(){\n return {\n color: this.black ? '#FFFFFF' : '#000000',\n fill: 'none',\n width: '2px'\n }\n }\n }\n }\n</script>\n\n<style>\n\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/svgChart.vue","var normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./svgChartLine.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./svgChartLine.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-33ff9c8d\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./svgChartLine.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/svgChartLine.vue\n// module id = null\n// module chunks = ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{style:({ background: _vm.background}),attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":_vm.viewbox,\"width\":_vm.width,\"height\":_vm.height}},[_c('g',_vm._l((_vm.lines),function(line,index){return _c('svg-chart-line',{key:index,attrs:{\"d\":line,\"stroke\":_vm.stroke}})}),1)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-81f0f9ec\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/svgChart.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-81f0f9ec\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./svgChart.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./svgChart.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./svgChart.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-81f0f9ec\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./svgChart.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/svgChart.vue\n// module id = null\n// module chunks = ","<template>\n <div id=\"app\">\n <div class=\"wrapper\">\n <div class=\"container\">\n <aside id=\"panel\">\n <div class=\"header\">\n <!--<button class=\"btn btn-primary btn-circle\"><i class=\"fa fa-angle-left\"></i></button>-->\n <h2>SquiggleCam</h2>\n </div>\n\n <div class=\"accordion\">\n <div class=\"option\">\n <input type=\"checkbox\" id=\"toggle2\" class=\"toggle\" />\n <label class=\"title\" for=\"toggle2\">Paper Settings</label>\n\n <div class=\"content\">\n <div class=\"paper-chooser\">\n <div class=\"button-group stretch\">\n <label>Color:</label>\n <button v-bind:class=\"{ active: settings.black === false }\" class=\"btn\" @click=\"settings.black = false\">White</button>\n <button class=\"btn\" v-bind:class=\"{ active: settings.black === true }\" @click=\"settings.black = true\">Black</button>\n </div>\n </div>\n\n <div class=\"slider\">\n <span class=\"metric\">\n {{widthInCM}}cm\n </span>\n <span class=\"label\">\n Width\n </span>\n <input type=\"range\" min=\"200\" max=\"500\" v-model=\"settings.width\">\n <div class=\"output\">{{ settings.width }}</div>\n </div>\n\n <div class=\"slider\">\n <span class=\"metric\">\n {{widthInCM}}cm\n </span>\n <span class=\"label\">\n Height\n </span>\n <input type=\"range\" min=\"200\" max=\"500\" v-model=\"settings.height\">\n <div class=\"output\">{{ settings.height }}</div>\n </div>\n </div>\n </div>\n\n <div class=\"option\">\n <input type=\"checkbox\" checked id=\"toggle1\" class=\"toggle\" />\n <label class=\"title\" for=\"toggle1\">\n Image Selection\n </label>\n <div class=\"content\">\n <div class=\"image-inputs\">\n <image-chooser @selected=\"onInputSelected\"></image-chooser>\n\n <div class=\"image-upload\" v-if=\"this.inputType === 'upload'\">\n <croppa\n v-model=\"cropper\"\n :width=\"settings.width/2\"\n :height=\"settings.height/2\"\n :preventWhiteSpace=\"false\"\n :quality=\"2\"\n placeholder-color=\"#000\"\n :remove-button-size=\"22\"\n :placeholder-font-size=\"24\"\n remove-button-color=\"black\"\n canvas-color=\"#FFFFFF\"\n ></croppa>\n <button class=\"btn btn-primary btn-block\" style=\"display:block;\" @click=\"uploadCroppedImage\">Use Image</button>\n </div>\n\n <div class=\"image-webcam\" v-if=\"this.inputType === 'webcam'\">\n <div class=\"video-controls\">\n <select v-model=\"webcam.camera\">\n <option>- Select Device: -</option>\n <option v-for=\"device in webcam.devices\"\n :key=\"device.deviceId\"\n :value=\"device.deviceId\">{{ device.label }}</option>\n </select>\n <button v-if=\"webcam.streaming\"\n type=\"button\"\n class=\"btn btn-sm\"\n @click=\"onStop\"><svg width=\"12\" height=\"12\"><rect width=\"12\" height=\"12\" style=\"fill:rgb(255,0,0)\" />\n </svg></button>\n <button type=\"button\"\n class=\"btn btn-sm\"\n v-if=\"!webcam.streaming\"\n @click=\"onStart\">Start</button>\n </div>\n\n <webcam ref=\"webcam\"\n :device-id=\"webcam.deviceId\"\n :width=\"settings.width\"\n :height=\"settings.height\"\n @started=\"onStarted\"\n @stopped=\"onStopped\"\n @error=\"onError\"\n @cameras=\"onCameras\"\n @camera-change=\"onCameraChange\" />\n\n <button type=\"button\"\n class=\"btn btn-record\"\n v-if=\"webcam.streaming\"\n @click=\"onCapture\">\n <svg height=\"48\" width=\"48\" viewBox=\"0 0 48 48\">\n <circle cx=\"24\" cy=\"24\" r=\"23\" stroke=\"white\" stroke-width=\"1\" fill=\"#D41616\" />\n </svg>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n\n <div class=\"option\">\n <input type=\"checkbox\" id=\"toggle3\" class=\"toggle\" />\n <label class=\"title\" for=\"toggle3\">Image Adjustments</label>\n <div class=\"content\">\n <div class=\"slider\">\n <span class=\"label\">\n Brightness\n </span>\n <input type=\"range\" min=\"-100\" max=\"100\" v-model=\"settings.brightness\">\n <div class=\"output\">{{ settings.brightness }}</div>\n </div>\n\n <div class=\"slider\">\n <span class=\"label\">\n Contrast\n </span>\n <input type=\"range\" min=\"-100\" max=\"100\" v-model=\"settings.contrast\">\n <div class=\"output\">{{ settings.contrast }}</div>\n </div>\n\n <div class=\"slider\">\n <span class=\"label\">\n Min brightness\n </span>\n <input type=\"range\" min=\"0\" max=\"255\" v-model=\"settings.minBrightness\">\n <div class=\"output\">{{ settings.minBrightness }}</div>\n </div>\n\n <div class=\"slider\">\n <span class=\"label\">\n Max brightness\n </span>\n <input type=\"range\" min=\"0\" max=\"255\" v-model=\"settings.maxBrightness\">\n <div class=\"output\">{{ settings.maxBrightness }}</div>\n </div>\n\n </div>\n </div>\n\n <div class=\"option\">\n <input type=\"checkbox\" id=\"toggle4\" class=\"toggle\" />\n <label class=\"title\" for=\"toggle4\">Squiggle Settings</label>\n <div class=\"content\">\n <div class=\"slider\">\n <span class=\"label\">\n Frequency\n </span>\n <input type=\"range\" min=\"5\" max=\"256\" v-model=\"settings.frequency\">\n <div class=\"output\">{{ settings.frequency }}</div>\n </div>\n <div class=\"slider\">\n <span class=\"label\">\n Line Count\n </span>\n <input type=\"range\" min=\"10\" max=\"200\" v-model=\"settings.lineCount\">\n <div class=\"output\">{{ settings.lineCount }}</div>\n </div>\n <div class=\"slider\">\n <span class=\"label\">\n Amplitude\n </span>\n <input type=\"range\" min=\"0.1\" max=\"5\" step=\"0.1\" v-model=\"settings.amplitude\">\n <div class=\"output\">{{ settings.amplitude }}</div>\n </div>\n\n <div class=\"slider\">\n <span class=\"label\">\n Sampling\n </span>\n <input type=\"range\" min=\"0.5\" max=\"3\" step=\"0.2\" v-model=\"settings.spacing\">\n <div class=\"output\">{{ settings.spacing }}</div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"section-title\">\n Download:\n </div>\n <div class=\"actions\">\n <button class=\"btn btn-block\" @click=\"downloadSVG\">\n SVG\n </button>\n </div>\n\n <div class=\"credits\">\n <p>\n Project by <a target=\"_blank\" href=\"http://twitter.com/msurguy\">@msurguy</a> (<span class=\"fa fa-github\"></span><a target=\"_blank\" href=\"http://github.com/msurguy/SquiggleCam\">Source</a>)\n <br>Based upon\n <a target=\"_blank\" href=\"https://github.com/gwygonik/SquiggleDraw\">SquiggleDraw</a>\n </p>\n </div>\n\n </aside>\n <main>\n <div v-if=\"canvasData\" class=\"svg-container\" ref=\"container\">\n <svg-chart ref=\"svgResult\" :black=\"settings.black\" :lines=\"lines\" :width=\"settings.width\" :height=\"settings.height\"></svg-chart>\n </div>\n </main>\n </div>\n </div>\n </div>\n</template>\n\n<script>\n import ImageChooser from './components/ImageChooser'\n import WebCam from './components/WebCam'\n import svgChart from './components/svgChart';\n\n export default {\n name: 'App',\n components: {\n imageChooser: ImageChooser,\n webcam: WebCam,\n svgChart: svgChart\n },\n data() {\n return {\n cropper: {},\n dataUrl: '',\n lines: [],\n inputType: \"upload\",\n settings: {\n black: false,\n frequency: 150,\n amplitude: 1,\n lineCount: 50,\n brightness: 0,\n contrast: 0,\n minBrightness: 0,\n maxBrightness: 255,\n spacing: 1,\n width: 500,\n height: 500\n },\n canvasData: null,\n webcam: {\n img: null,\n camera: null,\n deviceId: null,\n device: null,\n devices: [],\n streaming: false\n },\n };\n },\n\n watch: {\n 'webcam.camera': function(id) {\n this.webcam.deviceId = id;\n },\n 'webcam.devices': function() {\n // Once we have a list select the first one\n let first = this.webcam.devices[0];\n if (first) {\n this.webcam.camera = first.deviceId;\n this.webcam.deviceId = first.deviceId;\n }\n },\n 'settings.frequency': function(){\n this.processImage();\n },\n 'settings.spacing': function(){\n this.processImage();\n },\n 'settings.lineCount': function(){\n this.processImage();\n },\n 'settings.amplitude': function(){\n this.processImage();\n },\n 'settings.minBrightness': function(){\n this.processImage();\n },\n 'settings.maxBrightness': function(){\n this.processImage();\n },\n 'settings.brightness': function(){\n this.processImage();\n },\n 'settings.contrast': function(){\n this.processImage();\n },\n 'settings.black': function(){\n this.processImage();\n },\n 'canvasData': function(){\n this.processImage();\n }\n },\n computed: {\n widthInCM(){\n return Math.round(10*this.settings.width / 38)/10;\n },\n heightInCM(){\n return Math.round(10*this.settings.height / 38)/10;\n }\n },\n methods: {\n downloadSVG(){\n const svgDoctype = '<?xml version=\"1.0\" standalone=\"no\"?>'\n + '<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">';\n\n // serialize our SVG XML to a string.\n const svgString = (new XMLSerializer()).serializeToString(this.$refs.svgResult.$el);\n const blob = new Blob([svgDoctype + svgString], {type: 'image/svg+xml;charset=utf-8'});\n\n /* This portion of script saves the file to local filesystem as a download */\n const svgUrl = URL.createObjectURL(blob);\n const downloadLink = document.createElement(\"a\");\n downloadLink.href = svgUrl;\n downloadLink.download = \"squiggleCam_\" + Date.now() + \".svg\";\n document.body.appendChild(downloadLink);\n downloadLink.click();\n document.body.removeChild(downloadLink);\n },\n uploadCroppedImage() {\n this.cropper.generateBlob((blob) => {\n let canvas = document.createElement(\"canvas\");\n canvas.width = this.settings.width;\n canvas.height = this.settings.height;\n\n const ctx = canvas.getContext('2d');\n let img = new Image();\n\n img.onload = () => {\n ctx.drawImage(img, 0, 0)\n this.canvasData = ctx.getImageData(0, 0, this.settings.width, this.settings.height);\n };\n\n img.src = URL.createObjectURL(blob);\n }, 'image/jpeg', 1)\n },\n processImage() {\n this.$worker.run((data) => {\n // Gather all necessary data from the main thread\n let config = data.config;\n// context.getImageData(0, 0, config.WIDTH, config.HEIGHT);\n const imagePixels = data.image;\n const width = parseInt(config.width);\n const height = parseInt(config.height);\n const contrast = parseInt(config.contrast);\n const brightness = parseInt(config.brightness);\n const lineCount = parseInt(config.lineCount);\n const minBrightness = parseInt(config.minBrightness);\n const maxBrightness = parseInt(config.maxBrightness);\n const spacing = parseFloat(config.spacing);\n const black = config.black;\n\n// Create some defaults for squiggle-point array\n let squiggleData = [];\n let r = 5;\n let a = 0;\n let b;\n let z;\n let currentLine = []; // create empty array for storing x,y coordinate pairs\n let currentVerticalPixelIndex = 0;\n let currentHorizontalPixelIndex = 0;\n let contrastFactor = (259 * (contrast + 255)) / (255 * (259 - contrast)); // This was established through experiments\n let horizontalLineSpacing = Math.floor(height / lineCount); // Number of pixels to advance in vertical direction\n\n// Iterate line by line (top line to bottom line) in increments of horizontalLineSpacing\n //let tmpCounter = 0;\n for (let y = 0; y < height; y+= horizontalLineSpacing) {\n a = 0;\n currentLine = [];\n currentLine.push([0, y]); // Start the line\n\n currentVerticalPixelIndex = y*width; // Because Image Pixel array is of length width * height,\n // starting pixel for each line will be this\n\n // Loop through pixels from left to right within the current line, advancing by increments of config.SPACING\n //console.log(config.spacing, width);\n for (let x = spacing; x < width; x += spacing ) {\n\n currentHorizontalPixelIndex = Math.floor(x + currentVerticalPixelIndex); // Get array position of current pixel\n\n // When there is contrast adjustment, the calculations of brightness values are a bit different\n if (contrast !== 0) {\n // Determine how bright a pixel is, from 0 to 255 by summing three channels (R,G,B) multiplied by some coefficients\n b = (0.2125 * ((contrastFactor * (imagePixels.data[4 * currentHorizontalPixelIndex] - 128) + 128 )\n + brightness)) + (0.7154 * ((contrastFactor * (imagePixels.data[4 * (currentHorizontalPixelIndex + 1)] - 128) + 128)\n + brightness)) + (0.0721 * ((contrastFactor*(imagePixels.data[4*(currentHorizontalPixelIndex+2)]-128)+128) + brightness));\n } else {\n b = (0.2125 * (imagePixels.data[4*currentHorizontalPixelIndex] + brightness)) + (0.7154 * (imagePixels.data[4*(currentHorizontalPixelIndex + 1)]+ brightness)) + (0.0721 * (imagePixels.data[4*(currentHorizontalPixelIndex + 2)] + brightness));\n }\n\n if (black) {\n b = Math.min(255-minBrightness,255-b); // Set minimum line curvature to value set by the user\n z = Math.max(maxBrightness-b,0); // Set maximum line curvature to value set by the user\n } else {\n b = Math.max(minBrightness,b); // Set minimum line curvature to value set by the user\n z = Math.max(maxBrightness-b,0); // Set maximum line curvature to value set by the user\n }\n\n // The magic of the script, determines how high / low the squiggle goes\n r = config.amplitude * z / lineCount;\n\n a += z / config.frequency;\n currentLine.push([x,y + Math.sin(a)*r]);\n }\n //currentLine.push([config.width, y]);\n squiggleData.push(currentLine);\n }\n\n return squiggleData;\n }, [{\n config: Object.assign({}, this.settings),\n image: this.canvasData\n }])\n .then(result => {\n this.lines = [];\n result.forEach( line => {\n this.lines.push({values: line});\n })\n })\n .catch(e => {\n console.error(e)\n })\n },\n onCapture() {\n this.webcam.img = this.$refs.webcam.capture();\n this.canvasData = this.$refs.webcam.getCanvasRaw();\n },\n onStarted(stream) {\n this.webcam.streaming = true;\n },\n onStopped(stream) {\n this.webcam.streaming = false;\n },\n onStop() {\n this.$refs.webcam.stop();\n },\n onStart() {\n this.$refs.webcam.start();\n },\n onError(error) {\n console.log(\"On Error Event\", error);\n },\n onCameras(cameras) {\n this.webcam.devices = cameras;\n console.log(\"On Cameras Event\", cameras);\n },\n onCameraChange(deviceId) {\n this.webcam.deviceId = deviceId;\n this.webcam.camera = deviceId;\n },\n onInputSelected(type) {\n this.inputType = type;\n }\n }\n }\n</script>\n\n<style lang=\"scss\">\n @import './styles/index.scss';\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/App.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('div',{staticClass:\"wrapper\"},[_c('div',{staticClass:\"container\"},[_c('aside',{attrs:{\"id\":\"panel\"}},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"accordion\"},[_c('div',{staticClass:\"option\"},[_c('input',{staticClass:\"toggle\",attrs:{\"type\":\"checkbox\",\"id\":\"toggle2\"}}),_vm._v(\" \"),_c('label',{staticClass:\"title\",attrs:{\"for\":\"toggle2\"}},[_vm._v(\"Paper Settings\")]),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"paper-chooser\"},[_c('div',{staticClass:\"button-group stretch\"},[_c('label',[_vm._v(\"Color:\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn\",class:{ active: _vm.settings.black === false },on:{\"click\":function($event){_vm.settings.black = false}}},[_vm._v(\"White\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn\",class:{ active: _vm.settings.black === true },on:{\"click\":function($event){_vm.settings.black = true}}},[_vm._v(\"Black\")])])]),_vm._v(\" \"),_c('div',{staticClass:\"slider\"},[_c('span',{staticClass:\"metric\"},[_vm._v(\"\\n \"+_vm._s(_vm.widthInCM)+\"cm\\n \")]),_vm._v(\" \"),_c('span',{staticClass:\"label\"},[_vm._v(\"\\n Width\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.settings.width),expression:\"settings.width\"}],attrs:{\"type\":\"range\",\"min\":\"200\",\"max\":\"500\"},domProps:{\"value\":(_vm.settings.width)},on:{\"__r\":function($event){_vm.$set(_vm.settings, \"width\", $event.target.value)}}}),_vm._v(\" \"),_c('div',{staticClass:\"output\"},[_vm._v(_vm._s(_vm.settings.width))])]),_vm._v(\" \"),_c('div',{staticClass:\"slider\"},[_c('span',{staticClass:\"metric\"},[_vm._v(\"\\n \"+_vm._s(_vm.widthInCM)+\"cm\\n \")]),_vm._v(\" \"),_c('span',{staticClass:\"label\"},[_vm._v(\"\\n Height\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.settings.height),expression:\"settings.height\"}],attrs:{\"type\":\"range\",\"min\":\"200\",\"max\":\"500\"},domProps:{\"value\":(_vm.settings.height)},on:{\"__r\":function($event){_vm.$set(_vm.settings, \"height\", $event.target.value)}}}),_vm._v(\" \"),_c('div',{staticClass:\"output\"},[_vm._v(_vm._s(_vm.settings.height))])])])]),_vm._v(\" \"),_c('div',{staticClass:\"option\"},[_c('input',{staticClass:\"toggle\",attrs:{\"type\":\"checkbox\",\"checked\":\"\",\"id\":\"toggle1\"}}),_vm._v(\" \"),_c('label',{staticClass:\"title\",attrs:{\"for\":\"toggle1\"}},[_vm._v(\"\\n Image Selection\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"image-inputs\"},[_c('image-chooser',{on:{\"selected\":_vm.onInputSelected}}),_vm._v(\" \"),(this.inputType === 'upload')?_c('div',{staticClass:\"image-upload\"},[_c('croppa',{attrs:{\"width\":_vm.settings.width/2,\"height\":_vm.settings.height/2,\"preventWhiteSpace\":false,\"quality\":2,\"placeholder-color\":\"#000\",\"remove-button-size\":22,\"placeholder-font-size\":24,\"remove-button-color\":\"black\",\"canvas-color\":\"#FFFFFF\"},model:{value:(_vm.cropper),callback:function ($$v) {_vm.cropper=$$v},expression:\"cropper\"}}),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary btn-block\",staticStyle:{\"display\":\"block\"},on:{\"click\":_vm.uploadCroppedImage}},[_vm._v(\"Use Image\")])],1):_vm._e(),_vm._v(\" \"),(this.inputType === 'webcam')?_c('div',{staticClass:\"image-webcam\"},[_c('div',{staticClass:\"video-controls\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.webcam.camera),expression:\"webcam.camera\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.webcam, \"camera\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',[_vm._v(\"- Select Device: -\")]),_vm._v(\" \"),_vm._l((_vm.webcam.devices),function(device){return _c('option',{key:device.deviceId,domProps:{\"value\":device.deviceId}},[_vm._v(_vm._s(device.label))])})],2),_vm._v(\" \"),(_vm.webcam.streaming)?_c('button',{staticClass:\"btn btn-sm\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.onStop}},[_c('svg',{attrs:{\"width\":\"12\",\"height\":\"12\"}},[_c('rect',{staticStyle:{\"fill\":\"rgb(255,0,0)\"},attrs:{\"width\":\"12\",\"height\":\"12\"}})])]):_vm._e(),_vm._v(\" \"),(!_vm.webcam.streaming)?_c('button',{staticClass:\"btn btn-sm\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.onStart}},[_vm._v(\"Start\")]):_vm._e()]),_vm._v(\" \"),_c('webcam',{ref:\"webcam\",attrs:{\"device-id\":_vm.webcam.deviceId,\"width\":_vm.settings.width,\"height\":_vm.settings.height},on:{\"started\":_vm.onStarted,\"stopped\":_vm.onStopped,\"error\":_vm.onError,\"cameras\":_vm.onCameras,\"camera-change\":_vm.onCameraChange}}),_vm._v(\" \"),(_vm.webcam.streaming)?_c('button',{staticClass:\"btn btn-record\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.onCapture}},[_c('svg',{attrs:{\"height\":\"48\",\"width\":\"48\",\"viewBox\":\"0 0 48 48\"}},[_c('circle',{attrs:{\"cx\":\"24\",\"cy\":\"24\",\"r\":\"23\",\"stroke\":\"white\",\"stroke-width\":\"1\",\"fill\":\"#D41616\"}})])]):_vm._e()],1):_vm._e()],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"option\"},[_c('input',{staticClass:\"toggle\",attrs:{\"type\":\"checkbox\",\"id\":\"toggle3\"}}),_vm._v(\" \"),_c('label',{staticClass:\"title\",attrs:{\"for\":\"toggle3\"}},[_vm._v(\"Image Adjustments\")]),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"slider\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"\\n Brightness\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.settings.brightness),expression:\"settings.brightness\"}],attrs:{\"type\":\"range\",\"min\":\"-100\",\"max\":\"100\"},domProps:{\"value\":(_vm.settings.brightness)},on:{\"__r\":function($event){_vm.$set(_vm.settings, \"brightness\", $event.target.value)}}}),_vm._v(\" \"),_c('div',{staticClass:\"output\"},[_vm._v(_vm._s(_vm.settings.brightness))])]),_vm._v(\" \"),_c('div',{staticClass:\"slider\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"\\n Contrast\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.settings.contrast),expression:\"settings.contrast\"}],attrs:{\"type\":\"range\",\"min\":\"-100\",\"max\":\"100\"},domProps:{\"value\":(_vm.settings.contrast)},on:{\"__r\":function($event){_vm.$set(_vm.settings, \"contrast\", $event.target.value)}}}),_vm._v(\" \"),_c('div',{staticClass:\"output\"},[_vm._v(_vm._s(_vm.settings.contrast))])]),_vm._v(\" \"),_c('div',{staticClass:\"slider\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"\\n Min brightness\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.settings.minBrightness),expression:\"settings.minBrightness\"}],attrs:{\"type\":\"range\",\"min\":\"0\",\"max\":\"255\"},domProps:{\"value\":(_vm.settings.minBrightness)},on:{\"__r\":function($event){_vm.$set(_vm.settings, \"minBrightness\", $event.target.value)}}}),_vm._v(\" \"),_c('div',{staticClass:\"output\"},[_vm._v(_vm._s(_vm.settings.minBrightness))])]),_vm._v(\" \"),_c('div',{staticClass:\"slider\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"\\n Max brightness\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.settings.maxBrightness),expression:\"settings.maxBrightness\"}],attrs:{\"type\":\"range\",\"min\":\"0\",\"max\":\"255\"},domProps:{\"value\":(_vm.settings.maxBrightness)},on:{\"__r\":function($event){_vm.$set(_vm.settings, \"maxBrightness\", $event.target.value)}}}),_vm._v(\" \"),_c('div',{staticClass:\"output\"},[_vm._v(_vm._s(_vm.settings.maxBrightness))])])])]),_vm._v(\" \"),_c('div',{staticClass:\"option\"},[_c('input',{staticClass:\"toggle\",attrs:{\"type\":\"checkbox\",\"id\":\"toggle4\"}}),_vm._v(\" \"),_c('label',{staticClass:\"title\",attrs:{\"for\":\"toggle4\"}},[_vm._v(\"Squiggle Settings\")]),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"slider\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"\\n Frequency\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.settings.frequency),expression:\"settings.frequency\"}],attrs:{\"type\":\"range\",\"min\":\"5\",\"max\":\"256\"},domProps:{\"value\":(_vm.settings.frequency)},on:{\"__r\":function($event){_vm.$set(_vm.settings, \"frequency\", $event.target.value)}}}),_vm._v(\" \"),_c('div',{staticClass:\"output\"},[_vm._v(_vm._s(_vm.settings.frequency))])]),_vm._v(\" \"),_c('div',{staticClass:\"slider\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"\\n Line Count\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.settings.lineCount),expression:\"settings.lineCount\"}],attrs:{\"type\":\"range\",\"min\":\"10\",\"max\":\"200\"},domProps:{\"value\":(_vm.settings.lineCount)},on:{\"__r\":function($event){_vm.$set(_vm.settings, \"lineCount\", $event.target.value)}}}),_vm._v(\" \"),_c('div',{staticClass:\"output\"},[_vm._v(_vm._s(_vm.settings.lineCount))])]),_vm._v(\" \"),_c('div',{staticClass:\"slider\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"\\n Amplitude\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.settings.amplitude),expression:\"settings.amplitude\"}],attrs:{\"type\":\"range\",\"min\":\"0.1\",\"max\":\"5\",\"step\":\"0.1\"},domProps:{\"value\":(_vm.settings.amplitude)},on:{\"__r\":function($event){_vm.$set(_vm.settings, \"amplitude\", $event.target.value)}}}),_vm._v(\" \"),_c('div',{staticClass:\"output\"},[_vm._v(_vm._s(_vm.settings.amplitude))])]),_vm._v(\" \"),_c('div',{staticClass:\"slider\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"\\n Sampling\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.settings.spacing),expression:\"settings.spacing\"}],attrs:{\"type\":\"range\",\"min\":\"0.5\",\"max\":\"3\",\"step\":\"0.2\"},domProps:{\"value\":(_vm.settings.spacing)},on:{\"__r\":function($event){_vm.$set(_vm.settings, \"spacing\", $event.target.value)}}}),_vm._v(\" \"),_c('div',{staticClass:\"output\"},[_vm._v(_vm._s(_vm.settings.spacing))])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"section-title\"},[_vm._v(\"\\n Download:\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_c('button',{staticClass:\"btn btn-block\",on:{\"click\":_vm.downloadSVG}},[_vm._v(\"\\n SVG\\n \")])]),_vm._v(\" \"),_vm._m(1)]),_vm._v(\" \"),_c('main',[(_vm.canvasData)?_c('div',{ref:\"container\",staticClass:\"svg-container\"},[_c('svg-chart',{ref:\"svgResult\",attrs:{\"black\":_vm.settings.black,\"lines\":_vm.lines,\"width\":_vm.settings.width,\"height\":_vm.settings.height}})],1):_vm._e()])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"header\"},[_c('h2',[_vm._v(\"SquiggleCam\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"credits\"},[_c('p',[_vm._v(\"\\n Project by \"),_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"http://twitter.com/msurguy\"}},[_vm._v(\"@msurguy\")]),_vm._v(\" (\"),_c('span',{staticClass:\"fa fa-github\"}),_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"http://github.com/msurguy/SquiggleCam\"}},[_vm._v(\"Source\")]),_vm._v(\")\\n \"),_c('br'),_vm._v(\"Based upon\\n \"),_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"https://github.com/gwygonik/SquiggleDraw\"}},[_vm._v(\"SquiggleDraw\")])])])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6cd2ecce\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6cd2ecce\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"sourceMap\\\":true}!../node_modules/vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n}\nvar normalizeComponent = require(\"!../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6cd2ecce\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = null\n// module chunks = ","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport 'normalize.css'\nimport Vue from 'vue'\nimport App from './App'\nimport VueWorker from 'vue-worker';\nimport Croppa from 'vue-croppa'\n\n//import './styles/index.scss'\n//import 'cropperjs/dist/cropper.css';\n\nimport 'vue-croppa/dist/vue-croppa.css'\n\n\nVue.config.productionTip = false;\n\nVue.use(VueWorker);\nVue.use(Croppa);\n\n\n/* eslint-disable no-new */\nnew Vue({\n el: '#app',\n components: { App },\n template: '<App/>'\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js"],"sourceRoot":""}