プラグインの作成 4.0.0
プラグイン用の軽量な仕様と API を提供しています。これは、コードのハイライトやMarkdownのようなデフォルトのプラグインで使用されていますが、独自のプラグインを作成するためにも使用できます。
プラグインの定義
プラグインは、以下のプロパティを含むオブジェクトです。
| プロパティ | 値 |
|---|---|
| id 文字列 | プラグインの一意の ID。これは、 `Reveal.getPlugin(<id>)` を介してプラグインインスタンスを取得するために使用できます。 |
| init 関数 | プラグインを実行する必要があるときに呼び出されるオプションの関数。1つの引数、つまりプラグインが登録されたプレゼンテーションインスタンスへの参照を使用して呼び出されます。 init 関数は、オプションで Promise を返すことができます。Promise が返された場合、reveal.js はそれが解決されるまで待ってから、プレゼンテーションの初期化を完了し、ready イベントを発生させます。 |
| destroy 関数 | このプラグインが登録されている reveal.js インスタンスが初期化解除されるときに呼び出されるオプションの関数。 |
T キーが押されたときにプレゼンテーション内のすべてのスライドをシャッフルするプラグインの例を次に示します。新しいプラグインオブジェクトを返す関数をエクスポートしていることに注意してください。これは、同じページに複数のプレゼンテーションインスタンスが存在する可能性があり、それぞれに独自のプラグインインスタンスが必要なためです。
// toaster.js
export default () => ({
id: 'toaster',
init: (deck) => {
deck.addKeyBinding({ keyCode: 84, key: 'T' }, () => {
deck.shuffle();
console.log('🍻');
});
},
});プラグインの登録
プラグインは、設定オプションの `plugins` 配列に含めることで登録されます。また、 `Reveal.registerPlugin( Plugin )` を使用して実行時にプラグインを登録することもできます。
import Reveal from 'dist/reveal.esm.js';
import Toaster from 'toaster.js';
Reveal.initialize({
plugins: [Toaster],
});非同期プラグイン
reveal.js の初期化が完了する前にプラグインが非同期コードを実行する必要がある場合は、Promise を返すことができます。初期化を 3 秒間遅延させるプラグインの例を次に示します。
let WaitForIt = {
id: 'wait-for-it',
init: (deck) => {
return new Promise((resolve) => setTimeout(resolve, 3000));
},
};
Reveal.initialize({ plugins: [WaitForIt] }).then(() => {
console.log('Three seconds later...');
});