OpenPress

@open-press/core/mdx

MDX ソース

MDX ソース登録は、プロパティとして <Press> に渡されます。エンジンはソースを読み取ってコンテンツファイルを検出し、ブロックをコンパイルし、それらを MdxArea スロットに送ります。そこから、原稿補助ツール、検索/置換、およびコメントマークアップライターに提供されます。

mdxSource インターフェースは、MDX コンテンツディレクトリを外部に登録する機能を提供します。システムはこのレジストリを通じて解析ターゲットを収集し、コンパイルされたブロックデータを MdxArea、検索エンジン、および編集エンドポイントに分配します。

1.0 契約: ソース宣言は <Press sources={...}> の必須プロパティです。<Press> コンポーネントリファレンスを参照してください。

Config Impl

# <Press sources>

`<Press>` で複数のコンテンツデータストリームを宣言し、各データストリームにグローバルで一意の `id` を割り当て、他のドキュメントコンポーネントが消費またはアドレス指定できるようにします。

<Press sources={[
  mdxSource({ id: "story", preset: "section-folders", root: "chapters" }),
]}>

例:複数データソースの登録

<Press
  title="Paper"
  page="a4"
  sources={[
    mdxSource({ id: "story", preset: "section-folders", root: "report/chapters" }),
    mdxSource({ id: "appendix", preset: "section-folders", root: "report/appendix" }),
  ]}
>
  <Sections source="story" />
  <Sections source="appendix" />
</Press>
Function Impl

# mdxSource

ファクトリ関数。`<Press>` 内部処理用に標準化されたデータソース登録オブジェクトを返します。

import { mdxSource } from "@open-press/core/mdx";
mdxSource(options: MdxSourceOptions): SourceRegistration

オプション (MdxSourceOptions)

Name Type Default Description
id required string 識別子。``、``、および検索/置換 CLI に依存されます。
preset required "section-folders" | "file-list" `section-folders` は規則的なディレクトリ構造のスキャンを採用し、`file-list` は明示的に提供された `files` リストのスキャンに依存します。
root string `press/` に対する相対的な検索ルートディレクトリ (例: `report/chapters`)。`file-list` モードを使用する場合は無視されます。
files string[] `preset: "file-list"` を指定した場合の具体的な MDX ファイルの相対パス配列。

例:規則的なディレクトリの解析 (section-folders)

press/
  report/
    chapters/
      01-intro/
        content/
          01-overview.mdx
          02-context.mdx

システムは 01-intro/content/ 内のファイルを辞書順に連結し、単一の章ブロックストリームにマージします。

例:明示的なファイルリスト (file-list)

mdxSource({
  id: "story",
  preset: "file-list",
  files: ["intro.mdx", "results.mdx", "conclusion.mdx"],
});

コンテンツのコンパイル制限 (ブロックのみのルール)

ソース MDX は ブロックのみ (Block-only) のルールに厳密に従う必要があります。レンダラーは正確なブロックの測定とページ分割を実行する必要があるため、MDX 内の JSX タグは最上位のブロック要素である必要があり、インライン (inline) での JSX 宣言の混在は固く禁じられています。

サポートされている記述方法

<TableCaption>Daily ridership</TableCaption>

| Day | Riders |
| --- | --- |
| Mon | 1,204 |

拒否される記述方法 (コンパイルエラーがスローされます)

これは <Highlight>インラインタグ</Highlight> を含むテキストです。

依存関係とシステム統合

ソース登録により、以下のシステム機能が直接ロック解除されます:

  • 動的レンダリング<MdxArea>chainId を利用してこのソースとインターフェースを取ります。
  • 自動ページ分割<Sections><Toc> はソースの目次階層の反復処理に依存してタスクを実行します。
  • グローバル操作:CLI の searchreplacemdxSource で登録されたファイルセットにのみ作用します。
  • マークアップシステム:Workbench の source-edit エンドポイントと @openpress-comment マークアップライターは、ソースマッピングテーブルに基づいてファイルの変更位置をロックします。

コンポーネント (components/)、メディア (media/)、およびテーマ (theme/) などのリソースディレクトリはページ分割レンダリングメカニズムに関与しないため、sources の登録範囲には含まれず、代わりに <Press> の他のプロパティや規則によって処理されます。