8
0
Просмотр исходного кода

Merge branch 'master' into i/5201

panr 5 лет назад
Родитель
Сommit
2184c01c3b
100 измененных файлов с 1184 добавлено и 671 удалено
  1. 0 10
      .github/ISSUE_TEMPLATE/4-security-issue.md
  2. 10 0
      .github/ISSUE_TEMPLATE/config.yml
  3. 1 1
      .travis.yml
  4. 158 0
      CHANGELOG.md
  5. 152 152
      docs/builds/guides/integration/content-styles.md
  6. 13 0
      docs/framework/guides/contributing/code-style.md
  7. 66 66
      package.json
  8. 2 2
      packages/ckeditor-cloud-services-core/package.json
  9. 2 2
      packages/ckeditor5-adapter-ckfinder/lang/translations/ug.po
  10. 13 13
      packages/ckeditor5-adapter-ckfinder/package.json
  11. 13 13
      packages/ckeditor5-alignment/package.json
  12. 13 13
      packages/ckeditor5-autoformat/package.json
  13. 5 5
      packages/ckeditor5-autosave/package.json
  14. 2 2
      packages/ckeditor5-basic-styles/lang/translations/ug.po
  15. 9 9
      packages/ckeditor5-basic-styles/package.json
  16. 2 2
      packages/ckeditor5-block-quote/lang/translations/ug.po
  17. 14 14
      packages/ckeditor5-block-quote/package.json
  18. 0 0
      packages/ckeditor5-build-balloon-block/build/ckeditor.js
  19. 0 0
      packages/ckeditor5-build-balloon-block/build/ckeditor.js.map
  20. 0 0
      packages/ckeditor5-build-balloon-block/build/translations/de.js
  21. 1 1
      packages/ckeditor5-build-balloon-block/build/translations/ug.js
  22. 22 22
      packages/ckeditor5-build-balloon-block/package.json
  23. 0 0
      packages/ckeditor5-build-balloon/build/ckeditor.js
  24. 0 0
      packages/ckeditor5-build-balloon/build/ckeditor.js.map
  25. 0 0
      packages/ckeditor5-build-balloon/build/translations/de.js
  26. 1 1
      packages/ckeditor5-build-balloon/build/translations/ug.js
  27. 21 21
      packages/ckeditor5-build-balloon/package.json
  28. 0 0
      packages/ckeditor5-build-classic/build/ckeditor.js
  29. 0 0
      packages/ckeditor5-build-classic/build/ckeditor.js.map
  30. 0 0
      packages/ckeditor5-build-classic/build/translations/de.js
  31. 1 1
      packages/ckeditor5-build-classic/build/translations/ug.js
  32. 21 21
      packages/ckeditor5-build-classic/package.json
  33. 0 0
      packages/ckeditor5-build-decoupled-document/build/ckeditor.js
  34. 0 0
      packages/ckeditor5-build-decoupled-document/build/ckeditor.js.map
  35. 0 0
      packages/ckeditor5-build-decoupled-document/build/translations/de.js
  36. 0 0
      packages/ckeditor5-build-decoupled-document/build/translations/ug.js
  37. 24 24
      packages/ckeditor5-build-decoupled-document/package.json
  38. 0 0
      packages/ckeditor5-build-inline/build/ckeditor.js
  39. 0 0
      packages/ckeditor5-build-inline/build/ckeditor.js.map
  40. 0 0
      packages/ckeditor5-build-inline/build/translations/de.js
  41. 1 1
      packages/ckeditor5-build-inline/build/translations/ug.js
  42. 21 21
      packages/ckeditor5-build-inline/package.json
  43. 11 11
      packages/ckeditor5-ckfinder/package.json
  44. 9 9
      packages/ckeditor5-clipboard/package.json
  45. 4 4
      packages/ckeditor5-cloud-services/package.json
  46. 1 1
      packages/ckeditor5-code-block/lang/translations/de.po
  47. 14 14
      packages/ckeditor5-code-block/package.json
  48. 2 2
      packages/ckeditor5-core/lang/translations/ug.po
  49. 17 17
      packages/ckeditor5-core/package.json
  50. 79 0
      packages/ckeditor5-core/tests/_utils-tests/assertions/attribute.js
  51. 61 0
      packages/ckeditor5-core/tests/_utils/assertions/attribute.js
  52. 10 10
      packages/ckeditor5-easy-image/package.json
  53. 11 11
      packages/ckeditor5-editor-balloon/package.json
  54. 11 11
      packages/ckeditor5-editor-classic/package.json
  55. 11 11
      packages/ckeditor5-editor-decoupled/package.json
  56. 11 11
      packages/ckeditor5-editor-inline/package.json
  57. 17 17
      packages/ckeditor5-engine/package.json
  58. 3 0
      packages/ckeditor5-engine/src/view/downcastwriter.js
  59. 10 10
      packages/ckeditor5-enter/package.json
  60. 9 9
      packages/ckeditor5-essentials/package.json
  61. 8 8
      packages/ckeditor5-font/package.json
  62. 2 2
      packages/ckeditor5-heading/lang/translations/ug.po
  63. 16 16
      packages/ckeditor5-heading/package.json
  64. 13 13
      packages/ckeditor5-highlight/package.json
  65. 11 11
      packages/ckeditor5-horizontal-line/package.json
  66. 2 0
      packages/ckeditor5-image/docs/_snippets/features/build-image-source.js
  67. 1 1
      packages/ckeditor5-image/docs/_snippets/features/image-caption.js
  68. 15 0
      packages/ckeditor5-image/docs/_snippets/features/image-link.html
  69. 33 0
      packages/ckeditor5-image/docs/_snippets/features/image-link.js
  70. 1 0
      packages/ckeditor5-image/docs/_snippets/features/image-resize-px.js
  71. 1 0
      packages/ckeditor5-image/docs/_snippets/features/image-resize.js
  72. 1 1
      packages/ckeditor5-image/docs/_snippets/features/image-style-custom.js
  73. 1 1
      packages/ckeditor5-image/docs/_snippets/features/image-style.js
  74. 1 1
      packages/ckeditor5-image/docs/_snippets/features/image-toolbar.js
  75. 1 1
      packages/ckeditor5-image/docs/_snippets/features/image.js
  76. 37 12
      packages/ckeditor5-image/docs/features/image.md
  77. 2 2
      packages/ckeditor5-image/lang/translations/ug.po
  78. 22 22
      packages/ckeditor5-image/package.json
  79. 8 8
      packages/ckeditor5-indent/package.json
  80. 4 0
      packages/ckeditor5-link/docs/_snippets/features/autolink.html
  81. 23 0
      packages/ckeditor5-link/docs/_snippets/features/autolink.js
  82. 5 0
      packages/ckeditor5-link/docs/_snippets/features/build-link-source.js
  83. 6 2
      packages/ckeditor5-link/docs/api/link.md
  84. 30 5
      packages/ckeditor5-link/docs/features/link.md
  85. 1 0
      packages/ckeditor5-link/lang/contexts.json
  86. 4 0
      packages/ckeditor5-link/lang/translations/ar.po
  87. 4 0
      packages/ckeditor5-link/lang/translations/ast.po
  88. 4 0
      packages/ckeditor5-link/lang/translations/az.po
  89. 4 0
      packages/ckeditor5-link/lang/translations/cs.po
  90. 4 0
      packages/ckeditor5-link/lang/translations/da.po
  91. 4 0
      packages/ckeditor5-link/lang/translations/de.po
  92. 4 0
      packages/ckeditor5-link/lang/translations/el.po
  93. 4 0
      packages/ckeditor5-link/lang/translations/en-au.po
  94. 4 0
      packages/ckeditor5-link/lang/translations/en-gb.po
  95. 4 0
      packages/ckeditor5-link/lang/translations/en.po
  96. 4 0
      packages/ckeditor5-link/lang/translations/eo.po
  97. 4 0
      packages/ckeditor5-link/lang/translations/es.po
  98. 4 0
      packages/ckeditor5-link/lang/translations/et.po
  99. 4 0
      packages/ckeditor5-link/lang/translations/eu.po
  100. 4 0
      packages/ckeditor5-link/lang/translations/fa.po

+ 0 - 10
.github/ISSUE_TEMPLATE/4-security-issue.md

