Переглянути джерело

Merge branch 'master' into t/513

Aleksander Nowodzinski 8 роки тому
батько
коміт
274ad20822

+ 40 - 0
CHANGELOG.md

@@ -1,6 +1,46 @@
 Changelog
 =========
 
+## [0.11.0](https://github.com/ckeditor/ckeditor5/compare/v0.10.0...v0.11.0) (2017-09-03)
+
+New packages:
+
+* [@ckeditor/ckeditor5-build-balloon-toolbar](https://www.npmjs.com/package/@ckeditor/ckeditor5-build-balloon-toolbar): [v0.1.0](https://github.com/ckeditor/ckeditor5-build-balloon-toolbar/releases/tag/v0.1.0)
+* [@ckeditor/ckeditor5-build-inline](https://www.npmjs.com/package/@ckeditor/ckeditor5-build-inline): [v0.1.0](https://github.com/ckeditor/ckeditor5-build-inline/releases/tag/v0.1.0)
+* [@ckeditor/ckeditor5-editor-balloon-toolbar](https://www.npmjs.com/package/@ckeditor/ckeditor5-editor-balloon-toolbar): [v0.1.0](https://github.com/ckeditor/ckeditor5-editor-balloon-toolbar/releases/tag/v0.1.0)
+
+Minor releases (possible breaking changes):
+
+* [@ckeditor/ckeditor5-autoformat](https://www.npmjs.com/package/@ckeditor/ckeditor5-autoformat): v0.5.1 => [v0.6.0](https://github.com/ckeditor/ckeditor5-autoformat/releases/tag/v0.6.0)
+* [@ckeditor/ckeditor5-basic-styles](https://www.npmjs.com/package/@ckeditor/ckeditor5-basic-styles): v0.8.1 => [v0.9.0](https://github.com/ckeditor/ckeditor5-basic-styles/releases/tag/v0.9.0)
+* [@ckeditor/ckeditor5-block-quote](https://www.npmjs.com/package/@ckeditor/ckeditor5-block-quote): v0.1.1 => [v0.2.0](https://github.com/ckeditor/ckeditor5-block-quote/releases/tag/v0.2.0)
+* [@ckeditor/ckeditor5-build-classic](https://www.npmjs.com/package/@ckeditor/ckeditor5-build-classic): v0.2.0 => [v0.3.0](https://github.com/ckeditor/ckeditor5-build-classic/releases/tag/v0.3.0)
+* [@ckeditor/ckeditor5-clipboard](https://www.npmjs.com/package/@ckeditor/ckeditor5-clipboard): v0.6.0 => [v0.7.0](https://github.com/ckeditor/ckeditor5-clipboard/releases/tag/v0.7.0)
+* [@ckeditor/ckeditor5-core](https://www.npmjs.com/package/@ckeditor/ckeditor5-core): v0.8.1 => [v0.9.0](https://github.com/ckeditor/ckeditor5-core/releases/tag/v0.9.0)
+* [@ckeditor/ckeditor5-editor-classic](https://www.npmjs.com/package/@ckeditor/ckeditor5-editor-classic): v0.7.3 => [v0.8.0](https://github.com/ckeditor/ckeditor5-editor-classic/releases/tag/v0.8.0)
+* [@ckeditor/ckeditor5-editor-inline](https://www.npmjs.com/package/@ckeditor/ckeditor5-editor-inline): v0.1.1 => [v0.2.0](https://github.com/ckeditor/ckeditor5-editor-inline/releases/tag/v0.2.0)
+* [@ckeditor/ckeditor5-engine](https://www.npmjs.com/package/@ckeditor/ckeditor5-engine): v0.10.0 => [v0.11.0](https://github.com/ckeditor/ckeditor5-engine/releases/tag/v0.11.0)
+* [@ckeditor/ckeditor5-enter](https://www.npmjs.com/package/@ckeditor/ckeditor5-enter): v0.9.1 => [v0.10.0](https://github.com/ckeditor/ckeditor5-enter/releases/tag/v0.10.0)
+* [@ckeditor/ckeditor5-heading](https://www.npmjs.com/package/@ckeditor/ckeditor5-heading): v0.9.1 => [v0.10.0](https://github.com/ckeditor/ckeditor5-heading/releases/tag/v0.10.0)
+* [@ckeditor/ckeditor5-image](https://www.npmjs.com/package/@ckeditor/ckeditor5-image): v0.6.0 => [v0.7.0](https://github.com/ckeditor/ckeditor5-image/releases/tag/v0.7.0)
+* [@ckeditor/ckeditor5-link](https://www.npmjs.com/package/@ckeditor/ckeditor5-link): v0.7.0 => [v0.8.0](https://github.com/ckeditor/ckeditor5-link/releases/tag/v0.8.0)
+* [@ckeditor/ckeditor5-list](https://www.npmjs.com/package/@ckeditor/ckeditor5-list): v0.6.1 => [v0.7.0](https://github.com/ckeditor/ckeditor5-list/releases/tag/v0.7.0)
+* [@ckeditor/ckeditor5-paragraph](https://www.npmjs.com/package/@ckeditor/ckeditor5-paragraph): v0.8.0 => [v0.9.0](https://github.com/ckeditor/ckeditor5-paragraph/releases/tag/v0.9.0)
+* [@ckeditor/ckeditor5-presets](https://www.npmjs.com/package/@ckeditor/ckeditor5-presets): v0.2.2 => [v0.3.0](https://github.com/ckeditor/ckeditor5-presets/releases/tag/v0.3.0)
+* [@ckeditor/ckeditor5-theme-lark](https://www.npmjs.com/package/@ckeditor/ckeditor5-theme-lark): v0.8.0 => [v0.9.0](https://github.com/ckeditor/ckeditor5-theme-lark/releases/tag/v0.9.0)
+* [@ckeditor/ckeditor5-typing](https://www.npmjs.com/package/@ckeditor/ckeditor5-typing): v0.9.1 => [v0.10.0](https://github.com/ckeditor/ckeditor5-typing/releases/tag/v0.10.0)
+* [@ckeditor/ckeditor5-ui](https://www.npmjs.com/package/@ckeditor/ckeditor5-ui): v0.9.0 => [v0.10.0](https://github.com/ckeditor/ckeditor5-ui/releases/tag/v0.10.0)
+* [@ckeditor/ckeditor5-undo](https://www.npmjs.com/package/@ckeditor/ckeditor5-undo): v0.8.1 => [v0.9.0](https://github.com/ckeditor/ckeditor5-undo/releases/tag/v0.9.0)
+* [@ckeditor/ckeditor5-upload](https://www.npmjs.com/package/@ckeditor/ckeditor5-upload): v0.1.0 => [v0.2.0](https://github.com/ckeditor/ckeditor5-upload/releases/tag/v0.2.0)
+* [@ckeditor/ckeditor5-utils](https://www.npmjs.com/package/@ckeditor/ckeditor5-utils): v0.9.1 => [v0.10.0](https://github.com/ckeditor/ckeditor5-utils/releases/tag/v0.10.0)
+* [@ckeditor/ckeditor5-widget](https://www.npmjs.com/package/@ckeditor/ckeditor5-widget): v0.1.1 => [v0.2.0](https://github.com/ckeditor/ckeditor5-widget/releases/tag/v0.2.0)
+
+Patch releases (bug fixes, internal changes):
+
+* [@ckeditor/ckeditor5-adapter-ckfinder](https://www.npmjs.com/package/@ckeditor/ckeditor5-adapter-ckfinder): v0.1.0 => [v0.1.1](https://github.com/ckeditor/ckeditor5-adapter-ckfinder/releases/tag/v0.1.1)
+* [@ckeditor/ckeditor5-markdown-gfm](https://www.npmjs.com/package/@ckeditor/ckeditor5-markdown-gfm): v0.4.3 => [v0.4.4](https://github.com/ckeditor/ckeditor5-markdown-gfm/releases/tag/v0.4.4)
+
+
 ## [0.10.0](https://github.com/ckeditor/ckeditor5/compare/v0.9.0...v0.10.0) (2017-05-07)
 
 New packages:

+ 55 - 2
README.md

@@ -174,9 +174,9 @@ Read more in the [Support](https://github.com/ckeditor/ckeditor5/wiki/Support) w
 
 <tr>
 	<td>
-		<a href="https://github.com/ckeditor/ckeditor5-editor-inline"><code>@ckeditor/ckeditor5-editor-balloon-toolbar</code></a>
+		<a href="https://github.com/ckeditor/ckeditor5-editor-balloon-toolbar"><code>@ckeditor/ckeditor5-editor-balloon-toolbar</code></a>
 		<br>
-		The editor with balloon toolbar (Medium-like) implementation.
+		The editor with a balloon toolbar (Medium-like) implementation.
 	</td>
 	<td>
 		<a href="https://www.npmjs.com/package/@ckeditor/ckeditor5-editor-balloon-toolbar"><img src="https://img.shields.io/npm/v/@ckeditor/ckeditor5-editor-balloon-toolbar.svg" alt="ckeditor5-editor-balloon-toolbar npm package badge"></a>
@@ -411,6 +411,59 @@ Read more in the [Support](https://github.com/ckeditor/ckeditor5/wiki/Support) w
 </tbody>
 </table>
 
+### Builds
+
+<table>
+<thead>
+	<tr>
+		<th>Package</th>
+		<th>Status</th>
+	</tr>
+</thead>
+<tbody>
+
+<tr>
+	<td>
+		<a href="https://github.com/ckeditor/ckeditor5-build-classic"><code>@ckeditor/ckeditor5-build-classic</code></a>
+		<br>
+		The classic editor build.
+	</td>
+	<td>
+		<a href="https://www.npmjs.com/package/@ckeditor/ckeditor5-build-classic"><img src="https://img.shields.io/npm/v/@ckeditor/ckeditor5-build-classic.svg" alt="ckeditor5-build-classic npm package badge"></a>
+		<a href="https://travis-ci.org/ckeditor/ckeditor5-build-classic"><img src="https://img.shields.io/travis/ckeditor/ckeditor5-build-classic/master.svg" alt="build status badge"></a>
+		<a href="https://codeclimate.com/github/ckeditor/ckeditor5-build-classic/coverage"><img src="https://img.shields.io/codeclimate/coverage/github/ckeditor/ckeditor5-build-classic.svg" alt="ckeditor5-build-classic coverage badge"></a>
+	</td>
+</tr>
+
+<tr>
+	<td>
+		<a href="https://github.com/ckeditor/ckeditor5-build-inline"><code>@ckeditor/ckeditor5-build-inline</code></a>
+		<br>
+		The inline editor build.
+	</td>
+	<td>
+		<a href="https://www.npmjs.com/package/@ckeditor/ckeditor5-build-inline"><img src="https://img.shields.io/npm/v/@ckeditor/ckeditor5-build-inline.svg" alt="ckeditor5-build-inline npm package badge"></a>
+		<a href="https://travis-ci.org/ckeditor/ckeditor5-build-inline"><img src="https://img.shields.io/travis/ckeditor/ckeditor5-build-inline/master.svg" alt="build status badge"></a>
+		<a href="https://codeclimate.com/github/ckeditor/ckeditor5-build-inline/coverage"><img src="https://img.shields.io/codeclimate/coverage/github/ckeditor/ckeditor5-build-inline.svg" alt="ckeditor5-build-inline coverage badge"></a>
+	</td>
+</tr>
+
+<tr>
+	<td>
+		<a href="https://github.com/ckeditor/ckeditor5-build-balloon-toolbar"><code>@ckeditor/ckeditor5-build-balloon-toolbar</code></a>
+		<br>
+		The editor with a balloon toolbar (Medium-like) build.
+	</td>
+	<td>
+		<a href="https://www.npmjs.com/package/@ckeditor/ckeditor5-build-balloon-toolbar"><img src="https://img.shields.io/npm/v/@ckeditor/ckeditor5-build-balloon-toolbar.svg" alt="ckeditor5-build-balloon-toolbar npm package badge"></a>
+		<a href="https://travis-ci.org/ckeditor/ckeditor5-build-balloon-toolbar"><img src="https://img.shields.io/travis/ckeditor/ckeditor5-build-balloon-toolbar/master.svg" alt="build status badge"></a>
+		<a href="https://codeclimate.com/github/ckeditor/ckeditor5-build-balloon-toolbar/coverage"><img src="https://img.shields.io/codeclimate/coverage/github/ckeditor/ckeditor5-build-balloon-toolbar.svg" alt="ckeditor5-build-balloon-toolbar coverage badge"></a>
+	</td>
+</tr>
+
+</tbody>
+</table>
+
 ## License
 
 Licensed under the GPL, LGPL and MPL licenses, at your choice. For full details about the license, please check the LICENSE.md file.

+ 20 - 0
docs/_snippets/examples/balloon-toolbar-editor.html

@@ -0,0 +1,20 @@
+<div id="snippet-balloon-toolbar-editor">
+	<h2>Walking the capitals of Europe: Warsaw</h2>
+	<figure class="image"><img alt="Picture of the Warsaw Old Town." height="auto" width="100%"
+	                           src="https://c.cksource.com/a/1/img/demo/warsaw.jpg">
+		<figcaption>Medieval Old Town square, destroyed in 1944 & rebuilt after WWII.</figcaption>
+	</figure>
+	<p>If you enjoyed my previous articles in which we discussed wandering around <a href="https://en.wikipedia.org/wiki/Copenhagen" target="_blank" rel="external">Copenhagen</a> and <a href="https://en.wikipedia.org/wiki/Vilnius" target="_blank" rel="external">Vilnius</a>, you’ll definitely love exploring <a href="https://en.wikipedia.org/wiki/Warsaw" target="_blank" rel="external">Warsaw</a>.</p>
+	<h3>Time to put comfy sandals on!</h3>
+	<p>Best time to visit the city is July and August, when it’s cool enough to not break a sweat and hot enough to enjoy summer. The city which has quite a combination of both old and modern textures is located by the river of Vistula.</p>
+	<p>The historic <strong>Old Town</strong>, which was reconstructed after the World War II, with its late 18th century characteristics, is a must-see. You can start your walk from the <strong>Nowy Świat Street</strong> which will take you straight to the Old Town.</p>
+	<p>Then you can go to the <strong>Powiśle</strong> area and take a walk on the newly renovated promenade on  the riverfront. There are also lots of cafes, bars and restaurants where you can shake off the exhaustion of the day. On Sundays, there are many parks where you can enjoy nature or listen to pianists from around the world playing Chopin.</p>
+	<p>For museum lovers, you can add these to your list:</p>
+	<ul>
+		<li><a href="http://www.polin.pl/en" target="_blank" rel="external">POLIN</a></li>
+		<li><a href="http://www.1944.pl/en" target="_blank" rel="external">Warsaw Uprising Museum</a></li>
+		<li><a href="http://chopin.museum/en" target="_blank" rel="external">Fryderyk Chopin Museum</a></li>
+	</ul>
+	<h3>Next destination</h3>
+	<p>We will go to Berlin and have a night's walk in the city that never sleeps! Make sure you subscribe to our newsletter!</p>
+</div>

+ 25 - 0
docs/_snippets/examples/balloon-toolbar-editor.js

@@ -0,0 +1,25 @@
+/**
+ * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+/* globals console, window, document */
+
+import BalloonToolbarEditor from '@ckeditor/ckeditor5-editor-balloon-toolbar/src/balloontoolbareditor';
+
+import ArticlePreset from '@ckeditor/ckeditor5-presets/src/article';
+
+BalloonToolbarEditor
+	.create( document.querySelector( '#snippet-balloon-toolbar-editor' ), {
+		plugins: [ ArticlePreset ],
+		toolbar: [ 'headings', 'bold', 'italic', 'link', 'bulletedList', 'numberedList', 'blockQuote', 'undo', 'redo' ],
+		image: {
+			toolbar: [ 'imageStyleFull', 'imageStyleSide', '|', 'imageTextAlternative' ]
+		}
+	} )
+	.then( editor => {
+		window.editor = editor;
+	} )
+	.catch( err => {
+		console.error( err );
+	} );

+ 12 - 0
docs/_snippets/examples/classic-editor-short.html

@@ -0,0 +1,12 @@
+<div id="snippet-classic-editor-short">
+	<h2>Walking the capitals of Europe: Warsaw</h2>
+	<p>Best time to visit the city is July and August, when it’s cool enough to not break a sweat and hot enough to enjoy summer. The city which has quite a combination of both old and modern textures is located by the river of Vistula.</p>
+	<p>The historic <strong>Old Town</strong>, which was reconstructed after the World War II, with its late 18th century characteristics, is a must-see. You can start your walk from the <strong>Nowy Świat Street</strong> which will take you straight to the Old Town.</p>
+	<p>Then you can go to the <strong>Powiśle</strong> area and take a walk on the newly renovated promenade on  the riverfront. There are also lots of cafes, bars and restaurants where you can shake off the exhaustion of the day. On Sundays, there are many parks where you can enjoy nature or listen to pianists from around the world playing Chopin.</p>
+	<p>For museum lovers, you can add these to your list:</p>
+	<ul>
+		<li><a href="http://www.polin.pl/en" target="_blank" rel="external">POLIN</a></li>
+		<li><a href="http://www.1944.pl/en" target="_blank" rel="external">Warsaw Uprising Museum</a></li>
+		<li><a href="http://chopin.museum/en" target="_blank" rel="external">Fryderyk Chopin Museum</a></li>
+	</ul>
+</div>

+ 15 - 0
docs/_snippets/examples/classic-editor-short.js

@@ -0,0 +1,15 @@
+/**
+ * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+/* globals ClassicEditor, console, window, document */
+
+ClassicEditor
+	.create( document.querySelector( '#snippet-classic-editor-short' ) )
+	.then( editor => {
+		window.editor = editor;
+	} )
+	.catch( err => {
+		console.error( err );
+	} );

+ 20 - 1
docs/_snippets/examples/classic-editor.html

@@ -1,3 +1,22 @@
 <div id="snippet-classic-editor">
-	<p>This is <a href="https://ckeditor5.github.io">CKEditor&nbsp;5</a>.</p>
+	<h2>The three greatest things you learn from traveling</h2>
+	<p>Like all the great things on earth traveling teaches us by example. Here are some of the most precious lessons I’ve learned over the years of traveling.</p>
+	<figure class="image illustration" style="height:400px;"><img alt="Picture of a farmer in a rice field." height="auto"
+	                                                              src="https://c.cksource.com/a/1/img/demo/vietnam.jpg" width="100%">
+		<figcaption>Leaving your comfort zone might lead you to such beautiful sceneries like this one.</figcaption>
+	</figure>
+	<h3>Appreciation of diversity</h3>
+	<p>While it’s also nice to learn about cultures online or from books, nothing comes close to experiencing cultural diversity in person. You learn to appreciate each and every single one of the differences while you become more culturally fluid.</p>
+	<blockquote>
+		<p>The real voyage of discovery consists not in seeking new landscapes, but having new eyes.</p>
+		<p><strong>Marcel Proust</strong></p>
+	</blockquote>
+	<h3>Improvisation</h3>
+	<p>Life doesn't allow us to execute every single plan perfectly. This especially seems to be the case when you travel. You plan it down to every minute with a big checklist; but when it comes to executing it, something always comes up and you’re left with your improvising skills. You learn to adapt as you go. Here’s how my travel checklist looks now:</p>
+	<ul>
+		<li>buy the ticket</li>
+		<li>start your adventure</li>
+	</ul>
+	<h3>Confidence</h3>
+	<p>Going to a new place can be quite terrifying. While change and uncertainty makes us scared, traveling teaches us how ridiculous it is to be afraid of something before it happens. The moment you face your fear and see there was nothing to be afraid of, is the moment you discover bliss.</p>
 </div>

+ 3 - 13
docs/_snippets/examples/classic-editor.js

@@ -3,23 +3,13 @@
  * For licensing, see LICENSE.md.
  */
 
-/* globals console, window, document */
-
-import ClassicEditor from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
-
-import ArticlePreset from '@ckeditor/ckeditor5-presets/src/article';
+/* globals ClassicEditor, console, window, document */
 
 ClassicEditor
-	.create( document.querySelector( '#snippet-classic-editor' ), {
-		plugins: [ ArticlePreset ],
-		toolbar: [ 'headings', 'bold', 'italic', 'link', 'bulletedList', 'numberedList', 'blockQuote', 'undo', 'redo' ],
-		image: {
-			toolbar: [ 'imageStyleFull', 'imageStyleSide', '|', 'imageTextAlternative' ]
-		}
-	} )
+	.create( document.querySelector( '#snippet-classic-editor' ) )
 	.then( editor => {
 		window.editor = editor;
 	} )
 	.catch( err => {
-		console.error( err.stack );
+		console.error( err );
 	} );

+ 26 - 1
docs/_snippets/examples/inline-editor.html

@@ -1,3 +1,28 @@
 <div id="snippet-inline-editor">
-	<p>This is <a href="https://ckeditor5.github.io">CKEditor&nbsp;5</a>.</p>
+	<header data-inline-inject="true">
+		<h2>Gone traveling</h2>
+		<h3>Monthly travel news and inspiration</h3>
+	</header>
+	<div data-inline-inject="true">
+		<h3>Destination of the Month</h3>
+		<h4>Valletta</h4>
+		<figure class="image image-style-left"><img alt="Picture of a sunlit facade of a Maltan building." height="auto" width="100%" src="https://c.cksource.com/a/1/img/demo/malta.jpg">
+			<figcaption>It's siesta time in Valletta.</figcaption>
+		</figure>
+		<p>The capital city of <a href="https://en.wikipedia.org/wiki/Malta" target="_blank" rel="external">Malta</a> is the top destination this summer. It’s home to a cutting-edge contemporary architecture, baroque masterpieces, delicious local cuisine and at least 8 months of sun. It’s also a top destination for filmmakers, so you can take a tour through locations familiar to you from Game of Thrones, Gladiator, Troy and many more.</p>
+	</div>
+	<div class="demo-row">
+		<div class="demo-row__half">
+			<div data-inline-inject="true">
+				<h3>The three greatest things you learn from traveling</h3>
+				<p><a href="#">Find out more</a></p>
+			</div>
+		</div>
+		<div class="demo-row__half">
+			<div data-inline-inject="true">
+				<h3>Walking the capitals of Europe: Warsaw</h3>
+				<p><a href="#">Find out more</a></p>
+			</div>
+		</div>
+	</div>
 </div>

+ 45 - 10
docs/_snippets/examples/inline-editor.js

@@ -6,20 +6,55 @@
 /* globals console, window, document */
 
 import InlineEditor from '@ckeditor/ckeditor5-editor-inline/src/inlineeditor';
+import fullSizeIcon from '@ckeditor/ckeditor5-core/theme/icons/object-center.svg';
+import alignLeftIcon from '@ckeditor/ckeditor5-core/theme/icons/object-left.svg';
+import alignRightIcon from '@ckeditor/ckeditor5-core/theme/icons/object-right.svg';
 
 import ArticlePreset from '@ckeditor/ckeditor5-presets/src/article';
 
-InlineEditor
-	.create( document.querySelector( '#snippet-inline-editor' ), {
+const inlineInjectElements = document.querySelectorAll( '#snippet-inline-editor [data-inline-inject]' );
+
+Array.prototype.map.call( inlineInjectElements, inlineElement => {
+	const config = {
 		plugins: [ ArticlePreset ],
 		toolbar: [ 'headings', 'bold', 'italic', 'link', 'bulletedList', 'numberedList', 'blockQuote', 'undo', 'redo' ],
 		image: {
-			toolbar: [ 'imageStyleFull', 'imageStyleSide', '|', 'imageTextAlternative' ]
+			toolbar: [ 'imageTextAlternative', '|', 'imageStyleLeft', 'imageStyleFull', 'imageStyleRight' ],
+			styles: [
+				{
+					name: 'imageStyleFull',
+					title: 'Full size image',
+					icon: fullSizeIcon,
+					value: null
+				},
+				{
+					name: 'imageStyleLeft',
+					title: 'Left aligned image',
+					icon: alignLeftIcon,
+					value: 'left',
+					className: 'image-style-left'
+				},
+				{
+					name: 'imageStyleRight',
+					title: 'Right aligned image',
+					icon: alignRightIcon,
+					value: 'right',
+					className: 'image-style-right'
+				}
+			]
 		}
-	} )
-	.then( editor => {
-		window.editor = editor;
-	} )
-	.catch( err => {
-		console.error( err.stack );
-	} );
+	};
+
+	if ( inlineElement.tagName.toLowerCase() == 'header' ) {
+		config.removePlugins = [ 'Blockquote', 'Image', 'ImageToolbar', 'List' ];
+		config.toolbar = [ 'headings', 'bold', 'italic', 'link' ];
+	}
+
+	InlineEditor.create( inlineElement, config )
+		.then( editor => {
+			window.editor = editor;
+		} )
+		.catch( err => {
+			console.error( err );
+		} );
+} );

+ 2 - 12
docs/_snippets/features/read-only.js

@@ -3,20 +3,10 @@
  * For licensing, see LICENSE.md.
  */
 
-/* globals console, window, document */
-
-import ClassicEditor from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
-
-import ArticlePreset from '@ckeditor/ckeditor5-presets/src/article';
+/* globals ClassicEditor, console, window, document */
 
 ClassicEditor
-	.create( document.querySelector( '#snippet-read-only' ), {
-		plugins: [ ArticlePreset ],
-		toolbar: [ 'headings', 'bold', 'italic', 'link', 'bulletedList', 'numberedList', 'blockQuote', 'undo', 'redo' ],
-		image: {
-			toolbar: [ 'imageStyleFull', 'imageStyleSide', '|', 'imageTextAlternative' ]
-		}
-	} )
+	.create( document.querySelector( '#snippet-read-only' ) )
 	.then( editor => {
 		window.editor = editor;
 

BIN
docs/assets/img/editor-balloon-toolbar.png


BIN
docs/assets/img/editor-classic.png


BIN
docs/assets/img/editor-inline.png


BIN
docs/assets/img/feature-link.png


BIN
docs/assets/img/feature-toolbar.png


+ 86 - 0
docs/assets/snippet-styles.css

@@ -18,3 +18,89 @@
 	/* See https://github.com/ckeditor/ckeditor5/issues/494 */
 	margin-left: 0;
 }
+
+/* examples/builds/inline-editor.html */
+.live-snippet .image-style-left, .live-snippet .image-style-right {
+	float: left;
+	height: auto;
+	width: 50%;
+	margin-top: .5rem;
+	margin-right: 2.5rem;
+}
+
+.live-snippet .image-style-right {
+	float: right;
+	margin-right: 0;
+	margin-left: 2.5rem;
+}
+
+.live-snippet .image img {
+	margin: 0 auto;
+}
+
+.live-snippet blockquote p:first-of-type {
+	margin-bottom: 1.5rem;
+}
+
+#snippet-inline-editor .ck-editor__editable {
+	margin-bottom: 1rem;
+	padding: 2rem;
+	border: 1px solid rgba(0, 0, 0, 0.15);
+}
+#snippet-inline-editor h2, #snippet-inline-editor h3 {
+	margin-top: 0;
+	padding-top: 0;
+	border-bottom: 0;
+}
+#snippet-inline-editor header {
+	text-align: center;
+}
+#snippet-inline-editor header h2 {
+	margin-bottom: 0;
+	font-size: 2.1rem;
+}
+#snippet-inline-editor header h3 {
+	color: rgba(5, 22, 42, 0.59);
+	font-weight: 600;
+	font-size: 1.6rem;
+}
+
+.demo-row {
+	width: 100%;
+	display: -ms-flexbox;
+	display: flex;
+}
+
+.demo-row__half {
+	width: 50%;
+}
+
+.demo-row__half:first-of-type {
+	padding-right: .5rem;
+}
+
+.demo-row__half:last-of-type {
+	padding-left: .5rem;
+}
+
+.demo-row__third {
+	width: 33.3333%;
+}
+
+.demo-row__third > div {
+	padding: 2.5rem;
+	border: 1px solid rgba(0, 0, 0, 0.15);
+}
+
+.demo-row__third:nth-of-type(2) {
+	padding-left: 1rem;
+	padding-right: 1rem;
+}
+
+.demo-row h3 {
+	margin: 0;
+}
+
+.demo-row p {
+	margin-bottom: 0;
+}

+ 7 - 3
docs/builds/guides/integration/basic-api.md

@@ -21,7 +21,7 @@ Most of the examples in the documentation use the `ClassicEditor` class, but thi
 
 Because builds are distributed as [UMD modules](https://github.com/umdjs/umd), these classes can be retrieved:
 
-* by a [CommonJS](http://wiki.commonjs.org/wiki/CommonJS)-compatible loader (e.g. [Webpack](https://webpack.js.org) or [Browserify](http://browserify.org/)),
+* by a [CommonJS](http://wiki.commonjs.org/wiki/CommonJS)-compatible loader (e.g. [webpack](https://webpack.js.org) or [Browserify](http://browserify.org/)),
 * by [RequireJS](http://requirejs.org/) (or any other AMD library),
 * from the global namespace if none of the above loaders is available.
 
@@ -39,6 +39,10 @@ require( '/(ckeditor path)/build/ckeditor.js', ClassicEditor => {
 
 // As a global.
 ClassicEditor.create; // [Function]
+
+// As an ES6 module (if using webpack or Rollup).
+import { ClassicEditor } from '@ckeditor/ckeditor5-build-classic/build/ckeditor';
+ClassicEditor.create; // [Function]
 ```
 
 Depending on which build you are using, creating an editor in the page is then a breeze:
@@ -46,7 +50,7 @@ Depending on which build you are using, creating an editor in the page is then a
 In the HTML code:
 
 ```html
-<textarea id="text-editor">
+<textarea id="editor">
 	&lt;p&gt;Here goes the initial content of the editor.&lt;/p&gt;
 </textarea>
 ```
@@ -55,7 +59,7 @@ In the script:
 
 ```js
 ClassicEditor
-	.create( document.querySelector( '#text-editor' ) )
+	.create( document.querySelector( '#editor' ) )
 	.then( editor => {
 		console.log( editor );
 	} )

+ 10 - 6
docs/builds/guides/integration/installation.md

@@ -19,7 +19,7 @@ Each of the builds has independent release packages. Check the {@link builds/gui
 
 ### Zip download
 
-Go to https://ckeditor.com/ckeditor5-builds/download and download your preferred build. For example, you may download the `ckeditor5-build.classic-1.0.0.zip` file for the Classic editor build.
+Go to https://ckeditor.com/ckeditor5-builds/download and download your preferred build. For example, you may download the `ckeditor5-build-classic-1.0.0.zip` file for the Classic editor build.
 
 Extract the above `.zip` file into a dedicated directory inside your website or application.
 
@@ -33,7 +33,7 @@ Check out the {@linkTODO CKEditor 5 Builds CDN website} for a list of URL entry
 
 ### npm
 
-All builds are released on npm. [Use this search link](https://www.npmjs.com/search?q=%40ckeditor%2Fckeditor5-build) to view all build packages available in npm.
+All builds are released on npm. [Use this search link](https://www.npmjs.com/search?q=keywords:ckeditor5-build&page=1&ranking=optimal) to view all build packages available in npm.
 
 Installing a classic build with npm is as simple as calling the following inside your website or application:
 
@@ -47,9 +47,9 @@ The script entry point for the build class will then be found at `node_modules/c
 
 The following are the main files available in all build distributions:
 
-* `build/ckeditor.js` &ndash; The main UMD distribution script, containing the editor core and all plugins. Compatible with ECMAScript 6 enabled browsers. A smaller download.
-* `build/ckeditor.compat.js` &ndash; The same as the above, for browsers not compatible with ES6.
-* `ckeditor.js` &ndash; The source entry point of the build. It can be used for complex bundling and development.
+* `build/ckeditor.js` &ndash; The main UMD distribution script, containing the editor and all plugins.
+* `ckeditor.js` &ndash; The source entry point of the build. It can be used for complex bundling and development. Based on it the `build/ckeditor.js` is created (by webpack).
+* `build-config.js` &ndash; The build configuration, based on which the `ckeditor.js` file is created.
 
 ## Loading the API
 
@@ -59,7 +59,11 @@ Once downloaded and installed in your application, it is time to make the API av
 <script src="/ckeditor/build/ckeditor.js"></script>
 ```
 
-For a more advanced setup, you may wish to bundle the CKEditor script with other scripts used by your application. See {@linkTODO Bundling} for more information about it.
+<info-box>
+	The `build/ckeditor.js` file is generated in the [UMD format](https://github.com/umdjs/umd) so you can also import it to your application if you use CommonJS modules (like in Node.js) or AMD modules (like in Require.js). Read more in the {@link builds/guides/integration/basic-api Basic API guide}.
+
+	Also, for a more advanced setup, you may wish to bundle the CKEditor script with other scripts used by your application. See {@linkTODO Bundling} for more information about it.
+</info-box>
 
 Once the CKEditor script is loaded, you can {@link builds/guides/integration/basic-api use the API} to create editors in your page.
 

+ 20 - 8
docs/builds/guides/overview.md

@@ -16,21 +16,33 @@ CKEditor 5 Builds are a set of ready to use rich-text editors. Every "build" pro
 
 ### Classic editor
 
-The classic "boxed" editing interface, with a toolbar at the top:
+Classic editor is what most users traditionally learnt to associate with a rich text editor — a toolbar with an editing area placed in a specific position on the page, usually as a part of a form that you use to submit some content to the server.
 
-[ TODO: Classic editor screenshot or sample ]
+In CKEditor 5 the concept of the "boxed" editor was reinvented:
+
+ * The toolbar is now always visible when user scrolls the page down.
+ * The editor content is now placed inline in the page (without surrounding `<iframe>` element) — it is now much easier to style it.
+ * The editor now grows automatically with the content by default.
+
+{@img assets/img/editor-classic.png 772 Screenshot of a classic editor.}
+
+To try it out, check the {@link examples/builds/classic-editor classic editor example}.
 
 ### Inline editor
 
 The edited content remains a part of the page, with a floating toolbar attached:
 
-[ TODO: Inline editor screenshot ]
+{@img assets/img/editor-inline.png 774 Screenshot of an inline editor.}
+
+To try it out, check the {@link examples/builds/inline-editor inline editor example}.
 
 ### Editor with balloon toolbar
 
 The edited content remains a part of the page (like in the inline editor). The toolbar appears in a balloon next to the selection (when the selection is not empty):
 
-[ TODO: Ballon toolbar editor screenshot ]
+{@img assets/img/editor-balloon-toolbar.png 779 Screenshot of a baloon toolbar editor.}
+
+To try it out, check the {@link examples/builds/balloon-toolbar-editor balloon toolbar editor example}.
 
 ## How builds are designed
 
@@ -41,7 +53,7 @@ Each build was designed to satisfy as many use cases as possible. They differ in
 * Provide setups as generic as possible, based on research and community feedback.
 
 <info-box>
-Features like fonts, colors and alignment will be introduced in the future, when the new types of builds will be introduced with the purpose of satisfying document editing scenarios.  
+	Features like fonts, colors and alignment will be introduced in the future, when the new types of builds will be introduced with the purpose of satisfying document editing scenarios.
 </info-box>
 
 ### Build customization
@@ -49,9 +61,9 @@ Features like fonts, colors and alignment will be introduced in the future, when
 Every build comes with a default set of features and a default configuration of them. Although the builds try to fit many cases, they may still need to be adjusted in some integrations. The following modifications are possible:
 
  * You can override the default **configuration of features** (e.g. define different image styles or heading levels).
- * You can change the default **toolbar configuration** (e.g. remove undo/redo buttons). 
+ * You can change the default **toolbar configuration** (e.g. remove undo/redo buttons).
  * You can also **remove features** (plugins).
- 
+
 Read more in the {@link builds/guides/integration/configuration Configuration guide}.
 
 If a build doesn't provide all the necessary features or you want create a highly optimized build of editor which will contain only the necessary features, then you need to customize the build or create a brand new one. Check {@link builds/guides/development/custom-builds Custom builds} for details on how to change the default builds to match your preferences.
@@ -79,7 +91,7 @@ The following are **some** common use cases:
 	* Social messaging and content sharing.
 	* Creation of ads in recruitment software.
 
-### When NOT to use CKEditor 5 Builds?
+### When NOT to use CKEditor 5 builds?
 
 The {@link framework/index CKEditor 5 Framework} should be used, instead of builds, in the following cases:
 

+ 2 - 2
docs/builds/guides/whats-new.md

@@ -30,7 +30,7 @@ The outdated concept of image "alignment" was dropped in favor of {@link feature
 
 No more complex dialogs for links.
 
-[ TODO Screenshot of a link with the edit balloon on it ]
+{@img assets/img/feature-link.png 503 Simplified link dialog.}
 
 ### Autoformatting
 
@@ -62,7 +62,7 @@ We feel that in previous editor versions we had way too many features and config
 
 In CKEditor 5 misleading formatting tools were removed, dialogs were stripped out or simplified in favor of well designed features that require no configuration.
 
-[ TODO Screenshot of the toolbar ]
+{@img assets/img/feature-toolbar.png 610 Simplified toolbar with features designed for writing quality content.}
 
 ## Lightweight
 

+ 4 - 4
docs/builds/index.md

@@ -11,10 +11,10 @@ CKEditor 5 Builds are the fastest and easiest way to use CKEditor 5 in your appl
 
 ## Documentation 
 
- * {@link builds/guides/overview Guides} &ndash; learn on how to install, integrate and configure CKEditor 5 Builds. More complex aspects, like creating custom builds are explained too.
- * {@link examples/index Examples} &ndash; try the live demos of all available builds.
- * {@link features/index Features} &ndash; learn about some of the features included in CKEditor 5 Builds.
+ * {@link builds/guides/overview Guides} &ndash; Learn how to install, integrate and configure CKEditor 5 Builds. More complex aspects, like creating custom builds are explained here, too.
+ * {@link examples/index Examples} &ndash; Try live demos of all available builds.
+ * {@link features/index Features} &ndash; Learn about some of the features included in CKEditor 5 Builds.
 
 ## Contribute
 
-CKEditor is an Open Source project so your contribution is welcome. Feel free to {@link builds/guides/reporting-issues report bugs} or improve the code on [GitHub](https://github.com/ckeditor/ckeditor5). Since CKEditor is localized, you can also help [translating it](https://www.transifex.com/ckeditor/ckeditor5/). You do not need to be a programmer to contribute to the project!
+CKEditor is an Open Source project and your contribution is most welcome. Feel free to {@link builds/guides/reporting-issues report bugs} or improve the code on [GitHub](https://github.com/ckeditor/ckeditor5). Since CKEditor is localized, you can also help [translating it](https://www.transifex.com/ckeditor/ckeditor5/). You do not need to be a programmer to contribute to the project!

+ 9 - 0
docs/examples/builds/balloon-toolbar-editor.md

@@ -0,0 +1,9 @@
+---
+title: Balloon toolbar editor
+category: examples-builds
+order: 30
+---
+
+{@link builds/guides/overview#Editor-with-balloon-toolbar Balloon toolbar editor} example.
+
+{@snippet examples/balloon-toolbar-editor}

+ 4 - 2
docs/examples/builds/classic-editor.md

@@ -1,9 +1,11 @@
 ---
-title: Classic editor example
+title: Classic editor
 category: examples-builds
 order: 10
 ---
 
-Classic editor example.
+{@snippet build-classic-source}
+
+{@link builds/guides/overview#Classic-editor Classic editor} example.
 
 {@snippet examples/classic-editor}

+ 3 - 3
docs/examples/builds/inline-editor.md

@@ -1,9 +1,9 @@
 ---
-title: Inline editor example
+title: Inline editor
 category: examples-builds
-order: 10
+order: 20
 ---
 
-Inline editor example.
+{@link builds/guides/overview#Inline-editor Inline editor} example.
 
 {@snippet examples/inline-editor}

+ 15 - 2
docs/features/keyboard-support.md

@@ -1,6 +1,7 @@
 ---
 title: Keyboard support
 category: features
+classes: keyboard-shortcuts
 ---
 
 Below is a list of the most important keystrokes supported by CKEditor 5 and its features:
@@ -10,7 +11,7 @@ Below is a list of the most important keystrokes supported by CKEditor 5 and its
 | Copy | <kbd>Ctrl</kbd> + <kbd>C</kbd> | <kbd>⌘</kbd> + <kbd>C</kbd> |
 | Paste | <kbd>Ctrl</kbd> + <kbd>V</kbd> | <kbd>⌘</kbd> + <kbd>V</kbd> |
 | Undo | <kbd>Ctrl</kbd> + <kbd>Z</kbd> | <kbd>⌘</kbd> + <kbd>Z</kbd> |
-| Redo | <kbd>Ctrl</kbd> + <kbd>Y</kbd> / <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Z</kbd>  | <kbd>⌘</kbd> + <kbd>Y</kbd> / <kbd>⌘</kbd> + <kbd>Shift</kbd> + <kbd>Z</kbd> |
+| Redo | <kbd>Ctrl</kbd> + <kbd>Y</kbd> <br> <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Z</kbd>  | <kbd>⌘</kbd> + <kbd>Y</kbd> <br> <kbd>⌘</kbd> + <kbd>Shift</kbd> + <kbd>Z</kbd> |
 | Bold | <kbd>Ctrl</kbd> + <kbd>B</kbd> | <kbd>⌘</kbd> + <kbd>I</kbd> |
 | Italic | <kbd>Ctrl</kbd> + <kbd>I</kbd> | <kbd>⌘</kbd> + <kbd>I</kbd> |
 | Link | <kbd>Ctrl</kbd> + <kbd>K</kbd> | <kbd>⌘</kbd> + <kbd>K</kbd> |
@@ -18,6 +19,18 @@ Below is a list of the most important keystrokes supported by CKEditor 5 and its
 | Nest the current list item (when in a list) | <kbd>Tab</kbd> | <kbd>Tab</kbd> |
 | Move focus to the visible contextual balloon | <kbd>Tab</kbd> | <kbd>Tab</kbd> |
 | Move focus between fields (inputs and buttons) in contextual balloons | <kbd>Tab</kbd> | <kbd>Tab</kbd> |
-| Move focus to the toolbar | <kbd>Alt</kbd> + <kbd>F10</kbd> | <kbd>Alt</kbd> + <kbd>F10</kbd> (may require <kbd>Fn</kbd>) |
+| Move focus to the toolbar | <kbd>Alt</kbd> + <kbd>F10</kbd> | <kbd>Alt</kbd> + <kbd>F10</kbd> <br> (may require <kbd>Fn</kbd>) |
 | Navigate through the toolbar | <kbd>↑</kbd> / <kbd>→</kbd> / <kbd>↓</kbd> / <kbd>←</kbd> | <kbd>↑</kbd> / <kbd>→</kbd> / <kbd>↓</kbd> / <kbd>←</kbd> |
 | Execute the currently focused button | <kbd>Enter</kbd> | <kbd>Enter</kbd> |
+
+<style>
+.keyboard-shortcuts th {
+	text-align: center;
+}
+.keyboard-shortcuts td:nth-of-type(1) {
+	text-align: right;
+}
+.keyboard-shortcuts td:nth-of-type(2), .keyboard-shortcuts td:nth-of-type(3) {
+	width: 25%;
+}
+</style>

+ 2 - 0
docs/features/read-only.md

@@ -3,6 +3,8 @@ title: Read-only support
 category: features
 ---
 
+{@snippet build-classic-source}
+
 The editor can be set into a read-only mode by changing the value of the {@link module:core/editor/editor~Editor#isReadOnly `Editor#isReadOnly`} property.
 
 See the demo below:

+ 4 - 0
docs/umberto.json

@@ -146,6 +146,10 @@
 			"path": "packages/ckeditor5-image",
 			"prefix": "image"
 		},
+		{
+			"path": "packages/ckeditor5-markdown-gfm",
+			"prefix": "markdown-gfm"
+		},
 		{
 			"path": "packages/ckeditor5-theme-lark",
 			"prefix": "theme-lark"

+ 2 - 0
mgit.json

@@ -6,7 +6,9 @@
     "@ckeditor/ckeditor5-autoformat": "ckeditor/ckeditor5-autoformat",
     "@ckeditor/ckeditor5-basic-styles": "ckeditor/ckeditor5-basic-styles",
     "@ckeditor/ckeditor5-block-quote": "ckeditor/ckeditor5-block-quote",
+    "@ckeditor/ckeditor5-build-balloon-toolbar": "ckeditor/ckeditor5-build-balloon-toolbar",
     "@ckeditor/ckeditor5-build-classic": "ckeditor/ckeditor5-build-classic",
+    "@ckeditor/ckeditor5-build-inline": "ckeditor/ckeditor5-build-inline",
     "@ckeditor/ckeditor5-clipboard": "ckeditor/ckeditor5-clipboard",
     "@ckeditor/ckeditor5-core": "ckeditor/ckeditor5-core",
     "@ckeditor/ckeditor5-editor-balloon-toolbar": "ckeditor/ckeditor5-editor-balloon-toolbar#t/ckeditor5-theme-lark/107",

+ 29 - 27
package.json

@@ -1,6 +1,6 @@
 {
   "name": "ckeditor5",
-  "version": "0.10.0",
+  "version": "0.11.0",
   "description": "The development version of CKEditor; the best browser-based WYSIWYG editor.",
   "keywords": [
     "CKEditor",
@@ -8,32 +8,34 @@
     "WYSIWYG"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-adapter-ckfinder": "^0.1.0",
-    "@ckeditor/ckeditor5-autoformat": "^0.5.1",
-    "@ckeditor/ckeditor5-basic-styles": "^0.8.1",
-    "@ckeditor/ckeditor5-block-quote": "^0.1.1",
-    "@ckeditor/ckeditor5-build-classic": "^0.2.0",
-    "@ckeditor/ckeditor5-clipboard": "^0.6.0",
-    "@ckeditor/ckeditor5-core": "^0.8.1",
-    "@ckeditor/ckeditor5-editor-classic": "^0.7.3",
-    "@ckeditor/ckeditor5-editor-inline": "^0.1.1",
-    "@ckeditor/ckeditor5-editor-balloon-toolbar": "^0.0.1",
-    "@ckeditor/ckeditor5-engine": "^0.10.0",
-    "@ckeditor/ckeditor5-enter": "^0.9.1",
-    "@ckeditor/ckeditor5-heading": "^0.9.1",
-    "@ckeditor/ckeditor5-image": "^0.6.0",
-    "@ckeditor/ckeditor5-link": "^0.7.0",
-    "@ckeditor/ckeditor5-list": "^0.6.1",
-    "@ckeditor/ckeditor5-markdown-gfm": "^0.4.3",
-    "@ckeditor/ckeditor5-paragraph": "^0.8.0",
-    "@ckeditor/ckeditor5-presets": "^0.2.2",
-    "@ckeditor/ckeditor5-theme-lark": "^0.8.0",
-    "@ckeditor/ckeditor5-typing": "^0.9.1",
-    "@ckeditor/ckeditor5-ui": "^0.9.0",
-    "@ckeditor/ckeditor5-undo": "^0.8.1",
-    "@ckeditor/ckeditor5-upload": "^0.1.0",
-    "@ckeditor/ckeditor5-utils": "^0.9.1",
-    "@ckeditor/ckeditor5-widget": "^0.1.1"
+    "@ckeditor/ckeditor5-adapter-ckfinder": "^0.1.1",
+    "@ckeditor/ckeditor5-autoformat": "^0.6.0",
+    "@ckeditor/ckeditor5-basic-styles": "^0.9.0",
+    "@ckeditor/ckeditor5-block-quote": "^0.2.0",
+    "@ckeditor/ckeditor5-build-balloon-toolbar": "^0.1.0",
+    "@ckeditor/ckeditor5-build-classic": "^0.3.0",
+    "@ckeditor/ckeditor5-build-inline": "^0.1.0",
+    "@ckeditor/ckeditor5-clipboard": "^0.7.0",
+    "@ckeditor/ckeditor5-core": "^0.9.0",
+    "@ckeditor/ckeditor5-editor-balloon-toolbar": "^0.1.0",
+    "@ckeditor/ckeditor5-editor-classic": "^0.8.0",
+    "@ckeditor/ckeditor5-editor-inline": "^0.2.0",
+    "@ckeditor/ckeditor5-engine": " v0.11.0",
+    "@ckeditor/ckeditor5-enter": "^0.10.0",
+    "@ckeditor/ckeditor5-heading": "^0.10.0",
+    "@ckeditor/ckeditor5-image": "^0.7.0",
+    "@ckeditor/ckeditor5-link": "^0.8.0",
+    "@ckeditor/ckeditor5-list": "^0.7.0",
+    "@ckeditor/ckeditor5-markdown-gfm": "^0.4.4",
+    "@ckeditor/ckeditor5-paragraph": "^0.9.0",
+    "@ckeditor/ckeditor5-presets": "^0.3.0",
+    "@ckeditor/ckeditor5-theme-lark": "^0.9.0",
+    "@ckeditor/ckeditor5-typing": "^0.10.0",
+    "@ckeditor/ckeditor5-ui": "^0.10.0",
+    "@ckeditor/ckeditor5-undo": "^0.9.0",
+    "@ckeditor/ckeditor5-upload": "^0.2.0",
+    "@ckeditor/ckeditor5-utils": "^0.10.0",
+    "@ckeditor/ckeditor5-widget": "^0.2.0"
   },
   "devDependencies": {
     "@ckeditor/ckeditor5-dev-docs": "^7.2.3",

+ 13 - 1
scripts/docs/snippet-adapter/snippetadapter.js

@@ -13,6 +13,8 @@ const CKEditorWebpackPlugin = require( '@ckeditor/ckeditor5-dev-webpack-plugin'
 const ExtractTextPlugin = require( 'extract-text-webpack-plugin' );
 const BabelMinifyPlugin = require( 'babel-minify-webpack-plugin' );
 
+const webpackProcesses = new Map();
+
 module.exports = function snippetAdapter( data ) {
 	const snippetConfig = readSnippetConfig( data.snippetSource.js );
 	const outputPath = path.join( data.outputPath, data.snippetPath );
@@ -30,7 +32,17 @@ module.exports = function snippetAdapter( data ) {
 		sassImportPath
 	} );
 
-	return runWebpack( webpackConfig )
+	let promise;
+
+	// See #530.
+	if ( webpackProcesses.has( outputPath ) ) {
+		promise = webpackProcesses.get( outputPath );
+	} else {
+		promise = runWebpack( webpackConfig );
+		webpackProcesses.set( outputPath, promise );
+	}
+
+	return promise
 		.then( () => {
 			const wasCSSGenerated = fs.existsSync( path.join( outputPath, 'snippet.css' ) );
 			const cssFiles = [