diff --git a/README.md b/README.md
index 45857423c..4570bf34e 100644
--- a/README.md
+++ b/README.md
@@ -23,16 +23,13 @@ Trix is built with established web standards, notably [Custom Elements](https://
Trix comes bundled in ESM and UMD formats and works with any asset packaging system.
-The easiest way to start with Trix is including it from an npm CDN in the `
` of your page and then calling `Trix.start()` to initialize the library:
+The easiest way to start with Trix is including it from an npm CDN in the `` of your page:
```html
…
-
```
@@ -43,9 +40,9 @@ Alternatively, you can install the npm package and import it in your application
```js
import Trix from "trix"
-// Change Trix.config if you need
-
-Trix.start()
+document.addEventListener("trix-before-initialize", () => {
+ // Change Trix.config if you need
+})
```
## Creating an Editor
@@ -354,7 +351,7 @@ element.editor.loadJSON(JSON.parse(localStorage["editorState"]))
The `` element emits several events which you can use to observe and respond to changes in editor state.
-* `trix-before-initialize` fires when the `` element is attached to the DOM just before Trix installs its `editor` object.
+* `trix-before-initialize` fires when the `` element is attached to the DOM just before Trix installs its `editor` object. If you need to use a custom Trix configuration you can change `Trix.config` here.
* `trix-initialize` fires when the `` element is attached to the DOM and its `editor` object is ready for use.
diff --git a/assets/index.html b/assets/index.html
index 23768172d..e4cf73b85 100644
--- a/assets/index.html
+++ b/assets/index.html
@@ -68,8 +68,6 @@
}, 30)
}
});
-
- Trix.start()
diff --git a/src/test/test_helper.js b/src/test/test_helper.js
index b68def323..438b9c7b6 100644
--- a/src/test/test_helper.js
+++ b/src/test/test_helper.js
@@ -31,5 +31,3 @@ document.head.insertAdjacentHTML(
#qunit { position: relative !important; }
`
)
-
-Trix.start()
diff --git a/src/trix/trix.js b/src/trix/trix.js
index 42fe0ea22..96777a9b3 100644
--- a/src/trix/trix.js
+++ b/src/trix/trix.js
@@ -10,16 +10,6 @@ import * as operations from "trix/operations"
import * as elements from "trix/elements"
import * as filters from "trix/filters"
-let started = false
-
-function start() {
- if (!started) {
- customElements.define("trix-toolbar", elements.TrixToolbarElement)
- customElements.define("trix-editor", elements.TrixEditorElement)
- started = true
- }
-}
-
const Trix = {
VERSION: version,
config,
@@ -30,10 +20,20 @@ const Trix = {
observers,
operations,
elements,
- filters,
- start
+ filters
+}
+
+function start() {
+ if (!customElements.get("trix-toolbar")) {
+ customElements.define("trix-toolbar", elements.TrixToolbarElement)
+ }
+
+ if (!customElements.get("trix-editor")) {
+ customElements.define("trix-editor", elements.TrixEditorElement)
+ }
}
window.Trix = Trix
+setTimeout(start, 0)
export default Trix