├── components ├── Emoji │ ├── Emoji.css │ └── Emoji.js ├── Art │ ├── Art.css │ ├── Art.js │ └── Art_alt.js ├── Copy │ ├── Copy.css │ └── Copy.js ├── Phrase │ ├── Phrase.css │ └── Phrase.js └── Customizer │ ├── Customizer.css │ ├── Customizer.js │ └── emojis.js ├── .gitignore ├── emoji-demo.gif ├── design ├── OhNo-Emoji.sketch ├── screenshots │ ├── Open.png │ └── Closed.png └── html │ ├── img │ └── close.svg │ ├── index.html │ └── style.css ├── icons ├── touch-icon-ipad.png ├── touch-icon-iphone.png ├── touch-icon-ipad-retina.png ├── touch-icon-iphone-retina.png ├── touch-icon-iphone-167x167.png └── touch-icon-iphone-180x180.png ├── server.js ├── webpack.config.js ├── package.json ├── app ├── app.html ├── app.js └── app.css ├── README.md └── 2016-emoji-list.csv /components/Emoji/Emoji.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | public/app_packed.js 4 | .idea/ -------------------------------------------------------------------------------- /emoji-demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eric-lobdell/emoji-gram/HEAD/emoji-demo.gif -------------------------------------------------------------------------------- /design/OhNo-Emoji.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eric-lobdell/emoji-gram/HEAD/design/OhNo-Emoji.sketch -------------------------------------------------------------------------------- /design/screenshots/Open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eric-lobdell/emoji-gram/HEAD/design/screenshots/Open.png -------------------------------------------------------------------------------- /icons/touch-icon-ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eric-lobdell/emoji-gram/HEAD/icons/touch-icon-ipad.png -------------------------------------------------------------------------------- /icons/touch-icon-iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eric-lobdell/emoji-gram/HEAD/icons/touch-icon-iphone.png -------------------------------------------------------------------------------- /design/screenshots/Closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eric-lobdell/emoji-gram/HEAD/design/screenshots/Closed.png -------------------------------------------------------------------------------- /icons/touch-icon-ipad-retina.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eric-lobdell/emoji-gram/HEAD/icons/touch-icon-ipad-retina.png -------------------------------------------------------------------------------- /icons/touch-icon-iphone-retina.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eric-lobdell/emoji-gram/HEAD/icons/touch-icon-iphone-retina.png -------------------------------------------------------------------------------- /icons/touch-icon-iphone-167x167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eric-lobdell/emoji-gram/HEAD/icons/touch-icon-iphone-167x167.png -------------------------------------------------------------------------------- /icons/touch-icon-iphone-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eric-lobdell/emoji-gram/HEAD/icons/touch-icon-iphone-180x180.png -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var app = express(); 3 | 4 | // Serve static shit 5 | app.use(express.static(__dirname + '/public')); 6 | app.use(express.static(__dirname + '/components/')); 7 | app.get("/", function(req, res) { 8 | res.sendfile(__dirname+'/app/app.html') 9 | }); 10 | 11 | // Run it 12 | app.listen(8080, function () { 13 | console.log('Emojiart server is listening at http://localhost:8080'); 14 | }); 15 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack'); 2 | var path = require('path'); 3 | var BUILD_DIR = path.resolve('./public'); 4 | 5 | var config = { 6 | entry: './app/app.js', 7 | output: { 8 | path: BUILD_DIR, 9 | filename: '/app_packed.js' 10 | }, 11 | module : { 12 | loaders : [ 13 | { 14 | test : /\.js?/, 15 | exclude: /node_modules/, 16 | loader: 'babel-loader', 17 | query: { 18 | presets: ['es2015', 'react'] 19 | } 20 | }, 21 | { 22 | test: /\.json$/, 23 | loader: 'json' 24 | }, 25 | { test: /\.css$/, loader: "style-loader!css-loader" } 26 | ] 27 | } 28 | }; 29 | 30 | module.exports = config; 31 | -------------------------------------------------------------------------------- /components/Art/Art.css: -------------------------------------------------------------------------------- 1 | .Art { 2 | box-sizing: border-box; 3 | width: 330px; 4 | margin: 0 auto; 5 | position: relative; 6 | bottom: 80px; 7 | display: block; 8 | padding: 175px 50px 0; 9 | overflow: auto; 10 | color: #aaa; 11 | text-align: center; 12 | background: #fff; 13 | -webkit-transition: all 300ms cubic-bezier(0.060, 0.120, 0.000, 0.845); 14 | opacity: 1; 15 | -webkit-transform: translateY(0); 16 | white-space: pre; 17 | line-height: 16.5pt; 18 | } 19 | 20 | textarea{ 21 | overflow:hidden; 22 | min-height: 200px; 23 | font-size: 16px; 24 | border: none; 25 | resize: none; 26 | width: 50%; 27 | text-align: center; 28 | } 29 | 30 | .Art[hidden] { 31 | opacity: 0; 32 | -webkit-transform: translateY(50px); 33 | } 34 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "emojiart", 3 | "version": "1.0.0", 4 | "description": "React emoji art generator", 5 | "main": "app/app.js", 6 | "scripts": { 7 | "dev": "webpack --watch", 8 | "build": "webpack -p" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "emojiart" 13 | }, 14 | "keywords": [ 15 | "letters", 16 | "emoji art", 17 | "app" 18 | ], 19 | "author": "Michael Dick and Eric Lobdell", 20 | "license": "ISC", 21 | "dependencies": { 22 | "clipboard": "^1.5.10", 23 | "express": "^4.13.4", 24 | "react": "^15.0.1", 25 | "react-dom": "^15.0.1" 26 | }, 27 | "devDependencies": { 28 | "babel-core": "^6.7.7", 29 | "babel-loader": "^6.2.4", 30 | "babel-preset-es2015": "^6.6.0", 31 | "babel-preset-react": "^6.5.0", 32 | "css-loader": "^0.23.1", 33 | "json-loader": "^0.5.4", 34 | "style-loader": "^0.13.1", 35 | "webpack": "^1.12.14" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | emoji-gram 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /components/Emoji/Emoji.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by amitava on 02/06/16. 3 | */ 4 | import React from 'react'; 5 | import css from './Emoji.css'; 6 | 7 | class Emoji extends React.Component { 8 | 9 | constructor() { 10 | super(); 11 | this.state = { 12 | showAlert: false 13 | } 14 | } 15 | 16 | _handleClick() { 17 | var that = this; 18 | that.setState({ showAlert: true }); 19 | setTimeout(function() { 20 | that.setState({ showAlert: false }); 21 | }, 3000); 22 | } 23 | 24 | render() { 25 | new Clipboard('#copy'); 26 | 27 | return ( 28 | 34 | ); 35 | } 36 | } 37 | 38 | export default Copy; 39 | -------------------------------------------------------------------------------- /design/html/img/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | X 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /components/Copy/Copy.css: -------------------------------------------------------------------------------- 1 | .Copy { 2 | width: 40%; 3 | height: 30px; 4 | border-right: 1px solid #E2E2E2; 5 | border-left: 1px solid #E2E2E2; 6 | margin: 0 auto; 7 | position: fixed; 8 | z-index: 1000; 9 | bottom: 30px; 10 | left: 0; 11 | right: 0; 12 | padding-bottom: 18px; 13 | display: block; 14 | -webkit-transition: all 300ms cubic-bezier(0.060, 0.120, 0.000, 0.845); 15 | -webkit-transform: translateY(0); 16 | } 17 | 18 | .select-btn { 19 | background: #74D6F8; 20 | border: solid #64C6E8 1px; 21 | -webkit-border-radius: 100; 22 | -moz-border-radius: 100; 23 | border-radius: 100px; 24 | text-align: center; 25 | margin: 0 auto; 26 | width: 200px; 27 | padding: 14px 0px 13px 0px; 28 | text-decoration: none; 29 | -webkit-box-shadow: 0px 2px 4px rgba(0, 0, 0, .20); 30 | -moz-box-shadow: 0px 2px 4px rgba(0, 0, 0, .20); 31 | box-shadow: 0px 2px 4px rgba(0, 0, 0, .20); 32 | font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; 33 | color: #FFF; 34 | font-size: 16px; 35 | font-weight: 500; 36 | letter-spacing: 0.10rem; 37 | /* Disallow button text selection */ 38 | -webkit-user-select: none; 39 | user-select: none; 40 | } 41 | 42 | .select-btn:hover{ 43 | background: #54cdf8; 44 | } 45 | 46 | .Copy[hidden] { 47 | -webkit-transform: translateY(300px); 48 | } 49 | 50 | @media only screen and (max-width: 600px) { 51 | .Copy { 52 | width: 60%; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /components/Phrase/Phrase.css: -------------------------------------------------------------------------------- 1 | .Phrase { 2 | width: auto; 3 | padding: 25px 50px 0px 20px; 4 | right: 0; 5 | left: 0; 6 | position: fixed; 7 | background-color: #FFF; 8 | z-index: 1000; 9 | } 10 | 11 | .Phrase input { 12 | font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; 13 | font-style: normal; 14 | font-variant: normal; 15 | font-weight: 200; 16 | font-size: 24px; 17 | letter-spacing: .15rem; 18 | text-transform: uppercase; 19 | color: #8D8D8D; 20 | width: 100%; 21 | height: 30px; 22 | padding-bottom: 10px; 23 | border: none; 24 | border-bottom: 1px solid #E2E2E2; 25 | border-radius: 0; 26 | } 27 | 28 | .Phrase button.clear{ 29 | border: 0; 30 | padding: 0; 31 | cursor: pointer; 32 | width: 40px; 33 | position: absolute; 34 | right: 35px; 35 | top: 15px; 36 | background: rgba(0, 0, 0, 0); 37 | color: #D16E6E; 38 | font-weight: 100; 39 | font-size: 2.5rem; 40 | opacity: .8; 41 | } 42 | 43 | .Phrase .tip{ 44 | display: none; 45 | position: absolute; 46 | top: 22px; 47 | right: 90px; 48 | background: #000; 49 | color: #CCC; 50 | padding: 5px 16px; 51 | box-shadow: 0 1px 2px rgba(0,0,0,.30); 52 | font-size: 1.6rem; 53 | } 54 | 55 | .Phrase .tip:after{ 56 | display: none; 57 | content: ' '; 58 | position: absolute; 59 | top: 0px; 60 | right: -22px; 61 | width: 0; 62 | height: 0; 63 | border-top: 22px solid rgba(0, 0, 0, 0); 64 | border-bottom: 22px solid rgba(0, 0, 0, 0); 65 | border-left: 22px solid #000; 66 | } 67 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Emoji-gram 2 | 3 | ### A reactjs emoji word-art generator 4 | Like ascii art, type a phrase and this app will render emoji letterforms. It's like, emoji replaces text with pictures, this replaces text with pictures, too... but better. 5 | 6 | Check out the demo [emojigram.ohnotype.co](http://emojigram.ohnotype.co) 7 | 8 | ![screenshot](emoji-demo.gif) 9 | 10 | ### Install 11 | First clone or download the app to your local machine, then install all dependencies with: 12 | ```sh 13 | $ npm install 14 | ``` 15 | 16 | ### Run 17 | Running the app is an easy few steps after you've installed it. First boot the express server that is included by running: 18 | ```sh 19 | $ npm start 20 | ``` 21 | You should be able to view the app in your web browser at: http://localhost:8080. 22 | 23 | ### Dev 24 | Want to contribute? Great! 25 | 26 | To develop, you'll need to make sure that webpack is watching for changes that you save so that it can auto bundle everything together. 27 | To set up a webpack watcher to bundle upon each save: 28 | ```sh 29 | $ npm run dev 30 | ``` 31 | To bundle one time and NOT run a watch: 32 | ```sh 33 | $ npm run build 34 | ``` 35 | 36 | ## Authors 37 | 38 | * **Michael Dick** - *Developer* - [MichaelDick](https://github.com/michaeldick) 39 | * **Amitava Saha** - *Developer* - [amitava82](https://github.com/amitava82) 40 | * **Eric Lobdell** - *Interface Designer* - [EricBenjamin](https://github.com/EricBenjamin) 41 | * **James Edmonson** - *Type Designer* - [OhNo Type](http://ohnotype.co) 42 | 43 | 44 | -------------------------------------------------------------------------------- /components/Phrase/Phrase.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import css from './Phrase.css'; 3 | 4 | class Phrase extends React.Component { 5 | 6 | constructor(){ 7 | super(); 8 | 9 | this.clear = this.clear.bind(this); 10 | this._handleChange = this._handleChange.bind(this); 11 | this._handlePaste = this._handlePaste.bind(this); 12 | } 13 | 14 | 15 | _handleChange(e) { 16 | this.props._setState({ 'phrase': e.target.value }); 17 | setTimeout( _ => { 18 | this.gotoBottom(); 19 | }, 50); 20 | } 21 | 22 | _handlePaste(e) { 23 | e.preventDefault(); 24 | } 25 | 26 | clear(){ 27 | this.props._setState({ 'phrase': '' }); 28 | this.refs.editor.focus(); 29 | } 30 | 31 | gotoBottom(){ 32 | var div = document.getElementsByClassName('Art')[0] 33 | div.scrollTop = div.scrollHeight; 34 | } 35 | 36 | render() { 37 | const {phrase} = this.props; 38 | return ( 39 |
40 |
41 | 48 | 50 |
51 |
52 | ); 53 | } 54 | } 55 | 56 | export default Phrase; 57 | -------------------------------------------------------------------------------- /components/Customizer/Customizer.css: -------------------------------------------------------------------------------- 1 | .Customizer .roll-cover { 2 | position: fixed; 3 | /*width: 60px;*/ 4 | height: 100px; 5 | width: 18%; 6 | pointer-events: none; 7 | margin-top: -20px; 8 | background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(255,255,255,0.8) 60%, rgba(255,255,255,0) 100%); 9 | background: -webkit-linear-gradient(top, #FFF 0%, rgba(255,255,255,0.8) 60%, rgba(255,255,255,0) 100%); 10 | background: linear-gradient(to bottom, #FFF 0%, rgba(255,255,255,0.8) 60%, rgba(255,255,255,0) 100%); 11 | } 12 | 13 | .Customizer .emoji-roll { 14 | z-index: 1000; 15 | list-style-type: none; 16 | margin: 0 15px 0; 17 | padding: 0; 18 | padding-top: 65px; 19 | } 20 | 21 | .emoji-roll li.empty{ 22 | 23 | } 24 | .emoji-roll li { 25 | height: 30px; 26 | } 27 | 28 | .Customizer .emoji-roll li{ 29 | cursor: pointer; 30 | } 31 | 32 | .Customizer .right { 33 | width: 15%; 34 | position: fixed; 35 | text-align:right; 36 | height: 130px; 37 | bottom: 20px; 38 | right: 0px; 39 | z-index: 1000; 40 | } 41 | 42 | .Customizer .left { 43 | width: 15%; 44 | position: fixed; 45 | bottom: 20px; 46 | left: 0; 47 | z-index: 100; 48 | height: 130px; 49 | } 50 | 51 | 52 | .Customizer[hidden] { 53 | -webkit-transform: translateY(300px); 54 | } 55 | 56 | /* Cannot determine why the media query was neccessary here. */ 57 | /* Removed */ 58 | 59 | /*@media only screen and (max-width: 600px) {*/ 60 | /* .Customizer {*/ 61 | /* position: fixed;*/ 62 | /* right: 0;*/ 63 | /* bottom: 53px;*/ 64 | /* width: 100%;*/ 65 | /* }*/ 66 | /*}*/ 67 | -------------------------------------------------------------------------------- /app/app.js: -------------------------------------------------------------------------------- 1 | // import deps 2 | import React from 'react'; 3 | import ReactDOM from 'react-dom'; 4 | 5 | // import components 6 | import Phrase from '../components/Phrase/Phrase.js'; 7 | import Customizer from '../components/Customizer/Customizer.js'; 8 | import Art from '../components/Art/Art.js'; 9 | import Copy from '../components/Copy/Copy.js'; 10 | 11 | import css from './app.css'; 12 | 13 | // main app that binds everything together 14 | class App extends React.Component { 15 | constructor() { 16 | super(); 17 | this.state = { 18 | 'shading': '❄️', 19 | 'fill': '❤️', 20 | 'phrase': '', 21 | 'art': '' 22 | }; 23 | } 24 | 25 | _setState(obj) { 26 | this.setState(obj); 27 | } 28 | 29 | render() { 30 | const {phrase, fill, shading, art} = this.state; 31 | 32 | return ( 33 |
34 | this._setState(e)}/> 37 |
38 |
39 | this._setState(e)} 41 | phrase={phrase} 42 | fill={fill} 43 | shading={shading}/> 44 | 47 | this._setState(e)} 49 | phrase={phrase} 50 | fill={fill} 51 | shading={shading}/> 52 |
53 |
54 | ); 55 | } 56 | } 57 | 58 | // Bind main app to DOM 59 | ReactDOM.render( 60 | , 61 | document.getElementById('app') 62 | ); 63 | -------------------------------------------------------------------------------- /components/Copy/Copy.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Clipboard from 'clipboard'; 3 | 4 | import css from './Copy.css'; 5 | 6 | class Copy extends React.Component { 7 | constructor() { 8 | super(); 9 | this.state = { 10 | showAlert: false 11 | } 12 | 13 | this._handleClick = this._handleClick.bind(this); 14 | this.showCopiedMessage = this.showCopiedMessage.bind(this); 15 | } 16 | 17 | componentDidMount(){ 18 | var clipboard = this.clipboard = new Clipboard('#copy'); 19 | 20 | clipboard.on('success', e => { 21 | e.clearSelection(); 22 | this.showCopiedMessage(); 23 | 24 | }); 25 | 26 | clipboard.on('error', function(e) { 27 | //Safari 28 | var ele = document.getElementById('art'); 29 | // ele && ele.select(); 30 | this.selectionStart=0; 31 | this.selectionEnd=this.ele.length; 32 | }); 33 | } 34 | 35 | _handleClick() { 36 | var that = this; 37 | that.setState({ showAlert: true }); 38 | setTimeout(function() { 39 | that.setState({ showAlert: false }); 40 | }, 3000); 41 | 42 | //this.selectText('art'); 43 | } 44 | 45 | showCopiedMessage(){ 46 | this.setState({ showAlert: true }); 47 | setTimeout( _ => { 48 | this.setState({ showAlert: false }); 49 | }, 3000); 50 | } 51 | 52 | selectText(elem) { 53 | if (document.selection) { 54 | const range = document.body.createTextRange(); 55 | range.moveToElementText(document.getElementById(elem)); 56 | range.select(); 57 | } else if (window.getSelection) { 58 | var range = document.createRange(); 59 | range.selectNode(document.getElementById(elem)); 60 | window.getSelection().addRange(range); 61 | } 62 | } 63 | 64 | render() { 65 | return ( 66 | 72 | ); 73 | } 74 | } 75 | 76 | export default Copy; 77 | -------------------------------------------------------------------------------- /components/Customizer/Customizer.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import emojis from './emojis'; 3 | 4 | import css from './Customizer.css'; 5 | 6 | class Customizer extends React.Component { 7 | constructor(props) { 8 | super(); 9 | this.shading = props.shading; 10 | this.fill = props.fill; 11 | 12 | this.setEmoji = this.setEmoji.bind(this); 13 | } 14 | 15 | // _handleKeyDown(e) { 16 | // var allowed = [91, 17, 32, 8]; 17 | // if (allowed.indexOf(e.which) < 0) { 18 | // e.preventDefault(); 19 | // } 20 | // } 21 | 22 | 23 | _handleChange(e) { 24 | this[e.target.name] = e.target.value; 25 | this.props._setState({ 'shading': this.shading, 'fill': this.fill }); 26 | } 27 | 28 | setEmoji(props){ 29 | this.props._setState(props); 30 | } 31 | 32 | render() { 33 | return ( 34 |
35 |
36 | 37 | 38 |
39 |
40 | ); 41 | } 42 | } 43 | 44 | 45 | 46 | class Scroller extends React.Component{ 47 | 48 | constructor(){ 49 | super(); 50 | 51 | this.onScroll = this.onScroll.bind(this) 52 | } 53 | onScroll(e){ 54 | let scrollTop = e.target.scrollTop; 55 | const itemIdx = Math.round(scrollTop/28); 56 | console.log("top: ", scrollTop); 57 | console.log('idx: ', itemIdx); 58 | 59 | const {type, emojis, onEmojiSelect} = this.props; 60 | const em = emojis[itemIdx]; 61 | 62 | if(em){ 63 | onEmojiSelect({ 64 | [type]: em 65 | }); 66 | } 67 | 68 | } 69 | 70 | componentDidMount(){ 71 | this.refs[this.props.type].addEventListener('scroll', this.onScroll, false); 72 | } 73 | 74 | componentWillUnmount(){ 75 | this.refs[this.props.type].removeEventListener('scroll', this.onScroll); 76 | } 77 | 78 | render(){ 79 | 80 | const emojisList = this.props.emojis.map((i, idx) => { 81 | return ( 82 |
  • {i}
  • 83 | ) 84 | }); 85 | 86 | return ( 87 |
    88 |
    89 | 92 |
    93 | ) 94 | } 95 | } 96 | 97 | export default Customizer; 98 | -------------------------------------------------------------------------------- /design/html/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | OhNo - Emoji 7 | 8 | 9 | 10 |
    11 | 12 | 13 | 14 |
    15 |
    16 |
    17 |
    18 | 🖖🖖🖖🖖🖖🖖🖖🖖
    👽👽👽👽🖖👽👽👽
    🖖👽👽🖖🖖👽👽🖖
    🖖👽👽🖖🖖👽👽🖖
    🖖👽👽👽👽👽👽🖖
    🖖👽👽🖖🖖👽👽🖖
    🖖👽👽🖖🖖👽👽🖖
    👽👽👽🖖👽👽👽👽
    19 | 🖖🖖🖖🖖🖖🖖🖖🖖
    🖖🖖👽👽👽🖖🖖🖖
    🖖🖖🖖👽👽👽🖖🖖
    🖖🖖👽🖖👽👽🖖🖖
    🖖🖖👽🖖🖖👽👽🖖
    🖖👽👽👽👽👽👽🖖
    🖖👽🖖🖖🖖👽👽👽
    👽👽👽🖖👽👽👽👽
    20 | 🖖🖖🖖🖖🖖🖖🖖🖖
    🖖👽👽👽👽👽🖖🖖
    🖖🖖👽👽🖖👽👽🖖
    🖖🖖👽👽🖖👽👽🖖
    🖖🖖👽👽🖖👽👽🖖
    🖖🖖👽👽👽👽🖖🖖
    🖖🖖👽👽🖖🖖🖖🖖
    🖖👽👽👽👽🖖🖖🖖
    21 | 🖖🖖🖖🖖🖖🖖🖖🖖
    🖖👽👽👽👽👽🖖🖖
    🖖🖖👽👽🖖👽👽🖖
    🖖🖖👽👽🖖👽👽🖖
    🖖🖖👽👽🖖👽👽🖖
    🖖🖖👽👽👽👽🖖🖖
    🖖🖖👽👽🖖🖖🖖🖖
    🖖👽👽👽👽🖖🖖🖖
    22 | 🖖🖖🖖🖖🖖🖖🖖🖖
    👽👽👽👽🖖👽👽👽
    🖖👽👽🖖🖖🖖👽🖖
    🖖🖖👽👽🖖👽🖖🖖
    🖖🖖👽👽🖖👽🖖🖖
    🖖🖖🖖👽👽🖖🖖🖖
    🖖🖖🖖👽👽🖖🖖🖖
    🖖🖖👽👽👽👽🖖🖖
    🖖🖖🖖🖖🖖🖖🖖🖖 23 |
    24 | 27 |
    28 |
    29 |
    30 |
      31 |
    • 😀
    • 😬
    • 😁
    • 😂
    • 😃
    • 😄
    • 😅
    • 😆
    • 😇
    • 😉
    • 😊
    • 🙂
    • 🙃
    • ☺️
    • 😋
    • 😌
    • 😍
    • 😘
    • 😗
    • 😙
    • 😚
    • 😜
    • 😝
    • 😛
    • 🤑
    • 🤓
    • 😎
    • 🤗
    • 😏
    • 😶
    • 😐
    • 😑
    • 32 |
    33 |
    34 |
    35 |
    36 |
      37 |
    • 🐶
    • 🐱
    • 🐭
    • 🐹
    • 🐰
    • 🐻
    • 🐼
    • 🐨
    • 🐯
    • 🦁
    • 🐮
    • 🐷
    • 🐽
    • 🐸
    • 🐙
    • 🐵
    • 🙈
    • 🙉
    • 🙊
    • 🐒
    • 🐔
    • 🐧
    • 🐦
    • 🐤
    • 🐣
    • 🐥
    • 🐺
    • 🐗
    • 🐴
    • 🦄
    • 🐝
    • 🐛
    • 38 |
    39 |
    40 |
    41 |
    42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /app/app.css: -------------------------------------------------------------------------------- 1 | html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,form,label,table,caption,tbody,tfoot,thead,tr,th,td { 2 | margin: 0; 3 | padding: 0; 4 | border: 0; 5 | outline: 0; 6 | font-size: 100%; 7 | vertical-align: baseline; 8 | background: transparent; 9 | } 10 | body { line-height: 1; } 11 | ol, ul { list-style: none; } 12 | blockquote, q { quotes: none; } 13 | :focus { outline: 0; } 14 | ins { text-decoration: none; } 15 | del { text-decoration: line-through; } 16 | table { border-collapse: collapse; border-spacing: 0; } 17 | header, section, nav, footer, aside, article { display: block; } 18 | 19 | body { 20 | background: #ffffff; 21 | color: #8D8D8D; 22 | font-family: Helvetica, arial, sans-serif; 23 | font-size: 16px; 24 | line-height: 1.4; 25 | -webkit-tap-highlight-color: rgba(0,0,0,0); 26 | overflow-x: hidden; 27 | } 28 | 29 | @media only screen and (min-width : 992px) { 30 | .Phrase{ 31 | left: 20%; 32 | right: 20%; 33 | } 34 | 35 | .Customizer .left{ 36 | left: 20%; 37 | } 38 | 39 | .Customizer .right{ 40 | right: 20%; 41 | } 42 | } 43 | 44 | ::selection, ::-moz-selection { 45 | background-color: #8e44ad; 46 | color: white; 47 | } 48 | 49 | .container{ 50 | height: 100%; 51 | position: fixed; 52 | top: 0; 53 | bottom: 0; 54 | right: 20px; 55 | left: 20px; 56 | z-index: 0; 57 | display: flex; 58 | overflow: hidden; 59 | backface-visibility: hidden; 60 | will-change: overflow; 61 | } 62 | 63 | button { 64 | box-sizing: border-box; 65 | padding: 15px; 66 | border: none; 67 | text-align: center; 68 | font-size: 20px; 69 | color: #fff; 70 | cursor: pointer; 71 | font-weight: 500; 72 | background: red; 73 | display: block; 74 | width: 100%; 75 | } 76 | 77 | button:hover { 78 | background: #E40909; 79 | } 80 | 81 | .scroll { 82 | overflow: auto; 83 | height: auto; 84 | padding: .5rem; 85 | -webkit-overflow-scrolling: touch; 86 | -ms-overflow-style: none; 87 | } 88 | 89 | .scroll::-webkit-scrollbar { 90 | display : none; 91 | } 92 | 93 | .fade-away { 94 | position: fixed; 95 | z-index: 100; 96 | margin: 0 auto; 97 | left: 0; 98 | right: 0; 99 | height: 100px; 100 | width: 60%; 101 | bottom: 0; 102 | pointer-events: none; 103 | background: -moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 90%, rgba(255,255,255,1) 100%); 104 | background: -webkit-linear-gradient(top, rgba(255,255,255,0) 0%, #FFF 90%, #FFF 100%); 105 | background: linear-gradient(to bottom, rgba(255,255,255,0) 0%, #FFF 90%, #FFF 100%); 106 | } 107 | -------------------------------------------------------------------------------- /design/html/style.css: -------------------------------------------------------------------------------- 1 | body,html { 2 | margin :0; 3 | padding :0; 4 | } 5 | body { 6 | overflow-x : hidden; 7 | } 8 | 9 | #container { 10 | height : 100%; 11 | position : fixed; 12 | top : 0; 13 | bottom : 0; 14 | right : 20px; 15 | left : 20px; 16 | z-index : 0; 17 | display : flex; 18 | overflow : hidden; 19 | /* Literally, have no idea what these two lines do */ 20 | backface-visibility : hidden; 21 | will-change : overflow; 22 | } 23 | 24 | .scroll { 25 | overflow : auto; 26 | height : auto; 27 | padding : .5rem; 28 | -webkit-overflow-scrolling : touch; 29 | -ms-overflow-style : none; 30 | } 31 | 32 | .scroll::-webkit-scrollbar { 33 | display : none; 34 | } 35 | 36 | #input-header { 37 | width : auto; 38 | padding : 25px 50px 0px 20px; 39 | right : 0; 40 | left : 0; 41 | position : fixed; 42 | background-color: white; 43 | z-index : 1000; 44 | } 45 | 46 | #output-content { 47 | text-align : center; 48 | padding-top : 110px; 49 | padding-bottom : 100px; 50 | /* min-width : 60%; */ 51 | margin : 0 auto; 52 | } 53 | 54 | .fade-away { 55 | position : fixed; 56 | z-index : 100; 57 | margin : 0 auto; 58 | left : 0; 59 | right : 0; 60 | height : 100px; 61 | width : 60%; 62 | bottom : 0; 63 | pointer-events : none; 64 | background : -moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 90%, rgba(255,255,255,1) 100%); 65 | background : -webkit-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 90%, rgba(255,255,255,1) 100%); 66 | background : linear-gradient(to bottom, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 90%, rgba(255,255,255,1) 100%); 67 | } 68 | 69 | #footer { 70 | width : 60%; 71 | height : 30px; 72 | border-right : 1px solid #E2E2E2; 73 | border-left : 1px solid #E2E2E2; 74 | margin : 0 auto; 75 | position : fixed; 76 | z-index : 1000; 77 | bottom : 30px; 78 | left : 0; 79 | right : 0; 80 | padding-bottom : 18px; 81 | } 82 | .label { 83 | /* LABEL FONT STYLE */ 84 | font-family : 'Helvetica Neue', Helvetica, Arial, sans-serif; 85 | font-weight : 300; 86 | font-size : 10px; 87 | letter-spacing : 0.083rem; 88 | color : #A1A1A1; 89 | margin-bottom : 12px; 90 | } 91 | 92 | .clear { 93 | border : 0; 94 | padding : 0; 95 | cursor : pointer; 96 | width : 20px; 97 | height : 20px; 98 | position : absolute; 99 | right : 35px; 100 | top : 35px; 101 | background : transparent; 102 | } 103 | 104 | .text-area { 105 | /* INPUT FONT STYLE */ 106 | font-family : 'Helvetica Neue', Helvetica, Arial, sans-serif; 107 | font-style : normal; 108 | font-variant : normal; 109 | font-weight : 200; 110 | font-size : 24px; 111 | letter-spacing : .15rem; 112 | text-transform : uppercase; 113 | color : #8D8D8D; 114 | width : 100%; 115 | height : 30px; 116 | padding-bottom : 10px; 117 | border : none; 118 | border-bottom : 1px solid #E2E2E2; 119 | border-radius : 0; 120 | } 121 | 122 | input:focus, 123 | select:focus, 124 | textarea:focus, 125 | button:focus { 126 | outline : none; 127 | } 128 | 129 | .roll-cover { 130 | position : fixed; 131 | height : 130px; 132 | width : 60px; 133 | pointer-events : none; 134 | margin-top : -20px; 135 | background : -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(255,255,255,0.8) 60%, rgba(255,255,255,0) 100%); 136 | background : -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(255,255,255,0.8) 60%, rgba(255,255,255,0) 100%); 137 | background : linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(255,255,255,0.8) 60%, rgba(255,255,255,0) 100%); 138 | } 139 | 140 | .left { 141 | width : 60px; 142 | position : fixed; 143 | bottom : 20px; 144 | left : 0px; 145 | z-index : 100; 146 | height : 130px; 147 | } 148 | 149 | .right { 150 | width : 60px; 151 | height : 130px; 152 | position : fixed; 153 | bottom : 20px; 154 | right : 0px; 155 | z-index : 1000; 156 | } 157 | 158 | .emoji-roll-left, 159 | .emoji-roll-right { 160 | z-index : 1000; 161 | list-style-type : none; 162 | margin : 0 15px 0; 163 | padding : 0; 164 | } 165 | 166 | .emoji-roll-right li, 167 | .emoji-roll-left li { 168 | width : auto; 169 | height : 35px; 170 | display : inline-block; 171 | } 172 | .emoji-roll-right li { 173 | float : left; 174 | } 175 | .emoji-roll-left li { 176 | float : right; 177 | } 178 | 179 | .select-btn { 180 | background : #74D6F8; 181 | border : solid #64C6E8 1px; 182 | -webkit-border-radius : 100; 183 | -moz-border-radius : 100; 184 | border-radius : 100px; 185 | text-align : center; 186 | margin : 0 auto; 187 | width : 200px; 188 | padding : 14px 0px 13px 0px; 189 | text-decoration : none; 190 | /* BUTTON DROP SHADOW */ 191 | -webkit-box-shadow : 0px 2px 4px rgba(0, 0, 0, .20); 192 | -moz-box-shadow : 0px 2px 4px rgba(0, 0, 0, .20); 193 | box-shadow : 0px 2px 4px rgba(0, 0, 0, .20); 194 | /* BUTTON FONT STYLE */ 195 | font-family : 'Helvetica Neue', Helvetica, Arial, sans-serif; 196 | color : #ffffff; 197 | font-size : 16px; 198 | font-weight : 500; 199 | letter-spacing : 0.10rem; 200 | } 201 | -------------------------------------------------------------------------------- /components/Art/Art.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import css from './Art.css'; 4 | 5 | var patterns = { 6 | "0": "XXOOOOXX\nXOOXXOOX\nXOOXXOOX\nXOOXXOOX\nXOOXXOOX\nXOOXXOOX\nXXOOOOXX\nXXXXXXXX\n", 7 | "1": "XXXXOXXX\nXXXOOXXX\nXXOOOXXX\nXXXOOXXX\nXXXOOXXX\nXXXOOXXX\nXXOOOOXX\nXXXXXXXX\n", 8 | "2": "XXOOOOXX\nXOOXXOOX\nXOOXXOOX\nXXXXOOXX\nXXXOOXXX\nXXOOXXXX\nXOOOOOOX\nXXXXXXXX\n", 9 | "3": "XXOOOOXX\nXOOXXOOX\nXXXXXOOX\nXXXOOOXX\nXXXXXOOX\nXOOXXOOX\nXXOOOOXX\nXXXXXXXX\n", 10 | "4": "XXXXOOXX\nXXXOOOXX\nXXOXOOXX\nXOXXOOXX\nXOOOOOOX\nXXXXOOXX\nXXXOOOOX\nXXXXXXXX\n", 11 | "5": "XOOOOOOX\nXOOOOOOX\nXOXXXXXX\nXOOOOOXX\nXXXXXOOX\nXOOXXOOX\nXXOOOOXX\nXXXXXXXX\n", 12 | "6": "XXOOOOXX\nXOOXXOOX\nXOOXXXXX\nXOOOOOXX\nXOOXXOOX\nXOOXXOOX\nXXOOOOXX\nXXXXXXXX\n", 13 | "7": "XOOOOOOX\nXOXXXOOX\nXXXXXOOX\nXXXXOOXX\nXXXXOOXX\nXXXOOXXX\nXXXOOXXX\nXXXXXXXX\n", 14 | "8": "XXOOOOXX\nXOOXXOOX\nXOOXXOOX\nXXOOOOXX\nXOOXXOOX\nXOOXXOOX\nXXOOOOXX\nXXXXXXXX\n", 15 | "9": "XXOOOOXX\nXOOXXOOX\nXOOXXOOX\nXXOOOOOX\nXXXXXOOX\nXOOXXOOX\nXXOOOOXX\nXXXXXXXX\n", 16 | "-": "XXXXXXXX\n", 17 | "a": "XXOOOXXX\nXXXOOOXX\nXXOXOOXX\nXXOXXOOX\nXOOOOOOX\nXOXXXOOO\nOOOXOOOO\nXXXXXXXX\n", 18 | "b": "OOOOOOXX\nXOOXXOOX\nXOOXXOOX\nXOOOOOXX\nXOOXXOOX\nXOOXXOOX\nOOOOOOXX\nXXXXXXXX\n", 19 | "c": "XXOOOOOX\nXOOXXOOX\nXOOXXXOX\nXOOXXXXX\nXOOXXXOX\nXOOXXXOX\nXXOOOOXX\nXXXXXXXX\n", 20 | "d": "OOOOOOXX\nXOOXXOOX\nXOOXXOOX\nXOOXXOOX\nXOOXXOOX\nXOOXXOOX\nOOOOOOXX\nXXXXXXXX\n", 21 | "e": "OOOOOOOX\nXOOXXOOX\nXOOXXXXX\nXOOOOOXX\nXOOXXXXX\nXOOXXOOX\nOOOOOOOX\nXXXXXXXX\n", 22 | "f": "OOOOOOOX\nXOOXXXOX\nXOOXOXOX\nXOOOOXXX\nXOOXOXXX\nXOOXXXXX\nOOOOOXXX\nXXXXXXXX\n", 23 | "g": "XXOOOOOX\nXOOXXOOX\nXOOXXXOX\nXOOXXXXX\nXOOXOOOO\nXOOXXOOX\nXXOOOOXX\nXXXXXXXX\n", 24 | "h": "OOOOXOOO\nXOOXXOOX\nXOOXXOOX\nXOOOOOOX\nXOOXXOOX\nXOOXXOOX\nOOOXOOOO\nXXXXXXXX\n", 25 | "i": "XXOOOOXX\nXXXOOXXX\nXXXOOXXX\nXXXOOXXX\nXXXOOXXX\nXXXOOXXX\nXXOOOOXX\nXXXXXXXX\n", 26 | "j": "XXXOOOOX\nXXXXOOXX\nXXXXOOXX\nXXXXOOXX\nXXXXOOXX\nXOOXOOXX\nXXOOOXXX\nXXXXXXXX\n", 27 | "k": "OOOOXOOO\nXOOXXOOX\nXOOXOOXX\nXOOOOXXX\nXOOXOOXX\nXOOXXOOX\nOOOOXOOO\nXXXXXXXX\n", 28 | "l": "XOOOOXXX\nXXOOXXXX\nXXOOXXXX\nXXOOXXXX\nXXOOXXOX\nXXOOXOOX\nXOOOOOOX\nXXXXXXXX\n", 29 | "m": "OOXXXOOO\nXOOXXOOX\nXOOXOOOX\nXOOOOOOX\nXOXOXOOX\nXOXXXOOX\nOOOXOOOO\nXXXXXXXX\n", 30 | "n": "OOOXXOOO\nXOOOXXOX\nXOOOXXOX\nXOXOOXOX\nXOXOOXOX\nXOXXOOOX\nOOOXOOOX\nXXXXXXXX\n", 31 | "o": "XXOOOOXX\nXOOXXOOX\nXOOXXOOX\nXOOXXOOX\nXOOXXOOX\nXOOXXOOX\nXXOOOOXX\nXXXXXXXX\n", 32 | "p": "XOOOOOXX\nXXOOXOOX\nXXOOXOOX\nXXOOXOOX\nXXOOOOXX\nXXOOXXXX\nXOOOOXXX\nXXXXXXXX\n", 33 | "q": "XXOOOOXX\nXOOXXOOX\nXOOXXOOX\nXOOXXOOX\nXOOXOOOX\nXOOXXOOX\nXXOOOOXO\nXXXXXXXX\n", 34 | "r": "OOOOOOXX\nXOOXXOOX\nXOOXXOOX\nXOOOOOXX\nXOOXXOOX\nXOOXXOOX\nOOOOXXOO\nXXXXXXXX\n", 35 | "s": "XXOOOOOX\nXOOXXOOX\nXOOOXXXX\nXXOOOOXX\nXXXXOOOX\nXOOXXOOX\nXOOOOOXX\nXXXXXXXX\n", 36 | "t": "OOOOOOOO\nOOXOOXOO\nOXXOOXXO\nXXXOOXXX\nXXXOOXXX\nXXXOOXXX\nXXOOOOXX\nXXXXXXXX\n", 37 | "u": "OOOOXOOO\nXOOXXXOX\nXOOXXXOX\nXOOXXXOX\nXOOXXXOX\nXOOXXXOX\nXXOOOOXX\nXXXXXXXX\n", 38 | "v": "OOOOXOOO\nXOOXXXOX\nXOOXXXOX\nXXOOXOXX\nXXOOXOXX\nXXXOOXXX\nXXXOOXXX\nXXXXXXXX\n", 39 | "w": "OOOXOXOO\nOOXXOXXO\nOOXOOOXO\nOOXOOOXO\nXOOOXOOX\nXOOXXOOX\nXOOXXOOX\nXXXXXXXX\n", 40 | "x": "OOOOXOOO\nXOOXXXOX\nXXOOXOXX\nXXXOOXXX\nXXOXOOXX\nXOXXXOOX\nOOOXOOOO\nXXXXXXXX\n", 41 | "y": "OOOOXOOO\nXOOXXXOX\nXXOOXOXX\nXXOOXOXX\nXXXOOXXX\nXXXOOXXX\nXXOOOOXX\nXXXXXXXX\n", 42 | "z": "XOOOOOOX\nXOXXXOOX\nXXXXOOXX\nXXXOOXXX\nXXOOXXXX\nXOOXXXOX\nXOOOOOOX\nXXXXXXXX\n", 43 | ".": "XXXXXXXX\nXXXOOXXX\nXXXOOXXX\nXXXXXXXX\nXXXXXXXX\n", 44 | ",": "XXXXXXXX\nXXXOOXXX\nXXXOOXXX\nXXXXOXXX\nXXXOXXXX\nXXXXXXXX\n", 45 | "!": "XXXOOXXX\nXXXOOXXX\nXXXOOXXX\nXXXOOXXX\nXXXXXXXX\nXXXOOXXX\nXXXOOXXX\nXXXXXXXX\n", 46 | "?": "XXOOOOXX\nXOOXXOOX\nXXXXXOOX\nXXXOOXXX\nXXXXXXXX\nXXXOOXXX\nXXXOOXXX\nXXXXXXXX\n", 47 | "@": "XOOOOOOX\nOXXXXXXO\nOXXOOOXO\nOXOXXOXO\nOXXOOXOX\nOXXXXXXX\nXOOOOOOX\nXXXXXXXX\n", 48 | "#": "XOOXXOOX\nXOOXXOOX\nOOOOOOOO\nXOOXXOOX\nOOOOOOOO\nXOOXXOOX\nXOOXXOOX\nXXXXXXXX\n", 49 | "$": "XXXOOXXX\nXXOOOOOX\nXOOXXXXX\nXXOOOOXX\nXXXXXOOX\nXOOOOOXX\nXXXOOXXX\nXXXXXXXX\n", 50 | "&": "XXOOOOXX\nXOOXXOOX\nXXOOXOXX\nXXOOOXXO\nOOXXOOXO\nOOXXXOOX\nXOOOOXOO\nXXXXXXXX\n", 51 | "*": "XXXOOXXX\nXOXOOXOX\nXXOOOOXX\nXOXOOXOX\nXXXOOXXX\nXXXXXXXX\n", 52 | "+": "XXXOOXXX\nXXXOOXXX\nXOOOOOOX\nXOOOOOOX\nXXXOOXXX\nXXXOOXXX\nXXXXXXXX\n", 53 | ":": "XXXXXXXX\nXXXOOXXX\nXXXOOXXX\nXXXXXXXX\nXXXOOXXX\nXXXOOXXX\nXXXXXXXX\nXXXXXXXX\n", 54 | ";": "XXXXXXXX\nXXXOOXXX\nXXXOOXXX\nXXXXXXXX\nXXXOOXXX\nXXXOOXXX\nXXXOXXXX\nXXXXXXXX\n", 55 | "/": "XXXXOOXX\nXXXXOOXX\nXXXOOXXX\nXXXOOXXX\nXXXOOXXX\nXXOOXXXX\nXXOOXXXX\nXXXXXXXX\n" 56 | }; 57 | 58 | class Art extends React.Component { 59 | 60 | render() { 61 | var that = this; 62 | //TODO Add all the patterns 63 | 64 | var art = []; 65 | var phrase = '-' + this.props.phrase.toLowerCase(); 66 | if (phrase.length > 1) { 67 | phrase = phrase.replace(/ /gi, '-'); 68 | art = phrase.split('').map(function (v, k) { 69 | var pattern = patterns[v] || patterns['-']; 70 | return pattern.replace(/x/gi, that.props.shading).replace(/o/gi, that.props.fill); 71 | }); 72 | } 73 | 74 | return ( 75 | 77 | ); 78 | } 79 | } 80 | 81 | export default Art; 82 | -------------------------------------------------------------------------------- /components/Art/Art_alt.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import css from './Art.css'; 4 | // Alternate Font Library Provided by David Jonathan Ross 5 | // Github: djrrb/BungeePixel 6 | // 7 | var patterns = { 8 | "0": "XXOOOOOXX\nXOOOOOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOOOOOX\nXXOOOOOXX\nXXXXXXXXX\n", 9 | "1": "XOOOOOXXX\nXOOOOOXXX\nXXXOOOXXX\nXXXOOOXXX\nXXXOOOXXX\nXXXOOOXXX\nXOOOOOOOX\nXOOOOOOOX\nXXXXXXXXX\n", 10 | "2": "XOOOOOOXX\nXOOOOOOOX\nXXXXXOOOX\nXOOOOOOOX\nXOOOOOOOX\nXOOOXXXXX\nXOOOOOOOX\nXOOOOOOOX\nXXXXXXXXX\n", 11 | "3": "XOOOOOOXX\nXOOOOOOOX\nXXXXXOOOX\nXXOOOOOXX\nXXOOOOOOX\nXXXXXOOOX\nXOOOOOOOX\nXOOOOOOXX\nXXXXXXXXX\n", 12 | "4": "XOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOOOOOX\nXOOOOOOOX\nXXOOOOOOX\nXXXXXOOOX\nXXXXXOOOX\nXXXXXXXXX\n", 13 | "5": "XOOOOOOOX\nXOOOOOOOX\nXOOOXXXXX\nXOOOOOOOX\nXOOOOOOOX\nXXXXXOOOX\nXOOOOOOOX\nXOOOOOOXX\nXXXXXXXXX\n", 14 | "6": "XXOOOOOXX\nXOOOOOOXX\nXOOOXXXXX\nXOOOOOOOX\nXOOOOOOOX\nXOOOXOOOX\nXOOOOOOOX\nXXOOOOOXX\nXXXXXXXXX\n", 15 | "7": "XOOOOOOOX\nXOOOOOOOX\nXXXXOOOOX\nXXXOOOOXX\nXXOOOOXXX\nXXOOOXXXX\nXXOOOXXXX\nXXOOOXXXX\nXXXXXXXXX\n", 16 | "8": "XXOOOOOXX\nXOOOOOOOX\nXOOOXOOOX\nXXOOOOOXX\nXOOOOOOOX\nXOOOXOOOX\nXOOOOOOOX\nXXOOOOOXX\nXXXXXXXXX\n", 17 | "9": "XXOOOOOXX\nXOOOOOOOX\nXOOOXOOOX\nXOOOOOOOX\nXOOOOOOOX\nXXXXXOOOX\nXXOOOOOOX\nXXOOOOOXX\nXXXXXXXXX\n", 18 | "-": "XXXXXXXXX\n", 19 | "a": "XXOOOOOXX\nXOOOOOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOOOOOX\nXOOOOOOOX\nXOOOXOOOX\nXOOOXOOOX\nXXXXXXXXX\n", 20 | "b": "XOOOOOOXX\nXOOOOOOOX\nXOOOXOOOX\nXOOOOOOXX\nXOOOOOOOX\nXOOOXOOOX\nXOOOOOOOX\nXOOOOOOXX\nXXXXXXXXX\n", 21 | "c": "XXOOOOOOX\nXOOOOOOOX\nXOOOXXXXX\nXOOOXXXXX\nXOOOXXXXX\nXOOOXXXXX\nXOOOOOOOX\nXXOOOOOOX\nXXXXXXXXX\n", 22 | "d": "XOOOOOOXX\nXOOOOOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOOOOOX\nXOOOOOOXX\nXXXXXXXXX\n", 23 | "e": "XOOOOOOOX\nXOOOOOOOX\nXOOOXXXXX\nXOOOOOXXX\nXOOOOOXXX\nXOOOXXXXX\nXOOOOOOOX\nXOOOOOOOX\nXXXXXXXXX\n", 24 | "f": "XOOOOOOOX\nXOOOOOOOX\nXOOOXXXXX\nXOOOOOXXX\nXOOOOOXXX\nXOOOXXXXX\nXOOOXXXXX\nXOOOXXXXX\nXXXXXXXXX\n", 25 | "g": "XXOOOOOXX\nXOOOOOOXX\nXOOOXXXXX\nXOOOXXXXX\nXOOOXOOOX\nXOOOXOOOX\nXOOOOOOOX\nXXOOOOOOX\nXXXXXXXXX\n", 26 | "h": "XOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOOOOOX\nXOOOOOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXXXXXXXXX\n", 27 | "i": "XOOOOOOOX\nXOOOOOOOX\nXXXOOOXXX\nXXXOOOXXX\nXXXOOOXXX\nXXXOOOXXX\nXOOOOOOOX\nXOOOOOOOX\nXXXXXXXXX\n", 28 | "j": "XXXXXOOOX\nXXXXXOOOX\nXXXXXOOOX\nXXXXXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOOOOOX\nXXOOOOOXX\nXXXXXXXXX\n", 29 | "k": "XOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOOOOXX\nXOOOOOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXXXXXXXXX\n", 30 | "l": "XOOOXXXXX\nXOOOXXXXX\nXOOOXXXXX\nXOOOXXXXX\nXOOOXOOOX\nXOOOXOOOX\nXOOOOOOOX\nXOOOOOOOX\nXXXXXXXXX\n", 31 | "m": "XOOXXXOOX\nXOOOXOOOX\nXOOOOOOOX\nXOOOOOOOX\nXOOOOOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXXXXXXXXX\n", 32 | "n": "XXOOOOOXX\nXOOOOOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXXXXXXXXX\n", 33 | "o": "XXOOOOOXX\nXOOOOOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOOOOOX\nXXOOOOOXX\nXXXXXXXXX\n", 34 | "p": "XOOOOOOXX\nXOOOOOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOOOOOX\nXOOOOOOXX\nXOOOXXXXX\nXOOOXXXXX\nXXXXXXXXX\n", 35 | "q": "XXOOOOOXX\nXOOOOOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOXX\nXOOOOOOOX\nXXOOOOOOX\nXXXXXXXXX\n", 36 | "r": "XOOOOOOXX\nXOOOOOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOOOOXX\nXOOOOOOOX\nXOOOXOOOX\nXOOOXOOOX\nXXXXXXXXX\n", 37 | "s": "XXOOOOOOX\nXOOOOOOOX\nXOOOXXXXX\nXOOOOOOOX\nXOOOOOOOX\nXXXXXOOOX\nXOOOOOOOX\nXOOOOOOXX\nXXXXXXXXX\n", 38 | "t": "XOOOOOOOX\nXOOOOOOOX\nXXXOOOXXX\nXXXOOOXXX\nXXXOOOXXX\nXXXOOOXXX\nXXXOOOXXX\nXXXOOOXXX\nXXXXXXXXX\n", 39 | "u": "XOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOOOOOX\nXXOOOOOXX\nXXXXXXXXX\n", 40 | "v": "XOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOOOOOX\nXXOOOOOXX\nXXXOOOXXX\nXXXXXXXXX\n", 41 | "w": "XOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOOOOOX\nXOOOOOOOX\nXOOOOOOOX\nXOOOXOOOX\nXOOXXXOOX\nXXXXXXXXX\n", 42 | "x": "XOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXXOOOOOXX\nXOOOOOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXXXXXXXXX\n", 43 | "y": "XOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOXOOOX\nXOOOOOOOX\nXXOOOOOXX\nXXXOOOXXX\nXXXOOOXXX\nXXXXXXXXX\n", 44 | "z": "XOOOOOOOX\nXOOOOOOOX\nXXXXOOOOX\nXXXOOOOXX\nXXOOOOXXX\nXOOOOXXXX\nXOOOOOOOX\nXOOOOOOOX\nXXXXXXXXX\n", 45 | ";": "XXXOOOXXX\nXXXOOOXXX\nXXXOOOXXX\nXXXXXXXXX\nXXXOOOXXX\nXXXOOOXXX\nXXXXOOXXX\nXXXXOOXXX\nXXXXXXXXX\n", 46 | "!": "XXXOOOXXX\nXXOOOOOXX\nXXOOOOOXX\nXXXOOOXXX\nXXXOOOXXX\nXXXXXXXXX\nXXXOOOXXX\nXXXOOOXXX\nXXXXXXXXX\n", 47 | "?": "XOOOOOOXX\nXOOOOOOOX\nXXXXXOOOX\nXXOOOOOOX\nXXOOOOOXX\nXXXXXXXXX\nXXOOOXXXX\nXXOOOXXXX\nXXXXXXXXX\n", 48 | "@": "XXOOOOOXX\nXOXXXXXOX\nXOXOOOXOX\nXOXOOOXOX\nXOXOOOXOX\nXOXOOOOXX\nXOXXXXXXX\nXXOOOOOXX\nXXXXXXXXX\n", 49 | "#": "XXOOXOOXX\nXXOOXOOXX\nXOOOOOOOX\nXXOOXOOXX\nXXOOXOOXX\nXOOOOOOOX\nXXOOXOOXX\nXXOOXOOXX\nXXXXXXXXX\n", 50 | "$": "XXXXOXXXX\nXXOOOOOOX\nXOOOXXXXX\nXOOOOOOOX\nXOOOOOOOX\nXXXXXOOOX\nXOOOOOOXX\nXXXXOXXXX\nXXXXXXXXX\n", 51 | "&": "XXOOOOOXX\nXOOOOOOXX\nXOOOXXXXX\nXXOOOXOOO\nXOOOOXOOO\nXOOOXXOOX\nXOOOOOOOX\nXXOOOOOOX\nXXXXXXXXX\n", 52 | "*": "XXOXOXOXX\nXXXOOOXXX\nXXOOOOOXX\nXXXOOOXXX\nXXOXOXOXX\nXXXXXXXXX\n", 53 | "+": "XXXOOOXXX\nXXXOOOXXX\nXOOOOOOOX\nXOOOOOOOX\nXXXOOOXXX\nXXXOOOXXX\nXXXXXXXXX\n", 54 | ":": "XXXOOOXXX\nXXXOOOXXX\nXXXOOOXXX\nXXXXXXXXX\nXXXOOOXXX\nXXXOOOXXX\nXXXOOOXXX\nXXXXXXXXX\n", 55 | ";": "XXXOOOXXX\nXXXOOOXXX\nXXXOOOXXX\nXXXXXXXXX\nXXXOOOXXX\nXXXOOOXXX\nXXXXOOXXX\nXXXXOOXXX\nXXXXXXXXX\n", 56 | "/": "XXXXXOOOX\nXXXXXOOOX\nXXXXOOOXX\nXXXOOOXXX\nXXXOOOXXX\nXXOOOXXXX\nXOOOXXXXX\nXOOOXXXXX\nXXXXXXXXX\n" 57 | }; 58 | 59 | class Art extends React.Component { 60 | 61 | render() { 62 | var that = this; 63 | //TODO Add all the patterns 64 | 65 | var art = []; 66 | var phrase = '-' + this.props.phrase.toLowerCase(); 67 | if (phrase.length > 1) { 68 | phrase = phrase.replace(/ /gi, '-'); 69 | art = phrase.split('').map(function (v, k) { 70 | var pattern = patterns[v] || patterns['-']; 71 | return pattern.replace(/x/gi, that.props.shading).replace(/o/gi, that.props.fill); 72 | }); 73 | } 74 | 75 | return ( 76 | 78 | ); 79 | } 80 | } 81 | 82 | export default Art; 83 | -------------------------------------------------------------------------------- /2016-emoji-list.csv: -------------------------------------------------------------------------------- 1 | iOS Emoji list 2 | by Eric Lobdell 2016 (csv) 3 | 4 | 2014 List 5 | ,😄,😃,😀,😊,😉,😍,😘,😚,😗,😙,😜,😝,😛,😳,😁,😔,😌,😒,😞,😣,😢,😂,😭,😪,😥,😰,😅,😓,😩,😫,😨,😱,😠,😡,😤,😖,😆,😋,😷,😎,😴,😵,😲,😟,😦,😧,😈,👿,😮,😬,😐,😕,😯,😶,😇,😏,😑,👲,👳,👮,👷,💂,👶,👦,👧,👨,👩,👴,👵,👱,👼,👸,😺,😸,😻,😽,😼,🙀,😿,😹,😾,👹,👺,🙈,🙉,🙊,💀,👽,💩,🔥,✨,🌟,💫,💥,💢,💦,💧,💤,💨,👂,👀,👃,👅,👄,👍,👎,👌,👊,✊,✌,👋,✋,👐,👆,👇,👉,👈,🙌,🙏,☝,👏,💪,🚶,🏃,💃,👫,👪,👬,👭,💏,💑,👯,🙆,🙅,💁,🙋,💆,💇,💅,👰,🙎,🙍,🙇,🎩,👑,👒,👟,👞,👡,👠,👢,👕,👔,👚,👗,🎽,👖,👘,👙,💼,👜,👝,👛,👓,🎀,🌂,💄,💛,💙,💜,💚,❤,💔,💗,💓,💕,💖,💞,💘,💌,💋,💍,💎,👤,👥,💬,👣,💭,🐶,🐺,🐱,🐭,🐹,🐰,🐸,🐯,🐨,🐻,🐷,🐽,🐮,🐗,🐵,🐒,🐴,🐑,🐘,🐼,🐧,🐦,🐤,🐥,🐣,🐔,🐍,🐢,🐛,🐝,🐜,🐞,🐌,🐙,🐚,🐠,🐟,🐬,🐳,🐋,🐄,🐏,🐀,🐃,🐅,🐇,🐉,🐎,🐐,🐓,🐕,🐖,🐁,🐂,🐲,🐡,🐊,🐫,🐪,🐆,🐈,🐩,🐾,💐,🌸,🌷,🍀,🌹,🌻,🌺,🍁,🍃,🍂,🌿,🌾,🍄,🌵,🌴,🌲,🌳,🌰,🌱,🌼,🌐,🌞,🌝,🌚,🌑,🌒,🌓,🌔,🌕,🌖,🌗,🌘,🌜,🌛,🌙,🌍,🌎,🌏,🌋,🌌,🌠,⭐,☀,⛅,☁,⚡,☔,❄,⛄,🌀,🌁,🌈,🌊,🎍,💝,🎎,🎒,🎓,🎏,🎆,🎇,🎐,🎑,🎃,👻,🎅,🎄,🎁,🎋,🎉,🎊,🎈,🎌,🔮,🎥,📷,📹,📼,💿,📀,💽,💾,💻,📱,☎,📞,📟,📠,📡,📺,📻,🔊,🔉,🔈,🔇,🔔,🔕,📢,📣,⏳,⌛,⏰,⌚,🔓,🔒,🔏,🔐,🔑,🔎,💡,🔦,🔆,🔅,🔌,🔋,🔍,🛁,🛀,🚿,🚽,🔧,🔩,🔨,🚪,🚬,💣,🔫,🔪,💊,💉,💰,💴,💵,💷,💶,💳,💸,📲,📧,📥,📤,✉,📩,📨,📯,📫,📪,📬,📭,📮,📦,📝,📄,📃,📑,📊,📈,📉,📜,📋,📅,📆,📇,📁,📂,✂,📌,📎,✒,✏,📏,📐,📕,📗,📘,📙,📓,📔,📒,📚,📖,🔖,📛,🔬,🔭,📰,🎨,🎬,🎤,🎧,🎼,🎵,🎶,🎹,🎻,🎺,🎷,🎸,👾,🎮,🃏,🎴,🀄,🎲,🎯,🏈,🏀,⚽,⚾,🎾,🎱,🏉,🎳,⛳,🚵,🚴,🏁,🏇,🏆,🎿,🏂,🏊,🏄,🎣,☕,🍵,🍶,🍼,🍺,🍻,🍸,🍹,🍷,🍴,🍕,🍔,🍟,🍗,🍖,🍝,🍛,🍤,🍱,🍣,🍥,🍙,🍘,🍚,🍜,🍲,🍢,🍡,🍳,🍞,🍩,🍮,🍦,🍨,🍧,🎂,🍰,🍪,🍫,🍬,🍭,🍯,🍎,🍏,🍊,🍋,🍒,🍇,🍉,🍓,🍑,🍈,🍌,🍐,🍍,🍠,🍆,🍅,🌽,🏠,🏡,🏫,🏢,🏣,🏥,🏦,🏪,🏩,🏨,💒,⛪,🏬,🏤,🌇,🌆,🏯,🏰,⛺,🏭,🗼,🗾,🗻,🌄,🌅,🌃,🗽,🌉,🎠,🎡,⛲,🎢,🚢,⛵,🚤,🚣,⚓,🚀,✈,💺,🚁,🚂,🚊,🚉,🚞,🚆,🚄,🚅,🚈,🚇,🚝,🚋,🚃,🚎,🚌,🚍,🚙,🚘,🚗,🚕,🚖,🚛,🚚,🚨,🚓,🚔,🚒,🚑,🚐,🚲,🚡,🚟,🚠,🚜,💈,🚏,🎫,🚦,🚥,⚠,🚧,🔰,⛽,🏮,🎰,♨,🗿,🎪,🎭,📍,🚩,🇯🇵,🇰🇷,🇩🇪,🇨🇳,🇺🇸,🇫🇷,🇪🇸,🇮🇹,🇷🇺,🇬🇧,1⃣,2⃣,3⃣,4⃣,5⃣,6⃣,7⃣,8⃣,9⃣,0⃣,🔟,🔢,#⃣,🔣,⬆,⬇,⬅,➡,🔠,🔡,🔤,↗,↖,↘,↙,↔,↕,🔄,◀,▶,🔼,🔽,↩,↪,ℹ,⏪,⏩,⏫,⏬,⤵,⤴,🆗,🔀,🔁,🔂,🆕,🆙,🆒,🆓,🆖,📶,🎦,🈁,🈯,🈳,🈵,🈴,🈲,🉐,🈹,🈺,🈶,🈚,🚻,🚹,🚺,🚼,🚾,🚰,🚮,🅿,♿,🚭,🈷,🈸,🈂,Ⓜ,🛂,🛄,🛅,🛃,🉑,㊙,㊗,🆑,🆘,🆔,🚫,🔞,📵,🚯,🚱,🚳,🚷,🚸,⛔,✳,❇,❎,✅,✴,💟,🆚,📳,📴,🅰,🅱,🆎,🅾,💠,➿,♻,♈,♉,♊,♋,♌,♍,♎,♏,♐,♑,♒,♓,⛎,🔯,🏧,💹,💲,💱,©,®,™,❌,‼,⁉,❗,❓,❕,❔,⭕,🔝,🔚,🔙,🔛,🔜,🔃,🕛,🕧,🕐,🕜,🕑,🕝,🕒,🕞,🕓,🕟,🕔,🕠,🕕,🕖,🕗,🕘,🕙,🕚,🕡,🕢,🕣,🕤,🕥,🕦,✖,➕,➖,➗,♠,♥,♣,♦,💮,💯,✔,☑,🔘,🔗,➰,〰,〽,🔱,◼,◻,◾,◽,▪,▫,🔺,🔲,🔳,⚫,⚪,🔴,🔵,🔻,⬜,⬛,🔶,🔷,🔸,🔹 6 | 7 | 2016 List 8 | ,😀,😬,😁,😂,😃,😄,😅,😆,😇,😉,😊,🙂,🙃,☺️,😋,😌,😍,😘,😗,😙,😚,😜,😝,😛,🤑,🤓,😎,🤗,😏,😶,😐,😑,😒,🙄,🤔,😳,😞,😟,😠,😡,😔,😕,🙁,☹️,😣,😖,😫,😩,😤,😮,😱,😨,😰,😯,😦,😧,😢,😥,😪,😓,😭,😵,😲,🤐,😷,🤒,🤕,😴,💤,💩,😈,👿,👹,👺,💀,👻,👽,🤖,😺,😸,😹,😻,😼,😽,🙀,😿,😾,🙌,👏,👋,👍,👊,✊,✌️,👌,✋,💪,🙏,☝️,👆,👇,👈,👉,🖕,🤘,🖖,✍️,💅,👄,👅,👂,👃,👁,👀,👤,🗣,👶,👦,👧,👨,👩,👱,👴,👵,👲,👳,👮,👷,💂,🕵,🎅,👼,👸,👰,🚶,🏃,💃,👯,👫,👬,👭,🙇,💁,🙅,🙆,🙋,🙎,🙍,💇,💆,💑,👩‍❤️‍👩,👨‍❤️‍👨,💏,👩‍❤️‍💋‍👩,👨‍❤️‍💋‍👨,👪,👨‍👩‍👧,👨‍👩‍👧‍👦,👨‍👩‍👦‍👦,👨‍👩‍👧‍👧,👩‍👩‍👦,👩‍👩‍👧,👩‍👩‍👧‍👦,👩‍👩‍👦‍👦,👩‍👩‍👧‍👧,👨‍👨‍👦,👨‍👨‍👧,👨‍👨‍👧‍👦,👨‍👨‍👦‍👦,👨‍👨‍👧‍👧,👚,👕,👖,👔,👗,👙,👘,💄,💋,👣,👠,👡,👢,👞,👟,👒,🎩,⛑,🎓,👑,🎒,👝,👛,👜,💼,👓,🕶,💍,🌂,👦🏻,👧🏻,👨🏻,👩🏻,👴🏻,👵🏻,👶🏻,👱🏻,👮🏻,👲🏻,👳🏻,👷🏻,👸🏻,💂🏻,🎅🏻,👼🏻,💆🏻,💇🏻,👰🏻,🙍🏻,🙎🏻,🙅🏻,🙆🏻,💁🏻,🙋🏻,🙇🏻,🙌🏻,🙏🏻,🚶🏻,🏃🏻,💃🏻,💪🏻,👈🏻,👉🏻,☝️🏻,👆🏻,🖕🏻,👇🏻,✌️🏻,🖖🏻,🤘🏻,🖐🏻,✊🏻,✋🏻,👊🏻,👌🏻,👍🏻,👎🏻,👋🏻,👏🏻,👐🏻,✍🏻,💅🏻,👂🏻,👃🏻,🚣🏻,🛀🏻,🏄🏻,🏇,🏻,🏊🏻,⛹🏻,🏋🏻,🚴🏻,🚵🏻,👦🏼,👧🏼,👨🏼,👩🏼,👴🏼,👵🏼,👶🏼,👱🏼,👮🏼,👲🏼,👳🏼,👷🏼,👸🏼,💂🏼,🎅🏼,👼🏼,💆🏼,💇🏼,👰🏼,🙍🏼,🙎🏼,🙅🏼,🙆🏼,💁🏼,🙋🏼,🙇🏼,🙌🏼,🙏🏼,🚶🏼,🏃🏼,💃🏼,💪🏼,👈🏼,👉🏼,☝️🏼,👆🏼,🖕🏼,👇🏼,✌️🏼,🖖🏼,🤘🏼,🖐🏼,✊🏼,✋🏼,👊🏼,👌🏼,👍🏼,👎🏼,👋🏼,👏🏼,👐🏼,✍🏼,💅🏼,👂🏼,👃🏼,🚣🏼,🛀🏼,🏄🏼,🏇,🏼,🏊🏼,⛹🏼,🏋🏼,🚴🏼,🚵🏼,👦🏽,👧🏽,👨🏽,👩🏽,👴🏽,👵🏽,👶🏽,👱🏽,👮🏽,👲🏽,👳🏽,👷🏽,👸🏽,💂🏽,🎅🏽,👼🏽,💆🏽,💇🏽,👰🏽,🙍🏽,🙎🏽,🙅🏽,🙆🏽,💁🏽,🙋🏽,🙇🏽,🙌🏽,🙏🏽,🚶🏽,🏃🏽,💃🏽,💪🏽,👈🏽,👉🏽,☝️🏽,👆🏽,🖕🏽,👇🏽,✌️🏽,🖖🏽,🤘🏽,🖐🏽,✊🏽,✋🏽,👊🏽,👌🏽,👍🏽,👎🏽,👋🏽,👏🏽,👐🏽,✍🏽,💅🏽,👂🏽,👃🏽,🚣🏽,🛀🏽,🏄🏽,🏇,🏽,🏊🏽,⛹🏽,🏋🏽,🚴🏽,🚵🏽,👦🏾,👧🏾,👨🏾,👩🏾,👴🏾,👵🏾,👶🏾,👱🏾,👮🏾,👲🏾,👳🏾,👷🏾,👸🏾,💂🏾,🎅🏾,👼🏾,💆🏾,💇🏾,👰🏾,🙍🏾,🙎🏾,🙅🏾,🙆🏾,💁🏾,🙋🏾,🙇🏾,🙌🏾,🙏🏾,🚶🏾,🏃🏾,💃🏾,💪🏾,👈🏾,👉🏾,☝️🏾,👆🏾,🖕🏾,👇🏾,✌️🏾,🖖🏾,🤘🏾,🖐🏾,✊🏾,✋🏾,👊🏾,👌🏾,👍🏾,👎🏾,👋🏾,👏🏾,👐🏾,✍🏾,💅🏾,👂🏾,👃🏾,🚣🏾,🛀🏾,🏄🏾,🏇,🏾,🏊🏾,⛹🏾,🏋🏾,🚴🏾,🚵🏾,👦🏿,👧🏿,👨🏿,👩🏿,👴🏿,👵🏿,👶🏿,👱🏿,👮🏿,👲🏿,👳🏿,👷🏿,👸🏿,💂🏿,🎅🏿,👼🏿,💆🏿,💇🏿,👰🏿,🙍🏿,🙎🏿,🙅🏿,🙆🏿,💁🏿,🙋🏿,🙇🏿,🙌🏿,🙏🏿,🚶🏿,🏃🏿,💃🏿,💪🏿,👈🏿,👉🏿,☝️🏿,👆🏿,🖕🏿,👇🏿,✌️🏿,🖖🏿,🤘🏿,🖐🏿,✊🏿,✋🏿,👊🏿,👌🏿,👍🏿,👎🏿,👋🏿,👏🏿,👐🏿,✍🏿,💅🏿,👂🏿,👃🏿,🚣🏿,🛀🏿,🏄🏿,🏇,🏿,🏊🏿,⛹🏿,🏋🏿,🚴🏿,🚵🏿,🐶,🐱,🐭,🐹,🐰,🐻,🐼,🐨,🐯,🦁,🐮,🐷,🐽,🐸,🐙,🐵,🙈,🙉,🙊,🐒,🐔,🐧,🐦,🐤,🐣,🐥,🐺,🐗,🐴,🦄,🐝,🐛,🐌,🐞,🐜,🕷,🦂,🦀,🐍,🐢,🐠,🐟,🐡,🐬,🐳,🐋,🐊,🐆,🐅,🐃,🐂,🐄,🐪,🐫,🐘,🐐,🐏,🐑,🐎,🐖,🐀,🐁,🐓,🦃,🕊,🐕,🐩,🐈,🐇,🐿,🐾,🐉,🐲,🌵,🎄,🌲,🌳,🌴,🌱,🌿,☘,🍀,🎍,🎋,🍃,🍂,🍁,🌾,🌺,🌻,🌹,🌷,🌼,🌸,💐,🍄,🌰,🎃,🐚,🕸,🌎,🌍,🌏,🌕,🌖,🌗,🌘,🌑,🌒,🌓,🌔,🌚,🌝,🌛,🌜,🌞,🌙,⭐️,🌟,💫,✨,☄,☀️,🌤,⛅️,🌥,🌦,☁️,🌧,⛈,🌩,⚡️,🔥,💥,❄️,🌨,🔥,💥,❄️,🌨,☃️,⛄️,🌬,💨,🌪,🌫,☂️,☔️,💧,💦,🌊,🍏,🍎,🍐,🍊,🍋,🍌,🍉,🍇,🍓,🍈,🍒,🍑,🍍,🍅,🍆,🌶,🌽,🍠,🍯,🍞,🧀,🍗,🍖,🍤,🍳,🍔,🍟,🌭,🍕,🍝,🌮,🌯,🍜,🍲,🍥,🍣,🍱,🍛,🍙,🍚,🍘,🍢,🍡,🍧,🍨,🍦,🍰,🎂,🍮,🍬,🍭,🍫,🍿,🍩,🍪,🍺,🍻,🍷,🍸,🍹,🍾,🍶,🍵,☕️,🍼,🍴,🍽,⚽️,🏀,🏈,⚾️,🎾,🏐,🏉,🎱,⛳️,🏌,🏓,🏸,🏒,🏑,🏏,🎿,⛷,🏂,⛸,🏹,🎣,🚣,🏊,🏄,🛀,⛹,🏋,🚴,🚵,🏇,🕴,🏆,🎽,🏅,🎖,🎗,🏵,🎫,🎟,🎭,🎨,🎪,🎤,🎧,🎼,🎹,🎷,🎺,🎸,🎻,🎬,🎮,👾,🎯,🎲,🎰,🎳,🚗,🚕,🚙,🚌,🚎,🏎,🚓,🚑,🚒,🚐,🚚,🚛,🚜,🏍,🚲,🚨,🚔,🚍,🚘,🚖,🚡,🚠,🚟,🚃,🚋,🚝,🚄,🚅,🚈,🚞,🚂,🚆,🚇,🚊,🚉,🚁,🛩,✈️,🛫,🛬,⛵️,🛥,🚤,⛴,🛳,🚀,🛰,💺,⚓️,🚧,⛽️,🚏,🚦,🚥,🏁,🚢,🎡,🎢,🎠,🏗,🌁,🗼,🏭,⛲️,🎑,⛰,🏔,🗻,🌋,🗾,🏕,⛺️,🏞,🛣,🛤,🌅,🌄,🏜,🏖,🏝,🌇,🌆,🏙,🌃,🌉,🌌,🌠,🎇,🎆,🌈,🏘,🏰,🏯,🏟,🗽,🏠,🏡,🏚,🏢,🏬,🏣,🏤,🏥,🏦,🏨,🏪,🏫,🏩,💒,🏛,⛪️,🕌,🕍,🕋,⛩,⌚️,📱,📲,💻,⌨,🖥,🖨,🖱,🖲,🕹,🗜,💽,💾,💿,📀,📼,📷,📸,📹,🎥,📽,🎞,📞,☎️,📟,📠,📺,📻,🎙,🎚,🎛,⏱,⏲,⏰,🕰,⏳,⌛️,📡,🔋,🔌,💡,🔦,🕯,🗑,🛢,💸,💵,💴,💶,💷,💰,💳,💎,⚖,🔧,🔨,⚒,🛠,⛏,🔩,⚙,⛓,🔫,💣,🔪,🗡,⚔,🛡,🚬,☠,⚰,⚱,🏺,🔮,📿,💈,⚗,🔭,🔬,🕳,💊,💉,🌡,🏷,🔖,🚽,🚿,🛁,🔑,🗝,🛋,🛌,🛏,🚪,🛎,🖼,🗺,⛱,🗿,🛍,🎈,🎏,🎀,🎁,🎊,🎉,🎎,🎐,🎌,🏮,✉️,📩,📨,📧,💌,📮,📪,📫,📬,📭,📦,📯,📥,📤,📜,📃,📑,📊,📈,📉,📄,📅,📆,🗓,📇,🗃,🗳,🗄,📋,🗒,📁,📂,🗂,🗞,📰,📓,📕,📗,📘,📙,📔,📒,📚,📖,🔗,📎,🖇,✂️,📐,📏,📌,📍,🚩,🏳,🏴,🔐,🔒,🔓,🔏,🖊,🖊,🖋,✒️,📝,✏️,🖍,🖌,🔍,🔎,❤️,💛,💙,💜,💔,❣️,💕,💞,💓,💗,💖,💘,💝,💟,☮,✝️,☪,🕉,☸,✡️,🔯,🕎,☯️,☦,🛐,⛎,♈️,♉️,♊️,♋️,♌️,♍️,♎️,♏️,♐️,♑️,♒️,♓️,🆔,⚛,🈳,🈹,☢,☣,📴,📳,🈶,🈚️,🈸,🈺,🈷️,✴️,🆚,🉑,💮,🉐,㊙️,㊗️,🈴,🈵,🈲,🅰️,🅱️,🆎,🆑,🅾️,🆘,⛔️,📛,🚫,❌,⭕️,💢,♨️,🚷,🚯,🚳,🚱,🔞,📵,❗️,❕,❓,❔,‼️,⁉️,💯,🔅,🔆,🔱,⚜,〽️,⚠️,🚸,🔰,♻️,🈯️,💹,❇️,✳️,❎,✅,💠,🌀,➿,🌐,Ⓜ️,🏧,🈂️,🛂,🛃,🛄,🛅,♿️,🚭,🚾,🅿️,🚰,🚹,🚺,🚼,🚻,🚮,🎦,📶,🈁,🆖,🆗,🆙,🆒,🆕,🆓,0️⃣,1️⃣,2️⃣,3️⃣,4️⃣,5️⃣,6️⃣,7️⃣,8️⃣,9️⃣,🔟,🔢,▶️,⏸,⏯,⏹,⏺,⏭,⏮,⏩,⏪,🔀,🔁,🔂,◀️,🔼,🔽,⏫,⏬,➡️,⬅️,⬆️,⬇️,↗️,↘️,↙️,↖️,↕️,↔️,🔄,↪️,↩️,⤴️,⤵️,#️⃣,*️⃣,ℹ️,🔤,🔡,🔠,🔣,🎵,🎶,〰️,➰,✔️,🔃,➕,➖,➗,✖️,💲,💱,©️,®️,™️,🔚,🔙,🔛,🔝,🔜,☑️,🔘,⚪️,⚫️,🔴,🔵,🔸,🔹,🔶,🔷,🔺,▪️,▫️,⬛️,⬜️,🔻,◼️,◻️,◾️,◽️,🔲,🔳,🔈,🔉,🔊,🔇,📣,📢,🔔,🔕,🃏,🀄️,♠️,♣️,♥️,♦️,🎴,👁‍🗨,💭,🗯,💬,🕐,🕑,🕒,🕓,🕔,🕕,🕖,🕗,🕘,🕙,🕚,🕛,🕜,🕝,🕞,🕟,🕠,🕡,🕢,🕣,🕤,🕥,🕦,🕧,🇦🇫,🇦🇽,🇦🇱,🇩🇿,🇦🇸,🇦🇩,🇦🇴,🇦🇮,🇦🇶,🇦🇬,🇦🇷,🇦🇲,🇦🇼,🇦🇺,🇦🇹,🇦🇿,🇧🇸,🇧🇭,🇧🇩,🇧🇧,🇧🇾,🇧🇪,🇧🇿,🇧🇯,🇧🇲,🇧🇹,🇧🇴,🇧🇶,🇧🇦,🇧🇼,🇧🇷,🇮🇴,🇻🇬,🇧🇳,🇧🇬,🇧🇫,🇧🇮,🇨🇻,🇰🇭,🇨🇲,🇨🇦,🇮🇨,🇰🇾,🇨🇫,🇹🇩,🇨🇱,🇨🇳,🇨🇽,🇨🇨,🇨🇴,🇰🇲,🇨🇬,🇨🇩,🇨🇰,🇨🇷,🇭🇷,🇨🇺,🇨🇼,🇨🇾,🇨🇿,🇩🇰,🇩🇯,🇩🇲,🇩🇴,🇪🇨,🇪🇬,🇸🇻,🇬🇶,🇪🇷,🇪🇪,🇪🇹,🇪🇺,🇫🇰,🇫🇴,🇫🇯,🇫🇮,🇫🇷,🇬🇫,🇵🇫,🇹🇫,🇬🇦,🇬🇲,🇬🇪,🇩🇪,🇬🇭,🇬🇮,🇬🇷,🇬🇱,🇬🇩,🇬🇵,🇬🇺,🇬🇹,🇬🇬,🇬🇳,🇬🇼,🇬🇾,🇭🇹,🇭🇳,🇭🇰,🇭🇺,🇮🇸,🇮🇳,🇮🇩,🇮🇷,🇮🇶,🇮🇪,🇮🇲,🇮🇱,🇮🇹,🇨🇮,🇯🇲,🇯🇵,🇯🇪,🇯🇴,🇰🇿,🇰🇪,🇰🇮,🇽🇰,🇰🇼,🇰🇬,🇱🇦,🇱🇻,🇱🇧,🇱🇸,🇱🇷,🇱🇾,🇱🇮,🇱🇹,🇱🇺,🇲🇴,🇲🇰,🇲🇬,🇲🇼,🇲🇾,🇲🇻,🇲🇱,🇲🇹,🇲🇭,🇲🇶,🇲🇷,🇲🇺,🇾🇹,🇲🇽,🇫🇲,🇲🇩,🇲🇨,🇲🇳,🇲🇪,🇲🇸,🇲🇦,🇲🇿,🇲🇲,🇳🇦,🇳🇷,🇳🇵,🇳🇱,🇳🇨,🇳🇿,🇳🇮,🇳🇪,🇳🇬,🇳🇺,🇳🇫,🇲🇵,🇰🇵,🇳🇴,🇴🇲,🇵🇰,🇵🇼,🇵🇸,🇵🇦,🇵🇬,🇵🇾,🇵🇪,🇵🇭,🇵🇳,🇵🇱,🇵🇹,🇵🇷,🇶🇦,🇷🇪,🇷🇴,🇷🇺,🇷🇼,🇧🇱,🇸🇭,🇰🇳,🇱🇨,🇵🇲,🇻🇨,🇼🇸,🇸🇲,🇸🇹,🇸🇦,🇸🇳,🇷🇸,🇸🇨,🇸🇱,🇸🇬,🇸🇽,🇸🇰,🇸🇮,🇸🇧,🇸🇴,🇿🇦,🇬🇸,🇰🇷,🇸🇸,🇪🇸,🇱🇰,🇸🇩,🇸🇷,🇸🇿,🇸🇪,🇨🇭,🇸🇾,🇹🇼,🇹🇯,🇹🇿,🇹🇭,🇹🇱,🇹🇬,🇹🇰,🇹🇴,🇹🇹,🇹🇳,🇹🇷,🇹🇲,🇹🇨,🇹🇻,🇺🇬,🇺🇦,🇦🇪,🇬🇧,🇺🇸,🇻🇮,🇺🇾,🇺🇿,🇻🇺,🇻🇦,🇻🇪,🇻🇳,🇼🇫,🇪🇭,🇾🇪,🇿🇲,🇿🇼 9 | -------------------------------------------------------------------------------- /components/Customizer/emojis.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | cover: ['❄️','🌨','☃️','⛄️','🌬','💨','🌪','🌫','☂️','☔️','💧','💦','🌊','🍏','🍎','🍐','🍊','🍋','🍌','🍉','🍇','🍓','🍈','🍒','🍑','🍍','🍅','🍆','🌶','🌽','🍠','🍯','🍞','🧀','🍗','🍖','🍤','🍳','🍔','🍟','🌭','🍕','🍝','🌮','🌯','🍜','🍲','🍥','🍣','🍱','🍛','🍙','🍚','🍘','🍢','🍡','🍧','🍨','🍦','🍰','🎂','🍮','🍬','🍭','🍫','🍿','🍩','🍪','🍺','🍻','🍷','🍸','🍹','🍾','🍶','🍵','☕️','🍼','🍴','🍽','😀','😬','😁','😂','😃','😄','😅','😆','😇','😉','😊','🙂','🙃','☺️','😋','😌','😍','😘','😗','😙','😚','😜','😝','😛','🤑','🤓','😎','🤗','😏','😶','😐','😑','😒','🙄','🤔','😳','😞','😟','😠','😡','😔','😕','🙁','☹️','😣','😖','😫','😩','😤','😮','😱','😨','😰','😯','😦','😧','😢','😥','😪','😓','😭','😵','😲','🤐','😷','🤒','🤕','😴','💤','💩','😈','👿','👹','👺','💀','👻','👽','🤖','😺','😸','😹','😻','😼','😽','🙀','😿','😾','🙌','👏','👋','👍','👊','✊','✌️','👌','✋','💪','🙏','☝️','👆','👇','👈','👉','🖕','🤘','🖖','✍️','💅','👄','👅','👂','👃','👁','👀','👤','🗣','👶','👦','👧','👨','👩','👱','👴','👵','👲','👳','👮','👷','💂','🕵','🎅','👼','👸','👰','🚶','🏃','💃','👯','👫','👬','👭','🙇','💁','🙅','🙆','🙋','🙎','🙍','💇','💆','💑','👩‍❤️‍👩','👨‍❤️‍👨','💏','👩‍❤️‍💋‍👩','👨‍❤️‍💋‍👨','👪','👨‍👨‍👦','👚','👕','👖','👔','👗','👙','👘','💄','💋','👣','👠','👡','👢','👞','👟','👒','🎩','⛑','🎓','👑','🎒','👝','👛','👜','💼','👓','🕶','💍','🌂','👦🏻','👧🏻','👨🏻','👩🏻','👴🏻','👵🏻','👶🏻','👱🏻','👮🏻','👲🏻','👳🏻','👷🏻','👸🏻','💂🏻','🎅🏻','👼🏻','💆🏻','💇🏻','👰🏻','🙍🏻','🙎🏻','🙅🏻','🙆🏻','💁🏻','🙋🏻','🙇🏻','🚣🏻','🛀🏻','🏄🏻','🏇','🏻','🏊🏻','⛹🏻','🏋🏻','🚴🏻','🚵🏿','🐶','🐱','🐭','🐹','🐰','🐻','🐼','🐨','🐯','🦁','🐮','🐷','🐽','🐸','🐙','🐵','🙈','🙉','🙊','🐒','🐔','🐧','🐦','🐤','🐣','🐥','🐺','🐗','🐴','🦄','🐝','🐛','🐌','🐞','🐜','🕷','🦂','🦀','🐍','🐢','🐠','🐟','🐡','🐬','🐳','🐋','🐊','🐆','🐅','🐃','🐂','🐄','🐪','🐫','🐘','🐐','🐏','🐑','🐎','🐖','🐀','🐁','🐓','🦃','🕊','🐕','🐩','🐈','🐇','🐿','🐾','🐉','🐲','🌵','🎄','🌲','🌳','🌴','🌱','🌿','☘','🍀','🎍','🎋','🍃','🍂','🍁','🌾','🌺','🌻','🌹','🌷','🌼','🌸','💐','🍄','🌰','🎃','🐚','🕸','🌎','🌍','🌏','🌕','🌖','🌗','🌘','🌑','🌒','🌓','🌔','🌚','🌝','🌛','🌜','🌞','🌙','⭐️','🌟','💫','✨','☄','☀️','🌤','⛅️','🌥','🌦','☁️','🌧','⛈','🌩','⚡️','🔥','💥','❄️','🌨','🔥','💥',,'⚽️','🏀','🏈','⚾️','🎾','🏐','🏉','🎱','⛳️','🏌','🏓','🏸','🏒','🏑','🏏','🎿','⛷','🏂','⛸','🏹','🎣','🚣','🏊','🏄','🛀','⛹','🏋','🚴','🚵','🏇','🕴','🏆','🎽','🏅','🎖','🎗','🏵','🎫','🎟','🎭','🎨','🎪','🎤','🎧','🎼','🎹','🎷','🎺','🎸','🎻','🎬','🎮','👾','🎯','🎲','🎰','🎳','🚗','🚕','🚙','🚌','🚎','🏎','🚓','🚑','🚒','🚐','🚚','🚛','🚜','🏍','🚲','🚨','🚔','🚍','🚘','🚖','🚡','🚠','🚟','🚃','🚋','🚝','🚄','🚅','🚈','🚞','🚂','🚆','🚇','🚊','🚉','🚁','🛩','✈️','🛫','🛬','⛵️','🛥','🚤','⛴','🛳','🚀','🛰','💺','⚓️','🚧','⛽️','🚏','🚦','🚥','🏁','🎆','🌈','🏘','🏰','🏯','🏟','🗽','🏠','🏡','🏚','🏢','🏬','🏣','🏤','🏥','🏦','🏨','🏪','🏫','🏩','💒','🏛','⛪️','🕌','🕍','🕋','⛩','⌚️','📱','📲','💻','⌨','🖥','🖨','🖱','🖲','🕹','🗜','💽','💾','💿','📀','📼','📷','📸','📹','🎥','📽','🎞','📞','☎️','📟','📠','📺','📻','🎙','🎚','🎛','⏱','⏲','⏰','🕰','⏳','⌛️','📡','🔋','🔌','💡','🔦','🕯','🗑','🛢','💸','💵','💴','💶','💷','💰','💳','💎','⚖','🔧','🔨','⚒','🛠','⛏','🔩','⚙','⛓','🔫','💣','🔪','🗡','⚔','🛡','🚬','☠','⚰','⚱','🏺','🔮','📿','💈','⚗','🔭','🔬','🕳','💊','💉','🌡','🏷','🔖','🚽','🚿','🛁','🔑','🗝','🛋','🛌','🛏','🚪','🛎','🖼','🗺','⛱','🗿','🛍','🎈','🎏','🎀','🎁','🎊','🎉','🎎','🎐','🎌','🏮','✉️','📩','📨','📧','💌','📮','📪','📫','📬','📭','📦','📯','📥','📤','📜','📃','📑','📊','📈','📉','📄','📅','📆','🗓','📇','🗃','🗳','🗄','📋','🗒','📁','📂','🗂','🗞','📰','📓','📕','📗','📘','📙','📔','📒','📚','📖','🔗','📎','🖇','✂️','📐','📏','📌','📍','🚩','🏳','🏴','🔐','🔒','🔓','🔏','🖊','🖊','🖋','✒️','📝','✏️','🖍','🖌','🔍','🔎','❤️','💛','💙','💜','💔','❣️','💕','💞','💓','💗','💖','💘','💝','💟','♉️','♊️','♋️','🆔','🈸','🈺','🈷️','✴️','🆚','⛔️','📛','🚫','❌','⭕️','💢','❗️','❕','❓','❔','‼️','⁉️','💯','🔅','🔆','🔱','⚜','〽️','⚠️','🚸','🔰','♻️','🈯️','💹','❇️','✳️','❎','✅','💠','🌀','➿','🌐','Ⓜ️','🏧','🈂️','🅿️','🚺','🚼','🚻','➡️','⬅️','⬆️','⬇️','↗️','↘️','↙️','↖️','ℹ️','🎵','🎶','™️','⚪️','⚫️','🔴','🔵','🔶','🔷','⬛️','⬜️','◼️','◻️','🔲','🔳','🔈','🔇','📣','📢','🔔','🔕','🃏','🀄️','♠️','♣️','♥️','♦️','🎴','👁‍🗨','💭','💬','🕐','🕑','🕒','🕓','🇺🇸','🇺🇸'], 3 | fills: ['❤️','💛','💙','💜','💔','❣️','💕','💞','💓','💗','💖','💘','💝','💟','❄️','🌨','☃️','⛄️','🌬','💨','🌪','🌫','☂️','☔️','💧','💦','🌊','🍏','🍎','🍐','🍊','🍋','🍌','🍉','🍇','🍓','🍈','🍒','🍑','🍍','🍅','🍆','🌶','🌽','🍠','🍯','🍞','🧀','🍗','🍖','🍤','🍳','🍔','🍟','🌭','🍕','🍝','🌮','🌯','🍜','🍲','🍥','🍣','🍱','🍛','🍙','🍚','🍘','🍢','🍡','🍧','🍨','🍦','🍰','🎂','🍮','🍬','🍭','🍫','🍿','🍩','🍪','🍺','🍻','🍷','🍸','🍹','🍾','🍶','🍵','☕️','🍼','🍴','🍽','😀','😬','😁','😂','😃','😄','😅','😆','😇','😉','😊','🙂','🙃','☺️','😋','😌','😍','😘','😗','😙','😚','😜','😝','😛','🤑','🤓','😎','🤗','😏','😶','😐','😑','😒','🙄','🤔','😳','😞','😟','😠','😡','😔','😕','🙁','☹️','😣','😖','😫','😩','😤','😮','😱','😨','😰','😯','😦','😧','😢','😥','😪','😓','😭','😵','😲','🤐','😷','🤒','🤕','😴','💤','💩','😈','👿','👹','👺','💀','👻','👽','🤖','😺','😸','😹','😻','😼','😽','🙀','😿','😾','🙌','👏','👋','👍','👊','✊','✌️','👌','✋','💪','🙏','☝️','👆','👇','👈','👉','🖕','🤘','🖖','✍️','💅','👄','👅','👂','👃','👁','👀','👤','🗣','👶','👦','👧','👨','👩','👱','👴','👵','👲','👳','👮','👷','💂','🕵','🎅','👼','👸','👰','🚶','🏃','💃','👯','👫','👬','👭','🙇','💁','🙅','🙆','🙋','🙎','🙍','💇','💆','💑','👩‍❤️‍👩','👨‍❤️‍👨','💏','👩‍❤️‍💋‍👩','👨‍❤️‍💋‍👨','👪','👨‍👨‍👦','👚','👕','👖','👔','👗','👙','👘','💄','💋','👣','👠','👡','👢','👞','👟','👒','🎩','⛑','🎓','👑','🎒','👝','👛','👜','💼','👓','🕶','💍','🌂','👦🏻','👧🏻','👨🏻','👩🏻','👴🏻','👵🏻','👶🏻','👱🏻','👮🏻','👲🏻','👳🏻','👷🏻','👸🏻','💂🏻','🎅🏻','👼🏻','💆🏻','💇🏻','👰🏻','🙍🏻','🙎🏻','🙅🏻','🙆🏻','💁🏻','🙋🏻','🙇🏻','🚣🏻','🛀🏻','🏄🏻','🏇','🏻','🏊🏻','⛹🏻','🏋🏻','🚴🏻','🚵🏿','🐶','🐱','🐭','🐹','🐰','🐻','🐼','🐨','🐯','🦁','🐮','🐷','🐽','🐸','🐙','🐵','🙈','🙉','🙊','🐒','🐔','🐧','🐦','🐤','🐣','🐥','🐺','🐗','🐴','🦄','🐝','🐛','🐌','🐞','🐜','🕷','🦂','🦀','🐍','🐢','🐠','🐟','🐡','🐬','🐳','🐋','🐊','🐆','🐅','🐃','🐂','🐄','🐪','🐫','🐘','🐐','🐏','🐑','🐎','🐖','🐀','🐁','🐓','🦃','🕊','🐕','🐩','🐈','🐇','🐿','🐾','🐉','🐲','🌵','🎄','🌲','🌳','🌴','🌱','🌿','☘','🍀','🎍','🎋','🍃','🍂','🍁','🌾','🌺','🌻','🌹','🌷','🌼','🌸','💐','🍄','🌰','🎃','🐚','🕸','🌎','🌍','🌏','🌕','🌖','🌗','🌘','🌑','🌒','🌓','🌔','🌚','🌝','🌛','🌜','🌞','🌙','⭐️','🌟','💫','✨','☄','☀️','🌤','⛅️','🌥','🌦','☁️','🌧','⛈','🌩','⚡️','🔥','💥','❄️','🌨','🔥','💥',,'⚽️','🏀','🏈','⚾️','🎾','🏐','🏉','🎱','⛳️','🏌','🏓','🏸','🏒','🏑','🏏','🎿','⛷','🏂','⛸','🏹','🎣','🚣','🏊','🏄','🛀','⛹','🏋','🚴','🚵','🏇','🕴','🏆','🎽','🏅','🎖','🎗','🏵','🎫','🎟','🎭','🎨','🎪','🎤','🎧','🎼','🎹','🎷','🎺','🎸','🎻','🎬','🎮','👾','🎯','🎲','🎰','🎳','🚗','🚕','🚙','🚌','🚎','🏎','🚓','🚑','🚒','🚐','🚚','🚛','🚜','🏍','🚲','🚨','🚔','🚍','🚘','🚖','🚡','🚠','🚟','🚃','🚋','🚝','🚄','🚅','🚈','🚞','🚂','🚆','🚇','🚊','🚉','🚁','🛩','✈️','🛫','🛬','⛵️','🛥','🚤','⛴','🛳','🚀','🛰','💺','⚓️','🚧','⛽️','🚏','🚦','🚥','🏁','🎆','🌈','🏘','🏰','🏯','🏟','🗽','🏠','🏡','🏚','🏢','🏬','🏣','🏤','🏥','🏦','🏨','🏪','🏫','🏩','💒','🏛','⛪️','🕌','🕍','🕋','⛩','⌚️','📱','📲','💻','⌨','🖥','🖨','🖱','🖲','🕹','🗜','💽','💾','💿','📀','📼','📷','📸','📹','🎥','📽','🎞','📞','☎️','📟','📠','📺','📻','🎙','🎚','🎛','⏱','⏲','⏰','🕰','⏳','⌛️','📡','🔋','🔌','💡','🔦','🕯','🗑','🛢','💸','💵','💴','💶','💷','💰','💳','💎','⚖','🔧','🔨','⚒','🛠','⛏','🔩','⚙','⛓','🔫','💣','🔪','🗡','⚔','🛡','🚬','☠','⚰','⚱','🏺','🔮','📿','💈','⚗','🔭','🔬','🕳','💊','💉','🌡','🏷','🔖','🚽','🚿','🛁','🔑','🗝','🛋','🛌','🛏','🚪','🛎','🖼','🗺','⛱','🗿','🛍','🎈','🎏','🎀','🎁','🎊','🎉','🎎','🎐','🎌','🏮','✉️','📩','📨','📧','💌','📮','📪','📫','📬','📭','📦','📯','📥','📤','📜','📃','📑','📊','📈','📉','📄','📅','📆','🗓','📇','🗃','🗳','🗄','📋','🗒','📁','📂','🗂','🗞','📰','📓','📕','📗','📘','📙','📔','📒','📚','📖','🔗','📎','🖇','✂️','📐','📏','📌','📍','🚩','🏳','🏴','🔐','🔒','🔓','🔏','🖊','🖊','🖋','✒️','📝','✏️','🖍','🖌','🔍','🔎','♉️','♊️','♋️','🆔','🈸','🈺','🈷️','✴️','🆚','⛔️','📛','🚫','❌','⭕️','💢','❗️','❕','❓','❔','‼️','⁉️','💯','🔅','🔆','🔱','⚜','〽️','⚠️','🚸','🔰','♻️','🈯️','💹','❇️','✳️','❎','✅','💠','🌀','➿','🌐','Ⓜ️','🏧','🈂️','🅿️','🚺','🚼','🚻','➡️','⬅️','⬆️','⬇️','↗️','↘️','↙️','↖️','ℹ️','🎵','🎶','™️','⚪️','⚫️','🔴','🔵','🔶','🔷','⬛️','⬜️','◼️','◻️','🔲','🔳','🔈','🔇','📣','📢','🔔','🔕','🃏','🀄️','♠️','♣️','♥️','♦️','🎴','👁‍🗨','💭','💬','🕐','🕑','🕒','🕓','🇺🇸','🇺🇸'] 4 | } 5 | --------------------------------------------------------------------------------