UNPKG

maniiifest

Version:

Typesafe IIIF presentation v3 manifest and collection parsing without external dependencies

139 lines (138 loc) 6.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ManiiifestAnnotation = void 0; const F = require("./specification"); /** * Parses and provides access to a standalone W3C Annotation. * * Create via `Maniiifest.parseAnnotation(data)` or `new ManiiifestAnnotation(data)`. */ class ManiiifestAnnotation { constructor(data) { try { this.specification = F.readAnnotationT(data); } catch (error) { throw new Error(`Failed to parse IIIF data as Annotation: ${error instanceof Error ? error.message : String(error)}`); } } getAnnotation() { return F.writeAnnotationT(this.specification); } getAnnotationId() { return this.specification.id !== undefined ? F.writeIdT(this.specification.id) : null; } getAnnotationType() { return F.writeTypeT(this.specification.type); } getAnnotationContext() { return this.specification.context !== undefined ? F.writeContextT(this.specification.context) : null; } getAnnotationBody() { return this.specification.body !== undefined ? F.writeBodyT(this.specification.body) : null; } getAnnotationTarget() { return this.specification.target !== undefined ? F.writeTargetT(this.specification.target) : null; } getAnnotationMotivation() { return this.specification.motivation !== undefined ? F.writeMotivationT(this.specification.motivation) : null; } getAnnotationCreator() { return this.specification.creator !== undefined ? F.writeCreatorT(this.specification.creator) : null; } getAnnotationGenerator() { return this.specification.generator !== undefined ? F.writeGeneratorT(this.specification.generator) : null; } getAnnotationCreated() { return this.specification.created !== undefined ? F.writeCreatedT(this.specification.created) : null; } getAnnotationModified() { return this.specification.modified !== undefined ? F.writeModifiedT(this.specification.modified) : null; } getAnnotationFeatureCollection() { var _a; if (((_a = this.specification.body) === null || _a === void 0 ? void 0 : _a.kind) === 'Value' && this.specification.body.value.kind === 'FeatureCollection') { return F.writeFeatureCollectionT(this.specification.body.value.value); } return null; } /** @yields {U.AnnotationBodyTextualBody} Each textual body from the annotation. */ *iterateAnnotationTextualBody() { var _a, _b; if (((_a = this.specification.body) === null || _a === void 0 ? void 0 : _a.kind) === 'Array') { for (const body of this.specification.body.value) { if (body.kind === 'TextualBody') { yield F.writeAnnotationBodyTextualBody(body.value); } } } else if (((_b = this.specification.body) === null || _b === void 0 ? void 0 : _b.kind) === 'Value') { if (this.specification.body.value.kind === 'TextualBody') { yield F.writeAnnotationBodyTextualBody(this.specification.body.value.value); } } } /** @yields {U.AnnotationBodyResource} Each resource body from the annotation. */ *iterateAnnotationResourceBody() { var _a, _b; if (((_a = this.specification.body) === null || _a === void 0 ? void 0 : _a.kind) === 'Array') { for (const body of this.specification.body.value) { if (body.kind === 'Resource') { yield F.writeAnnotationBodyResource(body.value); } } } else if (((_b = this.specification.body) === null || _b === void 0 ? void 0 : _b.kind) === 'Value') { if (this.specification.body.value.kind === 'Resource') { yield F.writeAnnotationBodyResource(this.specification.body.value.value); } } } /** @yields {U.AnnotationTarget} Each target of the annotation. */ *iterateAnnotationTarget() { var _a; if (((_a = this.specification.target) === null || _a === void 0 ? void 0 : _a.kind) === 'Array') { for (const target of this.specification.target.value) { yield F.writeAnnotationTargetT(target); } } else if (this.specification.target) { yield F.writeAnnotationTargetT(this.specification.target.value); } } /** @yields {U.Feature} Each GeoJSON feature from a FeatureCollection body. */ *iterateAnnotationFeature() { var _a, _b; if (((_a = this.specification.body) === null || _a === void 0 ? void 0 : _a.kind) === 'Value' && this.specification.body.value.kind === 'FeatureCollection') { for (const feature of (_b = this.specification.body.value.value.features) !== null && _b !== void 0 ? _b : []) { yield F.writeFeatureT(feature); } } } /** @yields {U.PointCoordinates} Each point coordinate pair from FeatureCollection geometry. */ *iterateAnnotationGeometryPointCoordinates() { var _a, _b, _c, _d; if (((_a = this.specification.body) === null || _a === void 0 ? void 0 : _a.kind) === 'Value' && this.specification.body.value.kind === 'FeatureCollection') { for (const feature of (_b = this.specification.body.value.value.features) !== null && _b !== void 0 ? _b : []) { if (((_c = feature.geometry) === null || _c === void 0 ? void 0 : _c.kind) === 'Point') { for (const coordinates of (_d = feature.geometry.value.coordinates) !== null && _d !== void 0 ? _d : []) { yield F.writePointCoordinatesT(coordinates); } } } } } } exports.ManiiifestAnnotation = ManiiifestAnnotation;