Merge branch 'toolbar'

main
Mike Fix 8 years ago
commit 1a911ce776

@ -0,0 +1,19 @@
import React from 'react'
import { DropTarget } from 'react-dnd'
import { NativeTypes } from 'react-dnd-html5-backend'
const spec = {
drop (props, monitor) {
const bundle = monitor.getItem()
const file = bundle.files[0]
const reader = new FileReader()
reader.onload = event => props.onDrop(event.target.result)
reader.readAsText(file, 'UTF-8');
}
}
const collect = connect => ({ connectDropTarget: connect.dropTarget() })
const ReadFileDropContainer = props => props.connectDropTarget(props.children)
export default DropTarget(NativeTypes.FILE, spec, collect)(ReadFileDropContainer)

@ -0,0 +1,26 @@
import React from 'react'
export default (props) => (
<div onClick={props.onClick} className="toolbar-btn" style={Object.assign({
background: props.bg
}, props.style)}>
<span>{props.title}</span>
<style jsx>{`
div {
cursor: pointer;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
padding: 0 16px;
color: #000;
border: 0.5px solid #000;
border-radius: 3px;
}
div:last-of-type {
border-radius: 0px 3px 3px 0px;
border-left: 0px;
}
`}</style>
</div>
)

@ -2,6 +2,7 @@ import { EOL } from 'os'
import React from 'react' import React from 'react'
import domtoimage from 'dom-to-image' import domtoimage from 'dom-to-image'
import CodeMirror from 'react-codemirror' import CodeMirror from 'react-codemirror'
import WindowControls from '../components/svg/controls'
// hack to only call modes on browser // hack to only call modes on browser
if (typeof window !== 'undefined' && typeof window.navigator !== 'undefined') { if (typeof window !== 'undefined' && typeof window.navigator !== 'undefined') {
@ -10,6 +11,7 @@ if (typeof window !== 'undefined' && typeof window.navigator !== 'undefined') {
require('codemirror/mode/markdown/markdown'); require('codemirror/mode/markdown/markdown');
} }
const margin = '45px 54px'
const padding = '50px 50px' const padding = '50px 50px'
class CodeImage extends React.Component { class CodeImage extends React.Component {
@ -19,19 +21,6 @@ class CodeImage extends React.Component {
this.state = { this.state = {
code: this.props.children code: this.props.children
} }
this.save = this.save.bind(this)
}
save () {
// save
domtoimage.toJpeg(this.container)
.then((dataUrl) => {
const link = document.createElement('a')
link.download = 'my-image-name.jpeg'
link.href = dataUrl
link.click()
})
} }
updateCode (newCode) { updateCode (newCode) {
@ -44,30 +33,50 @@ class CodeImage extends React.Component {
return ( return (
<div id='section'> <div id='section'>
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.26.0/codemirror.min.css'/> <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.26.0/codemirror.min.css'/>
<div id='container' ref={(container) => { this.container = container }}> <div id='container' style={Object.assign({ background: this.props.bg }, this.props.style)}>
<div className="window-controls">
<WindowControls />
</div>
<div id='anotherContainer'> <div id='anotherContainer'>
<CodeMirror value={this.state.code} onChange={this.updateCode} options={options} /> <CodeMirror value={this.state.code} onChange={this.updateCode} options={options} />
</div> </div>
</div> </div>
<style jsx>{` <style jsx>{`
#section { #section {
width: 100%; height: 100%;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
#container {
background: green;
padding: ${padding};
}
#anotherContainer { #anotherContainer {
background: white; background: white;
min-width: 700px; min-width: 700px;
min-height: 400px; min-height: 400px;
margin: 0px; margin: 0px;
padding: 15px; padding: 15px;
height: 100%;
background: #000;
display: flex;
justify-content: center;
align-items: center;
}
.window-controls {
position: absolute;
margin-left: -2px;
margin-top: -14px;
} }
.hyper {
border: 1px solid #393939;
border-radius: 5px;
background: black;
padding: 26px 18px;
margin: ${margin}
color: white;
}
.bw {}
`}</style> `}</style>
</div> </div>
) )

@ -0,0 +1,79 @@
import React from 'react'
import enhanceWithClickOutside from 'react-click-outside'
import { BlockPicker } from 'react-color'
class ColorPicker extends React.Component {
constructor() {
super()
this.state = { isVisible: false }
this.toggle = this.toggle.bind(this)
this.handlePickColor = this.handlePickColor.bind(this)
}
toggle() {
this.setState({ isVisible: !this.state.isVisible })
}
handleClickOutside() {
this.setState({ isVisible: false })
}
handlePickColor(color) {
this.setState({ isVisible: false })
this.props.onChange(color.hex)
}
render() {
return (
<div className="colorpicker-container">
<div className="colorpicker-display">
<div className="colorpicker-label">
<span>BG</span>
</div>
<div className="bg-color" style={{background: this.props.bg}} onClick={this.toggle}></div>
</div>
<div className="colorpicker-picker" hidden={!this.state.isVisible}>
<BlockPicker color={this.props.bg} onChangeComplete={this.handlePickColor} />
</div>
<style jsx>{`
.colorpicker-container {
height: 100%;
}
.colorpicker-display {
display: flex;
height: 100%;
width: 72px;
border: 0.5px solid #000;
border-radius: 3px;
}
.colorpicker-label {
display: flex;
align-items: center;
justify-content: center;
user-select: none;
cursor: default;
height: 100%;
width: 36px;
}
.bg-color {
cursor: pointer;
height: 100%;
width: 36px;
border-radius: 0px 2px 2px 0px;
}
.colorpicker-picker {
position: absolute;
margin-left: -32px;
margin-top: 9px;
}
`}</style>
</div>
)
}
}
export default enhanceWithClickOutside(ColorPicker)

@ -0,0 +1,130 @@
import React from 'react'
import enhanceWithClickOutside from 'react-click-outside'
import ArrowDown from './svg/arrowdown'
class Dropdown extends React.Component {
constructor(props) {
super()
this.state = {
isVisible: false,
selected: props.selected || props.list[0]
}
this.select = this.select.bind(this)
this.toggle = this.toggle.bind(this)
}
select(item) {
this.setState({ selected: item })
}
toggle() {
this.setState({ isVisible: !this.state.isVisible })
}
handleClickOutside() {
this.setState({ isVisible: false });
}
renderListItems() {
return this.props.list.map((item, i) => (
<div className={`dropdown-list-item ${this.state.selected === item ? "selected" : ""}`} key={i} onClick={this.select.bind(null, item)}>
<span>{ item.name }</span>
<style jsx>{`
.dropdown-list-item {
background: #131313;
user-select: none;
padding: 8px 16px;
border-bottom: 0.5px solid #000;
}
.selected {
background: #506874;
color: #fff;
}
.selected:hover {
background: #506874 !important;
}
.dropdown-list-item:hover {
background: #222;
}
.dropdown-list-item:last-of-type {
border-bottom: none;
border-radius: 0px 0px 2px 2px;
}
`}</style>
</div>
))
}
render() {
// find longest list value in number of characters
const MIN_WIDTH = this.props.list.reduce((max, { name }) =>
(name.length > max ? name.length : max), 0)
return (
<div className="dropdown-container" style={{ minWidth: MIN_WIDTH * 16 }} onClick={this.toggle}>
<div className={`dropdown-display ${this.state.isVisible ? 'is-visible' : ''}`}>
<span>{ this.state.selected.name }</span>
<div className="arrow-down"><ArrowDown /></div>
</div>
<div className="dropdown-list">
{ this.renderListItems() }
</div>
<style jsx>{`
.arrow-down {
position: absolute;
right: 16px;
}
.is-visible > .arrow-down {
transform: rotate(180deg);
}
.is-visible {
border-radius: 3px 3px 0px 0px !important;
}
.dropdown-container {
height: 100%;
cursor: pointer;
}
.dropdown-display {
height: 100%;
border: 1px solid #000;
border-radius: 3px;
user-select: none;
padding: 8px 16px;
display: flex;
justify-content: flex-start;
align-items: center;
position: relative;
z-index: 1;
}
.dropdown-display:hover {
background: #131313;
}
.is-visible + .dropdown-list {
display: block;
}
.dropdown-list {
display: none;
margin-top: -2px;
border: 0.5px solid #000;
border-radius: 0px 0px 3px 3px;
max-height: 350px;
overflow-y: scroll;
}
`}</style>
</div>
)
}
}
export default enhanceWithClickOutside(Dropdown)

@ -0,0 +1,32 @@
import Head from 'next/head'
export default () => (
<div>
<Head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta charSet="utf-8" />
<link rel="shortcut icon" href="/static/favicon.ico" />
<link rel="stylesheet" href="//cdn.jsdelivr.net/font-hack/2.020/css/hack-extended.min.css" />
</Head>
<style jsx global>{`
body {
font-family: Hack, -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
background: #000;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
#toolbar > div {
margin-right: 8px; // TODO fix hack
}
#toolbar>div:last-child {
margin-right: 0px;
}
`}</style>
</div>
)

@ -0,0 +1,78 @@
import React from 'react'
import enhanceWithClickOutside from 'react-click-outside'
import SettingsIcon from './svg/settings'
class Settings extends React.Component {
constructor(props) {
super()
this.state = {
isVisible: false
}
this.toggle = this.toggle.bind(this)
}
toggle() {
this.setState({ isVisible: !this.state.isVisible })
}
handleClickOutside() {
this.setState({ isVisible: false });
}
render() {
return (
<div className="settings-container" onClick={this.toggle}>
<div className={`settings-display ${this.state.isVisible ? 'is-visible' : ''}`}>
<SettingsIcon />
</div>
<div className="settings-settings">
</div>
<style jsx>{`
.settings-container {
height: 100%;
width: 37px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 3px;
}
.settings-display {
height: 100%;
width: 100%;
display: flex;
justify-content: center;
align-items: center;
border: 0.5px solid #000;
border-radius: 3px;
user-select: none;
position: relative;
z-index: 1;
cursor: pointer;
}
.settings-display:hover {
background: #131313;
}
.is-visible + .settings-settings {
display: block;
}
.settings-settings {
display: none;
border: 0.5px solid #333;
height: 200px;
width: 200px;
border-radius: 3px;
position: absolute;
margin-top: 120px;
background: #000;
}
`}</style>
</div>
)
}
}
export default enhanceWithClickOutside(Settings)

@ -0,0 +1,7 @@
import React from 'react'
export default () => (
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="6" viewBox="0 0 10 6">
<path fill="#506874" fillRule="evenodd" d="M93.7890633,17.6396882 L97.4926052,14.0851393 C97.6061243,13.9716202 97.7196417,13.9716202 97.8331608,14.0851393 L98.4929872,14.723681 C98.6065063,14.8372001 98.6065063,14.9507175 98.4929872,15.0642366 L93.9593411,19.4063203 C93.9167714,19.4488899 93.8600127,19.4701744 93.7890633,19.4701744 C93.7181138,19.4701744 93.6613552,19.4488899 93.6187855,19.4063203 L89.0851393,15.0642366 C88.9716202,14.9507175 88.9716202,14.8372001 89.0851393,14.723681 L89.7449658,14.0851393 C89.8584849,13.9716202 89.9720022,13.9716202 90.0855213,14.0851393 L93.7890633,17.6396882 Z" transform="translate(-89 -14)"/>
</svg>
)

@ -0,0 +1,11 @@
import React from 'react'
export default () => (
<svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14">
<g fill="none" fillRule="evenodd" transform="translate(1 1)">
<circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" strokeWidth=".5"/>
<circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" strokeWidth=".5"/>
<circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" strokeWidth=".5"/>
</g>
</svg>
)

@ -0,0 +1,7 @@
import React from 'react'
export default () => (
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
<path fill="#4F6875" fillRule="evenodd" d="M206.532032,366.702224 L208.523318,368.142728 C208.69279,368.3122 208.721035,368.509915 208.608053,368.735877 L206.786238,371.74399 C206.673257,371.969953 206.503788,372.040565 206.277825,371.955829 L203.989964,371.066106 C203.283831,371.546276 202.775423,371.842848 202.464724,371.955829 L202.125782,374.286058 C202.069291,374.51202 201.913944,374.625 201.659736,374.625 L198.058474,374.625 C197.804266,374.625 197.648919,374.51202 197.592428,374.286058 L197.253486,371.955829 C196.829806,371.786357 196.321398,371.489786 195.728246,371.066106 L193.440385,371.955829 C193.214422,372.068811 193.044953,371.998198 192.931972,371.74399 L191.110157,368.735877 C190.96893,368.481669 190.997175,368.283955 191.194892,368.142728 L193.101443,366.702224 C193.101443,366.617488 193.094382,366.476263 193.080259,366.278546 C193.066136,366.080828 193.059075,365.925481 193.059075,365.8125 C193.059075,365.699519 193.066136,365.544172 193.080259,365.346454 C193.094382,365.148737 193.101443,365.007512 193.101443,364.922776 L191.152525,363.482272 C190.983053,363.3128 190.954808,363.115085 191.067789,362.889123 L192.889604,359.88101 C193.002585,359.655047 193.172055,359.584435 193.398017,359.669171 L195.685878,360.558894 C196.392011,360.078724 196.90042,359.782152 197.211118,359.669171 L197.550061,357.338942 C197.606551,357.11298 197.761898,357 198.016106,357 L201.617368,357 C201.871576,357 202.026923,357.11298 202.083414,357.338942 L202.379988,359.669171 C202.803668,359.838643 203.312077,360.135214 203.905229,360.558894 L206.150722,359.669171 C206.376684,359.556189 206.560276,359.626802 206.701503,359.88101 L208.523318,362.889123 C208.664544,363.143331 208.6363,363.341045 208.438582,363.482272 L206.532032,364.922776 C206.532032,365.007512 206.539093,365.148737 206.553216,365.346454 C206.567338,365.544172 206.5744,365.699519 206.5744,365.8125 C206.5744,366.23618 206.560277,366.532752 206.532032,366.702224 Z M199.795553,368.905349 C200.671159,368.905349 201.419649,368.608777 202.041046,368.015625 C202.662443,367.422473 202.973138,366.688105 202.973138,365.8125 C202.973138,364.936895 202.662443,364.202527 202.041046,363.609375 C201.419649,363.016223 200.671159,362.719651 199.795553,362.719651 C198.919948,362.719651 198.178519,363.016223 197.571244,363.609375 C196.96397,364.202527 196.660337,364.936895 196.660337,365.8125 C196.660337,366.688105 196.96397,367.422473 197.571244,368.015625 C198.178519,368.608777 198.919948,368.905349 199.795553,368.905349 Z" transform="translate(-191 -357)"/>
</svg>
)

@ -0,0 +1,117 @@
import React from 'react'
import Dropdown from './dropdown'
import ColorPicker from './colorpicker'
import Settings from './settings'
import Button from './button'
const themes = [
{
name: 'dracula'
},
{
name: 'solarized'
}
]
const langauges = [
'Auto Detect',
'Plain Text',
'AppleScript',
'BoxNote',
'C',
'C#',
'CSS',
'CSV',
'Closure',
'CoffeeScript',
'Cold Fusion',
'Crystal',
'Cypher',
'D',
'Dart',
'Diff',
'Docker',
'Erlang',
'F#',
'Fortran',
'Gherkin',
'Go',
'Groovy',
'HTML',
'Haskell',
'Haxe',
'Java',
'JavaScript',
'JSON',
'Julia',
'Kotlin',
'LaTex',
'Lisp',
'Lua',
'MATLAB',
'MUMPS',
'OCaml',
'Objective-C',
'PHP',
'Pascal',
'Perl',
'Pig',
'Post',
'Puppet',
'Python',
'R',
'Ruby',
'Rust',
'SQL',
'Sass',
'Scheme',
'Smalltalk',
'Swift',
'TSV',
'VB.NET',
'VBScript',
'Velocity',
'Verilog',
'XML',
'YAML'
].map(name => ({ name }))
const Toolbar = (props) => (
<div id="toolbar">
<Dropdown list={themes} />
<Dropdown list={langauges} />
<ColorPicker
onChange={props.onBGChange}
bg={props.bg}
/>
<Settings />
<div className="buttons">
<Button
onClick={props.upload}
title="Copy Imgur Link"
bg="#84ACFC"
style={{ borderRadius: '3px 0px 0px 3px' }}
/>
<Button onClick={props.save} title="Save Image" bg="#C3E98D" />
</div>
<style jsx>{`
#toolbar {
width: 100%;
height: 40px; // TODO fix
margin-bottom: 16px;
display: flex;
position: relative;
z-index: 1;
font-size: 14px;
color: #4F6875;
}
.buttons {
display: flex;
margin-left: auto;
}
`}</style>
</div>
)
export default Toolbar

@ -15,7 +15,7 @@ async function uploadImage (encodedImage) {
const data = new FormData() const data = new FormData()
data.append('image', encodedImage) data.append('image', encodedImage)
data.append('type', 'base64') data.append('type', 'image/png')
const config = { const config = {
headers: { headers: {
@ -23,16 +23,9 @@ async function uploadImage (encodedImage) {
} }
} }
try { return axios.post(url, data, config)
const result = await axios.post(url, data, config) .then(res => res.data)
.catch(console.log)
console.log('success! ')
console.log(Object.keys(result.data))
console.log(result.data)
} catch (e) {
console.log('bummer man')
console.log(e)
}
} }
const getGist = (id) => { const getGist = (id) => {

@ -20,6 +20,8 @@
"next": "^2.4.3", "next": "^2.4.3",
"react": "^15.5.4", "react": "^15.5.4",
"react-codemirror": "^1.0.0", "react-codemirror": "^1.0.0",
"react-click-outside": "^2.3.1",
"react-color": "^2.12.1",
"react-dnd": "^2.4.0", "react-dnd": "^2.4.0",
"react-dnd-html5-backend": "^2.4.1", "react-dnd-html5-backend": "^2.4.1",
"react-dom": "^15.5.4", "react-dom": "^15.5.4",

@ -2,7 +2,11 @@ import React from 'react'
import HTML5Backend from 'react-dnd-html5-backend' import HTML5Backend from 'react-dnd-html5-backend'
import { DragDropContext } from 'react-dnd' import { DragDropContext } from 'react-dnd'
import Axios from 'axios' import Axios from 'axios'
import domtoimage from 'dom-to-image'
import Meta from '../components/meta'
import Toolbar from '../components/toolbar'
import CodeImage from '../components/codeImage' import CodeImage from '../components/codeImage'
import api from '../lib/api' import api from '../lib/api'
@ -19,7 +23,7 @@ const unfold = (f, seed) => {
} }
` `
class Home extends React.Component { class Index extends React.Component {
/* pathname, asPath, err, req, res */ /* pathname, asPath, err, req, res */
static async getInitialProps ({ asPath }) { static async getInitialProps ({ asPath }) {
try { try {
@ -31,25 +35,70 @@ class Home extends React.Component {
} }
} }
constructor() {
super()
this.state = {
bgColor: '#111111'
}
}
save () {
// domtoimage.toPng(document.getElementById('container'))
domtoimage.toJpeg(document.getElementById('container'))
.then((dataUrl) => {
const link = document.createElement('a')
// link.download = 'snippet.png'
link.download = 'snippet.jpeg'
link.href = dataUrl
link.click()
})
}
upload () {
domtoimage.toBlob(document.getElementById('container'))
.then(api.uploadImage)
.then(res => res.data.link)
.then(console.log)
}
render () { render () {
return ( return (
<div> <div className="main">
<Meta />
<h1>Welcome to Code Image</h1>
<div id="editor">
<Toolbar
save={this.save}
upload={this.upload}
onBGChange={color => this.setState({ bgColor: color })}
bg={this.state.bgColor}
/>
<CodeImage bg={this.state.bgColor}>
{this.props.content || DEFAULT_CODE}
</CodeImage>
</div>
<style jsx>{` <style jsx>{`
h1 {
color: #fff;
}
div { div {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
#editor {
height: 460px;
background: #151515;
padding: 16px;
}
`} `}
</style> </style>
<h1>Welcome to Code Image</h1>
<CodeImage>
{DEFAULT_CODE}
</CodeImage>
</div> </div>
) )
} }
} }
export default DragDropContext(HTML5Backend)(Home) export default DragDropContext(HTML5Backend)(Index)

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@ -987,8 +987,8 @@ camelcase@^3.0.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
caniuse-db@^1.0.30000639: caniuse-db@^1.0.30000639:
version "1.0.30000684" version "1.0.30000690"
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000684.tgz#99acb0118b8fd1fdd601a15e0c0f2dfc15a81680" resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000690.tgz#ee4e0750070f6aae6f40e76477984449bd6cb48a"
case-sensitive-paths-webpack-plugin@2.0.0: case-sensitive-paths-webpack-plugin@2.0.0:
version "2.0.0" version "2.0.0"
@ -1159,7 +1159,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
safe-buffer "^5.0.1" safe-buffer "^5.0.1"
sha.js "^2.4.8" sha.js "^2.4.8"
create-react-class@^15.5.1: create-react-class@^15.5.1, create-react-class@^15.6.0:
version "15.6.0" version "15.6.0"
resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.0.tgz#ab448497c26566e1e29413e883207d57cfe7bed4" resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.0.tgz#ab448497c26566e1e29413e883207d57cfe7bed4"
dependencies: dependencies:
@ -2133,7 +2133,7 @@ lodash.isequal@^4.5.0:
version "4.5.0" version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
lodash@^4.14.0, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.5.1, lodash@^4.6.1: lodash@^4.0.1, lodash@^4.14.0, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.5.1, lodash@^4.6.1:
version "4.17.4" version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
@ -2154,6 +2154,10 @@ lru-cache@^4.0.1:
pseudomap "^1.0.2" pseudomap "^1.0.2"
yallist "^2.1.2" yallist "^2.1.2"
material-colors@^1.2.1:
version "1.2.5"
resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.5.tgz#5292593e6754cb1bcc2b98030e4e0d6a3afc9ea1"
md5-file@3.1.1: md5-file@3.1.1:
version "3.1.1" version "3.1.1"
resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-3.1.1.tgz#db3c92c09bbda5c2de883fa5490dd711fddbbab9" resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-3.1.1.tgz#db3c92c09bbda5c2de883fa5490dd711fddbbab9"
@ -2212,10 +2216,14 @@ mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7:
dependencies: dependencies:
mime-db "~1.27.0" mime-db "~1.27.0"
mime@1.3.4, mime@^1.3.4: mime@1.3.4:
version "1.3.4" version "1.3.4"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
mime@^1.3.4:
version "1.3.6"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0"
min-document@^2.19.0: min-document@^2.19.0:
version "2.19.0" version "2.19.0"
resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
@ -2316,8 +2324,8 @@ negotiator@0.6.1:
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
next@^2.4.3: next@^2.4.3:
version "2.4.3" version "2.4.4"
resolved "https://registry.yarnpkg.com/next/-/next-2.4.3.tgz#8d84a3a4552e584a1d7930817f3408de494e974c" resolved "https://registry.yarnpkg.com/next/-/next-2.4.4.tgz#1caac2ee5cc195564ad330b9fcbff40380b0627e"
dependencies: dependencies:
ansi-html "0.0.7" ansi-html "0.0.7"
babel-core "6.24.0" babel-core "6.24.0"
@ -2360,7 +2368,7 @@ next@^2.4.3:
send "0.15.2" send "0.15.2"
source-map-support "0.4.15" source-map-support "0.4.15"
strip-ansi "3.0.1" strip-ansi "3.0.1"
styled-jsx "1.0.3" styled-jsx "1.0.5"
touch "1.0.0" touch "1.0.0"
unfetch "2.1.2" unfetch "2.1.2"
url "0.11.0" url "0.11.0"
@ -2672,12 +2680,12 @@ process@~0.5.1:
resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf"
promise@^7.1.1: promise@^7.1.1:
version "7.1.1" version "7.3.0"
resolved "https://registry.yarnpkg.com/promise/-/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.0.tgz#e7feec5aa87a2cbb81acf47d9a3adbd9d4642d7b"
dependencies: dependencies:
asap "~2.0.3" asap "~2.0.3"
prop-types@15.5.10, prop-types@^15.5.4, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@~15.5.7: prop-types@15.5.10, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8:
version "15.5.10" version "15.5.10"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154"
dependencies: dependencies:
@ -2763,6 +2771,12 @@ rc@^1.1.7:
minimist "^1.2.0" minimist "^1.2.0"
strip-json-comments "~2.0.1" strip-json-comments "~2.0.1"
react-click-outside@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/react-click-outside/-/react-click-outside-2.3.1.tgz#318737ebdf081a4a3bcd46825663674cbe9836eb"
dependencies:
hoist-non-react-statics "^1.2.0"
react-codemirror@^1.0.0: react-codemirror@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/react-codemirror/-/react-codemirror-1.0.0.tgz#91467b53b1f5d80d916a2fd0b4c7adb85a9001ba" resolved "https://registry.yarnpkg.com/react-codemirror/-/react-codemirror-1.0.0.tgz#91467b53b1f5d80d916a2fd0b4c7adb85a9001ba"
@ -2774,6 +2788,16 @@ react-codemirror@^1.0.0:
lodash.isequal "^4.5.0" lodash.isequal "^4.5.0"
prop-types "^15.5.4" prop-types "^15.5.4"
react-color@^2.12.1:
version "2.12.1"
resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.12.1.tgz#ef5a4dc4260ed7d1642047d5b6693d68939b19f7"
dependencies:
lodash "^4.0.1"
material-colors "^1.2.1"
prop-types "^15.5.4"
reactcss "^1.2.0"
tinycolor2 "^1.1.2"
react-deep-force-update@^2.0.1: react-deep-force-update@^2.0.1:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-2.0.1.tgz#4f7f6c12c3e7de42f345992a3c518236fa1ecad3" resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-2.0.1.tgz#4f7f6c12c3e7de42f345992a3c518236fa1ecad3"
@ -2796,13 +2820,13 @@ react-dnd@^2.4.0:
prop-types "^15.5.8" prop-types "^15.5.8"
react-dom@^15.5.4: react-dom@^15.5.4:
version "15.5.4" version "15.6.1"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.5.4.tgz#ba0c28786fd52ed7e4f2135fe0288d462aef93da" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.6.1.tgz#2cb0ed4191038e53c209eb3a79a23e2a4cf99470"
dependencies: dependencies:
fbjs "^0.8.9" fbjs "^0.8.9"
loose-envify "^1.1.0" loose-envify "^1.1.0"
object-assign "^4.1.0" object-assign "^4.1.0"
prop-types "~15.5.7" prop-types "^15.5.10"
react-hot-loader@3.0.0-beta.7: react-hot-loader@3.0.0-beta.7:
version "3.0.0-beta.7" version "3.0.0-beta.7"
@ -2828,13 +2852,20 @@ react-syntax-highlight@^0.0.6:
highlight.js "^9.10.0" highlight.js "^9.10.0"
react@^15.5.4: react@^15.5.4:
version "15.5.4" version "15.6.1"
resolved "https://registry.yarnpkg.com/react/-/react-15.5.4.tgz#fa83eb01506ab237cdc1c8c3b1cea8de012bf047" resolved "https://registry.yarnpkg.com/react/-/react-15.6.1.tgz#baa8434ec6780bde997cdc380b79cd33b96393df"
dependencies: dependencies:
create-react-class "^15.6.0"
fbjs "^0.8.9" fbjs "^0.8.9"
loose-envify "^1.1.0" loose-envify "^1.1.0"
object-assign "^4.1.0" object-assign "^4.1.0"
prop-types "^15.5.7" prop-types "^15.5.10"
reactcss@^1.2.0:
version "1.2.2"
resolved "https://registry.yarnpkg.com/reactcss/-/reactcss-1.2.2.tgz#41b0ef43e01d54880357c34b11ac1531209350ef"
dependencies:
lodash "^4.0.1"
read-pkg-up@^1.0.1: read-pkg-up@^1.0.1:
version "1.0.1" version "1.0.1"
@ -2873,8 +2904,8 @@ readdirp@^2.0.0:
set-immediate-shim "^1.0.1" set-immediate-shim "^1.0.1"
redbox-react@^1.3.6: redbox-react@^1.3.6:
version "1.4.1" version "1.4.2"
resolved "https://registry.yarnpkg.com/redbox-react/-/redbox-react-1.4.1.tgz#90552c45374e2003b9665ee5470b60d4bb74a5ba" resolved "https://registry.yarnpkg.com/redbox-react/-/redbox-react-1.4.2.tgz#7fe35d3c567301e97938cc7fd6a10918f424c6b4"
dependencies: dependencies:
error-stack-parser "^1.3.6" error-stack-parser "^1.3.6"
object-assign "^4.0.1" object-assign "^4.0.1"
@ -3249,9 +3280,9 @@ strip-json-comments@~2.0.1:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
styled-jsx@1.0.3: styled-jsx@1.0.5:
version "1.0.3" version "1.0.5"
resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-1.0.3.tgz#3d8e2eda09fffccc131d321a02ae6d6f9f79da53" resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-1.0.5.tgz#943fced48295ff70000794311f9f3bf3688e427f"
dependencies: dependencies:
babel-plugin-syntax-jsx "6.18.0" babel-plugin-syntax-jsx "6.18.0"
babel-traverse "6.21.0" babel-traverse "6.21.0"
@ -3262,11 +3293,11 @@ styled-jsx@1.0.3:
escape-string-regexp "1.0.5" escape-string-regexp "1.0.5"
source-map "0.5.6" source-map "0.5.6"
string-hash "1.1.1" string-hash "1.1.1"
stylis "3.0.10" stylis "3.1.5"
stylis@3.0.10: stylis@3.1.5:
version "3.0.10" version "3.1.5"
resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.0.10.tgz#9f561e8a9799c2c317c596583bcaaa52a0d27663" resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.1.5.tgz#c585186286aaa79856c9ac62bbb38113923edda3"
supports-color@^2.0.0: supports-color@^2.0.0:
version "2.0.0" version "2.0.0"
@ -3325,6 +3356,10 @@ timers-browserify@^2.0.2:
dependencies: dependencies:
setimmediate "^1.0.4" setimmediate "^1.0.4"
tinycolor2@^1.1.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8"
to-arraybuffer@^1.0.0: to-arraybuffer@^1.0.0:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
@ -3375,8 +3410,8 @@ ua-parser-js@^0.7.9:
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb"
uglify-js@^2.8.5: uglify-js@^2.8.5:
version "2.8.28" version "2.8.29"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.28.tgz#e335032df9bb20dcb918f164589d5af47f38834a" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
dependencies: dependencies:
source-map "~0.5.1" source-map "~0.5.1"
yargs "~3.10.0" yargs "~3.10.0"

Loading…
Cancel
Save