以前紹介したように、大幅に進化した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に組み込むことができます。