import { configureMediaRuntime } from '@ablogcms/media/runtime';
import { getGlobalFillBridge } from '@ablogcms/plugins/core';
import { createAcmsMediaTransport } from './api/create-transport';

/**
 * `@ablogcms/media` の実行時依存（データ取得・Fill ブリッジ）をコア実装で満たす。
 *
 * `@ablogcms/media` は webpack バンドル内で単一モジュールとして共有されるため
 * （管理画面のメディアライブラリ・リッチエディタ／ブロックエディタのメディア挿入・
 * バナーエディタ・ナビゲーションエディタ等、`@ablogcms/media` の各コンポーネントを
 * 使う箇所すべてが同じインスタンスを参照する）、admin バンドルの起動時にこの関数を
 * 一度呼ぶだけで全消費箇所に行き渡る。呼び出し側で個別に transport を渡す必要はない。
 *
 * `@ablogcms/media` は `@ablogcms/plugins/core` に直接依存しない設計のため、グローバル
 * Fill ブリッジ（`getGlobalFillBridge()`）はここで取得してコア側から注入する
 * （MediaModal を開く 8 経路すべてで `media.edit-modal.*` 等の Slot をページ横断で共有するため）。
 *
 * 呼び出しは、`@ablogcms/media` のコンポーネントが最初にマウントされるより前
 * （`admin.js` の `ACMS.Ready` コールバック冒頭）で行うこと。
 */
export function bootstrapMediaRuntime(): void {
  configureMediaRuntime(createAcmsMediaTransport(), {}, getGlobalFillBridge());
}
