Skip to content

Latest commit

 

History

History
39 lines (24 loc) · 1.89 KB

File metadata and controls

39 lines (24 loc) · 1.89 KB

コードを表示するコンポーネント

使い方

MDX内で記述したコードフェンスは src/pages/[...slug].astro 内の設定により、この<CodeBlock>コンポーネントに変換されます。

```typescript
// コード
```

MDX内で直接使用する場合

CodeBlock なら @/components/article/CodeBlock.astro、renderingComponent を指定したいなら @/components/article/DesignPatternCodeBlockimport してください。

この Astro コンポーネントには info string のパースや、データの取得、アイランドとして読み込む設定などが含まれています。

レンダリングの分岐

指定されたprops(MDX内で"```"に続いて指定されたinfo string)により、どのようにレンダリングするかを分岐しています。

editableが指定された場合

react-liveを使って、ライブエディタをレンダリングします。コードの上には実行結果が表示され、コードの編集が反映されます。

さらに、renderingComponentが指定されている場合は、デザインパターンのStorybookへのリンクも表示します。

editableが指定されていない場合

シンタックスハイライトを適用した(静的な)コードブロックを表示します。

ライブエディタ

iframe内にreact-liveが提供するライブエディタを表示します。このフレーム内にはsmarthr-normalize-cssが適用されています。

react-frame-component

iframeの表示にはreact-frame-componentを利用しています。

TypeScript

ライブエディタでは、コードをTypeScriptとしてトランスパイルするようになっています。