/** * 動的入出力ノードのキャンバス上サイズを内容に合わせる。 */ /** * 出力スロットのカスタム座標を外し、配列順と描画位置のずれを防ぐ。 * * @param {object} node */ export function normalizeOutputSlotLayout(node) { for (const output of node.outputs ?? []) { delete output.pos if (output.hidden) { output.hidden = false } } } /** * computeSize() の結果でノード枠を更新(出力増減後に接続点が枠外へ出るのを防ぐ)。 * * @param {object} node */ export function syncNodeSizeToContent(node) { if (node.removed || typeof node.computeSize !== "function") { return } normalizeOutputSlotLayout(node) const size = node.computeSize() if (!size?.length) { return } const current = node.size ?? [0, 0] const nextW = size[0] const nextH = size[1] if (current[0] !== nextW || current[1] !== nextH) { node.setSize([nextW, nextH]) node.graph?.setDirtyCanvas?.(true, false) } }