@@ -1,10 +0,0 @@
----
-name: "\U0001F6A8 Security issue"
-about: Report a security issue.
-title: ''
-labels: ''
-assignees: ''
-
----
-
-⚠️ Please **DO NOT report security issues here**, use the contact form at [https://ckeditor.com/contact/](https://ckeditor.com/contact/) instead. ⚠️

+ 10 - 0
.github/ISSUE_TEMPLATE/config.yml

@@ -0,0 +1,10 @@
+blank_issues_enabled: false
+contact_links:
+  - name: "\U0001F6A8 Security issue"
+    url: https://ckeditor.com/contact
+    about: |
+      Please **DO NOT report security issues here**,
+      use the contact form at https://ckeditor.com/contact/ instead.
+  - name: "\U0001F4F1 Licensed Customers support"
+    about: Support channel for Licensed Customers.
+    url: https://support.ckeditor.com/hc/en-us/requests/new

+ 1 - 1
.travis.yml

@@ -22,7 +22,7 @@ script:
 - node ./scripts/continuous-integration-script.js
 - yarn run lint
 - yarn run stylelint
-- yarn run docs:api --validate-only
+- yarn run docs --strict
 - 'if [ $TRAVIS_TEST_RESULT -eq 0 ]; then
     travis_wait 30 yarn run docs:build-and-publish-nightly;
   fi'

+ 158 - 0
CHANGELOG.md

@@ -1,6 +1,164 @@
 Changelog
 =========
 
+## [20.0.0](https://github.com/ckeditor/ckeditor5/compare/v19.1.1...v20.0.0) (2020-06-24)
+
+### Release highlights
+
+We are happy to announce the release of CKEditor 5 v20.0.0.
+
+This release brings some highly anticipated features:
+
+* Support for [linking images](https://github.com/ckeditor/ckeditor5/issues/702).
+* [Typing around widgets](https://github.com/ckeditor/ckeditor5/issues/407).
+* An option to [automatically set link protocol](https://github.com/ckeditor/ckeditor5/issues/4858).
+* [Improved selection handling when working with links](https://github.com/ckeditor/ckeditor5/issues/1016).
+
+New features were also accompanied by a set of bug fixes, to name a few:
+
+* [Autoformatting will no longer change formatting when typing in an inline code](https://github.com/ckeditor/ckeditor5/issues/1239).
+* Editor will no longer [crash if there's a HTML comment in the source data](https://github.com/ckeditor/ckeditor5/issues/5734).
+
+TODO: Add a link to the blog post.
+
+### Collaboration features
+
+The CKEditor 5 Collaboration features changelog can be found here: https://ckeditor.com/collaboration/changelog.
+
+### MAJOR BREAKING CHANGES [ℹ️](https://ckeditor.com/docs/ckeditor5/latest/framework/guides/support/versioning-policy.html#major-and-minor-breaking-changes)
+
+* **[ckeditor5](https://www.npmjs.com/package/ckeditor5)**: Node `>=12.0.0` is required now.
+
+### MINOR BREAKING CHANGES [ℹ️](https://ckeditor.com/docs/ckeditor5/latest/framework/guides/support/versioning-policy.html#major-and-minor-breaking-changes)
+
+* **[table](https://www.npmjs.com/package/@ckeditor/ckeditor5-table)**: The `TableNavigation` plugin was renamed to `TableKeyboard`.
+* **[table](https://www.npmjs.com/package/@ckeditor/ckeditor5-table)**: The values returned by the `TableWalker` iterator have changed. See [#6785](https://github.com/ckeditor/ckeditor5/issues/6785).
+* **[widget](https://www.npmjs.com/package/@ckeditor/ckeditor5-widget)**: Removed the `getWidgetTypeAroundPositions()` helper since the "Insert new paragraph" buttons are now visible regardless of the widget location in the document
+* The `isTableWidget()` and `toTableWidget()` utility functions were removed.
+* The functions `getSelectedTableWidget()` and `getTableWidgetAncestor()` from `table/utils` module were moved to the `table/utils/widget` module.
+* The functions `getSelectedTableCells()`, `getTableCellsContainingSelection()`, `getSelectionAffectedTableCells()`, `getRowIndexes()`, `getColumnIndexes()`, and `isSelectionRectangular()` from `table/utils` module were moved to `table/utils/selection` module.
+* The functions `getVerticallyOverlappingCells()`, `splitHorizontally()`, `getHorizontallyOverlappingCells()`, and `splitVertically()` from `table/utils` module were moved to `table/utils/structure` module.
+* The functions `findAncestor()`, `updateNumericAttribute()`, `createEmptyTableCell()`, and `isHeadingColumnCell()` from `table/commands/utils` module were moved to `table/utils/common` module.
+* The functions `getSingleValue()` and `addDefaultUnitToNumericValue()` from `table/commands/utils` module were moved to `table/utils/table-properties` module.
+* The functions `cropTableToDimensions()` and `trimTableCellIfNeeded()` from `table/tableselection/croptable` module were moved to `table/utils/structure` module.
+* The functions `repositionContextualBalloon()`, `getBalloonTablePositionData()`, and `getBalloonCellPositionData()` from `table/ui/utils` module were moved to `table/utils/ui/contextualballoon` module.
+* The functions `getBorderStyleLabels()`, `getLocalizedColorErrorText()`, `getLocalizedLengthErrorText()`, `colorFieldValidator()`, `lengthFieldValidator()`, `lineWidthFieldValidator()`, `getBorderStyleDefinitions()`, `fillToolbar()`, and `getLabeledColorInputCreator()` from `table/ui/utils` module were moved to `table/utils/ui/table-properties` module.
+* The `defaultColors` constant from `table/ui/utils` module was moved to `table/utils/ui/table-properties` module.
+
+### Features
+
+* **[link](https://www.npmjs.com/package/@ckeditor/ckeditor5-link)**: Introduced the linking images feature. Closes [#7330](https://github.com/ckeditor/ckeditor5/issues/7330). ([commit](https://github.com/ckeditor/ckeditor5/commit/cc0e69478e00012089857ba9ddf871aefa065677))
+* **[link](https://www.npmjs.com/package/@ckeditor/ckeditor5-link)**: Introduced the `LinkImageUI` plugin that brings a UI to wrap images in links. Closes [#7331](https://github.com/ckeditor/ckeditor5/issues/7331). ([commit](https://github.com/ckeditor/ckeditor5/commit/878257e43d9b0135aacec841ed5e085ca8b5c3df))
+* **[link](https://www.npmjs.com/package/@ckeditor/ckeditor5-link)**: A fake caret (selection) should be displayed in the content when the link input has focus and the browser does not render the native caret (selection). Closes [#4721](https://github.com/ckeditor/ckeditor5/issues/4721). ([commit](https://github.com/ckeditor/ckeditor5/commit/ffac139a3e16dd013b68dfc1da34aba7bbd5b685))
+* **[link](https://www.npmjs.com/package/@ckeditor/ckeditor5-link)**: Introduced the `config.link.defaultProtocol` option for adding it automatically to the links when it's not provided by the user in the link form. Closes [#4858](https://github.com/ckeditor/ckeditor5/issues/4858). ([commit](https://github.com/ckeditor/ckeditor5/commit/76c762e5a6549cb20de4331046bd324c992e95a0))
+* **[theme-lark](https://www.npmjs.com/package/@ckeditor/ckeditor5-theme-lark)**: Added styles for the fake link caret (selection) (see [#4721](https://github.com/ckeditor/ckeditor5/issues/4721)). ([commit](https://github.com/ckeditor/ckeditor5/commit/ffac139a3e16dd013b68dfc1da34aba7bbd5b685))
+* **[theme-lark](https://www.npmjs.com/package/@ckeditor/ckeditor5-theme-lark)**: Added styles for a "fake caret" brought by the `WidgetTypeAround` plugin (see [#6693](https://github.com/ckeditor/ckeditor5/issues/6693)). ([commit](https://github.com/ckeditor/ckeditor5/commit/eb8dd9f0e616cd5d15c3dc673508679d3061f547))
+* **[typing](https://www.npmjs.com/package/@ckeditor/ckeditor5-typing)**: Created a public `isNonTypingKeystroke()` helper (see [#6693](https://github.com/ckeditor/ckeditor5/issues/6693)). ([commit](https://github.com/ckeditor/ckeditor5/commit/eb8dd9f0e616cd5d15c3dc673508679d3061f547))
+* **[upload](https://www.npmjs.com/package/@ckeditor/ckeditor5-upload)**: Introduced the `config.simpleUpload.withCredentials` request configuration. Closes [#7282](https://github.com/ckeditor/ckeditor5/issues/7282). ([commit](https://github.com/ckeditor/ckeditor5/commit/5a34216fadebeaf3acc5b88002eec4b841a1b17d))
+* **[utils](https://www.npmjs.com/package/@ckeditor/ckeditor5-utils)**: Created `isArrowKeyCode()`, `getLocalizedArrowKeyCodeDirection()`, and `isForwardArrowKeyCode()` helpers (see [#6693](https://github.com/ckeditor/ckeditor5/issues/6693)). ([commit](https://github.com/ckeditor/ckeditor5/commit/eb8dd9f0e616cd5d15c3dc673508679d3061f547))
+* **[widget](https://www.npmjs.com/package/@ckeditor/ckeditor5-widget)**: Implemented keyboard support for inserting paragraphs around block widgets using a "fake horizontal caret" (`WidgetTypeAround`). Both "Insert new paragraph" buttons are now always displayed for all block widgets regardless of their location in the document. Closes [#6693](https://github.com/ckeditor/ckeditor5/issues/6693), [#6825](https://github.com/ckeditor/ckeditor5/issues/6825), [#6694](https://github.com/ckeditor/ckeditor5/issues/6694). ([commit](https://github.com/ckeditor/ckeditor5/commit/eb8dd9f0e616cd5d15c3dc673508679d3061f547))
+
+### Bug fixes
+
+* **[autoformat](https://www.npmjs.com/package/@ckeditor/ckeditor5-autoformat)**: Autoformatting should not occur inside an existing text with a model `code` attribute. Closes [#1239](https://github.com/ckeditor/ckeditor5/issues/1239). ([commit](https://github.com/ckeditor/ckeditor5/commit/ad3562a2d3b6d5a1e8de276e7f032371ba260d63))
+* **[engine](https://www.npmjs.com/package/@ckeditor/ckeditor5-engine)**: The editor should not crash when the initial data includes HTML comments. Closes [#5734](https://github.com/ckeditor/ckeditor5/issues/5734). ([commit](https://github.com/ckeditor/ckeditor5/commit/377d142d9089e92a83d27eb386a3ef722fce847f))
+* **[engine](https://www.npmjs.com/package/@ckeditor/ckeditor5-engine)**: The model selection post-fixer should not set a new selection if the ranges before and after post-fixing are the same (see [#6693](https://github.com/ckeditor/ckeditor5/issues/6693)). ([commit](https://github.com/ckeditor/ckeditor5/commit/eb8dd9f0e616cd5d15c3dc673508679d3061f547))
+* **[engine](https://www.npmjs.com/package/@ckeditor/ckeditor5-engine)**: Backspace will no longer change the type of the trailing block. Closes [#6680](https://github.com/ckeditor/ckeditor5/issues/6680). ([commit](https://github.com/ckeditor/ckeditor5/commit/a87b364cce3fc70412031243ea0123333a91b821))
+* **[font](https://www.npmjs.com/package/@ckeditor/ckeditor5-font)**: The Font Family feature should apply the complete family value from the configuration when `config.fontFamily.supportAllValues` is `true`. Closes [#7285](https://github.com/ckeditor/ckeditor5/issues/7285). ([commit](https://github.com/ckeditor/ckeditor5/commit/c7b8f037891b885ae9d5d8c483747550ea8d6bd9))
+* **[image](https://www.npmjs.com/package/@ckeditor/ckeditor5-image)**: The widget toolbar won't be shown if an empty collection of items was provided in the editor's configuration. Closes [#5857](https://github.com/ckeditor/ckeditor5/issues/5857). ([commit](https://github.com/ckeditor/ckeditor5/commit/64e53153737458bb0e64db16049b581e0ff8aae9))
+* **[image](https://www.npmjs.com/package/@ckeditor/ckeditor5-image)**: The `src` and `alt` attributes for the image element will be always added to the editor's data. Even if they are empty. Closes [#5033](https://github.com/ckeditor/ckeditor5/issues/5033). ([commit](https://github.com/ckeditor/ckeditor5/commit/e81cbbba4bd0ccddc4ce0e59260c8f733bf12ca4))
+* **[table](https://www.npmjs.com/package/@ckeditor/ckeditor5-table)**: Table multi-cell selection should not be possible with the keystrokes when the `TableSelection` plugin is disabled. Closes [#7483](https://github.com/ckeditor/ckeditor5/issues/7483). ([commit](https://github.com/ckeditor/ckeditor5/commit/2fee736a59ee6e1da2b85aff429398d96fd5c57b))
+* **[table](https://www.npmjs.com/package/@ckeditor/ckeditor5-table)**: Copied and pasted table fragment should maintain the proper structure when the fragment contains merged table cells. Closes [#7245](https://github.com/ckeditor/ckeditor5/issues/7245). ([commit](https://github.com/ckeditor/ckeditor5/commit/17d7bd7390aeae841f6d2116a3528ea288367b3f))
+* **[table](https://www.npmjs.com/package/@ckeditor/ckeditor5-table)**: Removing empty rows will no longer produce an invalid table model in certain scenarios. Closes [#6609](https://github.com/ckeditor/ckeditor5/issues/6609). ([commit](https://github.com/ckeditor/ckeditor5/commit/11d69fc808b4db5184ff90e0d0a2756761db4707))
+* **[ui](https://www.npmjs.com/package/@ckeditor/ckeditor5-ui)**: The `BalloonToolbar` should not show up when multiple objects (for instance, table cells) are selected at a time. Closes [#6443](https://github.com/ckeditor/ckeditor5/issues/6443). ([commit](https://github.com/ckeditor/ckeditor5/commit/6036d4a4983aba4f5e43704300dc38aeba7369f3))
+
+### Other changes
+
+* **[engine](https://www.npmjs.com/package/@ckeditor/ckeditor5-engine)**: Added the `ignoreMarkers` option to the `Model#hasContent()` method. ([commit](https://github.com/ckeditor/ckeditor5/commit/61a6110dc204717bce88367b94a0287cc9d57816))
+* **[engine](https://www.npmjs.com/package/@ckeditor/ckeditor5-engine)**: Added Writer#cloneElement(). Closes [#6819](https://github.com/ckeditor/ckeditor5/issues/6819). ([commit](https://github.com/ckeditor/ckeditor5/commit/4c7114014afcfd06a304183a3b077d84dec6db3e))
+* **[horizontal-line](https://www.npmjs.com/package/@ckeditor/ckeditor5-horizontal-line)**: Improved the look of horizontal lines in the editor content. Closes [#7418](https://github.com/ckeditor/ckeditor5/issues/7418). ([commit](https://github.com/ckeditor/ckeditor5/commit/e8bff81931d31fb341cd88f87977d6ef7db45a74))
+* **[link](https://www.npmjs.com/package/@ckeditor/ckeditor5-link)**: The selection after inserting a link will land after the inserted element. Thanks to that a user will be able to type directly after the link without extending the link element. Closes [#1016](https://github.com/ckeditor/ckeditor5/issues/1016). ([commit](https://github.com/ckeditor/ckeditor5/commit/0bf66e47ee02484d694d786023cc153312409287))
+* **[link](https://www.npmjs.com/package/@ckeditor/ckeditor5-link)**: After clicking at the beginning or end of the link element, the selection will land before/after the clicked element. Thanks to that a user will be able to typing before or after the link element as normal text without extending the link. See [#1016](https://github.com/ckeditor/ckeditor5/issues/1016). ([commit](https://github.com/ckeditor/ckeditor5/commit/0bf66e47ee02484d694d786023cc153312409287))
+* **[paragraph](https://www.npmjs.com/package/@ckeditor/ckeditor5-paragraph)**: The `InsertParagraphCommand` should split ancestors of the `Position` to find a parent that allows `'paragraph'` (see [#6693](https://github.com/ckeditor/ckeditor5/issues/6693)). ([commit](https://github.com/ckeditor/ckeditor5/commit/eb8dd9f0e616cd5d15c3dc673508679d3061f547))
+* **[select-all](https://www.npmjs.com/package/@ckeditor/ckeditor5-select-all)**: Improved the select-all feature so that it includes more and more content if the selection was anchored in a nested editable. Closes [#6621](https://github.com/ckeditor/ckeditor5/issues/6621). ([commit](https://github.com/ckeditor/ckeditor5/commit/6f59c78eb88335cabf0d39612b40c3b50fade41f))
+* **[table](https://www.npmjs.com/package/@ckeditor/ckeditor5-table)**: Removed `options.asWidget` from most of the table converters which are never run in data pipeline. ([commit](https://github.com/ckeditor/ckeditor5/commit/b127f41163559b4c12ccf100be309c0dbf7c2355))
+* **[table](https://www.npmjs.com/package/@ckeditor/ckeditor5-table)**: Marker on table cells should be downcasted to CSS classes on cells (instead of wrapping the content). Closes [#7360](https://github.com/ckeditor/ckeditor5/issues/7360). ([commit](https://github.com/ckeditor/ckeditor5/commit/48d80cb955eecae9e9f0afad51ac1c5cdc7c00c1))
+* **[table](https://www.npmjs.com/package/@ckeditor/ckeditor5-table)**: Pasting a table into a table is more tolerant for whitespaces around a pasted table. Closes [#7379](https://github.com/ckeditor/ckeditor5/issues/7379). ([commit](https://github.com/ckeditor/ckeditor5/commit/669d54f688bf1017cb6c09c557cee084ea01be90))
+* **[table](https://www.npmjs.com/package/@ckeditor/ckeditor5-table)**: Extracted `TableMouse` plugin from `TableSelection` plugin. Closes [#6757](https://github.com/ckeditor/ckeditor5/issues/6757). ([commit](https://github.com/ckeditor/ckeditor5/commit/4d2f5f9b9f298601b332f304da66333c52673cb8))
+* **[table](https://www.npmjs.com/package/@ckeditor/ckeditor5-table)**: Refactor values returned by the `TableWalker` iterator. Closes [#6785](https://github.com/ckeditor/ckeditor5/issues/6785). ([commit](https://github.com/ckeditor/ckeditor5/commit/65cfa13ec9a3f983b94a27b5a86e031687fad25d))
+* **[table](https://www.npmjs.com/package/@ckeditor/ckeditor5-table)**: Add `row`, `startColumn`, and `endColumn` options to `TableWalker` constructor. See [#6785](https://github.com/ckeditor/ckeditor5/issues/6785). ([commit](https://github.com/ckeditor/ckeditor5/commit/65cfa13ec9a3f983b94a27b5a86e031687fad25d))
+
+### Released packages
+
+Check out the [Versioning policy](https://ckeditor.com/docs/ckeditor5/latest/framework/guides/support/versioning-policy.html) guide for more information.
+
+<details>
+<summary>Released packages (summary)</summary>
+
+Minor releases (contain minor breaking changes):
+
+* [@ckeditor/ckeditor5-table](https://www.npmjs.com/package/@ckeditor/ckeditor5-table): v19.1.0 => v20.0.0
+* [@ckeditor/ckeditor5-widget](https://www.npmjs.com/package/@ckeditor/ckeditor5-widget): v19.1.0 => v20.0.0
+
+Releases containing new features:
+
+* [@ckeditor/ckeditor5-engine](https://www.npmjs.com/package/@ckeditor/ckeditor5-engine): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-image](https://www.npmjs.com/package/@ckeditor/ckeditor5-image): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-link](https://www.npmjs.com/package/@ckeditor/ckeditor5-link): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-paragraph](https://www.npmjs.com/package/@ckeditor/ckeditor5-paragraph): v19.1.0 => v20.0.0
+* [@ckeditor/ckeditor5-theme-lark](https://www.npmjs.com/package/@ckeditor/ckeditor5-theme-lark): v19.1.0 => v20.0.0
+* [@ckeditor/ckeditor5-typing](https://www.npmjs.com/package/@ckeditor/ckeditor5-typing): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-upload](https://www.npmjs.com/package/@ckeditor/ckeditor5-upload): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-utils](https://www.npmjs.com/package/@ckeditor/ckeditor5-utils): v19.0.2 => v20.0.0
+
+Other releases:
+
+* [@ckeditor/ckeditor-cloud-services-core](https://www.npmjs.com/package/@ckeditor/ckeditor-cloud-services-core): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-adapter-ckfinder](https://www.npmjs.com/package/@ckeditor/ckeditor5-adapter-ckfinder): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-alignment](https://www.npmjs.com/package/@ckeditor/ckeditor5-alignment): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-autoformat](https://www.npmjs.com/package/@ckeditor/ckeditor5-autoformat): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-autosave](https://www.npmjs.com/package/@ckeditor/ckeditor5-autosave): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-basic-styles](https://www.npmjs.com/package/@ckeditor/ckeditor5-basic-styles): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-block-quote](https://www.npmjs.com/package/@ckeditor/ckeditor5-block-quote): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-build-balloon](https://www.npmjs.com/package/@ckeditor/ckeditor5-build-balloon): v19.0.2 => v20.0.0
+* [@ckeditor/ckeditor5-build-balloon-block](https://www.npmjs.com/package/@ckeditor/ckeditor5-build-balloon-block): v19.0.2 => v20.0.0
+* [@ckeditor/ckeditor5-build-classic](https://www.npmjs.com/package/@ckeditor/ckeditor5-build-classic): v19.0.2 => v20.0.0
+* [@ckeditor/ckeditor5-build-decoupled-document](https://www.npmjs.com/package/@ckeditor/ckeditor5-build-decoupled-document): v19.0.2 => v20.0.0
+* [@ckeditor/ckeditor5-build-inline](https://www.npmjs.com/package/@ckeditor/ckeditor5-build-inline): v19.0.2 => v20.0.0
+* [@ckeditor/ckeditor5-ckfinder](https://www.npmjs.com/package/@ckeditor/ckeditor5-ckfinder): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-clipboard](https://www.npmjs.com/package/@ckeditor/ckeditor5-clipboard): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-cloud-services](https://www.npmjs.com/package/@ckeditor/ckeditor5-cloud-services): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-code-block](https://www.npmjs.com/package/@ckeditor/ckeditor5-code-block): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-core](https://www.npmjs.com/package/@ckeditor/ckeditor5-core): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-easy-image](https://www.npmjs.com/package/@ckeditor/ckeditor5-easy-image): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-editor-balloon](https://www.npmjs.com/package/@ckeditor/ckeditor5-editor-balloon): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-editor-classic](https://www.npmjs.com/package/@ckeditor/ckeditor5-editor-classic): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-editor-decoupled](https://www.npmjs.com/package/@ckeditor/ckeditor5-editor-decoupled): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-editor-inline](https://www.npmjs.com/package/@ckeditor/ckeditor5-editor-inline): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-enter](https://www.npmjs.com/package/@ckeditor/ckeditor5-enter): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-essentials](https://www.npmjs.com/package/@ckeditor/ckeditor5-essentials): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-font](https://www.npmjs.com/package/@ckeditor/ckeditor5-font): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-heading](https://www.npmjs.com/package/@ckeditor/ckeditor5-heading): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-highlight](https://www.npmjs.com/package/@ckeditor/ckeditor5-highlight): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-horizontal-line](https://www.npmjs.com/package/@ckeditor/ckeditor5-horizontal-line): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-indent](https://www.npmjs.com/package/@ckeditor/ckeditor5-indent): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-list](https://www.npmjs.com/package/@ckeditor/ckeditor5-list): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-markdown-gfm](https://www.npmjs.com/package/@ckeditor/ckeditor5-markdown-gfm): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-media-embed](https://www.npmjs.com/package/@ckeditor/ckeditor5-media-embed): v19.1.0 => v20.0.0
+* [@ckeditor/ckeditor5-mention](https://www.npmjs.com/package/@ckeditor/ckeditor5-mention): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-page-break](https://www.npmjs.com/package/@ckeditor/ckeditor5-page-break): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-paste-from-office](https://www.npmjs.com/package/@ckeditor/ckeditor5-paste-from-office): v19.0.2 => v20.0.0
+* [@ckeditor/ckeditor5-remove-format](https://www.npmjs.com/package/@ckeditor/ckeditor5-remove-format): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-restricted-editing](https://www.npmjs.com/package/@ckeditor/ckeditor5-restricted-editing): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-select-all](https://www.npmjs.com/package/@ckeditor/ckeditor5-select-all): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-special-characters](https://www.npmjs.com/package/@ckeditor/ckeditor5-special-characters): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-ui](https://www.npmjs.com/package/@ckeditor/ckeditor5-ui): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-undo](https://www.npmjs.com/package/@ckeditor/ckeditor5-undo): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-watchdog](https://www.npmjs.com/package/@ckeditor/ckeditor5-watchdog): v19.0.1 => v20.0.0
+* [@ckeditor/ckeditor5-word-count](https://www.npmjs.com/package/@ckeditor/ckeditor5-word-count): v19.0.1 => v20.0.0
+</details>
+
+
 ## [19.1.1](https://github.com/ckeditor/ckeditor5/compare/v19.1.0...v19.1.1) (2020-05-29)
 
 ### Bug fixes

+ 152 - 152
docs/builds/guides/integration/content-styles.md

@@ -49,7 +49,7 @@ Below there is a full list of content styles used by the editor features. You ca
 ```css
 /*
  * CKEditor 5 (v19.1.1) content styles.
- * Generated on Tue, 09 Jun 2020 10:37:49 GMT.
+ * Generated on Fri, 19 Jun 2020 01:26:44 GMT.
  * For more information, check out https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/content-styles.html
  */
 
@@ -64,30 +64,79 @@ Below there is a full list of content styles used by the editor features. You ca
 	--ck-todo-list-checkmark-size: 16px;
 }
 
-/* ckeditor5-image/theme/imageresize.css */
-.ck-content .image.image_resized {
-	max-width: 100%;
+/* ckeditor5-list/theme/todolist.css */
+.ck-content .todo-list {
+	list-style: none;
+}
+/* ckeditor5-list/theme/todolist.css */
+.ck-content .todo-list li {
+	margin-bottom: 5px;
+}
+/* ckeditor5-list/theme/todolist.css */
+.ck-content .todo-list li .todo-list {
+	margin-top: 5px;
+}
+/* ckeditor5-list/theme/todolist.css */
+.ck-content .todo-list .todo-list__label > input {
+	-webkit-appearance: none;
+	display: inline-block;
+	position: relative;
+	width: var(--ck-todo-list-checkmark-size);
+	height: var(--ck-todo-list-checkmark-size);
+	vertical-align: middle;
+	border: 0;
+	left: -25px;
+	margin-right: -15px;
+	right: 0;
+	margin-left: 0;
+}
+/* ckeditor5-list/theme/todolist.css */
+.ck-content .todo-list .todo-list__label > input::before {
 	display: block;
+	position: absolute;
 	box-sizing: border-box;
-}
-/* ckeditor5-image/theme/imageresize.css */
-.ck-content .image.image_resized img {
+	content: '';
 	width: 100%;
+	height: 100%;
+	border: 1px solid hsl(0, 0%, 20%);
+	border-radius: 2px;
+	transition: 250ms ease-in-out box-shadow, 250ms ease-in-out background, 250ms ease-in-out border;
 }
-/* ckeditor5-image/theme/imageresize.css */
-.ck-content .image.image_resized > figcaption {
+/* ckeditor5-list/theme/todolist.css */
+.ck-content .todo-list .todo-list__label > input::after {
 	display: block;
+	position: absolute;
+	box-sizing: content-box;
+	pointer-events: none;
+	content: '';
+	left: calc( var(--ck-todo-list-checkmark-size) / 3 );
+	top: calc( var(--ck-todo-list-checkmark-size) / 5.3 );
+	width: calc( var(--ck-todo-list-checkmark-size) / 5.3 );
+	height: calc( var(--ck-todo-list-checkmark-size) / 2.6 );
+	border-style: solid;
+	border-color: transparent;
+	border-width: 0 calc( var(--ck-todo-list-checkmark-size) / 8 ) calc( var(--ck-todo-list-checkmark-size) / 8 ) 0;
+	transform: rotate(45deg);
 }
-/* ckeditor5-image/theme/imagecaption.css */
-.ck-content .image > figcaption {
-	display: table-caption;
-	caption-side: bottom;
-	word-break: break-word;
-	color: hsl(0, 0%, 20%);
-	background-color: hsl(0, 0%, 97%);
-	padding: .6em;
-	font-size: .75em;
-	outline-offset: -1px;
+/* ckeditor5-list/theme/todolist.css */
+.ck-content .todo-list .todo-list__label > input[checked]::before {
+	background: hsl(126, 64%, 41%);
+	border-color: hsl(126, 64%, 41%);
+}
+/* ckeditor5-list/theme/todolist.css */
+.ck-content .todo-list .todo-list__label > input[checked]::after {
+	border-color: hsl(0, 0%, 100%);
+}
+/* ckeditor5-list/theme/todolist.css */
+.ck-content .todo-list .todo-list__label .todo-list__label__description {
+	vertical-align: middle;
+}
+/* ckeditor5-media-embed/theme/mediaembed.css */
+.ck-content .media {
+	clear: both;
+	margin: 1em 0;
+	display: block;
+	min-width: 15em;
 }
 /* ckeditor5-basic-styles/theme/code.css */
 .ck-content code {
@@ -95,33 +144,6 @@ Below there is a full list of content styles used by the editor features. You ca
 	padding: .15em;
 	border-radius: 2px;
 }
-/* ckeditor5-image/theme/imagestyle.css */
-.ck-content .image-style-side,
-.ck-content .image-style-align-left,
-.ck-content .image-style-align-center,
-.ck-content .image-style-align-right {
-	max-width: 50%;
-}
-/* ckeditor5-image/theme/imagestyle.css */
-.ck-content .image-style-side {
-	float: right;
-	margin-left: var(--ck-image-style-spacing);
-}
-/* ckeditor5-image/theme/imagestyle.css */
-.ck-content .image-style-align-left {
-	float: left;
-	margin-right: var(--ck-image-style-spacing);
-}
-/* ckeditor5-image/theme/imagestyle.css */
-.ck-content .image-style-align-center {
-	margin-left: auto;
-	margin-right: auto;
-}
-/* ckeditor5-image/theme/imagestyle.css */
-.ck-content .image-style-align-right {
-	float: right;
-	margin-left: var(--ck-image-style-spacing);
-}
 /* ckeditor5-block-quote/theme/blockquote.css */
 .ck-content blockquote {
 	overflow: hidden;
@@ -137,47 +159,6 @@ Below there is a full list of content styles used by the editor features. You ca
 	border-left: 0;
 	border-right: solid 5px hsl(0, 0%, 80%);
 }
-/* ckeditor5-code-block/theme/codeblock.css */
-.ck-content pre {
-	padding: 1em;
-	color: hsl(0, 0%, 20.8%);
-	background: hsla(0, 0%, 78%, 0.3);
-	border: 1px solid hsl(0, 0%, 77%);
-	border-radius: 2px;
-	text-align: left;
-	direction: ltr;
-	tab-size: 4;
-	white-space: pre-wrap;
-	font-style: normal;
-	min-width: 200px;
-}
-/* ckeditor5-code-block/theme/codeblock.css */
-.ck-content pre code {
-	background: unset;
-	padding: 0;
-	border-radius: 0;
-}
-/* ckeditor5-horizontal-line/theme/horizontalline.css */
-.ck-content hr {
-	border-width: 1px 0 0;
-	border-style: solid;
-	border-color: hsl(0, 0%, 37%);
-	margin: 0;
-}
-/* ckeditor5-image/theme/image.css */
-.ck-content .image {
-	display: table;
-	clear: both;
-	text-align: center;
-	margin: 1em auto;
-}
-/* ckeditor5-image/theme/image.css */
-.ck-content .image > img {
-	display: block;
-	margin: 0 auto;
-	max-width: 100%;
-	min-width: 50px;
-}
 /* ckeditor5-table/theme/table.css */
 .ck-content .table {
 	margin: 1em auto;
@@ -211,79 +192,44 @@ Below there is a full list of content styles used by the editor features. You ca
 .ck-content[dir="ltr"] .table th {
 	text-align: left;
 }
-/* ckeditor5-media-embed/theme/mediaembed.css */
-.ck-content .media {
-	clear: both;
-	margin: 1em 0;
-	display: block;
-	min-width: 15em;
-}
-/* ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list {
-	list-style: none;
-}
-/* ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list li {
-	margin-bottom: 5px;
-}
-/* ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list li .todo-list {
-	margin-top: 5px;
-}
-/* ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list .todo-list__label > input {
-	-webkit-appearance: none;
-	display: inline-block;
-	position: relative;
-	width: var(--ck-todo-list-checkmark-size);
-	height: var(--ck-todo-list-checkmark-size);
-	vertical-align: middle;
-	border: 0;
-	left: -25px;
-	margin-right: -15px;
-	right: 0;
-	margin-left: 0;
-}
-/* ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list .todo-list__label > input::before {
+/* ckeditor5-image/theme/imageresize.css */
+.ck-content .image.image_resized {
+	max-width: 100%;
 	display: block;
-	position: absolute;
 	box-sizing: border-box;
-	content: '';
+}
+/* ckeditor5-image/theme/imageresize.css */
+.ck-content .image.image_resized img {
 	width: 100%;
-	height: 100%;
-	border: 1px solid hsl(0, 0%, 20%);
-	border-radius: 2px;
-	transition: 250ms ease-in-out box-shadow, 250ms ease-in-out background, 250ms ease-in-out border;
 }
-/* ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list .todo-list__label > input::after {
+/* ckeditor5-image/theme/imageresize.css */
+.ck-content .image.image_resized > figcaption {
 	display: block;
-	position: absolute;
-	box-sizing: content-box;
-	pointer-events: none;
-	content: '';
-	left: calc( var(--ck-todo-list-checkmark-size) / 3 );
-	top: calc( var(--ck-todo-list-checkmark-size) / 5.3 );
-	width: calc( var(--ck-todo-list-checkmark-size) / 5.3 );
-	height: calc( var(--ck-todo-list-checkmark-size) / 2.6 );
-	border-style: solid;
-	border-color: transparent;
-	border-width: 0 calc( var(--ck-todo-list-checkmark-size) / 8 ) calc( var(--ck-todo-list-checkmark-size) / 8 ) 0;
-	transform: rotate(45deg);
 }
-/* ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list .todo-list__label > input[checked]::before {
-	background: hsl(126, 64%, 41%);
-	border-color: hsl(126, 64%, 41%);
+/* ckeditor5-image/theme/image.css */
+.ck-content .image {
+	display: table;
+	clear: both;
+	text-align: center;
+	margin: 1em auto;
 }
-/* ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list .todo-list__label > input[checked]::after {
-	border-color: hsl(0, 0%, 100%);
+/* ckeditor5-image/theme/image.css */
+.ck-content .image img {
+	display: block;
+	margin: 0 auto;
+	max-width: 100%;
+	min-width: 50px;
 }
-/* ckeditor5-list/theme/todolist.css */
-.ck-content .todo-list .todo-list__label .todo-list__label__description {
-	vertical-align: middle;
+/* ckeditor5-image/theme/imagecaption.css */
+.ck-content .image > figcaption {
+	display: table-caption;
+	caption-side: bottom;
+	word-break: break-word;
+	color: hsl(0, 0%, 20%);
+	background-color: hsl(0, 0%, 97%);
+	padding: .6em;
+	font-size: .75em;
+	outline-offset: -1px;
 }
 /* ckeditor5-highlight/theme/highlight.css */
 .ck-content .marker-yellow {
@@ -311,6 +257,33 @@ Below there is a full list of content styles used by the editor features. You ca
 	color: var(--ck-highlight-pen-green);
 	background-color: transparent;
 }
+/* ckeditor5-image/theme/imagestyle.css */
+.ck-content .image-style-side,
+.ck-content .image-style-align-left,
+.ck-content .image-style-align-center,
+.ck-content .image-style-align-right {
+	max-width: 50%;
+}
+/* ckeditor5-image/theme/imagestyle.css */
+.ck-content .image-style-side {
+	float: right;
+	margin-left: var(--ck-image-style-spacing);
+}
+/* ckeditor5-image/theme/imagestyle.css */
+.ck-content .image-style-align-left {
+	float: left;
+	margin-right: var(--ck-image-style-spacing);
+}
+/* ckeditor5-image/theme/imagestyle.css */
+.ck-content .image-style-align-center {
+	margin-left: auto;
+	margin-right: auto;
+}
+/* ckeditor5-image/theme/imagestyle.css */
+.ck-content .image-style-align-right {
+	float: right;
+	margin-left: var(--ck-image-style-spacing);
+}
 /* ckeditor5-page-break/theme/pagebreak.css */
 .ck-content .page-break {
 	position: relative;
@@ -363,6 +336,33 @@ Below there is a full list of content styles used by the editor features. You ca
 .ck-content .text-huge {
 	font-size: 1.8em;
 }
+/* ckeditor5-code-block/theme/codeblock.css */
+.ck-content pre {
+	padding: 1em;
+	color: hsl(0, 0%, 20.8%);
+	background: hsla(0, 0%, 78%, 0.3);
+	border: 1px solid hsl(0, 0%, 77%);
+	border-radius: 2px;
+	text-align: left;
+	direction: ltr;
+	tab-size: 4;
+	white-space: pre-wrap;
+	font-style: normal;
+	min-width: 200px;
+}
+/* ckeditor5-code-block/theme/codeblock.css */
+.ck-content pre code {
+	background: unset;
+	padding: 0;
+	border-radius: 0;
+}
+/* ckeditor5-horizontal-line/theme/horizontalline.css */
+.ck-content hr {
+	margin: 15px 0;
+	height: 4px;
+	background: hsl(0, 0%, 87%);
+	border: 0;
+}
 @media print {
 	/* ckeditor5-page-break/theme/pagebreak.css */
 	.ck-content .page-break {

+ 13 - 0
docs/framework/guides/contributing/code-style.md

@@ -510,6 +510,19 @@ There are some special rules and tips for tests.
 
 	Think about this &mdash; when you fix a bug by adding a parameter to an existing function call you do not affect code coverage (that line was called anyway). However, you had a bug, meaning that your test suite did not cover it. Therefore, a test must be created for that code change.
 * It should be `expect( x ).to.equal( y )`. **NOT**: ~~`expect( x ).to.be.equal( y )`~~.
+* When using Sinon spies, pay attention to the readability of assertions and failure messages.
+   * Use named spies, for example:
+
+		```js
+		const someCallbackSpy = sinon.spy().named( 'someCallback' );
+		const myMethodSpy = sinon.spy( obj, 'myMethod' );
+		```
+   * Use [sinon-chai assertions](https://www.chaijs.com/plugins/sinon-chai/)
+
+		```js
+		expect( myMethodSpy ).to.be.calledOnce 
+		// expected myMethod to be called once but was called twice
+		```
 
 ## Naming
 

+ 66 - 66
package.json

@@ -1,6 +1,6 @@
 {
   "name": "ckeditor5",
-  "version": "19.1.1",
+  "version": "20.0.0",
   "description": "The development environment of CKEditor 5 – the best browser-based rich text editor.",
   "private": true,
   "keywords": [
@@ -21,77 +21,77 @@
     "framework"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor-cloud-services-core": "^19.0.1",
-    "@ckeditor/ckeditor5-adapter-ckfinder": "^19.0.1",
-    "@ckeditor/ckeditor5-alignment": "^19.0.1",
-    "@ckeditor/ckeditor5-autoformat": "^19.0.1",
-    "@ckeditor/ckeditor5-autosave": "^19.0.1",
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-block-quote": "^19.0.1",
-    "@ckeditor/ckeditor5-build-balloon": "^19.0.2",
-    "@ckeditor/ckeditor5-build-balloon-block": "^19.0.2",
-    "@ckeditor/ckeditor5-build-classic": "^19.0.2",
-    "@ckeditor/ckeditor5-build-decoupled-document": "^19.0.2",
-    "@ckeditor/ckeditor5-build-inline": "^19.0.2",
-    "@ckeditor/ckeditor5-ckfinder": "^19.0.1",
-    "@ckeditor/ckeditor5-clipboard": "^19.0.1",
-    "@ckeditor/ckeditor5-cloud-services": "^19.0.1",
-    "@ckeditor/ckeditor5-code-block": "^19.0.1",
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-easy-image": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-balloon": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-decoupled": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-inline": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-enter": "^19.0.1",
-    "@ckeditor/ckeditor5-essentials": "^19.0.1",
-    "@ckeditor/ckeditor5-font": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-highlight": "^19.0.1",
-    "@ckeditor/ckeditor5-horizontal-line": "^19.0.1",
-    "@ckeditor/ckeditor5-image": "^19.0.1",
-    "@ckeditor/ckeditor5-indent": "^19.0.1",
-    "@ckeditor/ckeditor5-link": "^19.0.1",
-    "@ckeditor/ckeditor5-list": "^19.0.1",
-    "@ckeditor/ckeditor5-markdown-gfm": "^19.0.1",
-    "@ckeditor/ckeditor5-media-embed": "^19.1.0",
-    "@ckeditor/ckeditor5-mention": "^19.0.1",
-    "@ckeditor/ckeditor5-page-break": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-paste-from-office": "^19.0.2",
-    "@ckeditor/ckeditor5-remove-format": "^19.0.1",
-    "@ckeditor/ckeditor5-restricted-editing": "^19.0.1",
-    "@ckeditor/ckeditor5-select-all": "^19.0.1",
-    "@ckeditor/ckeditor5-special-characters": "^19.0.1",
-    "@ckeditor/ckeditor5-table": "^19.1.0",
-    "@ckeditor/ckeditor5-theme-lark": "^19.1.0",
-    "@ckeditor/ckeditor5-typing": "^19.0.1",
-    "@ckeditor/ckeditor5-ui": "^19.0.1",
-    "@ckeditor/ckeditor5-undo": "^19.0.1",
-    "@ckeditor/ckeditor5-upload": "^19.0.1",
-    "@ckeditor/ckeditor5-utils": "^19.0.2",
-    "@ckeditor/ckeditor5-watchdog": "^19.0.1",
-    "@ckeditor/ckeditor5-widget": "^19.1.0",
-    "@ckeditor/ckeditor5-word-count": "^19.0.1"
+    "@ckeditor/ckeditor-cloud-services-core": "^20.0.0",
+    "@ckeditor/ckeditor5-adapter-ckfinder": "^20.0.0",
+    "@ckeditor/ckeditor5-alignment": "^20.0.0",
+    "@ckeditor/ckeditor5-autoformat": "^20.0.0",
+    "@ckeditor/ckeditor5-autosave": "^20.0.0",
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-block-quote": "^20.0.0",
+    "@ckeditor/ckeditor5-build-balloon": "^20.0.0",
+    "@ckeditor/ckeditor5-build-balloon-block": "^20.0.0",
+    "@ckeditor/ckeditor5-build-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-build-decoupled-document": "^20.0.0",
+    "@ckeditor/ckeditor5-build-inline": "^20.0.0",
+    "@ckeditor/ckeditor5-ckfinder": "^20.0.0",
+    "@ckeditor/ckeditor5-clipboard": "^20.0.0",
+    "@ckeditor/ckeditor5-cloud-services": "^20.0.0",
+    "@ckeditor/ckeditor5-code-block": "^20.0.0",
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-easy-image": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-balloon": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-decoupled": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-inline": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-enter": "^20.0.0",
+    "@ckeditor/ckeditor5-essentials": "^20.0.0",
+    "@ckeditor/ckeditor5-font": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-highlight": "^20.0.0",
+    "@ckeditor/ckeditor5-horizontal-line": "^20.0.0",
+    "@ckeditor/ckeditor5-image": "^20.0.0",
+    "@ckeditor/ckeditor5-indent": "^20.0.0",
+    "@ckeditor/ckeditor5-link": "^20.0.0",
+    "@ckeditor/ckeditor5-list": "^20.0.0",
+    "@ckeditor/ckeditor5-markdown-gfm": "^20.0.0",
+    "@ckeditor/ckeditor5-media-embed": "^20.0.0",
+    "@ckeditor/ckeditor5-mention": "^20.0.0",
+    "@ckeditor/ckeditor5-page-break": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-paste-from-office": "^20.0.0",
+    "@ckeditor/ckeditor5-remove-format": "^20.0.0",
+    "@ckeditor/ckeditor5-restricted-editing": "^20.0.0",
+    "@ckeditor/ckeditor5-select-all": "^20.0.0",
+    "@ckeditor/ckeditor5-special-characters": "^20.0.0",
+    "@ckeditor/ckeditor5-table": "^20.0.0",
+    "@ckeditor/ckeditor5-theme-lark": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0",
+    "@ckeditor/ckeditor5-ui": "^20.0.0",
+    "@ckeditor/ckeditor5-undo": "^20.0.0",
+    "@ckeditor/ckeditor5-upload": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0",
+    "@ckeditor/ckeditor5-watchdog": "^20.0.0",
+    "@ckeditor/ckeditor5-widget": "^20.0.0",
+    "@ckeditor/ckeditor5-word-count": "^20.0.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-comments": "^19.0.2",
-    "@ckeditor/ckeditor5-dev-docs": "^20.0.0",
-    "@ckeditor/ckeditor5-dev-env": "^20.1.0",
-    "@ckeditor/ckeditor5-dev-tests": "^20.0.1",
-    "@ckeditor/ckeditor5-dev-utils": "^20.0.0",
-    "@ckeditor/ckeditor5-dev-webpack-plugin": "^20.0.0",
+    "@ckeditor/ckeditor5-comments": "^20.0.0",
+    "@ckeditor/ckeditor5-dev-docs": "^21.0.0",
+    "@ckeditor/ckeditor5-dev-env": "^21.0.0",
+    "@ckeditor/ckeditor5-dev-tests": "^21.0.0",
+    "@ckeditor/ckeditor5-dev-utils": "^21.0.0",
+    "@ckeditor/ckeditor5-dev-webpack-plugin": "^21.0.0",
     "@ckeditor/ckeditor5-inspector": "^2.1.0",
     "@ckeditor/ckeditor5-react": "^2.1.0",
-    "@ckeditor/ckeditor5-real-time-collaboration": "^19.0.2",
-    "@ckeditor/ckeditor5-track-changes": "^19.1.0",
-    "@wiris/mathtype-ckeditor5": "^7.20.0",
+    "@ckeditor/ckeditor5-real-time-collaboration": "^20.0.0",
+    "@ckeditor/ckeditor5-track-changes": "^20.0.0",
+    "@wiris/mathtype-ckeditor5": "7.20.0",
     "babel-standalone": "^6.26.0",
     "coveralls": "^3.1.0",
     "css-loader": "^3.5.3",
     "eslint": "^7.1.0",
-    "eslint-config-ckeditor5": "^2.1.0",
+    "eslint-config-ckeditor5": "^3.0.0",
     "glob": "^7.1.6",
     "http-server": "^0.12.3",
     "husky": "^4.2.5",
@@ -106,10 +106,10 @@
     "react-dom": "^16.13.1",
     "style-loader": "^1.2.1",
     "stylelint": "^13.5.0",
-    "stylelint-config-ckeditor5": "^1.0.3",
+    "stylelint-config-ckeditor5": "^2.0.0",
     "svgo": "^1.3.2",
     "terser-webpack-plugin": "^3.0.2",
-    "umberto": "^1.3.2",
+    "umberto": "^1.4.1",
     "webpack": "^4.43.0"
   },
   "engines": {

+ 2 - 2
packages/ckeditor-cloud-services-core/package.json

@@ -1,13 +1,13 @@
 {
   "name": "@ckeditor/ckeditor-cloud-services-core",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "CKEditor Cloud Services Core API.",
   "keywords": [
     "ckeditor5",
     "ckeditor5-lib"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-utils": "^19.0.1"
+    "@ckeditor/ckeditor5-utils": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 2 - 2
packages/ckeditor5-adapter-ckfinder/lang/translations/ug.po

@@ -12,9 +12,9 @@
 #
 msgid ""
 msgstr ""
-"Language-Team: Uighur (https://www.transifex.com/ckeditor/teams/11143/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/ckeditor/teams/11143/ug/)\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 msgctxt "A generic error message displayed on upload failure. The file name is concatenated to this text."
 msgid "Cannot upload file:"

+ 13 - 13
packages/ckeditor5-adapter-ckfinder/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-adapter-ckfinder",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "CKFinder adapter for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -10,20 +10,20 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-upload": "^19.0.1"
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-upload": "^20.0.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-clipboard": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-enter": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-image": "^19.0.1",
-    "@ckeditor/ckeditor5-list": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-typing": "^19.0.1",
-    "@ckeditor/ckeditor5-undo": "^19.0.1"
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-clipboard": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-enter": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-image": "^20.0.0",
+    "@ckeditor/ckeditor5-list": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0",
+    "@ckeditor/ckeditor5-undo": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 13 - 13
packages/ckeditor5-alignment/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-alignment",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Text alignment feature for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -10,20 +10,20 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-ui": "^19.0.1"
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-ui": "^20.0.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-block-quote": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-enter": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-image": "^19.0.1",
-    "@ckeditor/ckeditor5-list": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-typing": "^19.0.1",
-    "@ckeditor/ckeditor5-utils": "^19.0.1"
+    "@ckeditor/ckeditor5-block-quote": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-enter": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-image": "^20.0.0",
+    "@ckeditor/ckeditor5-list": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 13 - 13
packages/ckeditor5-autoformat/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-autoformat",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Autoformatting feature for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -10,20 +10,20 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-typing": "^19.0.1"
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-block-quote": "^19.0.1",
-    "@ckeditor/ckeditor5-code-block": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-enter": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-list": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-undo": "^19.0.1"
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-block-quote": "^20.0.0",
+    "@ckeditor/ckeditor5-code-block": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-enter": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-list": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-undo": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 5 - 5
packages/ckeditor5-autosave/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-autosave",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Autosave feature for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -10,13 +10,13 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-utils": "^19.0.1",
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0",
     "lodash-es": "^4.17.15"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0"
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 2 - 2
packages/ckeditor5-basic-styles/lang/translations/ug.po

@@ -12,9 +12,9 @@
 #
 msgid ""
 msgstr ""
-"Language-Team: Uighur (https://www.transifex.com/ckeditor/teams/11143/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/ckeditor/teams/11143/ug/)\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 msgctxt "Toolbar button tooltip for the Bold feature."
 msgid "Bold"

+ 9 - 9
packages/ckeditor5-basic-styles/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-basic-styles",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Basic styles feature for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -10,16 +10,16 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-ui": "^19.0.1"
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-ui": "^20.0.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-essentials": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-remove-format": "^19.0.1",
-    "@ckeditor/ckeditor5-utils": "^19.0.1"
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-essentials": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-remove-format": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 2 - 2
packages/ckeditor5-block-quote/lang/translations/ug.po

@@ -12,9 +12,9 @@
 #
 msgid ""
 msgstr ""
-"Language-Team: Uighur (https://www.transifex.com/ckeditor/teams/11143/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/ckeditor/teams/11143/ug/)\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 msgctxt "Toolbar button tooltip for the Block quote feature."
 msgid "Block quote"

+ 14 - 14
packages/ckeditor5-block-quote/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-block-quote",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Block quote feature for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -10,21 +10,21 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-ui": "^19.0.1",
-    "@ckeditor/ckeditor5-utils": "^19.0.1"
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-ui": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-enter": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-image": "^19.0.1",
-    "@ckeditor/ckeditor5-list": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-table": "^19.1.0",
-    "@ckeditor/ckeditor5-typing": "^19.0.1"
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-enter": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-image": "^20.0.0",
+    "@ckeditor/ckeditor5-list": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-table": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
packages/ckeditor5-build-balloon-block/build/ckeditor.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
packages/ckeditor5-build-balloon-block/build/ckeditor.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
packages/ckeditor5-build-balloon-block/build/translations/de.js


+ 1 - 1
packages/ckeditor5-build-balloon-block/build/translations/ug.js

@@ -1 +1 @@
-(function(d){	const l = d['ug'] = d['ug'] || {};	l.dictionary=Object.assign(		l.dictionary||{},		{"%0 of %1":"","Block quote":"قىسمەن قوللىنىش",Bold:"توم","Bulleted List":"بەلگە جەدىۋېلى",Cancel:"قالدۇرۇش","Cannot upload file:":"چىقىرىشقا بولمايدىغان ھۆججەت :","Centered image":"ئوتتۇردىكى رەسىم","Change image text alternative":"رەسىملىك تېكىست تاللىغۇچنى ئۆزگەرتىش","Choose heading":"تېما تاللاش",Downloadable:"","Dropdown toolbar":"","Edit block":"","Edit link":"","Editor toolbar":"","Enter image caption":"رەسىمنىڭ تېمىسىنى كىرگۈزۈڭ","Full size image":"ئەسلى چوڭلۇقتىكى رەسىم",Heading:"تېما","Heading 1":"تېما 1","Heading 2":"تېما 2","Heading 3":"تېما 3","Heading 4":"","Heading 5":"","Heading 6":"","Image toolbar":"","image widget":"رەسىمچىك","Insert image":"رەسىم قىستۇرۇش",Italic:"يانتۇ","Left aligned image":"سولغا توغۇرلانغان رەسىم",Link:"ئۇلاش","Link URL":"ئۇلاش ئادىرسى",Next:"","Numbered List":"نومۇر جەدىۋېلى","Open in a new tab":"","Open link in new tab":"",Paragraph:"بۆلەك",Previous:"",Redo:"قايتا قىلىش","Rich Text Editor, %0":"تېكىست تەھرىرلىگۈچ، 0%","Right aligned image":"ئوڭغا توغۇرلانغان رەسىم",Save:"ساقلاش","Show more items":"","Side image":"يان رەسىم","Text alternative":"تېكىست ئاملاشتۇرۇش","This link has no URL":"",Undo:"قالدۇرۇش",Unlink:"ئۈزۈش","Upload failed":"چىقىرىش مەغلۇپ بولدى"}	);l.getPluralForm=function(n){return 0;;};})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
+(function(d){	const l = d['ug'] = d['ug'] || {};	l.dictionary=Object.assign(		l.dictionary||{},		{"%0 of %1":"","Block quote":"قىسمەن قوللىنىش",Bold:"توم","Bulleted List":"بەلگە جەدىۋېلى",Cancel:"قالدۇرۇش","Cannot upload file:":"چىقىرىشقا بولمايدىغان ھۆججەت :","Centered image":"ئوتتۇردىكى رەسىم","Change image text alternative":"رەسىملىك تېكىست تاللىغۇچنى ئۆزگەرتىش","Choose heading":"تېما تاللاش",Downloadable:"","Dropdown toolbar":"","Edit block":"","Edit link":"","Editor toolbar":"","Enter image caption":"رەسىمنىڭ تېمىسىنى كىرگۈزۈڭ","Full size image":"ئەسلى چوڭلۇقتىكى رەسىم",Heading:"تېما","Heading 1":"تېما 1","Heading 2":"تېما 2","Heading 3":"تېما 3","Heading 4":"","Heading 5":"","Heading 6":"","Image toolbar":"","image widget":"رەسىمچىك","Insert image":"رەسىم قىستۇرۇش",Italic:"يانتۇ","Left aligned image":"سولغا توغۇرلانغان رەسىم",Link:"ئۇلاش","Link URL":"ئۇلاش ئادىرسى",Next:"","Numbered List":"نومۇر جەدىۋېلى","Open in a new tab":"","Open link in new tab":"",Paragraph:"بۆلەك",Previous:"",Redo:"قايتا قىلىش","Rich Text Editor, %0":"تېكىست تەھرىرلىگۈچ، 0%","Right aligned image":"ئوڭغا توغۇرلانغان رەسىم",Save:"ساقلاش","Show more items":"","Side image":"يان رەسىم","Text alternative":"تېكىست ئاملاشتۇرۇش","This link has no URL":"",Undo:"قالدۇرۇش",Unlink:"ئۈزۈش","Upload failed":"چىقىرىش مەغلۇپ بولدى"}	);l.getPluralForm=function(n){return (n != 1);;};})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

+ 22 - 22
packages/ckeditor5-build-balloon-block/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-build-balloon-block",
-  "version": "19.0.2",
+  "version": "20.0.0",
   "description": "The balloon editor build of CKEditor 5 with a block toolbar – the best browser-based rich text editor.",
   "keywords": [
     "wysiwyg",
@@ -25,29 +25,29 @@
     "build"
   ],
   "devDependencies": {
-    "@ckeditor/ckeditor5-adapter-ckfinder": "^19.0.1",
-    "@ckeditor/ckeditor5-autoformat": "^19.0.1",
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-block-quote": "^19.0.1",
-    "@ckeditor/ckeditor5-ckfinder": "^19.0.1",
-    "@ckeditor/ckeditor5-core": "^19.0.1",
+    "@ckeditor/ckeditor5-adapter-ckfinder": "^20.0.0",
+    "@ckeditor/ckeditor5-autoformat": "^20.0.0",
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-block-quote": "^20.0.0",
+    "@ckeditor/ckeditor5-ckfinder": "^20.0.0",
+    "@ckeditor/ckeditor5-core": "^20.0.0",
     "@ckeditor/ckeditor5-dev-utils": "^20.0.0",
     "@ckeditor/ckeditor5-dev-webpack-plugin": "^20.0.0",
-    "@ckeditor/ckeditor5-easy-image": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-balloon": "^19.0.1",
-    "@ckeditor/ckeditor5-essentials": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-image": "^19.0.1",
-    "@ckeditor/ckeditor5-indent": "^19.0.1",
-    "@ckeditor/ckeditor5-link": "^19.0.1",
-    "@ckeditor/ckeditor5-list": "^19.0.1",
-    "@ckeditor/ckeditor5-media-embed": "^19.1.0",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-paste-from-office": "^19.0.2",
-    "@ckeditor/ckeditor5-table": "^19.1.0",
-    "@ckeditor/ckeditor5-typing": "^19.0.1",
-    "@ckeditor/ckeditor5-theme-lark": "^19.1.0",
-    "@ckeditor/ckeditor5-ui": "^19.0.1",
+    "@ckeditor/ckeditor5-easy-image": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-balloon": "^20.0.0",
+    "@ckeditor/ckeditor5-essentials": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-image": "^20.0.0",
+    "@ckeditor/ckeditor5-indent": "^20.0.0",
+    "@ckeditor/ckeditor5-link": "^20.0.0",
+    "@ckeditor/ckeditor5-list": "^20.0.0",
+    "@ckeditor/ckeditor5-media-embed": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-paste-from-office": "^20.0.0",
+    "@ckeditor/ckeditor5-table": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0",
+    "@ckeditor/ckeditor5-theme-lark": "^20.0.0",
+    "@ckeditor/ckeditor5-ui": "^20.0.0",
     "postcss-loader": "^3.0.0",
     "raw-loader": "^4.0.1",
     "style-loader": "^1.2.1",

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
packages/ckeditor5-build-balloon/build/ckeditor.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
packages/ckeditor5-build-balloon/build/ckeditor.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
packages/ckeditor5-build-balloon/build/translations/de.js


+ 1 - 1
packages/ckeditor5-build-balloon/build/translations/ug.js

@@ -1 +1 @@
-(function(d){	const l = d['ug'] = d['ug'] || {};	l.dictionary=Object.assign(		l.dictionary||{},		{"%0 of %1":"","Block quote":"قىسمەن قوللىنىش",Bold:"توم","Bulleted List":"بەلگە جەدىۋېلى",Cancel:"قالدۇرۇش","Cannot upload file:":"چىقىرىشقا بولمايدىغان ھۆججەت :","Centered image":"ئوتتۇردىكى رەسىم","Change image text alternative":"رەسىملىك تېكىست تاللىغۇچنى ئۆزگەرتىش","Choose heading":"تېما تاللاش",Downloadable:"","Dropdown toolbar":"","Edit link":"","Editor toolbar":"","Enter image caption":"رەسىمنىڭ تېمىسىنى كىرگۈزۈڭ","Full size image":"ئەسلى چوڭلۇقتىكى رەسىم",Heading:"تېما","Heading 1":"تېما 1","Heading 2":"تېما 2","Heading 3":"تېما 3","Heading 4":"","Heading 5":"","Heading 6":"","Image toolbar":"","image widget":"رەسىمچىك","Insert image":"رەسىم قىستۇرۇش",Italic:"يانتۇ","Left aligned image":"سولغا توغۇرلانغان رەسىم",Link:"ئۇلاش","Link URL":"ئۇلاش ئادىرسى",Next:"","Numbered List":"نومۇر جەدىۋېلى","Open in a new tab":"","Open link in new tab":"",Paragraph:"بۆلەك",Previous:"",Redo:"قايتا قىلىش","Rich Text Editor, %0":"تېكىست تەھرىرلىگۈچ، 0%","Right aligned image":"ئوڭغا توغۇرلانغان رەسىم",Save:"ساقلاش","Show more items":"","Side image":"يان رەسىم","Text alternative":"تېكىست ئاملاشتۇرۇش","This link has no URL":"",Undo:"قالدۇرۇش",Unlink:"ئۈزۈش","Upload failed":"چىقىرىش مەغلۇپ بولدى"}	);l.getPluralForm=function(n){return 0;;};})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
+(function(d){	const l = d['ug'] = d['ug'] || {};	l.dictionary=Object.assign(		l.dictionary||{},		{"%0 of %1":"","Block quote":"قىسمەن قوللىنىش",Bold:"توم","Bulleted List":"بەلگە جەدىۋېلى",Cancel:"قالدۇرۇش","Cannot upload file:":"چىقىرىشقا بولمايدىغان ھۆججەت :","Centered image":"ئوتتۇردىكى رەسىم","Change image text alternative":"رەسىملىك تېكىست تاللىغۇچنى ئۆزگەرتىش","Choose heading":"تېما تاللاش",Downloadable:"","Dropdown toolbar":"","Edit link":"","Editor toolbar":"","Enter image caption":"رەسىمنىڭ تېمىسىنى كىرگۈزۈڭ","Full size image":"ئەسلى چوڭلۇقتىكى رەسىم",Heading:"تېما","Heading 1":"تېما 1","Heading 2":"تېما 2","Heading 3":"تېما 3","Heading 4":"","Heading 5":"","Heading 6":"","Image toolbar":"","image widget":"رەسىمچىك","Insert image":"رەسىم قىستۇرۇش",Italic:"يانتۇ","Left aligned image":"سولغا توغۇرلانغان رەسىم",Link:"ئۇلاش","Link URL":"ئۇلاش ئادىرسى",Next:"","Numbered List":"نومۇر جەدىۋېلى","Open in a new tab":"","Open link in new tab":"",Paragraph:"بۆلەك",Previous:"",Redo:"قايتا قىلىش","Rich Text Editor, %0":"تېكىست تەھرىرلىگۈچ، 0%","Right aligned image":"ئوڭغا توغۇرلانغان رەسىم",Save:"ساقلاش","Show more items":"","Side image":"يان رەسىم","Text alternative":"تېكىست ئاملاشتۇرۇش","This link has no URL":"",Undo:"قالدۇرۇش",Unlink:"ئۈزۈش","Upload failed":"چىقىرىش مەغلۇپ بولدى"}	);l.getPluralForm=function(n){return (n != 1);;};})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

+ 21 - 21
packages/ckeditor5-build-balloon/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-build-balloon",
-  "version": "19.0.2",
+  "version": "20.0.0",
   "description": "The balloon editor build of CKEditor 5 – the best browser-based rich text editor.",
   "keywords": [
     "wysiwyg",
@@ -25,28 +25,28 @@
     "build"
   ],
   "devDependencies": {
-    "@ckeditor/ckeditor5-adapter-ckfinder": "^19.0.1",
-    "@ckeditor/ckeditor5-autoformat": "^19.0.1",
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-block-quote": "^19.0.1",
-    "@ckeditor/ckeditor5-ckfinder": "^19.0.1",
-    "@ckeditor/ckeditor5-core": "^19.0.1",
+    "@ckeditor/ckeditor5-adapter-ckfinder": "^20.0.0",
+    "@ckeditor/ckeditor5-autoformat": "^20.0.0",
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-block-quote": "^20.0.0",
+    "@ckeditor/ckeditor5-ckfinder": "^20.0.0",
+    "@ckeditor/ckeditor5-core": "^20.0.0",
     "@ckeditor/ckeditor5-dev-utils": "^20.0.0",
     "@ckeditor/ckeditor5-dev-webpack-plugin": "^20.0.0",
-    "@ckeditor/ckeditor5-easy-image": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-balloon": "^19.0.1",
-    "@ckeditor/ckeditor5-essentials": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-image": "^19.0.1",
-    "@ckeditor/ckeditor5-indent": "^19.0.1",
-    "@ckeditor/ckeditor5-link": "^19.0.1",
-    "@ckeditor/ckeditor5-list": "^19.0.1",
-    "@ckeditor/ckeditor5-media-embed": "^19.1.0",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-paste-from-office": "^19.0.2",
-    "@ckeditor/ckeditor5-table": "^19.1.0",
-    "@ckeditor/ckeditor5-typing": "^19.0.1",
-    "@ckeditor/ckeditor5-theme-lark": "^19.1.0",
+    "@ckeditor/ckeditor5-easy-image": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-balloon": "^20.0.0",
+    "@ckeditor/ckeditor5-essentials": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-image": "^20.0.0",
+    "@ckeditor/ckeditor5-indent": "^20.0.0",
+    "@ckeditor/ckeditor5-link": "^20.0.0",
+    "@ckeditor/ckeditor5-list": "^20.0.0",
+    "@ckeditor/ckeditor5-media-embed": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-paste-from-office": "^20.0.0",
+    "@ckeditor/ckeditor5-table": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0",
+    "@ckeditor/ckeditor5-theme-lark": "^20.0.0",
     "postcss-loader": "^3.0.0",
     "raw-loader": "^4.0.1",
     "style-loader": "^1.2.1",

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
packages/ckeditor5-build-classic/build/ckeditor.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
packages/ckeditor5-build-classic/build/ckeditor.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
packages/ckeditor5-build-classic/build/translations/de.js


+ 1 - 1
packages/ckeditor5-build-classic/build/translations/ug.js

@@ -1 +1 @@
-(function(d){	const l = d['ug'] = d['ug'] || {};	l.dictionary=Object.assign(		l.dictionary||{},		{"%0 of %1":"","Block quote":"قىسمەن قوللىنىش",Bold:"توم","Bulleted List":"بەلگە جەدىۋېلى",Cancel:"قالدۇرۇش","Cannot upload file:":"چىقىرىشقا بولمايدىغان ھۆججەت :","Centered image":"ئوتتۇردىكى رەسىم","Change image text alternative":"رەسىملىك تېكىست تاللىغۇچنى ئۆزگەرتىش","Choose heading":"تېما تاللاش",Downloadable:"","Dropdown toolbar":"","Edit link":"","Editor toolbar":"","Enter image caption":"رەسىمنىڭ تېمىسىنى كىرگۈزۈڭ","Full size image":"ئەسلى چوڭلۇقتىكى رەسىم",Heading:"تېما","Heading 1":"تېما 1","Heading 2":"تېما 2","Heading 3":"تېما 3","Heading 4":"","Heading 5":"","Heading 6":"","Image toolbar":"","image widget":"رەسىمچىك","Insert image":"رەسىم قىستۇرۇش",Italic:"يانتۇ","Left aligned image":"سولغا توغۇرلانغان رەسىم",Link:"ئۇلاش","Link URL":"ئۇلاش ئادىرسى",Next:"","Numbered List":"نومۇر جەدىۋېلى","Open in a new tab":"","Open link in new tab":"",Paragraph:"بۆلەك",Previous:"",Redo:"قايتا قىلىش","Rich Text Editor":"تېكىست تەھرىرلىگۈچ","Rich Text Editor, %0":"تېكىست تەھرىرلىگۈچ، 0%","Right aligned image":"ئوڭغا توغۇرلانغان رەسىم",Save:"ساقلاش","Show more items":"","Side image":"يان رەسىم","Text alternative":"تېكىست ئاملاشتۇرۇش","This link has no URL":"",Undo:"قالدۇرۇش",Unlink:"ئۈزۈش","Upload failed":"چىقىرىش مەغلۇپ بولدى"}	);l.getPluralForm=function(n){return 0;;};})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
+(function(d){	const l = d['ug'] = d['ug'] || {};	l.dictionary=Object.assign(		l.dictionary||{},		{"%0 of %1":"","Block quote":"قىسمەن قوللىنىش",Bold:"توم","Bulleted List":"بەلگە جەدىۋېلى",Cancel:"قالدۇرۇش","Cannot upload file:":"چىقىرىشقا بولمايدىغان ھۆججەت :","Centered image":"ئوتتۇردىكى رەسىم","Change image text alternative":"رەسىملىك تېكىست تاللىغۇچنى ئۆزگەرتىش","Choose heading":"تېما تاللاش",Downloadable:"","Dropdown toolbar":"","Edit link":"","Editor toolbar":"","Enter image caption":"رەسىمنىڭ تېمىسىنى كىرگۈزۈڭ","Full size image":"ئەسلى چوڭلۇقتىكى رەسىم",Heading:"تېما","Heading 1":"تېما 1","Heading 2":"تېما 2","Heading 3":"تېما 3","Heading 4":"","Heading 5":"","Heading 6":"","Image toolbar":"","image widget":"رەسىمچىك","Insert image":"رەسىم قىستۇرۇش",Italic:"يانتۇ","Left aligned image":"سولغا توغۇرلانغان رەسىم",Link:"ئۇلاش","Link URL":"ئۇلاش ئادىرسى",Next:"","Numbered List":"نومۇر جەدىۋېلى","Open in a new tab":"","Open link in new tab":"",Paragraph:"بۆلەك",Previous:"",Redo:"قايتا قىلىش","Rich Text Editor":"تېكىست تەھرىرلىگۈچ","Rich Text Editor, %0":"تېكىست تەھرىرلىگۈچ، 0%","Right aligned image":"ئوڭغا توغۇرلانغان رەسىم",Save:"ساقلاش","Show more items":"","Side image":"يان رەسىم","Text alternative":"تېكىست ئاملاشتۇرۇش","This link has no URL":"",Undo:"قالدۇرۇش",Unlink:"ئۈزۈش","Upload failed":"چىقىرىش مەغلۇپ بولدى"}	);l.getPluralForm=function(n){return (n != 1);;};})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

+ 21 - 21
packages/ckeditor5-build-classic/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-build-classic",
-  "version": "19.0.2",
+  "version": "20.0.0",
   "description": "The classic editor build of CKEditor 5 – the best browser-based rich text editor.",
   "keywords": [
     "ckeditor5-build",
@@ -25,28 +25,28 @@
     "build"
   ],
   "devDependencies": {
-    "@ckeditor/ckeditor5-adapter-ckfinder": "^19.0.1",
-    "@ckeditor/ckeditor5-autoformat": "^19.0.1",
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-block-quote": "^19.0.1",
-    "@ckeditor/ckeditor5-ckfinder": "^19.0.1",
-    "@ckeditor/ckeditor5-core": "^19.0.1",
+    "@ckeditor/ckeditor5-adapter-ckfinder": "^20.0.0",
+    "@ckeditor/ckeditor5-autoformat": "^20.0.0",
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-block-quote": "^20.0.0",
+    "@ckeditor/ckeditor5-ckfinder": "^20.0.0",
+    "@ckeditor/ckeditor5-core": "^20.0.0",
     "@ckeditor/ckeditor5-dev-utils": "^20.0.0",
     "@ckeditor/ckeditor5-dev-webpack-plugin": "^20.0.0",
-    "@ckeditor/ckeditor5-easy-image": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-essentials": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-image": "^19.0.1",
-    "@ckeditor/ckeditor5-indent": "^19.0.1",
-    "@ckeditor/ckeditor5-link": "^19.0.1",
-    "@ckeditor/ckeditor5-list": "^19.0.1",
-    "@ckeditor/ckeditor5-media-embed": "^19.1.0",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-paste-from-office": "^19.0.2",
-    "@ckeditor/ckeditor5-table": "^19.1.0",
-    "@ckeditor/ckeditor5-typing": "^19.0.1",
-    "@ckeditor/ckeditor5-theme-lark": "^19.1.0",
+    "@ckeditor/ckeditor5-easy-image": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-essentials": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-image": "^20.0.0",
+    "@ckeditor/ckeditor5-indent": "^20.0.0",
+    "@ckeditor/ckeditor5-link": "^20.0.0",
+    "@ckeditor/ckeditor5-list": "^20.0.0",
+    "@ckeditor/ckeditor5-media-embed": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-paste-from-office": "^20.0.0",
+    "@ckeditor/ckeditor5-table": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0",
+    "@ckeditor/ckeditor5-theme-lark": "^20.0.0",
     "postcss-loader": "^3.0.0",
     "raw-loader": "^4.0.1",
     "style-loader": "^1.2.1",

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
packages/ckeditor5-build-decoupled-document/build/ckeditor.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
packages/ckeditor5-build-decoupled-document/build/ckeditor.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
packages/ckeditor5-build-decoupled-document/build/translations/de.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
packages/ckeditor5-build-decoupled-document/build/translations/ug.js


+ 24 - 24
packages/ckeditor5-build-decoupled-document/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-build-decoupled-document",
-  "version": "19.0.2",
+  "version": "20.0.0",
   "description": "The document editor build of CKEditor 5 – the best browser-based rich text editor.",
   "keywords": [
     "ckeditor5-build",
@@ -25,31 +25,31 @@
     "build"
   ],
   "devDependencies": {
-    "@ckeditor/ckeditor5-adapter-ckfinder": "^19.0.1",
-    "@ckeditor/ckeditor5-alignment": "^19.0.1",
-    "@ckeditor/ckeditor5-autoformat": "^19.0.1",
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-block-quote": "^19.0.1",
-    "@ckeditor/ckeditor5-ckfinder": "^19.0.1",
-    "@ckeditor/ckeditor5-core": "^19.0.1",
+    "@ckeditor/ckeditor5-adapter-ckfinder": "^20.0.0",
+    "@ckeditor/ckeditor5-alignment": "^20.0.0",
+    "@ckeditor/ckeditor5-autoformat": "^20.0.0",
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-block-quote": "^20.0.0",
+    "@ckeditor/ckeditor5-ckfinder": "^20.0.0",
+    "@ckeditor/ckeditor5-core": "^20.0.0",
     "@ckeditor/ckeditor5-dev-utils": "^20.0.0",
     "@ckeditor/ckeditor5-dev-webpack-plugin": "^20.0.0",
-    "@ckeditor/ckeditor5-easy-image": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-decoupled": "^19.0.1",
-    "@ckeditor/ckeditor5-essentials": "^19.0.1",
-    "@ckeditor/ckeditor5-font": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-highlight": "^19.0.1",
-    "@ckeditor/ckeditor5-image": "^19.0.1",
-    "@ckeditor/ckeditor5-indent": "^19.0.1",
-    "@ckeditor/ckeditor5-link": "^19.0.1",
-    "@ckeditor/ckeditor5-list": "^19.0.1",
-    "@ckeditor/ckeditor5-media-embed": "^19.1.0",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-paste-from-office": "^19.0.2",
-    "@ckeditor/ckeditor5-table": "^19.1.0",
-    "@ckeditor/ckeditor5-typing": "^19.0.1",
-    "@ckeditor/ckeditor5-theme-lark": "^19.1.0",
+    "@ckeditor/ckeditor5-easy-image": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-decoupled": "^20.0.0",
+    "@ckeditor/ckeditor5-essentials": "^20.0.0",
+    "@ckeditor/ckeditor5-font": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-highlight": "^20.0.0",
+    "@ckeditor/ckeditor5-image": "^20.0.0",
+    "@ckeditor/ckeditor5-indent": "^20.0.0",
+    "@ckeditor/ckeditor5-link": "^20.0.0",
+    "@ckeditor/ckeditor5-list": "^20.0.0",
+    "@ckeditor/ckeditor5-media-embed": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-paste-from-office": "^20.0.0",
+    "@ckeditor/ckeditor5-table": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0",
+    "@ckeditor/ckeditor5-theme-lark": "^20.0.0",
     "postcss-loader": "^3.0.0",
     "raw-loader": "^4.0.1",
     "style-loader": "^1.2.1",

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
packages/ckeditor5-build-inline/build/ckeditor.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
packages/ckeditor5-build-inline/build/ckeditor.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
packages/ckeditor5-build-inline/build/translations/de.js


+ 1 - 1
packages/ckeditor5-build-inline/build/translations/ug.js

@@ -1 +1 @@
-(function(d){	const l = d['ug'] = d['ug'] || {};	l.dictionary=Object.assign(		l.dictionary||{},		{"%0 of %1":"","Block quote":"قىسمەن قوللىنىش",Bold:"توم","Bulleted List":"بەلگە جەدىۋېلى",Cancel:"قالدۇرۇش","Cannot upload file:":"چىقىرىشقا بولمايدىغان ھۆججەت :","Centered image":"ئوتتۇردىكى رەسىم","Change image text alternative":"رەسىملىك تېكىست تاللىغۇچنى ئۆزگەرتىش","Choose heading":"تېما تاللاش",Downloadable:"","Dropdown toolbar":"","Edit link":"","Editor toolbar":"","Enter image caption":"رەسىمنىڭ تېمىسىنى كىرگۈزۈڭ","Full size image":"ئەسلى چوڭلۇقتىكى رەسىم",Heading:"تېما","Heading 1":"تېما 1","Heading 2":"تېما 2","Heading 3":"تېما 3","Heading 4":"","Heading 5":"","Heading 6":"","Image toolbar":"","image widget":"رەسىمچىك","Insert image":"رەسىم قىستۇرۇش",Italic:"يانتۇ","Left aligned image":"سولغا توغۇرلانغان رەسىم",Link:"ئۇلاش","Link URL":"ئۇلاش ئادىرسى",Next:"","Numbered List":"نومۇر جەدىۋېلى","Open in a new tab":"","Open link in new tab":"",Paragraph:"بۆلەك",Previous:"",Redo:"قايتا قىلىش","Rich Text Editor, %0":"تېكىست تەھرىرلىگۈچ، 0%","Right aligned image":"ئوڭغا توغۇرلانغان رەسىم",Save:"ساقلاش","Show more items":"","Side image":"يان رەسىم","Text alternative":"تېكىست ئاملاشتۇرۇش","This link has no URL":"",Undo:"قالدۇرۇش",Unlink:"ئۈزۈش","Upload failed":"چىقىرىش مەغلۇپ بولدى"}	);l.getPluralForm=function(n){return 0;;};})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
+(function(d){	const l = d['ug'] = d['ug'] || {};	l.dictionary=Object.assign(		l.dictionary||{},		{"%0 of %1":"","Block quote":"قىسمەن قوللىنىش",Bold:"توم","Bulleted List":"بەلگە جەدىۋېلى",Cancel:"قالدۇرۇش","Cannot upload file:":"چىقىرىشقا بولمايدىغان ھۆججەت :","Centered image":"ئوتتۇردىكى رەسىم","Change image text alternative":"رەسىملىك تېكىست تاللىغۇچنى ئۆزگەرتىش","Choose heading":"تېما تاللاش",Downloadable:"","Dropdown toolbar":"","Edit link":"","Editor toolbar":"","Enter image caption":"رەسىمنىڭ تېمىسىنى كىرگۈزۈڭ","Full size image":"ئەسلى چوڭلۇقتىكى رەسىم",Heading:"تېما","Heading 1":"تېما 1","Heading 2":"تېما 2","Heading 3":"تېما 3","Heading 4":"","Heading 5":"","Heading 6":"","Image toolbar":"","image widget":"رەسىمچىك","Insert image":"رەسىم قىستۇرۇش",Italic:"يانتۇ","Left aligned image":"سولغا توغۇرلانغان رەسىم",Link:"ئۇلاش","Link URL":"ئۇلاش ئادىرسى",Next:"","Numbered List":"نومۇر جەدىۋېلى","Open in a new tab":"","Open link in new tab":"",Paragraph:"بۆلەك",Previous:"",Redo:"قايتا قىلىش","Rich Text Editor, %0":"تېكىست تەھرىرلىگۈچ، 0%","Right aligned image":"ئوڭغا توغۇرلانغان رەسىم",Save:"ساقلاش","Show more items":"","Side image":"يان رەسىم","Text alternative":"تېكىست ئاملاشتۇرۇش","This link has no URL":"",Undo:"قالدۇرۇش",Unlink:"ئۈزۈش","Upload failed":"چىقىرىش مەغلۇپ بولدى"}	);l.getPluralForm=function(n){return (n != 1);;};})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));

+ 21 - 21
packages/ckeditor5-build-inline/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-build-inline",
-  "version": "19.0.2",
+  "version": "20.0.0",
   "description": "The inline editor build of CKEditor 5 – the best browser-based rich text editor.",
   "keywords": [
     "ckeditor5-build",
@@ -25,28 +25,28 @@
     "build"
   ],
   "devDependencies": {
-    "@ckeditor/ckeditor5-adapter-ckfinder": "^19.0.1",
-    "@ckeditor/ckeditor5-autoformat": "^19.0.1",
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-block-quote": "^19.0.1",
-    "@ckeditor/ckeditor5-ckfinder": "^19.0.1",
-    "@ckeditor/ckeditor5-core": "^19.0.1",
+    "@ckeditor/ckeditor5-adapter-ckfinder": "^20.0.0",
+    "@ckeditor/ckeditor5-autoformat": "^20.0.0",
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-block-quote": "^20.0.0",
+    "@ckeditor/ckeditor5-ckfinder": "^20.0.0",
+    "@ckeditor/ckeditor5-core": "^20.0.0",
     "@ckeditor/ckeditor5-dev-utils": "^20.0.0",
     "@ckeditor/ckeditor5-dev-webpack-plugin": "^20.0.0",
-    "@ckeditor/ckeditor5-easy-image": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-inline": "^19.0.1",
-    "@ckeditor/ckeditor5-essentials": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-image": "^19.0.1",
-    "@ckeditor/ckeditor5-indent": "^19.0.1",
-    "@ckeditor/ckeditor5-link": "^19.0.1",
-    "@ckeditor/ckeditor5-list": "^19.0.1",
-    "@ckeditor/ckeditor5-media-embed": "^19.1.0",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-paste-from-office": "^19.0.2",
-    "@ckeditor/ckeditor5-table": "^19.1.0",
-    "@ckeditor/ckeditor5-typing": "^19.0.1",
-    "@ckeditor/ckeditor5-theme-lark": "^19.1.0",
+    "@ckeditor/ckeditor5-easy-image": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-inline": "^20.0.0",
+    "@ckeditor/ckeditor5-essentials": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-image": "^20.0.0",
+    "@ckeditor/ckeditor5-indent": "^20.0.0",
+    "@ckeditor/ckeditor5-link": "^20.0.0",
+    "@ckeditor/ckeditor5-list": "^20.0.0",
+    "@ckeditor/ckeditor5-media-embed": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-paste-from-office": "^20.0.0",
+    "@ckeditor/ckeditor5-table": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0",
+    "@ckeditor/ckeditor5-theme-lark": "^20.0.0",
     "postcss-loader": "^3.0.0",
     "raw-loader": "^4.0.1",
     "style-loader": "^1.2.1",

+ 11 - 11
packages/ckeditor5-ckfinder/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-ckfinder",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "CKFinder integration for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -10,18 +10,18 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-adapter-ckfinder": "^19.0.1",
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-image": "^19.0.1",
-    "@ckeditor/ckeditor5-link": "^19.0.1",
-    "@ckeditor/ckeditor5-ui": "^19.0.1"
+    "@ckeditor/ckeditor5-adapter-ckfinder": "^20.0.0",
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-image": "^20.0.0",
+    "@ckeditor/ckeditor5-link": "^20.0.0",
+    "@ckeditor/ckeditor5-ui": "^20.0.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-clipboard": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-utils": "^19.0.1"
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-clipboard": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 9 - 9
packages/ckeditor5-clipboard/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-clipboard",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Clipboard integration for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -10,16 +10,16 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-utils": "^19.0.1"
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-block-quote": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-link": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0"
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-block-quote": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-link": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 4 - 4
packages/ckeditor5-cloud-services/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-cloud-services",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "CKEditor 5's Cloud Services integration layer.",
   "keywords": [
     "ckeditor",
@@ -9,11 +9,11 @@
     "ckeditor5-lib"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor-cloud-services-core": "^19.0.1",
-    "@ckeditor/ckeditor5-core": "^19.0.1"
+    "@ckeditor/ckeditor-cloud-services-core": "^20.0.0",
+    "@ckeditor/ckeditor5-core": "^20.0.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1"
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 1 - 1
packages/ckeditor5-code-block/lang/translations/de.po

@@ -18,7 +18,7 @@ msgstr ""
 
 msgctxt "A label of the button that allows inserting a new code block into the editor content."
 msgid "Insert code block"
-msgstr "Block einfügen"
+msgstr "Code-Block einfügen"
 
 msgctxt "A language of the code block in the editor content when no specific programming language is associated with it."
 msgid "Plain text"

+ 14 - 14
packages/ckeditor5-code-block/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-code-block",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Code Block feature for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -10,22 +10,22 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-enter": "^19.0.1",
-    "@ckeditor/ckeditor5-ui": "^19.0.1",
-    "@ckeditor/ckeditor5-utils": "^19.0.1",
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-enter": "^20.0.0",
+    "@ckeditor/ckeditor5-ui": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0",
     "lodash-es": "^4.17.15"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-alignment": "^19.0.1",
-    "@ckeditor/ckeditor5-autoformat": "^19.0.1",
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-block-quote": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-indent": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-undo": "^19.0.1"
+    "@ckeditor/ckeditor5-alignment": "^20.0.0",
+    "@ckeditor/ckeditor5-autoformat": "^20.0.0",
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-block-quote": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-indent": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-undo": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 2 - 2
packages/ckeditor5-core/lang/translations/ug.po

@@ -12,9 +12,9 @@
 #
 msgid ""
 msgstr ""
-"Language-Team: Uighur (https://www.transifex.com/ckeditor/teams/11143/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/ckeditor/teams/11143/ug/)\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 msgctxt "Label for the Save button."
 msgid "Save"

+ 17 - 17
packages/ckeditor5-core/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-core",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "The core architecture of CKEditor 5 – the best browser-based rich text editor.",
   "keywords": [
     "ckeditor5-lib",
@@ -21,25 +21,25 @@
     "framework"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-utils": "^19.0.1",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0",
     "lodash-es": "^4.17.15"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-autoformat": "^19.0.1",
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-block-quote": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-essentials": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-image": "^19.0.1",
-    "@ckeditor/ckeditor5-indent": "^19.0.1",
-    "@ckeditor/ckeditor5-link": "^19.0.1",
-    "@ckeditor/ckeditor5-list": "^19.0.1",
-    "@ckeditor/ckeditor5-media-embed": "^19.1.0",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-table": "^19.1.0",
-    "@ckeditor/ckeditor5-ui": "^19.0.1"
+    "@ckeditor/ckeditor5-autoformat": "^20.0.0",
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-block-quote": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-essentials": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-image": "^20.0.0",
+    "@ckeditor/ckeditor5-indent": "^20.0.0",
+    "@ckeditor/ckeditor5-link": "^20.0.0",
+    "@ckeditor/ckeditor5-list": "^20.0.0",
+    "@ckeditor/ckeditor5-media-embed": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-table": "^20.0.0",
+    "@ckeditor/ckeditor5-ui": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 79 - 0
packages/ckeditor5-core/tests/_utils-tests/assertions/attribute.js

@@ -0,0 +1,79 @@
+/**
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
+ */
+
+/* global chai */
+
+import '../../_utils/assertions/attribute';
+
+describe( 'attribute chai assertion', () => {
+	it( 'should be added to chai assertions', () => {
+		const assertion = new chai.Assertion();
+
+		expect( assertion ).to.have.property( 'attribute' );
+		expect( assertion.attribute ).to.be.instanceof( Function );
+	} );
+
+	it( 'should assert the target has a \'hasAttribute\' method', () => {
+		expect( { hasAttribute: () => true } ).to.have.attribute( 'foo' );
+
+		expect( function() {
+			expect( {} ).not.to.have.attribute( 'bar' );
+		} ).to.throw( 'expected {} to respond to \'hasAttribute\'' );
+
+		expect( function() {
+			expect( {} ).to.have.attribute( 'bar' );
+		} ).to.throw( 'expected {} to respond to \'hasAttribute\'' );
+	} );
+
+	it( 'should assert the \'target.hasAttribute\' returns \'true\' for the given type', () => {
+		expect( { hasAttribute: () => true } ).to.have.attribute( 'foo' );
+
+		expect( function() {
+			expect( { hasAttribute: () => false } ).to.have.attribute( 'bar' );
+		} ).to.throw( 'expected { Object (hasAttribute) } to have attribute \'bar\'' );
+	} );
+
+	it( 'negated, should assert the \'target.hasAttribute\' returns \'false\' for the given type', () => {
+		expect( { hasAttribute: () => false } ).not.to.have.attribute( 'foo' );
+
+		expect( function() {
+			expect( { hasAttribute: () => true } ).not.to.have.attribute( 'bar' );
+		} ).to.throw( 'expected { Object (hasAttribute) } to not have attribute \'bar\'' );
+	} );
+
+	it( 'should assert the \'target.getAttribute\' returns the given value for the given type', () => {
+		expect( {
+			hasAttribute: () => true,
+			getAttribute: () => 'bar'
+		} ).to.have.attribute( 'foo', 'bar' );
+
+		expect( function() {
+			expect( {
+				hasAttribute: () => true,
+				getAttribute: () => 'bar'
+			} ).to.have.attribute( 'foo', 'baz' );
+		} ).to.throw( 'expected { Object (hasAttribute, getAttribute) } to have attribute \'foo\' of \'bar\', but got \'baz\'' );
+	} );
+
+	it( 'negated, should assert for the given type the \'target.getAttribute\' returns a value different than the given one', () => {
+		expect( {
+			hasAttribute: () => true,
+			getAttribute: () => 'bar'
+		} ).to.not.have.attribute( 'foo', 'baz' );
+
+		expect( function() {
+			expect( {
+				hasAttribute: () => true,
+				getAttribute: () => 'baz'
+			} ).to.not.have.attribute( 'foo', 'baz' );
+		} ).to.throw( 'expected { Object (hasAttribute, getAttribute) } to not have attribute \'foo\' of \'baz\'' );
+	} );
+
+	it( 'should prefix failure message with the given one', () => {
+		expect( function() {
+			expect( {} ).to.have.attribute( 'foo', 'baz', 'Illegal salmon' );
+		} ).to.throw( /^Illegal salmon: / );
+	} );
+} );

+ 61 - 0
packages/ckeditor5-core/tests/_utils/assertions/attribute.js

@@ -0,0 +1,61 @@
+/**
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
+ */
+
+/* global chai */
+
+/**
+ * Asserts that the target has an attribute with the given key name.
+ * See {@link module:engine/model/documentselection~DocumentSelection#hasAttribute hasAttribute}.
+ *
+ *		expect( selection ).to.have.attribute( 'linkHref' );
+ *
+ * When `value` is provided, .attribute also asserts that the attribute's value is equal to the given `value`.
+ * See {@link module:engine/model/documentselection~DocumentSelection#getAttribute getAttribute}.
+ *
+ *		expect( selection ).to.have.attribute( 'linkHref', 'example.com' );
+ *
+ * Negations works as well.
+ *
+ * @param {String} key Key of attribute to assert.
+ * @param {String} [value] Attribute value to assert.
+ * @param {String} [message] Additional message.
+ */
+chai.Assertion.addMethod( 'attribute', function attributeAssertion( key, value, message ) {
+	if ( message ) {
+		chai.util.flag( this, 'message', message );
+	}
+
+	const obj = this._obj;
+
+	if ( arguments.length === 1 ) {
+		// Check if it has the method at all.
+		new chai.Assertion( obj ).to.respondTo( 'hasAttribute' );
+
+		// Check if it has the attribute.
+		const hasAttribute = obj.hasAttribute( key );
+		this.assert(
+			hasAttribute === true,
+			`expected #{this} to have attribute '${ key }'`,
+			`expected #{this} to not have attribute '${ key }'`,
+			!chai.util.flag( this, 'negate' ),
+			hasAttribute
+		);
+	}
+
+	// If a value was given.
+	if ( arguments.length >= 2 ) {
+		// Check if it has the method at all.
+		new chai.Assertion( obj ).to.respondTo( 'getAttribute', message );
+
+		const attributeValue = obj.getAttribute( key );
+		this.assert(
+			attributeValue === value,
+			`expected #{this} to have attribute '${ key }' of #{exp}, but got #{act}`,
+			`expected #{this} to not have attribute '${ key }' of #{exp}`,
+			attributeValue,
+			value
+		);
+	}
+} );

+ 10 - 10
packages/ckeditor5-easy-image/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-easy-image",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Easy Image feature for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -10,17 +10,17 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor-cloud-services-core": "^19.0.1",
-    "@ckeditor/ckeditor5-cloud-services": "^19.0.1",
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-image": "^19.0.1",
-    "@ckeditor/ckeditor5-upload": "^19.0.1"
+    "@ckeditor/ckeditor-cloud-services-core": "^20.0.0",
+    "@ckeditor/ckeditor5-cloud-services": "^20.0.0",
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-image": "^20.0.0",
+    "@ckeditor/ckeditor5-upload": "^20.0.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-clipboard": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-utils": "^19.0.1"
+    "@ckeditor/ckeditor5-clipboard": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 11 - 11
packages/ckeditor5-editor-balloon/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-editor-balloon",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Balloon editor implementation for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -9,19 +9,19 @@
     "ckeditor5-editor"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-ui": "^19.0.1",
-    "@ckeditor/ckeditor5-utils": "^19.0.1",
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-ui": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0",
     "lodash-es": "^4.17.15"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-enter": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-typing": "^19.0.1",
-    "@ckeditor/ckeditor5-undo": "^19.0.1"
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-enter": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0",
+    "@ckeditor/ckeditor5-undo": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 11 - 11
packages/ckeditor5-editor-classic/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-editor-classic",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Classic editor implementation for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -9,19 +9,19 @@
     "ckeditor5-editor"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-ui": "^19.0.1",
-    "@ckeditor/ckeditor5-utils": "^19.0.1",
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-ui": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0",
     "lodash-es": "^4.17.15"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-enter": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-typing": "^19.0.1",
-    "@ckeditor/ckeditor5-undo": "^19.0.1"
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-enter": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0",
+    "@ckeditor/ckeditor5-undo": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 11 - 11
packages/ckeditor5-editor-decoupled/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-editor-decoupled",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Decoupled editor implementation for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -9,19 +9,19 @@
     "ckeditor5-editor"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-ui": "^19.0.1",
-    "@ckeditor/ckeditor5-utils": "^19.0.1",
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-ui": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0",
     "lodash-es": "^4.17.15"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-enter": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-typing": "^19.0.1",
-    "@ckeditor/ckeditor5-undo": "^19.0.1"
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-enter": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0",
+    "@ckeditor/ckeditor5-undo": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 11 - 11
packages/ckeditor5-editor-inline/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-editor-inline",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Inline editor implementation for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -9,19 +9,19 @@
     "ckeditor5-editor"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-ui": "^19.0.1",
-    "@ckeditor/ckeditor5-utils": "^19.0.1",
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-ui": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0",
     "lodash-es": "^4.17.15"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-enter": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-typing": "^19.0.1",
-    "@ckeditor/ckeditor5-undo": "^19.0.1"
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-enter": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0",
+    "@ckeditor/ckeditor5-undo": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 17 - 17
packages/ckeditor5-engine/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-engine",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "The editing engine of CKEditor 5 – the best browser-based rich text editor.",
   "keywords": [
     "wysiwyg",
@@ -21,25 +21,25 @@
     "ckeditor 5"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-utils": "^19.0.1",
+    "@ckeditor/ckeditor5-utils": "^20.0.0",
     "lodash-es": "^4.17.15"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-block-quote": "^19.0.1",
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-enter": "^19.0.1",
-    "@ckeditor/ckeditor5-essentials": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-link": "^19.0.1",
-    "@ckeditor/ckeditor5-list": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-table": "^19.1.0",
-    "@ckeditor/ckeditor5-theme-lark": "^19.1.0",
-    "@ckeditor/ckeditor5-typing": "^19.0.1",
-    "@ckeditor/ckeditor5-undo": "^19.0.1",
-    "@ckeditor/ckeditor5-widget": "^19.1.0"
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-block-quote": "^20.0.0",
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-enter": "^20.0.0",
+    "@ckeditor/ckeditor5-essentials": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-link": "^20.0.0",
+    "@ckeditor/ckeditor5-list": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-table": "^20.0.0",
+    "@ckeditor/ckeditor5-theme-lark": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0",
+    "@ckeditor/ckeditor5-undo": "^20.0.0",
+    "@ckeditor/ckeditor5-widget": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 3 - 0
packages/ckeditor5-engine/src/view/downcastwriter.js

@@ -214,6 +214,9 @@ export default class DowncastWriter {
 	 *		writer.createEditableElement( 'div' );
 	 *		writer.createEditableElement( 'div', { id: 'foo-1234' } );
 	 *
+	 * Note: The editable element is to be used in the editing pipeline. Usually, together with
+	 * {@link module:widget/utils~toWidgetEditable `toWidgetEditable()`}.
+	 *
 	 * @param {String} name Name of the element.
 	 * @param {Object} [attributes] Elements attributes.
 	 * @returns {module:engine/view/editableelement~EditableElement} Created element.

+ 10 - 10
packages/ckeditor5-enter/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-enter",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Enter feature for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -10,17 +10,17 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-utils": "^19.0.1"
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-typing": "^19.0.1",
-    "@ckeditor/ckeditor5-undo": "^19.0.1"
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0",
+    "@ckeditor/ckeditor5-undo": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 9 - 9
packages/ckeditor5-essentials/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-essentials",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Essential editing features for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -10,16 +10,16 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-clipboard": "^19.0.1",
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-enter": "^19.0.1",
-    "@ckeditor/ckeditor5-select-all": "^19.0.1",
-    "@ckeditor/ckeditor5-typing": "^19.0.1",
-    "@ckeditor/ckeditor5-undo": "^19.0.1"
+    "@ckeditor/ckeditor5-clipboard": "^20.0.0",
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-enter": "^20.0.0",
+    "@ckeditor/ckeditor5-select-all": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0",
+    "@ckeditor/ckeditor5-undo": "^20.0.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0"
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 8 - 8
packages/ckeditor5-font/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-font",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Font feature for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -10,15 +10,15 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-ui": "^19.0.1",
-    "@ckeditor/ckeditor5-utils": "^19.0.1"
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-ui": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-highlight": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0"
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-highlight": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 2 - 2
packages/ckeditor5-heading/lang/translations/ug.po

@@ -12,9 +12,9 @@
 #
 msgid ""
 msgstr ""
-"Language-Team: Uighur (https://www.transifex.com/ckeditor/teams/11143/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/ckeditor/teams/11143/ug/)\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 msgctxt "Dropdown option label for the paragraph format."
 msgid "Paragraph"

+ 16 - 16
packages/ckeditor5-heading/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-heading",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Headings feature for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -10,23 +10,23 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-ui": "^19.0.1",
-    "@ckeditor/ckeditor5-utils": "^19.0.1"
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-ui": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-alignment": "^19.0.1",
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-block-quote": "^19.0.1",
-    "@ckeditor/ckeditor5-clipboard": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-enter": "^19.0.1",
-    "@ckeditor/ckeditor5-image": "^19.0.1",
-    "@ckeditor/ckeditor5-typing": "^19.0.1",
-    "@ckeditor/ckeditor5-undo": "^19.0.1",
-    "@ckeditor/ckeditor5-upload": "^19.0.1"
+    "@ckeditor/ckeditor5-alignment": "^20.0.0",
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-block-quote": "^20.0.0",
+    "@ckeditor/ckeditor5-clipboard": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-enter": "^20.0.0",
+    "@ckeditor/ckeditor5-image": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0",
+    "@ckeditor/ckeditor5-undo": "^20.0.0",
+    "@ckeditor/ckeditor5-upload": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 13 - 13
packages/ckeditor5-highlight/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-highlight",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Highilght feature for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -10,20 +10,20 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-ui": "^19.0.1"
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-ui": "^20.0.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-block-quote": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-enter": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-image": "^19.0.1",
-    "@ckeditor/ckeditor5-list": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-typing": "^19.0.1",
-    "@ckeditor/ckeditor5-utils": "^19.0.1"
+    "@ckeditor/ckeditor5-block-quote": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-enter": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-image": "^20.0.0",
+    "@ckeditor/ckeditor5-list": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 11 - 11
packages/ckeditor5-horizontal-line/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-horizontal-line",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Horizontal line feature for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -10,18 +10,18 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-ui": "^19.0.1",
-    "@ckeditor/ckeditor5-widget": "^19.1.0"
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-ui": "^20.0.0",
+    "@ckeditor/ckeditor5-widget": "^20.0.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-cloud-services": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-easy-image": "^19.0.1",
-    "@ckeditor/ckeditor5-image": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-utils": "^19.0.1"
+    "@ckeditor/ckeditor5-cloud-services": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-easy-image": "^20.0.0",
+    "@ckeditor/ckeditor5-image": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 2 - 0
packages/ckeditor5-image/docs/_snippets/features/build-image-source.js

@@ -8,7 +8,9 @@
 import ClassicEditor from '@ckeditor/ckeditor5-build-classic/src/ckeditor';
 
 import ImageResize from '@ckeditor/ckeditor5-image/src/imageresize';
+import LinkImage from '@ckeditor/ckeditor5-link/src/linkimage';
 
 ClassicEditor.builtinPlugins.push( ImageResize );
+ClassicEditor.builtinPlugins.push( LinkImage );
 
 window.ClassicEditor = ClassicEditor;

+ 1 - 1
packages/ckeditor5-image/docs/_snippets/features/image-caption.js

@@ -9,7 +9,7 @@ import { CS_CONFIG } from '@ckeditor/ckeditor5-cloud-services/tests/_utils/cloud
 
 ClassicEditor
 	.create( document.querySelector( '#snippet-image-caption' ), {
-		removePlugins: [ 'ImageStyle', 'ImageResize' ],
+		removePlugins: [ 'ImageStyle', 'ImageResize', 'LinkImage' ],
 		image: {
 			toolbar: [ 'imageTextAlternative' ]
 		},

+ 15 - 0
packages/ckeditor5-image/docs/_snippets/features/image-link.html

@@ -0,0 +1,15 @@
+<style>
+	.image > a {
+		display: block;
+		border: solid 2px #1b3af2; /* The color of the link text on this page. */
+	}
+</style>
+<div id="snippet-image-link">
+	<h3>Linked image</h3>
+
+	<figure class="image">
+		<a href="https://cksource.com">
+			<img src="%BASE_PATH%/assets/img/fields.jpg" alt="Autumn fields">
+		</a>
+	</figure>
+</div>

+ 33 - 0
packages/ckeditor5-image/docs/_snippets/features/image-link.js

@@ -0,0 +1,33 @@
+/**
+ * @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 ClassicEditor, console, window, document */
+
+import { CS_CONFIG } from '@ckeditor/ckeditor5-cloud-services/tests/_utils/cloud-services-config.js';
+
+ClassicEditor
+	.create( document.querySelector( '#snippet-image-link' ), {
+		removePlugins: [ 'ImageResize' ],
+		toolbar: {
+			viewportTopOffset: window.getViewportTopOffsetConfig()
+		},
+		image: {
+			toolbar: [
+				'imageStyle:full',
+				'imageStyle:side',
+				'|',
+				'imageTextAlternative',
+				'|',
+				'linkImage'
+			]
+		},
+		cloudServices: CS_CONFIG
+	} )
+	.then( editor => {
+		window.editorResize = editor;
+	} )
+	.catch( err => {
+		console.error( err );
+	} );

+ 1 - 0
packages/ckeditor5-image/docs/_snippets/features/image-resize-px.js

@@ -9,6 +9,7 @@ import { CS_CONFIG } from '@ckeditor/ckeditor5-cloud-services/tests/_utils/cloud
 
 ClassicEditor
 	.create( document.querySelector( '#snippet-image-resize-px' ), {
+		removePlugins: [ 'LinkImage' ],
 		image: {
 			resizeUnit: 'px'
 		},

+ 1 - 0
packages/ckeditor5-image/docs/_snippets/features/image-resize.js

@@ -9,6 +9,7 @@ import { CS_CONFIG } from '@ckeditor/ckeditor5-cloud-services/tests/_utils/cloud
 
 ClassicEditor
 	.create( document.querySelector( '#snippet-image-resize' ), {
+		removePlugins: [ 'LinkImage' ],
 		toolbar: {
 			viewportTopOffset: window.getViewportTopOffsetConfig()
 		},

+ 1 - 1
packages/ckeditor5-image/docs/_snippets/features/image-style-custom.js

@@ -9,7 +9,7 @@ import { CS_CONFIG } from '@ckeditor/ckeditor5-cloud-services/tests/_utils/cloud
 
 ClassicEditor
 	.create( document.querySelector( '#snippet-image-style-custom' ), {
-		removePlugins: [ 'ImageResize' ],
+		removePlugins: [ 'ImageResize', 'LinkImage' ],
 		image: {
 			styles: [
 				// This option is equal to a situation where no style is applied.

+ 1 - 1
packages/ckeditor5-image/docs/_snippets/features/image-style.js

@@ -9,7 +9,7 @@ import { CS_CONFIG } from '@ckeditor/ckeditor5-cloud-services/tests/_utils/cloud
 
 ClassicEditor
 	.create( document.querySelector( '#snippet-image-style' ), {
-		removePlugins: [ 'ImageResize' ],
+		removePlugins: [ 'ImageResize', 'LinkImage' ],
 		toolbar: {
 			viewportTopOffset: window.getViewportTopOffsetConfig()
 		},

+ 1 - 1
packages/ckeditor5-image/docs/_snippets/features/image-toolbar.js

@@ -9,7 +9,7 @@ import { CS_CONFIG } from '@ckeditor/ckeditor5-cloud-services/tests/_utils/cloud
 
 ClassicEditor
 	.create( document.querySelector( '#snippet-image-toolbar' ), {
-		removePlugins: [ 'ImageCaption', 'ImageStyle', 'ImageResize' ],
+		removePlugins: [ 'ImageCaption', 'ImageStyle', 'ImageResize', 'LinkImage' ],
 		image: {
 			toolbar: [ 'imageTextAlternative' ]
 		},

+ 1 - 1
packages/ckeditor5-image/docs/_snippets/features/image.js

@@ -9,7 +9,7 @@ import { CS_CONFIG } from '@ckeditor/ckeditor5-cloud-services/tests/_utils/cloud
 
 ClassicEditor
 	.create( document.querySelector( '#snippet-image' ), {
-		removePlugins: [ 'ImageToolbar', 'ImageCaption', 'ImageStyle', 'ImageResize' ],
+		removePlugins: [ 'ImageToolbar', 'ImageCaption', 'ImageStyle', 'ImageResize', 'LinkImage' ],
 		toolbar: {
 			viewportTopOffset: window.getViewportTopOffsetConfig()
 		},

+ 37 - 12
packages/ckeditor5-image/docs/features/image.md

@@ -14,9 +14,10 @@ The [`@ckeditor/ckeditor5-image`](https://www.npmjs.com/package/@ckeditor/ckedit
 * {@link module:image/imagetextalternative~ImageTextAlternative} adds support for adding text alternative.
 * {@link module:image/imageupload~ImageUpload} adds support for uploading dropped or pasted images (see: {@link features/image-upload Image upload}).
 * {@link module:image/imageresize~ImageResize} adds support for resizing images.
+* {@link module:link/linkimage~LinkImage} adds support for linking images.
 
 <info-box info>
-	All features listed above except the image resize are enabled by default in all WYSIWYG editor builds.
+	All features listed above except the image resize and image linking are enabled by default in all WYSIWYG editor builds.
 
 	Check the documentation of each subfeature to learn more about it.
 </info-box>
@@ -256,23 +257,39 @@ ClassicEditor
 
 {@snippet features/image-resize-px}
 
-### Future development
+## Linking images
 
-Resizing by dragging handles displayed over the image is the first option provided, but we consider implementing more with time. Some of the possible next steps include:
+The {@link module:link/linkimage~LinkImage} plugin adds support for linking images. Some use cases where this is needed are:
 
-* [Buttons such as "50%", "75%" and "100%" in the image toolbar](https://github.com/ckeditor/ckeditor5-image/issues/322), allowing the user to choose only from predefined widths.
-* [A traditional "width" input](https://github.com/ckeditor/ckeditor5-image/issues/319). Or an option to set both width and height separately.
-* [An option to restore the original image size](https://github.com/ckeditor/ckeditor5-image/issues/318).
-* [Limiting image resize](https://github.com/ckeditor/ckeditor5-image/issues/320) with min and max values.
+* Linking to a high-resolution version of an image.
+* Using images as thumbnails linking to an article or product page.
+* Creating banners linking to other pages.
 
-We count on your feedback. React with 👍 under the respective tickets or [report new ones](https://github.com/ckeditor/ckeditor5-image/issues) if you have different ideas.
+```html
+<figure class="image">
+	<a href="...">
+		<img src="..." alt="...">
+	</a>
+	<figcaption>Image caption</figcaption>
+</figure>
+```
+
+{@snippet features/image-link}
+
+### Enabling image linking
+
+The image linking feature is not enabled by default in any of the editor builds. In order to enable it, you need to load the {@link module:link/linkimage~LinkImage} plugin. Read more in the [Installation](#installation) section.
+
+<info-box info>
+	The {@link module:link/linkimage~LinkImage} plugin is available in the {@link api/link `@ckeditor/ckeditor5-link`} package.
+</info-box>
 
 ## Installation
 
 To add image features to your rich-text editor, install the [`@ckeditor/ckeditor5-image`](https://www.npmjs.com/package/@ckeditor/ckeditor5-image) package:
 
-```bash
-npm install --save @ckeditor/ckeditor5-image
+```plaintext
+npm install --save @ckeditor/ckeditor5-image @ckeditor/ckeditor5-link
 ```
 
 And add the plugins that you need to your plugin list. You also need to set the image toolbar items.
@@ -283,12 +300,20 @@ import ImageToolbar from '@ckeditor/ckeditor5-image/src/imagetoolbar';
 import ImageCaption from '@ckeditor/ckeditor5-image/src/imagecaption';
 import ImageStyle from '@ckeditor/ckeditor5-image/src/imagestyle';
 import ImageResize from '@ckeditor/ckeditor5-image/src/imageresize';
+import LinkImage from '@ckeditor/ckeditor5-link/src/linkimage';
 
 ClassicEditor
 	.create( document.querySelector( '#editor' ), {
-		plugins: [ Image, ImageToolbar, ImageCaption, ImageStyle, ImageResize ],
+		plugins: [ Image, ImageToolbar, ImageCaption, ImageStyle, ImageResize, LinkImage ],
 		image: {
-			toolbar: [ 'imageTextAlternative', '|', 'imageStyle:full', 'imageStyle:side' ]
+			toolbar: [
+				'imageStyle:full',
+				'imageStyle:side',
+				'|',
+				'imageTextAlternative',
+				'|',
+				'linkImage'
+			]
 		}
 	} )
 	.then( ... )

+ 2 - 2
packages/ckeditor5-image/lang/translations/ug.po

@@ -12,9 +12,9 @@
 #
 msgid ""
 msgstr ""
-"Language-Team: Uighur (https://www.transifex.com/ckeditor/teams/11143/ug/)\n"
+"Language-Team: Uyghur (https://www.transifex.com/ckeditor/teams/11143/ug/)\n"
 "Language: ug\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 msgctxt "Label for the image widget."
 msgid "image widget"

+ 22 - 22
packages/ckeditor5-image/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-image",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Image feature for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -10,29 +10,29 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-clipboard": "^19.0.1",
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-ui": "^19.0.1",
-    "@ckeditor/ckeditor5-upload": "^19.0.1",
-    "@ckeditor/ckeditor5-utils": "^19.0.1",
-    "@ckeditor/ckeditor5-widget": "^19.1.0"
+    "@ckeditor/ckeditor5-clipboard": "^20.0.0",
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-ui": "^20.0.0",
+    "@ckeditor/ckeditor5-upload": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0",
+    "@ckeditor/ckeditor5-widget": "^20.0.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-basic-styles": "^19.0.1",
-    "@ckeditor/ckeditor5-block-quote": "^19.0.1",
-    "@ckeditor/ckeditor5-cloud-services": "^19.0.1",
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-enter": "^19.0.1",
-    "@ckeditor/ckeditor5-easy-image": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-indent": "^19.0.1",
-    "@ckeditor/ckeditor5-link": "^19.0.1",
-    "@ckeditor/ckeditor5-list": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-table": "^19.1.0",
-    "@ckeditor/ckeditor5-typing": "^19.0.1",
-    "@ckeditor/ckeditor5-undo": "^19.0.1"
+    "@ckeditor/ckeditor5-basic-styles": "^20.0.0",
+    "@ckeditor/ckeditor5-block-quote": "^20.0.0",
+    "@ckeditor/ckeditor5-cloud-services": "^20.0.0",
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-enter": "^20.0.0",
+    "@ckeditor/ckeditor5-easy-image": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-indent": "^20.0.0",
+    "@ckeditor/ckeditor5-link": "^20.0.0",
+    "@ckeditor/ckeditor5-list": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-table": "^20.0.0",
+    "@ckeditor/ckeditor5-typing": "^20.0.0",
+    "@ckeditor/ckeditor5-undo": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 8 - 8
packages/ckeditor5-indent/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@ckeditor/ckeditor5-indent",
-  "version": "19.0.1",
+  "version": "20.0.0",
   "description": "Block indentation feature for CKEditor 5.",
   "keywords": [
     "ckeditor",
@@ -10,15 +10,15 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^19.0.1",
-    "@ckeditor/ckeditor5-utils": "^19.0.1"
+    "@ckeditor/ckeditor5-core": "^20.0.0",
+    "@ckeditor/ckeditor5-utils": "^20.0.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-editor-classic": "^19.0.1",
-    "@ckeditor/ckeditor5-engine": "^19.0.1",
-    "@ckeditor/ckeditor5-heading": "^19.0.1",
-    "@ckeditor/ckeditor5-paragraph": "^19.1.0",
-    "@ckeditor/ckeditor5-ui": "^19.0.1"
+    "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
+    "@ckeditor/ckeditor5-engine": "^20.0.0",
+    "@ckeditor/ckeditor5-heading": "^20.0.0",
+    "@ckeditor/ckeditor5-paragraph": "^20.0.0",
+    "@ckeditor/ckeditor5-ui": "^20.0.0"
   },
   "engines": {
     "node": ">=12.0.0",

+ 4 - 0
packages/ckeditor5-link/docs/_snippets/features/autolink.html

@@ -0,0 +1,4 @@
+<div id="snippet-autolink">
+	<p>Type space, or Enter or Shift+Enter after a link: ckeditor.com</p>
+	<p>Will link to E-mail addresses also: example@example.com</p>
+</div>

+ 23 - 0
packages/ckeditor5-link/docs/_snippets/features/autolink.js

@@ -0,0 +1,23 @@
+/**
+ * @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, ClassicEditor, CS_CONFIG, CKEditorPlugins */
+
+ClassicEditor
+	.create( document.querySelector( '#snippet-autolink' ), {
+		cloudServices: CS_CONFIG,
+		extraPlugins: [
+			CKEditorPlugins.AutoLink
+		],
+		toolbar: {
+			viewportTopOffset: window.getViewportTopOffsetConfig()
+		}
+	} )
+	.then( editor => {
+		window.editor = editor;
+	} )
+	.catch( err => {
+		console.error( err.stack );
+	} );

+ 5 - 0
packages/ckeditor5-link/docs/_snippets/features/build-link-source.js

@@ -7,6 +7,11 @@
 
 import ClassicEditor from '@ckeditor/ckeditor5-build-classic/src/ckeditor';
 import { CS_CONFIG } from '@ckeditor/ckeditor5-cloud-services/tests/_utils/cloud-services-config';
+import AutoLink from '@ckeditor/ckeditor5-link/src/autolink';
+
+window.CKEditorPlugins = {
+	AutoLink
+};
 
 window.ClassicEditor = ClassicEditor;
 window.CS_CONFIG = CS_CONFIG;

+ 6 - 2
packages/ckeditor5-link/docs/api/link.md

@@ -8,13 +8,17 @@ category: api-reference
 
 This package implements the link feature for CKEditor 5. It allows for inserting hyperlinks into the edited content and offers the UI to create and edit them.
 
+## Demo
+
+Check out the demo in the {@link features/link Link feature} guide.
+
 ## Documentation
 
-See the {@link module:link/link~Link} plugin documentation.
+See the {@link features/link Link feature} guide and the {@link module:link/link~Link} plugin documentation.
 
 ## Installation
 
-```bash
+```plaintext
 npm install --save @ckeditor/ckeditor5-link
 ```
 

+ 30 - 5
packages/ckeditor5-link/docs/features/link.md

@@ -147,11 +147,13 @@ ClassicEditor
 	.catch( ... );
 ```
 
-#### Adding default link protocol for the external links
+#### Adding default link protocol to external links
 
-Default link protocol can be usefull when user forget to type a full URL address to an external source, site etc. Sometimes copying the text, like for example `ckeditor.com` and converting it to a link may cause some issues. When you do this, the created link will direct you to `yourdomain.com/ckeditor.com`, because you forgot to pass the right protocol which makes the link relative to the site where it appears.
+A default link protocol can be useful when the user forgets to type the full URL address to an external source or website. Sometimes copying the text, like for example `ckeditor.com`, and converting it to a link may cause some issues. As a result, the created link will direct you to `yourdomain.com/ckeditor.com` because of the missing protocol. This makes the link relative to the site where it appears.
 
-Enabling the `{@link module:link/link~LinkConfig#defaultProtocol config.link.defaultProtocol}`, the {@link module:link/link~Link} feature will handle this issue for you. By default it doesn't fix the passed link value, but when you set `{@link module:link/link~LinkConfig#defaultProtocol config.link.defaultProtocol}` to — for example — `http://`, the plugin will add the given protocol to the every link that may need it (like `ckeditor.com`, `example.com` etc. where `[protocol://]example.com` is missing). Here's the basic configuration example:
+After you enable the {@link module:link/link~LinkConfig#defaultProtocol `config.link.defaultProtocol`} configuration option, the link feature will be able to handle this issue for you. By default it does not fix the passed link value, but when you set {@link module:link/link~LinkConfig#defaultProtocol `config.link.defaultProtocol`} to, for example, `http://`, the plugin will add the given protocol to every link that may need it (like `ckeditor.com`, `example.com`, etc. where `[protocol://]example.com` is missing).
+
+See a basic configuration example:
 
 ```js
 ClassicEditor
@@ -166,9 +168,9 @@ ClassicEditor
 ```
 
 <info-box>
-	Having `config.link.defaultProtocol` enabled you are still able to link things locally using `#` or `/`. Protocol won't be added to those links.
+	With the `config.link.defaultProtocol` option enabled, you are still able to link things locally using `#` or `/`. The protocol will not be added to these links.
 
-	Enabled feature also gives you an **email addresses auto-detection** feature. When you submit `hello@example.com`, the plugin will change it automatically to `mailto:hello@example.com`.
+	When enabled, this feature also provides the **email address auto-detection** feature. When you submit `hello@example.com` in your content, the plugin will automatically change it to `mailto:hello@example.com`.
 </info-box>
 
 #### Adding attributes to links based on pre–defined rules (automatic decorators)
@@ -236,6 +238,27 @@ ClassicEditor
 	.catch( ... );
 ```
 
+## Autolink feature
+
+You can enable automatic linking of URLs typed or pasted into editor. The `AutoLink` feature will automatically add links to URLs or e-mail addresses.
+
+<info-box>
+	Autolink action can be always reverted using undo (<kbd>CTRL</kbd>+<kbd>Z</kbd>).
+</info-box>
+
+{@snippet features/autolink}
+
+```js
+import AutoLink from '@ckeditor/ckeditor5-link/src/autolink';
+
+ClassicEditor
+	.create( document.querySelector( '#editor' ), {
+		plugins: [ Link, AutoLink, ... ]
+	} )
+	.then( ... )
+	.catch( ... );
+```
+
 ## Installation
 
 <info-box info>
@@ -283,6 +306,8 @@ editor.execute( 'link', 'http://example.com', { linkIsExternal: true } );
 editor.execute( 'unlink' );
 ```
 
+The package provides a plugin for {@link module:link/linkimage~LinkImage linking images}. See the {@link features/image#linking-images Linking images} section in the {@link features/image feature guide}.
+
 Links are represented in the {@link module:engine/model/model~Model model} using the `linkHref` attribute. [Manual link decorators](#adding-attributes-to-links-using-the-ui-manual-decorators) are represented in the model using text attributes corresponding to their names, as configured in {@link module:link/link~LinkConfig#decorators `config.link.decorators`}.
 
 <info-box>

+ 1 - 0
packages/ckeditor5-link/lang/contexts.json

@@ -2,6 +2,7 @@
 	"Unlink": "Toolbar button tooltip for the Unlink feature.",
 	"Link": "Toolbar button tooltip for the Link feature.",
 	"Link URL": "Label for the URL input in the Link URL editing balloon.",
+	"Link image": "Label for the image link button.",
 	"Edit link": "Button opening the Link URL editing balloon.",
 	"Open link in new tab": "Button opening the link in new browser tab.",
 	"This link has no URL": "Label explaining that a link has no URL set (the URL is empty).",

+ 4 - 0
packages/ckeditor5-link/lang/translations/ar.po

@@ -28,6 +28,10 @@ msgctxt "Label for the URL input in the Link URL editing balloon."
 msgid "Link URL"
 msgstr "رابط عنوان"
 
+msgctxt "Label for the image link button."
+msgid "Link image"
+msgstr ""
+
 msgctxt "Button opening the Link URL editing balloon."
 msgid "Edit link"
 msgstr "تحرير الرابط"

+ 4 - 0
packages/ckeditor5-link/lang/translations/ast.po

@@ -28,6 +28,10 @@ msgctxt "Label for the URL input in the Link URL editing balloon."
 msgid "Link URL"
 msgstr "URL del enllaz"
 
+msgctxt "Label for the image link button."
+msgid "Link image"
+msgstr ""
+
 msgctxt "Button opening the Link URL editing balloon."
 msgid "Edit link"
 msgstr ""

+ 4 - 0
packages/ckeditor5-link/lang/translations/az.po

@@ -28,6 +28,10 @@ msgctxt "Label for the URL input in the Link URL editing balloon."
 msgid "Link URL"
 msgstr "Linkin URL"
 
+msgctxt "Label for the image link button."
+msgid "Link image"
+msgstr ""
+
 msgctxt "Button opening the Link URL editing balloon."
 msgid "Edit link"
 msgstr "Linki redaktə et"

+ 4 - 0
packages/ckeditor5-link/lang/translations/cs.po

@@ -28,6 +28,10 @@ msgctxt "Label for the URL input in the Link URL editing balloon."
 msgid "Link URL"
 msgstr "URL odkazu"
 
+msgctxt "Label for the image link button."
+msgid "Link image"
+msgstr ""
+
 msgctxt "Button opening the Link URL editing balloon."
 msgid "Edit link"
 msgstr "Upravit odkaz"

+ 4 - 0
packages/ckeditor5-link/lang/translations/da.po

@@ -28,6 +28,10 @@ msgctxt "Label for the URL input in the Link URL editing balloon."
 msgid "Link URL"
 msgstr "Link URL"
 
+msgctxt "Label for the image link button."
+msgid "Link image"
+msgstr ""
+
 msgctxt "Button opening the Link URL editing balloon."
 msgid "Edit link"
 msgstr "Redigér link"

+ 4 - 0
packages/ckeditor5-link/lang/translations/de.po

@@ -28,6 +28,10 @@ msgctxt "Label for the URL input in the Link URL editing balloon."
 msgid "Link URL"
 msgstr "Link Adresse"
 
+msgctxt "Label for the image link button."
+msgid "Link image"
+msgstr ""
+
 msgctxt "Button opening the Link URL editing balloon."
 msgid "Edit link"
 msgstr "Link bearbeiten"

+ 4 - 0
packages/ckeditor5-link/lang/translations/el.po

@@ -28,6 +28,10 @@ msgctxt "Label for the URL input in the Link URL editing balloon."
 msgid "Link URL"
 msgstr "Διεύθυνση συνδέσμου"
 
+msgctxt "Label for the image link button."
+msgid "Link image"
+msgstr ""
+
 msgctxt "Button opening the Link URL editing balloon."
 msgid "Edit link"
 msgstr ""

+ 4 - 0
packages/ckeditor5-link/lang/translations/en-au.po

@@ -28,6 +28,10 @@ msgctxt "Label for the URL input in the Link URL editing balloon."
 msgid "Link URL"
 msgstr "Link URL"
 
+msgctxt "Label for the image link button."
+msgid "Link image"
+msgstr ""
+
 msgctxt "Button opening the Link URL editing balloon."
 msgid "Edit link"
 msgstr "Edit link"

+ 4 - 0
packages/ckeditor5-link/lang/translations/en-gb.po

@@ -28,6 +28,10 @@ msgctxt "Label for the URL input in the Link URL editing balloon."
 msgid "Link URL"
 msgstr "Link URL"
 
+msgctxt "Label for the image link button."
+msgid "Link image"
+msgstr ""
+
 msgctxt "Button opening the Link URL editing balloon."
 msgid "Edit link"
 msgstr "Edit link"

+ 4 - 0
packages/ckeditor5-link/lang/translations/en.po

@@ -28,6 +28,10 @@ msgctxt "Label for the URL input in the Link URL editing balloon."
 msgid "Link URL"
 msgstr "Link URL"
 
+msgctxt "Label for the image link button."
+msgid "Link image"
+msgstr "Link image"
+
 msgctxt "Button opening the Link URL editing balloon."
 msgid "Edit link"
 msgstr "Edit link"

+ 4 - 0
packages/ckeditor5-link/lang/translations/eo.po

@@ -28,6 +28,10 @@ msgctxt "Label for the URL input in the Link URL editing balloon."
 msgid "Link URL"
 msgstr "URL de la ligilo"
 
+msgctxt "Label for the image link button."
+msgid "Link image"
+msgstr ""
+
 msgctxt "Button opening the Link URL editing balloon."
 msgid "Edit link"
 msgstr ""

+ 4 - 0
packages/ckeditor5-link/lang/translations/es.po

@@ -28,6 +28,10 @@ msgctxt "Label for the URL input in the Link URL editing balloon."
 msgid "Link URL"
 msgstr "URL del enlace"
 
+msgctxt "Label for the image link button."
+msgid "Link image"
+msgstr ""
+
 msgctxt "Button opening the Link URL editing balloon."
 msgid "Edit link"
 msgstr "Editar enlace"

+ 4 - 0
packages/ckeditor5-link/lang/translations/et.po

@@ -28,6 +28,10 @@ msgctxt "Label for the URL input in the Link URL editing balloon."
 msgid "Link URL"
 msgstr "Lingi URL"
 
+msgctxt "Label for the image link button."
+msgid "Link image"
+msgstr ""
+
 msgctxt "Button opening the Link URL editing balloon."
 msgid "Edit link"
 msgstr "Muuda linki"

+ 4 - 0
packages/ckeditor5-link/lang/translations/eu.po

@@ -28,6 +28,10 @@ msgctxt "Label for the URL input in the Link URL editing balloon."
 msgid "Link URL"
 msgstr "Estekaren URLa"
 
+msgctxt "Label for the image link button."
+msgid "Link image"
+msgstr ""
+
 msgctxt "Button opening the Link URL editing balloon."
 msgid "Edit link"
 msgstr ""

+ 4 - 0
packages/ckeditor5-link/lang/translations/fa.po

@@ -28,6 +28,10 @@ msgctxt "Label for the URL input in the Link URL editing balloon."
 msgid "Link URL"
 msgstr "نشانی اینترنتی پیوند"
 
+msgctxt "Label for the image link button."
+msgid "Link image"
+msgstr ""
+
 msgctxt "Button opening the Link URL editing balloon."
 msgid "Edit link"
 msgstr "ویرایش پیوند"

Некоторые файлы не были показаны из-за большого количества измененных файлов