editor-js / document-model

❗️WIP❗️
Apache License 2.0
10 stars 2 forks source link

(block-tool-adapter): optimise model listeners count #72

Open neSpecc opened 5 months ago

neSpecc commented 5 months ago

Right now each call of the attachInput() lead adding the new event listener to the model. Then, handler will filter-our other inputs.

  public attachInput(key: DataKey, input: HTMLElement): void {

    // ... 

    this.#model.addEventListener(EventType.Changed, (event: ModelEvents) => this.#handleModelUpdate(event, input, key, caretAdapter));
  }

We know that Tool can have many inputs (e.g. Table or Nested List). So it would be better to add a single event listener in the adapter's constructor. And then, find and handle events related to attached inputs.

Probably, we will need to store inputs in a private property.