Explorar el Código

Merge branch 'master' into i/5886

Piotrek Koszuliński hace 6 años
padre
commit
bbda171013
Se han modificado 84 ficheros con 1090 adiciones y 566 borrados
  1. 1 1
      .eslintrc.js
  2. 3 3
      .github/ISSUE_TEMPLATE/1-bug-report.md
  3. 1 1
      .github/ISSUE_TEMPLATE/2-feature-request.md
  4. 1 1
      .github/ISSUE_TEMPLATE/3-enhancement.md
  5. 1 1
      .github/ISSUE_TEMPLATE/4-security-issue.md
  6. 1 1
      .github/ISSUE_TEMPLATE/5-task.md
  7. 1 1
      .github/ISSUE_TEMPLATE/6-docs-issue.md
  8. 1 1
      .github/PULL_REQUEST_TEMPLATE.md
  9. 1 1
      .travis.yml
  10. 1 1
      LICENSE.md
  11. 1 1
      docs/_snippets/build-classic-source.js
  12. 1 1
      docs/_snippets/builds/saving-data/autosave.js
  13. 1 1
      docs/_snippets/builds/saving-data/build-autosave-source.js
  14. 1 1
      docs/_snippets/builds/saving-data/manualsave.js
  15. 1 1
      docs/_snippets/examples/balloon-block-editor.js
  16. 1 1
      docs/_snippets/examples/balloon-editor.js
  17. 1 1
      docs/_snippets/examples/classic-editor-short.js
  18. 1 1
      docs/_snippets/examples/classic-editor.js
  19. 1 1
      docs/_snippets/examples/custom-build.js
  20. 1 1
      docs/_snippets/examples/document-editor.js
  21. 1 1
      docs/_snippets/examples/inline-editor.js
  22. 1 1
      docs/_snippets/examples/multi-root-editor.js
  23. 1 1
      docs/_snippets/features/build-ui-language-source.js
  24. 1 1
      docs/_snippets/features/image-upload.js
  25. 1 1
      docs/_snippets/features/mathtype.js
  26. 1 1
      docs/_snippets/features/placeholder-custom.js
  27. 1 1
      docs/_snippets/features/placeholder.js
  28. 1 1
      docs/_snippets/features/read-only.js
  29. 1 1
      docs/_snippets/features/ui-language-content.js
  30. 1 1
      docs/_snippets/features/ui-language-rtl.js
  31. 1 1
      docs/_snippets/features/ui-language.js
  32. 1 1
      docs/_snippets/features/wproofreader.js
  33. 1 1
      docs/_snippets/framework/development-tools/inspector.js
  34. 5 2
      docs/_snippets/framework/tutorials/block-widget.js
  35. 1 1
      docs/_snippets/framework/tutorials/inline-widget.js
  36. 1 1
      docs/_snippets/framework/tutorials/using-react-in-widget.js
  37. 1 1
      docs/assets/snippet-styles.css
  38. 1 1
      docs/assets/snippet.js
  39. 1 1
      docs/assets/styles.css
  40. 4 0
      docs/builds/guides/development/custom-builds.md
  41. 1 0
      docs/builds/guides/frameworks/react.md
  42. 5 1
      docs/builds/guides/integration/installation.md
  43. 4 0
      docs/builds/guides/integration/installing-plugins.md
  44. 2 2
      docs/builds/guides/migrate.md
  45. 1 1
      docs/builds/guides/support/license-and-legal.md
  46. 4 0
      docs/features/read-only.md
  47. 1 1
      docs/framework/guides/support/license-and-legal.md
  48. 1 1
      docs/framework/guides/tutorials/using-react-in-a-widget.md
  49. 1 1
      package.json
  50. 2 2
      scripts/bump-year.js
  51. 1 1
      scripts/clean-up-svg-icons.sh
  52. 1 1
      scripts/docs/build-and-publish-nightly.js
  53. 1 1
      scripts/docs/build-and-publish.js
  54. 1 1
      scripts/docs/build-api-docs.js
  55. 1 1
      scripts/docs/build-content-styles.js
  56. 1 1
      scripts/docs/build-docs.js
  57. 1 1
      scripts/docs/buildapi.js
  58. 1 1
      scripts/docs/content-styles/ckeditor.js
  59. 1 1
      scripts/docs/content-styles/list-content-styles.js
  60. 1 1
      scripts/docs/getrealimportpath.js
  61. 1 1
      scripts/docs/snippetadapter.js
  62. 1 1
      scripts/release/bump-versions.js
  63. 1 1
      scripts/release/changelog.js
  64. 1 1
      scripts/release/publish.js
  65. 1 1
      scripts/release/update-utils-version.js
  66. 1 1
      scripts/switch-to-dev-dev.sh
  67. 1 1
      scripts/update-stable-branches.sh
  68. 32 0
      tests/_utils/utils.js
  69. 1 1
      tests/manual/article.js
  70. 1 1
      tests/manual/mathtype.js
  71. 1 0
      tests/manual/performance/_utils/large.txt
  72. 1 0
      tests/manual/performance/_utils/medium.txt
  73. 3 0
      tests/manual/performance/_utils/small.txt
  74. 19 0
      tests/manual/performance/editorinit.html
  75. 69 0
      tests/manual/performance/editorinit.js
  76. 7 0
      tests/manual/performance/editorinit.md
  77. 92 0
      tests/manual/performance/richeditor.html
  78. 150 0
      tests/manual/performance/richeditor.js
  79. 3 0
      tests/manual/performance/richeditor.md
  80. 11 0
      tests/manual/performance/setdata.html
  81. 53 0
      tests/manual/performance/setdata.js
  82. 5 0
      tests/manual/performance/setdata.md
  83. 1 1
      tests/manual/wproofreader.js
  84. 553 495
      yarn.lock

