/**
 * インラインツールバー フォーマット統合エクスポート
 * 
 * 各フォーマットは完全独立 - 追加・変更・削除が他に影響しない
 */

// 個別フォーマットのインポート
import boldFormat from './boldFormat';
import italicFormat from './italicFormat';
import highlightFormat from './highlightFormat';
import linkFormat from './linkFormat';

// 利用可能な全フォーマット
export const availableFormats = {
  bold: boldFormat,
  italic: italicFormat,
  highlight: highlightFormat,
  link: linkFormat,
};

// フォーマット配列（順序指定用）
export const formatOrder = ['bold', 'italic', 'link', 'highlight'];

// フォーマットキーの配列
export const formatKeys = Object.keys(availableFormats);

// 指定されたフォーマットのみを取得
export const getFormats = (enabledFormats = []) => {
  return enabledFormats
    .filter(key => availableFormats[key])
    .map(key => availableFormats[key]);
};

// フォーマット検出の一括実行
export const detectActiveFormats = (range) => {
  const activeFormats = {};
  
  Object.keys(availableFormats).forEach(key => {
    const format = availableFormats[key];
    activeFormats[key] = format.detect(range);
  });
  
  return activeFormats;
};

// 個別フォーマットの再エクスポート（直接使用する場合）
export { default as boldFormat } from './boldFormat';
export { default as italicFormat } from './italicFormat';
export { default as highlightFormat } from './highlightFormat';
export { default as linkFormat } from './linkFormat';

// デフォルトエクスポート
export default availableFormats;