From 13a99a9b73cacaf366a74e28022dd65ab30a41ea Mon Sep 17 00:00:00 2001 From: Ian Storm Taylor Date: Thu, 4 May 2017 16:48:42 -0700 Subject: [PATCH] refactor examples, upgrade dependencies --- examples/{ => dev}/large-document/Readme.md | 0 examples/{ => dev}/large-document/index.js | 0 .../performance-plain/index.js | 0 .../performance-plain/state.json | 0 .../performance-rich/index.js | 0 .../performance-rich/state.json | 0 examples/index.css | 10 +- examples/index.js | 202 ++++++------------ package.json | 5 +- yarn.lock | 67 +++++- 10 files changed, 135 insertions(+), 149 deletions(-) rename examples/{ => dev}/large-document/Readme.md (100%) rename examples/{ => dev}/large-document/index.js (100%) rename examples/{development => dev}/performance-plain/index.js (100%) rename examples/{development => dev}/performance-plain/state.json (100%) rename examples/{development => dev}/performance-rich/index.js (100%) rename examples/{development => dev}/performance-rich/state.json (100%) diff --git a/examples/large-document/Readme.md b/examples/dev/large-document/Readme.md similarity index 100% rename from examples/large-document/Readme.md rename to examples/dev/large-document/Readme.md diff --git a/examples/large-document/index.js b/examples/dev/large-document/index.js similarity index 100% rename from examples/large-document/index.js rename to examples/dev/large-document/index.js diff --git a/examples/development/performance-plain/index.js b/examples/dev/performance-plain/index.js similarity index 100% rename from examples/development/performance-plain/index.js rename to examples/dev/performance-plain/index.js diff --git a/examples/development/performance-plain/state.json b/examples/dev/performance-plain/state.json similarity index 100% rename from examples/development/performance-plain/state.json rename to examples/dev/performance-plain/state.json diff --git a/examples/development/performance-rich/index.js b/examples/dev/performance-rich/index.js similarity index 100% rename from examples/development/performance-rich/index.js rename to examples/dev/performance-rich/index.js diff --git a/examples/development/performance-rich/state.json b/examples/dev/performance-rich/state.json similarity index 100% rename from examples/development/performance-rich/state.json rename to examples/dev/performance-rich/state.json diff --git a/examples/index.css b/examples/index.css index d1eba0898..811a9cb6a 100644 --- a/examples/index.css +++ b/examples/index.css @@ -86,27 +86,27 @@ input:focus { * App. */ -.topbar { +.nav { padding: 10px 15px; color: #AAA; background: #000; } -.topbar-title { +.nav-title { margin-right: 0.5em; } -.topbar-links { +.nav-links { float: right; } -.topbar-link { +.nav-link { margin-left: 1em; color: #AAA; text-decoration: none; } -.topbar-link:hover { +.nav-link:hover { color: #FFF; text-decoration: underline; } diff --git a/examples/index.js b/examples/index.js index 3d839cfa3..c1cade413 100644 --- a/examples/index.js +++ b/examples/index.js @@ -1,11 +1,7 @@ import React from 'react' import ReactDOM from 'react-dom' -import { Router, Route, Link, IndexRedirect, hashHistory } from 'react-router' - -/** - * Examples. - */ +import { HashRouter, NavLink, Route, Redirect, Switch } from 'react-router-dom' import CheckLists from './check-lists' import CodeHighlighting from './code-highlighting' @@ -15,7 +11,6 @@ import FocusBlur from './focus-blur' import HoveringMenu from './hovering-menu' import Iframes from './iframes' import Images from './images' -import LargeDocument from './large-document' import Links from './links' import MarkdownPreview from './markdown-preview' import MarkdownShortcuts from './markdown-shortcuts' @@ -27,118 +22,84 @@ import ReadOnly from './read-only' import RichText from './rich-text' import Tables from './tables' -import DevPerformancePlain from './development/performance-plain' -import DevPerformanceRich from './development/performance-rich' +import DevLargeDocument from './dev/large-document' +import DevPerformancePlain from './dev/performance-plain' +import DevPerformanceRich from './dev/performance-rich' /** - * Perf. + * Environment. + * + * @type {String} */ -import Perf from 'react-addons-perf' - -window.Perf = Perf +const { NODE_ENV } = process.env /** - * Define our example app. + * Examples. * - * @type {Component} App + * @type {Array} + */ + +const EXAMPLES = [ + ['Rich Text', RichText, '/rich-text'], + ['Plain Text', PlainText, '/plain-text'], + ['Hovering Menu', HoveringMenu, '/hovering-menu'], + ['Links', Links, '/links'], + ['Images', Images, '/images'], + ['Embeds', Embeds, '/embeds'], + ['Emojis', Emojis, '/emojis'], + ['Markdown Preview', MarkdownPreview, '/markdown-preview'], + ['Markdown Shortcuts', MarkdownShortcuts, '/markdown-shortcuts'], + ['Check Lists', CheckLists, '/check-lists'], + ['Code Highlighting', CodeHighlighting, '/code-highlighting'], + ['Tables', Tables, '/tables'], + ['Paste HTML', PasteHtml, '/paste-html'], + ['Read-only', ReadOnly, '/read-only'], + ['RTL', RTL, '/rtl'], + ['Plugins', Plugins, '/plugins'], + ['Iframes', Iframes, '/iframes'], + ['Focus & Blur', FocusBlur, '/focus-blur'], + + ['DEV:Large', DevLargeDocument, '/dev-large', true], + ['DEV:Plain', DevPerformancePlain, '/dev-performance-plain', true], + ['DEV:Rich', DevPerformanceRich, '/dev-performance-rich', true], +] + +/** + * App. + * + * @type {Component} */ class App extends React.Component { - /** - * Render the example app. - * - * @return {Element} element - */ - render() { return (
- {this.renderTopBar()} - {this.renderTabBar()} - {this.renderExample()} -
- ) - } - - /** - * Render the top bar. - * - * @return {Element} element - */ - - renderTopBar() { - return ( -
- Slate Examples -
- - GitHub - - - Docs - +
+ Slate Examples +
+ GitHub + Docs +
+
+
+ {EXAMPLES.map(([ name, Component, path, isDev ]) => ( + (NODE_ENV != 'production' || !isDev) && ( + + {name} + + ) + ))} +
+
+ + {EXAMPLES.map(([ name, Component, path, isDev ]) => ( + + ))} + +
-
- ) - } - - /** - * Render the tab bar. - * - * @return {Element} element - */ - - renderTabBar() { - return ( -
- {this.renderTab('Rich Text', 'rich-text')} - {this.renderTab('Plain Text', 'plain-text')} - {this.renderTab('Hovering Menu', 'hovering-menu')} - {this.renderTab('Links', 'links')} - {this.renderTab('Images', 'images')} - {this.renderTab('Embeds', 'embeds')} - {this.renderTab('Emojis', 'emojis')} - {this.renderTab('Markdown Preview', 'markdown-preview')} - {this.renderTab('Markdown Shortcuts', 'markdown-shortcuts')} - {this.renderTab('Check Lists', 'check-lists')} - {this.renderTab('Code Highlighting', 'code-highlighting')} - {this.renderTab('Tables', 'tables')} - {this.renderTab('Paste HTML', 'paste-html')} - {this.renderTab('Read-only', 'read-only')} - {this.renderTab('RTL', 'rtl')} - {this.renderTab('Plugins', 'plugins')} - {this.renderTab('Iframes', 'iframes')} - {this.renderTab('Focus & Blur', 'focus-blur')} - {this.renderTab('Large Document', 'large')} -
- ) - } - - /** - * Render a tab with `name` and `slug`. - * - * @param {String} name - * @param {String} slug - */ - - renderTab(name, slug) { - return ( - {name} - ) - } - - /** - * Render the example. - * - * @return {Element} element - */ - - renderExample() { - return ( -
- {this.props.children}
) } @@ -151,36 +112,15 @@ class App extends React.Component { * @type {Element} router */ -const router = ( - - - +const router = - - - - - - - - - - - - - - - - - - - +/** + * Attach `Perf` when not in production. + */ - - - - -) +if (NODE_ENV != 'production') { + window.Perf = require('react-addons-perf') +} /** * Mount the router. diff --git a/package.json b/package.json index 5e57c6900..442b9b6a0 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "is-window": "^1.0.2", "keycode": "^2.1.2", "prop-types": "^15.5.8", - "react-portal": "^3.0.0", + "react-portal": "^3.1.0", "selection-is-backward": "^1.0.0", "type-of": "^2.0.1" }, @@ -64,8 +64,9 @@ "react-addons-perf": "^15.4.2", "react-dom": "^15.4.2", "react-frame-aware-selection-plugin": "^1.0.0", - "react-frame-component": "^0.6.2", + "react-frame-component": "^1.0.3", "react-router": "^2.5.1", + "react-router-dom": "^4.1.1", "read-metadata": "^1.0.0", "read-yaml-promise": "^1.0.2", "slate-auto-replace-text": "^0.3.0", diff --git a/yarn.lock b/yarn.lock index 65df5b720..a521532c1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2973,6 +2973,16 @@ history@^2.1.2: query-string "^3.0.0" warning "^2.0.0" +history@^4.5.1, history@^4.6.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/history/-/history-4.6.1.tgz#911cf8eb65728555a94f2b12780a0c531a14d2fd" + dependencies: + invariant "^2.2.1" + loose-envify "^1.2.0" + resolve-pathname "^2.0.0" + value-equal "^0.2.0" + warning "^3.0.0" + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -3177,7 +3187,7 @@ interpret@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" -invariant@^2.0.0, invariant@^2.2.0, invariant@^2.2.1: +invariant@^2.0.0, invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" dependencies: @@ -4099,7 +4109,7 @@ longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" dependencies: @@ -4730,6 +4740,12 @@ path-platform@~0.11.15: version "0.11.15" resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" +path-to-regexp@^1.5.3: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + dependencies: + isarray "0.0.1" + path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -4845,7 +4861,7 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prop-types@^15.5.7, prop-types@^15.5.8, prop-types@~15.5.7: +prop-types@^15.5.4, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@~15.5.7: version "15.5.8" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.8.tgz#6b7b2e141083be38c8595aa51fc55775c7199394" dependencies: @@ -4964,15 +4980,24 @@ react-frame-aware-selection-plugin@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/react-frame-aware-selection-plugin/-/react-frame-aware-selection-plugin-1.0.0.tgz#6a0d40efd56721179160159709f10ec70469c2ec" -react-frame-component@^0.6.2: - version "0.6.6" - resolved "https://registry.yarnpkg.com/react-frame-component/-/react-frame-component-0.6.6.tgz#f86ccab8d8c2feb4606cfda17ec65ca8ace84e36" - dependencies: - object-assign "^4.1.0" +react-frame-component@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/react-frame-component/-/react-frame-component-1.0.3.tgz#00a5deea81671927ea973954a0d8eb19ecc339de" -react-portal@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/react-portal/-/react-portal-3.0.0.tgz#9304fce836e8a3216b22588f8dc91b447728f0ae" +react-portal@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/react-portal/-/react-portal-3.1.0.tgz#865c44fb72a1da106c649206936559ce891ee899" + dependencies: + prop-types "^15.5.8" + +react-router-dom@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.1.1.tgz#3021ade1f2c160af97cf94e25594c5f294583025" + dependencies: + history "^4.5.1" + loose-envify "^1.3.1" + prop-types "^15.5.4" + react-router "^4.1.1" react-router@^2.5.1: version "2.8.1" @@ -4984,6 +5009,18 @@ react-router@^2.5.1: loose-envify "^1.2.0" warning "^3.0.0" +react-router@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.1.1.tgz#d448f3b7c1b429a6fbb03395099949c606b1fe95" + dependencies: + history "^4.6.0" + hoist-non-react-statics "^1.2.0" + invariant "^2.2.2" + loose-envify "^1.3.1" + path-to-regexp "^1.5.3" + prop-types "^15.5.4" + warning "^3.0.0" + react@^15.4.2: version "15.5.4" resolved "https://registry.yarnpkg.com/react/-/react-15.5.4.tgz#fa83eb01506ab237cdc1c8c3b1cea8de012bf047" @@ -5271,6 +5308,10 @@ resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" +resolve-pathname@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.1.0.tgz#e8358801b86b83b17560d4e3c382d7aef2100944" + resolve@1.1.7, resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" @@ -6073,6 +6114,10 @@ validate-npm-package-license@^3.0.1: spdx-correct "~1.0.0" spdx-expression-parse "~1.0.0" +value-equal@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.2.1.tgz#c220a304361fce6994dbbedaa3c7e1a1b895871d" + verror@1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"