吹き出しコンポーネントが必要になって作った。
作ったもの
デモ
スクリーンショット
使い方
インストール
npm i react-balloon
サンプル
以下のように使用する。
<Balloon start={{ box: { x: 100, y: 100, width: 300, height: 105 }, destination: { x: 400 , y: 400 }, }} style={{ borderRadius: '5px' }} backgroundColor="#ECF0F1" > Hello, World!! </Balloon>
このコンポーネントについて
吹き出し部分をSVGで描画し、ボックスとは独立して吹き出しの指し先も動かせるようにした。SVGはこれまでやろうやろうと思いながら触れてなかったけど、reactとの相性はいい部類なんじゃないかって気がしてきている。
今回は以下のようにSVGを書いている
<svg width="100%" height="100%" style={{ zIndex }}> <path d={ `M ${base[0].x } ${ base[0].y } Q ${ control.x } ${ control.y } ${ destination.x } ${ destination.y } Q ${ control.x } ${ control.y } ${ base[1].x } ${ base[1].y}` } fill={ backgroundColor } stroke={ backgroundColor } strokeWidth={ 1 } /> </svg>
何やらSMILがdeprecatedっぽいので、SVGモーフィング辺りをがんばって解決できればかなり楽しいコンポーネントが作れそうな気がしてる。