triiiceratops 0.12.7 → 0.12.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,18 +8,53 @@ This project is heavily inspired by Mirador 4, which I still view as the premier
8
8
 
9
9
  ## Features
10
10
 
11
- - Explore all canvases in a manfifest in a flexible thumbnail gallery that can be a floating window or docked to any of the four sides of the viewer.
12
- - Renders IIIF annotations.
13
- - Flexible theme support using Tailwind CSS and DaisyUI.
14
- - IIIF Search support.
11
+ - **IIIF Presentation API**: Compatible with versions 2.0 and 3.0
12
+ - **Canvas Navigation**: Browse canvases via thumbnail gallery (dockable to any side) or prev/next controls
13
+ - **Viewing Modes**: Toggle between single-page ("individuals") and book ("paged") viewing with configurable cover page offset
14
+ - **Annotations**:
15
+ - Renders IIIF annotations from embedded or external annotation lists
16
+ - Supports rectangle (xywh) and polygon (SVG selector) geometries
17
+ - Toggle annotation visibility on/off
18
+ - **IIIF Search**: Full Content Search API support with hit highlighting
19
+ - **Metadata Display**: Shows manifest metadata, description, attribution, and license/rights
20
+ - **Multi-language**: Language-aware metadata with fallback chain; UI translations for English and German
21
+ - **Image Services**: Detects and uses IIIF Image API services (v1, v2, v3) for tiled deep-zoom
22
+ - **Theming**: 35 built-in DaisyUI themes plus custom theme configuration
15
23
 
16
- ## Current Limitations (but actively working on supporting)
24
+ ## Current Limitations
17
25
 
18
- - Does not fully support multiple images per canvas (either multiple images in the same canvas or the `choice` property).
19
- - Does not support IIIF collection navigation.
20
- - Other IIIF client features are missing.
26
+ This project is actively developed. The following IIIF features are not yet supported:
21
27
 
22
- The goal is to support all IIIF client mandatory features with pluggable optional features. The footprint of Triiiceratops, despite the name, is intended to remain considerably small than other fully featured viewers while attaining feature parity.
28
+ ### Content
29
+
30
+ - **Multiple images per canvas**: Only the first image is used; the `choice` property is not supported
31
+ - **Audio/Video**: Time-based media (canvases with `duration`) not supported
32
+ - **Multiple sequences**: Only the first sequence is read
33
+
34
+ ### Navigation
35
+
36
+ - **Collections**: Cannot browse IIIF Collections or navigate between manifests
37
+ - **Ranges/Structures**: No table of contents or hierarchical navigation (book chapters, sections)
38
+ - **`start` property**: Cannot specify initial canvas or temporal position
39
+ - **`navDate`**: No date-based navigation for newspapers/journals
40
+
41
+ ### Behaviors
42
+
43
+ - **Manifest-driven behaviors**: The `behavior` property is not read from manifests; viewing mode is set manually via UI
44
+ - **Missing behaviors**: `continuous`, `facing-pages`, `auto-advance`, `repeat`, `hidden`, etc.
45
+ - **`viewingDirection`**: Not used for layout decisions
46
+
47
+ ### Annotations
48
+
49
+ - **Annotation creation**: Read-only; cannot create or edit annotations
50
+ - **Motivation differentiation**: All annotations rendered similarly regardless of motivation type
51
+
52
+ ### Other
53
+
54
+ - **`rendering` property**: No links to alternative formats (PDF, etc.)
55
+ - **`placeholderCanvas`/`accompanyingCanvas`**: Not supported
56
+
57
+ The goal is to support all IIIF client mandatory features with pluggable optional features. The footprint of Triiiceratops, despite the name, is intended to remain considerably smaller than other fully featured viewers while attaining feature parity.
23
58
 
24
59
  ## Usage
25
60
 
@@ -1,6 +1,6 @@
1
1
  import "svelte/internal/disclose-version";
2
2
  import * as a from "svelte/internal/client";
3
- import { g as N } from "./X-B3XldraD.js";
3
+ import { g as N } from "./X-DaQiCkfE.js";
4
4
  var O = a.from_svg('<path d="M228,128a100,100,0,0,1-98.66,100H128a99.39,99.39,0,0,1-68.62-27.29,12,12,0,0,1,16.48-17.45,76,76,0,1,0-1.57-109c-.13.13-.25.25-.39.37L54.89,92H72a12,12,0,0,1,0,24H24a12,12,0,0,1-12-12V56a12,12,0,0,1,24,0V76.72L57.48,57.06A100,100,0,0,1,228,128Z"></path>'), P = a.from_svg('<path d="M216,128a88,88,0,1,1-88-88A88,88,0,0,1,216,128Z" opacity="0.2"></path><path d="M224,128a96,96,0,0,1-94.71,96H128A95.38,95.38,0,0,1,62.1,197.8a8,8,0,0,1,11-11.63A80,80,0,1,0,71.43,71.39a3.07,3.07,0,0,1-.26.25L44.59,96H72a8,8,0,0,1,0,16H24a8,8,0,0,1-8-8V56a8,8,0,0,1,16,0V85.8L60.25,60A96,96,0,0,1,224,128Z"></path>', 1), Q = a.from_svg('<path d="M224,128a96,96,0,0,1-94.71,96H128A95.38,95.38,0,0,1,62.1,197.8a8,8,0,0,1,11-11.63A80,80,0,1,0,71.43,71.39a3.07,3.07,0,0,1-.26.25L60.63,81.29l17,17A8,8,0,0,1,72,112H24a8,8,0,0,1-8-8V56A8,8,0,0,1,29.66,50.3L49.31,70,60.25,60A96,96,0,0,1,224,128Z"></path>'), R = a.from_svg('<path d="M222,128a94,94,0,0,1-92.74,94H128a93.43,93.43,0,0,1-64.5-25.65,6,6,0,1,1,8.24-8.72A82,82,0,1,0,70,70l-.19.19L39.44,98H72a6,6,0,0,1,0,12H24a6,6,0,0,1-6-6V56a6,6,0,0,1,12,0V90.34L61.63,61.4A94,94,0,0,1,222,128Z"></path>'), S = a.from_svg('<path d="M224,128a96,96,0,0,1-94.71,96H128A95.38,95.38,0,0,1,62.1,197.8a8,8,0,0,1,11-11.63A80,80,0,1,0,71.43,71.39a3.07,3.07,0,0,1-.26.25L44.59,96H72a8,8,0,0,1,0,16H24a8,8,0,0,1-8-8V56a8,8,0,0,1,16,0V85.8L60.25,60A96,96,0,0,1,224,128Z"></path>'), T = a.from_svg('<path d="M220,128a92,92,0,0,1-90.77,92H128a91.47,91.47,0,0,1-63.13-25.1,4,4,0,1,1,5.5-5.82A84,84,0,1,0,68.6,68.57l-.13.12L34.3,100H72a4,4,0,0,1,0,8H24a4,4,0,0,1-4-4V56a4,4,0,0,1,8,0V94.89l35-32A92,92,0,0,1,220,128Z"></path>'), W = a.from_svg('<svg><!><rect width="256" height="256" fill="none"></rect><!></svg>');
5
5
  function $(L, r) {
6
6
  a.push(r, !0);
@@ -1,4 +1,4 @@
1
- import { a, g as W } from "./X-B3XldraD.js";
1
+ import { a, g as W } from "./X-DaQiCkfE.js";
2
2
  import "svelte/internal/disclose-version";
3
3
  import * as t from "svelte/internal/client";
4
4
  const F = (