-
Notifications
You must be signed in to change notification settings - Fork 0
/
component---src-pages-my-projects-js-68794c20007aeae72a84.js.map
1 lines (1 loc) · 108 KB
/
component---src-pages-my-projects-js-68794c20007aeae72a84.js.map
1
{"version":3,"sources":["webpack:///./src/components/calculator/display.js","webpack:///./src/components/calculator/Button.js","webpack:///./src/components/calculator/Buttons.js","webpack:///./src/components/calculator/App.js","webpack:///./src/components/books/Books.js","webpack:///./src/components/books/App.js","webpack:///./src/components/Game4096/redux/constants.js","webpack:///./src/components/Game4096/utils/constants.js","webpack:///./src/components/Game4096/redux/reducers/functions/game.js","webpack:///./src/components/Game4096/redux/reducers/functions/move.js","webpack:///./src/components/Game4096/redux/reducers/index.js","webpack:///./src/components/Game4096/redux/store.js","webpack:///./src/components/Game4096/media-query/media.js","webpack:///./src/components/Game4096/utils/pixToRem.js","webpack:///./src/components/Game4096/utils/globalCell.js","webpack:///./src/components/Game4096/components/animations/numbers.js","webpack:///./src/components/Game4096/components/functions/numberStyle.js","webpack:///./src/components/Game4096/components/numbers.js","webpack:///./src/components/Game4096/redux/actions.js","webpack:///./src/components/Game4096/components/cells.js","webpack:///./src/components/Game4096/components/game.js","webpack:///./src/components/Game4096/App.js","webpack:///./src/components/Game4096/MyGame.js","webpack:///./src/components/myProjects/myProjects.js","webpack:///./src/pages/myProjects.js","webpack:///./src/components/stylesComponents/media.js","webpack:///./src/components/stylesComponents/title.js","webpack:///./src/components/layout.js","webpack:///./src/components/seo.js","webpack:///./src/components/stylesComponents/container.js","webpack:///./src/components/particlesSettings.js","webpack:///./src/components/backgroundParticle.js","webpack:///./src/components/stylesComponents/buttons.js","webpack:///./src/components/arrow.js","webpack:///./src/images/logo.svg"],"names":["TopContainer","styled","div","withConfig","displayName","componentId","DisplayContainer","Display","props","display","displayZero","react_default","a","createElement","length","ButtonContainer","state","color","Button","_this","Color","DarkColor","time","changeColor","setTimeout","getDarker","setState","getLighter","handleClick","e","onClick","componentDidMount","this","componentWillUnmount","clearTimeout","render","data-value","value","Fragment","Component","ButtonsContainers","Buttons","children","PageContainer","CalculatorContainer","App","number","start","calculateOperations","plus","result","join","charAt","math","eval","String","target","getAttribute","newNumber","update","$push","TooMuch","includes","getButtons","map","i","calculator_Button","key","calculator_display","calculator_Buttons","Form","form","Container","BooksWrapper","Books","_React$Component","call","missingWord","isLoading","books","startIndex","titleImgDescription","inputChange","input","fetchBooks","submit","event","preventDefault","fetch","then","res","json","items","checkFetch","printBooks","el","id","description","volumeInfo","substr","lastIndexOf","push","className","title","getImg","imageLinks","alt","src","thumbnail","trackScrolling","wrappedElement","document","getElementById","isBottom","containerRef","current","removeEventListener","addEventListener","React","createRef","getBoundingClientRect","bottom","window","innerHeight","ref","onSubmit","htmlFor","type","placeholder","onChange","Title","h3","href","Books_Books","GODOWN","GOUP","GORIGHT","GOLEFT","NEWGAME","MERGE","ANIMATIONTIME","EXTEND","NUMBEROFCELLS","ROW","Math","sqrt","getFullCells","Numbers","fullCells","arraysAreEqual","arrayX","arrayY","c","getEmptyCells","fullPositions","cells","getRandomValue","floor","random","getRandomNumberOfArray","emptyCells","getPrevNumbers","PrevNumbers","PrevPrevNumbers","newNumbers","prevNumbers","getPrevPrevNumbers","prevPrevNumbers","getScore","numbers","score","newScore","sort","desc","b","firstRowDown","position","firstRowLeft","firstRowRight","firstRowUp","move","positionCanMove","PositionOfNextCell","shouldMerge","mergedAlready","positionsOfMergedNumbers","positionOfNextNumber","q","isLost","index","gameOver","initialStates","Animation","AmountOfUnDos","HighestNumber","IsPlaying","reducer","action","isPlaying","randomValue","_state","randomPosition","PositionAndValue","Object","assign","Animations","animations","amountsOfUnDos","newNumbersAfterUndo","NewNumbers","store","createStore","rootReducer","media","generateMedia","small","xSmall","pixToRem","pix","GlobalCell","lessThan","_templateObject","between","_templateObject2","create","keyframes","merge","getColor","colorNumber","numberValue","getShadow","shadowNumber","getFontColor","fontColor","getFontSize","size","Cell","animation","cellStyles","numbers_templateObject","numbers_templateObject2","extend","Value","CellStyles","closeAnimation","fillCells","_this$props","numberExist","shadow","localStorage","getItem","shouldComponentUpdate","nextProps","_this2","shouldUpdate","forEach","componentDidUpdate","prevProps","connect","CellWrapper","CellShadow","cells_templateObject","cells_templateObject2","Cells","makeCellsShadow","backgroundForCells","components_numbers","highestNumber","backgroundColor","css","GameWindowContainer","GameWindow","game_templateObject","game_templateObject2","fullScreen","Game","isSwaping","onSwipeMove","abs","x","y","onSwipeEnd","direction","disableButton","undo","getButtonStyles","lib_default","onSwipeStart","components_cells","Page","App_templateObject","checkKeyPress","repeat","game","MyGame","es","Game4096_App","Row","myProjects_templateObject","FlippyWrapper","CardContainer","myProjects_templateObject2","_templateObject3","greaterThan","_templateObject4","GlacialContainer","_templateObject5","_templateObject6","_templateObject7","Front","FrontSide","Back","BackSide","FrontSideCard","BackSideCard","SuperFrontSide","_templateObject8","SuperBackSide","_templateObject9","Picture","Img","FrontButton","BackButton","ArrowBack","Arrow","margin","TextBack","span","TextFront","ExternalA","GlacialLogo","img","LogoOnPicture","_templateObject10","PictureGlacial","GlacialWrapper","_templateObject11","MyProjects","API","Glacial","Calculator","marginFirst","marginSecond","GlacialMarginFront","GlacialMarginBack","marginThird","marginFourth","marginFifth","marginSixth","AutoPlay","getPictureGlacial","data","aria-label","rel","objectPosition","fluid","glacial","childImageSharp","logoGlacial","secNumber","marginFront","marginBack","prevState","picture","dist_default","flipOnClick","isFlipped","flipDirection","books_App","buttons","gatsby_browser_entry","query","_2888903324","myProjects_CalculatorContainer","calculator_App","Game4096_MyGame","SecondPage","isArrow","style","opacity","layout","seo","container","arrow","firstName","secondName","to","myProjects_MyProjects","width","height","styled_media_query__WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","huge","xLarge","large","medium","h1","Layout","_ref","react__WEBPACK_IMPORTED_MODULE_1___default","gatsby__WEBPACK_IMPORTED_MODULE_3__","_public_static_d_755544856_json__WEBPACK_IMPORTED_MODULE_0__","propTypes","PropTypes","node","isRequired","SEO","lang","meta","keywords","site","_public_static_d_2417117884_json__WEBPACK_IMPORTED_MODULE_0__","metaDescription","siteMetadata","react_helmet__WEBPACK_IMPORTED_MODULE_3___default","htmlAttributes","titleTemplate","name","content","property","author","concat","defaultProps","string","array","arrayOf","ParticleSett","particles","density","enable","value_area","shape","stroke","polygon","nb_sides","image","anim","speed","opacity_min","sync","size_min","line_linked","distance","straight","out_mode","bounce","attract","rotateX","rotateY","interactivity","detect_on","events","onhover","mode","onclick","resize","modes","grab","bubble","duration","repulse","particles_nb","remove","retina_detect","Background","Particles","BackgroundParticles","params","button","Link","AniLink","ButtonsContainer","ButtonTextFront","ButtonTextBack","home","me","realty","thirdName","react__WEBPACK_IMPORTED_MODULE_0___default","fade","textDecoration","_title__WEBPACK_IMPORTED_MODULE_3__","_components_backgroundParticle__WEBPACK_IMPORTED_MODULE_2__","module","exports"],"mappings":"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","file":"component---src-pages-my-projects-js-68794c20007aeae72a84.js","sourcesContent":["import React from \"react\"\nimport styled from \"styled-components\"\n\nconst TopContainer = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: flex-start;\n align-content: center;\n align-items: center;\n width: 135px;\n height: 35px;\n margin-top: 10px;\n background-color: white;\n border-radius: 10px;\n margin-bottom: 10px;\n margin-right: 12px;\n margin-left: 12px;\n overflow: hidden;\n white-space: noWrap;\n`\n\nconst DisplayContainer = styled.div`\n max-width: 125px;\n max-height: 32px;\n text-align: left;\n font-size: 24px;\n margin-left: 9px;\n`\n\nconst Display = props => {\n const display = props.display\n const displayZero = props.displayZero\n\n const getDisplay = () => {\n if (display.length > 0) {\n return display\n } else return displayZero\n }\n\n return (\n <TopContainer>\n <DisplayContainer> {getDisplay()} </DisplayContainer>\n </TopContainer>\n )\n}\n\nexport default Display\n","import React, { Component } from \"react\"\nimport styled from \"styled-components\"\n\nconst ButtonContainer = styled.div`\n width: 38px;\n height: 38px;\n border-radius: 19px;\n margin-bottom: 13px;\n background-color: ${state => state.color};\n transition: background-color 1s;\n padding: 1px;\n cursor: pointer;\n text-align: center;\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n align-content: center;\n\n &:hover {\n box-shadow: 0px 0px 2px 5px rgba(255, 255, 255, 0.75);\n }\n`\n\nclass Button extends Component {\n state = {\n color: this.Color,\n }\n\n Color = \"#a91548\"\n DarkColor = \"#660c2b\"\n time\n\n componentDidMount() {\n this.setState({\n color: this.Color,\n })\n this.changeColor()\n }\n\n componentWillUnmount() {\n clearTimeout(this.time)\n }\n\n changeColor = () => {\n this.time = setTimeout(() => {\n this.getDarker()\n this.changeColor()\n }, 5000)\n }\n\n getDarker = () => {\n this.setState({\n color: this.DarkColor,\n })\n setTimeout(this.getLighter, 450)\n }\n\n getLighter = () => {\n this.setState({\n color: this.Color,\n })\n }\n\n handleClick = e => {\n this.props.onClick(e)\n this.getDarker()\n }\n\n render() {\n return (\n <ButtonContainer\n onClick={this.handleClick}\n data-value={this.props.value}\n color={this.state.color}\n >\n <>{this.props.value}</>\n </ButtonContainer>\n )\n }\n}\n\nexport default Button\n","import React from \"react\"\nimport styled from \"styled-components\"\n\nconst ButtonsContainers = styled.div`\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n margin-right: 14px;\n margin-left: 14px;\n margin-top: 5px;\n color: white;\n align-items: center;\n align-content: center;\n`\n\n// fixed\nconst Buttons = props => {\n return <ButtonsContainers> {props.children} </ButtonsContainers>\n}\nexport default Buttons\n","import React, { Component } from \"react\"\nimport styled from \"styled-components\"\nimport update from \"immutability-helper\"\nimport math from \"mathjs\"\nimport Display from \"./display\"\nimport Button from \"./Button\"\nimport Buttons from \"./Buttons\"\nimport \"./calculator.css\"\n\nconst PageContainer = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: center;\n align-content: center;\n align-items: center;\n margin: 0;\n font-family: \"Nothing You Could Do\", cursive;\n user-select: none;\n margin-top: 20px;\n`\n\nconst CalculatorContainer = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: center;\n align-items: flex-start;\n align-content: flex-start;\n width: 170px;\n height: 262px;\n background-color: #0095b8;\n border-radius: 10px;\n`\n\nclass App extends Component {\n state = { number: [], start: [\"0\"] }\n\n calculateOperations = plus => {\n let result = this.state.number.join(\"\")\n if (result.charAt(result.length - 1) === \"+\") {\n result = result + \"0\"\n }\n if (result) {\n result = math.eval(result)\n result = String(result)\n if (result.length <= 12) {\n if (plus) {\n result += \"+\"\n }\n this.setState({\n number: [result],\n })\n } else {\n this.setState({\n number: [\"Too much !!! \"],\n })\n }\n }\n\n return result.length\n }\n\n handleClick = e => {\n const value = e.target.getAttribute(\"data-value\")\n const newNumber = update(this.state.number, {\n $push: [value],\n })\n const TooMuch = \"Too much !!!\"\n\n switch (value) {\n case \"=\":\n if (newNumber.includes(TooMuch)) {\n break\n } else {\n this.calculateOperations()\n break\n }\n\n default:\n if (value === \"+\") {\n if (\n this.state.number.includes(\"+\") ||\n this.state.number.length === 0 ||\n this.state.number[0].includes(\"+\")\n ) {\n if (newNumber[-2] === \"+\") {\n break\n }\n if (\n this.state.number.length === 1 &&\n this.state.number[0].includes(\"+\")\n )\n newNumber[-1] = \"=\"\n this.calculateOperations(true)\n\n break\n }\n }\n if (newNumber.includes(TooMuch)) {\n this.setState({\n number: [TooMuch],\n })\n break\n } else if (newNumber.length <= 12) {\n if (newNumber.length === 1 && value === \"0\") {\n break\n } else\n this.setState({\n number: newNumber,\n })\n break\n } else {\n this.setState({\n number: [TooMuch],\n })\n break\n }\n }\n }\n\n getButtons = () => {\n const tab = [\"7\", \"8\", \"9\", \"4\", \"5\", \"6\", \"1\", \"2\", \"3\", \"+\", \"0\", \"=\"]\n return tab.map(i => <Button onClick={this.handleClick} value={i} key={i} />)\n }\n\n render() {\n return (\n <PageContainer>\n <CalculatorContainer>\n <Display display={this.state.number} displayZero={this.state.start} />\n <Buttons>{this.getButtons()}</Buttons>\n </CalculatorContainer>\n </PageContainer>\n )\n }\n}\n\nexport default App\n","import React from \"react\"\nimport styled from \"styled-components\"\n\nconst Form = styled.form`\n margin-bottom: 5px;\n`\nconst Container = styled.div`\n margin: 0 20px;\n`\n\nconst BooksWrapper = styled.div`\n display: flex;\n justify-content: center;\n align-items: flex-start;\n overflow: scroll;\n height: 303px;\n flex-wrap: wrap;\n`\n\nexport default class Books extends React.Component {\n constructor(props) {\n super(props)\n this.containerRef = React.createRef()\n }\n state = {\n missingWord: \"\",\n isLoading: true,\n books: [],\n startIndex: 0,\n }\n\n titleImgDescription = []\n time\n\n // infinity scroll (life circle methods)\n componentDidMount() {\n this.containerRef.current.addEventListener(\"scroll\", this.trackScrolling)\n }\n\n componentWillUnmount() {\n this.containerRef.current.removeEventListener(\"scroll\", this.trackScrolling)\n }\n\n inputChange = input => {\n clearTimeout(this.time)\n this.setState({\n missingWord: input.target.value,\n })\n this.time = setTimeout(() => {\n this.titleImgDescription = []\n this.fetchBooks()\n }, 500)\n }\n\n submit = event => {\n event.preventDefault()\n this.titleImgDescription = []\n this.fetchBooks()\n }\n\n fetchBooks = () => {\n fetch(\n `https://www.googleapis.com/books/v1/volumes?q=${\n this.state.missingWord\n }+intitle&startIndex=${this.state.startIndex}`\n )\n .then(res => res.json())\n .then(json => this.setState({ books: json.items }, this.checkFetch))\n }\n\n checkFetch = () => {\n if (typeof this.state.books !== \"undefined\") {\n this.setState({ isLoading: false })\n }\n }\n\n printBooks = () => {\n if (typeof this.state.books === \"undefined\") {\n return this.titleImgDescription\n }\n\n let repeats = this.titleImgDescription.map(\n el => el.key === this.state.books[0].id\n )\n if (repeats.includes(true)) {\n return this.titleImgDescription\n }\n\n this.state.books.map(el => {\n let description = el.volumeInfo.description\n\n if (typeof description === \"undefined\") {\n description = \"missing description\"\n } else if (description.length > 100) {\n description = description.substr(0, description.lastIndexOf(\" \", 100))\n description = description + \"...\"\n }\n\n this.titleImgDescription.push(\n <div className=\"bookContainer\" key={el.id}>\n <h4>\n Title:\n <span className=\"title\"> {el.volumeInfo.title}</span>\n </h4>\n {this.getImg(el)}\n <h4 className=\"description\">{description}</h4>\n </div>\n )\n return 1\n })\n\n return <div>{this.titleImgDescription}</div>\n }\n\n getImg = el => {\n if (typeof el.volumeInfo.imageLinks === \"undefined\") {\n return <h4>Missing img</h4>\n }\n return <img alt=\"missing img\" src={el.volumeInfo.imageLinks.thumbnail} />\n }\n\n // infinity scroll (isBottom, trackScrolling)\n isBottom(el) {\n if (this.state.books.length < 10) {\n return false\n }\n\n return el.getBoundingClientRect().bottom <= window.innerHeight\n }\n\n trackScrolling = () => {\n let wrappedElement = document.getElementById(\"footerBook\")\n if (this.isBottom(wrappedElement)) {\n let startIndex = this.state.startIndex\n startIndex += 10\n this.setState(\n {\n startIndex: startIndex,\n },\n this.fetchBooks\n )\n this.containerRef.current.removeEventListener(\n \"scroll\",\n this.trackScrolling\n )\n setTimeout(() => {\n this.containerRef.current.addEventListener(\n \"scroll\",\n this.trackScrolling\n )\n }, 300)\n }\n }\n\n render() {\n return (\n <Container>\n <BooksWrapper ref={this.containerRef}>\n <Form className=\"input\" onSubmit={this.submit}>\n <label htmlFor=\"title\">enter the title of a book</label>\n <input\n id=\"title\"\n type=\"text\"\n placeholder=\"Title\"\n onChange={this.inputChange}\n />\n </Form>\n {this.state.isLoading ? this.titleImgDescription : this.printBooks()}\n <span id=\"footerBook\" />\n </BooksWrapper>\n </Container>\n )\n }\n}\n","import React from \"react\"\nimport Books from \"./Books\"\nimport styled from \"styled-components\"\n\nconst Title = styled.h3`\n font-size: 26px;\n margin-bottom: 5px;\n margin-top: 20px;\n margin-right: 2px;\n`\n\nconst App = () => {\n return (\n <div>\n <Title>\n search Google's{\" \"}\n <a\n className=\"link\"\n href=\"https://developers.google.com/books/docs/v1/using#WorkingVolumes\"\n >\n database\n </a>\n </Title>\n <Books />\n </div>\n )\n}\n\nexport default App\n","export const GODOWN = 'GODOWN'\nexport const GOUP = 'GOUP'\nexport const GORIGHT = 'GORIGHT'\nexport const GOLEFT = 'GOLEFT'\nexport const NEWGAME = 'NEWGAME'\nexport const MERGE = 'MERGE'\nexport const UNDO = 'UNDO'\n","export const ANIMATIONTIME = 150\nexport const EXTEND = 'width: 78px; height: 78px;'\nexport const EXTENDEDCONTAINER = 'width: 370px; height: 370px;'\nexport const NUMBEROFCELLS = 16\nexport const ROW = Math.sqrt(NUMBEROFCELLS)\nexport const AMOUNTOFNEWGAMENUMBERS = 2\n","import { NUMBEROFCELLS, ROW } from '../../../utils/constants'\n\nexport const getFullCells = Numbers => {\n let fullCells = []\n Numbers.map(e => fullCells.push(e[0]))\n return fullCells\n}\n\nexport const arraysAreEqual = (arrayX, arrayY) => {\n if (arrayX.length === arrayY.length) {\n for (let i = 0; i < arrayX.length; i++) {\n for (let c = 0; c < 2; c++) {\n // only first 2 arguments [position][value] are equal, in case of all equal -> compare Json\n if (arrayX[i][c] !== arrayY[i][c]) {\n return false\n }\n }\n }\n return true\n } else {\n return false\n }\n}\n\nexport const getEmptyCells = fullPositions => {\n const cells = []\n for (let i = 0; i < NUMBEROFCELLS; i++) {\n if (fullPositions) {\n if (!fullPositions.includes(i)) {\n cells.push(i)\n }\n } else {\n cells.push(i)\n }\n }\n return cells\n}\n\n// 2 or 4 value\nexport const getRandomValue = () => {\n return Math.floor(Math.random() * 2 + 1) * 2\n}\n\nexport const getRandomNumberOfArray = emptyCells => {\n return Math.floor(Math.random() * (emptyCells.length - 1))\n}\n\nexport const getPrevNumbers = (\n Numbers,\n PrevNumbers,\n PrevPrevNumbers,\n newNumbers\n) => {\n let prevNumbers = Numbers\n\n if (PrevPrevNumbers.length > 0) {\n if (\n arraysAreEqual(Numbers, PrevNumbers) ||\n arraysAreEqual(newNumbers, Numbers)\n ) {\n prevNumbers = PrevPrevNumbers\n }\n }\n return prevNumbers\n}\n\nexport const getPrevPrevNumbers = (\n Numbers,\n PrevNumbers,\n PrevPrevNumbers,\n newNumbers\n) => {\n let prevPrevNumbers = PrevNumbers\n\n if (PrevPrevNumbers.length > 0) {\n if (\n arraysAreEqual(Numbers, PrevNumbers) ||\n arraysAreEqual(PrevNumbers, PrevPrevNumbers) ||\n arraysAreEqual(newNumbers, Numbers)\n ) {\n prevPrevNumbers = PrevPrevNumbers\n }\n }\n\n return prevPrevNumbers\n}\n\nexport const getScore = (numbers, score) => {\n let newScore = score\n\n // eslint-disable-next-line\n numbers.map(number => {\n if (score < number[1]) {\n newScore = number[1]\n }\n })\n return newScore\n}\n\nexport const sort = (Numbers, desc) => {\n if (desc) {\n Numbers.sort((a, b) => {\n return b[0] - a[0]\n })\n } else {\n Numbers.sort((a, b) => {\n return a[0] - b[0]\n })\n }\n}\n\nexport const firstRowDown = position => {\n return position < NUMBEROFCELLS - ROW\n}\n\nexport const firstRowLeft = position => {\n if (position === 0) {\n return false\n }\n return !(position % 4 === 0)\n}\n\nexport const firstRowRight = position => {\n if (position === NUMBEROFCELLS - 1) {\n return false\n }\n return !((position + 1) % 4 === 0)\n}\n\nexport const firstRowUp = position => {\n return position >= ROW\n}\n\nexport const gameOver = Numbers => {\n sort(Numbers)\n let isLost = true\n // eslint-disable-next-line\n Numbers.map((number, index) => {\n if (index > 0 && index < NUMBEROFCELLS - ROW) {\n if (number[1] === Numbers[index + ROW][1]) {\n isLost = false\n }\n }\n\n if (index > ROW && index < NUMBEROFCELLS) {\n if (number[1] === Numbers[index - ROW][1]) {\n isLost = false\n }\n }\n\n if (index % ROW !== 0 && index !== 0) {\n if (number[1] === Numbers[index - 1][1]) {\n isLost = false\n }\n }\n\n if ((index + 1) % ROW !== 0) {\n if (number[1] === Numbers[index + 1][1]) {\n isLost = false\n }\n }\n\n if (index === 0) {\n if (\n number[1] === Numbers[index + 1][1] ||\n number[1] === Numbers[index + ROW][1]\n ) {\n isLost = false\n }\n }\n\n if (index === NUMBEROFCELLS - 1) {\n if (\n number[1] === Numbers[index - 1][1] ||\n number[1] === Numbers[index - ROW][1]\n ) {\n isLost = false\n }\n }\n })\n\n return isLost\n}\n","import {\n getFullCells,\n arraysAreEqual,\n getEmptyCells,\n getRandomNumberOfArray,\n getRandomValue,\n gameOver\n} from './game'\nimport { ROW } from '../../../utils/constants'\nimport { NEWGAME, MERGE } from '../../constants'\n\nexport const move = (Numbers, positionCanMove, PositionOfNextCell) => {\n let fullCells = getFullCells(Numbers)\n let shouldMerge = false\n let mergedAlready = false\n let emptyCells = getEmptyCells(fullCells)\n let newNumber = []\n let newNumbers = []\n let positionsOfMergedNumbers = []\n\n let position\n let value\n\n // merge or move number\n for (let i = 0; i < Numbers.length; i++) {\n position = Numbers[i][0]\n value = Numbers[i][1]\n newNumber = []\n let positionOfNextNumber = false\n\n if (positionCanMove(position)) {\n for (let q = 1; q < ROW; q++) {\n if (fullCells.includes(position + PositionOfNextCell * q)) {\n positionOfNextNumber = position + PositionOfNextCell * q\n q = ROW + 1\n }\n if (!positionCanMove(position + PositionOfNextCell * q)) {\n q = ROW + 1\n }\n }\n\n // MERGE\n if (positionOfNextNumber !== false) {\n for (let i = 0; i < newNumbers.length; i++) {\n if (\n newNumbers[i][0] === positionOfNextNumber &&\n newNumbers[i][1] === value\n ) {\n // it cannot be marged twice => [2] [2] [4] [8] (to left) should get [4] [4] [8] []\n if (positionsOfMergedNumbers.includes(positionOfNextNumber)) {\n mergedAlready = true\n }\n if (!mergedAlready) {\n shouldMerge = true\n value = newNumbers[i][1] * 2\n newNumbers[i][1] = value\n newNumbers[i][2] = MERGE\n positionsOfMergedNumbers.push(newNumbers[i][0])\n i = newNumbers.length + 1\n }\n }\n }\n //move and do not merge\n if (!shouldMerge) {\n position = positionOfNextNumber - PositionOfNextCell\n }\n } else if (!positionOfNextNumber) {\n // move to the very end\n while (positionCanMove(position)) {\n position = position + PositionOfNextCell\n }\n }\n } // number remain the same, position cannot move\n if (!shouldMerge) {\n newNumber.push(position)\n newNumber.push(value)\n newNumbers.push(newNumber)\n }\n mergedAlready = false\n shouldMerge = false\n fullCells = getFullCells(newNumbers)\n }\n\n // create new random Number\n if (!arraysAreEqual(newNumbers, Numbers)) {\n emptyCells = getEmptyCells(fullCells)\n position = emptyCells[getRandomNumberOfArray(emptyCells)]\n value = getRandomValue()\n\n newNumber = []\n newNumber.push(position, value, NEWGAME)\n newNumbers.push(newNumber)\n } else if (emptyCells.length === 0 && gameOver(Numbers)) {\n newNumbers = false\n }\n return newNumbers\n}\n","import { NEWGAME, GODOWN, GOUP, GOLEFT, GORIGHT, UNDO } from '../constants'\nimport { AMOUNTOFNEWGAMENUMBERS } from '../../utils/constants'\nimport { move } from './functions/move'\nimport {\n getEmptyCells,\n getRandomValue,\n getRandomNumberOfArray,\n getPrevNumbers,\n getPrevPrevNumbers,\n arraysAreEqual,\n getScore,\n sort,\n firstRowLeft,\n firstRowRight,\n firstRowDown,\n firstRowUp\n} from './functions/game'\n\nconst initialStates = {\n Numbers: [],\n PrevNumbers: [],\n PrevPrevNumbers: [],\n Animation: '',\n AmountOfUnDos: 3,\n HighestNumber: 4,\n IsPlaying: true\n}\n\nconst reducer = (state = initialStates, action) => {\n let isPlaying = true\n const randomValue = getRandomValue()\n const { Numbers, PrevNumbers, PrevPrevNumbers, HighestNumber } = state\n let newNumbers = []\n let PositionOfNextCell\n let newScore = state.HighestNumber\n let animations\n let prevNumbers\n let prevPrevNumbers\n\n switch (action.type) {\n case NEWGAME:\n let emptyCells = getEmptyCells()\n let randomPosition\n for (let i = 0; i < AMOUNTOFNEWGAMENUMBERS; i++) {\n let PositionAndValue = []\n randomPosition = getRandomNumberOfArray(emptyCells)\n PositionAndValue.push(emptyCells[randomPosition])\n if (i !== 0 && newNumbers[0][1] === 4) {\n PositionAndValue.push(2)\n } else {\n PositionAndValue.push(randomValue)\n }\n PositionAndValue.push(NEWGAME)\n newNumbers.push(PositionAndValue)\n emptyCells = getEmptyCells(newNumbers[0])\n }\n return {\n ...state,\n IsPlaying: true,\n PrevNumbers: newNumbers,\n PrevPrevNumbers: [],\n Numbers: newNumbers,\n AmountOfUnDos: 3\n }\n\n case GODOWN:\n sort(Numbers, true)\n PositionOfNextCell = 4\n newNumbers = move(Numbers, firstRowDown, PositionOfNextCell)\n if (newNumbers) {\n newScore = getScore(newNumbers, HighestNumber)\n } else {\n newNumbers = Numbers\n isPlaying = false\n prevNumbers = state.PrevNumbers\n prevPrevNumbers = state.PrevPrevNumbers\n }\n\n prevNumbers = getPrevNumbers(\n Numbers,\n PrevNumbers,\n PrevPrevNumbers,\n newNumbers\n )\n prevPrevNumbers = getPrevPrevNumbers(\n Numbers,\n PrevNumbers,\n PrevPrevNumbers,\n newNumbers\n )\n\n return {\n ...state,\n IsPlaying: isPlaying,\n Numbers: newNumbers,\n PrevNumbers: prevNumbers,\n PrevPrevNumbers: prevPrevNumbers,\n HighestNumber: newScore,\n Animations: animations\n }\n\n case GOUP:\n sort(Numbers)\n PositionOfNextCell = -4\n newNumbers = move(Numbers, firstRowUp, PositionOfNextCell)\n if (newNumbers) {\n newScore = getScore(newNumbers, HighestNumber)\n prevNumbers = getPrevNumbers(\n Numbers,\n PrevNumbers,\n PrevPrevNumbers,\n newNumbers\n )\n prevPrevNumbers = getPrevPrevNumbers(\n Numbers,\n PrevNumbers,\n PrevPrevNumbers,\n newNumbers\n )\n } else {\n newNumbers = Numbers\n isPlaying = false\n prevNumbers = state.PrevNumbers\n prevPrevNumbers = state.PrevPrevNumbers\n }\n\n return {\n ...state,\n IsPlaying: isPlaying,\n Numbers: newNumbers,\n PrevNumbers: prevNumbers,\n PrevPrevNumbers: prevPrevNumbers,\n HighestNumber: newScore\n }\n\n case GORIGHT:\n sort(Numbers, true)\n PositionOfNextCell = 1\n newNumbers = move(Numbers, firstRowRight, PositionOfNextCell)\n if (newNumbers) {\n newScore = getScore(newNumbers, HighestNumber)\n prevNumbers = getPrevNumbers(\n Numbers,\n PrevNumbers,\n PrevPrevNumbers,\n newNumbers\n )\n prevPrevNumbers = getPrevPrevNumbers(\n Numbers,\n PrevNumbers,\n PrevPrevNumbers,\n newNumbers\n )\n } else {\n newNumbers = Numbers\n isPlaying = false\n prevNumbers = state.PrevNumbers\n prevPrevNumbers = state.PrevPrevNumbers\n }\n\n return {\n ...state,\n IsPlaying: isPlaying,\n Numbers: newNumbers,\n PrevNumbers: prevNumbers,\n PrevPrevNumbers: prevPrevNumbers,\n HighestNumber: newScore\n }\n\n case GOLEFT:\n sort(Numbers)\n PositionOfNextCell = -1\n newNumbers = move(Numbers, firstRowLeft, PositionOfNextCell)\n if (newNumbers) {\n newScore = getScore(newNumbers, HighestNumber)\n prevNumbers = getPrevNumbers(\n Numbers,\n PrevNumbers,\n PrevPrevNumbers,\n newNumbers\n )\n prevPrevNumbers = getPrevPrevNumbers(\n Numbers,\n PrevNumbers,\n PrevPrevNumbers,\n newNumbers\n )\n } else {\n newNumbers = Numbers\n isPlaying = false\n prevNumbers = state.PrevNumbers\n prevPrevNumbers = state.PrevPrevNumbers\n }\n\n return {\n ...state,\n IsPlaying: isPlaying,\n Numbers: newNumbers,\n PrevNumbers: prevNumbers,\n PrevPrevNumbers: prevPrevNumbers,\n HighestNumber: newScore\n }\n\n case UNDO:\n isPlaying = true\n let amountsOfUnDos = state.AmountOfUnDos - 1\n let newNumbersAfterUndo = state.Numbers\n if (amountsOfUnDos >= 0) {\n newNumbersAfterUndo = state.PrevNumbers\n }\n if (arraysAreEqual(Numbers, PrevNumbers)) {\n newNumbersAfterUndo = PrevPrevNumbers\n }\n return {\n ...state,\n NewNumbers: newNumbersAfterUndo,\n IsPlaying: isPlaying,\n Numbers: newNumbersAfterUndo,\n AmountOfUnDos: amountsOfUnDos,\n PrevPrevNumbers: []\n }\n\n default:\n return state\n }\n}\n\nexport default reducer\n","import { createStore } from \"redux\"\nimport rootReducer from \"./reducers/index\"\n\n/* eslint-disable no-underscore-dangle */\nexport const store = createStore(rootReducer)\n","import { generateMedia } from 'styled-media-query'\n\nconst media = generateMedia({\n small: '535px',\n xSmall: '370px'\n})\n\nexport default media\n\n// https://github.com/morajabi/styled-media-query\n","const pixToRem = pix => {\n const remInPix = 0.0625\n return `${pix * remInPix}rem`\n}\nexport default pixToRem\n","import styled from \"styled-components\"\nimport media from \"../media-query/media\"\n\nexport const GlobalCell = styled.div`\n width: 70px;\n height: 70px;\n border-radius: 5px;\n justify-content: center;\n align-items: center;\n\n ${media.lessThan(\"xSmall\")`\n width: 50px;\n height: 50px;\n `}\n\n ${media.between(\"xSmall\", \"small\")`\n width: 58px;\n height: 58px;\n `}\n`\n","import { keyframes } from 'styled-components'\n\nexport const create = keyframes`\n 0% {\n width: 0px;\n height: 0px;\n opacity: 0;\n }\n\n 100% {\n width: 100%;\n height: 100%;\n opacity: 1;\n }\n`\nexport const merge = keyframes`\n 0% {\n height: 100%;\n }\n\n 30% {\n height: 115%;\n }\n\n 100% {\n height: 100%;\n }\n`\n","import pixToRem from \"../../utils/pixToRem\"\n\nexport const getColor = value => {\n let colorNumber = 0\n let numberValue = value\n while (numberValue > 2) {\n numberValue = numberValue / 2\n if (colorNumber < 12) {\n colorNumber++\n } else {\n numberValue = 1\n }\n }\n const colors = [\n \"#eee4db\",\n \"#fde0c9\",\n \"#f2b179\",\n \"#f59563\",\n \"#f67c4f\",\n \"#f65e3b\",\n \"#fdcf72\",\n \"#fdcc60\",\n \"#fdc850\",\n \"#fdc53f\",\n \"#fdc22e\",\n \"#000000\",\n \"#ff0000\",\n ]\n\n const color = colors[colorNumber]\n\n return color\n}\n\nexport const getShadow = value => {\n let counter = 0\n let shadowNumber = 0\n let numberValue = value\n\n while (numberValue > 2) {\n numberValue = numberValue / 2\n if (counter < 12) {\n shadowNumber++\n } else {\n numberValue = 1\n }\n }\n shadowNumber = shadowNumber - 7\n if (shadowNumber < 0) {\n shadowNumber = 0\n }\n\n const shadows = [\n \"\",\n \"0 0 30px 10px rgba(243, 215, 116, 0.39683), inset 0 0 0 1px rgba(255, 255, 255, 0.2381)\",\n \"0 0 30px 10px rgba(243, 215, 116, 0.47619), inset 0 0 0 1px rgba(255, 255, 255, 0.28571)\",\n \"0 0 30px 10px rgba(243, 215, 116, 0.47619), inset 0 0 0 1px rgba(255, 255, 255, 0.32571)\",\n \"0px 0px 20px 20px rgba(245, 0, 0, 0.47619), inset 0 0 0 1px rgba(173, 0, 0, 0.4571)\",\n \"0px 0px 20px 20px rgba(0, 0, 0, 0.47619), inset 0 0 0 1px rgba(0, 0, 0, 0.4571)\",\n ]\n\n const shadow = shadows[shadowNumber]\n\n return shadow\n}\n\nexport const getFontColor = value => {\n let fontColor = \"black\"\n if (value >= 8) {\n fontColor = \"white\"\n }\n return fontColor\n}\n\nexport const getFontSize = value => {\n let size = pixToRem(35)\n if (value >= 1024) {\n size = pixToRem(26)\n }\n return size\n}\n","import React from 'react'\nimport media from '../media-query/media'\nimport pixToRem from '../utils/pixToRem'\nimport styled from 'styled-components'\n\nimport { ANIMATIONTIME, EXTEND } from '../utils/constants'\nimport { GlobalCell } from '../utils/globalCell'\nimport { connect } from 'react-redux'\nimport { NEWGAME, MERGE } from '../redux/constants'\nimport { create, merge } from './animations/numbers'\nimport {\n getColor,\n getShadow,\n getFontColor,\n getFontSize\n} from './functions/numberStyle'\n\nconst Cell = styled(GlobalCell)`\n font-weight: 700;\n text-align: center;\n user-select: none;\n transition: margin ${ANIMATIONTIME}ms ease-in,\n width ${ANIMATIONTIME}ms ease-in, height ${ANIMATIONTIME}ms ease-in,\n background-color ${ANIMATIONTIME}ms ease-in,\n color ${ANIMATIONTIME}ms ease-in;\n\n display: ${props => props.display};\n animation: ${props => props.animation} ${ANIMATIONTIME}ms ease-in;\n ${props => props.cellStyles};\n\n ${media.lessThan('xSmall')`\n font-size: ${pixToRem(28)} !important;\n `}\n\n ${media.between('xSmall', 'small')`\n ${props => (props.extend ? EXTEND : '')}\n font-size: ${pixToRem(28)};\n `}\n`\n\nclass Numbers extends React.Component {\n state = {\n Value: null,\n Animation: 'none',\n CellStyles: ''\n }\n\n componentDidMount() {\n if (localStorage.getItem('persist:numbers') !== null) {\n this.fillCells()\n }\n }\n\n shouldComponentUpdate(nextProps) {\n let shouldUpdate = true\n\n nextProps.numbers.forEach(number => {\n if (\n // if there is the same number (the same position value and animation), then we do not need to update\n number[0] === this.props.position &&\n number[1] === this.state.Value &&\n number[2] !== NEWGAME &&\n number[2] !== MERGE &&\n nextProps.extend === this.props.extend\n ) {\n shouldUpdate = false\n }\n })\n return shouldUpdate\n }\n\n componentDidUpdate(prevProps) {\n if (\n this.props.numbers !== null &&\n prevProps.numbers !== this.props.numbers\n ) {\n this.fillCells()\n }\n }\n\n closeAnimation = () => {\n setTimeout(() => {\n this.setState({\n Animation: 'none'\n })\n }, ANIMATIONTIME)\n }\n\n fillCells = () => {\n // this.props.numbers => array[i][0] position (0-15) array[i][1] value (initial 2 or 4) array[i][2] type of animation\n const { position, numbers } = this.props\n const none = 'none'\n const flex = 'flex'\n let numberExist = false\n let animation = none\n let cellStyles\n\n // eslint-disable-next-line\n numbers.map(number => {\n if (number[0] === position) {\n numberExist = number\n }\n })\n\n // eslint-disable-next-line\n if (numberExist) {\n if (numberExist[2] === NEWGAME) {\n animation = create\n } else if (numberExist[2] === MERGE) {\n animation = merge\n }\n\n let value = numberExist[1]\n let color = getColor(value)\n let shadow = getShadow(value)\n let size = getFontSize(value)\n let fontColor = getFontColor(value)\n\n cellStyles = `background-color: ${color}; box-shadow: ${shadow}; display: ${flex}; color: ${fontColor}; font-size: ${size};`\n\n this.setState(\n {\n Value: value,\n Animation: animation,\n CellStyles: cellStyles\n },\n this.closeAnimation\n // when Cell receive the same animation it wont play\n )\n } else {\n cellStyles = `display: ${none};`\n this.setState({\n CellStyles: cellStyles,\n Value: null\n })\n }\n }\n\n render() {\n return (\n <Cell\n extend={this.props.extend}\n cellStyles={this.state.CellStyles}\n animation={this.state.Animation}\n >\n {this.state.Value}\n </Cell>\n )\n }\n}\n\nconst mapStateToProps = state => {\n return {\n numbers: state.Numbers\n }\n}\n\nexport default connect(mapStateToProps)(Numbers)\n","export const action = type => {\n return {\n type: type\n }\n}\n","import React, { Component } from 'react'\nimport styled from 'styled-components'\nimport Numbers from './numbers'\nimport media from '../media-query/media'\n\nimport { ANIMATIONTIME, EXTEND, NUMBEROFCELLS } from '../utils/constants'\nimport { GlobalCell } from '../utils/globalCell'\nimport { connect } from 'react-redux'\nimport { NEWGAME } from '../redux/constants'\nimport { action } from '../redux/actions'\n\nconst CellWrapper = styled.div`\n display: flex;\n justify-content: center;\n min-width: 21%;\n`\n\nconst CellShadow = styled(GlobalCell)`\n background: rgba(238, 228, 218, 0.35);\n position: relative;\n display: flex;\n transition: width ${ANIMATIONTIME}ms ease-in,\n height ${ANIMATIONTIME}ms ease-in;\n\n ${media.lessThan('xSmall')`\n ${props => (props.extend ? '' : '')}\n `}\n\n ${media.between('xSmall', 'small')`\n ${props => (props.extend ? EXTEND : '')}\n `}\n`\n\nclass Cells extends Component {\n componentDidMount() {\n if (\n localStorage.getItem('persist:numbers') === null ||\n typeof localStorage.getItem('persist:numbers') === 'undefined' ||\n this.props.highestNumber === 4\n ) {\n this.props.action(NEWGAME)\n }\n }\n makeCellsShadow = () => {\n const backgroundForCells = []\n for (let i = 0; i < NUMBEROFCELLS; i++) {\n backgroundForCells.push(\n <CellWrapper key={i}>\n <CellShadow extend={this.props.extend}>\n <Numbers extend={this.props.extend} position={i} />\n </CellShadow>\n </CellWrapper>\n )\n }\n return backgroundForCells\n }\n\n render() {\n return <>{this.makeCellsShadow()}</>\n }\n}\n\nconst mapStateToProps = state => {\n return {\n highestNumber: state.HighestNumber\n }\n}\n\nexport default connect(\n mapStateToProps,\n { action }\n)(Cells)\n","import React from \"react\"\nimport media from \"../media-query/media\"\nimport Cells from \"./cells\"\nimport Swipe from \"react-easy-swipe\"\nimport styled, { css } from \"styled-components\"\n\nimport { connect } from \"react-redux\"\nimport { action } from \"../redux/actions\"\nimport { GOUP, GODOWN, GOLEFT, GORIGHT } from \"../redux/constants\"\nimport { ANIMATIONTIME } from \"../utils/constants\"\n\nconst backgroundColor = css`\n background-color: #bbada1;\n`\n\nconst GameWindowContainer = styled.div`\n width: 100%;\n display: flex;\n justify-content: center;\n transition: opacity 2s ease-in;\n\n ${props => (props.isPlaying ? \"\" : \"opacity: 0.3;\")}\n`\n\nconst GameWindow = styled.div`\n ${backgroundColor};\n width: 350px;\n height: 350px;\n padding: 10px;\n border-radius: 10px;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n align-content: space-around;\n position: relative;\n transition: width ${ANIMATIONTIME}ms ease-in,\n height ${ANIMATIONTIME}ms ease-in;\n\n ${media.lessThan(\"xSmall\")`\n width: 250px;\n height: 250px;\n border-radius: 15px;\n `}\n\n ${media.between(\"xSmall\", \"small\")`\n padding: 0;\n width: 280px;\n height: 280px;\n ${props => props.fullScreen}\n `}\n`\n\nclass Game extends React.Component {\n state = {\n isSwaping: false,\n fullScreen: \"\",\n }\n\n componentDidMount() {\n document.getElementById(\"GameWindow\").addEventListener(\"touchmove\", e => {\n e.preventDefault()\n })\n }\n\n onSwipeMove = position => {\n if (Math.abs(position.x) > 30 || Math.abs(position.y) > 30) {\n if (this.state.isSwaping === false) {\n this.setState(\n {\n isSwaping: true,\n },\n () => this.move(position)\n )\n }\n }\n }\n\n onSwipeEnd = () => {\n this.setState({\n isSwaping: false,\n })\n }\n\n move = position => {\n let direction\n if (Math.abs(position.x) > Math.abs(position.y)) {\n if (position.x > 0) {\n direction = GORIGHT\n } else {\n direction = GOLEFT\n }\n } else {\n if (position.y > 0) {\n direction = GODOWN\n } else {\n direction = GOUP\n }\n }\n this.props.action(direction)\n }\n\n disableButton = () => {\n if (\n this.props.undo > 0 &&\n this.props.numbers !== this.props.prevNumbers &&\n this.props.numbers !== this.props.prevPrevNumbers\n ) {\n return false\n } else {\n return true\n }\n }\n\n getButtonStyles = () => {\n if (\n this.props.undo > 0 &&\n this.props.numbers !== this.props.prevNumbers &&\n this.props.numbers !== this.props.prevPrevNumbers\n ) {\n return \"\"\n } else {\n return `opacity: 0.5; cursor: default;`\n }\n }\n\n render() {\n return (\n <>\n <Swipe\n onSwipeStart={this.onSwipeStart}\n onSwipeMove={this.onSwipeMove}\n onSwipeEnd={this.onSwipeEnd}\n >\n <GameWindowContainer isPlaying={this.props.isPlaying}>\n <GameWindow fullScreen={this.state.fullScreen} id=\"GameWindow\">\n <Cells extend={false} />\n </GameWindow>\n </GameWindowContainer>\n </Swipe>\n </>\n )\n }\n}\n\nconst mapStateToProps = state => {\n return {\n undo: state.AmountOfUnDos,\n numbers: state.Numbers,\n prevNumbers: state.PrevNumbers,\n prevPrevNumbers: state.PrevPrevNumbers,\n highestNumber: state.HighestNumber,\n isPlaying: state.IsPlaying,\n }\n}\n\nexport default connect(\n mapStateToProps,\n { action }\n)(Game)\n","import React from \"react\"\nimport styled from \"styled-components\"\n\nimport Game from \"./components/game\"\nimport { connect } from \"react-redux\"\nimport { action } from \"./redux/actions\"\nimport { GODOWN, GOUP, GORIGHT, GOLEFT } from \"./redux/constants\"\nimport media from \"./media-query/media\"\n\nconst Page = styled.div`\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n align-content: center;\n\n ${media.lessThan(\"small\")`\n user-select: none;\n `};\n`\n\nclass App extends React.Component {\n componentDidMount() {\n document.addEventListener(\"keydown\", this.checkKeyPress)\n }\n componentWillUnmount() {\n document.removeEventListener(\"keydown\", this.checkKeyPress)\n }\n\n checkKeyPress = e => {\n const key = e.key\n if (!e.repeat && this.props.isPlaying)\n if (key === \"ArrowDown\") {\n e.preventDefault()\n this.props.action(GODOWN)\n } else if (key === \"ArrowUp\") {\n e.preventDefault()\n this.props.action(GOUP)\n } else if (key === \"ArrowLeft\") {\n e.preventDefault()\n this.props.action(GOLEFT)\n } else if (key === \"ArrowRight\") {\n e.preventDefault()\n this.props.action(GORIGHT)\n }\n }\n\n render() {\n return (\n <Page id=\"MyGame\">\n <Game />\n </Page>\n )\n }\n}\n\nconst mapStateToProps = state => {\n return {\n isPlaying: state.IsPlaying,\n }\n}\n\nexport default connect(\n mapStateToProps,\n { action }\n)(App)\n","import React from \"react\"\nimport { store } from \"./redux/store\"\nimport { Provider } from \"react-redux\"\nimport App from \"./App\"\n\nconst MyGame = () => {\n return (\n <Provider store={store}>\n <App />\n </Provider>\n )\n}\n\nexport default MyGame\n","import React from \"react\"\n\nimport styled from \"styled-components\"\nimport { StaticQuery, graphql } from \"gatsby\"\nimport Img from \"gatsby-image\"\nimport Flippy, { FrontSide, BackSide } from \"react-flippy\"\n\nimport logoGlacial from \"../../images/logo.svg\"\nimport Calculator from \"../calculator/App\"\nimport Books from \"../books/App\"\nimport MyGame from \"../Game4096/MyGame\"\nimport media from \"../stylesComponents/media\"\nimport {\n Button,\n Arrow,\n ButtonTextFront,\n ButtonTextBack,\n} from \"../stylesComponents/buttons\"\n\nconst Row = styled.div`\n display: flex;\n flex-wrap: wrap;\n width: 100%;\n justify-content: space-around;\n\n ${media.lessThan(\"xLarge\")`\n margin-top: 0;\n `}\n`\n\nconst FlippyWrapper = styled.div`\n z-index: 10;\n`\n\nconst CardContainer = styled.div`\n margin: 50px;\n display: flex;\n justify-content: center;\n\n ${media.lessThan(\"xLarge\")`\n width: 100%;\n display: flex;\n justify-content: center;\n `}\n`\n\nconst CalculatorContainer = styled(CardContainer)`\n ${media.lessThan(\"xLarge\")`\n order: 2;\n `}\n\n ${media.greaterThan(\"xLarge\")`\n order: 0;\n `}\n`\n\nconst GlacialContainer = styled(CardContainer)`\n\n ${media.lessThan(\"small\")`\n order: 1;\n `}\n\n ${media.between(\"small\", \"xLarge\")`\n order: 1;\n `}\n\n ${media.greaterThan(\"xLarge\")`\n order: 0;\n `}\n\n`\n\nconst Front = styled(FrontSide)`\n padding: 0 !important;\n box-shadow: none !important;\n`\nconst Back = styled(BackSide)`\n padding: 0 !important;\n box-shadow: none !important;\n`\n\nconst FrontSideCard = styled.div`\n color: black;\n border-radius: 10px;\n width: 300px;\n height: 450px;\n background-color: transparent;\n opacity: 1;\n text-align: center;\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n align-content: space-between;\n`\n\nconst BackSideCard = styled(FrontSideCard)`\n background-color: black;\n align-content: space-between;\n`\n\nconst SuperFrontSide = styled(FrontSideCard)`\n width: 500px;\n height: 450px;\n\n ${media.lessThan(\"small\")`\n margin-left: 0;\n margin-right: 0;\n width: 100%;\n `}\n`\n\nconst SuperBackSide = styled(BackSideCard)`\n width: 500px;\n height: 450px;\n\n ${media.lessThan(\"large\")`\n margin-left: 0;\n margin-right: 0;\n width: 100%;\n `}\n`\n\nconst Picture = styled(Img)`\n margin-top: 10px;\n width: 250px;\n border-radius: 5px;\n cursor: pointer;\n`\n\nconst FrontButton = styled(Button)`\n margin-bottom: 30px;\n`\n\nconst BackButton = styled(FrontButton)`\n justify-content: flex-end;\n background-color: black;\n color: white;\n`\n\nconst ArrowBack = styled(Arrow)`\n margin-left: 0;\n margin-right: ${state => state.margin};\n transform: rotate(-135deg);\n`\n\nconst TextBack = styled.span`\n margin-top: 20px;\n letter-spacing: 2px;\n margin-bottom: 0;\n width: 100%;\n color: white;\n width: 90%;\n line-height: 24px;\n`\n\nconst TextFront = styled(TextBack)`\n margin-top: 0;\n color: black;\n`\n\nconst ExternalA = styled.a`\n color: white;\n`\n\nconst GlacialLogo = styled.img`\n width: 100px;\n`\nconst LogoOnPicture = styled.img`\n width: 75px;\n position: absolute;\n\n ${media.lessThan(\"small\")`\n width: 40px;\n `}\n`\n\nconst PictureGlacial = styled(Picture)`\n width: 600px;\n margin: 0;\n`\n\nconst GlacialWrapper = styled.div`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n\n ${media.lessThan(\"small\")`\n width: 300px;\n `}\n`\n\nconst getPicture = picture => (\n <StaticQuery\n query={graphql`\n query {\n glacial: file(relativePath: { eq: \"banner.png\" }) {\n childImageSharp {\n fluid(maxWidth: 1920) {\n ...GatsbyImageSharpFluid\n }\n }\n }\n }\n `}\n render={picture}\n />\n)\n\nexport default class MyProjects extends React.Component {\n state = {\n API: false,\n Glacial: false,\n Calculator: false,\n Game: false,\n marginFirst: \"10px\",\n marginSecond: \"0\",\n GlacialMarginFront: \"10px\",\n GlacialMarginBack: \"0\",\n marginThird: \"10px\",\n marginFourth: \"0\",\n marginFifth: \"10px\",\n marginSixth: \"0\",\n AutoPlay: true,\n }\n\n getPictureGlacial = data => {\n return (\n <a\n aria-label=\"GSAS\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n href=\"https://glacialscript.com\"\n >\n <GlacialWrapper>\n <PictureGlacial\n objectPosition=\"50% 50%\"\n alt=\"glacial\"\n fluid={data.glacial.childImageSharp.fluid}\n />\n <LogoOnPicture alt=\"logo\" src={logoGlacial} />\n </GlacialWrapper>\n </a>\n )\n }\n\n handleClick = (number, e, secNumber) => {\n e.preventDefault()\n if (this.state.AutoPlay) {\n this.setState({\n AutoPlay: false,\n })\n }\n let marginFront\n let marginBack\n\n if (secNumber === 1) {\n marginFront = \"45px\"\n marginBack = \"10px\"\n } else if (secNumber === 2) {\n marginFront = \"10px\"\n marginBack = \"45px\"\n }\n\n if (number === 1) {\n this.setState(prevState => ({\n API: !prevState.API,\n marginFirst: marginFront,\n marginSecond: marginBack,\n }))\n } else if (number === 2) {\n this.setState(prevState => ({\n Glacial: !prevState.Glacial,\n GlacialMarginFront: marginFront,\n GlacialMarginBack: marginBack,\n }))\n } else if (number === 3) {\n this.setState(prevState => ({\n Calculator: !prevState.Calculator,\n marginThird: marginFront,\n marginFourth: marginBack,\n }))\n } else if (number === 4) {\n this.setState(prevState => ({\n Game: !prevState.Game,\n marginFourth: marginFront,\n marginFifth: marginBack,\n }))\n }\n }\n\n render() {\n return (\n <>\n <Row>\n <CardContainer>\n <FlippyWrapper>\n <Flippy\n flipOnClick={false}\n isFlipped={this.state.API}\n flipDirection=\"horizontal\"\n >\n <Front>\n <FrontSideCard>\n <Books />\n <FrontButton onClick={e => this.handleClick(1, e, 1)}>\n <ButtonTextFront>about </ButtonTextFront>\n <Arrow margin={this.state.marginFirst} />\n </FrontButton>\n </FrontSideCard>\n </Front>\n <Back>\n <BackSideCard>\n <TextBack>\n <h4>May 2019</h4>\n <br />\n <p>\n Type the title of a book to search Google's{\" \"}\n <ExternalA\n aria-label=\"API\"\n href=\"https://developers.google.com/books/docs/v1/using#WorkingVolumes\"\n >\n database\n </ExternalA>\n .\n </p>\n <p>\n Recruitment task for{\" \"}\n <ExternalA\n aria-label=\"STXNEXT\"\n href=\"https://stxnext.com/\"\n >\n STXNEXT\n </ExternalA>{\" \"}\n company as a part of my practice.\n </p>\n <p>\n Through this{\" \"}\n <ExternalA\n aria-label=\"Github\"\n href=\"https://github.com/koniuszy/Api-stx\"\n >\n exercise\n </ExternalA>{\" \"}\n I have developed fetching skills.\n </p>\n </TextBack>\n <BackButton onClick={e => this.handleClick(1, e, 2)}>\n <ArrowBack margin={this.state.marginSecond} />\n <ButtonTextBack>back</ButtonTextBack>\n </BackButton>\n </BackSideCard>\n </Back>\n </Flippy>\n </FlippyWrapper>\n </CardContainer>\n\n <GlacialContainer>\n <FlippyWrapper>\n <Flippy\n flipOnClick={false}\n isFlipped={this.state.Glacial}\n flipDirection=\"horizontal\"\n >\n <Front>\n <SuperFrontSide>\n {getPicture(this.getPictureGlacial)}\n <TextFront>Glacial Script AS </TextFront>\n <FrontButton onClick={e => this.handleClick(2, e, 1)}>\n <ButtonTextFront>about </ButtonTextFront>\n <Arrow margin={this.state.GlacialMarginFront} />\n </FrontButton>\n </SuperFrontSide>\n </Front>\n <Back>\n <SuperBackSide key=\"back\">\n <TextBack>\n <h4>April 2019</h4>\n <ExternalA\n aria-label=\"React\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n href=\"https://reactjs.org\"\n >\n React\n </ExternalA>\n &\n <ExternalA\n aria-label=\"Gatsbsy\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n href=\"https://www.gatsbyjs.org\"\n >\n Gatsby\n </ExternalA>\n <br />\n <br />\n A company's website <br /> for my first <br />{\" \"}\n entrepreneurial attempt.\n <br />\n <br />\n <GlacialLogo alt=\"logo\" src={logoGlacial} />\n </TextBack>\n <BackButton onClick={e => this.handleClick(2, e, 2)}>\n <ArrowBack margin={this.state.GlacialMarginBack} />\n <ButtonTextBack>back</ButtonTextBack>\n </BackButton>\n </SuperBackSide>\n </Back>\n </Flippy>\n </FlippyWrapper>\n </GlacialContainer>\n\n <CalculatorContainer>\n <FlippyWrapper>\n <Flippy\n flipDirection=\"horizontal\"\n flipOnClick={false}\n isFlipped={this.state.Calculator}\n >\n <Front>\n <FrontSideCard>\n <Calculator />\n <TextFront>Mini calculator</TextFront>\n <FrontButton onClick={e => this.handleClick(3, e, 1)}>\n <ButtonTextFront>about </ButtonTextFront>\n <Arrow margin={this.state.marginThird} />\n </FrontButton>\n </FrontSideCard>\n </Front>\n <Back>\n <BackSideCard>\n <TextBack>\n <h4>February 2019</h4> <br />\n My first app in React. <br /> <br /> <br /> A challenge to\n create <br /> an app that looks <br />\n and works exactly <br />\n as the given model.\n </TextBack>\n <BackButton onClick={e => this.handleClick(3, e, 2)}>\n <ArrowBack margin={this.state.marginFourth} />\n <ButtonTextBack>back </ButtonTextBack>\n </BackButton>\n </BackSideCard>\n </Back>\n </Flippy>\n </FlippyWrapper>\n </CalculatorContainer>\n </Row>\n\n <Row>\n <GlacialContainer>\n <FlippyWrapper>\n <Flippy\n flipDirection=\"horizontal\"\n flipOnClick={false}\n isFlipped={this.state.Game}\n >\n <Front>\n <SuperFrontSide>\n <MyGame />\n <TextFront />\n <FrontButton onClick={e => this.handleClick(4, e, 1)}>\n <ButtonTextFront>about </ButtonTextFront>\n <Arrow margin={this.state.marginFifth} />\n </FrontButton>\n </SuperFrontSide>\n </Front>\n <Back>\n <SuperBackSide>\n <TextBack>\n <h4>July 2019</h4>\n <br /> A challenge for{\" \"}\n <ExternalA\n aria-label=\"Motimate\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n href=\"https://about.motimateapp.com/\"\n >\n Motimate\n </ExternalA>{\" \"}\n company to create a game based on 2048 concept.\n <br />\n <br />\n Click{\" \"}\n <ExternalA\n aria-label=\"MyGame\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n href=\"https://game4096.herokuapp.com/\"\n >\n here\n </ExternalA>{\" \"}\n to play with all features. <br />\n <br /> You can of course play here as well, use arrows or\n swipe on phone to move numbers!\n </TextBack>\n <BackButton onClick={e => this.handleClick(4, e, 2)}>\n <ArrowBack margin={this.state.marginFourth} />\n <ButtonTextBack>back</ButtonTextBack>\n </BackButton>\n </SuperBackSide>\n </Back>\n </Flippy>\n </FlippyWrapper>\n </GlacialContainer>\n </Row>\n </>\n )\n }\n}\n","import React from \"react\"\nimport Layout from \"../components/layout\"\nimport SEO from \"../components/seo\"\n\nimport MyProjects from \"../components/myProjects/myProjects\"\nimport Buttons from \"../components/stylesComponents/buttons\"\nimport Container from \"../components/stylesComponents/container\"\nimport { Arrow } from \"../components/arrow.js\"\n\nclass SecondPage extends React.Component {\n componentDidMount() {\n window.addEventListener(\"scroll\", this.trackScrolling)\n document.getElementById(\"arrow\").style.opacity = 1\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.trackScrolling)\n }\n\n isBottom(el) {\n return el.getBoundingClientRect().bottom <= window.innerHeight + 50\n }\n\n isArrow = true\n\n trackScrolling = () => {\n let wrappedElement = document.getElementById(\"footer\")\n if (this.isBottom(wrappedElement) && this.isArrow) {\n this.isArrow = false\n document.getElementById(\"arrow\").style.opacity = 0\n }\n if (!this.isBottom(wrappedElement) && !this.isArrow) {\n this.isArrow = true\n document.getElementById(\"arrow\").style.opacity = 1\n }\n }\n\n render() {\n return (\n <Layout>\n <SEO title=\"My Projects\" />\n <Container>\n <Arrow id=\"arrow\" />\n <Buttons\n firstName=\"home\"\n secondName=\"about me\"\n title=\"My projects\"\n to=\"/aboutMe/\"\n />\n <MyProjects />\n <span style={{ width: 1, height: 1 }} id=\"footer\" />\n </Container>\n </Layout>\n )\n }\n}\n\nexport default SecondPage\n","import { generateMedia } from \"styled-media-query\"\n\nconst media = generateMedia({\n huge: \"1600px\",\n xLarge: \"1400px\",\n large: \"1024px\",\n medium: \"768px\",\n small: \"600px\",\n})\n\nexport default media\n\n// https://github.com/morajabi/styled-media-query\n","import styled from \"styled-components\"\nimport media from \"./media\"\n\nconst Title = styled.h1`\n font-weight: 500;\n width: 50%;\n text-align: center;\n display: flex;\n justify-content: center;\n letter-spacing: 18px;\n line-height: 50px;\n user-select: none;\n margin-bottom: 10px;\n padding-bottom: 0;\n\n ${media.lessThan(\"small\")`\n width: 100%;\n letter-spacing: 10px;\n `}\n`\nexport default Title\n","/**\n * Layout component that queries for data\n * with Gatsby's StaticQuery component\n *\n * See: https://www.gatsbyjs.org/docs/static-query/\n */\n\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { StaticQuery, graphql } from \"gatsby\"\n\nimport \"./layout.css\"\n\nconst Layout = ({ children }) => (\n <StaticQuery\n query={graphql`\n query SiteTitleQuery {\n site {\n siteMetadata {\n title\n }\n }\n }\n `}\n render={data => <main>{children}</main>}\n />\n)\n\nLayout.propTypes = {\n children: PropTypes.node.isRequired,\n}\n\nexport default Layout\n","/**\n * SEO component that queries for data with\n * Gatsby's useStaticQuery React hook\n *\n * See: https://www.gatsbyjs.org/docs/use-static-query/\n */\n\nimport React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Helmet from \"react-helmet\"\nimport { useStaticQuery, graphql } from \"gatsby\"\n\nfunction SEO({ description, lang, meta, keywords, title }) {\n const { site } = useStaticQuery(\n graphql`\n query {\n site {\n siteMetadata {\n title\n description\n author\n }\n }\n }\n `\n )\n\n const metaDescription = description || site.siteMetadata.description\n\n return (\n <Helmet\n htmlAttributes={{\n lang,\n }}\n title={title}\n titleTemplate={`%s | ${site.siteMetadata.title}`}\n meta={[\n {\n name: `description`,\n content: metaDescription,\n },\n {\n property: `og:title`,\n content: title,\n },\n {\n property: `og:description`,\n content: metaDescription,\n },\n {\n property: `og:type`,\n content: `website`,\n },\n {\n name: `twitter:card`,\n content: `summary`,\n },\n {\n name: `twitter:creator`,\n content: site.siteMetadata.author,\n },\n {\n name: `twitter:title`,\n content: title,\n },\n {\n name: `twitter:description`,\n content: metaDescription,\n },\n ]\n .concat(\n keywords.length > 0\n ? {\n name: `keywords`,\n content: keywords.join(`, `),\n }\n : []\n )\n .concat(meta)}\n />\n )\n}\n\nSEO.defaultProps = {\n lang: `en`,\n meta: [],\n keywords: [],\n}\n\nSEO.propTypes = {\n description: PropTypes.string,\n lang: PropTypes.string,\n meta: PropTypes.array,\n keywords: PropTypes.arrayOf(PropTypes.string),\n title: PropTypes.string.isRequired,\n}\n\nexport default SEO\n","import styled from \"styled-components\"\n\nconst Container = styled.div`\n position: relative;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n align-content: flex-start;\n align-items: center;\n width: 100vw;\n min-height: 100vh;\n min-height: calc(var(--vh, 1vh) * 100);\n user-select: none;\n`\n\nexport default Container\n","// https://github.com/Wufe/react-particles-js#readme\n// https://github.com/VincentGarreau/particles.js/\n\nconst ParticleSett = {\n particles: {\n number: {\n value: 28,\n density: {\n enable: true,\n value_area: 800,\n },\n },\n color: {\n value: \"#000000\",\n },\n shape: {\n type: \"circle\",\n stroke: {\n width: 0,\n color: \"#000000\",\n },\n polygon: {\n nb_sides: 5,\n },\n image: {\n src: \"img/github.svg\",\n width: 100,\n height: 100,\n },\n },\n opacity: {\n value: 1,\n random: false,\n anim: {\n enable: false,\n speed: 1,\n opacity_min: 0.1,\n sync: false,\n },\n },\n size: {\n value: 2,\n random: true,\n anim: {\n enable: false,\n speed: 80,\n size_min: 0.1,\n sync: false,\n },\n },\n line_linked: {\n enable: true,\n distance: 150,\n color: \"#000000\",\n opacity: 1,\n width: 1,\n },\n move: {\n enable: true,\n speed: 3,\n direction: \"top-right\",\n random: false,\n straight: false,\n out_mode: \"out\",\n bounce: false,\n attract: {\n enable: false,\n rotateX: 600,\n rotateY: 1200,\n },\n },\n },\n interactivity: {\n detect_on: \"canvas\",\n events: {\n onhover: {\n enable: true,\n mode: [\"grab\", \"repulse\"],\n },\n onclick: {\n enable: true,\n mode: \"push\",\n },\n resize: true,\n },\n modes: {\n grab: {\n distance: 200,\n line_linked: {\n opacity: 0.5,\n },\n },\n bubble: {\n distance: 800,\n size: 80,\n duration: 2,\n opacity: 0.8,\n speed: 3,\n },\n repulse: {\n distance: 100,\n duration: 0.4,\n },\n push: {\n particles_nb: 4,\n },\n remove: {\n particles_nb: 2,\n },\n },\n },\n retina_detect: true,\n}\n\nexport default ParticleSett\n","import React from \"react\"\nimport Particles from \"react-particles-js\"\n\nimport \"./layout.css\"\nimport styled from \"styled-components\"\nimport ParticleSett from \"./particlesSettings\"\n\nconst Background = styled(Particles)`\n position: fixed;\n width: 100vw;\n height: 100vh;\n bottom: 0;\n z-index: 2;\n`\n\nconst BackgroundParticles = () => {\n return (\n <>\n <Background params={ParticleSett} />\n </>\n )\n}\n\nexport default BackgroundParticles\n","import React from \"react\"\n\nimport styled from \"styled-components\"\nimport BackgroundParticles from \"../../components/backgroundParticle\"\nimport Title from \"./title\"\nimport AniLink from \"gatsby-plugin-transition-link/AniLink\"\nimport media from \"../stylesComponents/media\"\n\nexport const Button = styled.button`\n background-color: black;\n color: white;\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 3px;\n opacity: 0.9;\n user-select: none;\n width: 150px;\n height: 32px;\n overflow: hidden;\n\n &:hover {\n opacity: 1;\n cursor: pointer;\n }\n\n &:focus {\n outline: none;\n }\n`\nconst Link = styled(AniLink)`\n z-index: 3;\n height: 32px;\n\n ${media.lessThan(\"small\")`\n order: 5\n margin-top: 20px;\n `}\n`\n\nconst ButtonsContainer = styled.div`\n width: 100%;\n z-index: 3;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n align-content: center;\n order: -10;\n margin-top: 50px;\n margin-bottom: 50px;\n`\n\nexport const Arrow = styled.div`\n transform: rotate(45deg);\n display: inline-block;\n width: 15px;\n height: 15px;\n border-width: 2px 2px 0 0;\n border-style: solid;\n margin-left: ${state => state.margin};\n transition: margin 150ms;\n`\n\nexport const ButtonTextFront = styled.span`\n margin-left: 10px;\n letter-spacing: 3px;\n`\n\nexport const ButtonTextBack = styled(ButtonTextFront)`\n margin-left: 0;\n margin-right: 10px;\n`\nexport default class MyProjects extends React.Component {\n state = {\n home: \"10px\",\n me: \"0\",\n realty: \"10px\",\n }\n\n handleClick = name => {\n if (name === this.props.firstName) {\n this.setState({\n home: \"45px\",\n })\n } else if (name === this.props.thirdName) {\n this.setState({\n realty: \"45px\",\n })\n }\n }\n\n render() {\n return (\n <ButtonsContainer>\n <Link\n fade\n aria-label=\"home\"\n style={{ textDecoration: \"none\" }}\n duration={0.75}\n to=\"/\"\n >\n <Button onClick={() => this.handleClick(this.props.firstName)}>\n <ButtonTextFront>{this.props.firstName}</ButtonTextFront>\n </Button>\n </Link>\n\n <Title> {this.props.title} </Title>\n\n <Link\n style={{ textDecoration: \"none\" }}\n fade\n duration={0.75}\n to={this.props.to}\n aria-label=\"main\"\n >\n <Button onClick={() => this.handleClick(this.props.secondName)}>\n <ButtonTextFront>{this.props.secondName}</ButtonTextFront>\n </Button>\n </Link>\n\n <BackgroundParticles />\n </ButtonsContainer>\n )\n }\n}\n","import styled, { keyframes } from \"styled-components\"\nimport media from \"../components/stylesComponents/media\"\n\nconst bounce = keyframes`\n 0%, 20%, 50%, 80%, 100% {\n -moz-transform: translateY(0);\n -ms-transform: translateY(0);\n -webkit-transform: translateY(0);\n transform: translateY(0);\n }\n 40% {\n -moz-transform: translateY(-30px);\n -ms-transform: translateY(-30px);\n -webkit-transform: translateY(-30px);\n transform: translateY(-30px);\n }\n 60% {\n -moz-transform: translateY(-15px);\n -ms-transform: translateY(-15px);\n -webkit-transform: translateY(-15px);\n transform: translateY(-15px);\n }\n`\n\nexport const Arrow = styled.div`\n display: none;\n z-index: 1000;\n position: fixed;\n width: 0;\n height: 0;\n border-left: 10px solid transparent;\n border-right: 10px solid transparent;\n border-top: 10px solid black;\n right: 3%;\n bottom: 20%;\n animation: ${bounce} 3s infinite;\n opacity: 1;\n transition: opacity 1s ease;\n\n ${media.lessThan(\"small\")`\n display: block;\n `}\n`\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iOTY1IiBoZWlnaHQ9IjEzNjciIHZpZXdCb3g9IjAgMCA5NjUgMTM2NyI+CiAgICA8ZGVmcz4KICAgICAgICA8cGF0aCBpZD0iYSIgZD0iTTAgLjA5MWg4Mi43ODRWMTIySDB6Ii8+CiAgICAgICAgPHBhdGggaWQ9ImMiIGQ9Ik0wIDEzNjcuMDJoOTY0LjczN1YuMDAySDB6Ii8+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMTI0NS4wMikiPgogICAgICAgICAgICA8bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+CiAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNhIi8+CiAgICAgICAgICAgIDwvbWFzaz4KICAgICAgICAgICAgPHBhdGggZmlsbD0iI0ZGRiIgZD0iTTY4Ljk1OCA0MS4yMzFjMC0xNS4zNDQtMTIuMzA1LTI3LjY1Mi0yNy40OC0yNy42NTItMTUuNTEyIDAtMjcuNjUyIDEyLjMwOC0yNy42NTIgMjcuNjUyIDAgMTUuMTc4IDEyLjE0IDI3LjY1NiAyNy42NTMgMjcuNjU2IDE1LjE3NCAwIDI3LjQ3OS0xMi40NzggMjcuNDc5LTI3LjY1NnpNODIuNzg0IDEuNjA5djc5LjI0OGMwIDIyLjkzMS0xOC41NDcgNDEuMTQzLTQxLjQ3OCA0MS4xNDMtMTYuMTg0IDAtMzAuMzQ4LTkuMjc0LTM3LjI2MS0yMi43NjVsMTEuMTMtNy43NTZjNC41NDkgOS45NDcgMTQuMzMgMTcuMDMgMjYuMTMgMTcuMDMgMTUuMTc1IDAgMjcuNDg3LTEyLjMwOCAyNy40ODctMjcuNjUyVjcwLjU3Yy02LjIzNSA3LjI1Mi0xNS41MTMgMTEuODA1LTI3LjY1MiAxMS44MDVDMTguMzc1IDgyLjM3NSAwIDYzLjk5NiAwIDQxLjIzMSAwIDE4LjMgMTguMzc1LjA5MSA0MS4xNC4wOTFjMTIuMTM5IDAgMjEuNDE3IDQuNTUyIDI3LjY1MiAxMS44MDFWMS42MDloMTMuOTkyeiIgbWFzaz0idXJsKCNiKSIvPgogICAgICAgIDwvZz4KICAgICAgICA8bWFzayBpZD0iZCIgZmlsbD0iI2ZmZiI+CiAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI2MiLz4KICAgICAgICA8L21hc2s+CiAgICAgICAgPHBhdGggZmlsbD0iI0ZGRiIgZD0iTTEwNi4zNjYgMTMyNS44NzdoMTMuODI2di0xMjYuNDYxaC0xMy44MjZ6TTIwOC41MzUgMTI4Ni4yNTFjMC0xNS4zNDQtMTIuMTQtMjcuNjUyLTI3LjQ4LTI3LjY1MmEyNy41NTggMjcuNTU4IDAgMCAwLTI3LjY1MiAyNy42NTIgMjcuNTYgMjcuNTYgMCAwIDAgMjcuNjUzIDI3LjY1NmMxNS4zMzkgMCAyNy40NzktMTIuMzA5IDI3LjQ3OS0yNy42NTZ6bTEzLjgyNi0zOS42MjJ2NzkuMjQ4aC0xMy44MjZ2LTExLjI5NmMtNi43NCA3LjkyMi0xNi44NjEgMTIuODE0LTI5LjM0IDEyLjgxNC0yMS4yNDMgMC0zOS42MTgtMTguMzc5LTM5LjYxOC00MS4xNDQgMC0yMi43NjIgMTguMzc1LTQxLjE0IDM5LjYxOS00MS4xNCAxMi40NzggMCAyMi41OTkgNC44ODggMjkuMzM5IDEyLjgxNHYtMTEuMjk2aDEzLjgyNnpNMjQxLjczMiAxMjg2LjI1MWMwLTIyLjkzMSAxOC4zNzUtNDEuMTQgNDEuNDgtNDEuMTQgMTYuODYgMCAzMS4xOSA5LjYxIDM3LjYgMjMuOTQ0bC0xMi42NTIgNS43MzFjLTQuMzgzLTkuNjA5LTEzLjQ4OC0xNi4xODctMjQuOTQ5LTE2LjE4Ny0xNS44NTIgMC0yNy42NTMgMTEuOTczLTI3LjY1MyAyNy42NTIgMCAxNS42ODMgMTEuODAxIDI3LjY1NiAyNy42NTMgMjcuNjU2IDExLjQ2MSAwIDIwLjU2Ni02LjU3OCAyNC45NS0xNi4xODdsMTIuNjUgNS43MzFjLTYuNDA5IDE0LjMzLTIwLjczOSAyMy45NDQtMzcuNiAyMy45NDQtMjMuMTA0IDAtNDEuNDc5LTE4LjIwOS00MS40NzktNDEuMTQ0TTM0MC4zNDEgMTMyNS44NzdoMTMuNjUzdi03OS4yNDhoLTEzLjY1M3Y3OS4yNDh6bS0yLjM2NC0xMDMuMDIyYzAtNS4yMyA0LjIxNy05LjEwOCA5LjI3OC05LjEwOCA0Ljg4NyAwIDkuMTA0IDMuODc4IDkuMTA0IDkuMTA4IDAgNS4wNTYtNC4yMTcgOS4xMDQtOS4xMDQgOS4xMDQtNS4wNjEgMC05LjI3OC00LjA0OC05LjI3OC05LjEwNHpNNDQ0LjcwMiAxMjg2LjI1MWMwLTE1LjM0NC0xMi4xNC0yNy42NTItMjcuNDgtMjcuNjUyYTI3LjU1OSAyNy41NTkgMCAwIDAtMjcuNjUyIDI3LjY1MiAyNy41NiAyNy41NiAwIDAgMCAyNy42NTMgMjcuNjU2YzE1LjMzOSAwIDI3LjQ3OS0xMi4zMDkgMjcuNDc5LTI3LjY1NnptMTMuODI2LTM5LjYyMnY3OS4yNDhoLTEzLjgyNnYtMTEuMjk2Yy02Ljc0IDcuOTIyLTE2Ljg2MSAxMi44MTQtMjkuMzQgMTIuODE0LTIxLjI0MyAwLTM5LjYxOC0xOC4zNzktMzkuNjE4LTQxLjE0NCAwLTIyLjc2MiAxOC4zNzUtNDEuMTQgMzkuNjE5LTQxLjE0IDEyLjQ3OCAwIDIyLjU5OSA0Ljg4OCAyOS4zMzkgMTIuODE0di0xMS4yOTZoMTMuODI2ek00ODIuMTA5IDEzMjUuODc3aDEzLjgyNnYtMTI2LjQ2MWgtMTMuODI2ek01NTQuOTMyIDEzMTcuMTA4bDcuNzU3LTExLjI5NmM1LjIyNiA0LjcyMiAxMy40ODcgOS4xMDUgMjIuNzU4IDkuMTA1IDkuMjc3IDAgMTUuMzQ2LTQuMzgzIDE1LjM0Ni0xMS42MzUgMC04LjA5Mi04LjI2LTEwLjExNy0xNy4xOTktMTIuNjQ0LTExLjYzNS0zLjIwNC0yNS4yODgtNi41NzgtMjUuMjg4LTIyLjI1NyAwLTE1LjAwOSAxMi45ODItMjMuMjcgMjguNDk1LTIzLjI3IDkuMjcxIDAgMTguNTQ4IDMuMDM1IDI1LjI5IDcuNzU3bC03LjkyNCAxMC42MjFjLTYuNTc0LTQuNzItMTIuOTgyLTYuMjM3LTE4LjU0OC02LjIzNy04Ljc3MiAwLTE0LjMzIDMuNzA4LTE0LjMzIDkuNzc4IDAgNy43NTYgOS42MSA5LjYxMSAxOS43MjMgMTIuMzA4IDExLjI5NiAzLjAzNSAyMy4xMDQgNy40MiAyMy4xMDQgMjIuOTM1IDAgMTUuODQ4LTExLjYzNSAyNS4xMjItMjkuMzQgMjUuMTIyLTEzLjQ4OCAwLTIyLjkzLTUuMjI2LTI5Ljg0NC0xMC4yODdNNjI4LjkzOCAxMjg2LjI1MWMwLTIyLjkzMSAxOC4zNzUtNDEuMTQgNDEuNDgtNDEuMTQgMTYuODYgMCAzMS4xOSA5LjYxIDM3LjU5OCAyMy45NDRsLTEyLjY1IDUuNzMxYy00LjM4My05LjYwOS0xMy40ODgtMTYuMTg3LTI0Ljk0OS0xNi4xODctMTUuODUyIDAtMjcuNjUzIDExLjk3My0yNy42NTMgMjcuNjUyIDAgMTUuNjgzIDExLjgwMSAyNy42NTYgMjcuNjUzIDI3LjY1NiAxMS40NjEgMCAyMC41NjYtNi41NzggMjQuOTUtMTYuMTg3bDEyLjY1IDUuNzMxYy02LjQwOSAxNC4zMy0yMC43NCAyMy45NDQtMzcuNiAyMy45NDQtMjMuMTA0IDAtNDEuNDc5LTE4LjIwOS00MS40NzktNDEuMTQ0TTc3MC44ODUgMTI0OC4xNDdsLTQuNzIyIDExLjgwM2MtMi4wMTktLjg0My00LjM4Mi0xLjM1MS02LjQwOC0xLjM1MS0xMS44IDAtMjAuNzM5IDEwLjc5LTIwLjczOSAyNS4yOTJ2NDEuOTg2SDcyNS4xOXYtNzkuMjQ4aDEzLjgyNnYxMi4zMDljNC4yMTctOC40MzIgMTAuOTY0LTEzLjgyNyAyMC40MDctMTMuODI3IDQuNzIxIDAgOC43NjYgMS4zNDggMTEuNDYyIDMuMDM1TTc4My42ODIgMTMyNS44NzdoMTMuNjUzdi03OS4yNDhoLTEzLjY1M3Y3OS4yNDh6bS0yLjM2NC0xMDMuMDIyYzAtNS4yMyA0LjIxNy05LjEwOCA5LjI3Ny05LjEwOCA0Ljg4OCAwIDkuMTA1IDMuODc4IDkuMTA1IDkuMTA4IDAgNS4wNTYtNC4yMTcgOS4xMDQtOS4xMDUgOS4xMDQtNS4wNiAwLTkuMjc3LTQuMDQ4LTkuMjc3LTkuMTA0ek04OTIuMjYgMTI4Ni4yNTFhMjcuNTU5IDI3LjU1OSAwIDAgMC0yNy42NTMtMjcuNjUyYy0xNS4zNCAwLTI3LjQ4NiAxMi4zMDgtMjcuNDg2IDI3LjY1MiAwIDE1LjM0NyAxMi4xNDUgMjcuNjU2IDI3LjQ4NiAyNy42NTZhMjcuNTYgMjcuNTYgMCAwIDAgMjcuNjUzLTI3LjY1Nm0xMy44MjYgMGMwIDIyLjc2NS0xOC4zNzUgNDEuMTQ0LTM5LjYyNiA0MS4xNDQtMTIuNDc5IDAtMjIuNTkzLTQuODkyLTI5LjM0LTEyLjgxNHY1MS43NjVoLTEzLjgyNnYtMTE5LjcxN2gxMy44Mjd2MTEuMjk2YzYuNzQ2LTcuOTI2IDE2Ljg2LTEyLjgxNCAyOS4zMzktMTIuODE0IDIxLjI1IDAgMzkuNjI1IDE4LjM3OCAzOS42MjUgNDEuMTRNOTY0LjczNyAxMjU5LjI3M2gtMTYuNTIydjY2LjYwNGgtMTMuOTkzdi02Ni42MDRoLTE2LjY5NXYtMTIuNjQ0aDE2LjY5NXYtMjguNDk2aDEzLjk5M3YyOC40OTVoMTYuNTIyek04NDcuMzg3IDMyYy0zMC45MDMgMC01Ni4wNDIgMjUuMTQyLTU2LjA0MiA1Ni4wNDUgMCAzMC45MDQgMjUuMTQgNTYuMDQyIDU2LjA0MiA1Ni4wNDIgMzAuOTAzIDAgNTYuMDQyLTI1LjEzOCA1Ni4wNDItNTYuMDQyQzkwMy40MyA1Ny4xNDIgODc4LjI5IDMyIDg0Ny4zODcgMzJtMCAxNDQuMDg0Yy00OC41NDIgMC04OC4wMzktMzkuNDkyLTg4LjAzOS04OC4wNCAwLTQ4LjU0NSAzOS40OTctODguMDQxIDg4LjA0LTg4LjA0MSA0OC41NDEgMCA4OC4wMzggMzkuNDk2IDg4LjAzOCA4OC4wNDIgMCA0OC41NDctMzkuNDk3IDg4LjAzOS04OC4wMzkgODguMDM5TTczNy43IDQ4MS45MjhWNDI4LjdjMC0xNDIuMTk2LTExNS42OS0yNTcuODg2LTI1Ny44OS0yNTcuODg2LTE0Mi4xOTggMC0yNTcuODg1IDExNS42OS0yNTcuODg1IDI1Ny44ODZ2NTMuMjI5aDExNi45NzlsMjgyLjM0NCAyNjUuMDY3Yy02Ljc4NSA3Mi4wOTYtNjcuNiAxNDQuNzA3LTE0MS40MzggMTQ0LjcwNy03OC4zNjEgMC0xNDIuMTE0LTYzLjc1My0xNDIuMTE0LTE0Mi4xMmwuMjE1LTQ5LjQzOEgyMjEuOTI1djQ5LjQzN2MwIDE0Mi4yMDIgMTE1LjY4NyAyNTcuODkyIDI1Ny44ODUgMjU3Ljg5MiAxNDIuMiAwIDI1Ny44OS0xMzEuNjg4IDI1Ny44OS0yNzMuODl2LTk2LjkyNUg1NDMuNTA5TDMzOS4yNTggNDQ0LjY5NWwuMjA3LTM4LjMyYzEwLjc0NC02Ny43OTMgNjkuNTc5LTExOS43OSAxNDAuMzQ1LTExOS43OSA3OC4zNjYgMCAxNDIuMTE4IDYzLjc1MiAxNDIuMTE4IDE0Mi4xMTR2NTMuMjNINzM3Ljd6IiBtYXNrPSJ1cmwoI2QpIi8+CiAgICA8L2c+Cjwvc3ZnPgo=\""],"sourceRoot":""}