maniiifest
Version:
Typesafe IIIF presentation v3 manifest and collection parsing without external dependencies
58 lines (57 loc) • 2.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ManiiifestAnnotationCollection = void 0;
const F = require("./specification");
/**
* Parses and provides access to a standalone W3C Annotation Collection.
*
* Create via `Maniiifest.parseAnnotationCollection(data)` or `new ManiiifestAnnotationCollection(data)`.
*/
class ManiiifestAnnotationCollection {
constructor(data) {
try {
this.specification = F.readAnnotationCollectionT(data);
}
catch (error) {
throw new Error(`Failed to parse IIIF data as AnnotationCollection: ${error instanceof Error ? error.message : String(error)}`);
}
}
getAnnotationCollection() {
return F.writeAnnotationCollectionT(this.specification);
}
getAnnotationCollectionId() {
return this.specification.id !== undefined ? F.writeIdT(this.specification.id) : null;
}
getAnnotationCollectionType() {
return F.writeTypeT(this.specification.type);
}
getAnnotationCollectionContext() {
return this.specification.context !== undefined
? F.writeContextT(this.specification.context)
: null;
}
getAnnotationCollectionLabel() {
return this.specification.label !== undefined
? F.writeLabelT(this.specification.label)
: null;
}
getAnnotationCollectionFirst() {
return this.specification.first !== undefined
? F.writeFirstT(this.specification.first)
: null;
}
getAnnotationCollectionLast() {
return this.specification.last !== undefined ? F.writeLastT(this.specification.last) : null;
}
getAnnotationCollectionTotal() {
return this.specification.total !== undefined ? F.writeTotalT(this.specification.total) : null;
}
/** @yields {U.Annotation} Each annotation in the collection. */
*iterateAnnotationCollectionAnnotation() {
var _a;
for (const annotation of (_a = this.specification.items) !== null && _a !== void 0 ? _a : []) {
yield F.writeAnnotationT(annotation);
}
}
}
exports.ManiiifestAnnotationCollection = ManiiifestAnnotationCollection;