以前紹介したように、大幅に進化したFont Awesome 5ですが、picodomと組み合わせてみることにしました(というより、もともと<i class="fa..."></i>
でpicodom中に埋め込んでいたアイコンもアップデートの必要が出てきたので考えないといけなくなった、というのが正直なところですが)。
Font Awesome側のデータ形式
JavaScriptライブラリとしてFont Awesomeを使う場合、アイコンのデータは3通りの方法で取得できます(リファレンス)。
- HTMLテキスト(
.html
) - DOMノード(
.node
) - 仮想DOM向けのデータ構造(
.abstract
)
この前のRiotではDOMノードを流し込みましたが、せっかく仮想DOMのpicodomで組む以上は、.abstract
でどうにかしたいものです。
あれ、なんかなかったっけ…?
ただ、この.abstract
のデータ構造は、tag
、attributes
、children
の3つからなっていること、そしてstyle
がベタ書きになっていることなどがあり、そのままpicodom.h
に投げるのも難しそうです。
変換コードを書かないといけないのかな…と思っていたところ、公式のReactバインディングがあることに気づきました。picodomにもReactのJSXが流用できるように、React.createElement
に渡す引数と同じものをpicodom.h
に流せれば、(細かい違いはあるかもしれませんが)picodomのVDOMを生成できることになります。
FortAwesome/react-fontawesome
を調べていくと、仮想DOMの変換関数を発見しました。これを利用すれば、picodomでもFont Awesomeを仮想DOMに組み込むことができます。