import type { BlockDefinition } from '../../types';
import paragraph from './paragraph';
import heading1 from './heading1';
import heading2 from './heading2';
import heading3 from './heading3';
import heading4 from './heading4';
import heading5 from './heading5';
import heading6 from './heading6';
import bulletList from './bulletList';
import numberedList from './numberedList';
import blockquote from './blockquote';
import codeBlock from './codeBlock';
import image from './image';
import file from './file';
import linkButton from './linkButton';
import table from './table';
import columns1 from './columns1';
import columns2 from './columns2';
import columns3 from './columns3';
import horizontalRule from './horizontalRule';

/**
 * フロントエンドが扱えるブロックタイプの全定義。
 *
 * 各 type の静的メタ（label / icon / 等）と、useBlockMenus.resolveCommands が
 * CommandItem に差し込むランタイム関数 (createActions) を 1 箇所にまとめている。
 *
 * - キーの集合 = フロントが action を実装している type の集合
 * - PHP からこのマスターは参照しない（admin の入力値だけが PHP から送られる）
 * - 新ブロックを追加する場合は config/blocks/{type}.ts を作って、この index に追記するだけ
 */
const BLOCK_DEFINITIONS: Record<string, BlockDefinition> = {
  paragraph,
  heading1,
  heading2,
  heading3,
  heading4,
  heading5,
  heading6,
  bulletList,
  numberedList,
  blockquote,
  codeBlock,
  image,
  file,
  linkButton,
  table,
  horizontalRule,
  columns1,
  columns2,
  columns3,
};

export default BLOCK_DEFINITIONS;
