Revert "Nothing to see here!"

This reverts commit dcd74c0bfd.
This commit is contained in:
Ray 2019-03-29 16:28:13 -04:00
parent dcd74c0bfd
commit 7067500aa9
48 changed files with 39 additions and 572 deletions

View file

@ -102,17 +102,9 @@ install:
- sudo -H pip install -r requirements.txt - sudo -H pip install -r requirements.txt
- npm --production=false install - npm --production=false install
- npm --production=false update - npm --production=false update
- cd node_modules/scratch-gui
- npm --production=false install
- cd node_modules/scratch-blocks
- npm --production=false install
- cd ../..
- npm run build
- cd ../..
jobs: jobs:
include: include:
- stage: test - stage: test
script: env make build
deploy: deploy:
- provider: script - provider: script
skip_cleanup: $SKIP_CLEANUP skip_cleanup: $SKIP_CLEANUP
@ -121,7 +113,6 @@ jobs:
repo: LLK/scratch-www repo: LLK/scratch-www
branch: branch:
- develop - develop
- totally-normal
- hotfix/* - hotfix/*
- release/* - release/*
- provider: script - provider: script

View file

@ -35,8 +35,7 @@
"react-helmet": "5.2.0", "react-helmet": "5.2.0",
"scratch-docker": "^1.0.2", "scratch-docker": "^1.0.2",
"scratch-parser": "^5.0.0", "scratch-parser": "^5.0.0",
"scratch-storage": "^0.5.1", "scratch-storage": "^0.5.1"
"tone": "^13.4.9"
}, },
"devDependencies": { "devDependencies": {
"ajv": "6.4.0", "ajv": "6.4.0",
@ -99,7 +98,7 @@
"react-responsive": "3.0.0", "react-responsive": "3.0.0",
"react-slick": "0.16.0", "react-slick": "0.16.0",
"react-string-replace": "0.4.1", "react-string-replace": "0.4.1",
"scratch-gui": "github:LLK/scratch-gui#totally-normal", "scratch-gui": "0.1.0-prerelease.20190321152316",
"react-telephone-input": "4.3.4", "react-telephone-input": "4.3.4",
"redux": "3.5.2", "redux": "3.5.2",
"redux-thunk": "2.0.1", "redux-thunk": "2.0.1",

View file

@ -1,209 +0,0 @@
const React = require('react');
const bindAll = require('lodash.bindall');
const Modal = require('../modal/base/modal.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/Cat1.jpg',
'/images/cats/Cat2.jpg',
'/images/cats/Cat3.jpg',
'/images/cats/Cat4.jpg'
];
/* eslint-disable max-len */
const catFacts = [
'Cats don\'t have 9 lives, but they DO have 9 toes.',
'All cats are turquoise for a few minutes after they\'re born.',
'Cats born in the UK prefer tea over water.',
'The following fact about cats is not fact.',
'This sentence about cats is false.',
'Cats aren\'t actually turquoise when they\'re born.',
'More cats have been to the moon than I have. ',
'Cats are descended from an ancient alien race from the vicinity of Betelgeuse.',
'Cats are not not dogs.',
'The cat Tom, from Tom and Jerry is actually my alter-ego.',
'If a cat winks twice in a row it means they like to wink.',
'Cats enjoy playing fetch even more than dogs.',
'The internet was created as a way to better share images of cats with loved ones.',
'Cats developed tails as a way to get out of doing homework.',
'Cats train for marathons by sprinting through your house at very early hours of the morning. ',
'Cats read newspapers when no one is looking and they can tell if a camera is on in the room.',
'The word "cat" means "sneezing while cold" in 17 languages. ',
'Cats are not not adorable.',
'Cat is the longest word you can type on the keyboard with only one hand.',
'Meow meow mrow. Meow!',
'What even is a cat?',
'The song "Row, Row, Row your boat" is about the authors pet cat.',
'Cat\'s really like listening to music, but only if it is meowsic.',
'The first cat was born in 1993.',
'The Great Catsby is often considered a favorite among cats.',
'When you\'re not home cats will often try on your shoes.',
'Cats are actually born in kangaroo pouches.',
'My friends cat has so many toes.',
'The greatest writer of all time is a cat known as William Shakespurrrr.',
'When a cat looks in a mirror it sees purrrrfection.',
'What\'s a cats favorite movie? Pitch Purrrrfect.',
'It\'s common knowledge that J.K. Meowling is the real author of the Hairy Potter series.',
'If my cat went to Hogwarts it would be in Ravenpaw.',
'Kitty McPurrs-a-lot would make an excellent name for a cat.',
'Cats blame mice for everything.',
'Boots & cats & boots & cats & boots & cats & boots & cats.',
'When a cat is happy sometimes you can hear the soft whirr of its storage system recording the experience for an upcoming show & tell presentation.',
'Some people think cats are aloof but actually they just really respect your independence.',
'Modern cats evolved from a creature that looked exactly like Scratch Cat, but more orange.',
'The reason there are so many cats on the Internet is that all the servers run on hamster wheels.',
'The word "cat" spelled backwards is taco. Wait, no... burrito? Something like that.',
'Cats like to attack twist ties, bottle caps, and other reminders of their lack of thumbs.',
'Kittens were invented by scientists developing a standard measuring system for "cute."',
'Due to the difference between metric units and other systems, 1 "mew" is about 1.6 "mrow" units.',
'Cats sometimes knock things off shelves and tables in order to make those items safe from falling.',
'A cat\'s tail is usually its second- or third-best friend.',
'Catalogs were originally invented to keep logs of cats.',
'Catering is food services for cats.',
'Meow is slang for miauw.',
'A cat is the only physical entity whose weight equals both 1 kilogram and 1 pound.',
'Balls of yarn are created by watching videos of cats playing with them in reverse.',
'Every time you sneeze a tiny kitten is born.',
'In ancient Greece, cats kept humans as pets.',
'Bongo cat is the great grandchild of nyancat.',
'What\'s a cat\'s best friend? Its purrrrse.',
'Sharing video online was created by cats to get the attention they feel they deserve.',
'A "catseye" view is a point of view where everything is scratchable.',
'Cat videos is the first step in their quest for world domination.',
'The cat\'s meow is the cat\'s meow is the cat\'s meow is the cat\'s meow....',
'A cat\'s intelligence is distributed throughout its body. Fully half of its brain matter is in its tail.',
'Cats evolved chromatophores millions of years before octopuses.',
'Cats are able to read minds through their whiskers.',
'Soon after birth, cats extend their tails into a breeze and can sail hundreds of feet in the air for miles to find new territory.',
'Cats\' memory is encoded in their DNA, which explains the knowing looks on their faces.',
'Charles Francis Richter originally created his scale to measure the integrated power of cat purrs.',
'Cat hair is being studied for use in building space elevators. Ironically, the first use of space elevators will be as scratching posts.',
'When you are not looking, cats stare at a point exactly one foot behind your head.',
'The infamous Weddell Sea cats glide from tree to tree in the forests of Dronning Maud.',
'Once the antarctic ice melts, archologists believe the origins of cat civilization will be revealed.',
'Cats rest on their backs because it helps them to absorb cuteness through their bellies.',
'The 21cm hydrogen line was originally named after a 21cm long cat.',
'Redshift would be a good name for a cat that does not like you and runs away.',
'The MIT mascot is actually a cat that enjoys wood working.',
'The cat packing conjecture is a widely accepted mathematical argument that proves an infinite number of cats is a good thing.',
'Meor\'s Law states that the number of cats double every 18-24 months.',
'A group of cats is called a hairball.',
'There are more hairs on the head of a cat than there are scales on the head of a mouse.',
'April 32nd is International Pet a Cat Day.',
'The Scratch Cat is the only cat on the Internet.',
'This sentence about cats is true.',
'Cat bites are more common on days that end in y.',
'Cats have a minimum of two ears.',
'Cattails were developed in a lab as a way to reconstruct cats using plants. It didnt work.',
'Cats developed certain fur patterns to blend in with couch upholstery.',
'Cats have thumbs, theyre just really really hard to see.',
'Cats are the first most popular pet in the US, after dogs.',
'If you rick roll a cat, it will never forgive you.',
'Cats persuaded humans to create the internet.',
'If you walk under a rainbow and then pet a black cat, it will actually bring you good luck.',
'Cats can contain entire universes!',
'Every time a hat block gets triggered, a cat starts purring.',
'The Jungle Book is a true story based on a cat named Meowgli.',
'Camera is a common misspelling of Catmera, a device invented specifically to record cats.',
'Cats don\'t steal your breath because it doesn\'t smell like catfood.',
'Cats hang out on keyboards in an attempt to send messages to other internet cats.',
'Cat is an abbreviation for category.',
'Cat is an acronym which stands for Cats Are Terrific.',
'When cats are fully enclosed in boxes, they can teleport to alternative universes.',
'If you put buttered toast butter-side up, on your cat, then your cat will be able to fly.'
];
/* 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() * (catFacts.length - 1));
const catFact = catFacts[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> {'Cats...?'} </a>
</div>
<Modal
useStandardSizes
className="mod-cats"
isOpen={this.state.open}
onRequestClose={this.handleClose}
>
<div className="cats-modal-header modal-header">
<div className="cats-content-label content-label">
{'Did you know...?'}
</div>
</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

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

View file

@ -6,7 +6,6 @@ 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');
@ -32,9 +31,6 @@ const Footer = props => (
<FormattedMessage id="general.contactUs" /> <FormattedMessage id="general.contactUs" />
</a> </a>
</dd> </dd>
<dd>
<Cats />
</dd>
</dl> </dl>
<dl> <dl>
<dd> <dd>
@ -96,9 +92,6 @@ const Footer = props => (
<FormattedMessage id="general.press" /> <FormattedMessage id="general.press" />
</a> </a>
</dd> </dd>
<dd>
<Cats />
</dd>
</dl> </dl>
<dl> <dl>
<dt> <dt>

View file

@ -8,68 +8,52 @@ const thumbnailUrl = require('../../lib/user-thumbnail');
require('./grid.scss'); require('./grid.scss');
const Grid = props => { const Grid = props => (
<div className={classNames('grid', props.className)}>
const surpriseClass = props.isEggShaped ? 'egg' : ''; <FlexRow>
{props.items.map((item, key) => {
return ( const href = `/${props.itemType}/${item.id}/`;
<div if (props.itemType === 'projects') {
className={classNames(
'grid',
props.className,
surpriseClass
)}
>
<FlexRow>
{props.items.map((item, key) => {
const href = `/${props.itemType}/${item.id}/`;
const pianoFunc = props.onPianoEnter ? () => props.onPianoEnter(key) : null;
if (props.itemType === 'projects') {
return (
<Thumbnail
avatar={thumbnailUrl(item.author.id)}
creator={item.author.username}
favorites={item.stats.favorites}
href={href}
key={key}
loves={item.stats.loves}
remixes={item.stats.remixes}
showAvatar={props.showAvatar}
showFavorites={props.showFavorites}
showLoves={props.showLoves}
showRemixes={props.showRemixes}
showViews={props.showViews}
src={item.image}
title={item.title}
type={'project'}
views={item.stats.views}
onPianoEnter={pianoFunc}
/>
);
}
return ( return (
<Thumbnail <Thumbnail
avatar={thumbnailUrl(item.author.id)}
creator={item.author.username}
favorites={item.stats.favorites}
href={href} href={href}
key={key} key={key}
owner={item.owner} loves={item.stats.loves}
remixes={item.stats.remixes}
showAvatar={props.showAvatar}
showFavorites={props.showFavorites}
showLoves={props.showLoves}
showRemixes={props.showRemixes}
showViews={props.showViews}
src={item.image} src={item.image}
title={item.title} title={item.title}
type={'gallery'} type={'project'}
onPianoEnter={pianoFunc} views={item.stats.views}
/> />
); );
})} }
</FlexRow> return (
</div> <Thumbnail
); href={href}
}; key={key}
owner={item.owner}
src={item.image}
title={item.title}
type={'gallery'}
/>
);
})}
</FlexRow>
</div>
);
Grid.propTypes = { Grid.propTypes = {
className: PropTypes.string, className: PropTypes.string,
isEggShaped: PropTypes.bool,
itemType: PropTypes.string, itemType: PropTypes.string,
items: PropTypes.arrayOf(PropTypes.object), items: PropTypes.arrayOf(PropTypes.object)
onPianoEnter: PropTypes.func,
}; };
Grid.defaultProps = { Grid.defaultProps = {

View file

@ -88,15 +88,6 @@
} }
} }
&.egg {
.thumbnail {
margin: 7px 27px !important;
width: 180px !important;
border-radius: 50% 50% 50% 50% / 60% 60% 40% 40% !important;
overflow: hidden;
}
}
&.column { &.column {
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;

View file

@ -8,8 +8,6 @@ const Thumbnail = props => {
const extra = []; const extra = [];
const info = []; const info = [];
const surpriseClass = props.onPianoEnter ? 'pianoKey' : '';
if (props.loves && props.showLoves) { if (props.loves && props.showLoves) {
extra.push( extra.push(
<div <div
@ -112,16 +110,13 @@ const Thumbnail = props => {
</a> </a>
); );
} }
return ( return (
<div <div
className={classNames( className={classNames(
'thumbnail', 'thumbnail',
props.type, props.type,
props.className, props.className
surpriseClass
)} )}
onMouseEnter={props.onPianoEnter}
> >
{imgElement} {imgElement}
<div className="thumbnail-info"> <div className="thumbnail-info">
@ -144,7 +139,6 @@ Thumbnail.propTypes = {
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]),
onPianoEnter: PropTypes.func,
remixes: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), remixes: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
showAvatar: PropTypes.bool, showAvatar: PropTypes.bool,
showFavorites: PropTypes.bool, showFavorites: PropTypes.bool,

View file

@ -108,10 +108,4 @@
height: $gallery-height; height: $gallery-height;
} }
} }
&.pianoKey {
&:hover {
box-shadow: 0 0 0 3px #4d97ff;
}
}
} }

View file

@ -1,83 +0,0 @@
const tone = require('tone');
tone.Master.volume.value = -25;
const synthPiano = new tone.MonoSynth({
oscillator: {
type: 'square'
},
filter: {
Q: 2,
type: 'lowpass',
rolloff: -12
},
envelope: {
attack: 0.005,
decay: 3,
sustain: 0,
release: 0.45
},
filterEnvelope: {
attack: 0.5,
decay: 0.32,
sustain: 0.9,
release: 3,
baseFrequency: 700,
octaves: 2.3
}
}).toMaster();
const synthSaw = new tone.Synth({
oscillator: {
type: 'fatsawtooth',
count: 3,
spread: 30
},
envelope: {
attack: 0.01,
decay: 0.1,
sustain: 0.5,
release: 0.4,
attackCurve: 'exponential'
}
}).toMaster();
const synthWah = new tone.MonoSynth({
oscillator: {
type: 'pwm',
modulationFrequency: 1
},
filter: {
Q: 6,
rolloff: -24
},
envelope: {
attack: 0.025,
decay: 0.3,
sustain: 0.9,
release: 2
},
filterEnvelope: {
attack: 0.245,
decay: 0.131,
sustain: 0.5,
release: 2,
baseFrequency: 20,
octaves: 7.2,
exponent: 2
}
}).toMaster();
const piano = (noteNumber, instrument) => {
const notes = ['C4', 'D4', 'E4', 'F4', 'G4', 'A4', 'B4', 'C5'];
if (instrument === 0) {
synthPiano.triggerAttackRelease(notes[noteNumber % 8], '16n');
} else if (instrument === 1) {
synthSaw.triggerAttackRelease(notes[noteNumber % 8], '8n');
} else if (instrument === 2) {
synthWah.triggerAttackRelease(notes[noteNumber % 8], '4n');
}
};
module.exports = piano;

View file

@ -19,8 +19,6 @@ const Grid = require('../../components/grid/grid.jsx');
require('./explore.scss'); require('./explore.scss');
const piano = require('../../lib/piano');
class Explore extends React.Component { class Explore extends React.Component {
constructor (props) { constructor (props) {
super(props); super(props);
@ -29,7 +27,6 @@ class Explore extends React.Component {
'handleGetExploreMore', 'handleGetExploreMore',
'changeItemType', 'changeItemType',
'handleChangeSortMode', 'handleChangeSortMode',
'handlePianoHover',
'getBubble', 'getBubble',
'getTab' 'getTab'
]); ]);
@ -41,10 +38,6 @@ class Explore extends React.Component {
componentDidMount () { componentDidMount () {
this.handleGetExploreMore(); this.handleGetExploreMore();
} }
handlePianoHover (noteNumber) {
const instumentNumber = this.state.acceptableModes.indexOf(this.state.mode) % 3;
piano(noteNumber, instumentNumber);
}
getExploreState () { getExploreState () {
const categoryOptions = { const categoryOptions = {
all: '*', all: '*',
@ -214,7 +207,6 @@ class Explore extends React.Component {
showFavorites={false} showFavorites={false}
showLoves={false} showLoves={false}
showViews={false} showViews={false}
onPianoEnter={this.state.category === 'music' ? this.handlePianoHover : null}
/> />
<Button <Button
onClick={this.handleGetExploreMore} onClick={this.handleGetExploreMore}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

View file

@ -1,52 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="113.01338958740234" height="65.30858612060547" viewBox="5.551851272583008 12.819059371948242 113.01338958740234 65.30858612060547" version="1.1" xml:space="preserve">
<defs/>
<g>
<title>fish-a</title>
<desc>Created with Sketch.</desc>
<g id="ocean" stroke="none" fill-rule="evenodd">
<g id="fish-a">
<g id="Clownfish">
<g id="flipper1" fill-rule="nonzero">
<path d="M 38 36.9 C 36.5 36.6 37.1 36.7 36.8 35.4 C 36.5 33.7 35 32.4 34.6 30.6 C 34.3 29.1 34.5 26.4 35.3 25.1 C 36.6 22.9 37.7 21.2 40.2 20.2 C 42.1 19.5 43.9 19.7 45.8 19.4 C 48.1 19.1 49.9 20.4 52 21.1 C 54.5 21.9 57.3 22.9 59.9 23 C 60.6 23 61.5 23 62.2 22.7 C 62.8 22.4 63.2 21.8 63.8 21.6 C 65.7 21 68.2 22 69.9 20.5 C 71.6 19 70.7 16.4 72.9 15.4 C 73.7 15.1 74.4 15 75.1 14.5 C 76 13.9 76.7 14.1 77.8 13.7 C 80.4 12.8 81.9 13.6 84 15 C 84.6 15.4 85.2 16 85.8 16.2 C 86.2 16.4 86.7 16.4 87 16.5 C 88.3 17.1 88.3 17.1 89.1 20.2 C 89.6 22.2 89 28.2 89 28.2 L 38 36.9 Z " id="Shape" fill="#120201" stroke-width="1"/>
<path d="M 40.3 38.8 C 38.8 38.5 39.4 38.6 39.1 37.3 C 38.8 35.6 37.6 35.7 37.3 33.9 C 37 32.4 35.6 29.9 36.4 28.5 C 37.7 26.3 38.4 23.2 41 22.2 C 42.9 21.5 44.7 21.7 46.6 21.4 C 48.9 21.1 50.7 22.4 52.8 23.1 C 55.3 23.9 58.1 24.9 60.7 25 C 61.4 25 62.3 25 63 24.7 C 63.6 24.4 64 23.8 64.6 23.6 C 66.5 23 69 24 70.7 22.5 C 72.4 21 71.5 18.4 73.7 17.4 C 74.5 17.1 75.2 17 75.9 16.5 C 76.8 15.9 77.5 16.1 78.6 15.7 C 81.2 14.8 82.7 15.6 84.8 17 C 85.4 17.4 86 18 86.6 18.2 C 87 18.4 87.5 18.4 87.8 18.5 C 89.1 19.1 89.1 19.1 89.9 22.2 C 90.4 24.2 89.8 30.2 89.8 30.2 L 40.3 38.8 Z " id="Shape" fill="#E85F1A" stroke-width="1"/>
<path d="M 70 20.7 C 68.4 22.2 65.9 21.2 63.9 21.8 C 63.3 22 62.9 22.6 62.3 22.9 C 61.6 23.2 60.7 23.2 60 23.2 C 57.9 23.1 55.7 22.4 53.6 21.8 C 54.6 23.7 55.4 25.9 56.1 27.5 C 56.2 27.8 56.4 28.1 56.5 28.4 C 56.5 28.4 56.5 28.4 56.5 28.4 C 56.5 28.4 56.5 28.5 56.5 28.5 C 56.5 28.6 56.6 28.6 56.6 28.7 C 56.9 29.4 57.1 30 57.3 30.7 C 57.6 31.7 57.9 32.7 58.2 33.7 L 75.4 30.8 C 74.9 29.4 74.4 28.2 73.9 27 C 73.8 26.7 73.1 25.1 72.9 24.8 C 72 22.9 70 20.6 70 20.7 C 70 20.6 70 20.6 70 20.7 Z " id="Shape" fill="#FCC3AC" stroke-width="1"/>
<path d="M 52.5 27.8 C 51.7 25 50.6 22.4 49.1 19.9 C 48.6 19.7 48.1 19.6 47.6 19.5 C 49.4 22.2 50.7 25.1 51.5 28.2 C 50.1 28.7 48.8 29.3 47.4 29.9 C 46.4 26.3 45.3 22.8 43.4 19.6 C 43 19.6 42.7 19.6 42.3 19.7 C 44.3 22.9 45.5 26.6 46.5 30.3 C 45.9 30.6 45.2 30.9 44.6 31.3 C 44.4 31.4 44.2 31.5 44 31.6 C 42.5 27.9 40.6 24.5 38.2 21.3 C 37.9 21.5 37.7 21.7 37.5 22 C 39.8 25.1 41.7 28.5 43.1 32.1 C 42.5 32.4 41.9 32.8 41.3 33.2 C 40.4 31.6 39.2 30.2 37.9 29 C 36.9 28.1 36 27 34.9 26.1 C 34.8 26.4 34.7 26.8 34.6 27.2 C 35.5 28 36.3 29 37.1 29.8 C 38.4 31 39.5 32.3 40.4 33.8 C 39.2 34.6 38 35.3 36.8 36.2 C 36.8 36.2 36.8 36.2 36.8 36.2 C 36.8 36.3 36.8 36.3 36.8 36.4 C 36.8 36.4 36.8 36.5 36.8 36.5 C 36.8 36.5 36.8 36.5 36.8 36.5 C 36.8 36.5 36.8 36.6 36.8 36.6 C 36.8 36.6 36.8 36.6 36.8 36.6 C 36.8 36.6 36.8 36.7 36.9 36.7 C 36.9 36.7 36.9 36.7 36.9 36.7 C 36.9 36.7 37 36.7 37 36.8 C 37 36.8 37 36.8 37 36.8 C 37.1 36.8 37.2 36.9 37.4 36.9 C 37.4 36.9 37.4 36.9 37.5 36.9 C 37.6 36.9 37.7 36.9 37.8 37 L 59.9 33.3 L 58.2 26.3 C 58.1 26.3 52.8 27.7 52.5 27.8 Z " id="Shape" fill="#F47621" stroke-width="1"/>
<path d="M 68.9 24.8 C 68.6 23.7 68.2 22.6 67.8 21.5 C 67.5 21.5 67.2 21.5 67 21.5 C 67.4 22.6 67.8 23.7 68.1 24.8 C 66.8 24.9 65.5 25 64.1 25.2 C 64 25.2 64 25.2 63.9 25.2 C 63.6 24.2 63.2 23.3 62.9 22.3 C 62.7 22.5 62.5 22.6 62.3 22.7 C 62.3 22.7 62.3 22.7 62.3 22.7 C 62.6 23.5 62.9 24.4 63.2 25.2 C 61.9 25.4 60.6 25.6 59.3 25.9 C 58.9 24.8 58.5 23.8 58 22.7 C 57.7 22.6 57.4 22.6 57 22.5 C 57.5 23.7 58.4 26.1 58.4 26.1 L 60.1 33.1 L 61.4 32.9 L 65.1 32.3 L 67.3 31.9 L 70.7 31.5 L 68.9 24.8 Z " id="Shape" fill="#FFFFFF" stroke-width="1"/>
<path d="M 86.6 26.9 C 86.8 23.3 86.7 19.7 85.9 16.3 C 85.5 16.1 85.1 15.8 84.7 15.5 C 85.6 19.1 85.8 22.9 85.6 26.6 C 84.7 26.3 83.8 26.1 82.9 25.9 C 83 21.7 82.7 17.6 81.4 13.6 C 81 13.5 80.7 13.4 80.3 13.4 C 81.7 17.3 82.1 21.5 81.9 25.6 C 81 25.4 80 25.2 79.1 25.1 C 79 21.3 78.4 17.5 77 14 C 76.7 14.1 76.3 14.1 76 14.2 C 77.4 17.6 78 21.2 78.1 24.9 C 77.3 24.8 76.5 24.7 75.7 24.7 C 74.9 21.7 73.8 18.8 72.3 16 C 72 16.3 71.8 16.6 71.6 17 C 72.8 19.5 73.9 22 74.6 24.7 C 74.3 24.7 69.3 24.7 69 24.7 L 70.8 31.5 C 70.8 31.5 89.3 28.2 89.3 28.1 C 89.3 28.1 89.3 28.1 89.3 28.1 C 89.3 28 89.3 27.9 89.3 27.8 C 89.3 27.8 89.3 27.8 89.3 27.8 C 88.4 27.5 87.5 27.2 86.6 26.9 Z " id="Shape" fill="#F47621" stroke-width="1"/>
</g>
<g id="flipper2" fill-rule="nonzero">
<path d="M 46.8 51.4 C 45.2 52.1 43.3 52.4 41.7 53.1 C 40.9 53.4 39.4 53.9 38.5 54.7 C 38 54.8 37.5 55 37.1 55.2 C 36 55.6 34.2 56.2 33.7 57.5 C 33.2 58.7 33.9 59.6 34 60.7 C 34 61.5 34.1 62 34.3 63 C 34.5 63.6 35 64.3 35.6 64.5 C 36.3 64.8 36.7 64.2 37.3 64.7 C 37.5 64.9 37.7 65.6 37.9 65.9 C 38.3 66.6 39.1 66.8 39.8 67 C 41.8 67.4 43.3 66.1 45.2 66.7 C 47.1 67.3 47.6 68.2 49.1 67.8 C 51.4 67.2 53.9 66.4 56 65.4 C 56.4 65.2 56.9 64.9 57.6 64.6 C 58.7 64.2 59.7 63.8 60.7 63.4 C 62.6 62.5 68.5 59.2 69.1 58.2 L 46.8 51.4 Z " id="Shape" fill="#000600" stroke-width="1"/>
<path d="M 46.8 51.4 C 45.2 52.1 43.3 52.4 41.7 53.1 C 40.6 53.5 38.4 54.2 37.9 55.4 C 37.4 56.6 38.5 57.4 38.6 58.5 C 38.6 59.3 37.9 59.9 38.1 60.8 C 38.3 61.4 38.8 62.1 39.4 62.3 C 40.1 62.6 41.4 61.9 41.9 62.5 C 42.1 62.7 41.9 63.4 42.1 63.7 C 42.5 64.4 43.3 64.6 44 64.8 C 46 65.2 47.9 64.4 49.8 64.5 C 50.4 66.3 52.2 66 53.7 65.6 C 56 65 58.5 64.2 60.6 63.2 C 62.5 62.3 68.4 59 69 58 L 46.8 51.4 Z " id="Shape" fill="#E85F1A" stroke-width="1"/>
<path d="M 41.6 53.1 C 41.6 53.1 39.3 53.9 38.4 54.7 C 38.3 54.7 38.2 54.8 38.1 54.8 C 39.2 55.2 40.4 55.5 41.5 55.8 C 39 56.5 36.4 56.9 33.8 57.3 C 33.8 57.4 33.7 57.4 33.7 57.5 C 33.6 57.8 33.5 58.1 33.5 58.4 C 36.8 58 40.2 57.5 43.3 56.4 C 44.5 56.8 45.8 57.1 47 57.5 C 43 59.8 38.7 61.6 34.2 62.9 C 34.2 62.9 34.2 62.9 34.2 63 C 34.3 63.3 34.4 63.6 34.6 63.8 C 39.4 62.4 44 60.4 48.3 57.8 C 49.2 58 50.1 58.3 50.9 58.5 C 49.3 59.9 47.6 61.3 45.8 62.6 C 43.8 64 41.6 65.6 39.3 66.9 C 39.4 66.9 39.5 66.9 39.6 67 C 40.2 67.1 40.7 67.1 41.3 67 C 43.1 65.9 44.8 64.7 46.4 63.5 C 48.4 62.1 50.3 60.5 52.2 58.9 C 53.4 59.2 54.6 59.5 55.8 59.8 C 53 62.7 50 65.3 46.6 67.4 C 47 67.6 47.4 67.8 47.7 67.9 C 51.1 65.7 54.2 63.1 56.9 60.1 C 56.9 60.1 61.2 61.5 63.3 62 C 65.5 60.7 68.5 58.9 68.8 58.3 L 46.7 51.7 C 45.2 52 41.6 53.1 41.6 53.1 Z " id="Shape" fill="#F47621" stroke-width="1"/>
</g>
<g id="fin2">
<path d="M 86.1 57.7 C 85 58 83.7 58.1 82.6 58.5 C 82.4 58.6 82.2 58.7 81.9 58.9 C 81 59.6 81 60.6 80.5 61.6 C 80.3 61.7 80 61.7 79.8 61.8 C 77.9 62.5 79.1 63.4 77.9 64.7 C 77.1 65.5 76.3 66.6 76.6 67.7 C 76.7 68 76.6 69.1 76.3 69.6 C 75.7 70.6 76.1 70.7 76.3 71.6 C 76.5 72.3 76.2 72.6 76.2 73.5 C 76.2 74.4 76.5 75.3 77.3 75.8 C 78.6 76.7 79.1 75.7 80.2 75.3 C 80.6 76.2 79.2 78.8 81.7 77 C 84.1 75.3 86 72.9 87.8 70.7 C 89 69.4 90.1 68.1 91.2 66.8 C 92.5 65.3 93.8 63.7 95 62.1 C 95.7 61.1 96.2 60 96.9 59.1 L 86.1 57.7 Z " id="Shape" fill="#000600" fill-rule="nonzero" stroke-width="1"/>
<path d="M 86.6 57.7 C 85.5 58 84.2 58.1 83.1 58.5 C 81.2 59.2 81.6 61 80.4 62.3 C 79.6 63.1 79.6 63.3 79.9 64.4 C 80 64.7 80.2 65 80.1 65.4 C 80 66 79.8 65.8 79.6 66.3 C 79 67.3 79.4 67.4 79.6 68.3 C 79.8 69 79.5 69.3 79.5 70.2 C 79.5 71.1 79.8 72 80.6 72.5 C 81.9 73.4 82.5 75.5 85 73.7 C 87.6 71.9 89.6 69.2 91.7 66.8 C 93 65.3 94.3 63.7 95.5 62.1 C 96.2 61.1 96.7 60 97.4 59.1 L 86.6 57.7 Z " id="Shape" fill="#E85F1A" fill-rule="nonzero" stroke-width="1"/>
<path d="M 91.1 58.3 L 90 58.2 C 90 58.3 90 58.4 89.9 58.5 C 89.6 59 89.4 59.5 89.1 60.1 C 87.4 61.8 85.5 63.4 83.6 64.9 C 81.4 66.6 78.8 68.8 76 69.9 C 75.8 70.4 75.9 70.6 76 71 C 78.6 70.1 80.9 68.2 83 66.7 C 84.4 65.6 85.8 64.5 87.1 63.4 C 84.2 67.8 80.6 71.8 76.5 75 C 76.7 75.3 76.9 75.6 77.2 75.8 C 81.8 72.2 85.9 67.5 89 62.5 C 87.2 67.9 84.1 72.9 80.2 77.1 C 80.2 77.7 80.4 77.9 81.6 77.1 C 86 72.2 89.3 66.3 90.8 60 C 90.8 60 90.8 60 90.8 60 C 91 59.8 91 59.6 90.9 59.5 C 90.9 59.3 91 59.1 91 58.9 C 90.9 58.7 91 58.5 91.1 58.3 Z " id="Shape" fill="#F47621" fill-rule="nonzero" stroke-width="1"/>
<path d="M 83.1 61 C 82 61.3 80.7 61.4 79.6 61.8 C 77.7 62.5 78.9 63.4 77.7 64.7 C 76.9 65.5 76.1 66.6 76.4 67.7 C 76.5 68 76.4 69.1 76.1 69.6 C 75.5 70.6 75.9 70.7 76.1 71.6 C 76.3 72.3 76 72.6 76 73.5 C 76 74.4 76.3 75.3 77.1 75.8 C 78.4 76.7 78.9 75.7 80 75.3 C 80.4 76.2 79 78.8 81.5 77 C 84.1 75.2 86.1 72.5 88.2 70.1 C 89.5 68.6 90.8 67 92 65.4 C 92.7 64.4 93.2 63.3 93.9 62.4 L 83.1 61 Z " id="Shape" stroke-width="1" fill="none"/>
</g>
<g id="body" fill-rule="nonzero">
<path d="M 32.6 40.1 C 36.1 36.8 41 33.7 45.3 31.3 C 51.7 27.7 57.6 26.1 64.8 25.2 C 78.7 23.4 91.2 26.5 102.8 34.6 C 108.6 38.6 114.9 41.7 117.9 48.2 C 118.9 49.4 113.8 51.7 110.7 51.9 C 113.6 54.8 118.7 50.7 118 52 C 117 54.2 113.7 56.9 112.7 57.4 C 104 62.2 92.2 66.9 82.2 65.3 C 68.5 63.1 54.5 60.1 41.1 56.2 C 39.2 55.7 34.7 54.3 34.7 54.3 C 32.3 53 33.1 51.5 31.4 49.7 L 32.6 40.1 Z " id="Shape" fill="#F47621" stroke-width="1"/>
<path d="M 100 60.3 C 97.2 57.6 94.2 54.5 93.1 50.6 C 91.3 44.1 94.8 37.3 98.9 32.1 C 96 30.4 93 28.9 90 27.8 C 89.9 27.9 89.8 28 89.7 28.1 C 87.2 31.4 84.9 34.9 84.7 39.1 C 84.2 47.7 90 60 98.1 63.7 C 99.6 63.2 101.1 62.7 102.6 62.1 C 101.8 61.6 100.7 60.9 100 60.3 Z " id="Shape" fill="#FFFFFF" stroke-width="1"/>
<path d="M 64.1 25.2 C 59.1 25.8 55.9 26.9 55.9 26.9 C 58.5 32.9 60.3 39.4 60.9 45.9 C 61.3 49.9 62.4 56.2 61.9 61.6 C 65.5 62.4 69.1 63.1 72.7 63.8 C 73.2 63.5 73.8 63.1 74.3 62.6 C 84.5 51.7 73 25.1 72.8 24.8 C 70 24.6 67.1 24.8 64.1 25.2 Z " id="Shape" fill="#FFFFFF" stroke-width="1"/>
<g id="eye">
<path d="M 104 49.2 C 106.5 49 108.6 46.7 108.4 44.8 C 108.3 43.3 106.9 42 104.4 41.7 C 100.5 41.2 98.9 43.6 99 45.8 C 99 47.4 101.4 49.4 104 49.2 Z " id="Shape" fill="#FFFFFF" stroke-width="1"/>
<path d="M 102.5 45.9 C 103.2 45.5 103 44.1 102 43.7 C 102.2 43.5 102.5 43.5 102.8 43.4 C 105.8 42.6 106.7 45.7 104.8 47 C 103.4 47.9 101.9 47.1 101.8 46.2 C 102 46.2 102.3 46.1 102.5 45.9 Z " id="Shape" fill="#000600" stroke-width="1"/>
<path d="M 98.2 40.8 C 100 38.8 102.9 38.6 105.3 39.3 C 106.2 39.5 106.5 38.2 105.7 38 C 102.8 37.2 99.3 37.5 97.2 39.8 C 96.7 40.5 97.7 41.5 98.2 40.8 Z " id="Shape" fill="#E85F1A" stroke-width="1"/>
</g>
</g>
<g id="fin" fill-rule="nonzero">
<path d="M 86.3 56.9 C 86.3 57 79.1 60.1 77.4 60.2 C 74.2 60.4 72.4 59.4 70.4 57.2 C 70 56.8 69.2 56.6 68.8 56.1 C 68.3 55.4 67.8 54.7 67.7 53.9 C 67.6 52.6 67.2 51.6 66.6 50.5 C 65.9 49.2 65.9 47.7 65.8 46.2 C 65.7 44.7 66.6 44 67.5 42.8 C 68.1 42.1 68.7 41 69.6 40.7 C 70.1 40.5 70.8 40.7 71.4 40.6 C 72 40.5 72.5 40 73.2 40.1 C 74.3 40.3 75.3 41.9 76 42.6 C 77.6 44.2 79.2 45.8 80.7 47.4 C 82.2 49 84.3 50.7 86.3 51.5 L 86.3 56.9 Z " id="Shape" fill="#F47621" stroke-width="1"/>
<path d="M 87 56.8 C 87 55.1 87 53.4 87 51.7 C 87 51.5 86.9 51.2 86.7 51.1 C 82.9 49.3 80.2 46 77.3 43.1 C 75.6 41.3 74.7 39.5 72.1 39.7 C 69.2 40 67.9 40.9 66.2 43.3 C 64.3 46 65.3 48.7 66.4 51.6 C 67.5 54.6 67.6 56 70.1 57.9 C 72.3 59.6 74 61 77 60.9 C 79 60.8 80.9 59.9 82.8 59.2 C 84.1 58.7 85.8 58.2 86.9 57.4 C 86.9 57.4 86.9 57.4 86.9 57.4 C 86.9 57.4 86.9 57.4 86.9 57.4 C 87.1 57.2 87.1 57 87 56.8 Z M 66.8 47.8 C 66.7 46.8 66.7 45.7 67.2 44.7 C 71.9 49.8 78.6 53.6 85.5 55.2 C 85.3 55.3 85.2 55.3 85 55.4 C 81.8 55.1 78.7 54.4 75.8 53.3 C 72.9 52.1 69.4 50.3 66.8 47.8 Z M 75.1 42.6 C 77.1 44.9 79.4 47.3 81.7 49.3 C 81.7 49.3 81.7 49.3 81.7 49.3 C 80 48.6 78.4 47.6 76.9 46.2 C 75.4 44.8 73.8 43 72.5 41.1 C 73.4 41.3 74.3 41.8 75.1 42.6 Z M 70.9 41.3 C 72.5 43.6 74.5 45.9 76.3 47.6 C 79 50.1 82.3 51.8 85.7 52.8 C 85.8 53.1 85.8 53.5 85.8 53.9 C 79 52.4 72.5 48.5 67.9 43.5 C 67.9 43.4 68 43.4 68 43.3 C 68.8 42.2 69.8 41.6 70.9 41.3 Z M 68.3 52.9 C 68 51.9 67.6 50.9 67.3 50 C 69.3 51.6 71.6 52.9 73.7 53.8 C 76.2 55 79 55.8 81.8 56.3 C 80.7 56.6 79.7 56.9 78.6 57 C 76.4 57.3 74 57.4 71.5 57.3 C 71.3 57.1 71.1 56.9 70.8 56.7 C 70.6 56.5 70.3 56.4 70.1 56.2 C 68.8 55 68.9 54.7 68.3 52.9 Z M 81.4 58.3 C 79.5 59 77.7 59.8 75.7 59.5 C 74.7 59.4 73.9 59 73.2 58.6 C 75.3 58.7 77.4 58.7 79.4 58.4 C 81.3 58.1 83.3 57.5 85.2 56.8 C 85.2 56.8 85.3 56.8 85.3 56.8 C 84.1 57.5 82.5 57.9 81.4 58.3 Z " id="Shape" fill="#E85F1A" stroke-width="1"/>
</g>
<g id="tail" fill-rule="nonzero">
<path d="M 38.5 35.5 C 37.1 36.6 34.4 35.7 34.4 35.7 C 33.1 35.9 25.4 31.9 21.5 31.9 C 21.3 31.7 21 31.6 20.7 31.4 C 19.8 30.8 19 30.5 18 30.9 C 17.2 31.2 16 31.2 15.1 31 C 12.9 30.4 11.5 30.9 10.4 33 C 9.8 34.2 8.2 34.6 7.5 35.6 C 7 36.4 7 37.8 7 39.1 C 7 40.4 5.8 41.6 6.1 42.6 C 6.4 43.6 6 44.1 6.5 44.9 C 7.4 46.4 7.5 46.3 7.3 47.8 C 7.2 48.2 7.9 50.7 8.7 51.8 C 10 53.6 9.8 52.8 10.9 54.2 C 11.7 55.3 13.6 55 14.7 55.5 C 15.7 55.9 16.1 56.1 17.2 55.9 C 17.4 55.9 17.6 55.8 17.7 55.8 C 18.7 56.3 19.4 55.8 20.8 55.8 C 23.9 55.9 27.3 55.4 30.7 54 L 30.7 53.9 L 34.8 54.3 C 34.8 54.4 41.2 52.2 38.5 35.5 Z " id="Shape" fill="#E85F1A" stroke-width="1"/>
<path d="M 38 35.4 C 37.9 35.4 37.2 36 37.2 36 C 36.4 36.3 34.4 35.7 34.4 35.7 C 33.5 35.9 29.5 34.1 25.7 32.8 C 32.9 41 31 49.2 25.3 55.6 C 27.1 55.3 28.9 54.9 30.7 54.1 L 30.7 54 L 34.8 54.4 C 34.8 54.4 34.9 54.4 35 54.3 C 35 54.3 39.8 52.9 39.8 45.2 C 39.8 37.5 38 35.4 38 35.4 Z " id="Shape" fill="#120201" stroke-width="1"/>
<path d="M 37.2 50.9 C 39.1 47.1 38.5 41.1 36.9 36 C 35.7 36 34.4 35.6 34.4 35.6 C 34.4 35.6 29.4 33.8 25.7 32.7 C 26.6 34.4 27.3 36 27.9 37.6 C 25.3 36.8 22.8 35.8 20.3 34.7 C 18 33.6 14.9 32.5 12.5 30.8 C 12.2 30.9 11.9 31.1 11.6 31.4 C 14 33.3 17.2 34.4 19.8 35.6 C 22.6 36.9 25.4 38 28.3 38.8 C 28.4 39 28.4 39.2 28.5 39.5 C 25.2 39.5 21.9 39.2 18.6 38.7 C 15.9 38.3 13.2 37.7 10.7 36.9 C 9.7 36.6 8.6 36.3 7.5 36 C 7.4 36.3 7.3 36.6 7.3 36.9 C 7.5 36.9 7.6 37 7.8 37 C 10.9 38 14 39 17.3 39.5 C 21.1 40.2 25 40.5 28.8 40.5 C 28.9 40.9 28.9 41.2 29 41.6 C 21.6 42.3 14.1 41.9 6.6 41.2 C 6.5 41.5 6.3 41.9 6.3 42.2 C 13.9 42.9 21.5 43.4 29.1 42.7 C 29.1 43.2 29.2 43.7 29.2 44.2 C 22 45.3 14.6 46 7.3 46 C 7.5 46.4 7.6 46.6 7.6 47 C 14.8 47 22.1 46.3 29.2 45.2 C 29.2 45.9 29.1 46.6 29 47.3 C 26.2 47.9 23.4 48.4 20.6 48.8 C 16.5 49.4 12.2 49.9 8 49.9 C 8.1 50.2 8.3 50.6 8.4 50.9 C 12.3 50.9 16.1 50.4 19.9 49.9 C 22.9 49.5 25.8 49 28.8 48.3 C 28.6 49.2 28.3 50 28 50.8 C 25.4 51.7 22.7 52.5 20 53.2 C 17.6 53.8 15.1 54.5 12.6 55 C 13.4 55.2 14.3 55.2 14.9 55.4 C 15.1 55.5 15.2 55.5 15.3 55.6 C 19.3 54.8 23.4 53.7 27.3 52.3 C 26.7 53.4 26.1 54.4 25.3 55.4 C 27.1 55.1 29 54.7 30.9 53.9 L 30.9 53.8 L 33.4 54.1 C 34.9 53.6 36.3 52.6 37.2 50.9 Z " id="Shape" fill="#FFFFFF" stroke-width="1"/>
<path d="M 17 55.2 C 16.3 54.6 15.7 54.4 15.3 53.6 C 15 53 15.4 52.3 14.7 51.8 C 14.1 51.3 13.6 51.2 13 50.9 C 11.2 49.9 11.6 48.4 10.7 46.8 C 9.8 45.3 8.9 45.7 9.9 43.2 C 10.3 42.3 9.7 39.6 10.1 39 C 10.6 38.2 11 37.3 11.5 36.6 C 12 36 12.6 35.8 13.3 35.3 C 13.7 35 14.6 34.7 14.6 34.7 C 14.9 34.5 14.5 33.9 14.9 33.6 C 16 32.8 20.1 34 19.8 32.4 C 20.2 32 20.8 31.9 21.6 31.9 C 21.6 31.9 21.6 31.9 21.6 31.9 C 21.4 31.7 21.1 31.6 20.8 31.4 C 19.9 30.8 19.1 30.5 18.1 30.9 C 17.3 31.2 16.1 31.2 15.2 31 C 13 30.4 11.6 30.9 10.5 33 C 9.9 34.2 8.3 34.6 7.6 35.6 C 7 36.4 7 37.8 7 39.1 C 7 40.4 5.8 41.6 6.1 42.6 C 6.4 43.6 6 44.1 6.5 44.9 C 7.4 46.4 7.5 46.3 7.3 47.8 C 7.2 48.2 7.9 50.7 8.7 51.8 C 10 53.6 9.8 52.8 10.9 54.2 C 11.7 55.3 13.6 55 14.7 55.5 C 15.7 55.9 16.1 56.1 17.2 55.9 C 17.4 55.9 17.6 55.8 17.7 55.8 C 17.5 55.6 17.3 55.4 17 55.2 Z " id="Shape" fill="#120201" stroke-width="1"/>
</g>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 16 KiB

View file

@ -20,8 +20,6 @@ const render = require('../../lib/render.jsx');
const ACCEPTABLE_MODES = ['trending', 'popular']; const ACCEPTABLE_MODES = ['trending', 'popular'];
const piano = require('../../lib/piano');
require('./search.scss'); require('./search.scss');
class Search extends React.Component { class Search extends React.Component {
@ -31,9 +29,7 @@ class Search extends React.Component {
'getSearchState', 'getSearchState',
'handleChangeSortMode', 'handleChangeSortMode',
'handleGetSearchMore', 'handleGetSearchMore',
'handlePianoHover', 'getTab'
'getTab',
'tick'
]); ]);
this.state = this.getSearchState(); this.state = this.getSearchState();
this.state.loaded = []; this.state.loaded = [];
@ -42,17 +38,6 @@ class Search extends React.Component {
this.state.offset = 0; this.state.offset = 0;
this.state.loadMore = false; this.state.loadMore = false;
this.state.isEgg = false;
this.state.isPiano = false;
this.state.isTutorial = false;
this.state.isSpin = false;
this.state.isColor = false;
this.state.isGhost = false;
this.state.isBrightness = false;
this.state.isPixelate = false;
this.state.isFisheye = 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=');
@ -99,40 +84,6 @@ 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.
} }
if (term.includes('egg')) {
this.makeSurprise('isEgg');
}
if (term.includes('piano') || term === 'music') {
this.makeSurprise('isPiano');
}
if (term.includes('cat fact') || term.includes('tutorial')) {
this.makeSurprise('isTutorial');
}
if (term.includes('spin') || term.includes('rotate') || term.includes('whirl')) {
this.makeSurprise('isSpin');
setInterval(this.tick, 5);
}
if (term.includes('color') || term.includes('rainbow') || term.includes('colour')) {
this.makeSurprise('isColor');
setInterval(this.tick, 50);
}
if (term.includes('ghost')) {
this.makeSurprise('isGhost');
setInterval(this.tick, 20);
}
if (term.includes('brightness')) {
this.makeSurprise('isBrightness');
setInterval(this.tick, 20);
}
if (term.includes('pixelate')) {
this.makeSurprise('isPixelate');
setInterval(this.tick, 20);
}
if (term.includes('fisheye') || term.includes('fish eye')) {
this.makeSurprise('isFisheye');
}
this.props.dispatch(navigationActions.setSearchTerm(term)); this.props.dispatch(navigationActions.setSearchTerm(term));
} }
componentDidUpdate (prevProps) { componentDidUpdate (prevProps) {
@ -140,13 +91,6 @@ class Search extends React.Component {
this.handleGetSearchMore(); this.handleGetSearchMore();
} }
} }
makeSurprise (surprise) {
this.setState({[surprise]: true});
}
handlePianoHover (noteNumber) {
piano(noteNumber, ACCEPTABLE_MODES.indexOf(this.state.mode));
}
getSearchState () { getSearchState () {
let pathname = window.location.pathname.toLowerCase(); let pathname = window.location.pathname.toLowerCase();
if (pathname[pathname.length - 1] === '/') { if (pathname[pathname.length - 1] === '/') {
@ -192,11 +136,6 @@ class Search extends React.Component {
}); });
}); });
} }
tick () {
this.setState(prevState => (
{elapsed: (prevState.elapsed + 1)}
));
}
getTab (type) { getTab (type) {
const term = this.props.searchTerm.split(' ').join('+'); const term = this.props.searchTerm.split(' ').join('+');
let allTab = ( let allTab = (
@ -230,13 +169,11 @@ class Search extends React.Component {
<Grid <Grid
cards cards
showAvatar showAvatar
isEggShaped={this.state.isEgg}
itemType={this.state.tab} itemType={this.state.tab}
items={this.state.loaded} items={this.state.loaded}
showFavorites={false} showFavorites={false}
showLoves={false} showLoves={false}
showViews={false} showViews={false}
onPianoEnter={this.state.isPiano ? this.handlePianoHover : null}
/> />
); );
let searchAction = null; let searchAction = null;
@ -253,7 +190,6 @@ class Search extends React.Component {
} }
return ( return (
<div <div
className={this.state.isTutorial ? 'sillyTutorial' : this.state.isFisheye ? 'fisheye' : ''}
id="projectBox" id="projectBox"
key="projectBox" key="projectBox"
> >
@ -262,27 +198,9 @@ class Search extends React.Component {
</div> </div>
); );
} }
fancyStyle () {
const style = {};
if (this.state.isSpin) {
style.transform = `rotate(${Math.min(this.state.elapsed, 360)}deg)`;
}
if (this.state.isColor) {
style.filter = `hue-rotate(${this.state.elapsed}deg) saturate(400%)`;
}
if (this.state.isGhost) {
style.opacity = `${Math.min(1, this.state.elapsed / 100)}`;
}
if (this.state.isBrightness) {
style.filter = `brightness(${Math.max(1, 2 - (this.state.elapsed / 100))})`;
}
return style;
}
render () { render () {
return ( return (
<div style={this.fancyStyle()} > <div>
<div className="outer"> <div className="outer">
<TitleBanner className="masthead"> <TitleBanner className="masthead">
<div className="inner"> <div className="inner">

View file

@ -165,21 +165,6 @@ $base-bg: $ui-white;
max-width: 500px; max-width: 500px;
text-align: center; text-align: center;
} }
&.sillyTutorial {
background-image: url('computer-cat.jpg');
background-size: 50%;
.thumbnail {
opacity: .8;
}
}
&.fisheye {
background-image: url('fish.svg');
background-size: 100%;
.thumbnail {
opacity: .8;
}
}
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB