Jelajahi Sumber

Merge branch 'master' into mgit/t/73

Kamil Piechaczek 7 tahun lalu
induk
melakukan
8d85e3b3ae

+ 1 - 66
CONTRIBUTING.md

@@ -1,69 +1,4 @@
 Contributing
 Contributing
 ========================================
 ========================================
 
 
-## Fixing issues and coding features
-
-Things to keep in mind:
-
-* We expect contributions to follow the high-quality code standards that we follow, including [coding style](#code-style) and [tests](#tests). Lack of attention to this point may either make it slow to adopt a contribution or even force us to reject it altogether.
-* There is no guarantee that your contribution will be incorporated in the main code. Still, pull requests make it easy for you to keep them for your own use or for others which may be interested in them.
-* If you plan to start working on a bigger task, it might be worth asking the core team (beforehand) whether a specific feature or solution to an issue will be accepted.
-* If you need any assistance when creating a patch or implementing a feature, ping us under a ticket or on [Twitter](https://twitter.com/ckeditor).
-* Having a CLA is essential to have your contributions accepted ([see bellow](#contributor-license-agreement-cla)).
-
-### Setting up the development environment
-
-To learn how to set up the project and run tests see the [development environment](https://github.com/ckeditor/ckeditor5/wiki/Development-environment) guide.
-
-### Code style
-
-Read more in [code style](https://github.com/ckeditor/ckeditor5-design/wiki/Code-Style), [naming](https://github.com/ckeditor/ckeditor5-design/wiki/Code-Style-Naming-Guidelines) and [file naming](https://github.com/ckeditor/ckeditor5-design/wiki/File-Names) guidelines.
-
-Every package repository installs git hooks which automatically lints and check the code for code style on commit. However, not every code style issue can be discovered this way, so please do not rely on tools too much :).
-
-### Tests
-
-We maintain a 100% of code coverage (including code branches) and pull requests with missing tests will not be accepted. However, keep in mind that 100% is not everything – every *change* must be tested. This means that if you are fixing a bug and your patch did not change the code coverage, the change itself needs a test anyway.
-
-Besides automated tests, you may be asked to create a manual test for the issue. Such manual tests let us quickly validate that the issue was really fixed and are later used during a testing phase (before a release) to make sure no regressions were created.
-
-Read more about our [testing environment](https://github.com/ckeditor/ckeditor5/wiki/Testing-environment).
-
-### Making a pull request
-
-GitHub provides an [extensive documentation about pull requests](https://help.github.com/categories/collaborating-with-issues-and-pull-requests/), so we will skip that.
-
-The only additional things you need to remember is to:
-
-* Fork the repository (CKEditor 5 is a multi-repo project) in which you want to propose a pull request.
-* Start a branch for your code (we use `t/<ticket name>` convention for branch names).
-* Your pull request should be minimal – i.e. change only things described in the ticket. Do not squeeze unrelated changes into your pull request.
-* When making a pull request on GitHub make sure to specify which ticket(s) your pull request resolves. It is also recommended to provide more information, like how to test the patch, issues that you encountered, decisions you had to make, known problems, etc.
-* Make sure you signed the [Contributor License Agreement (CLA)](#contributor-license-agreement-cla) and that tests pass. Test your changes.
-
-## Translating
-
-Being this a project with global impact, contributing translations is both an easy and powerful way to help.
-
-We use the Transifex service for translations at the following address: [https://www.transifex.com/ckeditor/ckeditor5/dashboard/](https://www.transifex.com/ckeditor/ckeditor5/dashboard/).
-
-Here as well, having a CLA in place is a requirement to become an official translator (see bellow).
-
-## Reporting issues / requesting features
-
-[Each repository](https://github.com/ckeditor/ckeditor5#packages) independently handles its issues. However, it's recommended to report issues in [the main repository](https://github.com/ckeditor/ckeditor5/issues) unless you know to which specific repository the issue belongs.
-
-Things to keep in mind:
-
-* Search for existing issues before starting a new one. This helps our team to have the backlog in order.
-* Be concise and informative, making it easy for our team to understand the problem.
-* Do not use the issues pages for asking for help.
-* Feel free to jump into discussions around issues, exposing your opinion.
-
-The issues pages can be used for feature requests.
-
-## Contributor License Agreement (CLA)
-
-To accept contributions sent to us in form of code, documentation or translations, a Contributor License Agreement (CLA) must be in place in order to clarify the intellectual property license granted with them. This license is for your protection as a contributor as well as the protection of us and our users; it does not change your rights to use your own contributions for any other purpose.
-
-To sign the CLA and to have more information, please follow this link: [http://cla.ckeditor.com/](http://cla.ckeditor.com/).
+See the [official contributors' guide to CKEditor 5](https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html) to learn more.

+ 14 - 0
README.md

@@ -122,6 +122,8 @@ CKEditor 5 is a modular, multi-package, multi-repository project. It consists of
 
 
 The [ckeditor5](https://github.com/ckeditor/ckeditor5) repository is the place that centralizes the development of CKEditor 5. It bundles different packages into a single place, adding the necessary helper tools for the development workflow, like the builder and the test runner. [Basic information on how to set up the development environment](https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/development-environment.html) can be found in the documentation.
 The [ckeditor5](https://github.com/ckeditor/ckeditor5) repository is the place that centralizes the development of CKEditor 5. It bundles different packages into a single place, adding the necessary helper tools for the development workflow, like the builder and the test runner. [Basic information on how to set up the development environment](https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/development-environment.html) can be found in the documentation.
 
 
+See the [official contributors' guide](https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html) to learn how to contribute your code to the project.
+
 ### Reporting issues and feature requests
 ### Reporting issues and feature requests
 
 
 Each repository handles its issues independently. However, it is recommended to report issues in [this repository](https://github.com/ckeditor/ckeditor5/issues) unless you know to which specific repository the issue belongs.
 Each repository handles its issues independently. However, it is recommended to report issues in [this repository](https://github.com/ckeditor/ckeditor5/issues) unless you know to which specific repository the issue belongs.
@@ -524,6 +526,18 @@ See CKEditor 5 release blog posts [on the CKEditor blog](https://ckeditor.com/bl
 	</td>
 	</td>
 </tr>
 </tr>
 
 
+<tr>
+	<td>
+		<a href="https://github.com/ckeditor/ckeditor5-paste-from-office"><code>@ckeditor/ckeditor5-paste-from-office</code></a>
+	</td>
+	<td>
+		<a href="https://www.npmjs.com/package/@ckeditor/ckeditor5-paste-from-office"><img src="https://img.shields.io/npm/v/@ckeditor/ckeditor5-paste-from-office.svg" alt="@ckeditor/ckeditor5-paste-from-office npm package badge"></a>
+	</td>
+	<td>
+		The Paste from Office (Word, Excel, Google Docs, etc.) plugin.
+	</td>
+</tr>
+
 <tr>
 <tr>
 	<td>
 	<td>
 		<a href="https://github.com/ckeditor/ckeditor5-table"><code>@ckeditor/ckeditor5-table</code></a>
 		<a href="https://github.com/ckeditor/ckeditor5-table"><code>@ckeditor/ckeditor5-table</code></a>

+ 1 - 1
docs/_snippets/builds/saving-data/autosave.js

@@ -17,7 +17,7 @@ ClassicEditor
 	.create( document.querySelector( '#snippet-autosave' ), {
 	.create( document.querySelector( '#snippet-autosave' ), {
 		cloudServices: CS_CONFIG,
 		cloudServices: CS_CONFIG,
 		toolbar: {
 		toolbar: {
-			viewportTopOffset: 60
+			viewportTopOffset: 100
 		},
 		},
 		autosave: {
 		autosave: {
 			save( editor ) {
 			save( editor ) {

+ 1 - 1
docs/_snippets/builds/saving-data/manualsave.js

@@ -18,7 +18,7 @@ ClassicEditor
 	.create( document.querySelector( '#snippet-manualsave' ), {
 	.create( document.querySelector( '#snippet-manualsave' ), {
 		cloudServices: CS_CONFIG,
 		cloudServices: CS_CONFIG,
 		toolbar: {
 		toolbar: {
-			viewportTopOffset: 60
+			viewportTopOffset: 100
 		}
 		}
 	} )
 	} )
 	.then( editor => {
 	.then( editor => {

+ 2 - 3
docs/_snippets/examples/balloon-editor.html

@@ -1,9 +1,8 @@
 <div id="snippet-balloon-editor">
 <div id="snippet-balloon-editor">
 	<h2>Walking the capitals of Europe: Warsaw</h2>
 	<h2>Walking the capitals of Europe: Warsaw</h2>
 
 
-	<figure class="image">
-		<img src="%BASE_PATH%/assets/img/warsaw.jpg" alt="Picture of the Warsaw Old Town.">
-		<figcaption>Medieval Old Town square, destroyed in 1944 &amp; rebuilt after WWII.</figcaption>
+	<figure class="media">
+		<oembed url="https://www.youtube.com/watch?v=WmWFwGLA1kQ"></oembed>
 	</figure>
 	</figure>
 
 
 	<p>If you enjoyed my previous articles in which we discussed wandering around <a href="https://en.wikipedia.org/wiki/Copenhagen">Copenhagen</a> and <a href="https://en.wikipedia.org/wiki/Vilnius">Vilnius</a>, you’ll definitely love exploring <a href="https://en.wikipedia.org/wiki/Warsaw">Warsaw</a>.</p>
 	<p>If you enjoyed my previous articles in which we discussed wandering around <a href="https://en.wikipedia.org/wiki/Copenhagen">Copenhagen</a> and <a href="https://en.wikipedia.org/wiki/Vilnius">Vilnius</a>, you’ll definitely love exploring <a href="https://en.wikipedia.org/wiki/Warsaw">Warsaw</a>.</p>

+ 1 - 1
docs/_snippets/examples/classic-editor-short.js

@@ -11,7 +11,7 @@ ClassicEditor
 	.create( document.querySelector( '#snippet-classic-editor-short' ), {
 	.create( document.querySelector( '#snippet-classic-editor-short' ), {
 		cloudServices: CS_CONFIG,
 		cloudServices: CS_CONFIG,
 		toolbar: {
 		toolbar: {
-			viewportTopOffset: 60
+			viewportTopOffset: 100
 		}
 		}
 	} )
 	} )
 	.then( editor => {
 	.then( editor => {

+ 6 - 3
docs/_snippets/examples/classic-editor.html

@@ -3,9 +3,8 @@
 
 
 	<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>
 	<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">
-		<img src="%BASE_PATH%/assets/img/umbrellas.jpg" alt="Three Monks walking on ancient temple.">
-		<figcaption>Leaving your comfort zone might lead you to such beautiful sceneries like this one.</figcaption>
+	<figure class="media">
+		<oembed url="https://www.youtube.com/watch?v=BLJ4GKKaiXw"></oembed>
 	</figure>
 	</figure>
 
 
 	<h3>Appreciation of diversity</h3>
 	<h3>Appreciation of diversity</h3>
@@ -26,6 +25,10 @@
 		<li>start your adventure</li>
 		<li>start your adventure</li>
 	</ul>
 	</ul>
 
 
+	<figure class="image image-style-side"><img src="%BASE_PATH%/assets/img/umbrellas.jpg" alt="Three Monks walking on ancient temple.">
+		<figcaption>Leaving your comfort zone might lead you to such beautiful sceneries like this one.</figcaption>
+	</figure>
+
 	<h3>Confidence</h3>
 	<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>
 	<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>

+ 1 - 1
docs/_snippets/examples/classic-editor.js

@@ -11,7 +11,7 @@ ClassicEditor
 	.create( document.querySelector( '#snippet-classic-editor' ), {
 	.create( document.querySelector( '#snippet-classic-editor' ), {
 		cloudServices: CS_CONFIG,
 		cloudServices: CS_CONFIG,
 		toolbar: {
 		toolbar: {
-			viewportTopOffset: 60
+			viewportTopOffset: 100
 		}
 		}
 	} )
 	} )
 	.then( editor => {
 	.then( editor => {

+ 1 - 1
docs/_snippets/examples/custom-build.js

@@ -33,7 +33,7 @@ ClassicEditor
 		],
 		],
 		toolbar: {
 		toolbar: {
 			items: [ 'bold', 'italic', 'underline', 'strikethrough', 'code', '|', 'highlight', '|', 'undo', 'redo' ],
 			items: [ 'bold', 'italic', 'underline', 'strikethrough', 'code', '|', 'highlight', '|', 'undo', 'redo' ],
-			viewportTopOffset: 60
+			viewportTopOffset: 100
 		},
 		},
 		cloudServices: CS_CONFIG
 		cloudServices: CS_CONFIG
 	} )
 	} )

+ 25 - 16
docs/_snippets/examples/document-editor.html

@@ -6,7 +6,7 @@
 			<h3 style="text-align:center;">Welcome letter</h3>
 			<h3 style="text-align:center;">Welcome letter</h3>
 
 
 			<p>Dear Guest,</p>
 			<p>Dear Guest,</p>
-			<p>We are delighted to welcome you to the annual <em>Flavorful Tuscany Meetup</em> and hope you will enjoy the programme as well as your stay at the <a href="http://ckeditor.com">Bilancino Hotel</a>.</p>
+			<p>We are delighted to welcome you to the annual <i>Flavorful Tuscany Meetup</i> and hope you will enjoy the programme as well as your stay at the <a href="http://ckeditor.com">Bilancino Hotel</a>.</p>
 			<p>Please find below the full schedule of the event.</p>
 			<p>Please find below the full schedule of the event.</p>
 
 
 			<figure class="table">
 			<figure class="table">
@@ -18,16 +18,26 @@
 					</thead>
 					</thead>
 					<tbody>
 					<tbody>
 						<tr>
 						<tr>
-							<td>9:30&nbsp;AM&nbsp;-&nbsp;11:30&nbsp;AM</td>
-							<td>Americano vs. Brewed - “know your coffee” session with <strong>Stefano Garau</strong></td>
+							<td>9:30 AM - 11:30 AM</td>
+							<td>
+								<p><strong>Americano vs. Brewed</strong> - “know your coffee” with:&nbsp;</p>
+								<ul>
+									<li>Giulia Bianchi</li>
+									<li>Stefano Garau</li>
+									<li>Giuseppe Russo</li>
+								</ul>
+							</td>
 						</tr>
 						</tr>
 						<tr>
 						<tr>
-							<td>1:00&nbsp;PM&nbsp;-&nbsp;3:00&nbsp;PM</td>
-							<td>Pappardelle al pomodoro - <mark class="marker-yellow">live cooking session</mark> with <strong>Rita Fresco</strong></td>
+							<td>1:00 PM - 3:00 PM</td>
+							<td>
+								<p><strong>Pappardelle al pomodoro</strong> - live cooking</p>
+								<p>Incorporate the freshest ingredients&nbsp;<br>with Rita Fresco</p>
+							</td>
 						</tr>
 						</tr>
 						<tr>
 						<tr>
-							<td>5:00&nbsp;PM&nbsp;-&nbsp;8:00&nbsp;PM</td>
-							<td>Tuscan vineyards at a glance - wine-tasting session with <strong>Frederico Riscoli</strong></td>
+							<td>5:00 PM - 8:00 PM</td>
+							<td><strong>Tuscan vineyards at a glance</strong> - wine-tasting&nbsp;<br>with Frederico Riscoli</td>
 						</tr>
 						</tr>
 					</tbody>
 					</tbody>
 				</table>
 				</table>
@@ -127,7 +137,8 @@
 
 
 	/* Scale down all heading previews because they are way too big to be presented in the UI.
 	/* Scale down all heading previews because they are way too big to be presented in the UI.
 	Preserve the relative scale, though. */
 	Preserve the relative scale, though. */
-	.document-editor .ck-heading-dropdown .ck-list .ck-button:not(.ck-heading_paragraph) .ck-button__label {
+	.document-editor .ck-heading-dropdown .ck-list .ck-heading_heading1 .ck-button__label,
+	.document-editor .ck-heading-dropdown .ck-list .ck-heading_heading2 .ck-button__label {
 		transform: scale(0.8);
 		transform: scale(0.8);
 		transform-origin: left;
 		transform-origin: left;
 	}
 	}
@@ -177,18 +188,16 @@
 		margin-bottom: .952em;
 		margin-bottom: .952em;
 	}
 	}
 
 
-	/* Set the styles for "Paragraph". */
-	.document-editor .ck-content p {
-		font-size: 1em;
-		line-height: 1.63em;
-		padding-top: .5em;
-		margin-bottom: 1.13em;
-	}
-
 	/* Make the block quoted text serif with some additional spacing. */
 	/* Make the block quoted text serif with some additional spacing. */
 	.document-editor .ck-content blockquote {
 	.document-editor .ck-content blockquote {
 		font-family: Georgia, serif;
 		font-family: Georgia, serif;
 		margin-left: calc( 2 * var(--ck-spacing-large) );
 		margin-left: calc( 2 * var(--ck-spacing-large) );
 		margin-right: calc( 2 * var(--ck-spacing-large) );
 		margin-right: calc( 2 * var(--ck-spacing-large) );
 	}
 	}
+
+	/* Some table cells have a lot content and some not. Align them vertically
+	to make reading easier. */
+	.document-editor .ck-content table td {
+		vertical-align: middle;
+	}
 </style>
 </style>

+ 1 - 1
docs/_snippets/examples/inline-editor.js

@@ -17,7 +17,7 @@ Array.from( inlineInjectElements ).forEach( inlineElement => {
 			styles: [ 'full', 'alignLeft', 'alignRight' ]
 			styles: [ 'full', 'alignLeft', 'alignRight' ]
 		},
 		},
 		toolbar: {
 		toolbar: {
-			viewportTopOffset: 60
+			viewportTopOffset: 100
 		},
 		},
 		cloudServices: CS_CONFIG
 		cloudServices: CS_CONFIG
 	};
 	};

+ 1 - 1
docs/_snippets/features/image-upload.js

@@ -11,7 +11,7 @@ ClassicEditor
 	.create( document.querySelector( '#snippet-image-upload' ), {
 	.create( document.querySelector( '#snippet-image-upload' ), {
 		cloudServices: CS_CONFIG,
 		cloudServices: CS_CONFIG,
 		toolbar: {
 		toolbar: {
-			viewportTopOffset: 60
+			viewportTopOffset: 100
 		}
 		}
 	} )
 	} )
 	.then( editor => {
 	.then( editor => {

+ 1 - 1
docs/_snippets/features/read-only.js

@@ -11,7 +11,7 @@ ClassicEditor
 	.create( document.querySelector( '#snippet-read-only' ), {
 	.create( document.querySelector( '#snippet-read-only' ), {
 		cloudServices: CS_CONFIG,
 		cloudServices: CS_CONFIG,
 		toolbar: {
 		toolbar: {
-			viewportTopOffset: 60
+			viewportTopOffset: 100
 		}
 		}
 	} )
 	} )
 	.then( editor => {
 	.then( editor => {

+ 1 - 1
docs/_snippets/features/ui-language.js

@@ -15,7 +15,7 @@ ClassicEditor
 	.create( document.querySelector( '#snippet-ui-language' ), {
 	.create( document.querySelector( '#snippet-ui-language' ), {
 		cloudServices: CS_CONFIG,
 		cloudServices: CS_CONFIG,
 		toolbar: {
 		toolbar: {
-			viewportTopOffset: 60
+			viewportTopOffset: 100
 		}
 		}
 	} )
 	} )
 	.then( editor => {
 	.then( editor => {

TEMPAT SAMPAH
docs/assets/img/warsaw.jpg


+ 3 - 1
docs/assets/snippet-styles.css

@@ -92,7 +92,9 @@ It breaks CKEditor 5 (see how <p><code>[]</code></p> looks). */
 }
 }
 
 
 /* https://github.com/ckeditor/ckeditor5/issues/1282 */
 /* https://github.com/ckeditor/ckeditor5/issues/1282 */
-.live-snippet .ck.ck-content .table p:last-child {
+.live-snippet .ck.ck-content .table p:last-child,
+.live-snippet .ck.ck-content .table ul:last-child,
+.live-snippet .ck.ck-content .table ol:last-child {
 	margin-bottom: 0;
 	margin-bottom: 0;
 }
 }
 
 

+ 2 - 10
docs/builds/guides/frameworks/angular.md

@@ -18,7 +18,7 @@ Currently, the CKEditor 5 component for Angular supports integrating CKEditor 5
 
 
 ## Quick start
 ## Quick start
 
 
-In your existing Angular project, install the [CKEditor 5 rich text editor component for Angular 2+](https://www.npmjs.com/package/@ckeditor/ckeditor5-angular):
+In your existing Angular project, install the [CKEditor 5 WYSIWYG editor component for Angular 2+](https://www.npmjs.com/package/@ckeditor/ckeditor5-angular):
 
 
 ```bash
 ```bash
 npm install --save-dev @ckeditor/ckeditor5-angular
 npm install --save-dev @ckeditor/ckeditor5-angular
@@ -32,14 +32,6 @@ Assuming that you picked [`@ckeditor/ckeditor5-build-classic`](https://www.npmjs
 npm install --save-dev @ckeditor/ckeditor5-build-classic
 npm install --save-dev @ckeditor/ckeditor5-build-classic
 ```
 ```
 
 
-**Note:** You may need to allow external JavaScript in your project's `tsconfig.json` for the builds to work properly:
-
-```json
-"compilerOptions": {
-	"allowJs": true
-}
-```
-
 Now, add `CKEditorModule` to your application module imports:
 Now, add `CKEditorModule` to your application module imports:
 
 
 ```ts
 ```ts
@@ -302,4 +294,4 @@ For advanced usage see the {@link features/ui-language Setting UI language} guid
 
 
 ## Contributing and reporting issues
 ## Contributing and reporting issues
 
 
-The source code of this component is available on GitHub in https://github.com/ckeditor/ckeditor5-angular.
+The source code of the rich text editor component for Angular 2+ is available on GitHub in https://github.com/ckeditor/ckeditor5-angular.

+ 4 - 4
docs/builds/guides/frameworks/overview.md

@@ -8,7 +8,7 @@ menu-title: Overview
 
 
 ## Is CKEditor 5 compatible with framework XYZ?
 ## Is CKEditor 5 compatible with framework XYZ?
 
 
-Yes. CKEditor 5 is compatible with every JavaScript framework that we have heard of so far. CKEditor 5 is a JavaScript rich text editing component (a pretty complex one but still) and it does not require any uncommon techniques or technologies to be used. Threfore, unless the framework that you use has very not typical limitations, CKEditor 5 is compatible with it.
+Yes. CKEditor 5 is compatible with every JavaScript framework that we have heard of so far. CKEditor 5 is a JavaScript rich text editing component (a pretty complex one but still) and it does not require any uncommon techniques or technologies to be used. Therefore, unless the framework that you use has very not typical limitations, CKEditor 5 is compatible with it.
 
 
 > How do I use CKEditor 5 with my framework?
 > How do I use CKEditor 5 with my framework?
 
 
@@ -24,12 +24,12 @@ When checking how to integrate CKEditor 5 with your framework you can follow the
 
 
 	CKEditor 5 offers {@link builds/guides/overview ready-to-use builds} that expose a {@link builds/guides/integration/basic-api rich JavaScript API} which you can use to {@link builds/guides/integration/basic-api#creating-an-editor create editors} and {@link builds/guides/integration/basic-api#interacting-with-the-editor control them}.
 	CKEditor 5 offers {@link builds/guides/overview ready-to-use builds} that expose a {@link builds/guides/integration/basic-api rich JavaScript API} which you can use to {@link builds/guides/integration/basic-api#creating-an-editor create editors} and {@link builds/guides/integration/basic-api#interacting-with-the-editor control them}.
 
 
-## Official rich text editor integrations
+## Official WYSIWYG editor integrations
 
 
 There are two official integrations so far:
 There are two official integrations so far:
 
 
-* {@link builds/guides/frameworks/react CKEditor 5 component for React}
-* {@link builds/guides/frameworks/angular CKEditor 5 component for Angular 2+}
+* {@link builds/guides/frameworks/react CKEditor 5 rich-text editor for React}
+* {@link builds/guides/frameworks/angular CKEditor 5 rich-text editor for Angular 2+}
 
 
 Refer to their documentation to learn how to use them.
 Refer to their documentation to learn how to use them.
 
 

+ 2 - 2
docs/builds/guides/frameworks/react.md

@@ -24,7 +24,7 @@ The easiest way to use CKEditor 5 in your React application is by choosing one o
 	Until the above issue is resolved, in this guide we will use `create-react-app@1` which does not require ejecting the configuration when testing your application in the development mode. You will have to, however, eject it anyway to [build your app for production](#note-building-for-production).
 	Until the above issue is resolved, in this guide we will use `create-react-app@1` which does not require ejecting the configuration when testing your application in the development mode. You will have to, however, eject it anyway to [build your app for production](#note-building-for-production).
 </info-box>
 </info-box>
 
 
-Install the [CKEditor 5 rich text editor component for React](https://www.npmjs.com/package/@ckeditor/ckeditor5-react) and the build of your choice.
+Install the [CKEditor 5 WYSIWYG editor component for React](https://www.npmjs.com/package/@ckeditor/ckeditor5-react) and the build of your choice.
 
 
 Assuming that you picked [`@ckeditor/ckeditor5-build-classic`](https://www.npmjs.com/package/@ckeditor/ckeditor5-build-classic):
 Assuming that you picked [`@ckeditor/ckeditor5-build-classic`](https://www.npmjs.com/package/@ckeditor/ckeditor5-build-classic):
 
 
@@ -372,4 +372,4 @@ export default App;
 
 
 ## Contributing and reporting issues
 ## Contributing and reporting issues
 
 
-The source code of this component is available on GitHub in https://github.com/ckeditor/ckeditor5-react.
+The source code of rich text editor component for React is available on GitHub in https://github.com/ckeditor/ckeditor5-react.

+ 7 - 0
docs/builds/guides/support/reporting-issues.md

@@ -26,4 +26,11 @@ All issues should be reported in the [CKEditor 5 repositories](https://github.co
 
 
 Issues related to builds are usually caused by issues in the CKEditor 5 Framework components and plugins included in the build. You may report issues directly into the repositories that you think are related to them (like plugins) but, if you are unsure, the [`ckeditor5` issues page](https://github.com/ckeditor/ckeditor5/issues) should be used as the fallback place for any issue. The CKEditor 5 team will then move the issue to the right place or give you further instructions, if necessary.
 Issues related to builds are usually caused by issues in the CKEditor 5 Framework components and plugins included in the build. You may report issues directly into the repositories that you think are related to them (like plugins) but, if you are unsure, the [`ckeditor5` issues page](https://github.com/ckeditor/ckeditor5/issues) should be used as the fallback place for any issue. The CKEditor 5 team will then move the issue to the right place or give you further instructions, if necessary.
 
 
+Things to keep in mind:
+
+* Search for existing issues before starting a new one. This helps our team to have the backlog in order.
+* Be concise and informative, making it easy for our team to understand the problem.
+* Do not use the issues pages for asking for help. The project has other {@link framework/guides/support/getting-support communication channels} for that purpose.
+* Feel free to jump into discussions around issues, exposing your opinion!
+
 Issues with third-party plugins should be reported directly to their developers.
 Issues with third-party plugins should be reported directly to their developers.

+ 27 - 7
docs/framework/guides/architecture/core-editor-architecture.md

@@ -109,19 +109,39 @@ refresh() {
 
 
 This method is called automatically (by the command itself) when {@link module:engine/model/document~Document#event:change any changes are applied to the model}. This means that the command automatically refreshes its own state when anything changes in the editor.
 This method is called automatically (by the command itself) when {@link module:engine/model/document~Document#event:change any changes are applied to the model}. This means that the command automatically refreshes its own state when anything changes in the editor.
 
 
-The important thing about commands is that every change in their state as well as calling the `execute()` method fires an event (e.g. {@link module:core/command~Command#event-change:{property} `change:value`} or {@link module:core/command~Command#event:execute `execute`}).
+The important thing about commands is that every change in their state as well as calling the `execute()` method fire events (e.g. {@link module:core/command~Command#event-set:{property} `#set:value`} and {@link module:core/command~Command#event-change:{property} `#change:value`} when you change the `#value` property and {@link module:core/command~Command#event:execute `#execute`} when you execute the command).
+
+<info-box>
+	Read more about this mechanism in the {@link framework/guides/deep-dive/observables Observables} deep dive guide.
+</info-box>
 
 
 These events make it possible to control the command from the outside. For instance, if you want to disable specific commands when some condition is true (for example, according to your application logic, they should be temporarily disabled) and there is no other, cleaner way to do that, you can block the command manually:
 These events make it possible to control the command from the outside. For instance, if you want to disable specific commands when some condition is true (for example, according to your application logic, they should be temporarily disabled) and there is no other, cleaner way to do that, you can block the command manually:
 
 
 ```js
 ```js
-const command = editor.commands.get( 'someCommand' );
+function disableCommand( cmd ) {
+	cmd.on( 'set:isEnabled', forceDisable, { priority: 'highest' } );
+
+	cmd.isEnabled = false;
 
 
-command.on( 'change:isEnabled', forceDisable, { priority: 'lowest' } );
-command.isEnabled = false;
+	// Make it possible to enable the command again.
+	return () => {
+		cmd.off( 'set:isEnabled', forceDisable );
+		cmd.refresh();
+	};
 
 
-function forceDisabled() {
-	this.isEnabled = false;
+	function forceDisable( evt ) {
+		evt.return = false;
+		evt.stop();
+	}
 }
 }
+
+// Usage:
+
+// Disabling the command.
+const enableBold = disableCommand( editor.commands.get( 'bold' ) );
+
+// Enabling the command again.
+enableBold();
 ```
 ```
 
 
 The command will now be disabled as long as you do not {@link module:utils/emittermixin~EmitterMixin#off off} this listener, regardless of how many times `someCommand.refresh()` is called.
 The command will now be disabled as long as you do not {@link module:utils/emittermixin~EmitterMixin#off off} this listener, regardless of how many times `someCommand.refresh()` is called.
@@ -143,7 +163,7 @@ class MyPlugin extends Plugin {
 		// Make MyPlugin listen to someOtherCommand#execute and block it.
 		// Make MyPlugin listen to someOtherCommand#execute and block it.
 		// You listen with a high priority to block the event before
 		// You listen with a high priority to block the event before
 		// someOtherCommand's execute() method is called.
 		// someOtherCommand's execute() method is called.
-		this.listenTo( someOtherCommand, 'execute', ( evt ) => {
+		this.listenTo( someOtherCommand, 'execute', evt => {
 			evt.stop();
 			evt.stop();
 		}, { priority: 'high' } );
 		}, { priority: 'high' } );
 	}
 	}

+ 109 - 0
docs/framework/guides/contributing/contributing.md

@@ -0,0 +1,109 @@
+---
+category: framework-contributing
+order: 10
+---
+
+# Contributing
+
+CKEditor 5 is an Open Source project and we will be most thankful for your contributions. You can help us by fixing issues, reporting them or translating the editor interface. Community effort and engagement is what has been driving the development of our WYSIWYG editor projects since 2003!
+
+## Fixing issues and coding features
+
+Before you start, here are some things to keep in mind:
+
+* We expect contributions to follow the high-quality code standards that we follow, including [coding style](#code-style) and [tests](#tests). Lack of attention to this point may either make it slow to adopt a contribution or even force us to reject it altogether.
+* There is no guarantee that your contribution will be incorporated into the project code. Still, pull requests make it easy for you to keep them for your own use or for others who may be interested in them.
+* If you plan to start working on a bigger task, it might be worth asking the core team (beforehand) whether a specific feature or a solution to an issue will be accepted.
+* If you need any assistance when creating a patch or implementing a feature, ping us under the ticket or on [Gitter](https://gitter.im/ckeditor/ckeditor5).
+* [Having a CLA](#contributor-license-agreement-cla) is essential to have your contributions accepted.
+
+### Setting up the development environment
+
+To learn how to set up the project and run tests see the {@link framework/guides/contributing/development-environment development environment} guide.
+
+### Code style
+
+Read more in the [code style](https://github.com/ckeditor/ckeditor5-design/wiki/Code-Style), [naming](https://github.com/ckeditor/ckeditor5-design/wiki/Code-Style-Naming-Guidelines) and [file naming](https://github.com/ckeditor/ckeditor5-design/wiki/File-Names) guidelines.
+
+Every package repository installs Git hooks that automatically lint and check the code for code style on commit. However, not every code style issue can be discovered this way, so please do not rely on tools too much :).
+
+### Tests
+
+We maintain a **100% code coverage** (including code branches) and pull requests with missing tests will not be accepted. However, keep in mind that 100% is not everything &mdash; every *change* must be tested. This means that if you are fixing a bug and your patch did not change the code coverage, the change itself needs a test anyway.
+
+Besides automated tests, you may be asked to create a manual test for the issue. Such manual tests let us quickly validate that the issue was really fixed and are later used during the testing phase (before a release) to make sure no regressions were created.
+
+Read more about our {@link framework/guides/contributing/testing-environment testing environment}.
+
+### Creating a pull request
+
+<info-box>
+	GitHub provides an [excellent documentation about pull requests](https://help.github.com/categories/collaborating-with-issues-and-pull-requests/). If you are not sure what to do, this is the right place to start.
+</info-box>
+
+Assuming that you would like to propose some changes in the [Link](https://github.com/ckeditor/ckeditor5-link) feature, these are the steps you should take to create a pull request:
+
+1. Make sure to open a ticket describing the issue/feature/problem that you want to solve in your pull request. This can be skipped in case of obvious and trivial changes (typos, documentation, etc.). You can report this ticket in the specific repository in which you will make a pull request or in https://github.com/ckeditor/ckeditor5.
+1. Make sure your {@link framework/guides/contributing/development-environment development environment} is ready.
+1. Go to GitHub and [fork the repository](https://help.github.com/articles/fork-a-repo) ([ckeditor5-link](https://github.com/ckeditor/ckeditor5-link) in this particular case). The forked repository will appear in your GitHub account as `https://github.com/YOUR-USERNAME/ckeditor5-link`.
+1. Open your terminal, then go to the package ("repository") folder in your development environment:
+
+	```shell
+	$ cd path/to/ckeditor5/packages/ckeditor5-link
+	```
+
+1. Start a new branch for your code. We use the `t/GITHUB-ISSUE-NUMBER` convention for branch names:
+
+	```shell
+	$ git checkout -b t/GITHUB-ISSUE-NUMBER
+	```
+
+1. Make the changes. Stick to the [code-style guidelines](#code-style) and remember about [tests and 100% code coverage](#tests)!
+1. Commit your changes:
+
+	```shell
+	$ git commit -m "Squashed a nasty bug in the link editing."
+	```
+
+1. Now it is time to make your changes public. First, you need to let `git` know about the fork you created by adding the remote:
+
+	```shell
+	$ git remote add my-fork https://github.com/YOUR-USERNAME/ckeditor5-link
+	```
+
+1. Push your changes to your forked repository:
+
+	```shell
+	$ git push my-fork t/GITHUB-ISSUE-NUMBER
+	```
+
+1. Go to your forked repository on GitHub. Use the [pull request button](https://help.github.com/articles/about-pull-requests/) and follow the instructions. Make sure to include a merge commit message text matches the {@link framework/guides/contributing/git-commit-message-convention convention}
+1. **Let us know about your pull request!** The best way is to comment under the original issue.
+
+Some additional things you should keep in mind:
+
+* Your pull request should be minimal &mdash; i.e. change only things described in the ticket. Do not squeeze unrelated changes into your pull request.
+* When making a pull request on GitHub, make sure to specify which ticket(s) your pull request resolves. It is also recommended to provide more information, like how to test the patch, issues that you encountered, decisions you had to make, known problems, etc.
+* Make sure you signed the [Contributor License Agreement (CLA)](#contributor-license-agreement-cla) and that tests pass. Test your changes!
+
+<info-box>
+	If want your changes to be permanent in your development environment, make sure your `mgit.json` file {@link framework/guides/contributing/development-environment#using-mgit-for-custom-packages points to your forked version of the repository} so next time you execute `mgit update` to refresh the project, the utility will use your fork.
+</info-box>
+
+## Translating
+
+CKEditor 5 is a project with global impact, so contributing translations is both an easy and powerful way to help.
+
+We use the Transifex service for translations at the following address: [https://www.transifex.com/ckeditor/ckeditor5/dashboard/](https://www.transifex.com/ckeditor/ckeditor5/dashboard/).
+
+Here as well, having a CLA in place is a requirement to become an official translator (see below).
+
+## Reporting issues and requesting features
+
+Read the {@link framework/guides/support/reporting-issues reporting issues} guide to learn more.
+
+## Contributor License Agreement (CLA)
+
+To accept contributions sent to us in form of code, documentation or translations, a Contributor License Agreement (CLA) must be in place in order to clarify the intellectual property license granted with them. This license is for your protection as a contributor as well as the protection of us and our users; it does not change your rights to use your own contributions for any other purpose.
+
+To sign the CLA and to get more information, please follow this link: [https://cla.ckeditor.com/](https://cla.ckeditor.com/).

+ 1 - 0
mgit.json

@@ -32,6 +32,7 @@
     "@ckeditor/ckeditor5-markdown-gfm": "ckeditor/ckeditor5-markdown-gfm",
     "@ckeditor/ckeditor5-markdown-gfm": "ckeditor/ckeditor5-markdown-gfm",
     "@ckeditor/ckeditor5-media-embed": "ckeditor/ckeditor5-media-embed",
     "@ckeditor/ckeditor5-media-embed": "ckeditor/ckeditor5-media-embed",
     "@ckeditor/ckeditor5-paragraph": "ckeditor/ckeditor5-paragraph",
     "@ckeditor/ckeditor5-paragraph": "ckeditor/ckeditor5-paragraph",
+    "@ckeditor/ckeditor5-paste-from-office": "ckeditor/ckeditor5-paste-from-office",
     "@ckeditor/ckeditor5-table": "ckeditor/ckeditor5-table",
     "@ckeditor/ckeditor5-table": "ckeditor/ckeditor5-table",
     "@ckeditor/ckeditor5-theme-lark": "ckeditor/ckeditor5-theme-lark",
     "@ckeditor/ckeditor5-theme-lark": "ckeditor/ckeditor5-theme-lark",
     "@ckeditor/ckeditor5-typing": "ckeditor/ckeditor5-typing",
     "@ckeditor/ckeditor5-typing": "ckeditor/ckeditor5-typing",

+ 2 - 1
package.json

@@ -51,6 +51,7 @@
     "@ckeditor/ckeditor5-markdown-gfm": "^10.0.3",
     "@ckeditor/ckeditor5-markdown-gfm": "^10.0.3",
     "@ckeditor/ckeditor5-media-embed": "^10.0.0",
     "@ckeditor/ckeditor5-media-embed": "^10.0.0",
     "@ckeditor/ckeditor5-paragraph": "^10.0.3",
     "@ckeditor/ckeditor5-paragraph": "^10.0.3",
+    "@ckeditor/ckeditor5-paste-from-office": "^0.0.1",
     "@ckeditor/ckeditor5-table": "^11.0.0",
     "@ckeditor/ckeditor5-table": "^11.0.0",
     "@ckeditor/ckeditor5-theme-lark": "^11.1.0",
     "@ckeditor/ckeditor5-theme-lark": "^11.1.0",
     "@ckeditor/ckeditor5-typing": "^11.0.1",
     "@ckeditor/ckeditor5-typing": "^11.0.1",
@@ -81,7 +82,7 @@
     "raw-loader": "^0.5.1",
     "raw-loader": "^0.5.1",
     "style-loader": "^0.23.0",
     "style-loader": "^0.23.0",
     "uglifyjs-webpack-plugin": "^1.2.7",
     "uglifyjs-webpack-plugin": "^1.2.7",
-    "umberto": "^0.8.0",
+    "umberto": "^0.9.1",
     "webpack": "^4.15.0"
     "webpack": "^4.15.0"
   },
   },
   "engines": {
   "engines": {