picola
ドキュメント

フレームワーク非依存コア

picola のゼロ依存のコアを直接操作したり、任意のフレームワーク向けのアダプタを構築したりできます。

コアはジェスチャー認識、ズーム / パンの物理演算、そしてトランスフォームのレンダリングを担い、アダプタ が DOM 構造を担います。Svelte アダプタもそうしたアダプタの一つです。コアを直接操作することも、その上に任意の別のフレームワーク向けのアダプタを構築することもできます。

import { createViewer } from 'picola';
const viewer = createViewer({ slides, startIndex: 0 });
viewer.attach({ viewport, track, backdrop });
viewer.on('change', ({ index }) => console.log(index));
viewer.open(0);

Viewer インスタンス

createViewer(options)Viewer を返します。DOM 構造は attach() を通じて提供し、コアがインタラクションとレンダリングを引き継ぎます。

Member 説明
attach({ viewport, track, backdrop }) コアを DOM 要素に接続します。
open(index) 指定したスライドでビューワーを開きます。
close() 閉じるトランジションを開始します。
next() / prev() 隣接するスライドへ移動します。
goTo(index) 指定したスライドへ移動します。
updateSlide(index, patch) スライドをその場で更新します(例: フル解像度のソースに差し替える)。
setSlides(slides, index?) ズームを保持し、インデックスをクランプしながらスライドセットを置き換えます。
zoomTo(scale, center?) プログラムからズームします。
toggleUi(visible?) UI を表示 / 非表示にします。
setKeyboardEnabled(enabled) キー操作の処理を一時停止 / 再開します。
on(name, listener) イベントを購読します。購読解除用の関数を返します。
destroy() ビューワーを破棄し、リソースを解放します。

さらに statusindexcountslides のゲッターがあります。

イベント

viewer.on(name, listener) で購読します。Svelte アダプタが公開するコールバックプロップのイベントに加えて、コアは次のイベントを発行します。

Event Payload 発火するタイミング
opened { index } 開くトランジションが完了したとき。
zoom { index, scale, fitScale } アクティブなスライドのズームレベルが変化したとき。
dismiss { progress, offsetY } ドラッグで閉じる進捗が更新されたとき。
ui { visible } UI の表示が切り替わったとき(タップ操作)。
slideupdate { index, slide } updateSlide によってスライドが更新されたとき。
slideschange { slides, index } setSlides によってスライドセットが置き換えられたとき。
destroy ビューワーが破棄されたとき。

コールバックプロップとして公開されているイベントは API リファレンス を参照してください。

低レベルのプリミティブ

コアは、独自のアダプタを構築するために、Svelte アダプタの基盤となっているプリミティブもエクスポートします。attachGesturesPanZoomdecodeImagetrapFocusbindHistoryfitScalepanBoundsrubberBandzoomAroundPoint に加えて、オプションとイベントの完全な型が含まれます。リファレンス実装となるアダプタについては、リポジトリの src/svelte を参照してください。