+ 1 - 1
.eslintrc.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 3 - 3
.github/ISSUE_TEMPLATE/1-bug-report.md

@@ -15,11 +15,11 @@ assignees: ''
 
 ### ✔️ Expected result
 
-*What is the expected result of the above steps?*
+_What is the expected result of the above steps?_
 
 ### ❌ Actual result
 
-*What is the actual result of the above steps?*
+_What is the actual result of the above steps?_
 
 ## 📃 Other details
 
@@ -30,4 +30,4 @@ assignees: ''
 
 ---
 
-If you'd like to see this fixed sooner, add a 👍 reaction to this post.
+If you'd like to see this fixed sooner, add a 👍 reaction to this post.

+ 1 - 1
.github/ISSUE_TEMPLATE/2-feature-request.md

@@ -9,7 +9,7 @@ assignees: ''
 
 ## 📝 Provide a description of the new feature
 
-*What is the expected behavior of the proposed feature?*
+_What is the expected behavior of the proposed feature?_
 
 ---
 

+ 1 - 1
.github/ISSUE_TEMPLATE/3-enhancement.md

@@ -9,7 +9,7 @@ assignees: ''
 
 ## 📝 Provide a description of the improvement
 
-*How the feature works now and what you'd like to change*?
+_How the feature works now and what you'd like to change_?
 
 ## 📃 Other details
 

+ 1 - 1
.github/ISSUE_TEMPLATE/4-security-issue.md

@@ -7,4 +7,4 @@ assignees: ''
 
 ---
 
