From 2ab95686fb7953f87fa5fc725a845adeafa33502 Mon Sep 17 00:00:00 2001 From: Shawn Erquhart Date: Thu, 16 Nov 2017 09:51:01 -0500 Subject: [PATCH 1/9] Update to Slate 0.26.0 --- package.json | 4 ++-- yarn.lock | 55 ++++++++++++++++++++++++++++++++++------------------ 2 files changed, 38 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index d196666b3069..1eb8d36970b0 100644 --- a/package.json +++ b/package.json @@ -176,11 +176,11 @@ "remark-stringify": "^3.0.1", "sanitize-filename": "^1.6.1", "semaphore": "^1.0.5", - "slate": "^0.25.0", + "slate": "^0.26.0", "slate-edit-list": "^0.8.0", "slate-edit-table": "^0.11.0", "slate-plain-serializer": "^0.1.10", - "slate-react": "^0.1.10", + "slate-react": "^0.3.0", "slate-soft-break": "^0.4.0", "slug": "^0.9.1", "toml-j0.4": "^1.1.1", diff --git a/yarn.lock b/yarn.lock index 1da45e995069..e6ced25ae158 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4663,6 +4663,10 @@ isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" +isomorphic-base64@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/isomorphic-base64/-/isomorphic-base64-1.0.2.tgz#f426aae82569ba8a4ec5ca73ad21a44ab1ee7803" + isomorphic-fetch@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" @@ -8517,14 +8521,20 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" -slate-base64-serializer@^0.1.9: - version "0.1.10" - resolved "https://registry.yarnpkg.com/slate-base64-serializer/-/slate-base64-serializer-0.1.10.tgz#5fb7fe6de52ef56d2619dc34f8960fe81a866bfb" +slate-base64-serializer@^0.1.13: + version "0.1.22" + resolved "https://registry.yarnpkg.com/slate-base64-serializer/-/slate-base64-serializer-0.1.22.tgz#548e589178c75653004168004aad152f1976dd35" + dependencies: + isomorphic-base64 "^1.0.2" -slate-dev-logger@^0.1.10, slate-dev-logger@^0.1.11: +slate-dev-logger@^0.1.11: version "0.1.11" resolved "https://registry.yarnpkg.com/slate-dev-logger/-/slate-dev-logger-0.1.11.tgz#740fd2e23b1dda1f4629419fc914eea91272b6f0" +slate-dev-logger@^0.1.14: + version "0.1.33" + resolved "https://registry.yarnpkg.com/slate-dev-logger/-/slate-dev-logger-0.1.33.tgz#b4a4272255c2d598e5f26db5d85c58435357755f" + slate-edit-list@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/slate-edit-list/-/slate-edit-list-0.8.0.tgz#3f8904fc9cb308d3c614efa5586953a6de6a4608" @@ -8539,15 +8549,21 @@ slate-plain-serializer@^0.1.10: dependencies: slate-dev-logger "^0.1.11" -slate-prop-types@^0.1.9: - version "0.1.10" - resolved "https://registry.yarnpkg.com/slate-prop-types/-/slate-prop-types-0.1.10.tgz#a0c21d880ae72cb7f38a0d0fb025b7db2fa5d5b1" +slate-plain-serializer@^0.1.14: + version "0.1.14" + resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.1.14.tgz#19f6cd9a47d2e7db93d928a8adae10ceb779e743" dependencies: - slate-dev-logger "^0.1.11" + slate-dev-logger "^0.1.14" -slate-react@^0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.1.10.tgz#1d5886fb89bc9f03cb5cf15b74c3e8b9600d52e7" +slate-prop-types@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/slate-prop-types/-/slate-prop-types-0.1.13.tgz#2045d73b12a2fe7205bd6e8792ff1c5b06420fef" + dependencies: + slate-dev-logger "^0.1.14" + +slate-react@^0.3.0: + version "0.3.4" + resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.3.4.tgz#45b34e1909cd86651b718d0d3bb1e35654259e89" dependencies: debug "^2.3.2" get-window "^1.1.1" @@ -8555,20 +8571,21 @@ slate-react@^0.1.10: is-window "^1.0.2" keycode "^2.1.2" 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.1.9" - slate-dev-logger "^0.1.10" - slate-plain-serializer "^0.1.10" - slate-prop-types "^0.1.9" + slate-base64-serializer "^0.1.13" + slate-dev-logger "^0.1.14" + slate-plain-serializer "^0.1.14" + slate-prop-types "^0.1.13" slate-soft-break@^0.4.0: version "0.4.3" resolved "https://registry.yarnpkg.com/slate-soft-break/-/slate-soft-break-0.4.3.tgz#e3a9279a9b92ca173915467f5fbd359f739a7e96" -slate@^0.25.0: - version "0.25.3" - resolved "https://registry.yarnpkg.com/slate/-/slate-0.25.3.tgz#d232ee168135269f10fbd3534307560e8ebf38b6" +slate@^0.26.0: + version "0.26.1" + resolved "https://registry.yarnpkg.com/slate/-/slate-0.26.1.tgz#3f71712b2f5eb30934caebd199d93acc0b11a458" dependencies: debug "^2.3.2" direction "^0.1.5" @@ -8577,7 +8594,7 @@ slate@^0.25.0: is-empty "^1.0.0" is-plain-object "^2.0.4" lodash "^4.17.4" - slate-dev-logger "^0.1.11" + slate-dev-logger "^0.1.14" type-of "^2.0.1" slice-ansi@0.0.4: From d5ecb93f3bc3f52969238af2e57b5ff74a07ebee Mon Sep 17 00:00:00 2001 From: Shawn Erquhart Date: Thu, 16 Nov 2017 10:15:45 -0500 Subject: [PATCH 2/9] Update Slate to 0.27.0 --- package.json | 10 +-- .../MarkdownControl/VisualEditor/keys.js | 4 +- .../Markdown/serializers/remarkSlate.js | 22 +++---- .../Markdown/serializers/slateRemark.js | 52 +++++++-------- yarn.lock | 64 ++++++++----------- 5 files changed, 71 insertions(+), 81 deletions(-) diff --git a/package.json b/package.json index 1eb8d36970b0..3e368c5b2912 100644 --- a/package.json +++ b/package.json @@ -176,11 +176,11 @@ "remark-stringify": "^3.0.1", "sanitize-filename": "^1.6.1", "semaphore": "^1.0.5", - "slate": "^0.26.0", - "slate-edit-list": "^0.8.0", - "slate-edit-table": "^0.11.0", - "slate-plain-serializer": "^0.1.10", - "slate-react": "^0.3.0", + "slate": "^0.27.0", + "slate-edit-list": "^0.9.0", + "slate-edit-table": "^0.12.0", + "slate-plain-serializer": "^0.2.0", + "slate-react": "^0.4.0", "slate-soft-break": "^0.4.0", "slug": "^0.9.1", "toml-j0.4": "^1.1.1", diff --git a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/keys.js b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/keys.js index aa500dc18a89..c0d72aaf5e2f 100644 --- a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/keys.js +++ b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/keys.js @@ -44,12 +44,12 @@ function onKeyDown(e, data, change) { /** * If "Enter" is pressed while a single void block is selected, a new * paragraph should be added above or below it, and the current selection - * should be collapsed to the start of the new paragraph. + * (range) should be collapsed to the start of the new paragraph. * * If the selected block is the first block in the document, create the * new block above it. If not, create the new block below it. */ - const { document: doc, selection, anchorBlock, focusBlock } = change.state; + const { document: doc, range, anchorBlock, focusBlock } = change.state; const singleBlockSelected = anchorBlock === focusBlock; if (!singleBlockSelected || !focusBlock.isVoid) return; diff --git a/src/components/Widgets/Markdown/serializers/remarkSlate.js b/src/components/Widgets/Markdown/serializers/remarkSlate.js index 210bc13cd6ef..4e0c2ddfce48 100644 --- a/src/components/Widgets/Markdown/serializers/remarkSlate.js +++ b/src/components/Widgets/Markdown/serializers/remarkSlate.js @@ -94,8 +94,8 @@ function createInline(type, props = {}, nodes) { */ function createText(value, data) { const node = { kind: 'text', data }; - const ranges = isArray(value) ? value : [{ text: value }]; - return { ...node, ranges }; + const leaves = isArray(value) ? value : [{ text: value }]; + return { ...node, leaves }; } function processMarkNode(node, parentMarks = []) { @@ -110,8 +110,8 @@ function processMarkNode(node, parentMarks = []) { switch (childNode.type) { /** * If a text node is a direct child of the current node, it should be - * set aside as a range, and all marks that have been collected in the - * `marks` array should apply to that specific range. + * set aside as a leaf, and all marks that have been collected in the + * `marks` array should apply to that specific leaf. */ case 'html': case 'text': @@ -129,8 +129,8 @@ function processMarkNode(node, parentMarks = []) { /** * Process nested style nodes. The recursive results should be pushed into - * the ranges array. This way, every MDAST nested text structure becomes a - * flat array of ranges that can serve as the value of a single Slate Raw + * the leaves array. This way, every MDAST nested text structure becomes a + * flat array of leaves that can serve as the value of a single Slate Raw * text node. */ case 'strong': @@ -155,8 +155,8 @@ function convertMarkNode(node) { const convertedSlateNodes = slateNodes.reduce((acc, node) => { const lastConvertedNode = last(acc); - if (node.text && lastConvertedNode && lastConvertedNode.ranges) { - lastConvertedNode.ranges.push(node); + if (node.text && lastConvertedNode && lastConvertedNode.leaves) { + lastConvertedNode.leaves.push(node); } else if (node.text) { acc.push(createText([node])); @@ -232,16 +232,16 @@ function convertNode(node, nodes) { * Inline Code * * Inline code nodes from an MDAST are represented in our Slate schema as - * text nodes with a "code" mark. We manually create the "range" containing + * text nodes with a "code" mark. We manually create the "leaf" containing * the inline code value and a "code" mark, and place it in an array for use * as a Slate text node's children array. */ case 'inlineCode': { - const range = { + const leaf = { text: node.value, marks: [{ type: 'code' }], }; - return createText([ range ]); + return createText([ leaf ]); } /** diff --git a/src/components/Widgets/Markdown/serializers/slateRemark.js b/src/components/Widgets/Markdown/serializers/slateRemark.js index fc59af73c534..a4e6c0debc74 100644 --- a/src/components/Widgets/Markdown/serializers/slateRemark.js +++ b/src/components/Widgets/Markdown/serializers/slateRemark.js @@ -85,7 +85,7 @@ function transform(node) { /** - * Includes inline nodes as ranges in adjacent text nodes where appropriate, so + * Includes inline nodes as leaves in adjacent text nodes where appropriate, so * that mark node combining logic can apply to both text and inline nodes. This * is necessary because Slate doesn't allow inline nodes to have marks while * inline nodes in MDAST may be nested within mark nodes. Treating them as if @@ -94,23 +94,23 @@ function transform(node) { function combineTextAndInline(nodes) { return nodes.reduce((acc, node, idx, nodes) => { const prevNode = last(acc); - const prevNodeRanges = get(prevNode, 'ranges'); + const prevNodeLeaves = get(prevNode, 'leaves'); const data = node.data || {}; /** - * If the previous node has ranges and the current node has marks in data + * If the previous node has leaves and the current node has marks in data * (only happens when we place them on inline nodes here in the parser), or - * the current node also has ranges (because the previous node was - * originally an inline node that we've already squashed into a range) + * the current node also has leaves (because the previous node was + * originally an inline node that we've already squashed into a leaf) * combine the current node into the previous. */ - if (!isEmpty(prevNodeRanges) && !isEmpty(data.marks)) { - prevNodeRanges.push({ node, marks: data.marks }); + if (!isEmpty(prevNodeLeaves) && !isEmpty(data.marks)) { + prevNodeLeaves.push({ node, marks: data.marks }); return acc; } - if (!isEmpty(prevNodeRanges) && !isEmpty(node.ranges)) { - prevNode.ranges = prevNodeRanges.concat(node.ranges); + if (!isEmpty(prevNodeLeaves) && !isEmpty(node.leaves)) { + prevNode.leaves = prevNodeLeaves.concat(node.leaves); return acc; } @@ -125,10 +125,10 @@ function combineTextAndInline(nodes) { } /** - * Convert remaining inline nodes to standalone text nodes with ranges. + * Convert remaining inline nodes to standalone text nodes with leaves. */ if (node.kind === 'inline') { - acc.push({ kind: 'text', ranges: [{ node, marks: data.marks }] }); + acc.push({ kind: 'text', leaves: [{ node, marks: data.marks }] }); return acc; } @@ -177,23 +177,23 @@ function wrapTextWithMarks(textNode, markTypes) { * Slate text nodes without marks often simply have a "text" property with * the value. In this case the conversion to MDAST is simple. If a Slate * text node does not have a "text" property, it will instead have a - * "ranges" property containing an array of objects, each with an array of + * "leaves" property containing an array of objects, each with an array of * marks, such as "bold" or "italic", along with a "text" property. * * MDAST instead expresses such marks in a nested structure, with individual * nodes for each mark type nested until the deepest mark node, which will * contain the text node. * - * To convert a Slate text node's marks to MDAST, we treat each "range" as a + * To convert a Slate text node's marks to MDAST, we treat each "leaf" as a * separate text node, convert the text node itself to an MDAST text node, * and then recursively wrap the text node for each mark, collecting the results - * of each range in a single array of child nodes. + * of each leaf in a single array of child nodes. * * For example, this Slate text node: * * { * kind: 'text', - * ranges: [ + * leaves: [ * { * text: 'test', * marks: ['bold', 'italic'] @@ -228,13 +228,13 @@ function wrapTextWithMarks(textNode, markTypes) { */ function convertTextNode(node) { /** - * If the Slate text node has a "ranges" property, translate the Slate AST to + * If the Slate text node has a "leaves" property, translate the Slate AST to * a nested MDAST structure. Otherwise, just return an equivalent MDAST text * node. */ - if (node.ranges) { - const processedRanges = node.ranges.map(processRanges); - const condensedNodes = processedRanges.reduce(condenseNodesReducer, { nodes: [] }); + if (node.leaves) { + const processedLeaves = node.leaves.map(processLeaves); + const condensedNodes = processedLeaves.reduce(condenseNodesReducer, { nodes: [] }); return condensedNodes.nodes; } @@ -247,17 +247,17 @@ function convertTextNode(node) { /** - * Process Slate node ranges in preparation for MDAST transformation. + * Process Slate node leaves in preparation for MDAST transformation. */ -function processRanges(range) { +function processLeaves(leaves) { /** * Get an array of the mark types, converted to their MDAST equivalent * types. */ - const { marks = [], text } = range; + const { marks = [], text } = leaf; const markTypes = marks.map(mark => markMap[mark.type]); - if (typeof range.text === 'string') { + if (typeof leaf.text === 'string') { /** * Code marks must be removed from the marks array, and the presence of a * code mark changes the text node type that should be used. @@ -266,14 +266,14 @@ function processRanges(range) { return { text, marks: filteredMarkTypes, textNodeType }; } - return { node: range.node, marks: markTypes }; + return { node: leaf.node, marks: markTypes }; } /** * Slate's AST doesn't group adjacent text nodes with the same marks - a * change in marks from letter to letter, even if some are in common, results - * in a separate range. For example, given "**a_b_**", transformation to and + * in a separate leaf. For example, given "**a_b_**", transformation to and * from Slate's AST will result in "**a****_b_**". * * MDAST treats styling entities as distinct nodes that contain children, so a @@ -436,7 +436,7 @@ function convertNode(node, children, shortcodePlugins) { */ case 'code': { const value = flatMap(node.nodes, child => { - return flatMap(child.ranges, 'text'); + return flatMap(child.leaves, 'text'); }).join(''); const { lang, ...data } = get(node, 'data', {}); return u(typeMap[node.type], { lang, data }, value); diff --git a/yarn.lock b/yarn.lock index e6ced25ae158..89fa86566c9f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8521,49 +8521,39 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" -slate-base64-serializer@^0.1.13: +slate-base64-serializer@^0.1.14: version "0.1.22" resolved "https://registry.yarnpkg.com/slate-base64-serializer/-/slate-base64-serializer-0.1.22.tgz#548e589178c75653004168004aad152f1976dd35" dependencies: isomorphic-base64 "^1.0.2" -slate-dev-logger@^0.1.11: - version "0.1.11" - resolved "https://registry.yarnpkg.com/slate-dev-logger/-/slate-dev-logger-0.1.11.tgz#740fd2e23b1dda1f4629419fc914eea91272b6f0" - -slate-dev-logger@^0.1.14: +slate-dev-logger@^0.1.15, slate-dev-logger@^0.1.20, slate-dev-logger@^0.1.23: version "0.1.33" resolved "https://registry.yarnpkg.com/slate-dev-logger/-/slate-dev-logger-0.1.33.tgz#b4a4272255c2d598e5f26db5d85c58435357755f" -slate-edit-list@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/slate-edit-list/-/slate-edit-list-0.8.0.tgz#3f8904fc9cb308d3c614efa5586953a6de6a4608" +slate-edit-list@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/slate-edit-list/-/slate-edit-list-0.9.0.tgz#18fdeb8e6f4068da88a05aa0cb499a191d8343e6" -slate-edit-table@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/slate-edit-table/-/slate-edit-table-0.11.0.tgz#4ab175a02146ec1c45a4a2826eaa66b5db0d2266" - -slate-plain-serializer@^0.1.10: - version "0.1.11" - resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.1.11.tgz#0b70cd870a935b294d6418785084be33ae23b96e" - dependencies: - slate-dev-logger "^0.1.11" +slate-edit-table@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/slate-edit-table/-/slate-edit-table-0.12.0.tgz#9163e67b8025c3c09d6037eb76cb5e652b65dd47" -slate-plain-serializer@^0.1.14: - version "0.1.14" - resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.1.14.tgz#19f6cd9a47d2e7db93d928a8adae10ceb779e743" +slate-plain-serializer@^0.2.0: + version "0.2.8" + resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.2.8.tgz#9bff5fafa09ab2ad47d961820f09d7d2abcb20a9" dependencies: - slate-dev-logger "^0.1.14" + slate-dev-logger "^0.1.23" -slate-prop-types@^0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/slate-prop-types/-/slate-prop-types-0.1.13.tgz#2045d73b12a2fe7205bd6e8792ff1c5b06420fef" +slate-prop-types@^0.2.0: + version "0.2.8" + resolved "https://registry.yarnpkg.com/slate-prop-types/-/slate-prop-types-0.2.8.tgz#2d0e1df0a372c635068c6f74a52b567b996f51c2" dependencies: - slate-dev-logger "^0.1.14" + slate-dev-logger "^0.1.23" -slate-react@^0.3.0: - version "0.3.4" - resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.3.4.tgz#45b34e1909cd86651b718d0d3bb1e35654259e89" +slate-react@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.4.0.tgz#e15c9034df5ea58fcb8a0c49c1cd159702296e0c" dependencies: debug "^2.3.2" get-window "^1.1.1" @@ -8574,18 +8564,18 @@ slate-react@^0.3.0: react-immutable-proptypes "^2.1.0" react-portal "^3.1.0" selection-is-backward "^1.0.0" - slate-base64-serializer "^0.1.13" - slate-dev-logger "^0.1.14" - slate-plain-serializer "^0.1.14" - slate-prop-types "^0.1.13" + slate-base64-serializer "^0.1.14" + slate-dev-logger "^0.1.15" + slate-plain-serializer "^0.2.0" + slate-prop-types "^0.2.0" slate-soft-break@^0.4.0: version "0.4.3" resolved "https://registry.yarnpkg.com/slate-soft-break/-/slate-soft-break-0.4.3.tgz#e3a9279a9b92ca173915467f5fbd359f739a7e96" -slate@^0.26.0: - version "0.26.1" - resolved "https://registry.yarnpkg.com/slate/-/slate-0.26.1.tgz#3f71712b2f5eb30934caebd199d93acc0b11a458" +slate@^0.27.0: + version "0.27.5" + resolved "https://registry.yarnpkg.com/slate/-/slate-0.27.5.tgz#ab9d9f35e03f1910c59016ad66ee685255b5a645" dependencies: debug "^2.3.2" direction "^0.1.5" @@ -8594,7 +8584,7 @@ slate@^0.26.0: is-empty "^1.0.0" is-plain-object "^2.0.4" lodash "^4.17.4" - slate-dev-logger "^0.1.14" + slate-dev-logger "^0.1.20" type-of "^2.0.1" slice-ansi@0.0.4: From ba37180dccbaee979d7ddaf6230ef293fb94bb07 Mon Sep 17 00:00:00 2001 From: Shawn Erquhart Date: Thu, 16 Nov 2017 11:25:21 -0500 Subject: [PATCH 3/9] Update Slate to 0.28.0 --- package.json | 6 +- .../VisualEditor/components.js | 67 ---------------- .../MarkdownControl/VisualEditor/index.js | 13 ++-- .../MarkdownControl/VisualEditor/renderers.js | 72 +++++++++++++++++ .../MarkdownControl/VisualEditor/rules.js | 78 ------------------- .../VisualEditor/validators.js | 69 ++++++++++++++++ yarn.lock | 44 ++++++----- 7 files changed, 173 insertions(+), 176 deletions(-) delete mode 100644 src/components/Widgets/Markdown/MarkdownControl/VisualEditor/components.js create mode 100644 src/components/Widgets/Markdown/MarkdownControl/VisualEditor/renderers.js delete mode 100644 src/components/Widgets/Markdown/MarkdownControl/VisualEditor/rules.js create mode 100644 src/components/Widgets/Markdown/MarkdownControl/VisualEditor/validators.js diff --git a/package.json b/package.json index 3e368c5b2912..6b01447ad09a 100644 --- a/package.json +++ b/package.json @@ -176,12 +176,12 @@ "remark-stringify": "^3.0.1", "sanitize-filename": "^1.6.1", "semaphore": "^1.0.5", - "slate": "^0.27.0", + "slate": "^0.28.0", "slate-edit-list": "^0.9.0", "slate-edit-table": "^0.12.0", "slate-plain-serializer": "^0.2.0", - "slate-react": "^0.4.0", - "slate-soft-break": "^0.4.0", + "slate-react": "^0.8.0", + "slate-soft-break": "^0.5.0", "slug": "^0.9.1", "toml-j0.4": "^1.1.1", "tomlify-j0.4": "^3.0.0-alpha.0", diff --git a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/components.js b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/components.js deleted file mode 100644 index cdae5ee2c5b6..000000000000 --- a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/components.js +++ /dev/null @@ -1,67 +0,0 @@ -import React from 'react'; -import { List } from 'immutable'; -import cn from 'classnames'; - -/** - * Slate uses React components to render each type of node that it receives. - * This is the closest thing Slate has to a schema definition. The types are set - * by us when we manually deserialize from Remark's MDAST to Slate's AST. - */ - -export const MARK_COMPONENTS = { - bold: props => {props.children}, - italic: props => {props.children}, - strikethrough: props => {props.children}, - code: props => {props.children}, -}; - -export const NODE_COMPONENTS = { - 'paragraph': props =>

{props.children}

, - 'list-item': props =>
  • {props.children}
  • , - 'quote': props =>
    {props.children}
    , - 'code': props =>
    {props.children}
    , - 'heading-one': props =>

    {props.children}

    , - 'heading-two': props =>

    {props.children}

    , - 'heading-three': props =>

    {props.children}

    , - 'heading-four': props =>

    {props.children}

    , - 'heading-five': props =>
    {props.children}
    , - 'heading-six': props =>
    {props.children}
    , - 'table': props => {props.children}
    , - 'table-row': props => {props.children}, - 'table-cell': props => {props.children}, - 'thematic-break': props =>
    , - 'bulleted-list': props =>
      {props.children}
    , - 'numbered-list': props => -
      {props.children}
    , - 'link': props => { - const data = props.node.get('data'); - const marks = data.get('marks'); - const url = data.get('url'); - const title = data.get('title'); - const link = {props.children}; - const result = !marks ? link : marks.reduce((acc, mark) => { - const MarkComponent = MARK_COMPONENTS[mark.type]; - return {acc}; - }, link); - return result; - }, - 'image': props => { - const data = props.node.get('data'); - const marks = data.get('marks'); - const url = data.get('url'); - const title = data.get('title'); - const alt = data.get('alt'); - const image = {alt}; - const result = !marks ? image : marks.reduce((acc, mark) => { - const MarkComponent = MARK_COMPONENTS[mark.type]; - return {acc}; - }, image); - return result; - }, - 'shortcode': props => { - const { attributes, node, state: editorState } = props; - const isSelected = editorState.selection.hasFocusIn(node); - const className = cn('nc-visualEditor-shortcode', { ['nc-visualEditor-shortcodeSelected']: isSelected }); - return
    {node.data.get('shortcode')}
    ; - }, -}; diff --git a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/index.js b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/index.js index 22177e1cf2d9..9a8cfe6d7cca 100644 --- a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/index.js +++ b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/index.js @@ -7,8 +7,8 @@ import { slateToMarkdown, markdownToSlate, htmlToSlate } from '../../serializers import registry from '../../../../../lib/registry'; import Toolbar from '../Toolbar/Toolbar'; import { Sticky } from '../../../../UI/Sticky/Sticky'; -import { MARK_COMPONENTS, NODE_COMPONENTS } from './components'; -import RULES from './rules'; +import { renderNode, renderMark } from './renderers'; +import { validateNode } from './validators'; import plugins, { EditListConfigured } from './plugins'; import onKeyDown from './keys'; @@ -24,11 +24,6 @@ export default class Editor extends Component { const editorState = State.create({ document }); this.state = { editorState, - schema: { - nodes: NODE_COMPONENTS, - marks: MARK_COMPONENTS, - rules: RULES, - }, shortcodePlugins: registry.getEditorComponents(), }; } @@ -208,7 +203,9 @@ export default class Editor extends Component { { + switch (props.mark.type) { + case bold: return props => {props.children}; + case italic: return props => {props.children}; + case strikethrough: return props => {props.children}; + case code: return props => {props.children}; + } +}; + +export const renderNode = props => { + switch (props.node.type) { + case 'paragraph': return props =>

    {props.children}

    ; + case 'list-item': return props =>
  • {props.children}
  • ; + case 'quote': return props =>
    {props.children}
    ; + case 'code': return props =>
    {props.children}
    ; + case 'heading-one': return props =>

    {props.children}

    ; + case 'heading-two': return props =>

    {props.children}

    ; + case 'heading-three': return props =>

    {props.children}

    ; + case 'heading-four': return props =>

    {props.children}

    ; + case 'heading-five': return props =>
    {props.children}
    ; + case 'heading-six': return props =>
    {props.children}
    ; + case 'table': return props => {props.children}
    ; + case 'table-row': return props => {props.children}; + case 'table-cell': return props => {props.children}; + case 'thematic-break': return props =>
    ; + case 'bulleted-list': return props =>
      {props.children}
    ; + case 'numbered-list': return props => ( +
      {props.children}
    + ); + case 'link': return props => { + const data = props.node.get('data'); + const marks = data.get('marks'); + const url = data.get('url'); + const title = data.get('title'); + const link = {props.children}; + const result = !marks ? link : marks.reduce((acc, mark) => { + const MarkComponent = MARK_COMPONENTS[mark.type]; + return {acc}; + }, link); + return result; + }; + case 'image': props => { + const data = props.node.get('data'); + const marks = data.get('marks'); + const url = data.get('url'); + const title = data.get('title'); + const alt = data.get('alt'); + const image = {alt}; + const result = !marks ? image : marks.reduce((acc, mark) => { + const MarkComponent = MARK_COMPONENTS[mark.type]; + return {acc}; + }, image); + return result; + }; + case 'shortcode': props => { + const { attributes, node, state: editorState } = props; + const isSelected = editorState.selection.hasFocusIn(node); + const className = cn('nc-visualEditor-shortcode', { ['nc-visualEditor-shortcodeSelected']: isSelected }); + return
    {node.data.get('shortcode')}
    ; + }; + } +}; diff --git a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/rules.js b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/rules.js deleted file mode 100644 index c898aff1794c..000000000000 --- a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/rules.js +++ /dev/null @@ -1,78 +0,0 @@ -import { Block, Text } from 'slate'; - -/** - * Rules are used to validate the editor state each time it changes, to ensure - * it is never rendered in an undesirable state. - */ - -/** - * If the editor is ever in an empty state, insert an empty - * paragraph block. - */ -const enforceNeverEmpty = { - match: object => object.kind === 'document', - validate: doc => { - const hasBlocks = !doc.getBlocks().isEmpty(); - return hasBlocks ? null : {}; - }, - normalize: change => { - const block = Block.create({ - type: 'paragraph', - nodes: [Text.create('')], - }); - const { key } = change.state.document; - return change.insertNodeByKey(key, 0, block).focus(); - }, -}; - -/** - * Ensure that shortcodes are children of the root node. - */ -const shortcodesAtRoot = { - match: object => object.kind === 'document', - validate: doc => { - return doc.findDescendant(node => { - return node.type === 'shortcode' && doc.getParent(node.key).key !== doc.key; - }); - }, - normalize: (change, doc, node) => { - return change.unwrapNodeByKey(node.key); - }, -}; - -/** - * Ensure that trailing shortcodes are followed by an empty paragraph. - */ -const noTrailingShortcodes = { - match: object => object.kind === 'document', - validate: doc => { - return doc.findDescendant(node => { - return node.type === 'shortcode' && doc.getBlocks().last().key === node.key; - }); - }, - normalize: (change, doc, node) => { - const text = Text.create(''); - const block = Block.create({ type: 'paragraph', nodes: [ text ] }); - return change.insertNodeByKey(doc.key, doc.get('nodes').size, block); - }, -}; - -/** - * Ensure that code blocks contain no marks. - */ -const codeBlocksContainPlainText = { - match: node => node.type === 'code', - validate: node => { - const invalidChild = node.getTexts().find(text => !text.getMarks().isEmpty()); - return invalidChild || null; - }, - normalize: (change, node, invalidChild) => { - invalidChild.getMarks().forEach(mark => { - change.removeMarkByKey(invalidChild.key, 0, invalidChild.get('characters').size, mark); - }); - }, -}; - -const rules = [ enforceNeverEmpty, shortcodesAtRoot, noTrailingShortcodes, codeBlocksContainPlainText ]; - -export default rules; diff --git a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/validators.js b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/validators.js new file mode 100644 index 000000000000..4c7be24653df --- /dev/null +++ b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/validators.js @@ -0,0 +1,69 @@ +import { Block, Text } from 'slate'; + +/** + * Validation functions are used to validate the editor state each time it + * changes, to ensure it is never rendered in an undesirable state. + */ +export function validateNode(node) { + /** + * Validation of the document itself. + */ + if (node.kind === 'document') { + /** + * If the editor is ever in an empty state, insert an empty + * paragraph block. + */ + const hasBlocks = !doc.getBlocks().isEmpty(); + if (!hasBlocks) { + return change => { + const block = Block.create({ + type: 'paragraph', + nodes: [Text.create('')], + }); + const { key } = change.state.document; + return change.insertNodeByKey(key, 0, block).focus(); + }; + } + + /** + * Ensure that shortcodes are children of the root node. + */ + const nestedShortcode = node.findDescendant(descendant => { + const { type, key } = descendant; + return type === 'shortcode' && node.getParent(key).key !== node.key; + }); + if (nestedShortcode) { + return change => change.unwrapNodeByKey(node.key); + } + + /** + * Ensure that trailing shortcodes are followed by an empty paragraph. + */ + const trailingShortcode = node.findDescendant(descendant => { + const { type, key } = descendant; + return type === 'shortcode' && node.getBlocks().last().key === key; + }); + if (trailingShortcode) { + return change => { + const text = Text.create(''); + const block = Block.create({ type: 'paragraph', nodes: [ text ] }); + return change.insertNodeByKey(node.key, node.get('nodes').size, block); + }; + } + } + + + /** + * Ensure that code blocks contain no marks. + */ + if (node.type === 'code') { + const invalidChild = node.getTexts().find(text => !text.getMarks().isEmpty()); + if (invalidChild) { + return change => ( + invalidChild.getMarks().forEach(mark => ( + change.removeMarkByKey(invalidChild.key, 0, invalidChild.get('characters').size, mark) + )) + ); + } + } +}; diff --git a/yarn.lock b/yarn.lock index 89fa86566c9f..ae58dca340e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2827,7 +2827,7 @@ es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: es5-ext "^0.10.14" es6-symbol "^3.1" -es6-map@^0.1.3, es6-map@^0.1.4: +es6-map@^0.1.3: version "0.1.5" resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" dependencies: @@ -4472,6 +4472,10 @@ is-hexadecimal@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.1.tgz#6e084bbc92061fbb0971ec58b6ce6d404e24da69" +is-hotkey@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.1.1.tgz#b279a2fd108391be9aa93c6cb317f50357da549a" + is-in-browser@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" @@ -8521,13 +8525,13 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" -slate-base64-serializer@^0.1.14: +slate-base64-serializer@^0.1.22: version "0.1.22" resolved "https://registry.yarnpkg.com/slate-base64-serializer/-/slate-base64-serializer-0.1.22.tgz#548e589178c75653004168004aad152f1976dd35" dependencies: isomorphic-base64 "^1.0.2" -slate-dev-logger@^0.1.15, slate-dev-logger@^0.1.20, slate-dev-logger@^0.1.23: +slate-dev-logger@^0.1.23: version "0.1.33" resolved "https://registry.yarnpkg.com/slate-dev-logger/-/slate-dev-logger-0.1.33.tgz#b4a4272255c2d598e5f26db5d85c58435357755f" @@ -8539,24 +8543,25 @@ slate-edit-table@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/slate-edit-table/-/slate-edit-table-0.12.0.tgz#9163e67b8025c3c09d6037eb76cb5e652b65dd47" -slate-plain-serializer@^0.2.0: +slate-plain-serializer@^0.2.0, slate-plain-serializer@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.2.8.tgz#9bff5fafa09ab2ad47d961820f09d7d2abcb20a9" dependencies: slate-dev-logger "^0.1.23" -slate-prop-types@^0.2.0: +slate-prop-types@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/slate-prop-types/-/slate-prop-types-0.2.8.tgz#2d0e1df0a372c635068c6f74a52b567b996f51c2" dependencies: slate-dev-logger "^0.1.23" -slate-react@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.4.0.tgz#e15c9034df5ea58fcb8a0c49c1cd159702296e0c" +slate-react@^0.8.0: + version "0.8.2" + resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.8.2.tgz#035452c7aa90d7ec37f097e2430b2ce4198cfb78" dependencies: debug "^2.3.2" 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" @@ -8564,27 +8569,26 @@ slate-react@^0.4.0: react-immutable-proptypes "^2.1.0" react-portal "^3.1.0" selection-is-backward "^1.0.0" - slate-base64-serializer "^0.1.14" - slate-dev-logger "^0.1.15" - slate-plain-serializer "^0.2.0" - slate-prop-types "^0.2.0" + slate-base64-serializer "^0.1.22" + slate-dev-logger "^0.1.23" + slate-plain-serializer "^0.2.8" + slate-prop-types "^0.2.8" -slate-soft-break@^0.4.0: - version "0.4.3" - resolved "https://registry.yarnpkg.com/slate-soft-break/-/slate-soft-break-0.4.3.tgz#e3a9279a9b92ca173915467f5fbd359f739a7e96" +slate-soft-break@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/slate-soft-break/-/slate-soft-break-0.5.1.tgz#817348c6c38c5c4983f58de3bc497234b27378eb" -slate@^0.27.0: - version "0.27.5" - resolved "https://registry.yarnpkg.com/slate/-/slate-0.27.5.tgz#ab9d9f35e03f1910c59016ad66ee685255b5a645" +slate@^0.28.0: + version "0.28.2" + resolved "https://registry.yarnpkg.com/slate/-/slate-0.28.2.tgz#e740976ae494c9a2952e925b00f2694416b5e84d" dependencies: debug "^2.3.2" direction "^0.1.5" - es6-map "^0.1.4" esrever "^0.2.0" is-empty "^1.0.0" is-plain-object "^2.0.4" lodash "^4.17.4" - slate-dev-logger "^0.1.20" + slate-dev-logger "^0.1.23" type-of "^2.0.1" slice-ansi@0.0.4: From 149942bb735bd21ad884ec6df7c078e1dd3916cc Mon Sep 17 00:00:00 2001 From: Shawn Erquhart Date: Thu, 16 Nov 2017 12:36:48 -0500 Subject: [PATCH 4/9] Update Slate to 0.29.0 --- package.json | 10 ++-- .../MarkdownControl/RawEditor/index.js | 12 ++-- .../MarkdownControl/VisualEditor/index.js | 52 ++++++++--------- .../MarkdownControl/VisualEditor/keys.js | 4 +- .../MarkdownControl/VisualEditor/plugins.js | 10 ++-- .../MarkdownControl/VisualEditor/renderers.js | 4 +- .../VisualEditor/validators.js | 2 +- yarn.lock | 58 +++++++++---------- 8 files changed, 76 insertions(+), 76 deletions(-) diff --git a/package.json b/package.json index 6b01447ad09a..b711efa2998b 100644 --- a/package.json +++ b/package.json @@ -176,12 +176,12 @@ "remark-stringify": "^3.0.1", "sanitize-filename": "^1.6.1", "semaphore": "^1.0.5", - "slate": "^0.28.0", - "slate-edit-list": "^0.9.0", + "slate": "^0.29.0", + "slate-edit-list": "^0.10.1", "slate-edit-table": "^0.12.0", - "slate-plain-serializer": "^0.2.0", - "slate-react": "^0.8.0", - "slate-soft-break": "^0.5.0", + "slate-plain-serializer": "^0.3.0", + "slate-react": "^0.9.0", + "slate-soft-break": "^0.6.0", "slug": "^0.9.1", "toml-j0.4": "^1.1.1", "tomlify-j0.4": "^3.0.0-alpha.0", diff --git a/src/components/Widgets/Markdown/MarkdownControl/RawEditor/index.js b/src/components/Widgets/Markdown/MarkdownControl/RawEditor/index.js index b3d4cbe59041..c0494f224b1b 100644 --- a/src/components/Widgets/Markdown/MarkdownControl/RawEditor/index.js +++ b/src/components/Widgets/Markdown/MarkdownControl/RawEditor/index.js @@ -10,19 +10,19 @@ export default class RawEditor extends React.Component { constructor(props) { super(props); this.state = { - editorState: Plain.deserialize(this.props.value || ''), + value: Plain.deserialize(this.props.value || ''), }; } shouldComponentUpdate(nextProps, nextState) { - return !this.state.editorState.equals(nextState.editorState); + return !this.state.value.equals(nextState.value); } handleChange = change => { - if (!this.state.editorState.document.equals(change.state.document)) { + if (!this.state.value.document.equals(change.value.document)) { this.handleDocumentChange(change); } - this.setState({ editorState: change.state }); + this.setState({ value: change.value }); }; /** @@ -30,7 +30,7 @@ export default class RawEditor extends React.Component { * text (which is Markdown) and pass that up as the new value. */ handleDocumentChange = debounce(change => { - const value = Plain.serialize(change.state); + const value = Plain.serialize(change.value); this.props.onChange(value); }, 150); @@ -62,7 +62,7 @@ export default class RawEditor extends React.Component { diff --git a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/index.js b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/index.js index 9a8cfe6d7cca..253c4a17bd52 100644 --- a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/index.js +++ b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/index.js @@ -1,7 +1,7 @@ import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { get, isEmpty, debounce } from 'lodash'; -import { State, Document, Block, Text } from 'slate'; +import { Value, Document, Block, Text } from 'slate'; import { Editor as Slate } from 'slate-react'; import { slateToMarkdown, markdownToSlate, htmlToSlate } from '../../serializers'; import registry from '../../../../../lib/registry'; @@ -21,15 +21,15 @@ export default class Editor extends Component { const rawDoc = this.props.value && markdownToSlate(this.props.value); const rawDocHasNodes = !isEmpty(get(rawDoc, 'nodes')) const document = Document.fromJSON(rawDocHasNodes ? rawDoc : emptyRawDoc); - const editorState = State.create({ document }); + const value = Value.create({ document }); this.state = { - editorState, + value, shortcodePlugins: registry.getEditorComponents(), }; } shouldComponentUpdate(nextProps, nextState) { - return !this.state.editorState.equals(nextState.editorState); + return !this.state.value.equals(nextState.value); } handlePaste = (e, data, change) => { @@ -41,22 +41,22 @@ export default class Editor extends Component { return change.insertFragment(doc); } - hasMark = type => this.state.editorState.activeMarks.some(mark => mark.type === type); - hasBlock = type => this.state.editorState.blocks.some(node => node.type === type); + hasMark = type => this.state.value.activeMarks.some(mark => mark.type === type); + hasBlock = type => this.state.value.blocks.some(node => node.type === type); handleMarkClick = (event, type) => { event.preventDefault(); - const resolvedChange = this.state.editorState.change().focus().toggleMark(type); + const resolvedChange = this.state.value.change().focus().toggleMark(type); this.ref.onChange(resolvedChange); - this.setState({ editorState: resolvedChange.state }); + this.setState({ value: resolvedChange.value }); }; handleBlockClick = (event, type) => { event.preventDefault(); - let { editorState } = this.state; - const { document: doc, selection } = editorState; + let { value } = this.state; + const { document: doc, selection } = value; const { unwrapList, wrapInList } = EditListConfigured.changes; - let change = editorState.change(); + let change = value.change(); // Handle everything except list buttons. if (!['bulleted-list', 'numbered-list'].includes(type)) { @@ -66,10 +66,10 @@ export default class Editor extends Component { // Handle the extra wrapping required for list buttons. else { - const isSameListType = editorState.blocks.some(block => { + const isSameListType = value.blocks.some(block => { return !!doc.getClosest(block.key, parent => parent.type === type); }); - const isInList = EditListConfigured.utils.isSelectionInList(editorState); + const isInList = EditListConfigured.utils.isSelectionInList(value); if (isInList && isSameListType) { change = change.call(unwrapList, type); @@ -83,15 +83,15 @@ export default class Editor extends Component { const resolvedChange = change.focus(); this.ref.onChange(resolvedChange); - this.setState({ editorState: resolvedChange.state }); + this.setState({ value: resolvedChange.value }); }; hasLinks = () => { - return this.state.editorState.inlines.some(inline => inline.type === 'link'); + return this.state.value.inlines.some(inline => inline.type === 'link'); }; handleLink = () => { - let change = this.state.editorState.change(); + let change = this.state.value.change(); // If the current selection contains links, clicking the "link" button // should simply unlink them. @@ -106,7 +106,7 @@ export default class Editor extends Component { if (!url) return; // If no text is selected, use the entered URL as text. - if (change.state.isCollapsed) { + if (change.value.isCollapsed) { change = change .insertText(url) .extend(0 - url.length); @@ -118,19 +118,19 @@ export default class Editor extends Component { } this.ref.onChange(change); - this.setState({ editorState: change.state }); + this.setState({ value: change.value }); }; handlePluginSubmit = (plugin, shortcodeData) => { - const { editorState } = this.state; + const { value } = this.state; const data = { shortcode: plugin.id, shortcodeData, }; const nodes = [Text.create('')]; const block = { kind: 'block', type: 'shortcode', data, isVoid: true, nodes }; - let change = editorState.change(); - const { focusBlock } = change.state; + let change = value.change(); + const { focusBlock } = change.value; if (focusBlock.text === '') { change = change.setNodeByKey(focusBlock.key, block); @@ -141,7 +141,7 @@ export default class Editor extends Component { change = change.focus(); this.ref.onChange(change); - this.setState({ editorState: change.state }); + this.setState({ value: change.value }); }; handleToggle = () => { @@ -156,17 +156,17 @@ export default class Editor extends Component { }; handleDocumentChange = debounce(change => { - const raw = change.state.document.toJSON(); + const raw = change.value.document.toJSON(); const plugins = this.state.shortcodePlugins; const markdown = slateToMarkdown(raw, plugins); this.props.onChange(markdown); }, 150); handleChange = change => { - if (!this.state.editorState.document.equals(change.state.document)) { + if (!this.state.value.document.equals(change.value.document)) { this.handleDocumentChange(change); } - this.setState({ editorState: change.state }); + this.setState({ value: change.value }); }; render() { @@ -202,7 +202,7 @@ export default class Editor extends Component { ({ if (options.shift && e.shiftKey == false) return; const { onlyIn, ignoreIn, defaultBlock = 'paragraph' } = options; - const { type, text } = change.state.startBlock; + const { type, text } = change.value.startBlock; if (onlyIn && !onlyIn.includes(type)) return; if (ignoreIn && ignoreIn.includes(type)) return; @@ -39,9 +39,9 @@ export const ParagraphSoftBreakConfigured = SoftBreak({ onlyIn: ['paragraph'], s const BreakToDefaultBlock = ({ onlyIn = [], defaultBlock = 'paragraph' }) => ({ onKeyDown(e, data, change) { - const { state } = change; - if (data.key != 'enter' || e.shiftKey == true || state.isExpanded) return; - if (onlyIn.includes(state.startBlock.type)) { + const { value } = change; + if (data.key != 'enter' || e.shiftKey == true || value.isExpanded) return; + if (onlyIn.includes(value.startBlock.type)) { return change.insertBlock(defaultBlock); } } @@ -58,7 +58,7 @@ const BackspaceCloseBlock = (options = {}) => ({ if (data.key != 'backspace') return; const { defaultBlock = 'paragraph', ignoreIn, onlyIn } = options; - const { startBlock } = change.state; + const { startBlock } = change.value; const { type } = startBlock; if (onlyIn && !onlyIn.includes(type)) return; diff --git a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/renderers.js b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/renderers.js index 3ce46a695c5a..8abedb64ed0c 100644 --- a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/renderers.js +++ b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/renderers.js @@ -63,8 +63,8 @@ export const renderNode = props => { return result; }; case 'shortcode': props => { - const { attributes, node, state: editorState } = props; - const isSelected = editorState.selection.hasFocusIn(node); + const { attributes, node, editor } = props; + const isSelected = editor.value.selection.hasFocusIn(node); const className = cn('nc-visualEditor-shortcode', { ['nc-visualEditor-shortcodeSelected']: isSelected }); return
    {node.data.get('shortcode')}
    ; }; diff --git a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/validators.js b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/validators.js index 4c7be24653df..aa7a3248bbe6 100644 --- a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/validators.js +++ b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/validators.js @@ -20,7 +20,7 @@ export function validateNode(node) { type: 'paragraph', nodes: [Text.create('')], }); - const { key } = change.state.document; + const { key } = change.value.document; return change.insertNodeByKey(key, 0, block).focus(); }; } diff --git a/yarn.lock b/yarn.lock index ae58dca340e1..0b0ba15f2478 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8525,39 +8525,39 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" -slate-base64-serializer@^0.1.22: - version "0.1.22" - resolved "https://registry.yarnpkg.com/slate-base64-serializer/-/slate-base64-serializer-0.1.22.tgz#548e589178c75653004168004aad152f1976dd35" +slate-base64-serializer@^0.2.1: + version "0.2.9" + resolved "https://registry.yarnpkg.com/slate-base64-serializer/-/slate-base64-serializer-0.2.9.tgz#14698ca6b48fae2661cd59db8ccd909becb73c6b" dependencies: isomorphic-base64 "^1.0.2" -slate-dev-logger@^0.1.23: +slate-dev-logger@^0.1.25: version "0.1.33" resolved "https://registry.yarnpkg.com/slate-dev-logger/-/slate-dev-logger-0.1.33.tgz#b4a4272255c2d598e5f26db5d85c58435357755f" -slate-edit-list@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/slate-edit-list/-/slate-edit-list-0.9.0.tgz#18fdeb8e6f4068da88a05aa0cb499a191d8343e6" +slate-edit-list@^0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/slate-edit-list/-/slate-edit-list-0.10.1.tgz#9c6a142a314b0ff22a327f1b50c8f5c85468cb17" slate-edit-table@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/slate-edit-table/-/slate-edit-table-0.12.0.tgz#9163e67b8025c3c09d6037eb76cb5e652b65dd47" -slate-plain-serializer@^0.2.0, slate-plain-serializer@^0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.2.8.tgz#9bff5fafa09ab2ad47d961820f09d7d2abcb20a9" +slate-plain-serializer@^0.3.0, slate-plain-serializer@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.3.1.tgz#fd3201c4d133b521b62696c35cc0ef5f92ff174e" dependencies: - slate-dev-logger "^0.1.23" + slate-dev-logger "^0.1.25" -slate-prop-types@^0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/slate-prop-types/-/slate-prop-types-0.2.8.tgz#2d0e1df0a372c635068c6f74a52b567b996f51c2" +slate-prop-types@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/slate-prop-types/-/slate-prop-types-0.3.1.tgz#27c62318ead2b90261b5933092ae4694db69e22e" dependencies: - slate-dev-logger "^0.1.23" + slate-dev-logger "^0.1.25" -slate-react@^0.8.0: - version "0.8.2" - resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.8.2.tgz#035452c7aa90d7ec37f097e2430b2ce4198cfb78" +slate-react@^0.9.0: + version "0.9.1" + resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.9.1.tgz#1fa9da93b1856361b42e9da8633837264f40169a" dependencies: debug "^2.3.2" get-window "^1.1.1" @@ -8569,18 +8569,18 @@ slate-react@^0.8.0: react-immutable-proptypes "^2.1.0" react-portal "^3.1.0" selection-is-backward "^1.0.0" - slate-base64-serializer "^0.1.22" - slate-dev-logger "^0.1.23" - slate-plain-serializer "^0.2.8" - slate-prop-types "^0.2.8" + slate-base64-serializer "^0.2.1" + slate-dev-logger "^0.1.25" + slate-plain-serializer "^0.3.1" + slate-prop-types "^0.3.1" -slate-soft-break@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/slate-soft-break/-/slate-soft-break-0.5.1.tgz#817348c6c38c5c4983f58de3bc497234b27378eb" +slate-soft-break@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/slate-soft-break/-/slate-soft-break-0.6.0.tgz#1e44815b7ff4ddada055bba14cd0d2d4ef0fd463" -slate@^0.28.0: - version "0.28.2" - resolved "https://registry.yarnpkg.com/slate/-/slate-0.28.2.tgz#e740976ae494c9a2952e925b00f2694416b5e84d" +slate@^0.29.0: + version "0.29.1" + resolved "https://registry.yarnpkg.com/slate/-/slate-0.29.1.tgz#a9df98158e67f92456b9b8f38fb6d279ba8f9f7e" dependencies: debug "^2.3.2" direction "^0.1.5" @@ -8588,7 +8588,7 @@ slate@^0.28.0: is-empty "^1.0.0" is-plain-object "^2.0.4" lodash "^4.17.4" - slate-dev-logger "^0.1.23" + slate-dev-logger "^0.1.25" type-of "^2.0.1" slice-ansi@0.0.4: From 551472b11ac64bd9884445540945a8d3136c6559 Mon Sep 17 00:00:00 2001 From: Shawn Erquhart Date: Thu, 16 Nov 2017 12:41:13 -0500 Subject: [PATCH 5/9] disable slate-edit-table plugin until updated --- .../Widgets/Markdown/MarkdownControl/VisualEditor/plugins.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/plugins.js b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/plugins.js index ce5556a727d6..9cb1b69e6d32 100644 --- a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/plugins.js +++ b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/plugins.js @@ -105,7 +105,6 @@ const plugins = [ BackspaceCloseBlockConfigured, BreakToDefaultBlockConfigured, EditListConfigured, - EditTableConfigured, ]; export default plugins; From 79bd2f8d545a88673455ae801f4195d15d779bac Mon Sep 17 00:00:00 2001 From: Shawn Erquhart Date: Thu, 16 Nov 2017 16:37:02 -0500 Subject: [PATCH 6/9] fix slate migration bugs --- src/components/ControlPanel/ControlPane.css | 3 +- .../MarkdownControl/RawEditor/index.css | 1 + .../MarkdownControl/VisualEditor/index.css | 1 + .../MarkdownControl/VisualEditor/renderers.js | 137 +++++++++++------- .../VisualEditor/validators.js | 32 +++- .../Markdown/serializers/slateRemark.js | 2 +- 6 files changed, 114 insertions(+), 62 deletions(-) diff --git a/src/components/ControlPanel/ControlPane.css b/src/components/ControlPanel/ControlPane.css index 8251a3ee1947..7d4967765c68 100644 --- a/src/components/ControlPanel/ControlPane.css +++ b/src/components/ControlPanel/ControlPane.css @@ -10,8 +10,7 @@ & input, & textarea, - & select, - & div[contenteditable=true] { + & select { @apply --input; } } diff --git a/src/components/Widgets/Markdown/MarkdownControl/RawEditor/index.css b/src/components/Widgets/Markdown/MarkdownControl/RawEditor/index.css index 7783ab5b05c0..028771691c03 100644 --- a/src/components/Widgets/Markdown/MarkdownControl/RawEditor/index.css +++ b/src/components/Widgets/Markdown/MarkdownControl/RawEditor/index.css @@ -3,6 +3,7 @@ } .nc-rawEditor-rawEditor { + @apply(--input); position: relative; overflow: hidden; overflow-x: auto; diff --git a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/index.css b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/index.css index ac2ce2ca835a..384334aba9a0 100644 --- a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/index.css +++ b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/index.css @@ -14,6 +14,7 @@ } .nc-visualEditor-editor { + @apply(--input); position: relative; overflow: hidden; overflow-x: auto; diff --git a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/renderers.js b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/renderers.js index 8abedb64ed0c..52a04427ae78 100644 --- a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/renderers.js +++ b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/renderers.js @@ -8,65 +8,96 @@ import cn from 'classnames'; * by us when we manually deserialize from Remark's MDAST to Slate's AST. */ +/** + * Mark Components + */ +const Bold = props => {props.children}; +const Italic = props => {props.children}; +const Strikethrough = props => {props.children}; +const Code = props => {props.children}; + +/** + * Node Components + */ +const Paragraph = props =>

    {props.children}

    ; +const ListItem = props =>
  • {props.children}
  • ; +const Quote = props =>
    {props.children}
    ; +const CodeBlock = props =>
    {props.children}
    ; +const HeadingOne = props =>

    {props.children}

    ; +const HeadingTwo = props =>

    {props.children}

    ; +const HeadingThree = props =>

    {props.children}

    ; +const HeadingFour = props =>

    {props.children}

    ; +const HeadingFive = props =>
    {props.children}
    ; +const HeadingSix = props =>
    {props.children}
    ; +const Table = props => {props.children}
    ; +const TableRow = props => {props.children}; +const TableCell = props => {props.children}; +const ThematicBreak = props =>
    ; +const BulletedList = props =>
      {props.children}
    ; +const NumberedList = props => ( +
      {props.children}
    +); +const Link = props => { + const data = props.node.get('data'); + const marks = data.get('marks'); + const url = data.get('url'); + const title = data.get('title'); + const link = {props.children}; + const result = !marks ? link : marks.reduce((acc, mark) => { + const MarkComponent = MARK_COMPONENTS[mark.type]; + return {acc}; + }, link); + return result; +}; +const Image = props => { + const data = props.node.get('data'); + const marks = data.get('marks'); + const url = data.get('url'); + const title = data.get('title'); + const alt = data.get('alt'); + const image = {alt}; + const result = !marks ? image : marks.reduce((acc, mark) => { + const MarkComponent = MARK_COMPONENTS[mark.type]; + return {acc}; + }, image); + return result; +}; +const Shortcode = props => { + const { attributes, node, editor } = props; + const isSelected = editor.value.selection.hasFocusIn(node); + const className = cn('nc-visualEditor-shortcode', { ['nc-visualEditor-shortcodeSelected']: isSelected }); + return
    {node.data.get('shortcode')}
    ; +}; + export const renderMark = props => { switch (props.mark.type) { - case bold: return props => {props.children}; - case italic: return props => {props.children}; - case strikethrough: return props => {props.children}; - case code: return props => {props.children}; + case 'bold': return ; + case 'italic': return ; + case 'strikethrough': return ; + case 'code': return ; } }; export const renderNode = props => { switch (props.node.type) { - case 'paragraph': return props =>

    {props.children}

    ; - case 'list-item': return props =>
  • {props.children}
  • ; - case 'quote': return props =>
    {props.children}
    ; - case 'code': return props =>
    {props.children}
    ; - case 'heading-one': return props =>

    {props.children}

    ; - case 'heading-two': return props =>

    {props.children}

    ; - case 'heading-three': return props =>

    {props.children}

    ; - case 'heading-four': return props =>

    {props.children}

    ; - case 'heading-five': return props =>
    {props.children}
    ; - case 'heading-six': return props =>
    {props.children}
    ; - case 'table': return props => {props.children}
    ; - case 'table-row': return props => {props.children}; - case 'table-cell': return props => {props.children}; - case 'thematic-break': return props =>
    ; - case 'bulleted-list': return props =>
      {props.children}
    ; - case 'numbered-list': return props => ( -
      {props.children}
    - ); - case 'link': return props => { - const data = props.node.get('data'); - const marks = data.get('marks'); - const url = data.get('url'); - const title = data.get('title'); - const link = {props.children}; - const result = !marks ? link : marks.reduce((acc, mark) => { - const MarkComponent = MARK_COMPONENTS[mark.type]; - return {acc}; - }, link); - return result; - }; - case 'image': props => { - const data = props.node.get('data'); - const marks = data.get('marks'); - const url = data.get('url'); - const title = data.get('title'); - const alt = data.get('alt'); - const image = {alt}; - const result = !marks ? image : marks.reduce((acc, mark) => { - const MarkComponent = MARK_COMPONENTS[mark.type]; - return {acc}; - }, image); - return result; - }; - case 'shortcode': props => { - const { attributes, node, editor } = props; - const isSelected = editor.value.selection.hasFocusIn(node); - const className = cn('nc-visualEditor-shortcode', { ['nc-visualEditor-shortcodeSelected']: isSelected }); - return
    {node.data.get('shortcode')}
    ; - }; + case 'paragraph': return ; + case 'list-item': return ; + case 'quote': return ; + case 'code': return ; + case 'heading-one': return ; + case 'heading-two': return ; + case 'heading-three': return ; + case 'heading-four': return ; + case 'heading-five': return ; + case 'heading-six': return ; + case 'table': return ; + case 'table-row': return ; + case 'table-cell': return ; + case 'thematic-break': return ; + case 'bulleted-list': return ; + case 'numbered-list': return ; + case 'link': return ; + case 'image': return ; + case 'shortcode': return ; } }; diff --git a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/validators.js b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/validators.js index aa7a3248bbe6..d3c4e8d96623 100644 --- a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/validators.js +++ b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/validators.js @@ -9,6 +9,7 @@ export function validateNode(node) { * Validation of the document itself. */ if (node.kind === 'document') { + const doc = node; /** * If the editor is ever in an empty state, insert an empty * paragraph block. @@ -28,26 +29,45 @@ export function validateNode(node) { /** * Ensure that shortcodes are children of the root node. */ - const nestedShortcode = node.findDescendant(descendant => { + const nestedShortcode = doc.findDescendant(descendant => { const { type, key } = descendant; - return type === 'shortcode' && node.getParent(key).key !== node.key; + return type === 'shortcode' && doc.getParent(key).key !== doc.key; }); if (nestedShortcode) { - return change => change.unwrapNodeByKey(node.key); + const unwrapShortcode = change => { + const key = nestedShortcode.key; + const newDoc = change.value.document; + const newParent = newDoc.getParent(key); + const docIsParent = newParent.key === newDoc.key; + const newParentParent = newDoc.getParent(newParent.key); + const docIsParentParent = newParentParent && newParentParent.key === newDoc.key; + if (docIsParent) { + return change; + } + /** + * Normalization happens by default, and causes all validation to + * restart with the result of a change upon execution. This unwrap loop + * could temporarily place a shortcode node in conflict with an outside + * plugin's schema, resulting in an infinite loop. To ensure against + * this, we turn off normalization until the last change. + */ + change.unwrapNodeByKey(nestedShortcode.key, { normalize: docIsParentParent }); + }; + return unwrapShortcode; } /** * Ensure that trailing shortcodes are followed by an empty paragraph. */ - const trailingShortcode = node.findDescendant(descendant => { + const trailingShortcode = doc.findDescendant(descendant => { const { type, key } = descendant; - return type === 'shortcode' && node.getBlocks().last().key === key; + return type === 'shortcode' && doc.getBlocks().last().key === key; }); if (trailingShortcode) { return change => { const text = Text.create(''); const block = Block.create({ type: 'paragraph', nodes: [ text ] }); - return change.insertNodeByKey(node.key, node.get('nodes').size, block); + return change.insertNodeByKey(doc.key, doc.get('nodes').size, block); }; } } diff --git a/src/components/Widgets/Markdown/serializers/slateRemark.js b/src/components/Widgets/Markdown/serializers/slateRemark.js index a4e6c0debc74..cd6b83c9bcbe 100644 --- a/src/components/Widgets/Markdown/serializers/slateRemark.js +++ b/src/components/Widgets/Markdown/serializers/slateRemark.js @@ -249,7 +249,7 @@ function convertTextNode(node) { /** * Process Slate node leaves in preparation for MDAST transformation. */ -function processLeaves(leaves) { +function processLeaves(leaf) { /** * Get an array of the mark types, converted to their MDAST equivalent * types. From 4799f9566daf670b0ba232909c04e59ad2f6396b Mon Sep 17 00:00:00 2001 From: Shawn Erquhart Date: Thu, 16 Nov 2017 17:50:29 -0500 Subject: [PATCH 7/9] Update Slate to 0.30.0 --- package.json | 6 +- yarn.lock | 864 ++++++++++++++++++++++++++++++--------------------- 2 files changed, 507 insertions(+), 363 deletions(-) diff --git a/package.json b/package.json index b711efa2998b..a75833d4e541 100644 --- a/package.json +++ b/package.json @@ -176,11 +176,11 @@ "remark-stringify": "^3.0.1", "sanitize-filename": "^1.6.1", "semaphore": "^1.0.5", - "slate": "^0.29.0", + "slate": "^0.30.0", "slate-edit-list": "^0.10.1", "slate-edit-table": "^0.12.0", - "slate-plain-serializer": "^0.3.0", - "slate-react": "^0.9.0", + "slate-plain-serializer": "^0.4.0", + "slate-react": "^0.10.16", "slate-soft-break": "^0.6.0", "slug": "^0.9.1", "toml-j0.4": "^1.1.1", diff --git a/yarn.lock b/yarn.lock index 0b0ba15f2478..ac058920c4a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -52,9 +52,17 @@ webpack-dev-middleware "^1.6.0" webpack-hot-middleware "^2.10.0" -"@types/node@^6.0.46": - version "6.0.88" - resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.88.tgz#f618f11a944f6a18d92b5c472028728a3e3d4b66" +"@types/inline-style-prefixer@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/inline-style-prefixer/-/inline-style-prefixer-3.0.1.tgz#8541e636b029124b747952e9a28848286d2b5bf6" + +"@types/node@*": + version "8.0.53" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.53.tgz#396b35af826fa66aad472c8cb7b8d5e277f4e6d8" + +"@types/react@^16.0.18": + version "16.0.24" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.0.24.tgz#a6fd8015892fe8ae3c17453615f7ebdd2301d818" JSONStream@^0.8.4: version "0.8.4" @@ -108,9 +116,9 @@ acorn@^4.0.3, acorn@^4.0.4: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" -acorn@^5.0.0, acorn@^5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7" +acorn@^5.0.0, acorn@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7" airbnb-js-shims@^1.0.0: version "1.3.0" @@ -132,8 +140,8 @@ ajv-keywords@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" ajv-keywords@^2.0.0, ajv-keywords@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.0.tgz#a296e17f7bfae7c1ce4f7e0de53d29cb32162df0" + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" ajv@^4.7.0, ajv@^4.9.1: version "4.11.8" @@ -143,13 +151,13 @@ ajv@^4.7.0, ajv@^4.9.1: json-stable-stringify "^1.0.1" ajv@^5.0.0, ajv@^5.1.0, ajv@^5.1.5, ajv@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.3.tgz#c06f598778c44c6b161abafe3466b81ad1814ed2" + version "5.3.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.3.0.tgz#4414ff74a50879c208ee5fdc826e32c303549eda" dependencies: co "^4.6.0" fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" - json-stable-stringify "^1.0.1" align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" @@ -160,10 +168,11 @@ align-text@^0.1.1, align-text@^0.1.3: repeat-string "^1.5.2" all-contributors-cli@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/all-contributors-cli/-/all-contributors-cli-4.5.0.tgz#42a7867e8c87bcde80e01a4a0de8b52762ae4fb7" + version "4.8.1" + resolved "https://registry.yarnpkg.com/all-contributors-cli/-/all-contributors-cli-4.8.1.tgz#9275ec2b37a7746e6a8bb2e0170c2c3b891a9a27" dependencies: async "^2.0.0-rc.1" + chalk "^2.3.0" inquirer "^3.0.1" lodash "^4.11.2" pify "^2.3.0" @@ -327,8 +336,8 @@ asap@^2.0.6, asap@~2.0.3: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" asn1.js@^4.0.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" + version "4.9.2" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.2.tgz#8117ef4f7ed87cd8f89044b5bff97ac243a16c9a" dependencies: bn.js "^4.0.0" inherits "^2.0.1" @@ -373,8 +382,8 @@ async@^1.3.0, async@^1.4.0, async@^1.5.2: resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" async@^2.0.0-rc.1, async@^2.1.2, async@^2.1.4, async@^2.4.1: - version "2.5.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" + version "2.6.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" dependencies: lodash "^4.14.0" @@ -398,11 +407,11 @@ autoprefixer@^6.0.0, autoprefixer@^6.3.1: postcss-value-parser "^3.2.3" autoprefixer@^7.1.1: - version "7.1.5" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.5.tgz#d65d14b83c7cd1dd7bc801daa00557addf5a06b2" + version "7.1.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.6.tgz#fb933039f74af74a83e71225ce78d9fd58ba84d7" dependencies: - browserslist "^2.5.0" - caniuse-lite "^1.0.30000744" + browserslist "^2.5.1" + caniuse-lite "^1.0.30000748" normalize-range "^0.1.2" num2fraction "^1.2.2" postcss "^6.0.13" @@ -578,6 +587,13 @@ babel-helper-hoist-variables@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" +babel-helper-module-imports@^7.0.0-beta.3: + version "7.0.0-beta.3" + resolved "https://registry.yarnpkg.com/babel-helper-module-imports/-/babel-helper-module-imports-7.0.0-beta.3.tgz#e15764e3af9c8e11810c09f78f498a2bdc71585a" + dependencies: + babel-types "7.0.0-beta.3" + lodash "^4.2.0" + babel-helper-optimise-call-expression@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" @@ -670,11 +686,14 @@ babel-plugin-jest-hoist@^21.2.0: resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz#2cef637259bd4b628a6cace039de5fcd14dbb006" babel-plugin-lodash@^3.2.0: - version "3.2.11" - resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.2.11.tgz#21c8fdec9fe1835efaa737873e3902bdd66d5701" + version "3.3.2" + resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.2.tgz#da3a5b49ba27447f54463f6c4fa81396ccdd463f" dependencies: + babel-helper-module-imports "^7.0.0-beta.3" + babel-types "^6.26.0" glob "^7.1.1" - lodash "^4.17.2" + lodash "^4.17.4" + require-package-name "^2.0.1" babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" @@ -1049,8 +1068,8 @@ babel-polyfill@^6.26.0, babel-polyfill@^6.9.1: regenerator-runtime "^0.10.5" babel-preset-env@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.0.tgz#2de1c782a780a0a5d605d199c957596da43c44e4" + version "1.6.1" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48" dependencies: babel-plugin-check-es2015-constants "^6.22.0" babel-plugin-syntax-trailing-function-commas "^6.22.0" @@ -1190,7 +1209,7 @@ babel-runtime@6.x.x, babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime core-js "^2.4.0" regenerator-runtime "^0.11.0" -babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0, babel-template@^6.3.0, babel-template@^6.7.0: +babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0, babel-template@^6.3.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" dependencies: @@ -1214,6 +1233,14 @@ babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-tr invariant "^2.2.2" lodash "^4.17.4" +babel-types@7.0.0-beta.3: + version "7.0.0-beta.3" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-7.0.0-beta.3.tgz#cd927ca70e0ae8ab05f4aab83778cfb3e6eb20b4" + dependencies: + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^2.0.0" + babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" @@ -1336,12 +1363,12 @@ boom@5.x.x: hoek "4.x.x" bowser@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.7.3.tgz#504bdb43118ca8db9cbbadf28fd60f265af96e4f" + version "1.8.1" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.8.1.tgz#49785777e7302febadb1a5b71d9a646520ed310d" -boxen@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.2.1.tgz#0f11e7fe344edb9397977fc13ede7f64d956481d" +boxen@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.2.2.tgz#3f1d4032c30ffea9d4b02c322eaf2ea741dcbce5" dependencies: ansi-align "^2.0.0" camelcase "^4.0.0" @@ -1383,8 +1410,8 @@ browserify-aes@0.4.0: inherits "^2.0.1" browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.0.8" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.8.tgz#c8fa3b1b7585bb7ba77c5560b60996ddec6d5309" + version "1.1.1" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" dependencies: buffer-xor "^1.0.3" cipher-base "^1.0.0" @@ -1434,6 +1461,12 @@ browserify-zlib@^0.1.4: dependencies: pako "~0.2.0" +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + dependencies: + pako "~1.0.5" + browserslist@^1.1.1, browserslist@^1.1.3, browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: version "1.7.7" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" @@ -1441,12 +1474,12 @@ browserslist@^1.1.1, browserslist@^1.1.3, browserslist@^1.3.6, browserslist@^1.5 caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" -browserslist@^2.0.0, browserslist@^2.1.2, browserslist@^2.5.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.5.1.tgz#68e4bc536bbcc6086d62843a2ffccea8396821c6" +browserslist@^2.0.0, browserslist@^2.1.2, browserslist@^2.5.1: + version "2.9.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.9.0.tgz#706aca15c53be15610f466e348cbfa0c00a6a379" dependencies: - caniuse-lite "^1.0.30000744" - electron-to-chromium "^1.3.24" + caniuse-lite "^1.0.30000760" + electron-to-chromium "^1.3.27" bser@^2.0.0: version "2.0.0" @@ -1483,8 +1516,8 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" cacache@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.0.tgz#3bba88bf62b0773fd9a691605f60c9d3c595e853" + version "10.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.1.tgz#3e05f6e616117d9b54665b1b20c8aeb93ea5d36f" dependencies: bluebird "^3.5.0" chownr "^1.0.1" @@ -1571,12 +1604,12 @@ caniuse-api@^2.0.0: lodash.uniq "^4.5.0" caniuse-db@^1.0.30000187, caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000744" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000744.tgz#00758ff7dd5f7138d34a15608dccf71a59656ffe" + version "1.0.30000765" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000765.tgz#15555432420baacbb169bc51e5b6de804c9994b4" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000744, caniuse-lite@^1.0.30000745: - version "1.0.30000745" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000745.tgz#20d6fede1157a4935133502946fc7e0e6b880da5" +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000745, caniuse-lite@^1.0.30000748, caniuse-lite@^1.0.30000760: + version "1.0.30000765" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000765.tgz#aa1a75019276b48463c0fca2a5257fb9f26a7c9d" capture-stack-trace@^1.0.0: version "1.0.0" @@ -1611,9 +1644,9 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" dependencies: ansi-styles "^3.1.0" escape-string-regexp "^1.0.5" @@ -1751,8 +1784,8 @@ clone-regexp@^1.0.0: is-supported-regexp-flag "^1.0.0" clone@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" co@^4.6.0: version "4.6.0" @@ -1773,8 +1806,8 @@ collapse-white-space@^1.0.0, collapse-white-space@^1.0.2: resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.3.tgz#4b906f670e5a963a87b76b0e1689643341b6023c" color-convert@^1.3.0, color-convert@^1.8.2, color-convert@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" dependencies: color-name "^1.1.1" @@ -1866,10 +1899,10 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" compressible@~2.0.11: - version "2.0.11" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.11.tgz#16718a75de283ed8e604041625a2064586797d8a" + version "2.0.12" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.12.tgz#c59a5c99db76767e9876500e271ef63b3493bd66" dependencies: - mime-db ">= 1.29.0 < 2" + mime-db ">= 1.30.0 < 2" compression@^1.5.2: version "1.7.1" @@ -1907,8 +1940,8 @@ configstore@^3.0.0: xdg-basedir "^3.0.0" connect-history-api-fallback@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" + version "1.5.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" console-browserify@^1.1.0: version "1.1.0" @@ -1937,8 +1970,8 @@ content-disposition@0.5.2: resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" content-type-parser@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94" + version "1.0.2" + resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7" content-type@~1.0.4: version "1.0.4" @@ -2046,8 +2079,8 @@ create-react-class@^15.5.1, create-react-class@^15.5.2, create-react-class@^15.6 object-assign "^4.1.1" cross-env@^5.0.2: - version "5.0.5" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.0.5.tgz#4383d364d9660873dd185b398af3bfef5efffef3" + version "5.1.1" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.1.1.tgz#b6d8ab97f304c0f71dae7277b75fe424c08dfa74" dependencies: cross-spawn "^5.1.0" is-windows "^1.0.0" @@ -2089,8 +2122,8 @@ crypto-browserify@3.3.0: sha.js "2.2.6" crypto-browserify@^3.11.0: - version "3.11.1" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.1.tgz#948945efc6757a400d6e5e5af47194d10064279f" + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" dependencies: browserify-cipher "^1.0.0" browserify-sign "^4.0.0" @@ -2102,12 +2135,13 @@ crypto-browserify@^3.11.0: pbkdf2 "^3.0.3" public-encrypt "^4.0.0" randombytes "^2.0.0" + randomfill "^1.0.3" crypto-random-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" -css-color-function@^1.3.0: +css-color-function@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/css-color-function/-/css-color-function-1.3.3.tgz#8ed24c2c0205073339fafa004bc8c141fccb282e" dependencies: @@ -2357,14 +2391,14 @@ dashdash@^1.12.0: assert-plus "^1.0.0" date-fns@^1.27.2: - version "1.28.5" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.28.5.tgz#257cfc45d322df45ef5658665967ee841cd73faf" + version "1.29.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" -debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.3.2, debug@^2.6.0, debug@^2.6.3, debug@^2.6.6, debug@^2.6.8: +debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.3.2, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: @@ -2441,8 +2475,8 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" depcheck@^0.6.3: - version "0.6.7" - resolved "https://registry.yarnpkg.com/depcheck/-/depcheck-0.6.7.tgz#6b3d1e993931e09ee673d3507d3175db734823e6" + version "0.6.8" + resolved "https://registry.yarnpkg.com/depcheck/-/depcheck-0.6.8.tgz#822bd72efe900afd66b78b59dd269ba63b10020c" dependencies: babel-traverse "^6.7.3" babylon "^6.1.21" @@ -2454,7 +2488,7 @@ depcheck@^0.6.3: minimatch "^3.0.2" require-package-name "^2.0.1" walkdir "0.0.11" - yargs "^6.0.0" + yargs "^8.0.2" depd@1.1.1, depd@~1.1.1: version "1.1.1" @@ -2491,13 +2525,17 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" +detect-libc@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.2.tgz#71ad5d204bf17a6a6ca8f450c61454066ef461e1" + detect-node@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" diff@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" + version "3.4.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" diffie-hellman@^5.0.0: version "5.0.2" @@ -2545,13 +2583,20 @@ dns-txt@^2.0.2: dependencies: buffer-indexof "^1.0.0" -doctrine@1.3.x, doctrine@^1.2.2: +doctrine@1.3.x: version "1.3.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.3.0.tgz#13e75682b55518424276f7c173783456ef913d26" dependencies: esutils "^2.0.2" isarray "^1.0.0" +doctrine@^1.2.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + doctrine@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" @@ -2609,13 +2654,20 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -domutils@1.5.1, domutils@^1.5.1: +domutils@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" dependencies: dom-serializer "0" domelementtype "1" +domutils@^1.5.1: + version "1.6.2" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.6.2.tgz#1958cc0b4c9426e9ed367fb1c8e854891b0fa3ff" + dependencies: + dom-serializer "0" + domelementtype "1" + dot-prop@^4.1.0, dot-prop@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" @@ -2665,9 +2717,9 @@ ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" -electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.24: - version "1.3.24" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.24.tgz#9b7b88bb05ceb9fa016a177833cc2dde388f21b6" +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.27: + version "1.3.27" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz#78ecb8a399066187bb374eede35d9c70565a803d" elegant-spinner@^1.0.1: version "1.0.1" @@ -2731,38 +2783,39 @@ entities@^1.1.1, entities@~1.1.1: resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" enzyme-adapter-react-16@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.2.tgz#8c6f431f17c69e1e9eeb25ca4bd92f31971eb2dd" + version "1.1.0" + resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.0.tgz#86c5db7c10f0be6ec25d54ca41b59f2abb397cf4" dependencies: - enzyme-adapter-utils "^1.0.0" + enzyme-adapter-utils "^1.1.0" lodash "^4.17.4" object.assign "^4.0.4" object.values "^1.0.4" prop-types "^15.5.10" react-test-renderer "^16.0.0-0" -enzyme-adapter-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.0.0.tgz#e94eee63da9a798d498adb1162a2102ed04fc638" +enzyme-adapter-utils@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.1.1.tgz#689de8853f0751710590d6dfa730ff4056ea36b2" dependencies: lodash "^4.17.4" object.assign "^4.0.4" prop-types "^15.5.10" enzyme@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.1.0.tgz#d8ca84085790fbcec6ed40badd14478faee4c25a" + version "3.2.0" + resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.2.0.tgz#998bdcda0fc71b8764a0017f7cc692c943f54a7a" dependencies: cheerio "^1.0.0-rc.2" function.prototype.name "^1.0.3" + has "^1.0.1" is-subset "^0.1.1" lodash "^4.17.4" object-is "^1.0.1" object.assign "^4.0.4" object.entries "^1.0.4" object.values "^1.0.4" - raf "^3.3.2" - rst-selector-parser "^2.2.2" + raf "^3.4.0" + rst-selector-parser "^2.2.3" errno@^0.1.3, errno@^0.1.4: version "0.1.4" @@ -2782,7 +2835,7 @@ error-stack-parser@^1.3.3, error-stack-parser@^1.3.6: dependencies: stackframe "^0.3.1" -es-abstract@^1.4.3, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0, es-abstract@^1.8.2: +es-abstract@^1.4.3, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0, es-abstract@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.9.0.tgz#690829a07cae36b222e7fd9b75c0d0573eb25227" dependencies: @@ -2808,24 +2861,24 @@ es3ify@^0.1.3: jstransform "~3.0.0" through "~2.3.4" -es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.30" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.30.tgz#7141a16836697dbabfaaaeee41495ce29f52c939" +es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.35" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.35.tgz#18ee858ce6a3c45c7d79e91c15fcca9ec568494f" dependencies: - es6-iterator "2" - es6-symbol "~3.1" + es6-iterator "~2.0.1" + es6-symbol "~3.1.1" es5-shim@^4.5.9: version "4.5.9" resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.5.9.tgz#2a1e2b9e583ff5fed0c20a3ee2cbf3f75230a5c0" -es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" +es6-iterator@^2.0.1, es6-iterator@~2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" dependencies: d "1" - es5-ext "^0.10.14" - es6-symbol "^3.1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" es6-map@^0.1.3: version "0.1.5" @@ -2856,7 +2909,7 @@ es6-shim@^0.35.1, es6-shim@^0.35.3: version "0.35.3" resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.3.tgz#9bfb7363feffff87a6cdb6cd93e405ec3c4b6f26" -es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: +es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" dependencies: @@ -3053,10 +3106,10 @@ esmangle-evaluator@^1.0.0: resolved "https://registry.yarnpkg.com/esmangle-evaluator/-/esmangle-evaluator-1.0.1.tgz#620d866ef4861b3311f75766d52a8572bb3c6336" espree@^3.4.0: - version "3.5.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.1.tgz#0c988b8ab46db53100a1954ae4ba995ddd27d87e" + version "3.5.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.2.tgz#756ada8b979e9dcfcdb30aad8d1a9304a905e1ca" dependencies: - acorn "^5.1.1" + acorn "^5.2.1" acorn-jsx "^3.0.0" esprima-fb@~15001.1001.0-dev-harmony-fb: @@ -3190,6 +3243,12 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + dependencies: + homedir-polyfill "^1.0.1" + expect@^21.2.1: version "21.2.1" resolved "https://registry.yarnpkg.com/expect/-/expect-21.2.1.tgz#003ac2ac7005c3c29e73b38a272d4afadd6d1d7b" @@ -3209,8 +3268,8 @@ exports-loader@^0.6.4: source-map "0.5.x" express@^4.13.3: - version "4.16.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.16.1.tgz#6b33b560183c9b253b7b62144df33a4654ac9ed0" + version "4.16.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c" dependencies: accepts "~1.3.4" array-flatten "1.1.1" @@ -3268,8 +3327,8 @@ extglob@^0.3.1: is-extglob "^1.0.0" extract-text-webpack-plugin@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.1.tgz#605a8893faca1dd49bb0d2ca87493f33fd43d102" + version "3.0.2" + resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7" dependencies: async "^2.4.1" loader-utils "^1.1.0" @@ -3293,6 +3352,10 @@ fast-deep-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" @@ -3445,14 +3508,14 @@ flush-write-stream@^1.0.0: readable-stream "^2.0.4" focus-trap-react@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/focus-trap-react/-/focus-trap-react-3.0.3.tgz#96f934fba39dae9b80a5d2b4839a919c0bc4fa7e" + version "3.0.5" + resolved "https://registry.yarnpkg.com/focus-trap-react/-/focus-trap-react-3.0.5.tgz#8fb381b92eafe075c2406297d1da618650d37143" dependencies: focus-trap "^2.0.1" focus-trap@^2.0.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-2.3.0.tgz#07c91964867d346315f4f5f8df88bf96455316e2" + version "2.3.1" + resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-2.3.1.tgz#f4fb86cfe6da38dc652b373e9f42ba476eab1c14" dependencies: tabbable "^1.0.3" @@ -3512,8 +3575,8 @@ from2@^2.1.0: readable-stream "^2.0.0" fs-readdir-recursive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" fs-write-stream-atomic@^1.0.8: version "1.0.10" @@ -3529,11 +3592,11 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" fsevents@^1.0.0, fsevents@^1.0.14, fsevents@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" + version "1.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" dependencies: nan "^2.3.0" - node-pre-gyp "^0.6.36" + node-pre-gyp "^0.6.39" fstream-ignore@^1.0.5: version "1.0.5" @@ -3673,21 +3736,29 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@^0.2.0: - version "0.2.3" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" +global-dirs@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.0.tgz#10d34039e0df04272e262cf24224f7209434df4f" dependencies: - global-prefix "^0.1.4" - is-windows "^0.2.0" + ini "^1.3.4" -global-prefix@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" dependencies: - homedir-polyfill "^1.0.0" + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" ini "^1.3.4" - is-windows "^0.2.0" - which "^1.2.12" + is-windows "^1.0.1" + which "^1.2.14" global@^4.3.0: version "4.3.2" @@ -3753,8 +3824,8 @@ got@^6.7.1: url-parse-lax "^1.0.0" gotrue-js@^0.9.11: - version "0.9.13" - resolved "https://registry.yarnpkg.com/gotrue-js/-/gotrue-js-0.9.13.tgz#99041d0a5e88a838ae479993412e27a5cd8c3850" + version "0.9.14" + resolved "https://registry.yarnpkg.com/gotrue-js/-/gotrue-js-0.9.14.tgz#1cc85210a0ede5ba9e30932bd44df37146a1ee48" dependencies: micro-api-client "^3.2.0" @@ -3763,8 +3834,8 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" gray-matter@^3.0.6: - version "3.0.8" - resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-3.0.8.tgz#44bdaff586ab4e61e3fe2d30d577da0e502afb93" + version "3.1.1" + resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-3.1.1.tgz#101f80d9e69eeca6765cdce437705b18f40876ac" dependencies: extend-shallow "^2.0.1" js-yaml "^3.10.0" @@ -3780,8 +3851,8 @@ handle-thing@^1.2.5: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" handlebars@^4.0.3: - version "4.0.10" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" + version "4.0.11" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" dependencies: async "^1.4.0" optimist "^0.6.1" @@ -4011,7 +4082,7 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" -homedir-polyfill@^1.0.0: +homedir-polyfill@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" dependencies: @@ -4043,8 +4114,8 @@ html-comment-regex@^1.1.0: resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" html-encoding-sniffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz#79bf7a785ea495fe66165e734153f363ff5437da" + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" dependencies: whatwg-encoding "^1.0.1" @@ -4132,14 +4203,14 @@ https-browserify@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + hyphenate-style-name@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz#31160a36930adaf1fc04c6074f7eb41465d4ec4b" -iconv-lite@0.4.13: - version "0.4.13" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" - iconv-lite@0.4.19, iconv-lite@^0.4.17, iconv-lite@~0.4.13: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" @@ -4169,8 +4240,8 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" ignore@^3.2.0: - version "3.3.5" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6" + version "3.3.7" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" immediate@~3.0.5: version "3.0.6" @@ -4184,6 +4255,13 @@ import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" +import-local@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-0.1.1.tgz#b1179572aacdc11c6a91009fb430dbcab5f668a8" + dependencies: + pkg-dir "^2.0.0" + resolve-cwd "^2.0.0" + imports-loader@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/imports-loader/-/imports-loader-0.7.1.tgz#f204b5f34702a32c1db7d48d89d5e867a0441253" @@ -4316,8 +4394,8 @@ ipaddr.js@1.5.2: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0" irregular-plurals@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.3.0.tgz#7af06931bdf74be33dcf585a13e06fccc16caecf" + version "1.4.0" + resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.4.0.tgz#2ca9b033651111855412f16be5d77c62a458a766" is-absolute-url@^2.0.0: version "2.1.0" @@ -4360,8 +4438,8 @@ is-binary-path@^1.0.0: binary-extensions "^1.0.0" is-buffer@^1.1.4, is-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" is-builtin-module@^1.0.0: version "1.0.0" @@ -4480,6 +4558,13 @@ is-in-browser@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" +is-installed-globally@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + dependencies: + global-dirs "^0.1.0" + is-path-inside "^1.0.0" + is-my-json-valid@^2.10.0: version "2.16.1" resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11" @@ -4629,7 +4714,7 @@ is-windows@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" -is-windows@^1.0.0: +is-windows@^1.0.0, is-windows@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9" @@ -4683,17 +4768,17 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" istanbul-api@^1.1.1: - version "1.1.14" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.14.tgz#25bc5701f7c680c0ffff913de46e3619a3a6e680" + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.2.1.tgz#0c60a0515eb11c7d65c6b50bba2c6e999acd8620" dependencies: async "^2.1.4" fileset "^2.0.2" istanbul-lib-coverage "^1.1.1" - istanbul-lib-hook "^1.0.7" - istanbul-lib-instrument "^1.8.0" - istanbul-lib-report "^1.1.1" - istanbul-lib-source-maps "^1.2.1" - istanbul-reports "^1.1.2" + istanbul-lib-hook "^1.1.0" + istanbul-lib-instrument "^1.9.1" + istanbul-lib-report "^1.1.2" + istanbul-lib-source-maps "^1.2.2" + istanbul-reports "^1.1.3" js-yaml "^3.7.0" mkdirp "^0.5.1" once "^1.4.0" @@ -4702,15 +4787,15 @@ istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" -istanbul-lib-hook@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz#dd6607f03076578fe7d6f2a630cf143b49bacddc" +istanbul-lib-hook@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz#8538d970372cb3716d53e55523dd54b557a8d89b" dependencies: append-transform "^0.4.0" -istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.8.0.tgz#66f6c9421cc9ec4704f76f2db084ba9078a2b532" +istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e" dependencies: babel-generator "^6.18.0" babel-template "^6.16.0" @@ -4720,28 +4805,28 @@ istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.5, istanbul-lib-ins istanbul-lib-coverage "^1.1.1" semver "^5.3.0" -istanbul-lib-report@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#f0e55f56655ffa34222080b7a0cd4760e1405fc9" +istanbul-lib-report@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz#922be27c13b9511b979bd1587359f69798c1d425" dependencies: istanbul-lib-coverage "^1.1.1" mkdirp "^0.5.1" path-parse "^1.0.5" supports-color "^3.1.2" -istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz#a6fe1acba8ce08eebc638e572e294d267008aa0c" +istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz#750578602435f28a0c04ee6d7d9e0f2960e62c1c" dependencies: - debug "^2.6.3" + debug "^3.1.0" istanbul-lib-coverage "^1.1.1" mkdirp "^0.5.1" rimraf "^2.6.1" source-map "^0.5.3" -istanbul-reports@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.2.tgz#0fb2e3f6aa9922bd3ce45d05d8ab4d5e8e07bd4f" +istanbul-reports@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.3.tgz#3b9e1e8defb6d18b1d425da8e8b32c5a163f2d10" dependencies: handlebars "^4.0.3" @@ -4974,7 +5059,11 @@ jju@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jju/-/jju-1.3.0.tgz#dadd9ef01924bc728b03f2f7979bdbd62f7a2aaa" -js-base64@^2.1.9, js-base64@~2.1.8: +js-base64@^2.1.9: + version "2.3.2" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.3.2.tgz#a79a923666372b580f8e27f51845c6f7e8fbfbaf" + +js-base64@~2.1.8: version "2.1.9" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" @@ -5001,8 +5090,8 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" jschardet@^1.4.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.1.tgz#c519f629f86b3a5bedba58a88d311309eec097f9" + version "1.6.0" + resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.6.0.tgz#c7d1a71edcff2839db2f9ec30fc5d5ebd3c1a678" jsdom@^9.12.0: version "9.12.0" @@ -5126,6 +5215,10 @@ keycode@^2.1.1, keycode@^2.1.2: version "2.1.9" resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.1.9.tgz#964a23c54e4889405b4861a5c9f0480d45141dfa" +killable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b" + kind-of@^3.0.2: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -5139,8 +5232,8 @@ kind-of@^4.0.0: is-buffer "^1.1.5" kind-of@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.0.2.tgz#f57bec933d9a2209ffa96c5c08343607b7035fda" + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" known-css-properties@^0.2.0: version "0.2.0" @@ -5221,8 +5314,8 @@ listr-update-renderer@^0.2.0: strip-ansi "^3.0.1" listr-verbose-renderer@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.0.tgz#44dc01bb0c34a03c572154d4d08cde9b1dc5620f" + version "0.4.1" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35" dependencies: chalk "^1.1.3" cli-cursor "^1.0.2" @@ -5291,8 +5384,8 @@ loader-utils@^1.0.2, loader-utils@^1.1.0: json5 "^0.5.0" localforage@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.5.0.tgz#6b994e19b56611fa85df3992df397ac4ab66e815" + version "1.5.3" + resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.5.3.tgz#698aa16af1022340b240be9d93192e8af022ff16" dependencies: lie "3.0.2" @@ -5431,12 +5524,12 @@ log-update@^1.0.2: cli-cursor "^1.0.2" loglevel@^1.4.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.5.0.tgz#3863984a2c326b986fbb965f378758a6dc8a4324" + version "1.6.0" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.0.tgz#ae0caa561111498c5ba13723d6fb631d24003934" longest-streak@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.1.tgz#42d291b5411e40365c00e63193497e2247316e35" + version "2.0.2" + resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.2.tgz#2421b6ba939a443bb9ffebf596585a50b4c38e2e" longest@^1.0.1: version "1.0.1" @@ -5477,10 +5570,10 @@ macaddress@^0.2.8: resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" make-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978" + version "1.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51" dependencies: - pify "^2.3.0" + pify "^3.0.0" makeerror@1.0.x: version "1.0.11" @@ -5541,8 +5634,8 @@ mdast-util-definitions@^1.2.0, mdast-util-definitions@^1.2.2: unist-util-visit "^1.0.0" mdast-util-to-hast@^2.2.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-2.4.3.tgz#cd7874c9832627f134fd3756163873f93f2b1de3" + version "2.5.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-2.5.0.tgz#f087844d255c7540f36906da30ba106c0ee5ee2f" dependencies: collapse-white-space "^1.0.0" detab "^2.0.0" @@ -5654,7 +5747,11 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -"mime-db@>= 1.29.0 < 2", mime-db@~1.30.0: +"mime-db@>= 1.30.0 < 2": + version "1.31.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.31.0.tgz#a49cd8f3ebf3ed1a482b60561d9105ad40ca74cb" + +mime-db@~1.30.0: version "1.30.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" @@ -5664,11 +5761,11 @@ mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, dependencies: mime-db "~1.30.0" -mime@1.3.x, mime@^1.3.4: +mime@1.3.x: version "1.3.6" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" -mime@1.4.1: +mime@1.4.1, mime@^1.3.4: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" @@ -5702,7 +5799,7 @@ minimatch@3.0.3: dependencies: brace-expansion "^1.0.0" -minimist@0.0.8, minimist@~0.0.1: +minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" @@ -5710,6 +5807,10 @@ minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@~1. version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + mississippi@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-1.3.0.tgz#d201583eb12327e3c5c1642a404a9cacf94e34f5" @@ -5736,8 +5837,8 @@ mobx@^2.3.4: resolved "https://registry.yarnpkg.com/mobx/-/mobx-2.7.0.tgz#cf3d82d18c0ca7f458d8f2a240817b3dc7e54a01" moment@^2.11.2: - version "2.18.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" + version "2.19.2" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.2.tgz#8a7f774c95a64550b4c7ebd496683908f9419dbe" move-concurrently@^1.0.1: version "1.0.1" @@ -5783,8 +5884,8 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" nan@^2.3.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" + version "2.8.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" natural-compare@^1.4.0: version "1.4.0" @@ -5880,28 +5981,28 @@ node-libs-browser@^1.0.0: vm-browserify "0.0.4" node-libs-browser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646" + version "2.1.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" dependencies: assert "^1.1.1" - browserify-zlib "^0.1.4" + browserify-zlib "^0.2.0" buffer "^4.3.0" console-browserify "^1.1.0" constants-browserify "^1.0.0" crypto-browserify "^3.11.0" domain-browser "^1.1.1" events "^1.0.0" - https-browserify "0.0.1" - os-browserify "^0.2.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" path-browserify "0.0.0" - process "^0.11.0" + process "^0.11.10" punycode "^1.2.4" querystring-es3 "^0.2.0" - readable-stream "^2.0.5" + readable-stream "^2.3.3" stream-browserify "^2.0.1" - stream-http "^2.3.1" - string_decoder "^0.10.25" - timers-browserify "^2.0.2" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" tty-browserify "0.0.0" url "^0.11.0" util "^0.10.3" @@ -5916,10 +6017,11 @@ node-notifier@^5.0.2: shellwords "^0.1.0" which "^1.2.12" -node-pre-gyp@^0.6.36: - version "0.6.38" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.38.tgz#e92a20f83416415bb4086f6d1fb78b3da73d113d" +node-pre-gyp@^0.6.39: + version "0.6.39" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" dependencies: + detect-libc "^1.0.2" hawk "3.1.3" mkdirp "^0.5.1" nopt "^4.0.1" @@ -5982,8 +6084,8 @@ normalize.css@^4.2.0: resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-4.2.0.tgz#21d66cc557154d4379fd1e079ec7de58a379b099" npm-check@^5.2.3: - version "5.4.5" - resolved "https://registry.yarnpkg.com/npm-check/-/npm-check-5.4.5.tgz#ee2c601b7015ed892b87c923c98e000ee36736ef" + version "5.5.2" + resolved "https://registry.yarnpkg.com/npm-check/-/npm-check-5.5.2.tgz#6a2cd4bcd5d9f6ebcc0be2ed0a5782feb9106600" dependencies: babel-runtime "^6.6.1" callsite-record "^3.0.0" @@ -5992,7 +6094,7 @@ npm-check@^5.2.3: depcheck "^0.6.3" execa "^0.2.2" giturl "^1.0.0" - global-modules "^0.2.0" + global-modules "^1.0.0" globby "^4.0.0" inquirer "^0.12.0" is-ci "^1.0.8" @@ -6061,8 +6163,8 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" "nwmatcher@>= 1.3.9 < 2.0.0": - version "1.4.2" - resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.2.tgz#c5e545ab40d22a56b0326531c4beaed7a888b3ea" + version "1.4.3" + resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c" oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" @@ -6205,6 +6307,10 @@ os-browserify@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -6283,6 +6389,10 @@ pako@~0.2.0: version "0.2.9" resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" +pako@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + parallel-transform@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" @@ -6340,10 +6450,10 @@ parse5@^2.1.5: resolved "https://registry.yarnpkg.com/parse5/-/parse5-2.2.3.tgz#0c4fc41c1000c5e6b93d48b03f8083837834e9f6" parse5@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.2.tgz#05eff57f0ef4577fb144a79f8b9a967a6cc44510" + version "3.0.3" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" dependencies: - "@types/node" "^6.0.46" + "@types/node" "*" parseurl@~1.3.2: version "1.3.2" @@ -6538,10 +6648,10 @@ postcss-calc@^6.0.0: reduce-css-calc "^2.0.0" postcss-color-function@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-color-function/-/postcss-color-function-4.0.0.tgz#7e0106f4f6a1ecb1ad5b3a8553ace5e828aae187" + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-function/-/postcss-color-function-4.0.1.tgz#402b3f2cebc3f6947e618fb6be3654fbecef6444" dependencies: - css-color-function "^1.3.0" + css-color-function "~1.3.3" postcss "^6.0.1" postcss-message-helpers "^2.0.0" postcss-value-parser "^3.3.0" @@ -6819,8 +6929,8 @@ postcss-load-plugins@^2.3.0: object-assign "^4.1.0" postcss-loader@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.0.7.tgz#4d2da1489cee0a14f72c0d9440c9ee7eded34345" + version "2.0.8" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.0.8.tgz#8c67ddb029407dfafe684a406cfc16bad2ce0814" dependencies: loader-utils "^1.1.0" postcss "^6.0.0" @@ -6953,8 +7063,8 @@ postcss-minify-selectors@^4.0.0-rc.2: postcss-selector-parser "^3.0.0-rc.0" postcss-modules-extract-imports@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85" + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb" dependencies: postcss "^6.0.1" @@ -7201,8 +7311,8 @@ postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.1.1, postcss-selector uniq "^1.0.1" postcss-selector-parser@^3.0.0-rc.0: - version "3.0.0-rc.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.0.0-rc.0.tgz#dfb74f1cf3bc043d5692e37203170ac2da40a150" + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" dependencies: dot-prop "^4.1.1" indexes-of "^1.0.1" @@ -7279,10 +7389,10 @@ postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0. supports-color "^3.2.3" postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.13, postcss@^6.0.5, postcss@^6.0.6: - version "6.0.13" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.13.tgz#b9ecab4ee00c89db3ec931145bd9590bbf3f125f" + version "6.0.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.14.tgz#5534c72114739e75d0afcf017db853099f562885" dependencies: - chalk "^2.1.0" + chalk "^2.3.0" source-map "^0.6.1" supports-color "^4.4.0" @@ -7306,14 +7416,14 @@ pretty-format@^21.2.1: ansi-styles "^3.2.0" private@^0.1.6, private@^0.1.7, private@~0.1.5: - version "0.1.7" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" -process@^0.11.0, process@~0.11.0: +process@^0.11.0, process@^0.11.10, process@~0.11.0: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -7330,11 +7440,11 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" promise.prototype.finally@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.0.1.tgz#51ba2fa0a4cba5cbca54da818a8da8f24fc68f39" + version "3.1.0" + resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.0.tgz#66f161b1643636e50e7cf201dc1b84a857f3864e" dependencies: define-properties "^1.1.2" - es-abstract "^1.8.2" + es-abstract "^1.9.0" function-bind "^1.1.1" promise@^7.1.1: @@ -7381,8 +7491,8 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" pump@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.2.tgz#3b3ee6512f94f0e575538c17995f9f16990a5d51" + version "1.0.3" + resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -7404,8 +7514,8 @@ punycode@^1.2.4, punycode@^1.4.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" q@^1.1.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" qs@6.5.1, qs@^6.1.0, qs@^6.2.0, qs@~6.5.1: version "6.5.1" @@ -7438,12 +7548,6 @@ querystringify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" -raf@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.3.2.tgz#0c13be0b5b49b46f76d6669248d527cf2b02fe27" - dependencies: - performance-now "^2.1.0" - raf@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.0.tgz#a28876881b4bc2ca9117d4138163ddb80f781575" @@ -7472,12 +7576,19 @@ randomatic@^1.1.3: is-number "^3.0.0" kind-of "^4.0.0" -randombytes@^2.0.0, randombytes@^2.0.1: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" dependencies: safe-buffer "^5.1.0" +randomfill@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.3.tgz#b96b7df587f01dd91726c418f30553b1418e3d62" + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + range-parser@^1.0.3, range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" @@ -7492,8 +7603,8 @@ raw-body@2.3.2: unpipe "1.0.0" rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: - version "1.2.1" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" + version "1.2.2" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077" dependencies: deep-extend "~0.4.0" ini "~1.3.0" @@ -7524,15 +7635,15 @@ react-css-themr@^2.1.2: invariant "^2.2.1" react-datetime@^2.6.0: - version "2.10.3" - resolved "https://registry.yarnpkg.com/react-datetime/-/react-datetime-2.10.3.tgz#9807a7d9be1dd4ee01b3466b0416614e3543378e" + version "2.11.0" + resolved "https://registry.yarnpkg.com/react-datetime/-/react-datetime-2.11.0.tgz#6560a8e5b81f7e52986083dc2e8cb94bb74528ea" dependencies: create-react-class "^15.5.2" object-assign "^3.0.0" prop-types "^15.5.7" react-onclickoutside "^6.5.0" -react-deep-force-update@^2.0.1: +react-deep-force-update@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-2.1.1.tgz#8ea4263cd6455a050b37445b3f08fd839d86e909" @@ -7558,8 +7669,8 @@ react-dom-factories@^1.0.0: resolved "https://registry.yarnpkg.com/react-dom-factories/-/react-dom-factories-1.0.2.tgz#eb7705c4db36fb501b3aa38ff759616aa0ff96e0" react-dom@^16.0.0: - version "16.0.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.0.0.tgz#9cc3079c3dcd70d4c6e01b84aab2a7e34c303f58" + version "16.1.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.1.1.tgz#b2e331b6d752faf1a2d31399969399a41d8d45f8" dependencies: fbjs "^0.8.16" loose-envify "^1.1.0" @@ -7579,15 +7690,14 @@ react-fuzzy@^0.2.3: fuse.js "^2.2.0" react-hot-loader@^3.0.0-beta.7: - version "3.0.0-beta.7" - resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-3.0.0-beta.7.tgz#d5847b8165d731c4d5b30d86d5d4716227a0fa83" + version "3.1.3" + resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-3.1.3.tgz#6f92877326958c7cb0134b512474517869126082" dependencies: - babel-template "^6.7.0" global "^4.3.0" - react-deep-force-update "^2.0.1" + react-deep-force-update "^2.1.1" react-proxy "^3.0.0-alpha.0" redbox-react "^1.3.6" - source-map "^0.4.4" + source-map "^0.6.1" react-immutable-proptypes@^2.1.0: version "2.1.0" @@ -7622,12 +7732,12 @@ react-modal@^1.2.1: react-dom-factories "^1.0.0" react-onclickoutside@^6.5.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/react-onclickoutside/-/react-onclickoutside-6.6.0.tgz#8526d0675fad26558e9f0a400c983b813c99ef3c" + version "6.7.0" + resolved "https://registry.yarnpkg.com/react-onclickoutside/-/react-onclickoutside-6.7.0.tgz#997a4d533114c9a0a104913638aa26afc084f75c" react-portal@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/react-portal/-/react-portal-3.1.0.tgz#865c44fb72a1da106c649206936559ce891ee899" + version "3.2.0" + resolved "https://registry.yarnpkg.com/react-portal/-/react-portal-3.2.0.tgz#4224e19b2b05d5cbe730a7ba0e34ec7585de0043" dependencies: prop-types "^15.5.8" @@ -7700,25 +7810,28 @@ react-sortable-hoc@^0.6.8: prop-types "^15.5.7" react-split-pane@^0.1.66: - version "0.1.66" - resolved "https://registry.yarnpkg.com/react-split-pane/-/react-split-pane-0.1.66.tgz#369085dd07ec1237bda123e73813dcc7dc6502c1" + version "0.1.71" + resolved "https://registry.yarnpkg.com/react-split-pane/-/react-split-pane-0.1.71.tgz#19b1b30638655e655f9f5fe57b1ae7cc6c151829" dependencies: + "@types/inline-style-prefixer" "^3.0.0" + "@types/react" "^16.0.18" inline-style-prefixer "^3.0.6" prop-types "^15.5.10" react-style-proptype "^3.0.0" react-style-proptype@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/react-style-proptype/-/react-style-proptype-3.0.0.tgz#89e0b646f266c656abb0f0dd8202dbd5036c31e6" + version "3.1.0" + resolved "https://registry.yarnpkg.com/react-style-proptype/-/react-style-proptype-3.1.0.tgz#c8912fc13460f5b0c1ec1114c729d535b52b8073" dependencies: prop-types "^15.5.4" react-test-renderer@^16.0.0, react-test-renderer@^16.0.0-0: - version "16.0.0" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.0.0.tgz#9fe7b8308f2f71f29fc356d4102086f131c9cb15" + version "16.1.1" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.1.1.tgz#a05184688d564be799f212449262525d1e350537" dependencies: fbjs "^0.8.16" object-assign "^4.1.1" + prop-types "^15.6.0" react-themeable@^1.1.0: version "1.1.0" @@ -7772,8 +7885,8 @@ react-waypoint@^7.1.0: prop-types "^15.0.0" react@^16.0.0: - version "16.0.0" - resolved "https://registry.yarnpkg.com/react/-/react-16.0.0.tgz#ce7df8f1941b036f02b2cca9dbd0cb1f0e855e2d" + version "16.1.1" + resolved "https://registry.yarnpkg.com/react/-/react-16.1.1.tgz#d5c4ef795507e3012282dd51261ff9c0e824fe1f" dependencies: fbjs "^0.8.16" loose-envify "^1.1.0" @@ -7822,7 +7935,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.2.9: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.2.9, readable-stream@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: @@ -7915,8 +8028,8 @@ reduce-css-calc@^1.2.6, reduce-css-calc@^1.2.7: reduce-function-call "^1.0.1" reduce-css-calc@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-2.1.0.tgz#a7a334e26631baf959bbe131ad8469ae443c408a" + version "2.1.1" + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-2.1.1.tgz#f4ecd7a00ec3e5683773f208067ad7da117b9db0" dependencies: css-unit-converter "^1.1.1" postcss-value-parser "^3.3.0" @@ -8197,10 +8310,23 @@ require-uncached@^1.0.2: caller-path "^0.1.0" resolve-from "^1.0.0" -requires-port@1.0.x, requires-port@1.x.x: +requires-port@1.0.x, requires-port@1.x.x, requires-port@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + dependencies: + resolve-from "^3.0.0" + +resolve-dir@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" @@ -8221,7 +8347,13 @@ resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.2.0, resolve@~1.4.0: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.2.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" + dependencies: + path-parse "^1.0.5" + +resolve@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" dependencies: @@ -8290,7 +8422,7 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^2.0.0" inherits "^2.0.1" -rst-selector-parser@^2.2.2: +rst-selector-parser@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" dependencies: @@ -8330,8 +8462,8 @@ rx-lite@^3.1.2: resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" rxjs@^5.0.0-beta.11: - version "5.4.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.4.3.tgz#0758cddee6033d68e0fd53676f0f3596ce3d483f" + version "5.5.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.2.tgz#28d403f0071121967f18ad665563255d54236ac3" dependencies: symbol-observable "^1.0.1" @@ -8525,15 +8657,15 @@ 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.1: - version "0.2.9" - resolved "https://registry.yarnpkg.com/slate-base64-serializer/-/slate-base64-serializer-0.2.9.tgz#14698ca6b48fae2661cd59db8ccd909becb73c6b" +slate-base64-serializer@^0.2.12: + version "0.2.12" + resolved "https://registry.yarnpkg.com/slate-base64-serializer/-/slate-base64-serializer-0.2.12.tgz#caeb0ded7695174c326d508081aced51c2417ea5" dependencies: isomorphic-base64 "^1.0.2" -slate-dev-logger@^0.1.25: - version "0.1.33" - resolved "https://registry.yarnpkg.com/slate-dev-logger/-/slate-dev-logger-0.1.33.tgz#b4a4272255c2d598e5f26db5d85c58435357755f" +slate-dev-logger@^0.1.33, slate-dev-logger@^0.1.36: + version "0.1.36" + resolved "https://registry.yarnpkg.com/slate-dev-logger/-/slate-dev-logger-0.1.36.tgz#ecdb37dbf944dfc742bab23b6a20d5a0472db95e" slate-edit-list@^0.10.1: version "0.10.1" @@ -8543,21 +8675,21 @@ slate-edit-table@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/slate-edit-table/-/slate-edit-table-0.12.0.tgz#9163e67b8025c3c09d6037eb76cb5e652b65dd47" -slate-plain-serializer@^0.3.0, slate-plain-serializer@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.3.1.tgz#fd3201c4d133b521b62696c35cc0ef5f92ff174e" +slate-plain-serializer@^0.4.0, slate-plain-serializer@^0.4.10: + version "0.4.10" + resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.4.10.tgz#7fe960ea96fa97e5395f0d9bb961a9f3c87c38c3" dependencies: - slate-dev-logger "^0.1.25" + slate-dev-logger "^0.1.36" -slate-prop-types@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/slate-prop-types/-/slate-prop-types-0.3.1.tgz#27c62318ead2b90261b5933092ae4694db69e22e" +slate-prop-types@^0.4.10: + version "0.4.10" + resolved "https://registry.yarnpkg.com/slate-prop-types/-/slate-prop-types-0.4.10.tgz#43ccb8eeab2eefadfc7bdc82576f9f9cb635c475" dependencies: - slate-dev-logger "^0.1.25" + slate-dev-logger "^0.1.36" -slate-react@^0.9.0: - version "0.9.1" - resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.9.1.tgz#1fa9da93b1856361b42e9da8633837264f40169a" +slate-react@^0.10.16: + version "0.10.16" + resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.10.16.tgz#929f6ef4466c437fd5a4af9ed5ab95b739d656ce" dependencies: debug "^2.3.2" get-window "^1.1.1" @@ -8569,18 +8701,18 @@ slate-react@^0.9.0: react-immutable-proptypes "^2.1.0" react-portal "^3.1.0" selection-is-backward "^1.0.0" - slate-base64-serializer "^0.2.1" - slate-dev-logger "^0.1.25" - slate-plain-serializer "^0.3.1" - slate-prop-types "^0.3.1" + slate-base64-serializer "^0.2.12" + slate-dev-logger "^0.1.36" + slate-plain-serializer "^0.4.10" + slate-prop-types "^0.4.10" slate-soft-break@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/slate-soft-break/-/slate-soft-break-0.6.0.tgz#1e44815b7ff4ddada055bba14cd0d2d4ef0fd463" -slate@^0.29.0: - version "0.29.1" - resolved "https://registry.yarnpkg.com/slate/-/slate-0.29.1.tgz#a9df98158e67f92456b9b8f38fb6d279ba8f9f7e" +slate@^0.30.0: + version "0.30.7" + resolved "https://registry.yarnpkg.com/slate/-/slate-0.30.7.tgz#98b5e4d8529775eaf2e7e3a2306db8cc49034772" dependencies: debug "^2.3.2" direction "^0.1.5" @@ -8588,7 +8720,7 @@ slate@^0.29.0: is-empty "^1.0.0" is-plain-object "^2.0.4" lodash "^4.17.4" - slate-dev-logger "^0.1.25" + slate-dev-logger "^0.1.33" type-of "^2.0.1" slice-ansi@0.0.4: @@ -8614,8 +8746,8 @@ sntp@1.x.x: hoek "2.x.x" sntp@2.x.x: - version "2.0.2" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.0.2.tgz#5064110f0af85f7cfdb7d6b67a40028ce52b4b2b" + version "2.1.0" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" dependencies: hoek "4.x.x" @@ -8667,7 +8799,7 @@ source-map@0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" -source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.3, source-map@~0.5.6: +source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -8787,7 +8919,11 @@ state-toggle@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.0.tgz#d20f9a616bb4f0c3b98b91922d25b640aa2bc425" -"statuses@>= 1.3.1 < 2", statuses@~1.3.1: +"statuses@>= 1.3.1 < 2": + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + +statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" @@ -8816,7 +8952,7 @@ stream-each@^1.1.0: end-of-stream "^1.1.0" stream-shift "^1.0.0" -stream-http@^2.3.1: +stream-http@^2.3.1, stream-http@^2.7.2: version "2.7.2" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" dependencies: @@ -8888,7 +9024,7 @@ string_decoder@^0.10.25, string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" -string_decoder@~1.0.3: +string_decoder@^1.0.0, string_decoder@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" dependencies: @@ -9130,8 +9266,8 @@ supports-color@^3.1.0, supports-color@^3.1.2, supports-color@^3.2.3: has-flag "^1.0.0" supports-color@^4.0.0, supports-color@^4.2.1, supports-color@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" dependencies: has-flag "^2.0.0" @@ -9166,8 +9302,8 @@ synesthesia@^1.0.1: css-color-names "0.0.3" tabbable@^1.0.3: - version "1.0.6" - resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-1.0.6.tgz#7c26a87ea6f4a25edf5edb619745a0ae740724fc" + version "1.1.1" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-1.1.1.tgz#88618caa0dc76e877572a678f0ad97519bba6761" table@^3.7.8: version "3.8.3" @@ -9218,8 +9354,8 @@ tape@^4.2.0: through "~2.3.8" tar-pack@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" + version "3.4.1" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" dependencies: debug "^2.2.0" fstream "^1.0.10" @@ -9302,7 +9438,7 @@ timers-browserify@^1.4.2: dependencies: process "~0.11.0" -timers-browserify@^2.0.2: +timers-browserify@^2.0.2, timers-browserify@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6" dependencies: @@ -9336,13 +9472,17 @@ to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + toml-j0.4@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/toml-j0.4/-/toml-j0.4-1.1.1.tgz#eb0c70348609a0263bb1d6e4a3dd191dcca60866" tomlify-j0.4@^3.0.0-alpha.0: - version "3.0.0-alpha.0" - resolved "https://registry.yarnpkg.com/tomlify-j0.4/-/tomlify-j0.4-3.0.0-alpha.0.tgz#f5ed30adfde71e60084dea80aa39c1be2046a7fc" + version "3.0.0" + resolved "https://registry.yarnpkg.com/tomlify-j0.4/-/tomlify-j0.4-3.0.0.tgz#99414d45268c3a3b8bf38be82145b7bba34b7473" topbar@^0.1.3: version "0.1.3" @@ -9428,8 +9568,8 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" ua-parser-js@^0.7.9: - version "0.7.14" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.14.tgz#110d53fa4c3f326c121292bbeac904d2e03387ca" + version "0.7.17" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" uglify-es@^3.1.3: version "3.1.9" @@ -9577,7 +9717,7 @@ unist-util-remove-position@^1.0.0: dependencies: unist-util-visit "^1.1.0" -unist-util-stringify-position@^1.0.0: +unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.1.tgz#3ccbdc53679eed6ecf3777dd7f5e3229c1b6aa3c" @@ -9613,13 +9753,14 @@ unzip-response@^2.0.1: resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" update-notifier@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.2.0.tgz#1b5837cf90c0736d88627732b661c138f86de72f" + version "2.3.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451" dependencies: - boxen "^1.0.0" - chalk "^1.0.0" + boxen "^1.2.1" + chalk "^2.0.1" configstore "^3.0.0" import-lazy "^2.1.0" + is-installed-globally "^0.1.0" is-npm "^1.0.0" latest-version "^3.0.0" semver-diff "^2.0.0" @@ -9646,11 +9787,11 @@ url-parse@1.0.x: requires-port "1.0.x" url-parse@^1.1.8: - version "1.1.9" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.9.tgz#c67f1d775d51f0a18911dd7b3ffad27bb9e5bd19" + version "1.2.0" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.2.0.tgz#3a19e8aaa6d023ddd27dcc44cb4fc8f7fec23986" dependencies: querystringify "~1.0.0" - requires-port "1.0.x" + requires-port "~1.0.0" url@^0.11.0: version "0.11.0" @@ -9732,13 +9873,20 @@ vfile-location@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.2.tgz#d3675c59c877498e492b4756ff65e4af1a752255" +vfile-message@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.0.0.tgz#a6adb0474ea400fa25d929f1d673abea6a17e359" + dependencies: + unist-util-stringify-position "^1.1.1" + vfile@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.2.0.tgz#ce47a4fb335922b233e535db0f7d8121d8fced4e" + version "2.3.0" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a" dependencies: is-buffer "^1.1.4" replace-ext "1.0.0" unist-util-stringify-position "^1.0.0" + vfile-message "^1.0.0" viewport-dimensions@^0.2.0: version "0.2.0" @@ -9821,8 +9969,8 @@ webpack-dev-middleware@^1.11.0, webpack-dev-middleware@^1.6.0: time-stamp "^2.0.0" webpack-dev-server@^2.9.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.9.1.tgz#7ac9320b61b00eb65b2109f15c82747fc5b93585" + version "2.9.4" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.9.4.tgz#7883e61759c6a4b33e9b19ec4037bd4ab61428d1" dependencies: ansi-html "0.0.7" array-includes "^3.0.3" @@ -9830,12 +9978,15 @@ webpack-dev-server@^2.9.1: chokidar "^1.6.0" compression "^1.5.2" connect-history-api-fallback "^1.3.0" + debug "^3.1.0" del "^3.0.0" express "^4.13.3" html-entities "^1.2.0" http-proxy-middleware "~0.17.4" + import-local "^0.1.1" internal-ip "1.2.0" ip "^1.1.5" + killable "^1.0.0" loglevel "^1.4.1" opn "^5.1.0" portfinder "^1.0.9" @@ -9850,8 +10001,8 @@ webpack-dev-server@^2.9.1: yargs "^6.6.0" webpack-hot-middleware@^2.10.0: - version "2.19.1" - resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.19.1.tgz#5db32c31c955c1ead114d37c7519ea554da0d405" + version "2.20.0" + resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.20.0.tgz#cb896d837758b6408fe0afeeafdc0e5316b15319" dependencies: ansi-html "0.0.7" html-entities "^1.2.0" @@ -9859,8 +10010,8 @@ webpack-hot-middleware@^2.10.0: strip-ansi "^3.0.0" webpack-merge@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.0.tgz#6ad72223b3e0b837e531e4597c199f909361511e" + version "4.1.1" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.1.tgz#f1197a0a973e69c6fbeeb6d658219aa8c0c13555" dependencies: lodash "^4.17.4" @@ -9873,11 +10024,11 @@ webpack-postcss-tools@^1.1.1: resolve "^1.1.6" webpack-sources@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.1.tgz#c7356436a4d13123be2e2426a05d1dad9cbe65cf" + version "1.0.2" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.2.tgz#d0148ec083b3b5ccef1035a6b3ec16442983b27a" dependencies: source-list-map "^2.0.0" - source-map "~0.5.3" + source-map "~0.6.1" webpack@^1.12.11: version "1.15.0" @@ -9900,8 +10051,8 @@ webpack@^1.12.11: webpack-core "~0.6.9" webpack@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.6.0.tgz#a89a929fbee205d35a4fa2cc487be9cbec8898bc" + version "3.8.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.8.1.tgz#b16968a81100abe61608b0153c9159ef8bb2bd83" dependencies: acorn "^5.0.0" acorn-dynamic-import "^2.0.0" @@ -9934,18 +10085,18 @@ websocket-driver@>=0.5.1: websocket-extensions ">=0.1.1" websocket-extensions@>=0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.2.tgz#0e18781de629a18308ce1481650f67ffa2693a5d" + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" whatwg-encoding@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz#3c6c451a198ee7aec55b1ec61d0920c67801a5f4" + version "1.0.3" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz#57c235bc8657e914d24e1a397d3c82daee0a6ba3" dependencies: - iconv-lite "0.4.13" + iconv-lite "0.4.19" whatwg-fetch@>=0.10.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz#ac3c9d39f320c6dce5339969d054ef43dd333319" + version "2.0.3" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" whatwg-url@^4.3.0: version "4.8.0" @@ -9966,7 +10117,7 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@^1.2.10, which@^1.2.12, which@^1.2.8, which@^1.2.9: +which@^1.2.10, which@^1.2.12, which@^1.2.14, which@^1.2.8, which@^1.2.9: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: @@ -10008,16 +10159,9 @@ wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" -worker-farm@^1.3.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.0.tgz#adfdf0cd40581465ed0a1f648f9735722afd5c8d" - dependencies: - errno "^0.1.4" - xtend "^4.0.1" - -worker-farm@^1.4.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.1.tgz#8e9f4a7da4f3c595aa600903051b969390423fa1" +worker-farm@^1.3.1, worker-farm@^1.4.1: + version "1.5.2" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.2.tgz#32b312e5dc3d5d45d79ef44acc2587491cd729ae" dependencies: errno "^0.1.4" xtend "^4.0.1" @@ -10133,7 +10277,7 @@ yargs@^4.7.0: y18n "^3.2.1" yargs-parser "^2.4.1" -yargs@^6.0.0, yargs@^6.6.0: +yargs@^6.6.0: version "6.6.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" dependencies: From 8bd2d6d9908b92db060535f472275c18d3e008e0 Mon Sep 17 00:00:00 2001 From: Shawn Erquhart Date: Fri, 17 Nov 2017 11:27:00 -0500 Subject: [PATCH 8/9] move slate-react to 0.10.11 until scroll bug fixed --- package.json | 2 +- yarn.lock | 64 ++++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 50 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index a75833d4e541..d8925affbf95 100644 --- a/package.json +++ b/package.json @@ -180,7 +180,7 @@ "slate-edit-list": "^0.10.1", "slate-edit-table": "^0.12.0", "slate-plain-serializer": "^0.4.0", - "slate-react": "^0.10.16", + "slate-react": "0.10.11", "slate-soft-break": "^0.6.0", "slug": "^0.9.1", "toml-j0.4": "^1.1.1", diff --git a/yarn.lock b/yarn.lock index ac058920c4a9..a4ea8c2e5f88 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3507,6 +3507,10 @@ flush-write-stream@^1.0.0: inherits "^2.0.1" readable-stream "^2.0.4" +focus-group@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/focus-group/-/focus-group-0.3.1.tgz#e0f32ed86b0dabdd6ffcebdf898ecb32e47fedce" + focus-trap-react@^3.0.3: version "3.0.5" resolved "https://registry.yarnpkg.com/focus-trap-react/-/focus-trap-react-3.0.5.tgz#8fb381b92eafe075c2406297d1da618650d37143" @@ -7611,6 +7615,14 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: minimist "^1.2.0" strip-json-comments "~2.0.1" +react-aria-menubutton@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/react-aria-menubutton/-/react-aria-menubutton-5.1.0.tgz#fa9bac43c02118d4eb60f9db6bbc5c20c34b658a" + dependencies: + focus-group "^0.3.1" + prop-types "^15.6.0" + teeny-tap "^0.2.0" + react-autosuggest@^9.3.2: version "9.3.2" resolved "https://registry.yarnpkg.com/react-autosuggest/-/react-autosuggest-9.3.2.tgz#dd8c0fbe9c25aa94afe296180353647f6ecc10a7" @@ -7789,10 +7801,6 @@ react-router@^4.2.0: prop-types "^15.5.4" warning "^3.0.0" -react-sidebar@^2.2.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/react-sidebar/-/react-sidebar-2.3.2.tgz#ec140bea8a6f5fa3d8ea7a56479665b44cf4f9cf" - react-simple-di@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/react-simple-di/-/react-simple-di-1.2.0.tgz#dde0e5bf689f391ef2ab02c9043b213fe239c6d0" @@ -7833,12 +7841,22 @@ react-test-renderer@^16.0.0, react-test-renderer@^16.0.0-0: object-assign "^4.1.1" prop-types "^15.6.0" +react-textarea-autosize@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-5.2.1.tgz#2b78f9067180f41b08ac59f78f1581abadd61e54" + dependencies: + prop-types "^15.6.0" + react-themeable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/react-themeable/-/react-themeable-1.1.0.tgz#7d4466dd9b2b5fa75058727825e9f152ba379a0e" dependencies: object-assign "^3.0.0" +react-toggled@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/react-toggled/-/react-toggled-1.1.3.tgz#d5fbab3307387e706a6f1b789cb9d34e0922b672" + react-toolbox@^2.0.0-beta.12: version "2.0.0-beta.12" resolved "https://registry.yarnpkg.com/react-toolbox/-/react-toolbox-2.0.0-beta.12.tgz#1d9dd7cc41e3b35dabdce5eb100a8068eee88c45" @@ -8647,6 +8665,10 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" +simple-html-tokenizer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/simple-html-tokenizer/-/simple-html-tokenizer-0.1.1.tgz#05c2eec579ffffe145a030ac26cfea61b980fabe" + simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -8657,13 +8679,13 @@ 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.12: +slate-base64-serializer@^0.2.8: version "0.2.12" resolved "https://registry.yarnpkg.com/slate-base64-serializer/-/slate-base64-serializer-0.2.12.tgz#caeb0ded7695174c326d508081aced51c2417ea5" dependencies: isomorphic-base64 "^1.0.2" -slate-dev-logger@^0.1.33, slate-dev-logger@^0.1.36: +slate-dev-logger@^0.1.32, slate-dev-logger@^0.1.33, slate-dev-logger@^0.1.36: version "0.1.36" resolved "https://registry.yarnpkg.com/slate-dev-logger/-/slate-dev-logger-0.1.36.tgz#ecdb37dbf944dfc742bab23b6a20d5a0472db95e" @@ -8675,21 +8697,21 @@ slate-edit-table@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/slate-edit-table/-/slate-edit-table-0.12.0.tgz#9163e67b8025c3c09d6037eb76cb5e652b65dd47" -slate-plain-serializer@^0.4.0, slate-plain-serializer@^0.4.10: +slate-plain-serializer@^0.4.0, slate-plain-serializer@^0.4.6: version "0.4.10" resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.4.10.tgz#7fe960ea96fa97e5395f0d9bb961a9f3c87c38c3" dependencies: slate-dev-logger "^0.1.36" -slate-prop-types@^0.4.10: +slate-prop-types@^0.4.6: version "0.4.10" resolved "https://registry.yarnpkg.com/slate-prop-types/-/slate-prop-types-0.4.10.tgz#43ccb8eeab2eefadfc7bdc82576f9f9cb635c475" dependencies: slate-dev-logger "^0.1.36" -slate-react@^0.10.16: - version "0.10.16" - resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.10.16.tgz#929f6ef4466c437fd5a4af9ed5ab95b739d656ce" +slate-react@0.10.11: + version "0.10.11" + resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.10.11.tgz#5fbfbf0da2dd726df468d788d2bd81dd578a15a3" dependencies: debug "^2.3.2" get-window "^1.1.1" @@ -8701,10 +8723,10 @@ slate-react@^0.10.16: react-immutable-proptypes "^2.1.0" react-portal "^3.1.0" selection-is-backward "^1.0.0" - slate-base64-serializer "^0.2.12" - slate-dev-logger "^0.1.36" - slate-plain-serializer "^0.4.10" - slate-prop-types "^0.4.10" + slate-base64-serializer "^0.2.8" + slate-dev-logger "^0.1.32" + slate-plain-serializer "^0.4.6" + slate-prop-types "^0.4.6" slate-soft-break@^0.6.0: version "0.6.0" @@ -9271,6 +9293,14 @@ supports-color@^4.0.0, supports-color@^4.2.1, supports-color@^4.4.0: dependencies: has-flag "^2.0.0" +svg-inline-loader@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/svg-inline-loader/-/svg-inline-loader-0.8.0.tgz#7e9d905d80d0b4e68d2df21afcd08ee9e9a3ea6e" + dependencies: + loader-utils "^0.2.11" + object-assign "^4.0.1" + simple-html-tokenizer "^0.1.1" + svg-tags@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" @@ -9374,6 +9404,10 @@ tar@^2.2.1: fstream "^1.0.2" inherits "2" +teeny-tap@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/teeny-tap/-/teeny-tap-0.2.0.tgz#167e645182d06ac222d62bb2ab67947a70a58a68" + term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" From 1011442765a9f4f1602f10c6f73a473101fa6df0 Mon Sep 17 00:00:00 2001 From: Shawn Erquhart Date: Fri, 17 Nov 2017 17:20:57 -0500 Subject: [PATCH 9/9] update slate snapshots --- .../__snapshots__/parser.spec.js.snap | 182 +++++++++--------- 1 file changed, 91 insertions(+), 91 deletions(-) diff --git a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/__tests__/__snapshots__/parser.spec.js.snap b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/__tests__/__snapshots__/parser.spec.js.snap index 011dd59563fe..baedbaa222e4 100644 --- a/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/__tests__/__snapshots__/parser.spec.js.snap +++ b/src/components/Widgets/Markdown/MarkdownControl/VisualEditor/__tests__/__snapshots__/parser.spec.js.snap @@ -10,7 +10,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "H1", }, @@ -34,7 +34,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "yo", }, @@ -55,7 +55,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "bro", }, @@ -76,7 +76,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "fro", }, @@ -106,7 +106,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "H1", }, @@ -130,7 +130,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "yo", }, @@ -151,7 +151,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "bro", }, @@ -172,7 +172,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "fro", }, @@ -205,7 +205,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "var a = 1;", }, @@ -229,7 +229,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "H1", }, @@ -249,7 +249,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "blue moon", }, @@ -273,7 +273,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "H1", }, @@ -293,7 +293,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "blue moon", }, @@ -317,7 +317,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "![super](duper.jpg)", }, @@ -341,7 +341,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Word", }, @@ -356,7 +356,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "This is some sweet ", }, @@ -365,7 +365,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "marks": Array [ Object { @@ -379,7 +379,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": " yo!", }, @@ -403,7 +403,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "An exhibit of Markdown", }, @@ -418,7 +418,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "This note demonstrates some of what Markdown is capable of doing.", }, @@ -433,7 +433,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "marks": Array [ Object { @@ -454,7 +454,7 @@ automatically save itself.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Basic formatting", }, @@ -469,7 +469,7 @@ automatically save itself.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Paragraphs can be written like so. A paragraph is the basic block of Markdown. A paragraph is what text will turn into when there is no reason it should @@ -486,7 +486,7 @@ become anything else.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Paragraphs must be separated by a blank line. Basic formatting of ", }, @@ -495,7 +495,7 @@ become anything else.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "marks": Array [ Object { @@ -509,7 +509,7 @@ become anything else.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": " and ", @@ -519,7 +519,7 @@ become anything else.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "marks": Array [ Object { @@ -533,7 +533,7 @@ become anything else.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": " is supported. This ", }, @@ -542,7 +542,7 @@ become anything else.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "marks": Array [ Object { @@ -575,7 +575,7 @@ become anything else.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": " so.", }, @@ -590,7 +590,7 @@ become anything else.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Lists", }, @@ -605,7 +605,7 @@ become anything else.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Ordered list", }, @@ -629,7 +629,7 @@ become anything else.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Item 1 2. A second item 3. Number 3 4. Ⅳ", }, @@ -650,7 +650,7 @@ become anything else.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "marks": Array [ Object { @@ -670,7 +670,7 @@ become anything else.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Unordered list", }, @@ -694,7 +694,7 @@ become anything else.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "An item Another item Yet another item And there's more...", }, @@ -715,7 +715,7 @@ become anything else.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Paragraph modifiers", }, @@ -730,7 +730,7 @@ become anything else.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Code block", }, @@ -748,7 +748,7 @@ become anything else.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Code blocks are very useful for developers and other people who look at code or other things that are written in plain text. As you can see, it @@ -765,7 +765,7 @@ uses a fixed-width font.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "You can also make ", }, @@ -774,7 +774,7 @@ uses a fixed-width font.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "marks": Array [ Object { @@ -788,7 +788,7 @@ uses a fixed-width font.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": " to add code into other things.", }, @@ -803,7 +803,7 @@ uses a fixed-width font.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Quote", }, @@ -821,7 +821,7 @@ uses a fixed-width font.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Here is a quote. What this is should be self explanatory. Quotes are automatically indented when they are used.", @@ -840,7 +840,7 @@ automatically indented when they are used.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Headings", }, @@ -855,7 +855,7 @@ automatically indented when they are used.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "There are six levels of headings. They correspond with the six levels of HTML headings. You've probably noticed them already in the page. Each level down @@ -872,7 +872,7 @@ uses one more hash character.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Headings ", }, @@ -881,7 +881,7 @@ uses one more hash character.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "marks": Array [ Object { @@ -895,7 +895,7 @@ uses one more hash character.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": " also contain ", }, @@ -904,7 +904,7 @@ uses one more hash character.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "marks": Array [ Object { @@ -924,7 +924,7 @@ uses one more hash character.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "They can even contain ", }, @@ -933,7 +933,7 @@ uses one more hash character.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "marks": Array [ Object { @@ -953,7 +953,7 @@ uses one more hash character.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Of course, demonstrating what headings look like messes up the structure of the page.", @@ -969,7 +969,7 @@ page.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "I don't recommend using more than three or four levels of headings here, because, when you're smallest heading isn't too small, and you're largest @@ -987,7 +987,7 @@ more important, there there are only so many sizes that you can use.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "URLs", }, @@ -1002,7 +1002,7 @@ more important, there there are only so many sizes that you can use.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "URLs can be made in a handful of ways:", }, @@ -1026,7 +1026,7 @@ more important, there there are only so many sizes that you can use.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "A named link to MarkItDown. The easiest way to do these is to select what you", }, @@ -1047,7 +1047,7 @@ more important, there there are only so many sizes that you can use.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "want to make a link and hit ", }, @@ -1056,7 +1056,7 @@ more important, there there are only so many sizes that you can use.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "marks": Array [ Object { @@ -1070,7 +1070,7 @@ more important, there there are only so many sizes that you can use.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": ". Another named link to", }, @@ -1098,7 +1098,7 @@ more important, there there are only so many sizes that you can use.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "MarkItDown", }, @@ -1110,7 +1110,7 @@ more important, there there are only so many sizes that you can use.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": " Sometimes you just want a URL like", }, @@ -1138,7 +1138,7 @@ more important, there there are only so many sizes that you can use.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "http://www.markitdown.net/", }, @@ -1150,7 +1150,7 @@ more important, there there are only so many sizes that you can use.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": ".", }, @@ -1171,7 +1171,7 @@ more important, there there are only so many sizes that you can use.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Horizontal rule", }, @@ -1186,7 +1186,7 @@ more important, there there are only so many sizes that you can use.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "A horizontal rule is a line that goes across the middle of the page.", }, @@ -1206,7 +1206,7 @@ more important, there there are only so many sizes that you can use.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "It's sometimes handy for breaking things up.", }, @@ -1221,7 +1221,7 @@ more important, there there are only so many sizes that you can use.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Images", }, @@ -1236,7 +1236,7 @@ more important, there there are only so many sizes that you can use.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Markdown can also contain images. I'll need to add something here sometime.", }, @@ -1251,7 +1251,7 @@ more important, there there are only so many sizes that you can use.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Finally", }, @@ -1266,7 +1266,7 @@ more important, there there are only so many sizes that you can use.", Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "There's actually a lot more to Markdown than this. See the official introduction and syntax for more information. However, be aware that this is @@ -1293,7 +1293,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Word", }, @@ -1308,7 +1308,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "How far is it to ", }, @@ -1324,7 +1324,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Google", }, @@ -1336,7 +1336,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": " land?", }, @@ -1360,7 +1360,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "H1", }, @@ -1375,7 +1375,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "H2", }, @@ -1390,7 +1390,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "H3", }, @@ -1414,7 +1414,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "Word", }, @@ -1429,7 +1429,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "This is ", }, @@ -1438,7 +1438,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "marks": Array [ Object { @@ -1477,7 +1477,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "perhaps ", }, @@ -1486,7 +1486,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "marks": Array [ Object { @@ -1500,7 +1500,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": " even", }, @@ -1524,7 +1524,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "![test](test.png)", }, @@ -1539,7 +1539,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "{{< test >}}", }, @@ -1563,7 +1563,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "H1", }, @@ -1578,7 +1578,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "sweet body", }, @@ -1602,7 +1602,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "blue moon", }, @@ -1614,7 +1614,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": " ", @@ -1627,7 +1627,7 @@ Object { Object { "data": undefined, "kind": "text", - "ranges": Array [ + "leaves": Array [ Object { "text": "footballs", },