Add the documentation for CKEditor5 plugins
authorAlexander Ebert <ebert@woltlab.com>
Thu, 14 Sep 2023 13:10:09 +0000 (15:10 +0200)
committerAlexander Ebert <ebert@woltlab.com>
Thu, 14 Sep 2023 13:10:09 +0000 (15:10 +0200)
docs/javascript/components_ckeditor5.md

index 751cd77038db6bb19564c70164b54e6ffbe3aaa4..e96c7d09db62467742b2d86be6c2771e645ba33f 100644 (file)
@@ -85,3 +85,24 @@ listenToCkeditor(element).submitOnEnter(({ ckeditor, html }) => {
   // Do something with the resulting `html`.
 });
 ```
+
+## Creating Plugins
+
+CKEditor 5 was designed to be compiled as a single bundle, relying a lot on identity checks to access and associate data.
+Any extra plugin that should be added to the editor must be built using the modules exposed through the `setupConfiguration()` event otherwise the identity checks will fail.
+
+```ts
+listenToCkeditor(element).setupConfiguration(({ configuration, CKEditor5 }) => {
+  class FooPlugin extends CKEditor5.Core.Plugin {
+    static get pluginName() {
+      return "FooPlugin";
+    }
+
+    init(): void {
+      // …
+    }
+  }
+
+  configuration.extraPlugins.push(FooPlugin);
+});
+```