├── 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 |
29 |
33 |
34 | );
35 | }
36 | }
37 |
38 | export default Copy;
39 |
--------------------------------------------------------------------------------
/design/html/img/close.svg:
--------------------------------------------------------------------------------
1 |
2 |
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 | 
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 |
67 |
71 |
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 |
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 |
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 |
15 |
16 |
17 |
18 | 🖖🖖🖖🖖🖖🖖🖖🖖
👽👽👽👽🖖👽👽👽
🖖👽👽🖖🖖👽👽🖖
🖖👽👽🖖🖖👽👽🖖
🖖👽👽👽👽👽👽🖖
🖖👽👽🖖🖖👽👽🖖
🖖👽👽🖖🖖👽👽🖖
👽👽👽🖖👽👽👽👽
19 | 🖖🖖🖖🖖🖖🖖🖖🖖
🖖🖖👽👽👽🖖🖖🖖
🖖🖖🖖👽👽👽🖖🖖
🖖🖖👽🖖👽👽🖖🖖
🖖🖖👽🖖🖖👽👽🖖
🖖👽👽👽👽👽👽🖖
🖖👽🖖🖖🖖👽👽👽
👽👽👽🖖👽👽👽👽
20 | 🖖🖖🖖🖖🖖🖖🖖🖖
🖖👽👽👽👽👽🖖🖖
🖖🖖👽👽🖖👽👽🖖
🖖🖖👽👽🖖👽👽🖖
🖖🖖👽👽🖖👽👽🖖
🖖🖖👽👽👽👽🖖🖖
🖖🖖👽👽🖖🖖🖖🖖
🖖👽👽👽👽🖖🖖🖖
21 | 🖖🖖🖖🖖🖖🖖🖖🖖
🖖👽👽👽👽👽🖖🖖
🖖🖖👽👽🖖👽👽🖖
🖖🖖👽👽🖖👽👽🖖
🖖🖖👽👽🖖👽👽🖖
🖖🖖👽👽👽👽🖖🖖
🖖🖖👽👽🖖🖖🖖🖖
🖖👽👽👽👽🖖🖖🖖
22 | 🖖🖖🖖🖖🖖🖖🖖🖖
👽👽👽👽🖖👽👽👽
🖖👽👽🖖🖖🖖👽🖖
🖖🖖👽👽🖖👽🖖🖖
🖖🖖👽👽🖖👽🖖🖖
🖖🖖🖖👽👽🖖🖖🖖
🖖🖖🖖👽👽🖖🖖🖖
🖖🖖👽👽👽👽🖖🖖
🖖🖖🖖🖖🖖🖖🖖🖖
23 |
24 |
27 |
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 |
--------------------------------------------------------------------------------