1
0
Fork 0
mirror of https://github.com/voltbonn/profile-picture-generator.git synced 2024-12-23 00:05:09 +00:00
profile.volt.link/static/js/main.21ae1c71.chunk.js.map
2021-01-23 12:51:53 +00:00

1 line
No EOL
34 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

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

{"version":3,"sources":["frames lazy /^/.//.*/.png$/ groupOptions: {} namespace object","FrameChooser.js","Editor.js","HeaderImage.svg","App.js","reportWebVitals.js","index.js"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","keys","Object","module","exports","FrameChooser","onFrameChange","useState","frames","setFrames","choosenFrame","setChoosenFrame","useEffect","a","all","frame_filename","name","src","new_frames","default","loadFrames","handleImageChoosing","useCallback","event","target","dataset","className","frame","frame_src_path","isChoosen","alt","data-src","onClick","clamp","value","min","max","Math","Editor","onChange","background","backgroundRatio","foreground","editorRef","useRef","backgroundImageRef","hammer_got_init","set_hammer_got_init","hammertime","set_hammertime","hamster","set_hamster","x","set_x","y","set_y","add_x","set_add_x","add_y","set_add_y","scale","set_scale","photoWidth","setPhotoWidth","photoHeight","setPhotoHeight","editorWidth","setEditorWidth","editorHeight","setEditorHeight","rangeMinX","set_rangeMinX","rangeMinY","set_rangeMinY","rangeMaxX","set_rangeMaxX","rangeMaxY","set_rangeMaxY","current","new_editorWidth","offsetWidth","new_editorHeight","offsetHeight","new_photoWidth","new_photoHeight","imageWidth","imageHeight","imageScale","containerWidth","containerHeight","updateRange","handleMove","prev_x","prev_y","new_x","deltaX","new_y","deltaY","isFinal","handleScale","delta","preventDefault","new_scale","element","addEventListener","Hammer","direction","Hamster","on","wheel","off","unwheel","ref","data-x","data-y","data-scale","style","width","height","transform","frameSize","App","frameURL","setFrameURL","originalPhoto","setOriginalPhoto","originalPhotoRation","setOriginalPhotoRation","orientation","set_orientation","set_width","set_height","cords","setCords","handleFrameURL","newFrameURL","handleCordsChange","console","log","handleReadFile","file","reader","FileReader","onload","reader_event","img","Image","callback","view","DataView","result","getUint16","length","byteLength","offset","marker","getUint32","little","tags","i","readAsArrayBuffer","slice","getOrientation","new_orientation","original_ration","readAsDataURL","handleImage","files_event","files","onDrop","acceptedFiles","handleDownload","canvas","document","createElement","ctx","getContext","alpha","translate","rotate","PI","width_scaled","height_scaled","drawImage","pngUrl","toDataURL","mergeImages","b64","data","body","appendChild","download","href","click","remove","trigger_download","useDropzone","accept","maxFiles","noKeyboard","isDragActive","getRootProps","HeaderImage","tabIndex","outline","type","display","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.21ae1c71.chunk.js","sourcesContent":["var map = {\n\t\"./ProfileFrame B&G Bars.png\": [\n\t\t28,\n\t\t4\n\t],\n\t\"./ProfileFrame Blue Bars.png\": [\n\t\t29,\n\t\t5\n\t],\n\t\"./ProfileFrame Green Bars.png\": [\n\t\t30,\n\t\t6\n\t],\n\t\"./ProfileFrame Mixed Bars.png\": [\n\t\t31,\n\t\t7\n\t],\n\t\"./ProfileFrame Purple.png\": [\n\t\t32,\n\t\t8\n\t],\n\t\"./ProfileFrame R&Y Bars.png\": [\n\t\t33,\n\t\t9\n\t],\n\t\"./ProfileFrame Red Bars.png\": [\n\t\t34,\n\t\t10\n\t],\n\t\"./ProfileFrame White Bars.png\": [\n\t\t35,\n\t\t11\n\t],\n\t\"./ProfileFrame Yellow Bars.png\": [\n\t\t36,\n\t\t12\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 26;\nmodule.exports = webpackAsyncContext;","import { useState, useEffect, useCallback } from 'react'\n\nfunction FrameChooser({onFrameChange}) {\n const [frames, setFrames] = useState([])\n const [choosenFrame, setChoosenFrame] = useState(null)\n\n useEffect(() => {\n async function loadFrames(){\n Promise.all(\n [\n 'ProfileFrame Purple',\n 'ProfileFrame Yellow Bars',\n 'ProfileFrame Red Bars',\n 'ProfileFrame Blue Bars',\n 'ProfileFrame Green Bars',\n 'ProfileFrame White Bars',\n 'ProfileFrame Mixed Bars',\n 'ProfileFrame R&Y Bars',\n 'ProfileFrame B&G Bars',\n ]\n .map(async frame_filename => {\n return {\n name: frame_filename,\n src: await import(`./frames/${frame_filename}.png`),\n }\n })\n )\n .then(new_frames => {\n setFrames(new_frames)\n setChoosenFrame(new_frames[0].src.default)\n })\n }\n loadFrames()\n }, [])\n\n const handleImageChoosing = useCallback(event => {\n setChoosenFrame(event.target.dataset.src)\n }, [setChoosenFrame])\n\n useEffect(() => {\n onFrameChange(choosenFrame)\n }, [onFrameChange, choosenFrame])\n\n return (\n <div className=\"FrameChooser\">\n <h2>Choose a frame:</h2>\n {\n frames.map(frame => {\n const frame_src_path = frame.src.default\n const isChoosen = choosenFrame === frame_src_path\n return <img alt={frame.name} key={frame_src_path} data-src={frame_src_path} src={frame_src_path} className={isChoosen ? 'frame choosen' : 'frame'} onClick={handleImageChoosing}/>\n })\n } \n </div>\n )\n}\n\nexport default FrameChooser\n","import { useEffect, useRef, useState, useCallback } from 'react'\n\nimport Hammer from 'hammerjs'\nimport Hamster from 'hamsterjs'\n\nfunction updateRange(imageWidth, imageHeight, imageScale, containerWidth, containerHeight) {\n\n const rangeX = Math.max(0, (imageWidth * imageScale) - containerWidth)\n const rangeY = Math.max(0, (imageHeight * imageScale) - containerHeight)\n\n const rangeMaxX = (rangeX / 2)\n const rangeMinX = 0 - rangeMaxX\n\n const rangeMaxY = (rangeY / 2)\n const rangeMinY = 0 - rangeMaxY\n\n return {\n rangeMaxX,\n rangeMinX,\n rangeMaxY,\n rangeMinY,\n }\n}\n\nfunction clamp(value, min, max) {\n return Math.min(Math.max(min, value), max)\n}\n\n\n\nlet minScale = 1;\nlet maxScale = 8;\n\n\n\nfunction Editor({ onChange, background, backgroundRatio, foreground }) {\n const editorRef = useRef(null)\n const backgroundImageRef = useRef(null)\n\n const [hammer_got_init, set_hammer_got_init] = useState(false)\n\n const [hammertime, set_hammertime] = useState(null)\n const [hamster, set_hamster] = useState(null)\n\n const [x, set_x] = useState(0)\n const [y, set_y] = useState(0)\n const [add_x, set_add_x] = useState(0)\n const [add_y, set_add_y] = useState(0)\n const [scale, set_scale] = useState(1)\n // const [add_scale, set_add_scale] = useState(0)\n\n const [photoWidth, setPhotoWidth] = useState(300)\n const [photoHeight, setPhotoHeight] = useState(300)\n const [editorWidth, setEditorWidth] = useState(300)\n const [editorHeight, setEditorHeight] = useState(300)\n\n const [rangeMinX, set_rangeMinX] = useState(0)\n const [rangeMinY, set_rangeMinY] = useState(0)\n const [rangeMaxX, set_rangeMaxX] = useState(0)\n const [rangeMaxY, set_rangeMaxY] = useState(0)\n\n useEffect(() => {\n if (!!onChange) {\n onChange({ x, y, scale})\n }\n }, [onChange, x, y, scale])\n\n useEffect(() => {\n if (!!editorRef && !!editorRef.current) {\n const new_editorWidth = editorRef.current.offsetWidth\n const new_editorHeight = editorRef.current.offsetHeight\n setEditorHeight(new_editorHeight)\n setEditorWidth(new_editorWidth)\n\n let new_photoWidth = 1\n let new_photoHeight = 1\n if (backgroundRatio < 1) {\n new_photoWidth = 1 / backgroundRatio\n } else if (backgroundRatio > 1) {\n new_photoHeight = 1 * backgroundRatio\n }\n\n setPhotoWidth(new_photoWidth)\n setPhotoHeight(new_photoHeight)\n }\n }, [\n backgroundRatio,\n foreground,\n ])\n\n useEffect(() => {\n const {\n rangeMinX,\n rangeMinY,\n rangeMaxX,\n rangeMaxY,\n } = updateRange(photoWidth * editorWidth, photoHeight * editorHeight, scale, editorWidth, editorHeight)\n\n set_rangeMinX(rangeMinX)\n set_rangeMinY(rangeMinY)\n set_rangeMaxX(rangeMaxX)\n set_rangeMaxY(rangeMaxY)\n }, [\n photoWidth,\n photoHeight,\n editorWidth,\n editorHeight,\n scale,\n ])\n\n useEffect(() => {\n set_x(0)\n set_y(0)\n set_add_x(0)\n set_add_y(0)\n set_scale(1)\n }, [background])\n\n const handleMove = useCallback(event => {\n const prev_x = event.target.dataset.x * 1\n const prev_y = event.target.dataset.y * 1\n\n const new_x = clamp(prev_x + event.deltaX, rangeMinX, rangeMaxX)\n const new_y = clamp(prev_y + event.deltaY, rangeMinY, rangeMaxY)\n\n if (event.isFinal) {\n set_x(new_x || 0)\n set_y(new_y || 0)\n set_add_x(0)\n set_add_y(0)\n }else{\n set_add_x(new_x - prev_x || 0)\n set_add_y(new_y - prev_y || 0)\n }\n }, [\n rangeMinX,\n rangeMinY,\n rangeMaxX,\n rangeMaxY,\n ])\n\n const handleScale = useCallback((event, delta, deltaX, deltaY) => {\n event.preventDefault()\n\n const prev_scale = event.target.dataset.scale * 1\n const new_scale = clamp(prev_scale + delta / 200, minScale, maxScale)\n set_scale(new_scale || 1)\n\n const prev_x = event.target.dataset.x * 1\n const prev_y = event.target.dataset.y * 1\n set_x(clamp(prev_x, rangeMinX, rangeMaxX) || 0)\n set_y(clamp(prev_y, rangeMinY, rangeMaxY) || 0)\n }, [\n rangeMinX,\n rangeMinY,\n rangeMaxX,\n rangeMaxY,\n ])\n\n useEffect(() => {\n if (!hammer_got_init && !!editorRef && !!editorRef.current) {\n const element = editorRef.current\n\n element.addEventListener('mousedown', event => {\n event.preventDefault()\n // event.stopPropagation()\n }, false)\n element.addEventListener(\"touchstart\", event => {\n event.preventDefault()\n // event.stopPropagation()\n }, false)\n element.addEventListener(\"touchend\", event => {\n event.preventDefault()\n // event.stopPropagation()\n }, false)\n element.addEventListener(\"touchmove\", event => {\n event.preventDefault()\n // event.stopPropagation()\n }, false)\n\n set_hammertime(new Hammer(element, {\n direction: 'DIRECTION_ALL',\n }))\n\n set_hamster(Hamster(element))\n\n set_hammer_got_init(true)\n }\n }, [editorRef, hammer_got_init])\n\n useEffect(() => {\n if (!!hammertime && !!hamster && hammer_got_init && !!editorRef && !!editorRef.current) {\n hammertime.on('pan', handleMove)\n hamster.wheel(handleScale)\n\n return function () {\n hammertime.off('pan', handleMove)\n hamster.unwheel()\n }\n }\n }, [editorRef, handleMove, handleScale, hammer_got_init, hammertime, hamster])\n\n return (\n <div\n className=\"Editor\"\n ref={editorRef}\n data-x={x}\n data-y={y}\n data-scale={scale}\n >\n <img\n src={background}\n ref={backgroundImageRef}\n alt=\"\"\n className=\"background\"\n style={{\n width: (photoWidth*100)+'%',\n height: (photoHeight*100)+'%',\n transform: `translate3d(calc(-50% + ${x + add_x}px), calc(-50% + ${y + add_y}px), 0) scale(${scale},${scale})`,\n }}\n />\n <img\n src={foreground}\n alt=\"\"\n className=\"foreground\"\n />\n </div>\n )\n}\n\nexport default Editor\n","export default __webpack_public_path__ + \"static/media/HeaderImage.1f39a672.svg\";","import { useState, useCallback } from 'react'\nimport './App.css'\nimport { useDropzone } from 'react-dropzone'\nimport FrameChooser from './FrameChooser.js'\nimport Editor from './Editor.js'\nimport HeaderImage from './HeaderImage.svg'\n\nimport mergeImages from 'merge-images'\n\nconst frameSize = 1080\n\nfunction getOrientation(file, callback) {\n // Source: http://stackoverflow.com/a/32490603\n // (With some modifications: I just made the code fit the style-guide.)\n const reader = new FileReader()\n\n reader.onload = function (event) {\n const view = new DataView(event.target.result)\n\n if (view.getUint16(0, false) !== 0xFFD8) {\n return callback(-2)\n }\n\n const length = view.byteLength\n let offset = 2\n\n while (offset < length) {\n const marker = view.getUint16(offset, false)\n offset += 2\n\n if (marker === 0xFFE1) {\n if (view.getUint32(offset += 2, false) !== 0x45786966) {\n return callback(-1)\n }\n const little = view.getUint16(offset += 6, false) === 0x4949\n offset += view.getUint32(offset + 4, little)\n const tags = view.getUint16(offset, little)\n offset += 2\n\n for (var i = 0; i < tags; i++) {\n if (view.getUint16(offset + (i * 12), little) === 0x0112) {\n return callback(view.getUint16(offset + (i * 12) + 8, little))\n }\n }\n } else if ((marker & 0xFF00) !== 0xFF00) {\n break\n } else {\n offset += view.getUint16(offset, false)\n }\n }\n return callback(-1)\n }\n\n reader.readAsArrayBuffer(file.slice(0, 64 * 1024))\n}\n\nfunction trigger_download(name, data){\n const a = document.createElement('a')\n document.body.appendChild(a)\n // a.target = '_blank'\n a.download = name\n a.href = data\n a.click()\n a.remove()\n}\n\nfunction App() {\n const [frameURL, setFrameURL] = useState(null)\n const [originalPhoto, setOriginalPhoto] = useState(null)\n const [originalPhotoRation, setOriginalPhotoRation] = useState(1)\n const [orientation, set_orientation] = useState(null)\n\n\n // const [combinedImage, set_combinedImage] = useState(null)\n\n const [width, set_width] = useState(0)\n const [height, set_height] = useState(0)\n\n const [cords, setCords] = useState({x:0, y:0, scale:1})\n\n const handleFrameURL = useCallback(newFrameURL => {\n setFrameURL(newFrameURL)\n }, [setFrameURL])\n\n const handleCordsChange = useCallback(({x, y, scale}) => {\n console.log({ x, y, scale })\n setCords({ x, y, scale })\n }, [])\n\n const handleReadFile = useCallback(file => {\n if (!(!!file)) {\n return;\n }\n\n const reader = new FileReader()\n reader.onload = reader_event => {\n const img = new Image()\n img.onload = function () {\n let width, height;\n if (img.width < img.height) {\n height = (img.height / img.width) * frameSize\n width = frameSize\n } else {\n height = frameSize\n width = (img.width / img.height) * frameSize\n }\n\n getOrientation(file, new_orientation => {\n let original_ration = 1\n // use the correct image orientation\n switch (new_orientation) {\n // Source: https://stackoverflow.com/a/30242954/2387277\n // Source: https://stackoverflow.com/questions/19463126/how-to-draw-photo-with-correct-orientation-in-canvas-after-capture-photo-by-usin\n case 2:\n // horizontal flip\n original_ration = height / width\n break\n case 3:\n // 180° rotate left\n original_ration = height / width\n break\n case 4:\n // vertical flip\n original_ration = height / width\n break\n case 5:\n // vertical flip + 90 rotate right\n original_ration = width / height\n break\n case 6:\n // 90° rotate right\n original_ration = width / height\n break\n case 7:\n // horizontal flip + 90 rotate right\n original_ration = width / height\n break\n case 8:\n // 90° rotate left\n original_ration = width / height\n break\n default:\n original_ration = height / width\n break\n }\n\n set_width(width)\n set_height(height)\n setOriginalPhoto(reader_event.target.result)\n set_orientation(new_orientation)\n setOriginalPhotoRation(original_ration)\n })\n }\n img.src = reader_event.target.result\n }\n reader.readAsDataURL(file)\n }, [])\n\n const handleImage = useCallback(files_event => {\n handleReadFile(files_event.target.files[0])\n }, [handleReadFile])\n\n const onDrop = useCallback(acceptedFiles => {\n handleReadFile(acceptedFiles[0])\n }, [handleReadFile])\n\n const handleDownload = useCallback(() => {\n const img = new Image()\n img.onload = function () {\n const canvas = document.createElement('canvas')\n canvas.width = frameSize\n canvas.height = frameSize\n\n const ctx = canvas.getContext('2d', { alpha: true })\n\n // use the correct image orientation\n switch (orientation) {\n // Source: https://stackoverflow.com/a/30242954/2387277\n // Source: https://stackoverflow.com/questions/19463126/how-to-draw-photo-with-correct-orientation-in-canvas-after-capture-photo-by-usin\n case 2:\n // horizontal flip\n ctx.translate(canvas.width, 0)\n ctx.scale(-1, 1)\n break\n case 3:\n // 180° rotate left\n ctx.translate(canvas.width, canvas.height)\n ctx.rotate(Math.PI)\n break\n case 4:\n // vertical flip\n ctx.translate(0, canvas.height)\n ctx.scale(1, -1)\n break\n case 5:\n // vertical flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI)\n ctx.scale(1, -1)\n break\n case 6:\n // 90° rotate right\n ctx.rotate(0.5 * Math.PI)\n ctx.translate(0, -canvas.height)\n break\n case 7:\n // horizontal flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI)\n ctx.translate(canvas.width, -canvas.height)\n ctx.scale(-1, 1)\n break\n case 8:\n // 90° rotate left\n ctx.rotate(-0.5 * Math.PI)\n ctx.translate(-canvas.width, 0)\n break\n default:\n break\n }\n\n\n const width_scaled = width * cords.scale\n const height_scaled = height * cords.scale\n\n ctx.drawImage(\n img,\n cords.x * 3.5 + (frameSize - width_scaled) * 0.5,\n cords.y * 3.5 + (frameSize - height_scaled) * 0.5,\n width_scaled,\n height_scaled,\n )\n // ctx.drawImage(\n // img,\n // ((frameSize - width_scaled) * 0.5),\n // ((frameSize - height_scaled) * 0.5),\n // width_scaled,\n // height_scaled,\n // )\n\n const pngUrl = canvas.toDataURL()\n\n mergeImages([\n ...(pngUrl ? [pngUrl] : []),\n ...(frameURL ? [frameURL] : []),\n ])\n .then(b64 => {\n // set_combinedImage(b64)\n trigger_download('volt-profile-picture.png', b64)\n })\n\n }\n img.src = originalPhoto\n }, [\n originalPhoto,\n cords.x,\n cords.y,\n cords.scale,\n orientation,\n frameURL,\n height,\n width,\n ])\n\n const { isDragActive, getRootProps } = useDropzone({\n onDrop,\n accept: 'image/*',\n maxFiles: 1,\n noKeyboard: true,\n })\n\n\n return (\n <div className=\"App\" {...getRootProps()}>\n <img src={HeaderImage} className=\"HeaderImage\" alt=\"Volt Logo\" />\n\n <div className={isDragActive ? 'droparea active' : 'droparea'}>\n Drop your photo here ...\n </div>\n\n <h2>Choose your Photo:</h2>\n <p>It should best be a square image or your face in the middle. The photo is not saved and never leaves your computer.</p>\n\n <label className=\"labelButton\" tabIndex=\"0\" style={{outline:'none'}}>\n {!!originalPhoto ? <img src={originalPhoto} alt=\"Preview\" /> : null}\n <span>{!!originalPhoto ? 'Change Photo' : 'Load Photo'}</span>\n <input onChange={handleImage} type=\"file\" accept=\"image/*\" style={{display: 'none'}} />\n </label>\n\n {!!originalPhoto ? (<>\n <FrameChooser onFrameChange={handleFrameURL} />\n </>) : null}\n\n {!!originalPhoto && !!frameURL ? (<>\n <h2>Reposition your Photo:</h2>\n {/*\n <h2>Edit your Photo:</h2>\n <p>Your can reposition the image and scale it. Use pinch-to-zoom or scroll to scale.</p>\n */}\n\n <Editor\n background={originalPhoto}\n backgroundRatio={originalPhotoRation}\n foreground={frameURL}\n onChange={handleCordsChange}\n />\n\n <button onClick={handleDownload}>Download Profile Picture</button>\n </>) : null}\n </div>\n )\n}\n\nexport default App\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry)\n getFID(onPerfEntry)\n getFCP(onPerfEntry)\n getLCP(onPerfEntry)\n getTTFB(onPerfEntry)\n })\n }\n}\n\nexport default reportWebVitals\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport App from './App'\nimport reportWebVitals from './reportWebVitals'\n\nReactDOM.render(\n <React.StrictMode>\n <App />\n </React.StrictMode>,\n document.getElementById('root')\n)\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals()\n"],"sourceRoot":""}