Merge pull request #5216 from LLK/hotfix/totally-normal-2021

[Master] Hotfix/totally normal 2021
This commit is contained in:
Karishma Chadha 2021-03-31 11:56:30 -04:00 committed by GitHub
commit 9c06f27c7e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
60 changed files with 480 additions and 130 deletions

252
package-lock.json generated
View file

@ -16,9 +16,9 @@
} }
}, },
"@babel/cli": { "@babel/cli": {
"version": "7.13.10", "version": "7.13.14",
"resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.13.10.tgz", "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.13.14.tgz",
"integrity": "sha512-lYSBC7B4B9hJ7sv0Ojx1BrGhuzCoOIYfLjd+Xpd4rOzdS+a47yi8voV8vFkfjlZR1N5qZO7ixOCbobUdT304PQ==", "integrity": "sha512-zmEFV8WBRsW+mPQumO1/4b34QNALBVReaiHJOkxhUsdo/AvYM62c+SKSuLi2aZ42t3ocK6OI0uwUXRvrIbREZw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents", "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents",
@ -232,25 +232,24 @@
"dev": true "dev": true
}, },
"@babel/core": { "@babel/core": {
"version": "7.13.10", "version": "7.13.14",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz",
"integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "^7.12.13", "@babel/code-frame": "^7.12.13",
"@babel/generator": "^7.13.9", "@babel/generator": "^7.13.9",
"@babel/helper-compilation-targets": "^7.13.10", "@babel/helper-compilation-targets": "^7.13.13",
"@babel/helper-module-transforms": "^7.13.0", "@babel/helper-module-transforms": "^7.13.14",
"@babel/helpers": "^7.13.10", "@babel/helpers": "^7.13.10",
"@babel/parser": "^7.13.10", "@babel/parser": "^7.13.13",
"@babel/template": "^7.12.13", "@babel/template": "^7.12.13",
"@babel/traverse": "^7.13.0", "@babel/traverse": "^7.13.13",
"@babel/types": "^7.13.0", "@babel/types": "^7.13.14",
"convert-source-map": "^1.7.0", "convert-source-map": "^1.7.0",
"debug": "^4.1.0", "debug": "^4.1.0",
"gensync": "^1.0.0-beta.2", "gensync": "^1.0.0-beta.2",
"json5": "^2.1.2", "json5": "^2.1.2",
"lodash": "^4.17.19",
"semver": "^6.3.0", "semver": "^6.3.0",
"source-map": "^0.5.0" "source-map": "^0.5.0"
}, },
@ -316,9 +315,9 @@
} }
}, },
"@babel/parser": { "@babel/parser": {
"version": "7.13.12", "version": "7.13.13",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz",
"integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==",
"dev": true "dev": true
}, },
"@babel/template": { "@babel/template": {
@ -333,26 +332,25 @@
} }
}, },
"@babel/traverse": { "@babel/traverse": {
"version": "7.13.0", "version": "7.13.13",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz",
"integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "^7.12.13", "@babel/code-frame": "^7.12.13",
"@babel/generator": "^7.13.0", "@babel/generator": "^7.13.9",
"@babel/helper-function-name": "^7.12.13", "@babel/helper-function-name": "^7.12.13",
"@babel/helper-split-export-declaration": "^7.12.13", "@babel/helper-split-export-declaration": "^7.12.13",
"@babel/parser": "^7.13.0", "@babel/parser": "^7.13.13",
"@babel/types": "^7.13.0", "@babel/types": "^7.13.13",
"debug": "^4.1.0", "debug": "^4.1.0",
"globals": "^11.1.0", "globals": "^11.1.0"
"lodash": "^4.17.19"
} }
}, },
"@babel/types": { "@babel/types": {
"version": "7.13.12", "version": "7.13.14",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz",
"integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/helper-validator-identifier": "^7.12.11", "@babel/helper-validator-identifier": "^7.12.11",
@ -494,12 +492,12 @@
} }
}, },
"@babel/helper-compilation-targets": { "@babel/helper-compilation-targets": {
"version": "7.13.10", "version": "7.13.13",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz",
"integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==", "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/compat-data": "^7.13.8", "@babel/compat-data": "^7.13.12",
"@babel/helper-validator-option": "^7.12.17", "@babel/helper-validator-option": "^7.12.17",
"browserslist": "^4.14.5", "browserslist": "^4.14.5",
"semver": "^6.3.0" "semver": "^6.3.0"
@ -519,9 +517,9 @@
} }
}, },
"electron-to-chromium": { "electron-to-chromium": {
"version": "1.3.697", "version": "1.3.701",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.697.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.701.tgz",
"integrity": "sha512-VTAS+IWwGlfaL7VtfUMzFeV55PT/HglNFqQ6eW9E3PfjvPqhZfqJj+8dd9zrqrJYcouUfCgQw0OIse85Dz9V9Q==", "integrity": "sha512-Zd9ofdIMYHYhG1gvnejQDvC/kqSeXQvtXF0yRURGxgwGqDZm9F9Fm3dYFnm5gyuA7xpXfBlzVLN1sz0FjxpKfw==",
"dev": true "dev": true
}, },
"semver": { "semver": {
@ -562,9 +560,9 @@
}, },
"dependencies": { "dependencies": {
"@babel/types": { "@babel/types": {
"version": "7.13.12", "version": "7.13.14",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz",
"integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/helper-validator-identifier": "^7.12.11", "@babel/helper-validator-identifier": "^7.12.11",
@ -596,9 +594,9 @@
}, },
"dependencies": { "dependencies": {
"@babel/types": { "@babel/types": {
"version": "7.13.12", "version": "7.13.14",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz",
"integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/helper-validator-identifier": "^7.12.11", "@babel/helper-validator-identifier": "^7.12.11",
@ -621,9 +619,9 @@
} }
}, },
"@babel/helper-module-transforms": { "@babel/helper-module-transforms": {
"version": "7.13.12", "version": "7.13.14",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz",
"integrity": "sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==", "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/helper-module-imports": "^7.13.12", "@babel/helper-module-imports": "^7.13.12",
@ -632,8 +630,8 @@
"@babel/helper-split-export-declaration": "^7.12.13", "@babel/helper-split-export-declaration": "^7.12.13",
"@babel/helper-validator-identifier": "^7.12.11", "@babel/helper-validator-identifier": "^7.12.11",
"@babel/template": "^7.12.13", "@babel/template": "^7.12.13",
"@babel/traverse": "^7.13.0", "@babel/traverse": "^7.13.13",
"@babel/types": "^7.13.12" "@babel/types": "^7.13.14"
}, },
"dependencies": { "dependencies": {
"@babel/code-frame": { "@babel/code-frame": {
@ -697,9 +695,9 @@
} }
}, },
"@babel/parser": { "@babel/parser": {
"version": "7.13.12", "version": "7.13.13",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz",
"integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==",
"dev": true "dev": true
}, },
"@babel/template": { "@babel/template": {
@ -714,26 +712,25 @@
} }
}, },
"@babel/traverse": { "@babel/traverse": {
"version": "7.13.0", "version": "7.13.13",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz",
"integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "^7.12.13", "@babel/code-frame": "^7.12.13",
"@babel/generator": "^7.13.0", "@babel/generator": "^7.13.9",
"@babel/helper-function-name": "^7.12.13", "@babel/helper-function-name": "^7.12.13",
"@babel/helper-split-export-declaration": "^7.12.13", "@babel/helper-split-export-declaration": "^7.12.13",
"@babel/parser": "^7.13.0", "@babel/parser": "^7.13.13",
"@babel/types": "^7.13.0", "@babel/types": "^7.13.13",
"debug": "^4.1.0", "debug": "^4.1.0",
"globals": "^11.1.0", "globals": "^11.1.0"
"lodash": "^4.17.19"
} }
}, },
"@babel/types": { "@babel/types": {
"version": "7.13.12", "version": "7.13.14",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz",
"integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/helper-validator-identifier": "^7.12.11", "@babel/helper-validator-identifier": "^7.12.11",
@ -827,9 +824,9 @@
}, },
"dependencies": { "dependencies": {
"@babel/types": { "@babel/types": {
"version": "7.13.12", "version": "7.13.14",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz",
"integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/helper-validator-identifier": "^7.12.11", "@babel/helper-validator-identifier": "^7.12.11",
@ -930,9 +927,9 @@
} }
}, },
"@babel/parser": { "@babel/parser": {
"version": "7.13.12", "version": "7.13.13",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz",
"integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==",
"dev": true "dev": true
}, },
"@babel/template": { "@babel/template": {
@ -947,26 +944,25 @@
} }
}, },
"@babel/traverse": { "@babel/traverse": {
"version": "7.13.0", "version": "7.13.13",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz",
"integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "^7.12.13", "@babel/code-frame": "^7.12.13",
"@babel/generator": "^7.13.0", "@babel/generator": "^7.13.9",
"@babel/helper-function-name": "^7.12.13", "@babel/helper-function-name": "^7.12.13",
"@babel/helper-split-export-declaration": "^7.12.13", "@babel/helper-split-export-declaration": "^7.12.13",
"@babel/parser": "^7.13.0", "@babel/parser": "^7.13.13",
"@babel/types": "^7.13.0", "@babel/types": "^7.13.13",
"debug": "^4.1.0", "debug": "^4.1.0",
"globals": "^11.1.0", "globals": "^11.1.0"
"lodash": "^4.17.19"
} }
}, },
"@babel/types": { "@babel/types": {
"version": "7.13.12", "version": "7.13.14",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz",
"integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/helper-validator-identifier": "^7.12.11", "@babel/helper-validator-identifier": "^7.12.11",
@ -1060,9 +1056,9 @@
}, },
"dependencies": { "dependencies": {
"@babel/types": { "@babel/types": {
"version": "7.13.12", "version": "7.13.14",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz",
"integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/helper-validator-identifier": "^7.12.11", "@babel/helper-validator-identifier": "^7.12.11",
@ -1177,9 +1173,9 @@
} }
}, },
"@babel/parser": { "@babel/parser": {
"version": "7.13.12", "version": "7.13.13",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz",
"integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", "integrity": "sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==",
"dev": true "dev": true
}, },
"@babel/template": { "@babel/template": {
@ -1194,26 +1190,25 @@
} }
}, },
"@babel/traverse": { "@babel/traverse": {
"version": "7.13.0", "version": "7.13.13",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.13.tgz",
"integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", "integrity": "sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "^7.12.13", "@babel/code-frame": "^7.12.13",
"@babel/generator": "^7.13.0", "@babel/generator": "^7.13.9",
"@babel/helper-function-name": "^7.12.13", "@babel/helper-function-name": "^7.12.13",
"@babel/helper-split-export-declaration": "^7.12.13", "@babel/helper-split-export-declaration": "^7.12.13",
"@babel/parser": "^7.13.0", "@babel/parser": "^7.13.13",
"@babel/types": "^7.13.0", "@babel/types": "^7.13.13",
"debug": "^4.1.0", "debug": "^4.1.0",
"globals": "^11.1.0", "globals": "^11.1.0"
"lodash": "^4.17.19"
} }
}, },
"@babel/types": { "@babel/types": {
"version": "7.13.12", "version": "7.13.14",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz",
"integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/helper-validator-identifier": "^7.12.11", "@babel/helper-validator-identifier": "^7.12.11",
@ -4860,9 +4855,9 @@
"dev": true "dev": true
}, },
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30001191", "version": "1.0.30001204",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001191.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz",
"integrity": "sha512-xJJqzyd+7GCJXkcoBiQ1GuxEiOBCLQ0aVW9HMekifZsAVGdj5eJ4mFB9fEhSHipq9IOk/QXFJUiIr9lZT+EsGw==", "integrity": "sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ==",
"dev": true "dev": true
}, },
"canvas-fit": { "canvas-fit": {
@ -5350,9 +5345,9 @@
"dev": true "dev": true
}, },
"colorette": { "colorette": {
"version": "1.2.1", "version": "1.2.2",
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
"integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==",
"dev": true "dev": true
}, },
"colormap": { "colormap": {
@ -15809,9 +15804,9 @@
} }
}, },
"node-releases": { "node-releases": {
"version": "1.1.70", "version": "1.1.71",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.70.tgz", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz",
"integrity": "sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw==", "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==",
"dev": true "dev": true
}, },
"node-sass": { "node-sass": {
@ -20909,9 +20904,9 @@
} }
}, },
"scratch-blocks": { "scratch-blocks": {
"version": "0.1.0-prerelease.20210324033606", "version": "0.1.0-prerelease.20210329152629",
"resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.1.0-prerelease.20210324033606.tgz", "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.1.0-prerelease.20210329152629.tgz",
"integrity": "sha512-zCf7mN64RLME1tA9t2HcDEnf5h5+ziMyksbQj3gsWOUylYLrrYksMBw7wprVEMdPBJwz+4HhpcpkkrCQV1NVnw==", "integrity": "sha512-aOsTbGnwI+senEBpH8ZCAipJhxkyJ2UPrKA7JeTtBN4xsoW5sTvQ/fEpnBa/wa0pYi9abk2KGvfGDV1qdp8onA==",
"dev": true, "dev": true,
"requires": { "requires": {
"exports-loader": "0.6.3", "exports-loader": "0.6.3",
@ -20919,9 +20914,9 @@
} }
}, },
"scratch-gui": { "scratch-gui": {
"version": "0.1.0-prerelease.20210324120840", "version": "0.1.0-prerelease.20210329170111",
"resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-0.1.0-prerelease.20210324120840.tgz", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-0.1.0-prerelease.20210329170111.tgz",
"integrity": "sha512-6KLZfZdJLAMLBDJo/LC6f0ckUg0CefE941NvBiNmV2XOIAoMPe5gq/eX3C1JT6BDLAFw4ogw4+K1KmQX/PYibw==", "integrity": "sha512-QM/f9FtDesgfb8vKNwkIPUxcYWZtcYqzROz0R4d5bsQ8W9k8FxP1NBr8hw/Lmoh+AyrJWY3MmUk+v8saX5/yOg==",
"dev": true, "dev": true,
"requires": { "requires": {
"arraybuffer-loader": "^1.0.6", "arraybuffer-loader": "^1.0.6",
@ -20972,10 +20967,10 @@
"redux": "3.7.2", "redux": "3.7.2",
"redux-throttle": "0.1.1", "redux-throttle": "0.1.1",
"scratch-audio": "0.1.0-prerelease.20200528195344", "scratch-audio": "0.1.0-prerelease.20200528195344",
"scratch-blocks": "0.1.0-prerelease.20210324033606", "scratch-blocks": "0.1.0-prerelease.20210329152629",
"scratch-l10n": "3.11.20210324031512", "scratch-l10n": "3.11.20210324031512",
"scratch-paint": "0.2.0-prerelease.20210319222931", "scratch-paint": "0.2.0-prerelease.20210319222931",
"scratch-render": "0.1.0-prerelease.20210317200605", "scratch-render": "0.1.0-prerelease.20210329152519",
"scratch-render-fonts": "1.0.0-prerelease.20200507182347", "scratch-render-fonts": "1.0.0-prerelease.20200507182347",
"scratch-storage": "1.3.3", "scratch-storage": "1.3.3",
"scratch-svg-renderer": "0.2.0-prerelease.20210317184701", "scratch-svg-renderer": "0.2.0-prerelease.20210317184701",
@ -21142,9 +21137,9 @@
"dev": true "dev": true
}, },
"electron-to-chromium": { "electron-to-chromium": {
"version": "1.3.698", "version": "1.3.701",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.698.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.701.tgz",
"integrity": "sha512-VEXDzYblnlT+g8Q3gedwzgKOso1evkeJzV8lih7lV8mL8eAnGVnKyC3KsFT6S+R5PQO4ffdr1PI16/ElibY/kQ==", "integrity": "sha512-Zd9ofdIMYHYhG1gvnejQDvC/kqSeXQvtXF0yRURGxgwGqDZm9F9Fm3dYFnm5gyuA7xpXfBlzVLN1sz0FjxpKfw==",
"dev": true "dev": true
}, },
"has-flag": { "has-flag": {
@ -21364,6 +21359,19 @@
"integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
"dev": true "dev": true
}, },
"scratch-l10n": {
"version": "3.11.20210324031512",
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.11.20210324031512.tgz",
"integrity": "sha512-dyv2cjNWVHrL78XpW64uF2azYaUhMKLjfJVH6vSCPJxm3EKCvO6EoaUSlIAwhsGoMwgfxWZ8D74+IaifGJfnCQ==",
"dev": true,
"requires": {
"@babel/cli": "^7.1.2",
"@babel/core": "^7.1.2",
"babel-plugin-react-intl": "^3.0.1",
"react-intl": "^2.8.0",
"transifex": "1.6.6"
}
},
"scratch-storage": { "scratch-storage": {
"version": "1.3.3", "version": "1.3.3",
"resolved": "https://registry.npmjs.org/scratch-storage/-/scratch-storage-1.3.3.tgz", "resolved": "https://registry.npmjs.org/scratch-storage/-/scratch-storage-1.3.3.tgz",
@ -21431,9 +21439,9 @@
} }
}, },
"scratch-l10n": { "scratch-l10n": {
"version": "3.11.20210324031512", "version": "3.11.20210329031438",
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.11.20210324031512.tgz", "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.11.20210329031438.tgz",
"integrity": "sha512-dyv2cjNWVHrL78XpW64uF2azYaUhMKLjfJVH6vSCPJxm3EKCvO6EoaUSlIAwhsGoMwgfxWZ8D74+IaifGJfnCQ==", "integrity": "sha512-/XnUW5Q7xaxvlNTBChrqyQjSM0jpk3SQfdlbM/76qO8D7vWOTCAyaCbQ05v/Wnm9V8QqWqlp3+e1yNWa4k4c+Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/cli": "^7.1.2", "@babel/cli": "^7.1.2",
@ -21457,7 +21465,7 @@
"minilog": "3.1.0", "minilog": "3.1.0",
"parse-color": "1.0.0", "parse-color": "1.0.0",
"prop-types": "^15.5.10", "prop-types": "^15.5.10",
"scratch-render-fonts": "^1.0.0-prerelease.20200507182347" "scratch-render-fonts": "^1.0.0-prerelease.20210325224822"
}, },
"dependencies": { "dependencies": {
"lodash.omit": { "lodash.omit": {
@ -21482,9 +21490,9 @@
} }
}, },
"scratch-render-fonts": { "scratch-render-fonts": {
"version": "1.0.0-prerelease.20200507182347", "version": "1.0.0-prerelease.20210325224822",
"resolved": "https://registry.npmjs.org/scratch-render-fonts/-/scratch-render-fonts-1.0.0-prerelease.20200507182347.tgz", "resolved": "https://registry.npmjs.org/scratch-render-fonts/-/scratch-render-fonts-1.0.0-prerelease.20210325224822.tgz",
"integrity": "sha512-tVt2s7lxsBhme9WKIZTnluMerdJVGEc80QSrDdIIzUvHXGCIYkLh6j7ytwXcyq2UsA34d93op9+I9Bh1SPkQkA==", "integrity": "sha512-N68YRKGEbFvMAhfNFEluDuWFXUCbO9ezRahqJKwCFpEQuhgQ9tmA+y+GZ5ETQwI/e9M1tHAfX/8DxK5yBdQT1A==",
"dev": true, "dev": true,
"requires": { "requires": {
"base64-loader": "1.0.0" "base64-loader": "1.0.0"
@ -21515,9 +21523,9 @@
} }
}, },
"scratch-render": { "scratch-render": {
"version": "0.1.0-prerelease.20210317200605", "version": "0.1.0-prerelease.20210329152519",
"resolved": "https://registry.npmjs.org/scratch-render/-/scratch-render-0.1.0-prerelease.20210317200605.tgz", "resolved": "https://registry.npmjs.org/scratch-render/-/scratch-render-0.1.0-prerelease.20210329152519.tgz",
"integrity": "sha512-HbWHTOX9X/jlZw0HINKfHkZ8H7GHiyqR8Cj3jKowHrH2r8bTn7K8DfT3Ql81fepMxVqqeKFPPnpvHwvDEaYWKg==", "integrity": "sha512-w7n4t6FSQQGzXoDJJ0SnhOCDhc42EX28qWdjm73Zsv7nR/HFLwblrglodeTgcIU35bAX2rmWLDBgAMyhe7S1LA==",
"dev": true, "dev": true,
"requires": { "requires": {
"grapheme-breaker": "0.3.2", "grapheme-breaker": "0.3.2",

View file

@ -125,7 +125,7 @@
"redux-mock-store": "^1.2.3", "redux-mock-store": "^1.2.3",
"redux-thunk": "2.0.1", "redux-thunk": "2.0.1",
"sass-loader": "6.0.6", "sass-loader": "6.0.6",
"scratch-gui": "0.1.0-prerelease.20210324120840", "scratch-gui": "0.1.0-prerelease.20210329170111",
"scratch-l10n": "latest", "scratch-l10n": "latest",
"selenium-webdriver": "3.6.0", "selenium-webdriver": "3.6.0",
"slick-carousel": "1.6.0", "slick-carousel": "1.6.0",

View file

@ -0,0 +1,154 @@
const React = require('react');
const bindAll = require('lodash.bindall');
const Modal = require('../modal/base/modal.jsx');
const ModalTitle = require('../modal/base/modal-title.jsx');
require('./cats.scss');
const catImages = [
'/images/cats/IMG_9775.jpg',
'/images/cats/IMG_9766.jpg',
'/images/cats/IMG_9587.jpg',
'/images/cats/IMG_6558.jpg',
'/images/cats/IMG_6521.jpg',
'/images/cats/IMG_6020.jpg',
'/images/cats/IMG_5880.jpg',
'/images/cats/IMG_3218.jpg',
'/images/cats/IMG_2776.jpg',
'/images/cats/IMG_2775.jpg',
'/images/cats/IMG_2681.jpg',
'/images/cats/IMG_1092.jpg',
'/images/cats/IMG_0684.jpg',
'/images/cats/IMG_0698.jpg',
'/images/cats/IMG_0504.jpg',
'/images/cats/IMG_0288.jpg',
'/images/cats/IMG_0122.jpg',
'/images/cats/IMG_2507.jpg',
'/images/cats/IMG_1977.jpg',
'/images/cats/IMG_1696.jpg',
'/images/cats/IMG_1463.jpg',
'/images/cats/IMG_1157.jpg',
'/images/cats/IMG_0681.jpg',
'/images/cats/IMG_0135.jpg',
'/images/cats/IMG_0071.jpg',
'/images/cats/1.jpg',
'/images/cats/2.jpg',
'/images/cats/3.jpg',
'/images/cats/4.jpg',
'/images/cats/cat-meme.jpg',
'/images/cats/cat-meme2.jpg',
'/images/cats/Cat1.jpg',
'/images/cats/Cat2.jpg',
'/images/cats/Cat3.jpg',
'/images/cats/Cat4.jpg',
'/images/cats/Cat5.jpg',
'/images/cats/Cat6.png',
'/images/cats/Cat7.jpg',
'/images/cats/Cat8.jpg',
'/images/cats/Cat9.jpg',
'/images/cats/Cat10.png',
'/images/cats/Cat11.png',
'/images/cats/Cat12.png',
'/images/cats/Cat13.png',
'/images/cats/Cat14.png',
'/images/cats/IMG_2167.jpg',
'/images/cats/IMG_4316.jpg',
'/images/cats/IMG_5396.jpg'
];
/* eslint-disable max-len */
const mysteryFacts = [
'I became a pet after retiring from NASA.',
'I was cursed to take this form by an evil wizard.',
'My alter ego is Katy Purry.',
'You should feed me now or I\'ll be late to my bowling league.',
'You think you know, but you have no idea. This is the diary of Scratch Cat...',
'I\'m a criminal paw-secutor.',
'By night, I put on a human costume and fight crime.',
'My grandma was the inspiration for Warrior Cats.',
'You think I\'m running back and forth for no reason, but I\'ve got a marathon in June I\'m training for.',
'Can you please put on the movie Ratatouille?',
'In my secret lab I\'ve almost perfected prosthetic opposable thumbs.',
'I\'m late for my audition for Cats: The Musical.',
'Actually I\'m a famous opera meower.',
'My purrs are ancient healing magic.',
'I purr because I contain a small motor.',
'I\'m not trying to stab you with my claws, I\'m practicing to be on The Great British Bakeoff.',
'My name is Alexander Hameowlton.',
'When my humans go to school, I host tea parties with the neighborhood pets.',
'When I scratch at the furniture it\'s my way of telling you it\'s time for a new couch',
'I knock things off the table, because things on the table are my mortal enemies.',
'When I sleep, I dream about three things: fish, catnip, and you. But mostly fish.',
'This is my angry face.',
'I\'m a cat during the day, but I\'m a loaf ... also during the day.',
'At night I closely study the word "homeowner" because the word "meow" is in it.',
'My journal is filled with so many cat puns, I almost cat believe it.',
'I\'m gonna change the world super soon, quick 3-hour power nap first.',
'If Scratch code happened in real life, "Move 10" would make me just sit there and look at you',
'I theorized the existence of radium and then was so disappointed to out that Marie Curie had beat me to it in 1902!',
'In my free time, I like to go bird watching.',
'Hannah Meowtana was inspired by my life.'
];
/* eslint-enable max-len */
class Cats extends React.Component {
constructor (props) {
super(props);
bindAll(this, [
'handleCatsClick',
'handleClose',
'pickRandomFact'
]);
this.state = {
open: false
};
}
handleCatsClick () {
this.setState({open: true});
}
handleClose () {
this.setState({open: false});
}
pickRandomFact () {
const randomNumber = Math.floor(Math.random() * (mysteryFacts.length - 1));
const catFact = mysteryFacts[randomNumber];
return catFact;
}
pickRandomCatImage () {
const randomNumber = Math.floor(Math.random() * (catImages.length - 1));
const catImage = catImages[randomNumber];
return catImage;
}
render () {
return (<React.Fragment>
<div onClick={this.handleCatsClick}>
<a> {'Secret Lives'} </a>
</div>
<Modal
useStandardSizes
className="mod-cats"
isOpen={this.state.open}
onRequestClose={this.handleClose}
>
<div className="cats-modal-header modal-header">
<ModalTitle title={'Shhh... 🤫'} />
</div>
<div className="cats-modal-content modal-content">
<p> {this.pickRandomFact()} </p>
<img src={this.pickRandomCatImage()} />
</div>
</Modal>
</React.Fragment>
);
}
}
module.exports = Cats;

View file

@ -0,0 +1,34 @@
@import "../../colors";
@import "../../frameless";
.mod-cats {
min-height: 15rem;
max-height: calc(100% - 5rem);
overflow: hidden;
}
.cats-modal-header {
box-shadow: inset 0 -1px 0 0 $ui-blue-dark;
background-color: $ui-blue;
}
.cats-modal-content {
margin: 0 auto;
box-shadow: none;
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
padding: 20px 50px;
}
.cats-modal-content img {
width: 400px;
@media #{$small}, #{$small-height} {
width: 100%;
}
}

View file

@ -8,6 +8,7 @@ const React = require('react');
const FooterBox = require('../container/footer.jsx'); const FooterBox = require('../container/footer.jsx');
const LanguageChooser = require('../../languagechooser/languagechooser.jsx'); const LanguageChooser = require('../../languagechooser/languagechooser.jsx');
const Cats = require('../../cats/cats.jsx');
const frameless = require('../../../lib/frameless'); const frameless = require('../../../lib/frameless');
const getScratchWikiLink = require('../../../lib/scratch-wiki'); const getScratchWikiLink = require('../../../lib/scratch-wiki');
@ -34,6 +35,9 @@ const Footer = props => (
<FormattedMessage id="general.contactUs" /> <FormattedMessage id="general.contactUs" />
</a> </a>
</dd> </dd>
<dd>
<Cats />
</dd>
</dl> </dl>
<dl> <dl>
<dd> <dd>
@ -100,7 +104,9 @@ const Footer = props => (
<FormattedMessage id="general.donate" /> <FormattedMessage id="general.donate" />
</a> </a>
</dd> </dd>
<dd>
<Cats />
</dd>
</dl> </dl>
<dl> <dl>
<dt> <dt>

View file

@ -9,7 +9,9 @@ const thumbnailUrl = require('../../lib/user-thumbnail');
require('./grid.scss'); require('./grid.scss');
const Grid = props => ( const Grid = props => (
<div className={classNames('grid', props.className)}> <div
className={classNames('grid', props.className)}
>
<FlexRow> <FlexRow>
{props.items.map((item, key) => { {props.items.map((item, key) => {
const href = `/${props.itemType}/${item.id}/`; const href = `/${props.itemType}/${item.id}/`;
@ -19,6 +21,7 @@ const Grid = props => (
avatar={thumbnailUrl(item.author.id)} avatar={thumbnailUrl(item.author.id)}
creator={item.author.username} creator={item.author.username}
favorites={item.stats.favorites} favorites={item.stats.favorites}
isUpsideDown={props.isUpsideDown}
href={href} href={href}
key={key} key={key}
loves={item.stats.loves} loves={item.stats.loves}
@ -38,6 +41,7 @@ const Grid = props => (
return ( return (
<Thumbnail <Thumbnail
href={href} href={href}
isUpsideDown={props.isUpsideDown}
key={key} key={key}
owner={item.owner} owner={item.owner}
src={item.image} src={item.image}
@ -52,6 +56,7 @@ const Grid = props => (
Grid.propTypes = { Grid.propTypes = {
className: PropTypes.string, className: PropTypes.string,
isUpsideDown: PropTypes.bool,
itemType: PropTypes.string, itemType: PropTypes.string,
items: PropTypes.arrayOf(PropTypes.object), items: PropTypes.arrayOf(PropTypes.object),
showAvatar: PropTypes.bool, showAvatar: PropTypes.bool,

View file

@ -11,6 +11,16 @@
$project-height: 208px; $project-height: 208px;
$gallery-height: 164px; $gallery-height: 164px;
&.cat {
background-image: url("/svgs/space-cat.svg");
background-size: contain;
background-repeat: no-repeat;
.thumbnail {
opacity: .85;
}
}
.flex-row { .flex-row {
margin: 0 auto; margin: 0 auto;
padding: 12px 0; padding: 12px 0;

View file

@ -110,12 +110,16 @@ const Thumbnail = props => {
</a> </a>
); );
} }
const surpriseClass = props.isUpsideDown ? 'upsideDown' : '';
return ( return (
<div <div
className={classNames( className={classNames(
'thumbnail', 'thumbnail',
props.type, props.type,
props.className props.className,
surpriseClass
)} )}
> >
{imgElement} {imgElement}
@ -136,6 +140,7 @@ Thumbnail.propTypes = {
className: PropTypes.string, className: PropTypes.string,
creator: PropTypes.string, creator: PropTypes.string,
favorites: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), favorites: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
isUpsideDown: PropTypes.bool,
href: PropTypes.string, href: PropTypes.string,
linkTitle: PropTypes.bool, linkTitle: PropTypes.bool,
loves: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), loves: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),

View file

@ -112,4 +112,8 @@
height: $gallery-height; height: $gallery-height;
} }
} }
&.upsideDown {
transform: rotate(180deg);
}
} }

View file

@ -82,5 +82,5 @@
} }
</script> </script>
<% } %> <% } %>
</body> <div style="color: #fff">;</div></body>
</html> </html>

View file

@ -29,7 +29,8 @@ class Search extends React.Component {
'getSearchState', 'getSearchState',
'handleChangeSortMode', 'handleChangeSortMode',
'handleGetSearchMore', 'handleGetSearchMore',
'getTab' 'getTab',
'tick'
]); ]);
this.state = this.getSearchState(); this.state = this.getSearchState();
this.state.loaded = []; this.state.loaded = [];
@ -38,6 +39,12 @@ class Search extends React.Component {
this.state.offset = 0; this.state.offset = 0;
this.state.loadMore = false; this.state.loadMore = false;
this.state.isUpsideDown = false;
this.state.isRainbow = false;
this.state.isSecret = false;
this.state.elapsed = 0;
let mode = ''; let mode = '';
const query = window.location.search; const query = window.location.search;
const m = query.lastIndexOf('mode='); const m = query.lastIndexOf('mode=');
@ -54,7 +61,6 @@ class Search extends React.Component {
if (ACCEPTABLE_MODES.indexOf(mode) !== -1) { if (ACCEPTABLE_MODES.indexOf(mode) !== -1) {
this.state.mode = mode; this.state.mode = mode;
} }
} }
componentDidMount () { componentDidMount () {
// just in case there's a URL in the wild with pluses to indicate spaces, // just in case there's a URL in the wild with pluses to indicate spaces,
@ -86,13 +92,22 @@ class Search extends React.Component {
// Error means that term was not URI encoded and decoding failed. // Error means that term was not URI encoded and decoding failed.
// We can silence this error because not all query strings are intended to be decoded. // We can silence this error because not all query strings are intended to be decoded.
} }
this.props.dispatch(navigationActions.setSearchTerm(term)); this.props.dispatch(navigationActions.setSearchTerm(term));
} }
componentDidUpdate (prevProps) { componentDidUpdate (prevProps) {
if (this.props.searchTerm !== prevProps.searchTerm) { if (this.props.searchTerm !== prevProps.searchTerm) {
this.setEasterEggs(this.props.searchTerm);
this.handleGetSearchMore(); this.handleGetSearchMore();
} }
} }
tick () {
this.setState(prevState => (
{elapsed: (prevState.elapsed + 10) % 360}
));
}
encodeSearchTerm () { encodeSearchTerm () {
let termText = ''; let termText = '';
if (this.props.searchTerm) { if (this.props.searchTerm) {
@ -122,6 +137,23 @@ class Search extends React.Component {
window.location = newLocation; window.location = newLocation;
} }
} }
setEasterEggs (term) {
if (term === 'upside down' || term === 'upsidedown' || term === 'upside-down') {
this.setState({isUpsideDown: true});
}
if (term.includes('rainbow')) {
this.setState({isRainbow: true});
setInterval(this.tick, 200);
}
if (term.includes('secret life')) {
this.setState({isSecret: true});
setInterval(this.tick, 200);
}
}
handleGetSearchMore () { handleGetSearchMore () {
const termText = this.encodeSearchTerm(); const termText = this.encodeSearchTerm();
const locale = this.props.intl.locale; const locale = this.props.intl.locale;
@ -180,11 +212,14 @@ class Search extends React.Component {
} }
return allTab; return allTab;
} }
getProjectBox () { getProjectBox () {
const results = ( const results = (
<Grid <Grid
cards cards
className={this.state.isSecret ? 'cat' : null}
showAvatar showAvatar
isUpsideDown={this.state.isUpsideDown}
itemType={this.state.tab} itemType={this.state.tab}
items={this.state.loaded} items={this.state.loaded}
showFavorites={false} showFavorites={false}
@ -193,6 +228,7 @@ class Search extends React.Component {
/> />
); );
let searchAction = null; let searchAction = null;
if (this.state.loaded.length === 0 && this.state.offset !== 0) { if (this.state.loaded.length === 0 && this.state.offset !== 0) {
searchAction = <h2 className="search-prompt"><FormattedMessage id="general.searchEmpty" /></h2>; searchAction = <h2 className="search-prompt"><FormattedMessage id="general.searchEmpty" /></h2>;
} else if (this.state.loadMore) { } else if (this.state.loadMore) {
@ -208,16 +244,30 @@ class Search extends React.Component {
<div <div
id="projectBox" id="projectBox"
key="projectBox" key="projectBox"
style={this.fancyStyle()}
> >
{results} {results}
{searchAction} {searchAction}
</div> </div>
); );
} }
fancyStyle () {
if (this.state.isRainbow) {
return {
filter: `hue-rotate(${this.state.elapsed}deg) saturate(400%)`
};
}
return {};
}
render () { render () {
return ( return (
<div> <div>
<div className="outer"> <div
className="outer"
>
<TitleBanner className="masthead"> <TitleBanner className="masthead">
<div className="inner"> <div className="inner">
<h1 className="title-banner-h1"> <h1 className="title-banner-h1">

BIN
static/images/cats/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
static/images/cats/2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
static/images/cats/3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
static/images/cats/4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
static/images/cats/Cat1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

BIN
static/images/cats/Cat2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
static/images/cats/Cat3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
static/images/cats/Cat4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
static/images/cats/Cat5.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
static/images/cats/Cat6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 KiB

BIN
static/images/cats/Cat7.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
static/images/cats/Cat8.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
static/images/cats/Cat9.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

74
static/svgs/space-cat.svg Normal file
View file

@ -0,0 +1,74 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="90.99702453613281" height="102.05416107177734" viewBox="-0.5393884181976318 -0.07916021347045898 90.99702453613281 102.05416107177734">
<!-- Exported by Scratch - http://scratch.mit.edu/ -->
<g id="ID0.09973295871168375">
<g id="ID0.38591043977066875">
<path id="ID0.5587377939373255" fill="#FAA51F" stroke="#8E5322" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 47.2 37.3 C 47.2 37.3 48.4 33.3 52 30.7 C 56.8 27.4 62.3 26.5 61.3 23.1 C 59.8 17.6 52.2 19.8 46.7 25.1 C 41.3 30.4 42.4 33.3 42.4 33.3 C 42.4 33.3 42.1 38.9 47.2 37.3 Z "/>
<g id="ID0.9676653761416674">
<path id="ID0.0763801415450871" fill="#FAA51F" stroke="#8E5322" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 37.1 24.1 C 37.1 24.1 33 20.1 29.3 12.1 C 27.7 8.6 36.1 8.9 32 2.7 C 30.8 0.9 22.8 5.7 21.4 7.3 C 20.1 8.8 20 9.7 21.3 11.3 C 25.8 17.1 26.7 26.2 26.7 26.2 "/>
<path id="ID0.055647328961640596" fill="#FAA51F" stroke="#8E5322" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 30.2 9.5 C 30.2 9.5 29.1 10.3 27.7 10.7 "/>
</g>
<g id="Layer_3_7_">
<path id="ID0.09487091470509768" fill="#FAA51F" d="M 17.2 39.8 C 15.2 41.3 13.1 43.5 11.9 46.6 C 9.3 53.6 11.6 61.7 7.2 61.6 C 2.8 61.6 -3.4 49.8 5.6 40.4 C 8.7 37.2 12.1 35.4 14.9 34 C 15.6 33.6 22.1 30.9 25.9 32.9 C 29.6 34.8 28.6 36.4 28.1 37.2 C 27.5 38 19.9 37.6 17.2 39.8 Z " stroke-width="1"/>
<path id="ID0.206121654715389" fill="#FFFFFF" d="M 7.5 61.6 C 5.4 62 2.1 58.2 1.3 54.6 C 0.5 51 1.3 48.2 1.8 46.4 C 2.7 44.7 2.6 49.4 5.3 50 C 8 50.6 11.4 48.1 11.4 48.1 C 11.4 48.1 10.6 53.4 10.2 56.4 C 9.9 59.1 9.6 61 7.5 61.6 Z " stroke-width="1"/>
<path id="ID0.7381807691417634" fill="none" stroke="#8E5322" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 17.2 39.8 C 15.2 41.3 13.1 43.5 11.9 46.6 C 9.3 53.6 11.6 61.7 7.2 61.6 C 2.8 61.6 -3.4 49.8 5.6 40.4 C 8.7 37.2 12.1 35.4 14.9 34 C 15.6 33.6 22.1 30.9 25.9 32.9 C 29.6 34.8 28.6 36.4 28.1 37.2 C 27.5 38 19.9 37.6 17.2 39.8 Z "/>
</g>
<g id="Layer_2_14_">
<path id="ID0.0715795997530222" fill="#FAA51F" stroke="#8E5322" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 32 31.9 "/>
</g>
<path id="ID0.4700182010419667" fill="#FAA51F" stroke="#8E5322" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 45.3 31.1 C 40.6 26.4 34.8 18.2 26.4 26.5 C 18 34.8 25 40.5 29.7 45.3 C 34.4 50 38.6 48.5 43.4 43.7 C 48.3 38.9 50 35.8 45.3 31.1 Z "/>
<path id="ID0.8155788099393249" fill="#FAA51F" stroke="#8E5322" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 37.4 47.8 C 37.4 47.8 30.8 47.7 27.1 52.3 C 25.2 54.7 24.9 61.6 20.2 60.9 C 14.5 60 16.3 51.1 22.3 46.4 C 27.7 42.2 30.4 43 30.4 43 "/>
<path id="ID0.9267381150275469" fill="#FFFFFF" d="M 41.4 30.8 C 38.4 27.8 34.7 22.7 30.1 27.3 C 25.5 31.9 29.9 35.5 32.9 38.5 C 35.9 41.5 38.3 40.8 40.9 38.2 C 43.5 35.6 44.4 33.8 41.4 30.8 Z " stroke-width="1"/>
<g id="ID0.5876337415538728">
<path id="ID0.6729683084413409" fill="#FAA51F" stroke="#8E5322" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 24.1 38.8 C 24.1 38.8 21.2 33.4 13.5 29 C 10.2 27.1 10.3 34.4 4.6 29.4 C 2.7 27.8 7.5 22 9.2 20.5 C 10.8 19.1 12.2 19.2 13.7 20.6 C 16.8 23.4 24.9 28 24.9 28 "/>
<path id="ID0.6592974476516247" fill="#FAA51F" stroke="#8E5322" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 10.6 29.7 C 10.6 29.7 11.7 28.6 12.3 27.2 "/>
</g>
<g id="Layer_2_13_">
<path id="ID0.0841677337884903" fill="#FAA51F" d="M 61.9 30.1 C 61.4 30 60.9 30 60.4 29.9 L 60.4 29.9 C 58.1 30.5 55.6 31.4 52.9 32.7 C 36.2 40.6 27.3 53.3 28.4 66.3 C 29.4 78.6 44.3 82.9 45.1 83.1 L 49.3 90.5 L 49.3 90.5 L 54.2 99.1 L 56.9 91.7 L 59.4 85 C 59.4 85 63.9 83.7 67.7 81.2 C 69.1 80.3 71.5 78.3 72.6 77.3 L 75.4 76.8 L 83.8 77.9 L 85.4 78.1 L 84.7 76.5 L 80.9 67.5 C 80.9 67.5 83.1 60.1 82.8 56.4 C 82.2 50.3 79.6 46.7 79.6 46.7 C 79.6 46.7 81.3 44.4 82 41.4 C 81.9 41.2 81.7 41.1 81.6 40.9 C 76.5 34.8 69.4 31.1 61.9 30.1 Z " stroke-width="1"/>
<path id="ID0.5103519866243005" fill="#FFFFFF" d="M 61.9 30.1 C 59.2 30.7 56.3 31.7 53.2 33.3 C 49.6 35 46.4 36.6 42 39.8 C 35.1 44.8 30.9 54.6 38 63.1 C 42.1 68 48.3 62.8 48.3 62.8 L 55.1 60.1 C 55.1 60.1 59.8 54.5 63.8 52.8 C 67.7 51 69.7 53.7 69.7 53.7 L 78.3 50.5 L 79 47.5 L 79.1 46.8 C 79.1 46.8 81.2 44.3 81.7 41.1 C 76.5 34.8 69.4 31.1 61.9 30.1 Z " stroke-width="1"/>
<path id="ID0.9912767210043967" fill="none" stroke="#8E5322" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 58.5 87.6 L 60.5 81.7 "/>
<path id="ID0.6875613899901509" fill="none" stroke="#8E5322" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 61.9 30.1 C 61.4 30 60.9 30 60.4 29.9 C 58.1 30.5 55.5 31.4 52.9 32.7 C 36.2 40.6 27.3 53.3 28.4 66.3 C 29.4 78.6 44.3 82.9 45.1 83.1 L 49.3 90.5 L 54.2 99.1 L 56.9 91.7 L 59.4 85 C 59.4 85 63.9 83.7 67.7 81.2 C 69.1 80.3 71.5 78.3 72.6 77.3 L 75.4 76.8 L 83.8 77.9 L 85.4 78.1 L 84.7 76.5 L 80.9 67.5 C 80.9 67.5 83.1 60.1 82.8 56.4 C 82.2 50.3 79.6 46.7 79.6 46.7 C 79.6 46.7 81.3 44.4 82 41.4 C 81.9 41.2 81.7 41.1 81.6 40.9 C 76.5 34.8 69.4 31.1 61.9 30.1 Z "/>
</g>
<g id="Layer_5_7_">
<path id="ID0.20810980116948485" fill="#FFFFFF" stroke="#8E5322" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 81.1 57.6 C 80.8 52.4 77.9 48.4 74.7 48.6 C 71.5 48.8 69.1 53.1 69.4 58.3 C 69.7 63.5 72.6 67.5 75.8 67.3 C 79 67.1 81.4 62.8 81.1 57.6 Z "/>
<path id="ID0.7512365346774459" fill="#414142" d="M 78.8 54.8 C 78.4 53.8 77.4 53.3 76.5 53.7 C 75.6 54 75.2 55.1 75.5 56.1 C 75.9 57.1 76.9 57.6 77.8 57.2 C 78.8 56.8 79.2 55.8 78.8 54.8 " stroke-width="1"/>
</g>
<g id="Layer_7_7_">
<path id="ID0.584295348264277" fill="#FFFFFF" stroke="#8E5322" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 60.6 68.9 C 60.3 63.7 57 59.7 53.1 60 C 49.3 60.2 46.5 64.6 46.8 69.8 C 47.1 75 50.4 79 54.3 78.8 C 58 78.4 60.9 74 60.6 68.9 Z "/>
<path id="ID0.8320168349891901" fill="#414142" d="M 58 66 C 57.4 65.2 56.2 64.9 55.5 65.5 C 54.7 66.1 54.6 67.2 55.2 68.1 C 55.8 68.9 57 69.2 57.7 68.6 C 58.5 68 58.6 66.8 58 66 " stroke-width="1"/>
</g>
<path id="ID0.6457894956693053" fill="#5F4B43" stroke="#8E5322" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 63.5 54.4 C 65 53.6 67.6 53.2 66.7 51.5 C 66.2 50.8 63 49.1 61.4 50.1 C 59.7 51.2 58.4 55.3 59.4 56.5 C 60.4 57.7 62.2 55.1 63.5 54.4 Z "/>
<path id="ID0.5298887402750552" fill="#FFFFFF" stroke="#8E5322" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 48.7 46.7 C 45.3 50.7 45.2 55.3 45.2 55.3 C 45.2 55.3 40 53.8 41.6 49.4 C 43.5 43.7 48.7 46.7 48.7 46.7 Z "/>
</g>
<path id="ID0.053966973908245564" fill="#FFFFFF" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 79.4 78.7 L 85.7 80.3 C 87.2 80.7 88.3 79.1 87.6 77.8 L 84.4 71.9 "/>
<path id="ID0.1555270254611969" fill="#FFFFFF" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 39.7 35.9 C 25.9 46 22.9 65.4 33.1 79.2 C 37 84.5 42.2 88.2 48 90.2 L 52 98.9 C 53 101 55.9 101 56.8 98.9 L 60 91.8 C 65.7 91.5 71.4 89.5 76.3 85.9 C 90.1 75.8 93.1 56.4 82.9 42.6 C 72.8 28.8 53.5 25.8 39.7 35.9 Z "/>
<g id="ID0.5774397738277912">
<path id="ID0.7828251798637211" fill="#6D6E71" d="M 83.4 45.2 C 90.8 57.4 82.5 65.9 70.3 73.3 C 58.1 80.7 46.7 84.2 39.3 72 C 31.9 59.8 35.8 44 47.9 36.6 C 60 29.2 76 33.1 83.4 45.2 Z " stroke-width="1"/>
<path id="ID0.36082394095137715" fill="#A7A9AC" d="M 54.5 33.8 L 50.9 35.4 C 68.3 34.8 85.8 65.3 68.3 74.3 C 50.8 83.3 68.5 74.4 68.5 74.4 C 69.1 74.1 69.6 73.7 70.2 73.4 C 82.4 66 90.7 57.5 83.3 45.3 C 77.3 35.2 65.4 30.8 54.5 33.8 Z " stroke-width="1"/>
<path id="ID0.2866909154690802" fill="none" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 83.4 45.2 C 90.8 57.4 82.5 65.9 70.3 73.3 C 58.1 80.7 46.7 84.2 39.3 72 C 31.9 59.8 35.8 44 47.9 36.6 C 60 29.2 76 33.1 83.4 45.2 Z "/>
</g>
<path id="ID0.12203236622735858" fill="none" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" d="M 81.5 55.7 C 81.5 55.7 79.6 63.1 69.1 67.7 "/>
<path id="ID0.4920350951142609" fill="none" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" d="M 65.1 69.6 L 63.6 70.3 "/>
<g id="ID0.2624542023986578">
<path id="ID0.1011484288610518" fill="#FFFFFF" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 23.9 17.8 L 20.3 10.2 L 33.1 3.5 L 33.1 3.5 L 27.6 6.4 L 32.2 14.6 L 23.9 17.8 "/>
<path id="ID0.9947993699461222" fill="#FFFFFF" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 30.5 11.3 C 30.5 11.3 36.5 8.7 33 3.5 L 27.5 6.4 L 30.5 11.3 Z "/>
<path id="ID0.910616482142359" fill="#FFFFFF" stroke="#58595B" stroke-width="1.4000132602999924" stroke-linecap="round" stroke-linejoin="round" d="M 24.9641 11.2261 C 25.3675 10.8916 25.8691 10.7524 26.3535 10.7976 C 26.8379 10.8429 27.305 11.0726 27.6395 11.4759 C 27.974 11.8793 28.1132 12.3809 28.068 12.8653 C 28.0227 13.3497 27.793 13.8169 27.3896 14.1513 C 26.9863 14.4858 26.4847 14.625 26.0003 14.5798 C 25.5159 14.5345 25.0487 14.3048 24.7143 13.9015 C 24.3798 13.4981 24.2406 12.9965 24.2858 12.5121 C 24.331 12.0277 24.5607 11.5605 24.9641 11.2261 Z "/>
<path id="ID0.05219633784145117" fill="#D1D3D4" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 20.3 10.2 L 19.7 9.1 C 19.4 8.5 19.6 7.7 20.2 7.4 L 30.7 1.6 C 31.4 1.2 32.2 1.5 32.5 2.2 L 33.1 3.6 L 20.3 10.2 Z "/>
<path id="ID0.8260174826718867" fill="none" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 21.3 6.5 L 21.9 7.5 "/>
<path id="ID0.48421383230015635" fill="none" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 23.3 5.6 L 23.8 6.4 "/>
<path id="ID0.9640323268249631" fill="none" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 25.5 4.5 L 26 5.4 "/>
<path id="ID0.8807248384691775" fill="none" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 27.5 3.5 L 28 4.4 "/>
<path id="ID0.8796985191293061" fill="none" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 29.5 2.4 L 30 3.4 "/>
</g>
<g id="ID0.357671526260674">
<path id="ID0.8794409851543605" fill="#FFFFFF" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 20.5 24.4 L 13.9 18.9 L 4.1 29.8 L 4.1 29.8 L 8.4 25.2 L 15.2 31.8 L 20.5 24.4 "/>
<path id="ID0.8567405277863145" fill="#FFFFFF" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 12.4 29.3 C 12.4 29.3 8.3 34.6 4 29.8 L 8.3 25.2 L 12.4 29.3 Z "/>
<path id="ID0.5000843121670187" fill="#FFFFFF" stroke="#58595B" stroke-width="1.399987475238863" stroke-linecap="round" stroke-linejoin="round" d="M 13.847 23.8693 C 14.2716 23.5623 14.7813 23.4565 15.2616 23.5337 C 15.7419 23.6108 16.1929 23.8709 16.4999 24.2955 C 16.807 24.7201 16.9128 25.2298 16.8356 25.7101 C 16.7584 26.1905 16.4984 26.6414 16.0738 26.9485 C 15.6492 27.2555 15.1395 27.3613 14.6591 27.2841 C 14.1788 27.207 13.7279 26.9469 13.4208 26.5223 C 13.1137 26.0977 13.008 25.588 13.0851 25.1077 C 13.1623 24.6274 13.4224 24.1764 13.847 23.8693 Z "/>
<path id="ID0.5419647269882262" fill="#D1D3D4" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 13.9 18.9 L 12.9 18 C 12.4 17.5 11.6 17.5 11.1 18.1 L 2.7 27 C 2.2 27.6 2.2 28.5 2.9 28.9 L 4.1 29.8 L 13.9 18.9 Z "/>
<path id="ID0.2554870289750397" fill="none" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 10 19 L 10.8 19.8 "/>
<path id="ID0.0665745297446847" fill="none" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 8.6 20.7 L 9.3 21.4 "/>
<path id="ID0.7712228633463383" fill="none" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 7 22.6 L 7.8 23.3 "/>
<path id="ID0.586033093277365" fill="none" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 5.5 24.3 L 6.3 25 "/>
<path id="ID0.053929599933326244" fill="none" stroke="#58595B" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" d="M 3.9 26 L 4.7 26.8 "/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB