diff --git a/.eslintrc b/.eslintrc
index d90ae86b..d61824f0 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -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",
{
diff --git a/app/components/Editor/Editor.js b/app/components/Editor/Editor.js
index b117ba74..d21f3934 100644
--- a/app/components/Editor/Editor.js
+++ b/app/components/Editor/Editor.js
@@ -7,8 +7,6 @@ import Embed from './Embed';
import embeds from '../../embeds';
type Props = {
- titlePlaceholder?: string,
- bodyPlaceholder?: string,
defaultValue?: string,
readOnly?: boolean,
disableEmbeds?: boolean,
diff --git a/app/components/Editor/Embed.js b/app/components/Editor/Embed.js
index 0b50cf61..74558adb 100644
--- a/app/components/Editor/Embed.js
+++ b/app/components/Editor/Embed.js
@@ -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}
>
+ {children}
);
}
diff --git a/app/scenes/Document/Document.js b/app/scenes/Document/Document.js
index 7c25988c..9f6d4936 100644
--- a/app/scenes/Document/Document.js
+++ b/app/scenes/Document/Document.js
@@ -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 {
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 {
{this.isEditing && (
@@ -365,8 +365,6 @@ class DocumentScene extends React.Component {
{
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 {editor.props.readOnly ? '' : text};
- };
-
render() {
const { readOnly } = this.props;
@@ -54,7 +35,7 @@ class DocumentEditor extends React.Component {
(this.editor = ref)}
- renderPlaceholder={this.renderPlaceholder}
+ plugins={plugins}
{...this.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;
diff --git a/app/scenes/Document/components/plugins.js b/app/scenes/Document/components/plugins.js
new file mode 100644
index 00000000..7d0d04e9
--- /dev/null
+++ b/app/scenes/Document/components/plugins.js
@@ -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;
+ },
+ }),
+];
diff --git a/app/scenes/Document/schema.js b/app/scenes/Document/schema.js
index 64a3be4d..87a2f1bf 100644
--- a/app/scenes/Document/schema.js
+++ b/app/scenes/Document/schema.js
@@ -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:
}
diff --git a/flow-typed/npm/@tommoor/slate-drop-or-paste-images_vx.x.x.js b/flow-typed/npm/@tommoor/slate-drop-or-paste-images_vx.x.x.js
deleted file mode 100644
index 2858bda9..00000000
--- a/flow-typed/npm/@tommoor/slate-drop-or-paste-images_vx.x.x.js
+++ /dev/null
@@ -1,67 +0,0 @@
-// flow-typed signature: 331ec8f8b563f7cbdee203ec29d377df
-// flow-typed version: <>/@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'>;
-}
diff --git a/flow-typed/npm/slate-drop-or-paste-images_vx.x.x.js b/flow-typed/npm/slate-drop-or-paste-images_vx.x.x.js
deleted file mode 100644
index 8efa0222..00000000
--- a/flow-typed/npm/slate-drop-or-paste-images_vx.x.x.js
+++ /dev/null
@@ -1,46 +0,0 @@
-// flow-typed signature: f847a556b96e1291a39558ffff3aa6b7
-// flow-typed version: <>/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'>;
-}
diff --git a/package.json b/package.json
index 992b5170..9ecc7aa2 100644
--- a/package.json
+++ b/package.json
@@ -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",
diff --git a/yarn.lock b/yarn.lock
index 58a66662..aebec204 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -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"