Blocklyを使っていて「ツールボックスからブロックをドラッグした後もフライアウトを表示させたままにしたい!」と思った場合は以下のようにすると開きっぱなしにできます。基本的には個人的な備忘録なのでお試しは自己責任でお願いします。
前提条件
今から説明する方法はBlocklyがビルドできる状態である必要があります。ビルド環境はBlockly公式ドキュメントか以前の投稿にて確認してください。
目標
標準ではToolboxからブロックをドラッグするとフライアウトが閉じます。これを自動で閉じないようにしたいと思います。つまり、以下のような表示を維持する事が目標です。
Let's hack
目的のソースコードは"/blockly/core/flyout.js"です。このファイルの100行目あたりに臭うコードがあります。
/**
* Does the flyout automatically close when a block is created?
* @type {boolean}
*/
Blockly.Flyout.prototype.autoClose = true;
コメントには「ブロックが作られた時にフライアウトを自動的に閉じるかい?」って書かれています。こいつをfalseにしてやりましょう。
ビルドして動作確認すると、ブロックをドラッグしてもフライアウトが閉じなくなりました。
でも…閉じない…閉じたいんですけど!ってときはツールボックスの選択中のカテゴリをクリックすると閉じます。上図の場合であれば"Logic"をクリックすると閉じます。
まとめ
本来であればユーザーが自由に設定を切り替えられるのが理想でしょう。フラグをon/offできるViewを作ればビルドせずとも動的に切り替えられる…かもしれません。すみません、試してません…。