開発者向け

Kasane のビューアは、パッケージ iiif-kasane として、ほかのサイトにも置けます(MIT ライセンス)。React の部品として使う方法、HTML のタグ <iiif-kasane> として使う方法、Astro で使う方法を、動く例とコードで示します。

各例の上のタブで「プレビュー」(動くビューア)とコードを切り替えます。

インストール

npm で iiif-kasane として公開しています。3D 用の three.js などは、画像だけを見せる場合も入れてください(ブラウザが読むのは 3D を表示したときだけです)。タグだけを使う場合は、インストールは要りません。

npm install iiif-kasane
npm install react react-dom jotai three three-stdlib @react-three/fiber @react-three/drei gsap

npm のページ

React: Viewer

いちばん簡単な使い方です。Viewer は親の要素いっぱいに広がるので、親に高さを付けて className="h-full" を渡します。iiifContent にはマニフェストの URL か IIIF Content State を渡します。

ほかに locale(ja / en)、theme(light / dark / auto)、表示する頁を外から指定する target、表示中の頁を知らせる onSelect などがあります。

React: 部品を自分のレイアウトに置く

ViewerProvider の中に、表示(CanvasView)・注釈の一覧(AnnotationList)・資料情報(Metadata)などの部品を好きな配置で置けます。部品どうしは同じ状態を共有します。一覧の注釈を選ぶと表示が動き、頁をめくると資料情報が追いかけます。useViewer() を使えば、自分の部品からも同じ状態を読めます(例の PageLabel)。

レイアウトはページ側の CSS で書きます。パッケージの style.css には部品が使うクラスしか無く、それもビューアの中だけに効きます。

タグ: <iiif-kasane>

フレームワークの無いページでも、スクリプトを 1 行読み込めばタグとして使えます。React はスクリプトの中に入っています。高さは CSS か --iiif-viewer-height で、色は --iiif-viewer-* の変数で変えられます。版ごとの URL は残し続けるので、版を固定して読み込めます。

属性は iiif-content・locale・theme と、options(JSON。例: {"panelOpen":false,"pager":false})です。属性を書き換えると、表示もそのとおりに変わります。

資料ごとの埋め込みのコードは、ビューアの「共有」から作れます。 構造・共有・埋め込みの説明

Astro

Astro では両方の方法が使えます。tag.astro はタグを素の HTML として送り、スクリプトがブラウザでビューアにします(プレビューはこの形)。parts.astro は上の「部品を自分のレイアウトに置く」の FreeLayout.tsx を React の island として置きます。ビューアはブラウザの機能(WebGL・画面の大きさ)を使うので、client:only="react" で描きます。

例の一式(動かし方は README): packages/iiif-viewer/examples/astro

さらに詳しく