├── static └── .gitkeep ├── examples ├── video2.jpg ├── botomazov.jpg └── description.jpg ├── src ├── assets │ └── logo.png ├── styles │ ├── index.css │ └── index.scss ├── main.js ├── components │ ├── svgChartLine.vue │ ├── ImageChooser.vue │ ├── svgChart.vue │ └── WebCam.vue └── App.vue ├── config ├── prod.env.js ├── dev.env.js └── index.js ├── .editorconfig ├── .gitignore ├── .babelrc ├── .postcssrc.js ├── index.html ├── docs ├── static │ ├── js │ │ ├── manifest.8f9e7fc8522af05284a8.js │ │ ├── manifest.8f9e7fc8522af05284a8.js.map │ │ ├── app.2cf2ad8ffdb718b4ceba.js │ │ └── app.2cf2ad8ffdb718b4ceba.js.map │ └── css │ │ ├── app.b806732208896ec46d9b39ac95ae5d4e.css │ │ └── app.b806732208896ec46d9b39ac95ae5d4e.css.map └── index.html ├── LICENSE ├── package.json └── README.md /static/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/video2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/SquiggleCam/HEAD/examples/video2.jpg -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/SquiggleCam/HEAD/src/assets/logo.png -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | module.exports = { 3 | NODE_ENV: '"production"' 4 | } 5 | -------------------------------------------------------------------------------- /examples/botomazov.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/SquiggleCam/HEAD/examples/botomazov.jpg -------------------------------------------------------------------------------- /examples/description.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/msurguy/SquiggleCam/HEAD/examples/description.jpg -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const merge = require('webpack-merge') 3 | const prodEnv = require('./prod.env') 4 | 5 | module.exports = merge(prodEnv, { 6 | NODE_ENV: '"development"' 7 | }) 8 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | npm-debug.log* 4 | yarn-debug.log* 5 | yarn-error.log* 6 | 7 | # Editor directories and files 8 | .idea 9 | .vscode 10 | *.suo 11 | *.ntvs* 12 | *.njsproj 13 | *.sln 14 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "modules": false, 5 | "targets": { 6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] 7 | } 8 | }], 9 | "stage-2" 10 | ], 11 | "plugins": ["transform-vue-jsx", "transform-runtime"] 12 | } 13 | -------------------------------------------------------------------------------- /.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | "postcss-import": {}, 6 | "postcss-url": {}, 7 | // to edit target browsers: use "browserslist" field in package.json 8 | "autoprefixer": {} 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/styles/index.css: -------------------------------------------------------------------------------- 1 | *, 2 | ::before, 3 | ::after { 4 | box-sizing: border-box; 5 | } 6 | 7 | body { 8 | background-color: #fff; 9 | color: #212529; 10 | font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; 11 | font-size: 1rem; 12 | font-weight: 400; 13 | line-height: 1.5; 14 | margin: 0; 15 | } 16 | 17 | .sr-only { 18 | border: 0; 19 | clip: rect(0, 0, 0, 0); 20 | height: 1px; 21 | overflow: hidden; 22 | padding: 0; 23 | position: absolute; 24 | white-space: nowrap; 25 | width: 1px; 26 | } 27 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | // The Vue build version to load with the `import` command 2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias. 3 | import 'normalize.css' 4 | import Vue from 'vue' 5 | import App from './App' 6 | import VueWorker from 'vue-worker'; 7 | import Croppa from 'vue-croppa' 8 | 9 | //import './styles/index.scss' 10 | //import 'cropperjs/dist/cropper.css'; 11 | 12 | import 'vue-croppa/dist/vue-croppa.css' 13 | 14 | 15 | Vue.config.productionTip = false; 16 | 17 | Vue.use(VueWorker); 18 | Vue.use(Croppa); 19 | 20 | 21 | /* eslint-disable no-new */ 22 | new Vue({ 23 | el: '#app', 24 | components: { App }, 25 | template: '' 26 | }); 27 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | SquiggleCam - capture a selfie, turn it into art 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/components/svgChartLine.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 24 | -------------------------------------------------------------------------------- /docs/static/js/manifest.8f9e7fc8522af05284a8.js: -------------------------------------------------------------------------------- 1 | !function(r){var t=window.webpackJsonp;window.webpackJsonp=function(n,u,i){for(var c,f,p,a=0,l=[];a 2 |
3 |
4 | 5 | 6 | 7 |
8 |
9 | 10 | 11 | 28 | 29 | 32 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | SquiggleCam - capture a selfie, turn it into art
-------------------------------------------------------------------------------- /src/components/svgChart.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 34 | 35 | 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Maksim Surguy 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SquiggleCam", 3 | "version": "2.0.0", 4 | "description": "Turn Images into squiggles for CNC machining", 5 | "license": "MIT", 6 | "author": "Maksim Surguy ", 7 | "keywords": ["SquiggleDraw", "CNC", "SVG", "Laser Cutting"], 8 | "scripts": { 9 | "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", 10 | "start": "npm run dev", 11 | "build": "node build/build.js" 12 | }, 13 | "dependencies": { 14 | "normalize.css": "^8.0.1", 15 | "vue": "^2.5.2", 16 | "vue-croppa": "^1.3.8", 17 | "vue-worker": "^1.2.1" 18 | }, 19 | "devDependencies": { 20 | "autoprefixer": "^7.1.2", 21 | "babel-core": "^6.22.1", 22 | "babel-helper-vue-jsx-merge-props": "^2.0.3", 23 | "babel-loader": "^7.1.1", 24 | "babel-plugin-syntax-jsx": "^6.18.0", 25 | "babel-plugin-transform-runtime": "^6.22.0", 26 | "babel-plugin-transform-vue-jsx": "^3.5.0", 27 | "babel-preset-env": "^1.3.2", 28 | "babel-preset-stage-2": "^6.22.0", 29 | "chalk": "^2.0.1", 30 | "copy-webpack-plugin": "^4.0.1", 31 | "css-loader": "^0.28.0", 32 | "extract-text-webpack-plugin": "^3.0.0", 33 | "file-loader": "^1.1.4", 34 | "friendly-errors-webpack-plugin": "^1.6.1", 35 | "html-webpack-plugin": "^2.30.1", 36 | "node-notifier": "^5.1.2", 37 | "node-sass": "^4.11.0", 38 | "optimize-css-assets-webpack-plugin": "^3.2.0", 39 | "ora": "^1.2.0", 40 | "portfinder": "^1.0.13", 41 | "postcss-import": "^11.0.0", 42 | "postcss-loader": "^2.0.8", 43 | "postcss-url": "^7.2.1", 44 | "rimraf": "^2.6.0", 45 | "sass-loader": "^7.1.0", 46 | "semver": "^5.3.0", 47 | "shelljs": "^0.7.6", 48 | "uglifyjs-webpack-plugin": "^1.1.1", 49 | "url-loader": "^0.5.8", 50 | "vue-loader": "^13.3.0", 51 | "vue-style-loader": "^3.0.1", 52 | "vue-template-compiler": "^2.5.2", 53 | "webpack": "^3.6.0", 54 | "webpack-bundle-analyzer": "^2.9.0", 55 | "webpack-dev-server": "^2.9.1", 56 | "webpack-merge": "^4.1.0" 57 | }, 58 | "engines": { 59 | "node": ">= 6.0.0", 60 | "npm": ">= 3.0.0" 61 | }, 62 | "browserslist": [ 63 | "> 1%", 64 | "last 2 versions", 65 | "not ie <= 8" 66 | ] 67 | } 68 | -------------------------------------------------------------------------------- /config/index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | // Template version: 1.3.1 3 | // see http://vuejs-templates.github.io/webpack for documentation. 4 | 5 | const path = require('path') 6 | 7 | module.exports = { 8 | dev: { 9 | 10 | // Paths 11 | assetsSubDirectory: 'static', 12 | assetsPublicPath: '/', 13 | proxyTable: {}, 14 | 15 | // Various Dev Server settings 16 | host: 'localhost', // can be overwritten by process.env.HOST 17 | port: 8888, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined 18 | autoOpenBrowser: false, 19 | errorOverlay: true, 20 | notifyOnErrors: true, 21 | poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions- 22 | 23 | 24 | /** 25 | * Source Maps 26 | */ 27 | 28 | // https://webpack.js.org/configuration/devtool/#development 29 | devtool: 'cheap-module-eval-source-map', 30 | 31 | // If you have problems debugging vue-files in devtools, 32 | // set this to false - it *may* help 33 | // https://vue-loader.vuejs.org/en/options.html#cachebusting 34 | cacheBusting: true, 35 | 36 | cssSourceMap: true 37 | }, 38 | 39 | build: { 40 | // Template for index.html 41 | index: path.resolve(__dirname, '../docs/index.html'), 42 | 43 | // Paths 44 | assetsRoot: path.resolve(__dirname, '../docs'), 45 | assetsSubDirectory: 'static', 46 | assetsPublicPath: 'https://msurguy.github.io/SquiggleCam/', 47 | 48 | /** 49 | * Source Maps 50 | */ 51 | 52 | productionSourceMap: true, 53 | // https://webpack.js.org/configuration/devtool/#production 54 | devtool: '#source-map', 55 | 56 | // Gzip off by default as many popular static hosts such as 57 | // Surge or Netlify already gzip all static assets for you. 58 | // Before setting to `true`, make sure to: 59 | // npm install --save-dev compression-webpack-plugin 60 | productionGzip: false, 61 | productionGzipExtensions: ['js', 'css'], 62 | 63 | // Run the build command with an extra argument to 64 | // View the bundle analyzer report after build finishes: 65 | // `npm run build --report` 66 | // Set to `true` or `false` to always turn it on or off 67 | bundleAnalyzerReport: process.env.npm_config_report 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Description 2 | 3 | Web Based implementation of [SquiggleDraw algorithm](https://github.com/gwygonik/SquiggleDraw ), originally implemented by Gregg Wygonik. 4 | 5 | The online version of this project takes a picture from your webcam and turns it into plotter-drawable, laser-engravable SVG file. 6 | 7 | Here's an example of output image generated with this tool: 8 | 9 | ![Image of SquiggleCam in use](https://raw.githubusercontent.com/msurguy/SquiggleCam/master/examples/description.jpg "Image of SquiggleCam output") 10 | 11 | And here's a video my plotter that uses this tool: 12 | 13 | [![Video of SquiggleCam in use](https://raw.githubusercontent.com/msurguy/SquiggleCam/master/examples/botomazov.jpg)](https://www.youtube.com/watch?v=abBnMcs58ds) 14 | 15 | # Installation and running 16 | 17 | Clone or download this repo, then run this command to get all dependencies installed locally: 18 | ``` 19 | npm install 20 | ``` 21 | 22 | Then, run this command to watch for changes and to launch the HTML page in the browser: 23 | ``` 24 | npm run dev 25 | ``` 26 | 27 | # Algorithm 28 | 29 | The algorithm processes the image in the following way: 30 | 31 | ``` 32 | Retrieve photo as an array of pixels IMAGE 33 | Set desired number of horizontal lines as LINE_COUNT 34 | Set desired number of vertical spacing as SPACING 35 | Set desired line amplitude as AMPLITUDE 36 | Set desired line rotation frequency as FREQUENCY 37 | For y :=0 to image height step image height / LINE_COUNT do 38 | Set startx := 0 39 | Set starty := y 40 | Create a set of coordinates as [startx, starty] 41 | For x := 1 to image width step SPACING do 42 | Get brightness br of the current pixel as average of r,g,b values 43 | Set r := (255 - br) / LINE_COUNT * AMPLITUDE 44 | Set a := (255 - br) / FREQUENCY 45 | Create a set of coordinates as [x, y + Math.sin(a) * r] 46 | Pass the resulting array of coordinates to rendering application 47 | ``` 48 | 49 | # Using the output images 50 | 51 | The output SVG file generated with this tool can be uploaded to SVG -> GCODE (or similar) converter in order to be plotted on a pen plotter or engraved on a laser cutter. 52 | 53 | # Roadmap and todo list 54 | - [ ] Ability to use image URL for input 55 | - [ ] Ability to save settings in local storage as presets (and reuse them later) 56 | - [ ] Ability to switch the squiggle mode (not just horizontal lines): spirals, vertical lines, loops, etc 57 | - [ ] Ability to go back to the previous images from your current "session" 58 | - [ ] Fix bug with the video size when the paper size is modified during video being on 59 | 60 | If you want to implement any of these or contribute - please create an issue and feel free to submit a PR, I would appreciate that. 61 | 62 | # License 63 | MIT license 64 | -------------------------------------------------------------------------------- /docs/static/js/manifest.8f9e7fc8522af05284a8.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///webpack/bootstrap 92f47af35a4ac6e8872e"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","2","exports","module","l","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","p","oe","err","console","error"],"mappings":"aACA,IAAAA,EAAAC,OAAA,aACAA,OAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,EAAAC,KACQD,EAAAN,EAAAQ,OAAoBF,IAC5BF,EAAAJ,EAAAM,GACAG,EAAAL,IACAG,EAAAG,KAAAD,EAAAL,GAAA,IAEAK,EAAAL,GAAA,EAEA,IAAAD,KAAAF,EACAU,OAAAC,UAAAC,eAAAC,KAAAb,EAAAE,KACAY,EAAAZ,GAAAF,EAAAE,IAIA,IADAL,KAAAE,EAAAC,EAAAC,GACAK,EAAAC,QACAD,EAAAS,OAAAT,GAEA,GAAAL,EACA,IAAAI,EAAA,EAAYA,EAAAJ,EAAAM,OAA2BF,IACvCD,EAAAY,IAAAC,EAAAhB,EAAAI,IAGA,OAAAD,GAIA,IAAAc,KAGAV,GACAW,EAAA,GAIA,SAAAH,EAAAd,GAGA,GAAAgB,EAAAhB,GACA,OAAAgB,EAAAhB,GAAAkB,QAGA,IAAAC,EAAAH,EAAAhB,IACAG,EAAAH,EACAoB,GAAA,EACAF,YAUA,OANAN,EAAAZ,GAAAW,KAAAQ,EAAAD,QAAAC,IAAAD,QAAAJ,GAGAK,EAAAC,GAAA,EAGAD,EAAAD,QAKAJ,EAAAO,EAAAT,EAGAE,EAAAQ,EAAAN,EAGAF,EAAAS,EAAA,SAAAL,EAAAM,EAAAC,GACAX,EAAAY,EAAAR,EAAAM,IACAhB,OAAAmB,eAAAT,EAAAM,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAX,EAAAiB,EAAA,SAAAZ,GACA,IAAAM,EAAAN,KAAAa,WACA,WAA2B,OAAAb,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAL,EAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAO,EAAAC,GAAsD,OAAA1B,OAAAC,UAAAC,eAAAC,KAAAsB,EAAAC,IAGtDpB,EAAAqB,EAAA,yCAGArB,EAAAsB,GAAA,SAAAC,GAA8D,MAApBC,QAAAC,MAAAF,GAAoBA","file":"static/js/manifest.8f9e7fc8522af05284a8.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\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 = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(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(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t2: 0\n \t};\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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\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 = \"https://msurguy.github.io/SquiggleCam/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 92f47af35a4ac6e8872e"],"sourceRoot":""} -------------------------------------------------------------------------------- /src/components/WebCam.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 234 | 235 | 245 | -------------------------------------------------------------------------------- /src/styles/index.scss: -------------------------------------------------------------------------------- 1 | //@import url("https://fonts.googleapis.com/css?family=Roboto"); 2 | 3 | $btn-bg: #4d4d4d; 4 | $btn-text-color: #d2d2d2; 5 | 6 | html, 7 | body { 8 | padding: 0; 9 | margin: 0; 10 | background-color: white; 11 | font-family: "Roboto", sans-serif; 12 | color: #d2d2d2; 13 | } 14 | 15 | a { 16 | color: #298bff; 17 | } 18 | 19 | .btn:not(:disabled):not(.disabled) { 20 | cursor: pointer; 21 | } 22 | 23 | [type="reset"], 24 | [type="submit"], 25 | button, 26 | html [type="button"] { 27 | -webkit-appearance: button; 28 | } 29 | 30 | .btn { 31 | background-color: transparent; 32 | color: #fff; 33 | display: inline-block; 34 | font-weight: 400; 35 | text-align: center; 36 | white-space: nowrap; 37 | vertical-align: middle; 38 | -webkit-user-select: none; 39 | -moz-user-select: none; 40 | -ms-user-select: none; 41 | user-select: none; 42 | border: 1px solid transparent; 43 | padding: 0.375rem 0.75rem; 44 | font-size: 1rem; 45 | line-height: 1.5; 46 | border-radius: 0.25rem; 47 | transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, 48 | border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; 49 | //border-radius: 50% 50%; 50 | } 51 | 52 | .btn-primary { 53 | background-color: transparent; 54 | border-color: #fff; 55 | } 56 | 57 | .btn-primary:hover { 58 | color: #fff; 59 | background-color: #0069d9; 60 | border-color: #0062cc; 61 | } 62 | 63 | .btn:focus, 64 | .btn:hover { 65 | text-decoration: none; 66 | } 67 | 68 | .btn-primary.focus, 69 | .btn-primary:focus { 70 | box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); 71 | } 72 | 73 | .btn-primary:not(:disabled):not(.disabled).active:focus, 74 | .btn-primary:not(:disabled):not(.disabled):active:focus, 75 | .show > .btn-primary.dropdown-toggle:focus { 76 | box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); 77 | } 78 | 79 | .btn-primary:not(:disabled):not(.disabled).active, 80 | .btn-primary:not(:disabled):not(.disabled):active, 81 | .show > .btn-primary.dropdown-toggle { 82 | color: #fff; 83 | background-color: #0062cc; 84 | border-color: #005cbf; 85 | } 86 | 87 | .btn.focus, 88 | .btn:focus { 89 | outline: 0; 90 | box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); 91 | } 92 | 93 | .btn-block { 94 | display: block; 95 | width: 100%; 96 | } 97 | 98 | .btn-circle { 99 | width: 36px; 100 | height: 36px; 101 | text-align: center; 102 | padding: 6px 0; 103 | font-size: 1rem; 104 | line-height: 1rem; 105 | border-radius: 50%; 106 | } 107 | 108 | .button-group { 109 | margin: 5px 0; 110 | display: flex; 111 | align-items: center; 112 | 113 | &.stretch > * { 114 | flex: 1; 115 | } 116 | 117 | label { 118 | text-align: left; 119 | } 120 | 121 | .btn { 122 | border-radius: 0; 123 | background-color: $btn-bg; 124 | color: $btn-text-color; 125 | padding: 1px; 126 | font-size: 0.9rem; 127 | 128 | &.active { 129 | background-color: #898989; 130 | } 131 | &.active:hover { 132 | background-color: #bbbbbb; 133 | color: #fff; 134 | } 135 | &.active:active { 136 | background-color: #bbbbbb; 137 | } 138 | &:hover { 139 | background-color: #6b6b6b; 140 | } 141 | &:active { 142 | background-color: #6b6b6b; 143 | } 144 | } 145 | .btn + .btn:not(:last-child) { 146 | border-right: none; 147 | } 148 | 149 | .btn:first-of-type { 150 | border-right: 0; 151 | border-radius: 4px 0 0 4px; 152 | } 153 | .btn:last-child { 154 | border-radius: 0 4px 4px 0; 155 | } 156 | } 157 | 158 | .btn-sm { 159 | padding: 2px 5px; 160 | font-size: 0.8rem; 161 | line-height: 0.8rem; 162 | } 163 | 164 | .wrapper { 165 | display: flex; 166 | width: 100vw; 167 | min-height: 100vh; 168 | flex-direction: column; 169 | } 170 | 171 | .container { 172 | display: flex; 173 | flex: 1; 174 | } 175 | 176 | aside { 177 | background-image: linear-gradient(-90deg, #2e2e2e 0%, #353535 100%); 178 | box-shadow: 0 0 5px 0 #0f0f0f; 179 | flex: 0 0 270px; 180 | //transform: translate(0px, 0px); 181 | padding: 15px; 182 | text-align: center; 183 | position: relative; 184 | display: flex; 185 | flex-direction: column; 186 | //height: 100%; 187 | //min-height: ; 188 | //transition: transform 0.3s ease-in-out; 189 | // 190 | //&.hidden { 191 | // transform: translate(-300px, 0); 192 | //} 193 | } 194 | 195 | main { 196 | flex: 1; 197 | position: -webkit-sticky; /* Safari */ 198 | position: sticky; 199 | top: 0; 200 | align-self: flex-start; 201 | 202 | .svg-container { 203 | padding: 10px; 204 | } 205 | } 206 | 207 | input[type="range"] { 208 | -webkit-appearance: none; 209 | width: 100%; 210 | margin: 7.5px 0; 211 | background: transparent; 212 | } 213 | input[type="range"]:focus { 214 | outline: none; 215 | } 216 | input[type="range"]::-webkit-slider-runnable-track { 217 | width: 100%; 218 | height: 5px; 219 | cursor: pointer; 220 | background-color: #717171; 221 | // background-image: linear-gradient(-270deg, #fad961 0%, #f76b1c 100%); 222 | //box-shadow: 0px 0px 0px #6f2200, 0px 0px 0px #892a00; 223 | //background: #f76b1c; 224 | //border-radius: 5px; 225 | //border: 1px solid #18d501; 226 | } 227 | input[type="range"]::-webkit-slider-thumb { 228 | //box-shadow: 1.6px 1.6px 2.5px #cccccc, 0px 0px 1.6px #d9d9d9; 229 | border: 1px solid #b3b3b3; 230 | height: 20px; 231 | width: 20px; 232 | border-radius: 10px; 233 | background: #298bff; 234 | cursor: pointer; 235 | -webkit-appearance: none; 236 | margin-top: -7.5px; 237 | } 238 | input[type="range"]:hover::-webkit-slider-runnable-track { 239 | //background: #f8813e; 240 | background-image: linear-gradient(-270deg, #fad961 0%, #f76b1c 100%); 241 | } 242 | input[type="range"]:focus::-webkit-slider-runnable-track { 243 | background-image: linear-gradient(-270deg, #fad961 0%, #f76b1c 100%); 244 | } 245 | input[type="range"]::-moz-range-track { 246 | width: 100%; 247 | height: 5px; 248 | cursor: pointer; 249 | background: #f76b1c; 250 | background-image: linear-gradient(-270deg, #fad961 0%, #f76b1c 100%); 251 | border-radius: 5px; 252 | } 253 | input[type="range"]::-moz-range-thumb { 254 | box-shadow: 1.6px 1.6px 2.5px #cccccc, 0px 0px 1.6px #d9d9d9; 255 | border: 1px solid #b3b3b3; 256 | height: 20px; 257 | width: 20px; 258 | border-radius: 10px; 259 | background: #298bff; 260 | cursor: pointer; 261 | } 262 | input[type="range"]::-ms-track { 263 | width: 100%; 264 | height: 5px; 265 | cursor: pointer; 266 | background: transparent; 267 | border-color: transparent; 268 | color: transparent; 269 | } 270 | input[type="range"]::-ms-fill-lower { 271 | background: #e75908; 272 | border: none; 273 | border-radius: 2px; 274 | //box-shadow: 0px 0px 0px #6f2200, 0px 0px 0px #892a00; 275 | } 276 | input[type="range"]::-ms-fill-upper { 277 | background: #f76b1c; 278 | border: none; 279 | border-radius: 2px; 280 | //box-shadow: 0px 0px 0px #6f2200, 0px 0px 0px #892a00; 281 | } 282 | input[type="range"]::-ms-thumb { 283 | box-shadow: 1.6px 1.6px 2.5px #cccccc, 0px 0px 1.6px #d9d9d9; 284 | border: 1px solid #b3b3b3; 285 | height: 20px; 286 | width: 20px; 287 | border-radius: 10px; 288 | background: #298bff; 289 | cursor: pointer; 290 | } 291 | input[type="range"]:focus::-ms-fill-lower { 292 | background: #f76b1c; 293 | } 294 | input[type="range"]:focus::-ms-fill-upper { 295 | background: #f8813e; 296 | } 297 | 298 | .image-inputs { 299 | margin-bottom: 15px; 300 | } 301 | 302 | .actions { 303 | display: flex; 304 | justify-content: space-between; 305 | padding-bottom: 20px; 306 | .btn { 307 | background-color: $btn-bg; 308 | color: $btn-text-color; 309 | width: 80px; 310 | 311 | &:hover { 312 | background-color: #6b6b6b; 313 | } 314 | 315 | } 316 | 317 | .btn-block{ 318 | width: 100%; 319 | display: block; 320 | } 321 | } 322 | 323 | .section-title { 324 | margin-top: 15px; 325 | margin-bottom: 15px; 326 | text-transform: uppercase; 327 | } 328 | 329 | .slider { 330 | position: relative; 331 | display: flex; 332 | margin-bottom: 7px; 333 | 334 | .label { 335 | position: absolute; 336 | top: 8px; 337 | line-height: 18px; 338 | right: 0; 339 | font-family: Monaco, monospace; 340 | font-size: 12px; 341 | color: #d2d2d2; 342 | text-align: right; 343 | } 344 | 345 | .metric { 346 | position: absolute; 347 | top: 8px; 348 | line-height: 18px; 349 | left: 0; 350 | font-family: Monaco, monospace; 351 | font-size: 12px; 352 | color: #d2d2d2; 353 | text-align: left; 354 | } 355 | 356 | input[type="range"] { 357 | margin-top: 35px; 358 | } 359 | 360 | .output { 361 | margin-top: 28px; 362 | margin-left: 15px; 363 | height: 20px; 364 | width: 34px; 365 | text-align: right; 366 | background-color: #1d1d1d; 367 | color: #d2d2d2; 368 | font-family: monaco, Consolas, Lucida Console, monospace; 369 | font-size: 14px; 370 | line-height: 20px; 371 | } 372 | } 373 | 374 | .header { 375 | display: flex; 376 | justify-content: space-between; 377 | align-items: center; 378 | h2 { 379 | margin-top: 5px; 380 | } 381 | } 382 | 383 | .video-controls { 384 | margin: 10px 0; 385 | display: flex; 386 | justify-content: space-between; 387 | align-content: space-between; 388 | } 389 | 390 | .image-webcam { 391 | position: relative; 392 | margin-bottom: 30px; 393 | 394 | .btn-record { 395 | position: absolute; 396 | padding: 0; 397 | margin: 0; 398 | bottom: 0; 399 | left: 50%; 400 | transform: translate(-50%,27px); 401 | 402 | } 403 | } 404 | 405 | .toggle { 406 | display: none; 407 | } 408 | 409 | .option { 410 | position: relative; 411 | margin-bottom: 2px; 412 | } 413 | 414 | .title { 415 | text-transform: uppercase; 416 | text-align: left; 417 | background-color: $btn-bg; 418 | color: $btn-text-color; 419 | padding: 10px; 420 | } 421 | 422 | .title, 423 | .content { 424 | backface-visibility: hidden; 425 | transform: translateZ(0); 426 | transition: all 0.3s; 427 | display: block; 428 | } 429 | 430 | .title:before { 431 | content: ''; 432 | border-style: solid; 433 | border-width: 2px 2px 0 0; 434 | position: absolute; 435 | right: 15px; 436 | top: 15px; 437 | width: 12px; 438 | height: 12px; 439 | transform: rotate(45deg); 440 | transform-origin: 75% 20%; 441 | transition: transform 0.3s; 442 | } 443 | 444 | .content { 445 | max-height: 0; 446 | overflow: hidden; 447 | } 448 | 449 | .toggle:checked { 450 | & + .title + .content { 451 | max-height: 600px; 452 | } 453 | & + .title:before { 454 | transform: rotate(135deg) !important; 455 | } 456 | } 457 | 458 | .credits { 459 | margin-top: auto; 460 | } 461 | -------------------------------------------------------------------------------- /docs/static/css/app.b806732208896ec46d9b39ac95ae5d4e.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}body,html{padding:0;margin:0;background-color:#fff;font-family:Roboto,sans-serif;color:#d2d2d2}a{color:#298bff}.btn:not(:disabled):not(.disabled){cursor:pointer}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}.btn{color:#fff;display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.btn,.btn-primary{background-color:transparent}.btn-primary{border-color:#fff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn:focus,.btn:hover{text-decoration:none}.btn-primary.focus,.btn-primary:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn-block{display:block;width:100%}.btn-circle{width:36px;height:36px;text-align:center;padding:6px 0;font-size:1rem;line-height:1rem;border-radius:50%}.button-group{margin:5px 0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.button-group.stretch>*{-ms-flex:1;flex:1}.button-group label{text-align:left}.button-group .btn{border-radius:0;background-color:#4d4d4d;color:#d2d2d2;padding:1px;font-size:.9rem}.button-group .btn.active{background-color:#898989}.button-group .btn.active:hover{background-color:#bbb;color:#fff}.button-group .btn.active:active{background-color:#bbb}.button-group .btn:active,.button-group .btn:hover{background-color:#6b6b6b}.button-group .btn+.btn:not(:last-child){border-right:none}.button-group .btn:first-of-type{border-right:0;border-radius:4px 0 0 4px}.button-group .btn:last-child{border-radius:0 4px 4px 0}.btn-sm{padding:2px 5px;font-size:.8rem;line-height:.8rem}.wrapper{width:100vw;min-height:100vh;-ms-flex-direction:column;flex-direction:column}.container,.wrapper{display:-ms-flexbox;display:flex}.container{-ms-flex:1;flex:1}aside{background-image:linear-gradient(-90deg,#2e2e2e,#353535);box-shadow:0 0 5px 0 #0f0f0f;-ms-flex:0 0 270px;flex:0 0 270px;padding:15px;text-align:center;position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}main{-ms-flex:1;flex:1;position:-webkit-sticky;position:sticky;top:0;-ms-flex-item-align:start;align-self:flex-start}main .svg-container{padding:10px}input[type=range]{-webkit-appearance:none;width:100%;margin:7.5px 0;background:transparent}input[type=range]:focus{outline:none}input[type=range]::-webkit-slider-runnable-track{width:100%;height:5px;cursor:pointer;background-color:#717171}input[type=range]::-webkit-slider-thumb{border:1px solid #b3b3b3;height:20px;width:20px;border-radius:10px;background:#298bff;cursor:pointer;-webkit-appearance:none;margin-top:-7.5px}input[type=range]:focus::-webkit-slider-runnable-track,input[type=range]:hover::-webkit-slider-runnable-track{background-image:linear-gradient(-270deg,#fad961,#f76b1c)}input[type=range]::-moz-range-track{width:100%;height:5px;cursor:pointer;background:#f76b1c;background-image:linear-gradient(-270deg,#fad961,#f76b1c);border-radius:5px}input[type=range]::-moz-range-thumb{box-shadow:1.6px 1.6px 2.5px #ccc,0 0 1.6px #d9d9d9;border:1px solid #b3b3b3;height:20px;width:20px;border-radius:10px;background:#298bff;cursor:pointer}input[type=range]::-ms-track{width:100%;height:5px;cursor:pointer;background:transparent;border-color:transparent;color:transparent}input[type=range]::-ms-fill-lower{background:#e75908;border:none;border-radius:2px}input[type=range]::-ms-fill-upper{background:#f76b1c;border:none;border-radius:2px}input[type=range]::-ms-thumb{box-shadow:1.6px 1.6px 2.5px #ccc,0 0 1.6px #d9d9d9;border:1px solid #b3b3b3;height:20px;width:20px;border-radius:10px;background:#298bff;cursor:pointer}input[type=range]:focus::-ms-fill-lower{background:#f76b1c}input[type=range]:focus::-ms-fill-upper{background:#f8813e}.image-inputs{margin-bottom:15px}.actions{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding-bottom:20px}.actions .btn{background-color:#4d4d4d;color:#d2d2d2;width:80px}.actions .btn:hover{background-color:#6b6b6b}.actions .btn-block{width:100%;display:block}.section-title{margin-top:15px;margin-bottom:15px;text-transform:uppercase}.slider{position:relative;display:-ms-flexbox;display:flex;margin-bottom:7px}.slider .label{right:0;text-align:right}.slider .label,.slider .metric{position:absolute;top:8px;line-height:18px;font-family:Monaco,monospace;font-size:12px;color:#d2d2d2}.slider .metric{left:0;text-align:left}.slider input[type=range]{margin-top:35px}.slider .output{margin-top:28px;margin-left:15px;height:20px;width:34px;text-align:right;background-color:#1d1d1d;color:#d2d2d2;font-family:monaco,Consolas,Lucida Console,monospace;font-size:14px;line-height:20px}.header{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.header h2{margin-top:5px}.video-controls{margin:10px 0;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-line-pack:justify;align-content:space-between}.image-webcam{position:relative;margin-bottom:30px}.image-webcam .btn-record{position:absolute;padding:0;margin:0;bottom:0;left:50%;transform:translate(-50%,27px)}.toggle{display:none}.option{position:relative;margin-bottom:2px}.title{text-transform:uppercase;text-align:left;background-color:#4d4d4d;color:#d2d2d2;padding:10px}.content,.title{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0);transition:all .3s;display:block}.title:before{content:"";border-style:solid;border-width:2px 2px 0 0;position:absolute;right:15px;top:15px;width:12px;height:12px;transform:rotate(45deg);transform-origin:75% 20%;transition:transform .3s}.content{max-height:0;overflow:hidden}.toggle:checked+.title+.content{max-height:600px}.toggle:checked+.title:before{transform:rotate(135deg)!important}.credits{margin-top:auto}video[data-v-43507d33]{width:100%;height:auto;transform:scaleX(-1);border:1px solid #6f6f6f}.sk-fading-circle{position:absolute}.sk-fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-fading-circle .sk-circle .sk-circle-indicator{display:block;margin:0 auto;width:15%;height:15%;border-radius:100%;animation:sk-circleFadeDelay 1s infinite ease-in-out both}.sk-fading-circle .sk-circle2{transform:rotate(30deg)}.sk-fading-circle .sk-circle3{transform:rotate(60deg)}.sk-fading-circle .sk-circle4{transform:rotate(90deg)}.sk-fading-circle .sk-circle5{transform:rotate(120deg)}.sk-fading-circle .sk-circle6{transform:rotate(150deg)}.sk-fading-circle .sk-circle7{transform:rotate(180deg)}.sk-fading-circle .sk-circle8{transform:rotate(210deg)}.sk-fading-circle .sk-circle9{transform:rotate(240deg)}.sk-fading-circle .sk-circle10{transform:rotate(270deg)}.sk-fading-circle .sk-circle11{transform:rotate(300deg)}.sk-fading-circle .sk-circle12{transform:rotate(330deg)}.sk-fading-circle .sk-circle2 .sk-circle-indicator{animation-delay:-.91667s}.sk-fading-circle .sk-circle3 .sk-circle-indicator{animation-delay:-.83333s}.sk-fading-circle .sk-circle4 .sk-circle-indicator{animation-delay:-.75s}.sk-fading-circle .sk-circle5 .sk-circle-indicator{animation-delay:-.66667s}.sk-fading-circle .sk-circle6 .sk-circle-indicator{animation-delay:-.58333s}.sk-fading-circle .sk-circle7 .sk-circle-indicator{animation-delay:-.5s}.sk-fading-circle .sk-circle8 .sk-circle-indicator{animation-delay:-.41667s}.sk-fading-circle .sk-circle9 .sk-circle-indicator{animation-delay:-.33333s}.sk-fading-circle .sk-circle10 .sk-circle-indicator{animation-delay:-.25s}.sk-fading-circle .sk-circle11 .sk-circle-indicator{animation-delay:-.16667s}.sk-fading-circle .sk-circle12 .sk-circle-indicator{animation-delay:-.08333s}@keyframes sk-circleFadeDelay{0%,39%,to{opacity:0}40%{opacity:1}}.croppa-container{display:inline-block;cursor:pointer;position:relative;font-size:0;-ms-flex-item-align:start;align-self:flex-start;background-color:#e6e6e6}.croppa-container,.croppa-container canvas{transition:all .3s}.croppa-container:hover{opacity:.7}.croppa-container.croppa--dropzone{box-shadow:inset 0 0 10px #333}.croppa-container.croppa--dropzone canvas{opacity:.5}.croppa-container.croppa--disabled-cc{cursor:default}.croppa-container.croppa--disabled-cc:hover{opacity:1}.croppa-container.croppa--has-target{cursor:move}.croppa-container.croppa--has-target:hover{opacity:1}.croppa-container.croppa--has-target.croppa--disabled-mz{cursor:default}.croppa-container.croppa--disabled{cursor:not-allowed}.croppa-container.croppa--disabled:hover{opacity:1}.croppa-container.croppa--passive{cursor:default}.croppa-container.croppa--passive:hover{opacity:1}.croppa-container svg.icon-remove{position:absolute;background:#fff;border-radius:50%;filter:drop-shadow(-2px 2px 2px rgba(0,0,0,.7));z-index:10;cursor:pointer;border:2px solid #fff} 2 | /*# sourceMappingURL=app.b806732208896ec46d9b39ac95ae5d4e.css.map */ -------------------------------------------------------------------------------- /docs/static/js/app.2cf2ad8ffdb718b4ceba.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([1],{"/+sM":function(t,e){},NHnr:function(t,e,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0});s("uMhA");var i=s("7+uW"),a=s("woOf"),n=s.n(a),r={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"image-chooser"},[s("div",{staticClass:"button-group stretch"},[s("label",[t._v("Input:")]),t._v(" "),s("button",{staticClass:"btn",class:{active:"upload"===t.selectedItem},attrs:{id:"upload",disabled:t.disabled},on:{click:t.toggle}},[t._v("File")]),t._v(" "),s("button",{staticClass:"btn",class:{active:"webcam"===t.selectedItem},attrs:{id:"webcam",disabled:t.disabled},on:{click:t.toggle}},[t._v("WebCam")])])])},staticRenderFns:[]};var o=s("VU/8")({name:"ImageChooser",data:function(){return{selectedItem:"upload",disabled:!1}},methods:{toggle:function(t){this.selectedItem=t.target.id,this.$emit("selected",this.selectedItem)}}},r,!1,function(t){s("/+sM")},"data-v-4692bf3a",null).exports,c=s("//Fk"),l=s.n(c),d={name:"WebCam",props:{width:{type:[Number,String],default:"100%"},height:{type:[Number,String],default:200},autoplay:{type:Boolean,default:!0},screenshotFormat:{type:String,default:"image/jpeg"},deviceId:{type:String,default:null},playsinline:{type:Boolean,default:!0}},data:function(){return{source:null,canvas:null,camerasListEmitted:!1,cameras:[]}},watch:{deviceId:function(t){this.changeCamera(t)}},mounted:function(){this.setupMedia()},beforeDestroy:function(){this.stop()},methods:{legacyGetUserMediaSupport:function(){return function(t){var e=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia||navigator.oGetUserMedia;return e?new l.a(function(s,i){e.call(navigator,t,s,i)}):l.a.reject(new Error("getUserMedia is not implemented in this browser"))}},setupMedia:function(){void 0===navigator.mediaDevices&&(navigator.mediaDevices={}),void 0===navigator.mediaDevices.getUserMedia&&(navigator.mediaDevices.getUserMedia=this.legacyGetUserMediaSupport()),this.testMediaAccess()},loadCameras:function(){var t=this;navigator.mediaDevices.enumerateDevices().then(function(e){for(var s=0;s!==e.length;++s){var i=e[s];"videoinput"===i.kind&&t.cameras.push(i)}}).then(function(){t.camerasListEmitted||(t.$emit("cameras",t.cameras),t.camerasListEmitted=!0)}).catch(function(e){return t.$emit("notsupported",e)})},changeCamera:function(t){this.stop(),this.$emit("camera-change",t),this.loadCamera(t)},loadSrcStream:function(t){var e=this;"srcObject"in this.$refs.video?this.$refs.video.srcObject=t:this.source=window.HTMLMediaElement.srcObject(t),this.$refs.video.onloadedmetadata=function(){e.$emit("video-live",t)},this.$emit("started",t)},stopStreamedVideo:function(t){var e=this,s=t.srcObject;s.getTracks().forEach(function(t){t.stop(),e.$emit("stopped",s),e.$refs.video.srcObject=null,e.source=null})},stop:function(){null!==this.$refs.video&&this.$refs.video.srcObject&&this.stopStreamedVideo(this.$refs.video)},start:function(){this.deviceId&&this.loadCamera(this.deviceId)},testMediaAccess:function(){var t=this;navigator.mediaDevices.getUserMedia({video:{width:this.$props.width,aspectRatio:{exact:this.$props.width/this.$props.height}},audio:!1}).then(function(e){return t.loadCameras()}).catch(function(e){return t.$emit("error",e)})},loadCamera:function(t){var e=this;navigator.mediaDevices.getUserMedia({video:{deviceId:{exact:t},width:this.width,aspectRatio:{exact:this.width/this.height}},audio:!1}).then(function(t){return e.loadSrcStream(t)}).catch(function(t){return e.$emit("error",t)})},capture:function(){return this.getCanvas().toDataURL(this.screenshotFormat)},getCanvasRaw:function(){return this.ctx.getImageData(0,0,this.canvas.width,this.canvas.height)},getCanvas:function(){var t=this.$refs.video;if(!this.ctx){var e=document.createElement("canvas");e.height=t.height,e.width=t.width,this.canvas=e,this.ctx=e.getContext("2d"),this.ctx.translate(e.width,0),this.ctx.scale(-1,1)}var s=this.ctx,i=this.canvas;return s.clearRect(0,0,this.width,this.height),s.drawImage(t,0,0,this.width,this.height),i}}},u={render:function(){var t=this.$createElement;return(this._self._c||t)("video",{ref:"video",attrs:{width:this.width,height:this.height,src:this.source,autoplay:this.autoplay,playsinline:this.playsinline}})},staticRenderFns:[]};var v=s("VU/8")(d,u,!1,function(t){s("mxzp")},"data-v-43507d33",null).exports,h={name:"svgChartLine",props:["d","stroke"],computed:{pathD:function(){var t="";return this.d.values.forEach(function(e,s){t+=0===s?"M "+e[0]+","+e[1]:"L"+Math.round(100*e[0])/100+","+Math.round(100*e[1])/100}),t}}},g={render:function(){var t=this.$createElement;return(this._self._c||t)("path",{style:{strokeWidth:this.stroke.width,fill:this.stroke.fill,stroke:this.stroke.color},attrs:{d:this.pathD}})},staticRenderFns:[]},m={name:"svgChart",components:{svgChartLine:s("VU/8")(h,g,!1,null,null,null).exports},props:["lines","black","width","height"],computed:{viewbox:function(){return"0 0 "+this.width+" "+this.height},background:function(){return this.black?"#000000":"#FFFFFF"},stroke:function(){return{color:this.black?"#FFFFFF":"#000000",fill:"none",width:"2px"}}}},p={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("svg",{style:{background:t.background},attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:t.viewbox,width:t.width,height:t.height}},[s("g",t._l(t.lines,function(e,i){return s("svg-chart-line",{key:i,attrs:{d:e,stroke:t.stroke}})}),1)])},staticRenderFns:[]};var f={name:"App",components:{imageChooser:o,webcam:v,svgChart:s("VU/8")(m,p,!1,function(t){s("Q3wT")},null,null).exports},data:function(){return{cropper:{},dataUrl:"",lines:[],inputType:"upload",settings:{black:!1,frequency:150,amplitude:1,lineCount:50,brightness:0,contrast:0,minBrightness:0,maxBrightness:255,spacing:1,width:500,height:500},canvasData:null,webcam:{img:null,camera:null,deviceId:null,device:null,devices:[],streaming:!1}}},watch:{"webcam.camera":function(t){this.webcam.deviceId=t},"webcam.devices":function(){var t=this.webcam.devices[0];t&&(this.webcam.camera=t.deviceId,this.webcam.deviceId=t.deviceId)},"settings.frequency":function(){this.processImage()},"settings.spacing":function(){this.processImage()},"settings.lineCount":function(){this.processImage()},"settings.amplitude":function(){this.processImage()},"settings.minBrightness":function(){this.processImage()},"settings.maxBrightness":function(){this.processImage()},"settings.brightness":function(){this.processImage()},"settings.contrast":function(){this.processImage()},"settings.black":function(){this.processImage()},canvasData:function(){this.processImage()}},computed:{widthInCM:function(){return Math.round(10*this.settings.width/38)/10},heightInCM:function(){return Math.round(10*this.settings.height/38)/10}},methods:{downloadSVG:function(){var t=(new XMLSerializer).serializeToString(this.$refs.svgResult.$el),e=new Blob([''+t],{type:"image/svg+xml;charset=utf-8"}),s=URL.createObjectURL(e),i=document.createElement("a");i.href=s,i.download="squiggleCam_"+Date.now()+".svg",document.body.appendChild(i),i.click(),document.body.removeChild(i)},uploadCroppedImage:function(){var t=this;this.cropper.generateBlob(function(e){var s=document.createElement("canvas");s.width=t.settings.width,s.height=t.settings.height;var i=s.getContext("2d"),a=new Image;a.onload=function(){i.drawImage(a,0,0),t.canvasData=i.getImageData(0,0,t.settings.width,t.settings.height)},a.src=URL.createObjectURL(e)},"image/jpeg",1)},processImage:function(){var t=this;this.$worker.run(function(t){for(var e=t.config,s=t.image,i=parseInt(e.width),a=parseInt(e.height),n=parseInt(e.contrast),r=parseInt(e.brightness),o=parseInt(e.lineCount),c=parseInt(e.minBrightness),l=parseInt(e.maxBrightness),d=parseFloat(e.spacing),u=e.black,v=[],h=5,g=0,m=void 0,p=void 0,f=[],_=0,b=0,w=259*(n+255)/(255*(259-n)),C=Math.floor(a/o),y=0;y"})},Q3wT:function(t,e){},mxzp:function(t,e){},"n0/Z":function(t,e){},toYN:function(t,e){},uMhA:function(t,e){}},["NHnr"]); 2 | //# sourceMappingURL=app.2cf2ad8ffdb718b4ceba.js.map -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 220 | 221 | 470 | 471 | 474 | -------------------------------------------------------------------------------- /docs/static/css/app.b806732208896ec46d9b39ac95ae5d4e.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["app.b806732208896ec46d9b39ac95ae5d4e.css"],"names":[],"mappings":"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","file":"app.b806732208896ec46d9b39ac95ae5d4e.css","sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n -webkit-box-sizing: content-box;\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n -webkit-box-sizing: border-box;\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n -webkit-box-sizing: border-box;\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n\nhtml,\nbody {\n padding: 0;\n margin: 0;\n background-color: white;\n font-family: \"Roboto\", sans-serif;\n color: #d2d2d2;\n}\na {\n color: #298bff;\n}\n.btn:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n[type=\"reset\"],\n[type=\"submit\"],\nbutton,\nhtml [type=\"button\"] {\n -webkit-appearance: button;\n}\n.btn {\n background-color: transparent;\n color: #fff;\n display: inline-block;\n font-weight: 400;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n}\n.btn-primary {\n background-color: transparent;\n border-color: #fff;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n.btn:focus,\n.btn:hover {\n text-decoration: none;\n}\n.btn-primary.focus,\n.btn-primary:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n.btn-primary:not(:disabled):not(.disabled).active:focus,\n.btn-primary:not(:disabled):not(.disabled):active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n.btn-primary:not(:disabled):not(.disabled).active,\n.btn-primary:not(:disabled):not(.disabled):active,\n.show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #0062cc;\n border-color: #005cbf;\n}\n.btn.focus,\n.btn:focus {\n outline: 0;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-circle {\n width: 36px;\n height: 36px;\n text-align: center;\n padding: 6px 0;\n font-size: 1rem;\n line-height: 1rem;\n border-radius: 50%;\n}\n.button-group {\n margin: 5px 0;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n.button-group.stretch > * {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n}\n.button-group label {\n text-align: left;\n}\n.button-group .btn {\n border-radius: 0;\n background-color: #4d4d4d;\n color: #d2d2d2;\n padding: 1px;\n font-size: 0.9rem;\n}\n.button-group .btn.active {\n background-color: #898989;\n}\n.button-group .btn.active:hover {\n background-color: #bbbbbb;\n color: #fff;\n}\n.button-group .btn.active:active {\n background-color: #bbbbbb;\n}\n.button-group .btn:hover {\n background-color: #6b6b6b;\n}\n.button-group .btn:active {\n background-color: #6b6b6b;\n}\n.button-group .btn + .btn:not(:last-child) {\n border-right: none;\n}\n.button-group .btn:first-of-type {\n border-right: 0;\n border-radius: 4px 0 0 4px;\n}\n.button-group .btn:last-child {\n border-radius: 0 4px 4px 0;\n}\n.btn-sm {\n padding: 2px 5px;\n font-size: 0.8rem;\n line-height: 0.8rem;\n}\n.wrapper {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n width: 100vw;\n min-height: 100vh;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n.container {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n}\naside {\n background-image: -webkit-gradient(linear, right top, left top, from(#2e2e2e), to(#353535));\n background-image: linear-gradient(-90deg, #2e2e2e 0%, #353535 100%);\n -webkit-box-shadow: 0 0 5px 0 #0f0f0f;\n box-shadow: 0 0 5px 0 #0f0f0f;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 270px;\n flex: 0 0 270px;\n padding: 15px;\n text-align: center;\n position: relative;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\nmain {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n position: -webkit-sticky;\n /* Safari */\n position: sticky;\n top: 0;\n -ms-flex-item-align: start;\n align-self: flex-start;\n}\nmain .svg-container {\n padding: 10px;\n}\ninput[type=\"range\"] {\n -webkit-appearance: none;\n width: 100%;\n margin: 7.5px 0;\n background: transparent;\n}\ninput[type=\"range\"]:focus {\n outline: none;\n}\ninput[type=\"range\"]::-webkit-slider-runnable-track {\n width: 100%;\n height: 5px;\n cursor: pointer;\n background-color: #717171;\n}\ninput[type=\"range\"]::-webkit-slider-thumb {\n border: 1px solid #b3b3b3;\n height: 20px;\n width: 20px;\n border-radius: 10px;\n background: #298bff;\n cursor: pointer;\n -webkit-appearance: none;\n margin-top: -7.5px;\n}\ninput[type=\"range\"]:hover::-webkit-slider-runnable-track {\n background-image: -webkit-gradient(linear, left top, right top, from(#fad961), to(#f76b1c));\n background-image: linear-gradient(-270deg, #fad961 0%, #f76b1c 100%);\n}\ninput[type=\"range\"]:focus::-webkit-slider-runnable-track {\n background-image: -webkit-gradient(linear, left top, right top, from(#fad961), to(#f76b1c));\n background-image: linear-gradient(-270deg, #fad961 0%, #f76b1c 100%);\n}\ninput[type=\"range\"]::-moz-range-track {\n width: 100%;\n height: 5px;\n cursor: pointer;\n background: #f76b1c;\n background-image: linear-gradient(-270deg, #fad961 0%, #f76b1c 100%);\n border-radius: 5px;\n}\ninput[type=\"range\"]::-moz-range-thumb {\n box-shadow: 1.6px 1.6px 2.5px #cccccc, 0px 0px 1.6px #d9d9d9;\n border: 1px solid #b3b3b3;\n height: 20px;\n width: 20px;\n border-radius: 10px;\n background: #298bff;\n cursor: pointer;\n}\ninput[type=\"range\"]::-ms-track {\n width: 100%;\n height: 5px;\n cursor: pointer;\n background: transparent;\n border-color: transparent;\n color: transparent;\n}\ninput[type=\"range\"]::-ms-fill-lower {\n background: #e75908;\n border: none;\n border-radius: 2px;\n}\ninput[type=\"range\"]::-ms-fill-upper {\n background: #f76b1c;\n border: none;\n border-radius: 2px;\n}\ninput[type=\"range\"]::-ms-thumb {\n box-shadow: 1.6px 1.6px 2.5px #cccccc, 0px 0px 1.6px #d9d9d9;\n border: 1px solid #b3b3b3;\n height: 20px;\n width: 20px;\n border-radius: 10px;\n background: #298bff;\n cursor: pointer;\n}\ninput[type=\"range\"]:focus::-ms-fill-lower {\n background: #f76b1c;\n}\ninput[type=\"range\"]:focus::-ms-fill-upper {\n background: #f8813e;\n}\n.image-inputs {\n margin-bottom: 15px;\n}\n.actions {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n padding-bottom: 20px;\n}\n.actions .btn {\n background-color: #4d4d4d;\n color: #d2d2d2;\n width: 80px;\n}\n.actions .btn:hover {\n background-color: #6b6b6b;\n}\n.actions .btn-block {\n width: 100%;\n display: block;\n}\n.section-title {\n margin-top: 15px;\n margin-bottom: 15px;\n text-transform: uppercase;\n}\n.slider {\n position: relative;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n margin-bottom: 7px;\n}\n.slider .label {\n position: absolute;\n top: 8px;\n line-height: 18px;\n right: 0;\n font-family: Monaco, monospace;\n font-size: 12px;\n color: #d2d2d2;\n text-align: right;\n}\n.slider .metric {\n position: absolute;\n top: 8px;\n line-height: 18px;\n left: 0;\n font-family: Monaco, monospace;\n font-size: 12px;\n color: #d2d2d2;\n text-align: left;\n}\n.slider input[type=\"range\"] {\n margin-top: 35px;\n}\n.slider .output {\n margin-top: 28px;\n margin-left: 15px;\n height: 20px;\n width: 34px;\n text-align: right;\n background-color: #1d1d1d;\n color: #d2d2d2;\n font-family: monaco, Consolas, Lucida Console, monospace;\n font-size: 14px;\n line-height: 20px;\n}\n.header {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n.header h2 {\n margin-top: 5px;\n}\n.video-controls {\n margin: 10px 0;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-line-pack: justify;\n align-content: space-between;\n}\n.image-webcam {\n position: relative;\n margin-bottom: 30px;\n}\n.image-webcam .btn-record {\n position: absolute;\n padding: 0;\n margin: 0;\n bottom: 0;\n left: 50%;\n -webkit-transform: translate(-50%, 27px);\n transform: translate(-50%, 27px);\n}\n.toggle {\n display: none;\n}\n.option {\n position: relative;\n margin-bottom: 2px;\n}\n.title {\n text-transform: uppercase;\n text-align: left;\n background-color: #4d4d4d;\n color: #d2d2d2;\n padding: 10px;\n}\n.title,\n.content {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-transform: translateZ(0);\n transform: translateZ(0);\n -webkit-transition: all 0.3s;\n transition: all 0.3s;\n display: block;\n}\n.title:before {\n content: '';\n border-style: solid;\n border-width: 2px 2px 0 0;\n position: absolute;\n right: 15px;\n top: 15px;\n width: 12px;\n height: 12px;\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n -webkit-transform-origin: 75% 20%;\n transform-origin: 75% 20%;\n -webkit-transition: -webkit-transform 0.3s;\n transition: -webkit-transform 0.3s;\n transition: transform 0.3s;\n transition: transform 0.3s, -webkit-transform 0.3s;\n}\n.content {\n max-height: 0;\n overflow: hidden;\n}\n.toggle:checked + .title + .content {\n max-height: 600px;\n}\n.toggle:checked + .title:before {\n -webkit-transform: rotate(135deg) !important;\n transform: rotate(135deg) !important;\n}\n.credits {\n margin-top: auto;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvideo[data-v-43507d33] {\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sk-fading-circle {\n position: absolute; }\n .sk-fading-circle .sk-circle {\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0; }\n .sk-fading-circle .sk-circle .sk-circle-indicator {\n display: block;\n margin: 0 auto;\n width: 15%;\n height: 15%;\n border-radius: 100%;\n -webkit-animation: sk-circleFadeDelay 1s infinite ease-in-out both;\n animation: sk-circleFadeDelay 1s infinite ease-in-out both; }\n .sk-fading-circle .sk-circle2 {\n -webkit-transform: rotate(30deg);\n transform: rotate(30deg); }\n .sk-fading-circle .sk-circle3 {\n -webkit-transform: rotate(60deg);\n transform: rotate(60deg); }\n .sk-fading-circle .sk-circle4 {\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg); }\n .sk-fading-circle .sk-circle5 {\n -webkit-transform: rotate(120deg);\n transform: rotate(120deg); }\n .sk-fading-circle .sk-circle6 {\n -webkit-transform: rotate(150deg);\n transform: rotate(150deg); }\n .sk-fading-circle .sk-circle7 {\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg); }\n .sk-fading-circle .sk-circle8 {\n -webkit-transform: rotate(210deg);\n transform: rotate(210deg); }\n .sk-fading-circle .sk-circle9 {\n -webkit-transform: rotate(240deg);\n transform: rotate(240deg); }\n .sk-fading-circle .sk-circle10 {\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg); }\n .sk-fading-circle .sk-circle11 {\n -webkit-transform: rotate(300deg);\n transform: rotate(300deg); }\n .sk-fading-circle .sk-circle12 {\n -webkit-transform: rotate(330deg);\n transform: rotate(330deg); }\n .sk-fading-circle .sk-circle2 .sk-circle-indicator {\n -webkit-animation-delay: -0.91667s;\n animation-delay: -0.91667s; }\n .sk-fading-circle .sk-circle3 .sk-circle-indicator {\n -webkit-animation-delay: -0.83333s;\n animation-delay: -0.83333s; }\n .sk-fading-circle .sk-circle4 .sk-circle-indicator {\n -webkit-animation-delay: -0.75s;\n animation-delay: -0.75s; }\n .sk-fading-circle .sk-circle5 .sk-circle-indicator {\n -webkit-animation-delay: -0.66667s;\n animation-delay: -0.66667s; }\n .sk-fading-circle .sk-circle6 .sk-circle-indicator {\n -webkit-animation-delay: -0.58333s;\n animation-delay: -0.58333s; }\n .sk-fading-circle .sk-circle7 .sk-circle-indicator {\n -webkit-animation-delay: -0.5s;\n animation-delay: -0.5s; }\n .sk-fading-circle .sk-circle8 .sk-circle-indicator {\n -webkit-animation-delay: -0.41667s;\n animation-delay: -0.41667s; }\n .sk-fading-circle .sk-circle9 .sk-circle-indicator {\n -webkit-animation-delay: -0.33333s;\n animation-delay: -0.33333s; }\n .sk-fading-circle .sk-circle10 .sk-circle-indicator {\n -webkit-animation-delay: -0.25s;\n animation-delay: -0.25s; }\n .sk-fading-circle .sk-circle11 .sk-circle-indicator {\n -webkit-animation-delay: -0.16667s;\n animation-delay: -0.16667s; }\n .sk-fading-circle .sk-circle12 .sk-circle-indicator {\n -webkit-animation-delay: -0.08333s;\n animation-delay: -0.08333s; }\n @-webkit-keyframes sk-circleFadeDelay {\n 0%,\n 39%,\n 100% {\n opacity: 0; }\n 40% {\n opacity: 1; } }\n @keyframes sk-circleFadeDelay {\n 0%,\n 39%,\n 100% {\n opacity: 0; }\n 40% {\n opacity: 1; } }\n .croppa-container {\n display: inline-block;\n cursor: pointer;\n -webkit-transition: all 0.3s;\n transition: all 0.3s;\n position: relative;\n font-size: 0;\n -ms-flex-item-align: start;\n align-self: flex-start;\n background-color: #e6e6e6;\n}\n .croppa-container canvas {\n -webkit-transition: all 0.3s;\n transition: all 0.3s;\n}\n .croppa-container:hover {\n opacity: 0.7;\n}\n .croppa-container.croppa--dropzone {\n -webkit-box-shadow: inset 0 0 10px #333;\n box-shadow: inset 0 0 10px #333;\n}\n .croppa-container.croppa--dropzone canvas {\n opacity: 0.5;\n}\n .croppa-container.croppa--disabled-cc {\n cursor: default;\n}\n .croppa-container.croppa--disabled-cc:hover {\n opacity: 1;\n}\n .croppa-container.croppa--has-target {\n cursor: move;\n}\n .croppa-container.croppa--has-target:hover {\n opacity: 1;\n}\n .croppa-container.croppa--has-target.croppa--disabled-mz {\n cursor: default;\n}\n .croppa-container.croppa--disabled {\n cursor: not-allowed;\n}\n .croppa-container.croppa--disabled:hover {\n opacity: 1;\n}\n .croppa-container.croppa--passive {\n cursor: default;\n}\n .croppa-container.croppa--passive:hover {\n opacity: 1;\n}\n .croppa-container svg.icon-remove {\n position: absolute;\n background: #fff;\n border-radius: 50%;\n -webkit-filter: drop-shadow(-2px 2px 2px rgba(0,0,0,0.7));\n filter: drop-shadow(-2px 2px 2px rgba(0,0,0,0.7));\n z-index: 10;\n cursor: pointer;\n border: 2px solid #fff;\n}\n\n"]} -------------------------------------------------------------------------------- /docs/static/js/app.2cf2ad8ffdb718b4ceba.js.map: -------------------------------------------------------------------------------- 1 | {"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 = ","\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/ImageChooser.vue","\n\n\n\n\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 = ","\n\n\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 = ","\n\n\n\n\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 = ","\n\n\n\n\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: ''\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js"],"sourceRoot":""} --------------------------------------------------------------------------------