thumbnail

Gutenbergのリッチテキストの既知の問題

経緯

https://not-wiz.net/richtext-class/

こちらの記事の現象が開発中のプラグインでも発生したため原因を調査しました。

現象

  1. クラスとタグ名を指定して registerFormatType でフォーマットタイプを登録
  2. ビジュアルエディタのツールボタン等から登録したフォーマットタイプを適用
  3. コードエディタでクラス名を変更または削除
  4. ビジュアルエディタに戻る
  5. 同じタグ名で登録された無関係のフォーマットタイプが適用されているような表示になる
  6. フロントでは5の適用は起こらない

原因

原因はフォーマットタイプの検索時に以下のような実装になっているためです。

  1. クラス名がある場合にクラス名で登録されたフォーマットタイプから検索
  2. 1で見つからなかった場合、タグ名のみで検索

本来は2の検索時にクラス名がないものに限るべきだと思います。

影響

クラス名の付け外しによって見た目を変えるプラグインすべてでおかしな挙動になる可能性があります。

とくに attributes に値が入っていることを前提としたコードになっている場合に、その attributes を持たない無関係のフォーマットが適用されるとエラーが発生します。

RichTextの開発者のプラグインで実際にエラーを確認することが可能です。

対応

とりあえずIssueで報告しました。

2019/3/27 時点での状況

RichTextの開発者のプラグインでも問題が発生するのですが、まだバグとして認識されていないようです。。。

2019/4/22 追記

別のバグの修正によってこのバグも修正されました。

WordPress5.2 にも反映されるようです。