Upgrade Editor – Slate 0.44 / RME 8.0.0 (#863)

* Upgrade Slate

* Normalization

* Remove dupe dep

* Fixes placeholders

* Image uploading fixed

* Verbose but solid placeholder handling

* RME 8.0.0

* Fixes: Ability to delete embeds
This commit is contained in:
Tom Moor 2019-01-18 22:44:31 -08:00 committed by GitHub
parent 0be5aef1c6
commit d21dd710bb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 185 additions and 306 deletions

View File

@ -10,19 +10,7 @@
"rules": {
"eqeqeq": 2,
"no-unused-vars": 2,
// // Bring back after we remove CSS Modules 100%
// "import/order": "warn",
// Prettier automatically uses the least amount of parens possible, so this
// does more harm than good.
"no-mixed-operators": "off",
// Temporary fix for a failing import lint
"import/no-unresolved": [
"error",
{
"ignore": ["slate-drop-or-paste-images"]
}
],
// Flow
"flowtype/require-valid-file-annotation": [
2,
"always",
@ -32,7 +20,6 @@
],
"flowtype/space-after-type-colon": [2, "always"],
"flowtype/space-before-type-colon": [2, "never"],
// Enforce that code is formatted with prettier.
"prettier/prettier": [
"error",
{

View File

@ -7,8 +7,6 @@ import Embed from './Embed';
import embeds from '../../embeds';
type Props = {
titlePlaceholder?: string,
bodyPlaceholder?: string,
defaultValue?: string,
readOnly?: boolean,
disableEmbeds?: boolean,

View File

@ -26,7 +26,7 @@ export default class Embed extends React.Component<*> {
const result = this.matches;
if (!result) return null;
const { attributes, isSelected } = this.props;
const { attributes, isSelected, children } = this.props;
const { component, matches } = result;
const EmbedComponent = component;
@ -37,6 +37,7 @@ export default class Embed extends React.Component<*> {
{...attributes}
>
<EmbedComponent matches={matches} url={this.url} />
{children}
</Container>
);
}

View File

@ -49,7 +49,7 @@ You have unsaved changes.
Are you sure you want to discard them?
`;
const UPLOADING_WARNING = `
Image are still uploading.
Images are still uploading.
Are you sure you want to discard them?
`;
@ -240,7 +240,7 @@ class DocumentScene extends React.Component<Props> {
const document = this.document;
this.isDirty =
document && this.getEditorText().trim() !== document.text.trim();
!!document && this.getEditorText().trim() !== document.text.trim();
}, IS_DIRTY_DELAY);
onImageUploadStart = () => {
@ -340,11 +340,11 @@ class DocumentScene extends React.Component<Props> {
{this.isEditing && (
<React.Fragment>
<Prompt
when={this.isDirty || false}
when={this.isDirty && !this.isUploading}
message={DISCARD_CHANGES}
/>
<Prompt
when={this.isUploading || false}
when={this.isUploading && !this.isDirty}
message={UPLOADING_WARNING}
/>
</React.Fragment>
@ -365,8 +365,6 @@ class DocumentScene extends React.Component<Props> {
<MaxWidth column auto>
<Editor
key={embedsDisabled ? 'embeds-disabled' : 'embeds-enabled'}
titlePlaceholder="Start with a title…"
bodyPlaceholder="…the rest is your canvas"
defaultValue={revision ? revision.text : document.text}
pretitle={document.emoji}
disableEmbeds={embedsDisabled}

View File

@ -1,14 +1,12 @@
// @flow
import * as React from 'react';
import styled from 'styled-components';
import { Text } from 'slate';
import { Placeholder } from 'rich-markdown-editor';
import Editor from 'components/Editor';
import Placeholder from 'rich-markdown-editor/lib/components/Placeholder';
import ClickablePadding from 'components/ClickablePadding';
import plugins from './plugins';
type Props = {
titlePlaceholder?: string,
bodyPlaceholder?: string,
defaultValue?: string,
readOnly?: boolean,
};
@ -30,23 +28,6 @@ class DocumentEditor extends React.Component<Props> {
if (this.editor) this.editor.focusAtEnd();
};
renderPlaceholder = (props: *) => {
const { editor, node } = props;
if (editor.state.isComposing) return;
if (node.object !== 'block') return;
if (!Text.isTextList(node.nodes)) return;
if (node.text !== '') return;
const index = editor.value.document.getBlocks().indexOf(node);
if (index > 1) return;
const text =
index === 0 ? this.props.titlePlaceholder : this.props.bodyPlaceholder;
return <Placeholder>{editor.props.readOnly ? '' : text}</Placeholder>;
};
render() {
const { readOnly } = this.props;
@ -54,7 +35,7 @@ class DocumentEditor extends React.Component<Props> {
<React.Fragment>
<StyledEditor
ref={ref => (this.editor = ref)}
renderPlaceholder={this.renderPlaceholder}
plugins={plugins}
{...this.props}
/>
<ClickablePadding
@ -66,21 +47,15 @@ class DocumentEditor extends React.Component<Props> {
}
}
// additional styles account for placeholder nodes not always re-rendering
const StyledEditor = styled(Editor)`
display: flex;
flex: 0;
${Placeholder} {
visibility: hidden;
}
h1:first-of-type {
p {
${Placeholder} {
visibility: visible;
visibility: hidden;
}
}
p:nth-child(2):last-child {
${Placeholder} {
visibility: visible;

View File

@ -0,0 +1,27 @@
// @flow
import { Node, Editor } from 'slate';
import Placeholder from 'rich-markdown-editor/lib/plugins/Placeholder';
export default [
Placeholder({
placeholder: 'Start with a title…',
when: (editor: Editor, node: Node) => {
if (editor.readOnly) return false;
if (node.object !== 'block') return false;
if (node.type !== 'heading1') return false;
if (node.text !== '') return false;
if (editor.value.document.nodes.first() !== node) return false;
return true;
},
}),
Placeholder({
placeholder: '…the rest is your canvas',
when: (editor: Editor, node: Node) => {
if (editor.readOnly) return false;
if (node.object !== 'block') return false;
if (node.type !== 'paragraph') return false;
if (node.text !== '') return false;
return true;
},
}),
];

View File

@ -1,32 +1,39 @@
// @flow
import { cloneDeep } from 'lodash';
import { Block, Change, Node, Mark } from 'slate';
import { Block, SlateError, Editor } from 'slate';
import { schema as originalSchema } from 'rich-markdown-editor';
const schema = cloneDeep(originalSchema);
// add rules to the schema to ensure the first node is a heading
schema.document.nodes.unshift({ types: ['heading1'], min: 1, max: 1 });
schema.document.normalize = (
change: Change,
reason: string,
{
node,
child,
mark,
index,
}: { node: Node, mark?: Mark, child: Node, index: number }
) => {
switch (reason) {
case 'child_type_invalid': {
return change.setNodeByKey(
child.key,
index === 0 ? 'heading1' : 'paragraph'
schema.document.nodes.unshift({ match: { type: 'heading1' }, min: 1, max: 1 });
schema.document.normalize = (editor: Editor, error: SlateError) => {
switch (error.code) {
case 'child_max_invalid': {
return editor.setNodeByKey(
error.child.key,
error.index === 0 ? 'heading1' : 'paragraph'
);
}
case 'child_required': {
const block = Block.create(index === 0 ? 'heading1' : 'paragraph');
return change.insertNodeByKey(node.key, index, block);
case 'child_min_invalid': {
const missingTitle = error.index === 0;
const firstNode = editor.value.document.nodes.get(0);
if (!firstNode) {
editor.insertNodeByKey(error.node.key, 0, Block.create('heading1'));
} else {
editor.setNodeByKey(firstNode.key, { type: 'heading1' });
}
const secondNode = editor.value.document.nodes.get(1);
if (!secondNode) {
editor.insertNodeByKey(error.node.key, 1, Block.create('paragraph'));
} else {
editor.setNodeByKey(secondNode.key, { type: 'paragraph' });
}
if (missingTitle) setImmediate(() => editor.moveFocusToStartOfDocument());
return editor;
}
default:
}

View File

@ -1,67 +0,0 @@
// flow-typed signature: 331ec8f8b563f7cbdee203ec29d377df
// flow-typed version: <<STUB>>/@tommoor/slate-drop-or-paste-images_v^0.8.1/flow_v0.86.0
/**
* This is an autogenerated libdef stub for:
*
* '@tommoor/slate-drop-or-paste-images'
*
* Fill this stub out by replacing all the `any` types.
*
* Once filled out, we encourage you to share your work with the
* community by sending a pull request to:
* https://github.com/flowtype/flow-typed
*/
declare module '@tommoor/slate-drop-or-paste-images' {
declare module.exports: any;
}
/**
* We include stubs for each file inside this npm package in case you need to
* require those files directly. Feel free to delete any files that aren't
* needed.
*/
declare module '@tommoor/slate-drop-or-paste-images/dist/slate-drop-or-paste-images' {
declare module.exports: any;
}
declare module '@tommoor/slate-drop-or-paste-images/dist/slate-drop-or-paste-images.min' {
declare module.exports: any;
}
declare module '@tommoor/slate-drop-or-paste-images/lib/data-uri-to-blob' {
declare module.exports: any;
}
declare module '@tommoor/slate-drop-or-paste-images/lib/image-to-data-uri' {
declare module.exports: any;
}
declare module '@tommoor/slate-drop-or-paste-images/lib/index' {
declare module.exports: any;
}
declare module '@tommoor/slate-drop-or-paste-images/lib/load-image-file' {
declare module.exports: any;
}
// Filename aliases
declare module '@tommoor/slate-drop-or-paste-images/dist/slate-drop-or-paste-images.js' {
declare module.exports: $Exports<'@tommoor/slate-drop-or-paste-images/dist/slate-drop-or-paste-images'>;
}
declare module '@tommoor/slate-drop-or-paste-images/dist/slate-drop-or-paste-images.min.js' {
declare module.exports: $Exports<'@tommoor/slate-drop-or-paste-images/dist/slate-drop-or-paste-images.min'>;
}
declare module '@tommoor/slate-drop-or-paste-images/lib/data-uri-to-blob.js' {
declare module.exports: $Exports<'@tommoor/slate-drop-or-paste-images/lib/data-uri-to-blob'>;
}
declare module '@tommoor/slate-drop-or-paste-images/lib/image-to-data-uri.js' {
declare module.exports: $Exports<'@tommoor/slate-drop-or-paste-images/lib/image-to-data-uri'>;
}
declare module '@tommoor/slate-drop-or-paste-images/lib/index.js' {
declare module.exports: $Exports<'@tommoor/slate-drop-or-paste-images/lib/index'>;
}
declare module '@tommoor/slate-drop-or-paste-images/lib/load-image-file.js' {
declare module.exports: $Exports<'@tommoor/slate-drop-or-paste-images/lib/load-image-file'>;
}

View File

@ -1,46 +0,0 @@
// flow-typed signature: f847a556b96e1291a39558ffff3aa6b7
// flow-typed version: <<STUB>>/slate-drop-or-paste-images_v^0.5.0/flow_v0.49.1
/**
* This is an autogenerated libdef stub for:
*
* 'slate-drop-or-paste-images'
*
* Fill this stub out by replacing all the `any` types.
*
* Once filled out, we encourage you to share your work with the
* community by sending a pull request to:
* https://github.com/flowtype/flow-typed
*/
declare module 'slate-drop-or-paste-images' {
declare module.exports: any;
}
/**
* We include stubs for each file inside this npm package in case you need to
* require those files directly. Feel free to delete any files that aren't
* needed.
*/
declare module 'slate-drop-or-paste-images/dist/image-to-data-uri' {
declare module.exports: any;
}
declare module 'slate-drop-or-paste-images/dist/index' {
declare module.exports: any;
}
declare module 'slate-drop-or-paste-images/dist/load-image-file' {
declare module.exports: any;
}
// Filename aliases
declare module 'slate-drop-or-paste-images/dist/image-to-data-uri.js' {
declare module.exports: $Exports<'slate-drop-or-paste-images/dist/image-to-data-uri'>;
}
declare module 'slate-drop-or-paste-images/dist/index.js' {
declare module.exports: $Exports<'slate-drop-or-paste-images/dist/index'>;
}
declare module 'slate-drop-or-paste-images/dist/load-image-file.js' {
declare module.exports: $Exports<'slate-drop-or-paste-images/dist/load-image-file'>;
}

View File

@ -65,7 +65,6 @@
},
"dependencies": {
"@tommoor/remove-markdown": "0.3.1",
"@tommoor/slate-drop-or-paste-images": "^0.8.1",
"autotrack": "^2.4.1",
"aws-sdk": "^2.135.0",
"babel-core": "^6.24.1",
@ -158,7 +157,7 @@
"react-waypoint": "^7.3.1",
"redis": "^2.6.2",
"redis-lock": "^0.1.0",
"rich-markdown-editor": "^7.0.0-2",
"rich-markdown-editor": "^8.0.0",
"safestart": "1.1.0",
"sequelize": "4.28.6",
"sequelize-cli": "^2.7.0",

238
yarn.lock
View File

@ -91,18 +91,6 @@
version "0.3.1"
resolved "https://registry.yarnpkg.com/@tommoor/remove-markdown/-/remove-markdown-0.3.1.tgz#25e7b845d52fcfadf149a3a6a468a931fee7619b"
"@tommoor/slate-drop-or-paste-images@^0.8.1":
version "0.8.1"
resolved "https://registry.npmjs.org/@tommoor/slate-drop-or-paste-images/-/slate-drop-or-paste-images-0.8.1.tgz#4d94b5c1dd2de109546ee1f38a1e4a18df078c1e"
dependencies:
es6-promise "^4.0.5"
image-to-data-uri "^1.0.0"
is-data-uri "^0.1.0"
is-image "^1.0.1"
is-url "^1.2.2"
mime-types "^2.1.11"
slate-dev-logger "^0.1.0"
"@types/geojson@^1.0.0":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-1.0.3.tgz#fbcf7fa5eb6dd108d51385cc6987ec1f24214523"
@ -115,6 +103,23 @@
version "6.0.88"
resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.88.tgz#f618f11a944f6a18d92b5c472028728a3e3d4b66"
"@wikifactory/slate-edit-blockquote@^0.7.1":
version "0.7.1"
resolved "https://registry.yarnpkg.com/@wikifactory/slate-edit-blockquote/-/slate-edit-blockquote-0.7.1.tgz#dffb4a3a69dfe6dc35198465be92daa999533357"
"@wikifactory/slate-edit-code@^0.16.0":
version "0.16.0"
resolved "https://registry.yarnpkg.com/@wikifactory/slate-edit-code/-/slate-edit-code-0.16.0.tgz#226cb4f064a97800fd6bc50b94d86bb913ad8799"
dependencies:
detect-indent "^4.0.0"
detect-newline "^2.1.0"
ends-with "^0.2.0"
is-hotkey "^0.1.1"
"@wikifactory/slate-trailing-block@^0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@wikifactory/slate-trailing-block/-/slate-trailing-block-0.6.0.tgz#7cfba15707f55ea41583e03e809c8f3cc9b8b77f"
abab@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d"
@ -2528,7 +2533,7 @@ debounce@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.0.2.tgz#503cc674d8d7f737099664fb75ddbd36b9626dc6"
debug@*, debug@2.6.8, debug@^2.2.0, debug@^2.3.2, debug@^2.6.1, debug@^2.6.3, debug@^2.6.8:
debug@*, debug@2.6.8, debug@^2.2.0, debug@^2.6.1, debug@^2.6.3, debug@^2.6.8:
version "2.6.8"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
dependencies:
@ -4098,6 +4103,14 @@ glogg@^1.0.0:
dependencies:
sparkles "^1.0.0"
golery-slate-edit-list@^0.18.0-golery.4:
version "0.18.0-golery.4"
resolved "https://registry.yarnpkg.com/golery-slate-edit-list/-/golery-slate-edit-list-0.18.0-golery.4.tgz#4452588b0571ece63bcf62e5d0dbd0018cbc2a12"
golery-slate-prism@0.6.0-golery.2:
version "0.6.0-golery.2"
resolved "https://registry.yarnpkg.com/golery-slate-prism/-/golery-slate-prism-0.6.0-golery.2.tgz#d56ae8f2dc8056c752da18cb06298dbf84a3d1b4"
good-listener@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50"
@ -4890,10 +4903,6 @@ is-dotfile@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
is-empty@^1.0.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/is-empty/-/is-empty-1.2.0.tgz#de9bb5b278738a05a0b09a57e1fb4d4a341a9f6b"
is-equal-shallow@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
@ -4938,6 +4947,10 @@ is-hexadecimal@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.1.tgz#6e084bbc92061fbb0971ec58b6ce6d404e24da69"
is-hotkey@0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.1.4.tgz#c34d2c85d6ec8d09a871dcf71931c8067a824c7d"
is-hotkey@^0.1.1:
version "0.1.1"
resolved "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.1.1.tgz#b279a2fd108391be9aa93c6cb317f50357da549a"
@ -5720,10 +5733,6 @@ jws@^3.0.0, jws@^3.1.4:
jwa "^1.1.4"
safe-buffer "^5.0.1"
keycode@^2.1.2:
version "2.1.9"
resolved "https://registry.npmjs.org/keycode/-/keycode-2.1.9.tgz#964a23c54e4889405b4861a5c9f0480d45141dfa"
keygrip@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.0.2.tgz#ad3297c557069dea8bcfe7a4fa491b75c5ddeb91"
@ -6619,7 +6628,7 @@ miller-rabin@^4.0.0:
version "1.30.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
mime-types@^2.0.7, mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.6, mime-types@~2.1.7, mime-types@~2.1.9:
mime-types@^2.0.7, mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.6, mime-types@~2.1.7, mime-types@~2.1.9:
version "2.1.17"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
dependencies:
@ -7307,10 +7316,6 @@ osenv@^0.1.0, osenv@^0.1.4:
os-homedir "^1.0.0"
os-tmpdir "^1.0.0"
outline-icons@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/outline-icons/-/outline-icons-1.0.3.tgz#f0928a8bbc7e7ff4ea6762eee8fb2995d477941e"
outline-icons@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/outline-icons/-/outline-icons-1.6.0.tgz#6c7897d354e6bd77ca5498cd3a989b8cb9482574"
@ -7932,9 +7937,9 @@ pretty-hrtime@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
prismjs@^1.13.0:
version "1.13.0"
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.13.0.tgz#edcc14a90bbd72a03e5ffd2bab81a04c79a607a6"
prismjs@^1.15.0:
version "1.15.0"
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.15.0.tgz#8801d332e472091ba8def94976c8877ad60398d9"
optionalDependencies:
clipboard "^2.0.0"
@ -8252,12 +8257,6 @@ react-modal@^3.1.2:
exenv "^1.2.0"
prop-types "^15.5.10"
react-portal@^3.1.0:
version "3.2.0"
resolved "https://registry.npmjs.org/react-portal/-/react-portal-3.2.0.tgz#4224e19b2b05d5cbe730a7ba0e34ec7585de0043"
dependencies:
prop-types "^15.5.8"
react-portal@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/react-portal/-/react-portal-4.0.0.tgz#d327b495dc72a305e8a3e351f212a2d94677f913"
@ -8804,35 +8803,38 @@ retry-axios@0.3.2, retry-axios@^0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/retry-axios/-/retry-axios-0.3.2.tgz#5757c80f585b4cc4c4986aa2ffd47a60c6d35e13"
rich-markdown-editor@^7.0.0-2:
version "7.0.0-2"
resolved "https://registry.yarnpkg.com/rich-markdown-editor/-/rich-markdown-editor-7.0.0-2.tgz#cba247bd13be3505e9ceec69643db27bfc20cfa3"
rich-markdown-editor@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/rich-markdown-editor/-/rich-markdown-editor-8.0.0.tgz#d11a7b81e819bcef1680b60359b8761baeadbb01"
dependencies:
"@tommoor/slate-drop-or-paste-images" "^0.8.1"
"@wikifactory/slate-edit-blockquote" "^0.7.1"
"@wikifactory/slate-edit-code" "^0.16.0"
"@wikifactory/slate-trailing-block" "^0.6.0"
babel-plugin-transform-async-to-generator "^6.24.1"
babel-plugin-transform-runtime "^6.23.0"
boundless-arrow-key-navigation "^1.1.0"
copy-to-clipboard "^3.0.8"
eslint-plugin-flowtype "^2.46.1"
eslint-plugin-prettier "^2.6.0"
golery-slate-edit-list "^0.18.0-golery.4"
golery-slate-prism "0.6.0-golery.2"
immutable "^3.8.2"
lodash "^4.17.11"
outline-icons "^1.0.0"
outline-icons "^1.6.0"
prismjs "^1.15.0"
react "^16.6.0"
react-dom "^16.6.0"
react-keydown "^1.9.7"
react-medium-image-zoom "^3.0.10"
react-portal "^4.1.4"
slate "^0.34.5"
slate-collapse-on-escape "^0.6.1"
slate-edit-code "^0.15.5"
slate-edit-list "^0.11.3"
slate "^0.44.0"
slate-collapse-on-escape "^0.8.1"
slate-drop-or-paste-images "^0.9.1"
slate-md-serializer "^5.2.2"
slate-paste-linkify "^0.5.1"
slate-plain-serializer "0.5.4"
slate-prism "^0.5.0"
slate-react "^0.12.3"
slate-trailing-block "^0.5.0"
slate-paste-linkify "^0.7.0"
slate-plain-serializer "0.6.33"
slate-react "^0.21.15"
slate-schema-violations "^0.1.39"
slugify "^1.3.0"
styled-components "4.0.3"
@ -9166,38 +9168,45 @@ slash@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
slate-base64-serializer@^0.2.28:
version "0.2.28"
resolved "https://registry.yarnpkg.com/slate-base64-serializer/-/slate-base64-serializer-0.2.28.tgz#141a93654b58203e82ee24c4068107a67b72aff8"
slate-base64-serializer@^0.2.94:
version "0.2.94"
resolved "https://registry.yarnpkg.com/slate-base64-serializer/-/slate-base64-serializer-0.2.94.tgz#b908c3af481b9a0ead78f313653414c4b2b4b2d5"
dependencies:
isomorphic-base64 "^1.0.2"
slate-collapse-on-escape@^0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/slate-collapse-on-escape/-/slate-collapse-on-escape-0.6.1.tgz#404da2e2a1773fc140c7a8230e4ef50b0459d1ed"
slate-collapse-on-escape@^0.8.1:
version "0.8.1"
resolved "https://registry.yarnpkg.com/slate-collapse-on-escape/-/slate-collapse-on-escape-0.8.1.tgz#a264c6c407cdf4bbe5013aae6c6571d613b58713"
dependencies:
to-pascal-case "^1.0.0"
slate-dev-environment@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/slate-dev-environment/-/slate-dev-environment-0.2.1.tgz#760f500f18af0dc61bcae39eec4160c420fea537"
dependencies:
is-in-browser "^1.1.3"
slate-dev-logger@^0.1.0:
version "0.1.36"
resolved "https://registry.npmjs.org/slate-dev-logger/-/slate-dev-logger-0.1.36.tgz#ecdb37dbf944dfc742bab23b6a20d5a0472db95e"
slate-dev-logger@^0.1.39:
version "0.1.39"
resolved "https://registry.yarnpkg.com/slate-dev-logger/-/slate-dev-logger-0.1.39.tgz#744a69b85034244713e6de51483af5713c345af4"
slate-edit-code@^0.15.5:
version "0.15.5"
resolved "https://registry.yarnpkg.com/slate-edit-code/-/slate-edit-code-0.15.5.tgz#9b64ad7150a6eaaa8212d7a2200e1c6ae2332b63"
slate-drop-or-paste-images@^0.9.1:
version "0.9.1"
resolved "https://registry.yarnpkg.com/slate-drop-or-paste-images/-/slate-drop-or-paste-images-0.9.1.tgz#bc3b171ff63e85af91972d79f0751616a00e6ad4"
dependencies:
detect-indent "^4.0.0"
detect-newline "^2.1.0"
ends-with "^0.2.0"
is-hotkey "^0.1.1"
es6-promise "^4.0.5"
image-to-data-uri "^1.0.0"
is-data-uri "^0.1.0"
is-image "^1.0.1"
is-url "^1.2.2"
slate-dev-logger "^0.1.0"
slate-edit-list@^0.11.3:
version "0.11.3"
resolved "https://registry.yarnpkg.com/slate-edit-list/-/slate-edit-list-0.11.3.tgz#d27ff2ff93a83bef49131a6a44b87a9558c9d44c"
slate-hotkeys@^0.2.8:
version "0.2.8"
resolved "https://registry.yarnpkg.com/slate-hotkeys/-/slate-hotkeys-0.2.8.tgz#7fecf732c512c860113f3f1a6dc1015df9d130a7"
dependencies:
is-hotkey "0.1.4"
slate-dev-environment "^0.2.1"
slate-md-serializer@^5.2.2:
version "5.2.2"
@ -9205,77 +9214,60 @@ slate-md-serializer@^5.2.2:
dependencies:
hashtag-regex "^2.0.0"
slate-paste-linkify@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/slate-paste-linkify/-/slate-paste-linkify-0.5.1.tgz#6988a76f121fd1fa26fed06a93892f91208c37df"
slate-paste-linkify@^0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/slate-paste-linkify/-/slate-paste-linkify-0.7.0.tgz#42adf3a3b40c88086c201666a5b203140da5a6ae"
dependencies:
is-url "^1.2.2"
to-pascal-case "^1.0.0"
slate-plain-serializer@0.5.4:
version "0.5.4"
resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.5.4.tgz#ba5a1713a50e6e9020e080c10e5869f38820dc96"
dependencies:
slate-dev-logger "^0.1.39"
slate-plain-serializer@0.6.33, slate-plain-serializer@^0.6.33:
version "0.6.33"
resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.6.33.tgz#b731ecd8757f0d402ab36823f4be641c3f11a229"
slate-plain-serializer@^0.5.9:
version "0.5.9"
resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.5.9.tgz#dc6ac5d10c46cac1bfa8d9af36f5e76d766fd57e"
dependencies:
slate-dev-logger "^0.1.39"
slate-prop-types@^0.5.24:
version "0.5.24"
resolved "https://registry.yarnpkg.com/slate-prop-types/-/slate-prop-types-0.5.24.tgz#ecff6584e250d88ff8384ff2bd820eec7d296913"
slate-prism@^0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/slate-prism/-/slate-prism-0.5.0.tgz#009eb74fea38ad76c64db67def7ea0884917adec"
dependencies:
prismjs "^1.13.0"
slate-react-placeholder@^0.1.12:
version "0.1.12"
resolved "https://registry.yarnpkg.com/slate-react-placeholder/-/slate-react-placeholder-0.1.12.tgz#d09936acf1570f9178d3a40a56ff0616f67e1fd7"
slate-prop-types@^0.4.26:
version "0.4.26"
resolved "https://registry.yarnpkg.com/slate-prop-types/-/slate-prop-types-0.4.26.tgz#72ef2b6fded5893a2a0a273f679b92c4eee99e73"
slate-react@^0.21.15:
version "0.21.15"
resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.21.15.tgz#f616f59f2fd91755704c21512972b87f3df76a9e"
dependencies:
slate-dev-logger "^0.1.39"
slate-react@^0.12.3:
version "0.12.3"
resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.12.3.tgz#3d0739af6930ae2a178fa90da480d5106ba1c504"
dependencies:
debug "^2.3.2"
debug "^3.1.0"
get-window "^1.1.1"
is-hotkey "^0.1.1"
is-in-browser "^1.1.3"
is-window "^1.0.2"
keycode "^2.1.2"
lodash "^4.1.1"
memoize-one "^4.0.0"
prop-types "^15.5.8"
react-immutable-proptypes "^2.1.0"
react-portal "^3.1.0"
selection-is-backward "^1.0.0"
slate-base64-serializer "^0.2.28"
slate-dev-logger "^0.1.39"
slate-plain-serializer "^0.5.9"
slate-prop-types "^0.4.26"
slate-base64-serializer "^0.2.94"
slate-dev-environment "^0.2.1"
slate-hotkeys "^0.2.8"
slate-plain-serializer "^0.6.33"
slate-prop-types "^0.5.24"
slate-react-placeholder "^0.1.12"
tiny-invariant "^1.0.1"
tiny-warning "^0.0.3"
slate-schema-violations@^0.1.18:
version "0.1.18"
resolved "https://registry.yarnpkg.com/slate-schema-violations/-/slate-schema-violations-0.1.18.tgz#bc760e17dab85a613cd9a5399b98cbf867db0eb7"
slate-schema-violations@^0.1.39:
version "0.1.39"
resolved "https://registry.yarnpkg.com/slate-schema-violations/-/slate-schema-violations-0.1.39.tgz#854ab5624136419cef4c803b1823acabe11f1c15"
slate-trailing-block@^0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/slate-trailing-block/-/slate-trailing-block-0.5.0.tgz#cedb4f2975f1167e0fb9d259ce1252b82f4d74ff"
slate@^0.34.5:
version "0.34.5"
resolved "https://registry.yarnpkg.com/slate/-/slate-0.34.5.tgz#4bc30dc300c924193d42371a7afcc168676f2798"
slate@^0.44.0:
version "0.44.9"
resolved "https://registry.yarnpkg.com/slate/-/slate-0.44.9.tgz#0fc9ba9f08b379b86c4c0a1ddebbe6bf28aa3c4b"
dependencies:
debug "^3.1.0"
direction "^0.1.5"
esrever "^0.2.0"
is-empty "^1.0.0"
is-plain-object "^2.0.4"
lodash "^4.17.4"
slate-dev-logger "^0.1.39"
slate-schema-violations "^0.1.18"
tiny-invariant "^1.0.1"
tiny-warning "^0.0.3"
type-of "^2.0.1"
slice-ansi@0.0.4:
@ -9876,6 +9868,14 @@ tiny-emitter@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.0.2.tgz#82d27468aca5ade8e5fd1e6d22b57dd43ebdfb7c"
tiny-invariant@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.3.tgz#91efaaa0269ccb6271f0296aeedb05fc3e067b7a"
tiny-warning@^0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-0.0.3.tgz#1807eb4c5f81784a6354d58ea1d5024f18c6c81f"
title-case@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa"