Merge pull request #6717 from LLK/hotfix/totally-normal-2022

[Master] [Hotfix] Totally normal 2022
This commit is contained in:
Karishma Chadha 2022-03-31 09:30:12 -04:00 committed by GitHub
commit e0d76e91db
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 369 additions and 77 deletions

170
package-lock.json generated
View file

@ -228,9 +228,9 @@
"dev": true
},
"@babel/core": {
"version": "7.17.8",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.8.tgz",
"integrity": "sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==",
"version": "7.17.7",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.7.tgz",
"integrity": "sha512-djHlEfFHnSnTAcPb7dATbiM5HxGOP98+3JLBZtjRb5I7RXrw7kFRoG2dXM8cm3H+o11A8IFH/uprmJpwFynRNQ==",
"dev": true,
"requires": {
"@ampproject/remapping": "^2.1.0",
@ -238,8 +238,8 @@
"@babel/generator": "^7.17.7",
"@babel/helper-compilation-targets": "^7.17.7",
"@babel/helper-module-transforms": "^7.17.7",
"@babel/helpers": "^7.17.8",
"@babel/parser": "^7.17.8",
"@babel/helpers": "^7.17.7",
"@babel/parser": "^7.17.7",
"@babel/template": "^7.16.7",
"@babel/traverse": "^7.17.3",
"@babel/types": "^7.17.0",
@ -262,15 +262,15 @@
}
},
"@babel/parser": {
"version": "7.17.8",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz",
"integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==",
"version": "7.17.7",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.7.tgz",
"integrity": "sha512-bm3AQf45vR4gKggRfvJdYJ0gFLoCbsPxiFLSH6hTVYABptNHY6l9NrhnucVjQ/X+SPtLANT9lc0fFhikj+VBRA==",
"dev": true
},
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"version": "4.3.3",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
"integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
"dev": true,
"requires": {
"ms": "2.1.2"
@ -283,9 +283,18 @@
"dev": true
},
"json5": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
"integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
"integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
"dev": true,
"requires": {
"minimist": "^1.2.5"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
},
"semver": {
@ -447,9 +456,9 @@
"dev": true
},
"@babel/helpers": {
"version": "7.17.8",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz",
"integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==",
"version": "7.17.7",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.7.tgz",
"integrity": "sha512-TKsj9NkjJfTBxM7Phfy7kv6yYc4ZcOo+AaWGqQOKTPDOmcGkIFb5xNA746eKisQkm4yavUYh4InYM9S+VnO01w==",
"dev": true,
"requires": {
"@babel/template": "^7.16.7",
@ -1261,9 +1270,9 @@
"dev": true
},
"@types/babel__core": {
"version": "7.1.19",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz",
"integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==",
"version": "7.1.18",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz",
"integrity": "sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==",
"dev": true,
"requires": {
"@babel/parser": "^7.1.0",
@ -4116,6 +4125,32 @@
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
"cat-blocks": {
"version": "npm:scratch-blocks@0.1.0-prerelease.20220318143026",
"resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.1.0-prerelease.20220318143026.tgz",
"integrity": "sha512-eYJYzjYt3fmF5a243eBIgQfNj+c3ApHFE8jkm1KV/tEiFanJ8XlLZay9LmbnhYhK0618+s0uEQrpJ9WC6xnX/Q==",
"dev": true,
"requires": {
"exports-loader": "0.6.3",
"google-closure-library": "20190301.0.0",
"imports-loader": "0.6.5",
"scratch-l10n": "3.14.20220317031619"
},
"dependencies": {
"scratch-l10n": {
"version": "3.14.20220317031619",
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.14.20220317031619.tgz",
"integrity": "sha512-tDKXRFxKFob9htBeOu+873mujoePXc4sGQulWDdMVCM8cYz63geCWziX5fCwp2pu3pJKQLEth0ftd2eoXkT1RA==",
"dev": true,
"requires": {
"@babel/cli": "^7.1.2",
"@babel/core": "^7.1.2",
"babel-plugin-react-intl": "^3.0.1",
"transifex": "1.6.6"
}
}
}
},
"cdt2d": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/cdt2d/-/cdt2d-1.0.0.tgz",
@ -19383,27 +19418,42 @@
}
},
"scratch-blocks": {
"version": "0.1.0-prerelease.20220323044431",
"resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.1.0-prerelease.20220323044431.tgz",
"integrity": "sha512-7+1tSHTns2UrvG0bY1u0YbM3cuRx57yXjuCdbxepLLgsOsHVDYLT+gjxsExvGtidrGo3T2LtO72Ccwhq6X3U0w==",
"version": "0.1.0-prerelease.20220325094325",
"resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.1.0-prerelease.20220325094325.tgz",
"integrity": "sha512-VGQuLpmLDhQSIdak6/zJ9jQRXBALFKmqBdGowqVdgvTnF0er8tzZYrR7kldkb+P6Tvx+wONsMj1G4lW6sOp4Yg==",
"dev": true,
"requires": {
"exports-loader": "0.6.3",
"google-closure-library": "20190301.0.0",
"imports-loader": "0.6.5",
"scratch-l10n": "3.14.20220323031542"
"scratch-l10n": "3.14.20220325031535"
},
"dependencies": {
"scratch-l10n": {
"version": "3.14.20220325031535",
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.14.20220325031535.tgz",
"integrity": "sha512-o55Sa99ildlX916DISBOJqxibLf2IbStq61rG+UmUFawhv3B1lP5l3R9piMlF2LEyqcNVUrYg7Ht9reT5jMVpQ==",
"dev": true,
"requires": {
"@babel/cli": "^7.1.2",
"@babel/core": "^7.1.2",
"babel-plugin-react-intl": "^3.0.1",
"transifex": "1.6.6"
}
}
}
},
"scratch-gui": {
"version": "0.1.0-prerelease.20220323131121",
"resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-0.1.0-prerelease.20220323131121.tgz",
"integrity": "sha512-560WEW6LpvJzyhNr5h1aQdDcTxPPzZlQ8gfwczi+/BSIwGUCRrJ0KbeQyPeVW66ZblvSQP0228Hw+XhkpT5e1Q==",
"version": "0.1.0-prerelease.20220330160452",
"resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-0.1.0-prerelease.20220330160452.tgz",
"integrity": "sha512-JOROdu6Si7NibuLOMFlNdlpKZWwq9iq3tuhsuvWmUOlSaO4LOw5hHuxDpvHncimALqAtPvwD/ehOaP4d+VHfiQ==",
"dev": true,
"requires": {
"arraybuffer-loader": "^1.0.6",
"autoprefixer": "^9.0.1",
"base64-loader": "1.0.0",
"bowser": "1.9.4",
"cat-blocks": "npm:scratch-blocks@0.1.0-prerelease.20220318143026",
"classnames": "2.2.6",
"computed-style-to-inline-style": "3.0.0",
"copy-webpack-plugin": "6.4.1",
@ -19431,9 +19481,9 @@
"prop-types": "^15.5.10",
"query-string": "^5.1.1",
"raw-loader": "^0.5.1",
"react": "16.2.0",
"react": "^16.0.0",
"react-contextmenu": "2.9.4",
"react-dom": "16.2.1",
"react-dom": "^16.0.0",
"react-draggable": "3.0.5",
"react-ga": "2.5.3",
"react-intl": "2.9.0",
@ -19448,14 +19498,14 @@
"redux": "3.7.2",
"redux-throttle": "0.1.1",
"scratch-audio": "0.1.0-prerelease.20200528195344",
"scratch-blocks": "0.1.0-prerelease.20220323044431",
"scratch-l10n": "3.14.20220323031542",
"scratch-paint": "0.2.0-prerelease.20220323045250",
"scratch-blocks": "0.1.0-prerelease.20220325094325",
"scratch-l10n": "3.14.20220330154906",
"scratch-paint": "0.2.0-prerelease.20220324094313",
"scratch-render": "0.1.0-prerelease.20211028200436",
"scratch-render-fonts": "1.0.0-prerelease.20210401210003",
"scratch-storage": "1.3.5",
"scratch-svg-renderer": "0.2.0-prerelease.20210727023023",
"scratch-vm": "0.2.0-prerelease.20220322143111",
"scratch-vm": "0.2.0-prerelease.20220324055952",
"startaudiocontext": "1.2.1",
"style-loader": "^0.23.0",
"text-encoding": "0.7.0",
@ -19620,30 +19670,6 @@
"schema-utils": "^1.0.0"
}
},
"react": {
"version": "16.2.0",
"resolved": "https://registry.npmjs.org/react/-/react-16.2.0.tgz",
"integrity": "sha512-ZmIomM7EE1DvPEnSFAHZn9Vs9zJl5A9H7el0EGTE6ZbW9FKe/14IYAlPbC8iH25YarEQxZL+E8VW7Mi7kfQrDQ==",
"dev": true,
"requires": {
"fbjs": "^0.8.16",
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
"prop-types": "^15.6.0"
}
},
"react-dom": {
"version": "16.2.1",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.2.1.tgz",
"integrity": "sha512-0ujGgYnpX0GlaAjUfwU7ddy0DjuzPmTHHi2SlPolGv7hAyUpK7XA7WZcxit5ZcU7cW5QU1HJjlS3eMn42tSfYQ==",
"dev": true,
"requires": {
"fbjs": "^0.8.16",
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
"prop-types": "^15.6.0"
}
},
"react-modal": {
"version": "3.9.1",
"resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.9.1.tgz",
@ -19692,6 +19718,18 @@
"symbol-observable": "^1.0.3"
}
},
"scratch-l10n": {
"version": "3.14.20220330154906",
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.14.20220330154906.tgz",
"integrity": "sha512-uW3DYX3oimFNH/mmLtn3cC6eU14lJleZQSo7rTqYnHghhwo/Hy+PNciEovB2C/ighubaNSfvX4xI8oujCib7eA==",
"dev": true,
"requires": {
"@babel/cli": "^7.1.2",
"@babel/core": "^7.1.2",
"babel-plugin-react-intl": "^3.0.1",
"transifex": "1.6.6"
}
},
"scratch-storage": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/scratch-storage/-/scratch-storage-1.3.5.tgz",
@ -19752,9 +19790,9 @@
}
},
"scratch-l10n": {
"version": "3.14.20220323031542",
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.14.20220323031542.tgz",
"integrity": "sha512-cAMcHITpLrHUUC5W6Y2rNeVxjK7CNUCv27RllBVhop5EGOHv2N7c9J5N8tbLo5o1vFMlsKkkJEI+3OcBv+Edkg==",
"version": "3.14.20220330154906",
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.14.20220330154906.tgz",
"integrity": "sha512-uW3DYX3oimFNH/mmLtn3cC6eU14lJleZQSo7rTqYnHghhwo/Hy+PNciEovB2C/ighubaNSfvX4xI8oujCib7eA==",
"dev": true,
"requires": {
"@babel/cli": "^7.1.2",
@ -19764,9 +19802,9 @@
}
},
"scratch-paint": {
"version": "0.2.0-prerelease.20220323045250",
"resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-0.2.0-prerelease.20220323045250.tgz",
"integrity": "sha512-7tV6PS5sHbuhR826VacIDc4R3F+wojPTzDoJodGOwWp18/34bN3azLSYNj9f8Eat6HXdjuV4JSgGy5Lrx7E7dQ==",
"version": "0.2.0-prerelease.20220324094313",
"resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-0.2.0-prerelease.20220324094313.tgz",
"integrity": "sha512-Mrg/9RiEol7ecR5svok8/4i19HGJISZSiqwCJUWHpAI/uEuUf8qjUoM/4H5/wBE33AK5VCY6oqnT4kUCR11dQw==",
"dev": true,
"requires": {
"@scratch/paper": "0.11.20200728195508",
@ -19994,9 +20032,9 @@
"dev": true
},
"scratch-vm": {
"version": "0.2.0-prerelease.20220322143111",
"resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-0.2.0-prerelease.20220322143111.tgz",
"integrity": "sha512-Tw8MNGGxI6QByp4DQS2TnNr5M/v30ZNYLWAlDBtBiPzvbXyq6WXlyxa8CoRq8jpbbIthMVmzJGIzmo5AVwH1QA==",
"version": "0.2.0-prerelease.20220324055952",
"resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-0.2.0-prerelease.20220324055952.tgz",
"integrity": "sha512-hriUqa2ZB0CryRuEs8NTbUEVlJQDi1axw10rLknRiUNLixFKdLSIgdtmpZq8BhL5UB6vOGs9bZpOWZQGt1JkHQ==",
"dev": true,
"requires": {
"@vernier/godirect": "1.5.0",

View file

@ -134,8 +134,8 @@
"regenerator-runtime": "0.13.9",
"sass": "1.49.7",
"sass-loader": "10.2.1",
"scratch-gui": "0.1.0-prerelease.20220323131121",
"scratch-l10n": "3.14.20220323031542",
"scratch-gui": "0.1.0-prerelease.20220330160452",
"scratch-l10n": "3.14.20220330154906",
"selenium-webdriver": "4.1.0",
"slick-carousel": "1.6.0",
"style-loader": "0.12.3",

View file

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

View file

@ -0,0 +1,37 @@
const PropTypes = require('prop-types');
const React = require('react');
const oldtimeySound = require('./projector2.mp3');
import {connect} from 'react-redux';
import {isTimeTravel1920} from '../../redux/time-travel';
require('./oldtimey-mode.scss');
const OldTimeyMode = props => {
if (!props.show) return null;
return (
<div className="oldtimey-mode">
<audio
src={oldtimeySound}
ref={audio => {
audio && (audio.volume = 0.1); // eslint-disable-line no-unused-expressions
}}
autoPlay
loop
/>
</div>
);
};
OldTimeyMode.propTypes = {
show: PropTypes.bool
};
const mapStateToProps = state => ({
// This is the button's mode, as opposed to the actual current state
show: isTimeTravel1920(state)
});
module.exports = connect(
mapStateToProps
)(OldTimeyMode);

View file

@ -0,0 +1,11 @@
@import "../../colors";
.oldtimey-mode {
position: fixed;
width: 100%;
height: 100%;
background: transparent url("/images/oldtimey.png") center center;
background-size: 100% 100%;
z-index: 500;
pointer-events: none;
}

Binary file not shown.

Binary file not shown.

View file

@ -7,6 +7,9 @@ const Footer = require('../../footer/www/footer.jsx');
const DonorRecognition = require('./donor-recognition.jsx');
const ErrorBoundary = require('../../errorboundary/errorboundary.jsx');
const OldTimeyMode = require('../../oldtimey-mode/oldtimey-mode.jsx');
const today = new Date();
const semi = today.getDate() === 1 && today.getMonth() === 3;
@ -17,6 +20,7 @@ const Page = ({
}) => (
<ErrorBoundary componentName="Page">
<div className={classNames('page', className)}>
<OldTimeyMode />
<div
className={classNames({
staging: process.env.SCRATCH_ENV === 'staging'

View file

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

View file

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

View file

@ -5,6 +5,8 @@ const messageCountReducer = require('./message-count.js').messageCountReducer;
const permissionsReducer = require('./permissions.js').permissionsReducer;
const sessionReducer = require('./session.js').sessionReducer;
const navigationReducer = require('./navigation.js').navigationReducer;
const timeTravelReducer = require('./time-travel.js').default;
/**
* Returns a combined reducer to be used for a page in `render.jsx`.
@ -22,6 +24,7 @@ module.exports = opts => {
messageCount: messageCountReducer,
navigation: navigationReducer,
permissions: permissionsReducer,
session: sessionReducer
session: sessionReducer,
timeTravel: timeTravelReducer
}));
};

53
src/redux/time-travel.js Normal file
View file

@ -0,0 +1,53 @@
const SET_TIME_TRAVEL = 'scratch-www/time-travel/SET_TIME_TRAVEL';
const initialState = {
year: 'NOW'
};
const NOW = 'NOW';
const YEAR_1920 = '1920';
const reducer = function (state, action) {
if (typeof state === 'undefined') state = initialState;
switch (action.type) {
case SET_TIME_TRAVEL:
return Object.assign({}, state, {
year: action.year
});
default:
return state;
}
};
const isTimeTravel1920 = function (state) {
return state.timeTravel.year === YEAR_1920;
};
const setTimeTravel1920 = function () {
return {
type: SET_TIME_TRAVEL,
year: YEAR_1920
};
};
const setTimeTravelNow = function () {
return {
type: SET_TIME_TRAVEL,
year: NOW
};
};
const setTimeTravel = function (mode) {
return {
type: SET_TIME_TRAVEL,
year: mode
};
};
export {
reducer as default,
initialState as timeTravelInitialState,
isTimeTravel1920,
setTimeTravel1920,
setTimeTravelNow,
setTimeTravel
};

View file

@ -83,6 +83,7 @@ const PreviewPresentation = ({
isRemixing,
isScratcher,
isShared,
isTotallyNormal,
justRemixed,
justShared,
loveCount,
@ -357,6 +358,7 @@ const PreviewPresentation = ({
cloudHost={cloudHost}
hasCloudPermission={isScratcher}
isFullScreen={isFullScreen}
isTotallyNormal={isTotallyNormal}
previewInfoVisible="false"
projectHost={projectHost}
projectId={projectId}
@ -722,7 +724,6 @@ PreviewPresentation.propTypes = {
favoriteCount: PropTypes.number,
intl: intlShape,
isAdmin: PropTypes.bool,
isTotallyNormal: PropTypes.bool, // eslint-disable-line react/no-unused-prop-types
isFullScreen: PropTypes.bool,
isLoggedIn: PropTypes.bool,
isNewScratcher: PropTypes.bool,
@ -731,6 +732,7 @@ PreviewPresentation.propTypes = {
isRemixing: PropTypes.bool,
isScratcher: PropTypes.bool,
isShared: PropTypes.bool,
isTotallyNormal: PropTypes.bool,
justRemixed: PropTypes.bool,
justShared: PropTypes.bool,
loveCount: PropTypes.number,

View file

@ -768,6 +768,7 @@ class Preview extends React.Component {
isRemixing={this.state.isRemixing}
isScratcher={this.props.isScratcher}
isShared={this.props.isShared}
isTotallyNormal={this.props.isTotallyNormal}
justRemixed={this.state.justRemixed}
justShared={this.state.justShared}
loveCount={this.state.loveCount}
@ -848,6 +849,7 @@ class Preview extends React.Component {
enableCommunity={this.props.enableCommunity}
hasCloudPermission={this.props.isScratcher}
isShared={this.props.isShared}
isTotallyNormal={this.props.isTotallyNormal}
projectHost={this.props.projectHost}
projectId={this.state.projectId}
projectTitle={this.props.projectInfo.title}

Binary file not shown.

View file

@ -16,6 +16,7 @@ const TitleBanner = require('../../components/title-banner/title-banner.jsx');
const Tabs = require('../../components/tabs/tabs.jsx');
import {selectIsTotallyNormal} from '../../redux/session';
import {setTimeTravel} from '../../redux/time-travel';
const Page = require('../../components/page/www/page.jsx');
const render = require('../../lib/render.jsx');
@ -31,7 +32,8 @@ class Search extends React.Component {
'getSearchState',
'handleChangeSortMode',
'handleGetSearchMore',
'getTab'
'getTab',
'tick'
]);
this.state = this.getSearchState();
this.state.loaded = [];
@ -40,6 +42,11 @@ class Search extends React.Component {
this.state.offset = 0;
this.state.loadMore = false;
this.state.isUpsideDown = false;
this.state.isRainbow = false;
this.state.elapsed = 0;
let mode = '';
const query = window.location.search;
const m = query.lastIndexOf('mode=');
@ -56,7 +63,6 @@ class Search extends React.Component {
if (ACCEPTABLE_MODES.indexOf(mode) !== -1) {
this.state.mode = mode;
}
}
componentDidMount () {
// just in case there's a URL in the wild with pluses to indicate spaces,
@ -88,13 +94,26 @@ class Search extends React.Component {
// 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.
}
this.props.dispatch(navigationActions.setSearchTerm(term));
}
componentDidUpdate (prevProps) {
if (this.props.searchTerm !== prevProps.searchTerm) {
if (this.props.searchTerm !== prevProps.searchTerm ||
this.props.isTotallyNormal !== prevProps.isTotallyNormal) {
if (this.props.isTotallyNormal) {
this.setEasterEggs(this.props.searchTerm);
}
this.handleGetSearchMore();
}
}
tick () {
this.setState(prevState => (
{elapsed: (prevState.elapsed + 10) % 360}
));
}
encodeSearchTerm () {
let termText = '';
if (this.props.searchTerm) {
@ -124,6 +143,24 @@ class Search extends React.Component {
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('time travel') || term.includes('april fools') ||
term.includes('old timey') || term.includes('oldtimey')) {
this.props.dispatch(setTimeTravel('1920'));
document.body.style.filter = 'brightness(.9)contrast(.8)sepia(1.0)';
}
}
handleGetSearchMore () {
const termText = this.encodeSearchTerm();
const locale = this.props.intl.locale;
@ -182,11 +219,13 @@ class Search extends React.Component {
}
return allTab;
}
getProjectBox () {
const results = (
<Grid
cards
showAvatar
isUpsideDown={this.state.isUpsideDown}
itemType={this.state.tab}
items={this.state.loaded}
showFavorites={false}
@ -195,6 +234,7 @@ class Search extends React.Component {
/>
);
let searchAction = null;
if (this.state.loaded.length === 0 && this.state.offset !== 0) {
searchAction = <h2 className="search-prompt"><FormattedMessage id="general.searchEmpty" /></h2>;
} else if (this.state.loadMore) {
@ -210,16 +250,30 @@ class Search extends React.Component {
<div
id="projectBox"
key="projectBox"
style={this.fancyStyle()}
>
{results}
{searchAction}
</div>
);
}
fancyStyle () {
if (this.state.isRainbow) {
return {
filter: `hue-rotate(${this.state.elapsed}deg) saturate(400%)`
};
}
return {};
}
render () {
return (
<div>
<div className="outer">
<div
className="outer"
>
<TitleBanner className="masthead">
<div className="inner">
<h1 className="title-banner-h1">

BIN
static/images/oldtimey.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,013 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

View file

@ -138,7 +138,7 @@ module.exports = {
]
},
{
test: /\.(png|jpg|gif|eot|svg|ttf|woff)$/,
test: /\.(png|jpg|gif|eot|svg|ttf|woff|mp3)$/,
loader: 'url-loader'
}
],