-⚠️ Please **DO NOT report security issues here**, use the contact form at https://ckeditor.com/contact/ instead. ⚠️
+⚠️ Please **DO NOT report security issues here**, use the contact form at [https://ckeditor.com/contact/](https://ckeditor.com/contact/) instead. ⚠️

+ 1 - 1
.github/ISSUE_TEMPLATE/5-task.md

@@ -9,7 +9,7 @@ assignees: ''
 
 ## Provide a description of the task
 
-*What steps should be taken to fulfill the task?*
+_What steps should be taken to fulfill the task?_
 
 ## 📃 Other details
 

+ 1 - 1
.github/ISSUE_TEMPLATE/6-docs-issue.md

@@ -9,4 +9,4 @@ assignees: ''
 
 ## 📝 Provide a description of requested docs changes
 
-*What is the purpose and what should be changed?*
+_What is the purpose and what should be changed?_

+ 1 - 1
.github/PULL_REQUEST_TEMPLATE.md

@@ -6,4 +6,4 @@ Type: Message. Closes #000.
 
 ### Additional information
 
-*For example – encountered issues, assumptions you had to make, other affected tickets, etc.*
+_For example – encountered issues, assumptions you had to make, other affected tickets, etc._

+ 1 - 1
.travis.yml

@@ -21,7 +21,7 @@ install:
 - rm -rf node_modules
 - yarn install
 script:
-- yarn run test --reporter=dots
+- yarn run test --reporter=dots --production
 - yarn run docs:api --validate-only
 - 'if [ $TRAVIS_TEST_RESULT -eq 0 ]; then
     travis_wait 30 yarn run docs:build-and-publish-nightly;

+ 1 - 1
LICENSE.md

@@ -2,7 +2,7 @@ Software License Agreement
 ==========================
 
 **CKEditor 5** – https://github.com/ckeditor/ckeditor5 <br>
-Copyright (c) 2003-2019, [CKSource](http://cksource.com) Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2020, [CKSource](http://cksource.com) Frederico Knabben. All rights reserved.
 
 Licensed under the terms of [GNU General Public License Version 2 or later](http://www.gnu.org/licenses/gpl.html).
 

+ 1 - 1
docs/_snippets/build-classic-source.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

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

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

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

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

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

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
docs/_snippets/examples/balloon-block-editor.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

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

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

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

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

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

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

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

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

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

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

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

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
docs/_snippets/examples/multi-root-editor.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

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

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

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

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
docs/_snippets/features/mathtype.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
docs/_snippets/features/placeholder-custom.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
docs/_snippets/features/placeholder.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

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

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

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

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

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

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

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

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
docs/_snippets/features/wproofreader.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
docs/_snippets/framework/development-tools/inspector.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 5 - 2
docs/_snippets/framework/tutorials/block-widget.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 
@@ -52,7 +52,10 @@ class SimpleBoxUI extends Plugin {
 			buttonView.bind( 'isOn', 'isEnabled' ).to( command, 'value', 'isEnabled' );
 
 			// Execute the command when the button is clicked (executed).
-			this.listenTo( buttonView, 'execute', () => editor.execute( 'insertSimpleBox' ) );
+			this.listenTo( buttonView, 'execute', () => {
+				editor.execute( 'insertSimpleBox' );
+				editor.editing.view.focus();
+			} );
 
 			return buttonView;
 		} );

+ 1 - 1
docs/_snippets/framework/tutorials/inline-widget.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 /* globals console, window, document */

+ 1 - 1
docs/_snippets/framework/tutorials/using-react-in-widget.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md.
  */
 

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

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  */
 
 :root {

+ 1 - 1
docs/assets/snippet.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
docs/assets/styles.css

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  */
 
 /* https://github.com/ckeditor/ckeditor5/issues/5598. */

+ 4 - 0
docs/builds/guides/development/custom-builds.md

@@ -21,6 +21,10 @@ Some of the reasons for creating custom builds are:
 * Changing the {@link features/ui-language localization language} of the editor.
 * Enabling bug fixes which are still not a part of any public release.
 
+<info-box hint>
+	If you are looking for an easy way to create a custom build of CKEditor 5, check also the [online builder](https://ckeditor.com/ckeditor-5/online-builder/), which allows you to create easily a custom build through a simple and intuitive UI.
+</info-box>
+
 ## Requirements
 
 In order to start developing CKEditor 5 you will require:

+ 1 - 0
docs/builds/guides/frameworks/react.md

@@ -72,6 +72,7 @@ The `<CKEditor>` component supports the following properties:
 * `onChange` &ndash; A function called when the editor data has changed. See the {@link module:engine/model/document~Document#event:change:data `editor.model.document#change:data`} event.
 * `onBlur` &ndash; A function called when the editor was blurred. See the {@link module:engine/view/document~Document#event:blur `editor.editing.view.document#blur`} event.
 * `onFocus` &ndash; A function called when the editor was focused. See the {@link module:engine/view/document~Document#event:focus `editor.editing.view.document#focus`} event.
+* `onError` &ndash; A function called when the editor has crashed during the initialization. It receives the error object as a parameter.
 
 The editor events callbacks (`onChange`, `onBlur`, `onFocus`) receive two parameters:
 

+ 5 - 1
docs/builds/guides/integration/installation.md

@@ -14,6 +14,7 @@ There are several options to download CKEditor 5 builds:
 
 * [CDN](#cdn)
 * [npm](#npm)
+* [Online builder](#online-builder)
 * [Zip download](#zip-download)
 
 For the list of available builds check the {@link builds/guides/overview#available-builds Overview} page.
@@ -44,6 +45,10 @@ npm install --save @ckeditor/ckeditor5-build-decoupled-document
 
 CKEditor will then be available at `node_modules/@ckeditor/ckeditor5-build-[name]/build/ckeditor.js`. It can also be imported directly to your code by `require( '@ckeditor/ckeditor5-build-[name]' )`.
 
+### Online builder
+
+The [online builder](https://ckeditor.com/ckeditor-5/online-builder/) lets you download CKEditor 5 builds and also allows you to create your own, customized builds (with a different set of plugins) in a few easy steps, through a simple and intuitive UI.
+
 ### Zip download
 
 Go to the [CKEditor 5 builds download page](https://ckeditor.com/ckeditor-5-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.
@@ -73,4 +78,3 @@ Once the CKEditor script is loaded, you can {@link builds/guides/integration/bas
 	Also, for a more advanced setup, you may wish to bundle the CKEditor script with other scripts used by your application. See {@link builds/guides/integration/advanced-setup Advanced setup} for more information about it.
 </info-box>
 
-

+ 4 - 0
docs/builds/guides/integration/installing-plugins.md

@@ -13,6 +13,10 @@ In this guide you can learn how to add plugins to your editor in the two most co
 * When you use an {@link builds/guides/overview editor build},
 * When you {@link framework/guides/quick-start build your editor from source}.
 
+<info-box hint>
+	If you are looking for an easy way to create a custom build of CKEditor 5 without installing anything, check the [online builder](https://ckeditor.com/ckeditor-5/online-builder/), which allows you to create easily a build with a custom set of plugins through a simple and intuitive UI.
+</info-box>
+
 ## Requirements
 
 In order to start developing CKEditor 5 you will require:

+ 2 - 2
docs/builds/guides/migrate.md

@@ -169,8 +169,8 @@ Note: The number of options was reduced on purpose. We understood that configuri
 		<tr>
 			<td><a href="../../../../ckeditor4/latest/api/CKEDITOR_config.html#cfg-codeSnippetGeshi_url">codeSnippetGeshi_url</a> <br> <a href="../../../../ckeditor4/latest/api/CKEDITOR_config.html#cfg-codeSnippet_codeClass">codeSnippet_codeClass</a> <br> <a href="../../../../ckeditor4/latest/api/CKEDITOR_config.html#cfg-codeSnippet_languages">codeSnippet_languages</a> <br> <a href="../../../../ckeditor4/latest/api/CKEDITOR_config.html#cfg-codeSnippet_theme">codeSnippet_theme</a></td>
 			<td>
-				<p>Code blocks are not supported yet, but are <a href="https://github.com/ckeditor/ckeditor5/issues/436" target="_blank" rel="noopener">coming soon</a>.</p>
-				<p>A plugin adding support for the inline <code>&lt;code&gt;</code> element is already included in the {@link features/basic-styles Basic styles} package.<br>
+				<p>Refer to the {@link features/code-blocks Code block feature} guide to learn more about support for blocks of pre–formatted code in CKEditor 5.</p>
+				<p>A plugin adding support for the inline <code>&lt;code&gt;</code> element is included in the {@link features/basic-styles Basic styles} package.<br>
 				Note: The {@link module:basic-styles/code~Code Code feature} is not available by default in any build, but can be enabled in a {@link builds/guides/development/custom-builds custom build} (see the {@link features/basic-styles Basic styles} feature guide).</p>
 			</td>
 		</tr>

+ 1 - 1
docs/builds/guides/support/license-and-legal.md

@@ -10,7 +10,7 @@ order: 20
 
 The following legal notices apply to CKEditor 5 Builds and all software from CKEditor 5 Ecosystem included with it.
 
-Copyright (c) 2003-2019, CKSource Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2020, CKSource Frederico Knabben. All rights reserved.
 
 Licensed under the terms of [GNU General Public License Version 2 or later](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html).
 

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

@@ -11,3 +11,7 @@ The editor can be set into a read-only mode by changing the value of the {@link
 See the demo below:
 
 {@snippet features/read-only}
+
+<info-box>
+	See also the {@link features/restricted-editing restricted editing feature} that lets you define which parts of a document can be editable for a group of users with limited editing rights, leaving the rest of the content non-editable to them.
+</info-box>

+ 1 - 1
docs/framework/guides/support/license-and-legal.md

@@ -10,7 +10,7 @@ order: 20
 
 The following legal notices apply to CKEditor 5 Framework and all software from CKEditor 5 Ecosystem included with it.
 
-Copyright (c) 2003-2019, CKSource Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2020, CKSource Frederico Knabben. All rights reserved.
 
 Licensed under the terms of [GNU General Public License Version 2 or later](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html).
 

+ 1 - 1
docs/framework/guides/tutorials/using-react-in-a-widget.md

@@ -311,7 +311,7 @@ export default class ProductPreviewEditing extends Plugin {
 	_defineConverters() {
 		const editor = this.editor;
 		const conversion = editor.conversion;
-		const renderProduct = editor.config.get( 'products.productRenderer' );
+		const renderProduct = editor.config.get( 'products' ).productRenderer;
 
 		// <productPreview> converters ((data) view → model)
 		conversion.for( 'upcast' ).elementToElement( {

+ 1 - 1
package.json

@@ -78,7 +78,7 @@
     "@ckeditor/ckeditor5-comments": "^16.0.0",
     "@ckeditor/ckeditor5-dev-docs": "^11.0.9",
     "@ckeditor/ckeditor5-dev-env": "^17.0.0",
-    "@ckeditor/ckeditor5-dev-tests": "^17.1.0",
+    "@ckeditor/ckeditor5-dev-tests": "^18.0.0",
     "@ckeditor/ckeditor5-dev-utils": "^12.0.5",
     "@ckeditor/ckeditor5-dev-webpack-plugin": "^8.0.5",
     "@ckeditor/ckeditor5-inspector": "^1.5.0",

+ 2 - 2
scripts/bump-year.js

@@ -1,7 +1,7 @@
 #!/usr/bin/env node
 
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 
@@ -17,7 +17,7 @@ Full command to update the entire project:
 git pull && mrgit sync && mrgit exec 'node ../../scripts/bump-year.js' && node scripts/bump-year.js
 
 And after reviewing the changes:
-mrgit commit -m "Internal: Bumped the year. [skip ci]" && mrgit push git commit -am "Internal: Bumped the year." && git push
+mrgit commit -m "Internal: Bumped the year. [skip ci]" && mrgit push && git commit -am "Internal: Bumped the year." && git push
 
 */
 

+ 1 - 1
scripts/clean-up-svg-icons.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-# @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+# @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
 # For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 
 # Cleans up and optimizes SVG files using the SVGO utility.

+ 1 - 1
scripts/docs/build-and-publish-nightly.js

@@ -1,7 +1,7 @@
 #!/usr/bin/env node
 
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
scripts/docs/build-and-publish.js

@@ -1,7 +1,7 @@
 #!/usr/bin/env node
 
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
scripts/docs/build-api-docs.js

@@ -1,7 +1,7 @@
 #!/usr/bin/env node
 
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
scripts/docs/build-content-styles.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
scripts/docs/build-docs.js

@@ -1,7 +1,7 @@
 #!/usr/bin/env node
 
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
scripts/docs/buildapi.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
scripts/docs/content-styles/ckeditor.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
scripts/docs/content-styles/list-content-styles.js

@@ -1,7 +1,7 @@
 #!/usr/bin/env node
 
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
scripts/docs/getrealimportpath.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
scripts/docs/snippetadapter.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
scripts/release/bump-versions.js

@@ -1,7 +1,7 @@
 #!/usr/bin/env node
 
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
scripts/release/changelog.js

@@ -1,7 +1,7 @@
 #!/usr/bin/env node
 
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
scripts/release/publish.js

@@ -1,7 +1,7 @@
 #!/usr/bin/env node
 
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
scripts/release/update-utils-version.js

@@ -1,7 +1,7 @@
 #!/usr/bin/env node
 
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
scripts/switch-to-dev-dev.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-# @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+# @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
 # For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 
 # Symlinks packages from https://github.com/ckeditor/ckeditor5-dev in ckeditor5's node_modules.

+ 1 - 1
scripts/update-stable-branches.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 
-# @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+# @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
 # For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 
 set -e

+ 32 - 0
tests/_utils/utils.js

@@ -0,0 +1,32 @@
+/**
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
+ */
+
+/* globals window */
+
+/**
+ * Loads a predefined set of performance markup files.
+ *
+ *		loadPerformanceData()
+ *			.then( fixtures => {
+ *				window.editor.setData( fixtures.small );
+ *			} );
+ *
+ * @returns {Promise.<Object.<String, String>>}
+ */
+export function loadPerformanceData() {
+	return Promise.all( [ getFileContents( 'small' ), getFileContents( 'medium' ), getFileContents( 'large' ) ] )
+		.then( responses => {
+			return {
+				small: responses[ 0 ],
+				medium: responses[ 1 ],
+				large: responses[ 2 ]
+			};
+		} );
+
+	function getFileContents( fileName ) {
+		return window.fetch( `_utils/${ fileName }.txt` )
+			.then( resp => resp.text() );
+	}
+}

+ 1 - 1
tests/manual/article.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 1
tests/manual/mathtype.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

+ 1 - 0
tests/manual/performance/_utils/large.txt

@@ -0,0 +1 @@
+<h1>large data placeholder</h1>

+ 1 - 0
tests/manual/performance/_utils/medium.txt

@@ -0,0 +1 @@
+<h1>Medium data placeholder</h1>

+ 3 - 0
tests/manual/performance/_utils/small.txt

@@ -0,0 +1,3 @@
+<h1>Hello world</h1>
+
+<p>This is rather short text with <em>very little</em> text <strong>formatting</strong>.</p>

+ 19 - 0
tests/manual/performance/editorinit.html

@@ -0,0 +1,19 @@
+<style>
+	.editor {
+		display: none;
+	}
+</style>
+
+<div id="test-controls">
+	Initialize editor with:
+	<button id="small-content" data-file-name="small" disabled>small</button>
+	<button id="medium-content" data-file-name="medium" disabled>medium</button>
+	<button id="large-content" data-file-name="large" disabled>large</button>
+	HTML payload.
+</div>
+
+<hr>
+
+<div id="editor_small" class="editor"></div>
+<div id="editor_medium" class="editor"></div>
+<div id="editor_large" class="editor"></div>

+ 69 - 0
tests/manual/performance/editorinit.js

@@ -0,0 +1,69 @@
+/**
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
+ */
+
+/* globals console, window, document */
+
+import ClassicEditor from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
+import ArticlePluginSet from '@ckeditor/ckeditor5-core/tests/_utils/articlepluginset';
+import { loadPerformanceData } from '../../_utils/utils';
+
+loadPerformanceData()
+	.then( fixtures => {
+		const buttons = document.querySelectorAll( '#test-controls button' );
+
+		for ( const button of buttons ) {
+			const fixtureName = button.getAttribute( 'data-file-name' );
+			const content = fixtures[ fixtureName ];
+			const editorElement = document.querySelector( `#editor_${ fixtureName }` );
+
+			// Put the source content in editor-related elements ahead of time, so that potentially
+			// big `innerHTML` change does not affect the benchmark when pressing the button.
+			editorElement.innerHTML = content;
+
+			button.addEventListener( 'click', function() {
+				ClassicEditor
+					.create( editorElement, {
+						plugins: [ ArticlePluginSet ],
+						toolbar: [
+							'heading',
+							'|',
+							'bold',
+							'italic',
+							'link',
+							'bulletedList',
+							'numberedList',
+							'|',
+							'outdent',
+							'indent',
+							'|',
+							'blockQuote',
+							'insertTable',
+							'mediaEmbed',
+							'undo',
+							'redo'
+						],
+						image: {
+							toolbar: [ 'imageStyle:full', 'imageStyle:side', '|', 'imageTextAlternative' ]
+						},
+						table: {
+							contentToolbar: [
+								'tableColumn',
+								'tableRow',
+								'mergeTableCells'
+							]
+						}
+					} )
+					.then( editor => {
+						window.editor = editor;
+					} )
+					.catch( err => {
+						console.error( err.stack );
+					} );
+			} );
+
+			button.disabled = false;
+		}
+	} );
+

+ 7 - 0
tests/manual/performance/editorinit.md

@@ -0,0 +1,7 @@
+# Performance: editor initialization
+
+1. Begin performance recording in devtools.
+1. Use any button to initialize the editor with a given content.
+1. Stop performance recording.
+
+**Note:** You should initialize editor only once. To test it again / different scenario refresh the page to have clear reference.

+ 92 - 0
tests/manual/performance/richeditor.html

@@ -0,0 +1,92 @@
+<div id="word-count-wrapper" style="display:none">
+	Words: <span id="word-count"></span> Characters: <span id="character-count"></span>
+</div>
+
+<div id="editor">
+	<h1>Rich editor (h1)</h1>
+
+	<p>
+		This editor features exceptionally high number of plugins.
+	</p>
+
+	<p>
+		It
+		<strong>features</strong>
+		<em>some basic</em>
+		<s>font</s>
+		<sub>styling &mdash;</sub>
+		<sup>nothing</sup>
+		<u>too crazy</u>.
+		<a href="https://ckeditor.com">Links</a> are also here.
+	</p>
+
+	<p>
+		Font can have customized
+		<span style="background-color:#e6e64c">background</span>,
+		<span style="color:#ff0000">foreground</span>,
+		<span style="font-family:'Trebuchet MS', Helvetica, sans-serif">font face</span>,
+		<span class="text-big">height</span>.
+		You can also <mark class="marker-yellow">mark</mark> it or use <code>code</code> if you want to.
+	</p>
+
+	<p style="text-align:right">
+		Text alignment can be customized.
+	</p>
+
+	<ol>
+		<li>Ordered list
+			<ol>
+				<li>Ordered list</li>
+			</ol>
+		</li>
+	</ol>
+
+	<ul>
+		<li>Unordered list
+			<ul>
+				<li>Unordered list</li>
+			</ul>
+		</li>
+	</ul>
+
+	<ul>
+		<li><input type="checkbox">To-do list item 1</li>
+		<li><input type="checkbox" checked="checked">To-do list item 2</li>
+		<li><input type="checkbox">To-do list item 3</li>
+	</ul>
+
+	<p style="margin-left:40px">Indenting a paragraph is fine too.</p>
+
+	<blockquote>
+		An example blockquote text.
+	</blockquote>
+
+	<table>
+		<tbody>
+			<tr>
+				<td>cell</td>
+				<td>cell</td>
+			</tr>
+			<tr>
+				<td>cell</td>
+				<td>cell</td>
+			</tr>
+		</tbody>
+	</table>
+
+	<figure class="media">
+		<oembed url="https://www.youtube.com/watch?v=CB70skVw3nU"></oembed>
+	</figure>
+
+	<pre><code class="language-xml">&lt;blockquote&gt;
+		An example blockquote text.
+&lt;/blockquote&gt;</code></pre>
+
+	<p>Time to separate it with a horizontal rule, followed by a page break:</p>
+
+	<hr>
+
+	<div class="page-break" style="page-break-after:always;"><span style="display:none;">&nbsp;</span></div>
+
+	<p>There is a possibility to work with the restricted editing plugin: <span class="restricted-editing-exception">Like that</span>.</p>
+</div>

+ 150 - 0
tests/manual/performance/richeditor.js

@@ -0,0 +1,150 @@
+/**
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
+ */
+
+/* globals console, window, document */
+
+import ClassicEditor from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
+import ArticlePluginSet from '@ckeditor/ckeditor5-core/tests/_utils/articlepluginset';
+
+import Alignment from '@ckeditor/ckeditor5-alignment/src/alignment';
+import AutoFormat from '@ckeditor/ckeditor5-autoformat/src/autoformat';
+import AutoSave from '@ckeditor/ckeditor5-autosave/src/autosave';
+import Strikethrough from '@ckeditor/ckeditor5-basic-styles/src/strikethrough';
+import Subscript from '@ckeditor/ckeditor5-basic-styles/src/subscript';
+import Superscript from '@ckeditor/ckeditor5-basic-styles/src/superscript';
+import Underline from '@ckeditor/ckeditor5-basic-styles/src/underline';
+import Code from '@ckeditor/ckeditor5-basic-styles/src/code';
+import CodeBlock from '@ckeditor/ckeditor5-code-block/src/codeblock';
+import FontBackgroundColor from '@ckeditor/ckeditor5-font/src/fontbackgroundcolor';
+import FontColor from '@ckeditor/ckeditor5-font/src/fontcolor';
+import FontFamily from '@ckeditor/ckeditor5-font/src/fontfamily';
+import FontSize from '@ckeditor/ckeditor5-font/src/fontsize';
+import Highlight from '@ckeditor/ckeditor5-highlight/src/highlight';
+import HorizontalLine from '@ckeditor/ckeditor5-horizontal-line/src/horizontalline';
+import TodoList from '@ckeditor/ckeditor5-list/src/todolist';
+import Mention from '@ckeditor/ckeditor5-mention/src/mention';
+import PageBreak from '@ckeditor/ckeditor5-page-break/src/pagebreak';
+import PasteFromOffice from '@ckeditor/ckeditor5-paste-from-office/src/pastefromoffice';
+import RemoveFormat from '@ckeditor/ckeditor5-remove-format/src/removeformat';
+import StandardEditingMode from '@ckeditor/ckeditor5-restricted-editing/src/standardeditingmode';
+import SpecialCharacters from '@ckeditor/ckeditor5-special-characters/src/specialcharacters';
+import ImageUpload from '@ckeditor/ckeditor5-image/src/imageupload';
+import ImageResize from '@ckeditor/ckeditor5-image/src/imageresize';
+import IndentBlock from '@ckeditor/ckeditor5-indent/src/indentblock';
+import { UploadAdapterMock } from '@ckeditor/ckeditor5-upload/tests/_utils/mocks';
+import WordCount from '@ckeditor/ckeditor5-word-count/src/wordcount';
+
+ClassicEditor
+	.create( document.querySelector( '#editor' ), {
+		plugins: [
+			ArticlePluginSet,
+			Alignment,
+			AutoFormat,
+			AutoSave,
+			Strikethrough,
+			Subscript,
+			Superscript,
+			Underline,
+			Code,
+			CodeBlock,
+			FontBackgroundColor,
+			FontColor,
+			FontFamily,
+			FontSize,
+			Highlight,
+			HorizontalLine,
+			TodoList,
+			Mention,
+			PageBreak,
+			PasteFromOffice,
+			RemoveFormat,
+			StandardEditingMode,
+			SpecialCharacters,
+			ImageUpload,
+			ImageResize,
+			WordCount,
+			IndentBlock
+		],
+		toolbar: {
+			items: [
+				'heading',
+				'|',
+				'bold',
+				'italic',
+				'strikethrough',
+				'subscript',
+				'superscript',
+				'underline',
+				'code',
+				'alignment',
+				'link',
+				'removeFormat',
+				'|',
+				'fontBackgroundColor',
+				'fontColor',
+				'fontFamily',
+				'fontSize',
+				'highlight',
+				'|',
+				'bulletedList',
+				'numberedList',
+				'todoList',
+				'outdent',
+				'indent',
+				'|',
+				'blockQuote',
+				'insertTable',
+				'mediaEmbed',
+				'codeBlock',
+				'horizontalLine',
+				'pageBreak',
+				'specialCharacters',
+				'restrictedEditingException',
+				'undo',
+				'redo'
+			],
+			shouldNotGroupWhenFull: true
+		},
+		table: {
+			contentToolbar: [ 'tableColumn', 'tableRow', 'mergeTableCells' ]
+		},
+		image: {
+			toolbar: [ 'imageStyle:full', 'imageStyle:side', 'imageTextAlternative' ]
+		}
+	} )
+	.then( editor => {
+		window.editor = editor;
+
+		addWordCountListener( editor );
+		addUploadMockAdapter( editor );
+	} )
+	.catch( err => {
+		console.error( err.stack );
+	} );
+
+function addWordCountListener( editor ) {
+	const wordCount = editor.plugins.get( WordCount );
+	const wordCountElement = document.getElementById( 'word-count' );
+	const characterCountElement = document.getElementById( 'character-count' );
+
+	wordCountElement.innerHTML = wordCount.words;
+	characterCountElement.innerHTML = wordCount.characters;
+
+	wordCount.on( 'change:words', ( evt, name, value ) => {
+		document.getElementById( 'word-count' ).innerHTML = value;
+	} );
+
+	wordCount.on( 'change:characters', ( evt, name, value ) => {
+		document.getElementById( 'character-count' ).innerHTML = value;
+	} );
+
+	document.getElementById( 'word-count-wrapper' ).style.display = 'block';
+}
+
+function addUploadMockAdapter( editor ) {
+	editor.plugins.get( 'FileRepository' ).createUploadAdapter = loader => {
+		return new UploadAdapterMock( loader );
+	};
+}

+ 3 - 0
tests/manual/performance/richeditor.md

@@ -0,0 +1,3 @@
+# Performance: rich editor
+
+Use this editor to make sure editor features do not interfere with each other.

+ 11 - 0
tests/manual/performance/setdata.html

@@ -0,0 +1,11 @@
+<div id="test-controls">
+	Call <code>editor.setData()</code> with:
+	<button id="small-content" data-file-name="small" disabled>small</button>
+	<button id="medium-content" data-file-name="medium" disabled>medium</button>
+	<button id="large-content" data-file-name="large" disabled>large</button>
+	HTML payload.
+</div>
+
+<hr>
+
+<div id="editor"></div>

+ 53 - 0
tests/manual/performance/setdata.js

@@ -0,0 +1,53 @@
+/**
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
+ */
+
+/* globals console, window, document */
+
+import ClassicEditor from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
+import ArticlePluginSet from '@ckeditor/ckeditor5-core/tests/_utils/articlepluginset';
+import { loadPerformanceData } from '../../_utils/utils';
+
+ClassicEditor
+	.create( document.querySelector( '#editor' ), {
+		plugins: [ ArticlePluginSet ],
+		toolbar: [
+			'heading',
+			'|',
+			'bold',
+			'italic',
+			'link',
+			'bulletedList',
+			'numberedList',
+			'|',
+			'outdent',
+			'indent',
+			'|',
+			'blockQuote',
+			'insertTable',
+			'mediaEmbed',
+			'undo',
+			'redo'
+		]
+	} )
+	.then( editor => {
+		window.editor = editor;
+	} )
+	.catch( err => {
+		console.error( err.stack );
+	} );
+
+loadPerformanceData()
+	.then( fixtures => {
+		const buttons = document.querySelectorAll( '#test-controls button' );
+
+		for ( const button of buttons ) {
+			button.addEventListener( 'click', function() {
+				const content = fixtures[ this.getAttribute( 'data-file-name' ) ];
+
+				window.editor.setData( content );
+			} );
+			button.disabled = false;
+		}
+	} );

+ 5 - 0
tests/manual/performance/setdata.md

@@ -0,0 +1,5 @@
+# Performance: `editor.setData()`
+
+1. Begin performance recording in devtools.
+1. Use any button to call `editor.setData()` with chosen data size.
+1. Stop performance recording.

+ 1 - 1
tests/manual/wproofreader.js

@@ -1,5 +1,5 @@
 /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 553 - 495
yarn.lock


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio