API リファレンス
@clepit/core からの公開エクスポート。以下の各シンボルは、型付きシグネチャと最小限の使用例を提供します。
Editor
コアエディタークラスです。Editor は create(メインファクトリー)と destroy の 2 つのパブリックスタティックメソッドを持ちます。create() メソッドは EditorAPI オブジェクトを返し、エディターのマウント後にすべてのインスタンスメソッドにアクセスできます。
| メソッド | シグネチャ | 説明 |
|---|---|---|
| Editor.create | Editor.create(config: EditorConfig): EditorAPI | 新しいエディターインスタンスを作成し、指定された containerId を持つ DOM 要素にマウントします。 |
| Editor.destroy | Editor.destroy(containerId: string): void | EditorAPI オブジェクトの destroy() メソッドはこのインスタンスに対して Editor.destroy() を呼び出します。 |
| メソッド | シグネチャ | 説明 |
|---|---|---|
| data.extract | data.extract(): EditorData | エディターインスタンスから現在のブロックデータを JSON セーフな EditorData として抽出します。 |
| data.set | data.set(data: EditorData): void | ブロックリスト全体を新しいデータペイロードで置き換えます。完全な再レンダリングをトリガーします。 |
| data.clear | data.clear(): void | ブロックのコンテンツと保存された状態データの両方をクリアします。 |
| data.clearContent | data.clearContent(): void | ブロックのみを削除し、ストアのデータはそのまま残します。 |
| data.clearStorage | data.clearStorage(): void | ストアデータのみをクリアし、現在のブロックはそのままにします。 |
| blocks.insert | blocks.insert<T extends BlockToolType>(type: T, data: Block<T>['data'], index: number): HTMLElement | null | 指定した index にブロックを挿入します。対象のブロックタイプと同じデータ構造を受け付けます。 |
| blocks.convert | blocks.convert(blockId: string, newType: BlockToolType): void | ブロックをその場で新しいタイプに変換します。 |
| blocks.remove | blocks.remove(index: number): void | 指定した index にあるブロックを削除します。 |
| blocks.move | blocks.move(fromIndex: number, toIndex: number): void | ブロックをあるインデックスから別のインデックスに移動します。 |
| blocks.update | blocks.update<T extends BlockToolType>(blockId: string, data: Block<T>['data']): void | 既存のブロックのデータをその場で更新します。タイプは変わりません。 |
| blocks.get | blocks.get(blockId: string): EditorData['blocks'][number] | null | ID でブロックを取得します。見つからない場合は null を返します。 |
| blocks.getAll | blocks.getAll(): EditorData['blocks'] | すべてのブロックのデータを配列として返します。 |
| blocks.count | blocks.count(): number | エディター内のブロック数を返します。 |
| focus | focus(): void | フォーカスをエディターに移し、最初のブロックにフォーカスします。 |
| blur | blur(): void | エディター内のアクティブなフォーカスをすべて取り除きます。 |
| destroy | destroy(): void | EditorAPI オブジェクトの destroy() メソッドはこのインスタンスに対して Editor.destroy() を呼び出します。 |
| selection.get | selection.get(): Selection | null | ウィンドウ選択オブジェクトまたは null を返します。 |
| selection.set | selection.set(selection: Selection): void | ウィンドウ選択を提供された Selection オブジェクトに設定します。 |
| selection.clear | selection.clear(): void | ウィンドウ選択からすべての範囲を削除します。 |
| ui.showBlockMenu | ui.showBlockMenu(block: HTMLElement): void | 指定されたブロック DOM 要素に対してブロックタイプメニューを表示します。 |
| ui.hideBlockMenu | ui.hideBlockMenu(): void | ブロックタイプメニューが開いている場合に非表示にします。 |
| ui.showToolbar | ui.showToolbar(x: number, y: number): void | 指定された x、y ビューポート座標でインラインツールバーを表示します。 |
| ui.hideToolbar | ui.hideToolbar(): void | インラインツールバーが表示されている場合に非表示にします。 |
| view.getCurrentView | view.getCurrentView(containerId: string): EditorView | null | 指定された containerId の現在のビュー(edit、preview、または json)を返します。 |
| view.switchView | view.switchView(containerId: string, view: EditorView): void | エディターを指定されたビューに切り替えます:edit、preview、または json。 |
典型的な使用例
TypeScript
import { Editor } from '@clepit/core';
const editor = Editor.create({
containerId: 'editor',
theme: 'auto',
placeholder: 'Start writing...',
minHeight: 300,
});
// Insert a block
editor.blocks.insert('paragraph', { html: 'Hello world' }, 0);
// Extract data
const data = editor.data.extract();
// Switch view
editor.view.switchView('editor', 'preview');
// Tear down
editor.destroy();Renderer
保存されたブロックデータを DOM 要素内の読み取り専用 HTML に変換するクラスです。このクラスには 1 つのパブリックスタティックメソッドがあります:render()。
| メソッド | シグネチャ | 説明 |
|---|---|---|
| Renderer.render | Renderer.render(config: RendererConfig): HTMLElement | 保存されたブロック JSON を読み取り専用の HTML としてコンテナにレンダリングします。編集機能なしでコンテンツを表示したい場所であればどこでも使用できます。 |
典型的な使用例
TypeScript
import { Renderer } from '@clepit/core';
Renderer.render({
containerId: 'output',
data,
theme: 'auto',
margins: { bottom: 12, top: 0 },
});StyleManager
テーマシステムを管理する集中クラスです。コンシューマー向けに 3 つの便利なパブリックスタティックメソッドを提供します:subscribe(OS レベルのテーマ変更用)、getResolvedTheme(現在の OS テーマを読み取るため)、injectStyles(カスタム CSS を注入するため)。
| メソッド | シグネチャ | 説明 |
|---|---|---|
| StyleManager.subscribe | StyleManager.subscribe(cb: (theme: 'light' | 'dark') => void): () => void | 実行時のテーマトークンの変更を購読します。theme または themeOverrides が変化するたびにリスナーが発火します。 |
| StyleManager.getResolvedTheme | StyleManager.getResolvedTheme(): 'light' | 'dark' | 現在の OS テーマ("light" または "dark")を読み取ります。matchMedia が利用できない場合は "light" を返します。 |
| StyleManager.injectStyles | StyleManager.injectStyles(styleId: string, styles: string): boolean | CSS 文字列を document.head に注入します(一意の styleId を使用)。既に存在する場合は false、それ以外は true を返します。 |
典型的な使用例
TypeScript
import { StyleManager } from '@clepit/core';
// React to OS theme changes
const unsubscribe = StyleManager.subscribe(theme => {
console.log('OS theme:', theme); // 'light' | 'dark'
});
// Read current OS theme
const current = StyleManager.getResolvedTheme();
// Inject custom CSS once
StyleManager.injectStyles('my-overrides', `
.clepit-editor { font-family: 'Inter', sans-serif; }
`);
// Unsubscribe when done
unsubscribe();