@iiif/parser
Advanced tools
@@ -1,1 +0,1 @@ | ||
| "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const Ce={id:"https://iiif-parser/annotation",type:"Annotation",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[],accessibility:[],audience:[],body:[],bodyValue:null,canonical:null,created:null,creator:[],generated:null,generator:[],modified:null,motivation:[],rights:[],stylesheet:null,target:[],timeMode:void 0,via:[],partOf:[]},N={id:"https://iiif-parser/annotation-page",type:"AnnotationPage",behavior:[],motivation:null,label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[]},k={id:"https://iiif-parser/empty-canvas",type:"Canvas",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],duration:0,height:0,width:0},j={id:"https://iiif-parser/empty-collection",type:"Collection",label:null,viewingDirection:"left-to-right",behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],services:[]},$={id:"https://iiif-parser/empty-manifest",type:"Manifest",annotations:[],behavior:[],homepage:[],items:[],label:null,logo:[],metadata:[],motivation:null,navDate:null,provider:[],partOf:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,rendering:[],requiredStatement:null,rights:null,seeAlso:[],service:[],services:[],start:null,structures:[],summary:null,thumbnail:[],viewingDirection:"left-to-right"},G={id:"https://iiif-parser/empty-canvas",type:"Range",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],start:null,supplementary:null,viewingDirection:"left-to-right"},q={id:"https://iiif-parser/empty-agent",type:"Agent",label:{},logo:[],seeAlso:[],homepage:[]},M=["Collection","Manifest","Canvas","AnnotationPage","AnnotationCollection","Annotation","ContentResource","Range","Service","Selector","Agent"];function U(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t.type=="string"){const e=M.indexOf(t.type);if(e!==-1)return M[e]}if(t.profile)return"Service";throw new Error("Resource type is not known")}class L{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationCollection:[],annotationPage:[],annotation:[],contentResource:[],choice:[],range:[],service:[],agent:[],...e},this.options={allowUndefinedReturn:!1,...i}}static all(e){return new L({collection:[e],manifest:[e],canvas:[e],annotationCollection:[e],annotationPage:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e]})}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=e.thumbnail.map(i=>this.traverseType(i,this.traversals.contentResource))),e.provider&&(e.provider=e.provider.map(i=>this.traverseAgent(i))),e}traverseLinking(e){return e.seeAlso&&(e.seeAlso=e.seeAlso.map(i=>this.traverseType(i,this.traversals.contentResource))),e.service&&(e.service=e.service.map(i=>this.traverseType(i,this.traversals.service))),e.services&&(e.services=e.services.map(i=>this.traverseType(i,this.traversals.service))),e.logo&&(e.logo=e.logo.map(i=>this.traverseType(i,this.traversals.contentResource))),e.homepage&&(e.homepage=e.homepage.map(i=>this.traverseType(i,this.traversals.contentResource))),e.partOf&&(e.partOf=e.partOf.map(i=>typeof i=="string"||!i.type?this.traverseType(i,this.traversals.contentResource):i.type==="Canvas"?this.traverseType(i,this.traversals.canvas):i.type==="AnnotationCollection"?this.traverseType(i,this.traversals.annotationCollection):this.traverseType(i,this.traversals.contentResource))),e.start&&(e.start=e.start?this.traverseType(e.start,this.traversals.canvas):null),e.rendering&&(e.rendering=e.rendering.map(i=>this.traverseType(i,this.traversals.contentResource))),e.supplementary&&(e.supplementary=e.supplementary.map(i=>this.traverseType(i,this.traversals.contentResource))),e}traverseCollectionItems(e){return e.items&&e.items.map(i=>i.type==="Collection"?this.traverseCollection(i):this.traverseManifest(i)),e}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseInlineAnnotationPages(this.traverseLinking(this.traversePosterCanvas(this.traverseCollectionItems(e))))),this.traversals.collection)}traverseManifestItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseCanvas(i))),e}traverseManifestStructures(e){return e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseManifest(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traverseManifestStructures(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e)))))),this.traversals.manifest)}traverseCanvasItems(e){return e.items=(e.items||[]).map(i=>this.traverseAnnotationPage(i)),e}traverseInlineAnnotationPages(e){return typeof e=="string"||!e||e.annotations&&(e.annotations=e.annotations.map(i=>this.traverseAnnotationPage(i))),e}traverseCanvas(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))))),this.traversals.canvas)}traverseAnnotationPageItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseAnnotation(i))),e}traverseAnnotationPage(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationPageItems(e))),this.traversals.annotationPage)}traverseAnnotationBody(e){return Array.isArray(e.body)?e.body=e.body.map(i=>this.traverseContentResource(i)):e.body&&(e.body=this.traverseContentResource(e.body)),e}traversePosterCanvas(e){return e.posterCanvas&&(e.posterCanvas=this.traverseType(e.posterCanvas,this.traversals.canvas)),e.placeholderCanvas&&(e.placeholderCanvas=this.traverseType(e.placeholderCanvas,this.traversals.canvas)),e.accompanyingCanvas&&(e.accompanyingCanvas=this.traverseType(e.accompanyingCanvas,this.traversals.canvas)),e}traverseAnnotation(e){return this.traverseType(this.traverseLinking(this.traverseAnnotationBody(e)),this.traversals.annotation)}traverseContentResourceLinking(e){return typeof e=="string"||!e||e&&e.service&&(e.service=(e.service||[]).map(i=>this.traverseType(i,this.traversals.service))),e}traverseContentResource(e){return e.type==="Choice"&&(e.items=e.items.map(i=>this.traverseContentResource(i))),this.traverseType(this.traverseInlineAnnotationPages(this.traverseContentResourceLinking(e)),this.traversals.contentResource)}traverseRangeRanges(e){return e.items&&(e.items=e.items.map(i=>typeof i=="string"?this.traverseCanvas({id:i,type:"Canvas"}):i.type==="Manifest"?this.traverseManifest(i):this.traverseRange(i))),e}traverseRange(e){return this.traverseType(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseRangeRanges(e)))),this.traversals.range)}traverseAgent(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.agent)}traverseType(e,i){return i.reduce((n,r)=>{const a=r(n);return typeof a=="undefined"&&!this.options.allowUndefinedReturn?n:a},e)}traverseService(e){return this.traverseType(e,this.traversals.service)}traverseUnknown(e){const i=U(e);switch(i){case"Collection":return this.traverseCollection(e);case"Manifest":return this.traverseManifest(e);case"Canvas":return this.traverseCanvas(e);case"AnnotationPage":return this.traverseAnnotationPage(e);case"Annotation":return this.traverseAnnotation(e);case"ContentResource":return this.traverseContentResource(e);case"Range":return this.traverseRange(e);case"Service":return this.traverseService(e);case"Agent":return this.traverseAgent(e);default:throw new Error(`Unknown or unsupported resource type of ${i}`)}}}const V=["sc:Collection","sc:Manifest","sc:Canvas","oa:AnnotationList","oa:Annotation","sc:Range","sc:Layer","sc:Sequence","oa:Choice","Service","ContentResource"];function Ie(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t["@type"]=="string"){const e=V.indexOf(t["@type"]);if(e!==-1)return V[e]}if(t.profile)return"Service";if(t.format||t["@type"])return"ContentResource";throw new Error("Resource type is not known")}class S{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationList:[],sequence:[],annotation:[],contentResource:[],choice:[],range:[],service:[],layer:[],...e},this.options={convertPropsToArray:!0,mergeMemberProperties:!0,allowUndefinedReturn:!1,...i}}static all(e){return new S({collection:[e],manifest:[e],canvas:[e],annotationList:[e],sequence:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e],layer:[e]})}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(e))),this.traversals.collection)}traverseCollectionItems(e){if(this.options.mergeMemberProperties){const i=[...(e.manifests||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Manifest"}:n),...(e.collections||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Collection"}:n),...e.members||[]];delete e.collections,delete e.manifests,e.members=i}return e.manifests&&(e.manifests=e.manifests.map(i=>this.traverseManifest(typeof i=="string"?{"@id":i,"@type":"sc:Manifest"}:i))),e.collections&&(e.collections=e.collections.map(i=>this.traverseCollection(typeof i=="string"?{"@id":i,"@type":"sc:Collection"}:i))),e.members&&(e.members=e.members.map(i=>typeof i=="string"?i:this.traverseUnknown(i))),e}traverseManifest(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e))),this.traversals.manifest)}traverseManifestItems(e){return e.sequences&&(e.sequences=e.sequences.map(i=>this.traverseSequence(i))),e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseSequence(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(e))),this.traversals.sequence)}traverseSequenceItems(e){return e.canvases&&(e.canvases=e.canvases.map(i=>this.traverseCanvas(i))),e}traverseCanvas(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))),this.traversals.canvas)}traverseCanvasItems(e){return e.images&&(e.images=e.images.map(i=>this.traverseAnnotation(i))),e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseRange(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(e))),this.traversals.range)}traverseRangeItems(e){if(this.options.mergeMemberProperties){const i=[...(e.ranges||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Range"}:n),...(e.canvases||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Canvas"}:n),...e.members||[]];delete e.ranges,delete e.canvases,e.members=i.length?i.map(n=>this.traverseUnknown(n)):void 0}return e}traverseAnnotationList(e){const i=typeof e=="string"?{"@id":e,"@type":"oa:AnnotationList"}:e;return this.traverseType(this.traverseDescriptive(this.traverseAnnotationListItems(i)),this.traversals.annotationList)}traverseAnnotationListItems(e){return e.resources&&(e.resources=e.resources.map(i=>this.traverseAnnotation(i))),e}traverseAnnotation(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(e))),this.traversals.annotation)}traverseAnnotationItems(e){return e.resource&&(e.resource=this.traverseContentResource(e.resource)),e.on,e}traverseLayer(e){return this.traverseType(this.traverseLinking(this.traverseLayerItems(e)),this.traversals.layer)}traverseLayerItems(e){return e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseChoice(e){return this.traverseType(this.traverseChoiceItems(e),this.traversals.choice)}traverseChoiceItems(e){return e.default&&e.default!=="rdf:nil"&&(e.default=this.traverseContentResource(e.default)),e.item&&e.item!=="rdf:nil"&&(e.item=e.item.map(i=>this.traverseContentResource(i))),e}traverseService(e){return this.traverseType(this.traverseLinking(e),this.traversals.service)}traverseContentResource(e){return e["@type"]==="oa:Choice"?this.traverseChoice(e):this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.contentResource)}traverseUnknown(e){if(!e["@type"]||typeof e=="string")return e;switch(Ie(e)){case"sc:Collection":return this.traverseCollection(e);case"sc:Manifest":return this.traverseManifest(e);case"sc:Canvas":return this.traverseCanvas(e);case"sc:Sequence":return this.traverseSequence(e);case"sc:Range":return this.traverseRange(e);case"oa:Annotation":return this.traverseAnnotation(e);case"oa:AnnotationList":return this.traverseAnnotationList(e);case"sc:Layer":return this.traverseLayer(e);case"Service":return this.traverseService(e);case"oa:Choice":return this.traverseChoice(e);case"ContentResource":return this.traverseContentResource(e)}return e.profile?this.traverseService(e):e}traverseImageResource(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],r=[];for(const a of n)typeof a=="string"?r.push(this.traverseContentResource({"@id":a,"@type":"dctypes:Image"})):r.push(this.traverseContentResource(a));return!i&&!this.options.convertPropsToArray?r[0]:r}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=this.traverseImageResource(e.thumbnail)),e.logo&&(e.logo=this.traverseImageResource(e.logo)),e}traverseOneOrMoreServices(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],r=[];for(const a of n)r.push(this.traverseService(a));return!i&&!this.options.convertPropsToArray?r[0]:r}traverseLinking(e){return e.related&&(e.related=this.traverseOneOrManyType(e.related,this.traversals.contentResource)),e.rendering&&(e.rendering=this.traverseOneOrManyType(e.rendering,this.traversals.contentResource)),e.service&&(e.service=this.traverseOneOrMoreServices(e.service)),e.seeAlso&&(e.seeAlso=this.traverseOneOrManyType(e.seeAlso,this.traversals.contentResource)),e.within&&(typeof e.within=="string"||(e.within=this.traverseOneOrManyType(e.within,this.traversals.contentResource))),e.startCanvas&&(typeof e.startCanvas=="string"?e.startCanvas=this.traverseType({"@id":e.startCanvas,"@type":"sc:Canvas"},this.traversals.canvas):e.startCanvas&&this.traverseType(e.startCanvas,this.traversals.canvas)),e.contentLayer&&(typeof e.contentLayer=="string"?e.contentLayer=this.traverseLayer({"@id":e.contentLayer,"@type":"sc:Layer"}):e.contentLayer=this.traverseLayer(e.contentLayer)),e}traverseOneOrManyType(e,i){if(!Array.isArray(e))if(this.options.convertPropsToArray)e=[e];else return this.traverseType(e,i);return e.map(n=>this.traverseType(n,i))}traverseType(e,i){return i.reduce((n,r)=>{const a=r(n);return typeof a=="undefined"&&!this.options.allowUndefinedReturn?n:a},e)}}const _e="http://library.stanford.edu/iiif/image-api/compliance.html#level0",W="http://library.stanford.edu/iiif/image-api/compliance.html#level1",z="http://library.stanford.edu/iiif/image-api/compliance.html#level2",be="http://library.stanford.edu/iiif/image-api/conformance.html#level0",B="http://library.stanford.edu/iiif/image-api/conformance.html#level1",H="http://library.stanford.edu/iiif/image-api/conformance.html#level2",Re="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0",K="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1",Q="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2",Ee="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0",X="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1",Y="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2",we="http://iiif.io/api/image/1/level0.json",Le="http://iiif.io/api/image/1/profiles/level0.json",Z="http://iiif.io/api/image/1/level1.json",J="http://iiif.io/api/image/1/profiles/level1.json",ee="http://iiif.io/api/image/1/level2.json",te="http://iiif.io/api/image/1/profiles/level2.json",Te="http://iiif.io/api/image/2/level0.json",Me="http://iiif.io/api/image/2/profiles/level0.json",ie="http://iiif.io/api/image/2/level1.json",ne="http://iiif.io/api/image/2/profiles/level1.json",re="http://iiif.io/api/image/2/level2.json",ae="http://iiif.io/api/image/2/profiles/level2.json",Se="level0",se="level1",oe="level2",xe="http://iiif.io/api/image/2/level0",le="http://iiif.io/api/image/2/level1",ve="http://iiif.io/api/image/2/level2",Oe=[le,ve,W,z,B,H,K,Q,X,Y,Z,J,ee,te,ie,ne,re,ae,se,oe],Pe=[xe,le,ve,_e,W,z,be,B,H,Re,K,Q,Ee,X,Y,we,Le,Z,J,ee,te,Te,Me,ie,ne,re,ae,Se,se,oe],x={attributionLabel:"Attribution",lang:"none",providerId:"http://example.org/provider",providerName:"Unknown"};function d(t,e="none"){if(!t)return{};const i=Array.isArray(t)?t:[t],n={};for(const r of i){if(typeof r=="string"){n[e]=n[e]?n[e]:[],n[e].push(r||"");continue}if(!r["@language"]){n[e]=n[e]?n[e]:[],n[e].push(r["@value"]||"");continue}const a=r["@language"];n[a]=n[a]?n[a]:[],n[a].push(r["@value"]||"")}return n}function pe(t){if(Array.isArray(t))return pe(t.find(e=>typeof e=="string"));if(Pe.indexOf(t)!==-1)return"level2";if(Oe.indexOf(t)!==-1)return"level1";if(typeof t=="string")return t}function Fe(t){const e=Array.isArray(t)?t:[t];for(const i of e)switch(i){case"http://iiif.io/api/image/2/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2":return"ImageService2";case"http://iiif.io/api/image/1/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/context.json":return"ImageService1";case"http://iiif.io/api/annex/openannotation/context.json":return"ImageApiSelector"}}function De(t){switch(t){case"http://iiif.io/api/image/2/level0.json":case"http://iiif.io/api/image/2/level1.json":case"http://iiif.io/api/image/2/level2.json":return"ImageService2";case"http://iiif.io/api/auth/1/kiosk":case"http://iiif.io/api/auth/1/login":case"http://iiif.io/api/auth/1/clickthrough":case"http://iiif.io/api/auth/1/external":case"http://iiif.io/api/auth/0/kiosk":case"http://iiif.io/api/auth/0/login":case"http://iiif.io/api/auth/0/clickthrough":case"http://iiif.io/api/auth/0/external":return"AuthCookieService1";case"http://iiif.io/api/auth/1/token":case"http://iiif.io/api/auth/0/token":return"AuthTokenService1";case"http://iiif.io/api/auth/1/logout":case"http://iiif.io/api/auth/0/logout":return"AuthLogoutService1";case"http://iiif.io/api/search/1/search":case"http://iiif.io/api/search/0/search":return"SearchService1";case"http://iiif.io/api/search/1/autocomplete":case"http://iiif.io/api/search/0/autocomplete":return"AutoCompleteService1"}}function Ne(t){return Array.isArray(t)?t:[t]}function ke(t){for(const e of["sc","oa","dcterms","dctypes","iiif"])if(t.startsWith(`${e}:`))return t.slice(e.length+1);return t}const je=["Collection","Manifest","Annotation","AnnotationPage","Range","Service"];function O(t){const e=t["@id"]||t.id;let i=t["@type"]||t.type;const n=t.profile||void 0,r=t["@context"]||void 0;if(n){const a=De(n);if(a)return a}if(r){const a=Fe(r);if(a)return a}if(i){if(Array.isArray(i)){if(i.indexOf("oa:CssStylesheet")!==-1)return"CssStylesheet";if(i.indexOf("cnt:ContentAsText")!==-1)return"TextualBody";i=i[0]}for(const a of["sc","oa","dcterms","dctypes","iiif"])if(i.startsWith(`${a}:`)){i=i.slice(a.length+1);break}switch(i){case"Layer":return"AnnotationCollection";case"AnnotationList":return"AnnotationPage";case"cnt:ContentAsText":return"TextualBody"}}if(i&&je.indexOf(i)!==-1)return i;if(t.format){if(t.format.startsWith("image/"))return"Image";if(t.format.startsWith("text/")||t.format==="application/pdf")return"Text";if(t.format.startsWith("application/"))return"Dataset"}return e&&(e.endsWith(".jpg")||e.endsWith(".png")||e.endsWith(".jpeg"))?"Image":i||"unknown"}const $e=/http(s)?:\/\/(creativecommons.org|rightsstatements.org)[^"'\\<\n]+/gm;function Ge(t){const e=t.match($e);return e?e[0]:t}function qe(t,e="Rights/License",i="none"){let n=null;const r=[],a=Array.isArray(t)?t:[t];for(const o of a){const l=o?Ge(o):void 0;if(l&&(l.indexOf("creativecommons.org")!==-1||l.indexOf("rightsstatements.org")!==-1)){l.startsWith("https://")?n=`http://${l.slice(8)}`:n=l;continue}l&&r.push({label:{[i]:[e]},value:{[i]:[l]}})}return[n,r]}const Ue=["http://iiif.io/api/presentation/2/context.json","http://iiif.io/api/image/2/context.json","http://iiif.io/api/image/1/context.json","http://library.stanford.edu/iiif/image-api/1.1/context.json","http://iiif.io/api/search/1/context.json","http://iiif.io/api/search/0/context.json","http://iiif.io/api/auth/1/context.json","http://iiif.io/api/auth/0/context.json","http://iiif.io/api/annex/openannotation/context.json"];function Ve(t){if(t){const e=Array.isArray(t)?t:[t],i=[];for(const n of e)n==="http://iiif.io/api/presentation/2/context.json"&&i.push("http://iiif.io/api/presentation/3/context.json"),Ue.indexOf(n)===-1&&i.push(n);if(e.length)return i.length===1?i[0]:i}}function We(t){return t?t.map(e=>({label:d(e.label),value:d(e.value)})):[]}function v(t){for(const e in t)(typeof t[e]=="undefined"||t[e]===null)&&delete t[e];return t}let he=0;function ce(t,e){const i=encodeURI(t.id||t["@id"]||"").trim();return i&&e?`${i}/${e}`:i||(he++,`http://example.org/${t["@type"]}${e?`/${e}`:""}/${he}`)}function p(t){const e=[...t.behavior||[]];return t.viewingHint&&e.push(t.viewingHint),{"@context":t["@context"]?Ve(t["@context"]):void 0,id:(t["@id"]||ce(t)).trim(),type:O(t),behavior:e.length?e:void 0,height:t.height?t.height:void 0,width:t.width?t.width:void 0,motivation:t.motivation?ke(t.motivation):void 0,viewingDirection:t.viewingDirection,profile:t.profile,format:t.format?t.format:void 0,duration:void 0,timeMode:void 0}}function h(t){const[e,i]=qe(t.license),n=[...t.metadata?We(t.metadata):[],...i];return{rights:e,metadata:n.length?n:void 0,label:t.label?d(t.label):void 0,requiredStatement:t.attribution?{label:d(x.attributionLabel),value:d(t.attribution)}:void 0,navDate:t.navDate,summary:t.description?d(t.description):void 0,thumbnail:t.thumbnail}}function ze(t){if(!t.within)return;const e=Array.isArray(t.within)?t.within:[t.within],i=[];for(const n of e)if(typeof n=="string"){if(n)switch(t["@type"]){case"sc:Manifest":i.push({id:n,type:"Collection"});break}}else n["@id"]&&i.push({id:n["@id"],type:O(n)});return i.length?i:void 0}function c(t){const e=t.related?Array.isArray(t.related)?t.related:[t.related]:[],i=t.contentLayer;return{provider:t.logo||e.length?[{id:x.providerId,type:"Agent",homepage:e.length?[e[0]]:void 0,logo:t.logo?Array.isArray(t.logo)?t.logo:[t.logo]:void 0,label:d(x.providerName)}]:void 0,partOf:ze(t),rendering:t.rendering,seeAlso:t.seeAlso,start:t.startCanvas,service:t.service?Ne(t.service):void 0,supplementary:i?[i]:void 0}}function Be(t){return v({...p(t),...h(t),...c(t),items:t.members})}function He(t){const e=[],i=[];for(const r of t.sequences||[])r.canvases.length&&e.push(...r.canvases),r.behavior&&i.push(...r.behavior);const n=p(t);return i.length&&(n.behavior?n.behavior.push(...i):n.behavior=i),v({...n,...h(t),...c(t),items:e,structures:t.structures})}function Ke(t){return v({...p(t),...h(t),...c(t),annotations:t.otherContent&&t.otherContent.length?t.otherContent:void 0,items:t.images&&t.images.length?[{id:ce(t,"annotation-page"),type:"AnnotationPage",items:t.images}]:void 0})}function Qe(t){return v({...p(t),...h(t),...c(t),items:t.resources&&t.resources.length?t.resources:void 0})}function Xe(t){return!t.canvases||t.canvases.length===0?{canvases:[],behavior:[]}:{canvases:t.canvases,behavior:t.viewingHint?[t.viewingHint]:[]}}function Ye(t){return v({...p(t),...h(t),...c(t),target:typeof t.on=="string"?encodeURI(t.on).trim():t.on,body:t.resource})}function Ze(t){const e=t;return v({...p(e),...h(e),...c(e)})}function Je(t){const e=[];return t.default&&t.default!=="rdf:nil"&&e.push(t.default),t.item&&t.item!=="rdf:nil"&&e.push(...t.item),{...p(t),...h(t),items:e}}function et(t){return v({...p(t),...h(t),...c(t),items:t.members})}function tt(t){const{"@id":e,"@type":i,"@context":n,profile:r,...a}=t,o={};return e&&(o["@id"]=e),o["@type"]=O(t),o["@type"]==="unknown"&&(n&&n.length&&(o["@context"]=n),o["@type"]="Service"),r&&(o.profile=pe(r)),v({...o,...a})}function it(t){return v({...p(t),...h(t),...c(t)})}const nt=new S({collection:[Be],manifest:[He],canvas:[Ke],annotationList:[Qe],sequence:[Xe],annotation:[Ye],contentResource:[Ze],choice:[Je],range:[et],service:[tt],layer:[it]});function rt(t){return t&&t["@context"]&&(t["@context"]==="http://iiif.io/api/presentation/2/context.json"||t["@context"].indexOf("http://iiif.io/api/presentation/2/context.json")!==-1||t["@context"]==="http://www.shared-canvas.org/ns/context.json")||t["@context"]==="http://iiif.io/api/image/2/context.json"?nt.traverseUnknown(t):t}const at={Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}};function fe(){return{Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}}}function ue(t,e){if(typeof t=="string")return{id:t,type:e};if(!t.id)throw new Error(`Invalid resource does not have an ID (${e})`);return t}function st(t){return(e,i)=>{const n=t[e]?t[e]:{};return r=>{const a=ue(r,i||e);return a&&a.id&&e?(n[a.id]=n[a.id]?Object.assign({},n[a.id],a):Object.assign({},a),{id:a.id,type:e==="ContentResource"?e:a.type}):a}}}function ot(t){return(e,i)=>n=>{const{id:r,type:a}=ue(n,i||e);if(typeof r=="undefined")throw new Error("Found invalid entity without an ID.");return e==="ContentResource"?t[r]=e:t[r]=a,n}}function lt(t){const e=JSON.stringify(t);let i=5381,n=e.length;for(;n;)i=i*33^e.charCodeAt(--n);const a=(i>>>0).toString(16);return a.length%2?"0"+a:a}function P(t){return e=>typeof e=="string"?{id:e,type:t}:e.id?e.type?e:{type:t,...e}:{id:`vault://${lt(e)}`,type:t,...e}}function _(t){return e=>({...t,...e})}function b(t){return Array.isArray(t)?t:[t]}function vt(t){return t.body&&(t.body=b(t.body)),t.seeAlso&&(t.seeAlso=b(t.seeAlso)),t.body&&(t.body=b(t.body)),t.audience&&(t.audience=b(t.audience)),t.accessibility&&(t.accessibility=b(t.accessibility)),t.motivation&&(t.motivation=b(t.motivation)),t}function pt(t){const e=rt(t),i=fe(),n={},r=st(i),a=ot(n),l=new L({collection:[_(j),a("Collection"),r("Collection")],manifest:[_($),a("Manifest"),r("Manifest")],canvas:[_(k),a("Canvas"),r("Canvas")],annotationPage:[P("AnnotationPage"),_(N),a("AnnotationPage"),r("AnnotationPage")],annotation:[P("Annotation"),vt,a("Annotation"),r("Annotation")],contentResource:[P("ContentResource"),a("ContentResource"),r("ContentResource")],range:[_(G),a("Range","Canvas"),r("Range","Canvas")],agent:[_(q),a("Agent"),r("Agent")]}).traverseUnknown(e);return{entities:i,resource:l,mapping:n}}const f="__$UNSET$__",F="__$UNWRAP$__";function ht(t,e){const i=t.requests[e],n=t.mapping[e];if(!(!n||i&&i.resourceUri&&!t.entities[n][i.resourceUri]))return t.entities[n][i?i.resourceUri:e]}function de(t){const e={};for(const[i,n]of t){if(i===F&&n!==f)return n;n!==f&&typeof n!="undefined"&&n!==null&&(e[i]=n)}return e}function ct(t,e,i){if(!e.type||!e.id)throw new Error("Unknown entity");if(!i[e.type])throw new Error(`Serializer not found for ${e.type}`);function n(r){const a=i[r.type];if(!a)return f;const o=ht(t,r.id)||(r.id&&r.type?r:null);if(!o)return f;const l=a(o,t,{isTopLevel:e.id===r.id});let R=l.next();for(;!R.done;){const w=R.value;let T=f;if(w)if(Array.isArray(w)){const D=[];for(const Ae of w)D.push(n(Ae));T=D}else T=n(w);R=l.next(T)}return R.value===f?f:de(R.value)}return n(e)}function m(t){if(!t)return;const e=Object.keys(t);if(e.length!==0){if(e.length===1){const i=e[0];if(!i)return"";const n=(t[i]||[]).join("");return i==="@none"||i==="none"||i==="en"?n:{"@language":i,"@value":n}}return e.map(i=>({"@language":i,"@value":(t[i]||[]).join("")}))}}function me(t){return Array.isArray(t)?t.map(e=>me(e)):typeof t=="string"?t:t.type&&t.type==="Canvas"?t.id:t}function u(t,e=!1){if(!!t)return t.length>1&&!e?t:t[0]||void 0}function ft(t){if(!!t){if(typeof t=="string")return{"@id":t};if("@id"in t){const e={...t};return delete e["@type"],e}return{"@context":"http://iiif.io/api/image/2/context.json","@id":t.id,profile:`http://iiif.io/api/image/2/profiles/${t.profile}.json`}}}function g(t,e){return[["@id",t.id],["@type",e],["format",t.format],["height",t.height],["width",t.width],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0]]}function*y(t){const e=t.provider?yield t.provider[0]:void 0;return[["label",m(t.label)],["metadata",t.metadata&&t.metadata.length?t.metadata.map(i=>({label:m(i.label)||"",value:m(i.value)||""})):void 0],["description",m(t.summary)],["thumbnail",u(yield t.thumbnail)],["navDate",t.navDate],["logo",e?u(e.logo):void 0],["homepage",e?e.homepage:void 0],["attribution",t.requiredStatement?m(t.requiredStatement.value):void 0]]}function*E(t){return[["seeAlso",u(yield t.seeAlso)],["service",u((t.service||[]).map(ft))],["rendering",u(yield t.rendering)],["startCanvas",t.start?t.start.id:void 0]]}const ut={Manifest:function*(t){return[...g(t,"sc:Manifest"),...yield*y(t),...yield*E(t),["sequences",[{"@id":`${t.id}/sequence0`,"@type":"sc:Sequence",canvases:yield t.items}]],["structures",yield t.structures]]},Canvas:function*(t){const i=(yield t.items)[0];return[...g(t,"sc:Canvas"),...yield*y(t),...yield*E(t),["images",i?[i.resources]:void 0],["annotations",t.annotations&&t.annotations.length?u(yield t.annotations):void 0]]},AnnotationPage:function*(t){return[...g(t,"sc:AnnotationList"),...yield*y(t),["resources",t.items&&t.items.length?u(yield t.items):void 0]]},Annotation:function*(t){return[["@id",t.id],["@type","oa:Annotation"],["motivation","sc:painting"],["on",me(t.target)],["resource",u(yield t.body,!0)]]},ContentResource:function*(t){switch(t.type){case"Image":return[...g(t,"dctypes:Image"),...yield*y(t),...yield*E(t)];case"Text":case"Dataset":default:return[...g(t,void 0),...yield*y(t)]}},AnnotationCollection:function*(t){return[["@id",t.id],["@type","sc:Layer"],["label",m(t.label)]]},Collection:function*(t){return[...g(t,"sc:Collection"),...yield*y(t),...yield*E(t),["members",yield*t.items]]},Range:function*(t){const e=[],i=[];if(t.items)for(const n of t.items){const r=yield n;e.push({"@id":n.id,"@type":n.type,label:r?r.label:void 0,within:t.id}),n.type==="Canvas"&&i.push(n.id)}return[...g(t,"sc:Range"),...yield*y(t),...yield*E(t),["canvases",i.length===e.length?i:void 0],["members",i.length!==e.length?e:void 0]]}};function A(t){return[["id",t.id?.startsWith("vault://")?void 0:t.id],["type",t.type],["format",t.format],["profile",t.profile],["height",t.height],["width",t.width],["duration",t.duration||void 0],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0],["behavior",t.behavior&&t.behavior.length?t.behavior:void 0],["timeMode",t.timeMode],["motivation",Array.isArray(t.motivation)?t.motivation[0]:t.motivation]]}function s(t){if(!(!t||t.length===0))return t}function ge(t){if(t&&t.type&&t.type==="ImageService2"){const{id:e,type:i,profile:n,...r}=t;return{"@id":e,"@type":i,profile:n.startsWith("http")?n:`http://iiif.io/api/image/2/${n}.json`,...r}}return t}function ye(t){if(!(!t||t.length===0))return t.map(ge)}function*C(t){return[["label",t.label],["metadata",s(t.metadata)],["summary",t.summary],["requiredStatement",t.requiredStatement],["rights",t.rights],["navDate",t.navDate],["language",t.language],["thumbnail",s(yield t.thumbnail)],["placeholderCanvas",yield t.placeholderCanvas],["accompanyingCanvas",yield t.accompanyingCanvas],["provider",s(yield t.provider)]]}function*I(t){return[["seeAlso",s(yield t.seeAlso)],["service",ye(t.service)],["services",ye(t.services)],["rendering",s(yield t.rendering)],["supplementary",s(yield t.supplementary)],["homepage",s(yield t.homepage)],["logo",s(yield t.logo)],["partOf",s(yield t.partOf)],["start",t.start]]}const dt={Manifest:function*(t,e,{isTopLevel:i}){return i?[["@context","http://iiif.io/api/presentation/3/context.json"],...A(t),...yield*C(t),...yield*I(t),["items",yield t.items],["structures",s(yield t.structures)],["annotations",s(yield t.annotations)]]:[...A(t),...yield*C(t)]},Canvas:function*(t){return[...A(t),...yield*C(t),...yield*I(t),["items",yield t.items],["annotations",s(yield t.annotations)]]},Agent:function*(t){return[["id",t.id],["type","Agent"],["label",t.label],...yield*I(t)]},AnnotationPage:function*(t){return[...Object.entries(t).map(([i,n])=>[i,Array.isArray(n)?s(n):n]).filter(([i,n])=>i!=="items"),...yield*I(t),["items",yield t.items]]},Service:function*(t){return[[F,ge(t)]]},Annotation:function*(t){const e=Object.entries(t).map(([n,r])=>n==="motivation"?[n,Array.isArray(r)?r[0]:r]:[n,Array.isArray(r)?s(r):r]).filter(([n])=>n!=="body"),i=yield t.body;return[...e,["body",i.length===1?i[0]:i]]},ContentResource:function*(t){return[...A(t),...yield*C(t),...yield*I(t),["annotations",s(yield t.annotations)],["items",s(yield t.items)]]},AnnotationCollection:function*(t){return[["id",t.id],["type","AnnotationCollection"],["label",t.label]]},Collection:function*(t,e,{isTopLevel:i}){return i?[["@context","http://iiif.io/api/presentation/3/context.json"],...A(t),...yield*C(t),...yield*I(t),["items",s(yield t.items)]]:[...A(t),...yield*C(t)]},Range:function*(t){const e=[];for(const i of t.items)i.type==="Range"?e.push(yield i):e.push(i);return[...A(t),...yield*C(t),...yield*I(t),["items",e],["annotations",s(yield t.annotations)]]}};exports.Traverse=L,exports.UNSET=f,exports.UNWRAP=F,exports.defaultEntities=at,exports.emptyAgent=q,exports.emptyAnnotation=Ce,exports.emptyAnnotationPage=N,exports.emptyCanvas=k,exports.emptyCollection=j,exports.emptyManifest=$,exports.emptyRange=G,exports.getDefaultEntities=fe,exports.identifyResource=U,exports.languageString2to3=m,exports.normalize=pt,exports.serialize=ct,exports.serializeConfigPresentation2=ut,exports.serializeConfigPresentation3=dt,exports.serializedFieldsToObject=de,exports.types=M; | ||
| "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const Ce={id:"https://iiif-parser/annotation",type:"Annotation",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[],accessibility:[],audience:[],body:[],bodyValue:null,canonical:null,created:null,creator:[],generated:null,generator:[],modified:null,motivation:[],rights:[],stylesheet:null,target:[],timeMode:void 0,via:[],partOf:[]},N={id:"https://iiif-parser/annotation-page",type:"AnnotationPage",behavior:[],motivation:null,label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[]},k={id:"https://iiif-parser/empty-canvas",type:"Canvas",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],duration:0,height:0,width:0},j={id:"https://iiif-parser/empty-collection",type:"Collection",label:null,viewingDirection:"left-to-right",behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],services:[]},$={id:"https://iiif-parser/empty-manifest",type:"Manifest",annotations:[],behavior:[],homepage:[],items:[],label:null,logo:[],metadata:[],motivation:null,navDate:null,provider:[],partOf:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,rendering:[],requiredStatement:null,rights:null,seeAlso:[],service:[],services:[],start:null,structures:[],summary:null,thumbnail:[],viewingDirection:"left-to-right"},G={id:"https://iiif-parser/empty-canvas",type:"Range",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],start:null,supplementary:null,viewingDirection:"left-to-right"},q={id:"https://iiif-parser/empty-agent",type:"Agent",label:{},logo:[],seeAlso:[],homepage:[]},M=["Collection","Manifest","Canvas","AnnotationPage","AnnotationCollection","Annotation","ContentResource","Range","Service","Selector","Agent"];function U(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t.type=="string"){const e=M.indexOf(t.type);if(e!==-1)return M[e]}if(t.profile)return"Service";throw new Error("Resource type is not known")}class L{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationCollection:[],annotationPage:[],annotation:[],contentResource:[],choice:[],range:[],service:[],agent:[],...e},this.options={allowUndefinedReturn:!1,...i}}static all(e){return new L({collection:[e],manifest:[e],canvas:[e],annotationCollection:[e],annotationPage:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e]})}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=e.thumbnail.map(i=>this.traverseType(i,this.traversals.contentResource))),e.provider&&(e.provider=e.provider.map(i=>this.traverseAgent(i))),e}traverseLinking(e){return e.seeAlso&&(e.seeAlso=e.seeAlso.map(i=>this.traverseType(i,this.traversals.contentResource))),e.service&&(e.service=e.service.map(i=>this.traverseType(i,this.traversals.service))),e.services&&(e.services=e.services.map(i=>this.traverseType(i,this.traversals.service))),e.logo&&(e.logo=e.logo.map(i=>this.traverseType(i,this.traversals.contentResource))),e.homepage&&(e.homepage=e.homepage.map(i=>this.traverseType(i,this.traversals.contentResource))),e.partOf&&(e.partOf=e.partOf.map(i=>typeof i=="string"||!i.type?this.traverseType(i,this.traversals.contentResource):i.type==="Canvas"?this.traverseType(i,this.traversals.canvas):i.type==="AnnotationCollection"?this.traverseType(i,this.traversals.annotationCollection):this.traverseType(i,this.traversals.contentResource))),e.start&&(e.start=e.start?this.traverseType(e.start,this.traversals.canvas):null),e.rendering&&(e.rendering=e.rendering.map(i=>this.traverseType(i,this.traversals.contentResource))),e.supplementary&&(e.supplementary=e.supplementary.map(i=>this.traverseType(i,this.traversals.contentResource))),e}traverseCollectionItems(e){return e.items&&e.items.map(i=>i.type==="Collection"?this.traverseCollection(i):this.traverseManifest(i)),e}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseInlineAnnotationPages(this.traverseLinking(this.traversePosterCanvas(this.traverseCollectionItems(e))))),this.traversals.collection)}traverseManifestItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseCanvas(i))),e}traverseManifestStructures(e){return e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseManifest(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traverseManifestStructures(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e)))))),this.traversals.manifest)}traverseCanvasItems(e){return e.items=(e.items||[]).map(i=>this.traverseAnnotationPage(i)),e}traverseInlineAnnotationPages(e){return typeof e=="string"||!e||e.annotations&&(e.annotations=e.annotations.map(i=>this.traverseAnnotationPage(i))),e}traverseCanvas(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))))),this.traversals.canvas)}traverseAnnotationPageItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseAnnotation(i))),e}traverseAnnotationPage(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationPageItems(e))),this.traversals.annotationPage)}traverseAnnotationBody(e){return Array.isArray(e.body)?e.body=e.body.map(i=>this.traverseContentResource(i)):e.body&&(e.body=this.traverseContentResource(e.body)),e}traversePosterCanvas(e){return e.posterCanvas&&(e.posterCanvas=this.traverseCanvas(e.posterCanvas)),e.placeholderCanvas&&(e.placeholderCanvas=this.traverseCanvas(e.placeholderCanvas)),e.accompanyingCanvas&&(e.accompanyingCanvas=this.traverseCanvas(e.accompanyingCanvas)),e}traverseAnnotation(e){return this.traverseType(this.traverseLinking(this.traverseAnnotationBody(e)),this.traversals.annotation)}traverseContentResourceLinking(e){return typeof e=="string"||!e||e&&e.service&&(e.service=(e.service||[]).map(i=>this.traverseType(i,this.traversals.service))),e}traverseContentResource(e){return e.type==="Choice"&&(e.items=e.items.map(i=>this.traverseContentResource(i))),this.traverseType(this.traverseInlineAnnotationPages(this.traverseContentResourceLinking(e)),this.traversals.contentResource)}traverseRangeRanges(e){return e.items&&(e.items=e.items.map(i=>typeof i=="string"?this.traverseCanvas({id:i,type:"Canvas"}):i.type==="Manifest"?this.traverseManifest(i):this.traverseRange(i))),e}traverseRange(e){return this.traverseType(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseRangeRanges(e)))),this.traversals.range)}traverseAgent(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.agent)}traverseType(e,i){return i.reduce((n,r)=>{const a=r(n);return typeof a=="undefined"&&!this.options.allowUndefinedReturn?n:a},e)}traverseService(e){return this.traverseType(e,this.traversals.service)}traverseUnknown(e){const i=U(e);switch(i){case"Collection":return this.traverseCollection(e);case"Manifest":return this.traverseManifest(e);case"Canvas":return this.traverseCanvas(e);case"AnnotationPage":return this.traverseAnnotationPage(e);case"Annotation":return this.traverseAnnotation(e);case"ContentResource":return this.traverseContentResource(e);case"Range":return this.traverseRange(e);case"Service":return this.traverseService(e);case"Agent":return this.traverseAgent(e);default:throw new Error(`Unknown or unsupported resource type of ${i}`)}}}const V=["sc:Collection","sc:Manifest","sc:Canvas","oa:AnnotationList","oa:Annotation","sc:Range","sc:Layer","sc:Sequence","oa:Choice","Service","ContentResource"];function Ie(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t["@type"]=="string"){const e=V.indexOf(t["@type"]);if(e!==-1)return V[e]}if(t.profile)return"Service";if(t.format||t["@type"])return"ContentResource";throw new Error("Resource type is not known")}class S{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationList:[],sequence:[],annotation:[],contentResource:[],choice:[],range:[],service:[],layer:[],...e},this.options={convertPropsToArray:!0,mergeMemberProperties:!0,allowUndefinedReturn:!1,...i}}static all(e){return new S({collection:[e],manifest:[e],canvas:[e],annotationList:[e],sequence:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e],layer:[e]})}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(e))),this.traversals.collection)}traverseCollectionItems(e){if(this.options.mergeMemberProperties){const i=[...(e.manifests||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Manifest"}:n),...(e.collections||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Collection"}:n),...e.members||[]];delete e.collections,delete e.manifests,e.members=i}return e.manifests&&(e.manifests=e.manifests.map(i=>this.traverseManifest(typeof i=="string"?{"@id":i,"@type":"sc:Manifest"}:i))),e.collections&&(e.collections=e.collections.map(i=>this.traverseCollection(typeof i=="string"?{"@id":i,"@type":"sc:Collection"}:i))),e.members&&(e.members=e.members.map(i=>typeof i=="string"?i:this.traverseUnknown(i))),e}traverseManifest(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e))),this.traversals.manifest)}traverseManifestItems(e){return e.sequences&&(e.sequences=e.sequences.map(i=>this.traverseSequence(i))),e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseSequence(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(e))),this.traversals.sequence)}traverseSequenceItems(e){return e.canvases&&(e.canvases=e.canvases.map(i=>this.traverseCanvas(i))),e}traverseCanvas(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))),this.traversals.canvas)}traverseCanvasItems(e){return e.images&&(e.images=e.images.map(i=>this.traverseAnnotation(i))),e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseRange(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(e))),this.traversals.range)}traverseRangeItems(e){if(this.options.mergeMemberProperties){const i=[...(e.ranges||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Range"}:n),...(e.canvases||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Canvas"}:n),...e.members||[]];delete e.ranges,delete e.canvases,e.members=i.length?i.map(n=>this.traverseUnknown(n)):void 0}return e}traverseAnnotationList(e){const i=typeof e=="string"?{"@id":e,"@type":"oa:AnnotationList"}:e;return this.traverseType(this.traverseDescriptive(this.traverseAnnotationListItems(i)),this.traversals.annotationList)}traverseAnnotationListItems(e){return e.resources&&(e.resources=e.resources.map(i=>this.traverseAnnotation(i))),e}traverseAnnotation(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(e))),this.traversals.annotation)}traverseAnnotationItems(e){return e.resource&&(e.resource=this.traverseContentResource(e.resource)),e.on,e}traverseLayer(e){return this.traverseType(this.traverseLinking(this.traverseLayerItems(e)),this.traversals.layer)}traverseLayerItems(e){return e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseChoice(e){return this.traverseType(this.traverseChoiceItems(e),this.traversals.choice)}traverseChoiceItems(e){return e.default&&e.default!=="rdf:nil"&&(e.default=this.traverseContentResource(e.default)),e.item&&e.item!=="rdf:nil"&&(e.item=e.item.map(i=>this.traverseContentResource(i))),e}traverseService(e){return this.traverseType(this.traverseLinking(e),this.traversals.service)}traverseContentResource(e){return e["@type"]==="oa:Choice"?this.traverseChoice(e):this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.contentResource)}traverseUnknown(e){if(!e["@type"]||typeof e=="string")return e;switch(Ie(e)){case"sc:Collection":return this.traverseCollection(e);case"sc:Manifest":return this.traverseManifest(e);case"sc:Canvas":return this.traverseCanvas(e);case"sc:Sequence":return this.traverseSequence(e);case"sc:Range":return this.traverseRange(e);case"oa:Annotation":return this.traverseAnnotation(e);case"oa:AnnotationList":return this.traverseAnnotationList(e);case"sc:Layer":return this.traverseLayer(e);case"Service":return this.traverseService(e);case"oa:Choice":return this.traverseChoice(e);case"ContentResource":return this.traverseContentResource(e)}return e.profile?this.traverseService(e):e}traverseImageResource(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],r=[];for(const a of n)typeof a=="string"?r.push(this.traverseContentResource({"@id":a,"@type":"dctypes:Image"})):r.push(this.traverseContentResource(a));return!i&&!this.options.convertPropsToArray?r[0]:r}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=this.traverseImageResource(e.thumbnail)),e.logo&&(e.logo=this.traverseImageResource(e.logo)),e}traverseOneOrMoreServices(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],r=[];for(const a of n)r.push(this.traverseService(a));return!i&&!this.options.convertPropsToArray?r[0]:r}traverseLinking(e){return e.related&&(e.related=this.traverseOneOrManyType(e.related,this.traversals.contentResource)),e.rendering&&(e.rendering=this.traverseOneOrManyType(e.rendering,this.traversals.contentResource)),e.service&&(e.service=this.traverseOneOrMoreServices(e.service)),e.seeAlso&&(e.seeAlso=this.traverseOneOrManyType(e.seeAlso,this.traversals.contentResource)),e.within&&(typeof e.within=="string"||(e.within=this.traverseOneOrManyType(e.within,this.traversals.contentResource))),e.startCanvas&&(typeof e.startCanvas=="string"?e.startCanvas=this.traverseType({"@id":e.startCanvas,"@type":"sc:Canvas"},this.traversals.canvas):e.startCanvas&&this.traverseType(e.startCanvas,this.traversals.canvas)),e.contentLayer&&(typeof e.contentLayer=="string"?e.contentLayer=this.traverseLayer({"@id":e.contentLayer,"@type":"sc:Layer"}):e.contentLayer=this.traverseLayer(e.contentLayer)),e}traverseOneOrManyType(e,i){if(!Array.isArray(e))if(this.options.convertPropsToArray)e=[e];else return this.traverseType(e,i);return e.map(n=>this.traverseType(n,i))}traverseType(e,i){return i.reduce((n,r)=>{const a=r(n);return typeof a=="undefined"&&!this.options.allowUndefinedReturn?n:a},e)}}const _e="http://library.stanford.edu/iiif/image-api/compliance.html#level0",W="http://library.stanford.edu/iiif/image-api/compliance.html#level1",z="http://library.stanford.edu/iiif/image-api/compliance.html#level2",be="http://library.stanford.edu/iiif/image-api/conformance.html#level0",B="http://library.stanford.edu/iiif/image-api/conformance.html#level1",H="http://library.stanford.edu/iiif/image-api/conformance.html#level2",Re="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0",K="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1",Q="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2",Ee="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0",X="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1",Y="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2",we="http://iiif.io/api/image/1/level0.json",Le="http://iiif.io/api/image/1/profiles/level0.json",Z="http://iiif.io/api/image/1/level1.json",J="http://iiif.io/api/image/1/profiles/level1.json",ee="http://iiif.io/api/image/1/level2.json",te="http://iiif.io/api/image/1/profiles/level2.json",Te="http://iiif.io/api/image/2/level0.json",Me="http://iiif.io/api/image/2/profiles/level0.json",ie="http://iiif.io/api/image/2/level1.json",ne="http://iiif.io/api/image/2/profiles/level1.json",re="http://iiif.io/api/image/2/level2.json",ae="http://iiif.io/api/image/2/profiles/level2.json",Se="level0",se="level1",oe="level2",xe="http://iiif.io/api/image/2/level0",le="http://iiif.io/api/image/2/level1",ve="http://iiif.io/api/image/2/level2",Oe=[le,ve,W,z,B,H,K,Q,X,Y,Z,J,ee,te,ie,ne,re,ae,se,oe],Pe=[xe,le,ve,_e,W,z,be,B,H,Re,K,Q,Ee,X,Y,we,Le,Z,J,ee,te,Te,Me,ie,ne,re,ae,Se,se,oe],x={attributionLabel:"Attribution",lang:"none",providerId:"http://example.org/provider",providerName:"Unknown"};function d(t,e="none"){if(!t)return{};const i=Array.isArray(t)?t:[t],n={};for(const r of i){if(typeof r=="string"){n[e]=n[e]?n[e]:[],n[e].push(r||"");continue}if(!r["@language"]){n[e]=n[e]?n[e]:[],n[e].push(r["@value"]||"");continue}const a=r["@language"];n[a]=n[a]?n[a]:[],n[a].push(r["@value"]||"")}return n}function pe(t){if(Array.isArray(t))return pe(t.find(e=>typeof e=="string"));if(Pe.indexOf(t)!==-1)return"level2";if(Oe.indexOf(t)!==-1)return"level1";if(typeof t=="string")return t}function Fe(t){const e=Array.isArray(t)?t:[t];for(const i of e)switch(i){case"http://iiif.io/api/image/2/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2":return"ImageService2";case"http://iiif.io/api/image/1/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/context.json":return"ImageService1";case"http://iiif.io/api/annex/openannotation/context.json":return"ImageApiSelector"}}function De(t){switch(t){case"http://iiif.io/api/image/2/level0.json":case"http://iiif.io/api/image/2/level1.json":case"http://iiif.io/api/image/2/level2.json":return"ImageService2";case"http://iiif.io/api/auth/1/kiosk":case"http://iiif.io/api/auth/1/login":case"http://iiif.io/api/auth/1/clickthrough":case"http://iiif.io/api/auth/1/external":case"http://iiif.io/api/auth/0/kiosk":case"http://iiif.io/api/auth/0/login":case"http://iiif.io/api/auth/0/clickthrough":case"http://iiif.io/api/auth/0/external":return"AuthCookieService1";case"http://iiif.io/api/auth/1/token":case"http://iiif.io/api/auth/0/token":return"AuthTokenService1";case"http://iiif.io/api/auth/1/logout":case"http://iiif.io/api/auth/0/logout":return"AuthLogoutService1";case"http://iiif.io/api/search/1/search":case"http://iiif.io/api/search/0/search":return"SearchService1";case"http://iiif.io/api/search/1/autocomplete":case"http://iiif.io/api/search/0/autocomplete":return"AutoCompleteService1"}}function Ne(t){return Array.isArray(t)?t:[t]}function ke(t){for(const e of["sc","oa","dcterms","dctypes","iiif"])if(t.startsWith(`${e}:`))return t.slice(e.length+1);return t}const je=["Collection","Manifest","Annotation","AnnotationPage","Range","Service"];function O(t){const e=t["@id"]||t.id;let i=t["@type"]||t.type;const n=t.profile||void 0,r=t["@context"]||void 0;if(n){const a=De(n);if(a)return a}if(r){const a=Fe(r);if(a)return a}if(i){if(Array.isArray(i)){if(i.indexOf("oa:CssStylesheet")!==-1)return"CssStylesheet";if(i.indexOf("cnt:ContentAsText")!==-1)return"TextualBody";i=i[0]}for(const a of["sc","oa","dcterms","dctypes","iiif"])if(i.startsWith(`${a}:`)){i=i.slice(a.length+1);break}switch(i){case"Layer":return"AnnotationCollection";case"AnnotationList":return"AnnotationPage";case"cnt:ContentAsText":return"TextualBody"}}if(i&&je.indexOf(i)!==-1)return i;if(t.format){if(t.format.startsWith("image/"))return"Image";if(t.format.startsWith("text/")||t.format==="application/pdf")return"Text";if(t.format.startsWith("application/"))return"Dataset"}return e&&(e.endsWith(".jpg")||e.endsWith(".png")||e.endsWith(".jpeg"))?"Image":i||"unknown"}const $e=/http(s)?:\/\/(creativecommons.org|rightsstatements.org)[^"'\\<\n]+/gm;function Ge(t){const e=t.match($e);return e?e[0]:t}function qe(t,e="Rights/License",i="none"){let n=null;const r=[],a=Array.isArray(t)?t:[t];for(const o of a){const l=o?Ge(o):void 0;if(l&&(l.indexOf("creativecommons.org")!==-1||l.indexOf("rightsstatements.org")!==-1)){l.startsWith("https://")?n=`http://${l.slice(8)}`:n=l;continue}l&&r.push({label:{[i]:[e]},value:{[i]:[l]}})}return[n,r]}const Ue=["http://iiif.io/api/presentation/2/context.json","http://iiif.io/api/image/2/context.json","http://iiif.io/api/image/1/context.json","http://library.stanford.edu/iiif/image-api/1.1/context.json","http://iiif.io/api/search/1/context.json","http://iiif.io/api/search/0/context.json","http://iiif.io/api/auth/1/context.json","http://iiif.io/api/auth/0/context.json","http://iiif.io/api/annex/openannotation/context.json"];function Ve(t){if(t){const e=Array.isArray(t)?t:[t],i=[];for(const n of e)n==="http://iiif.io/api/presentation/2/context.json"&&i.push("http://iiif.io/api/presentation/3/context.json"),Ue.indexOf(n)===-1&&i.push(n);if(e.length)return i.length===1?i[0]:i}}function We(t){return t?t.map(e=>({label:d(e.label),value:d(e.value)})):[]}function v(t){for(const e in t)(typeof t[e]=="undefined"||t[e]===null)&&delete t[e];return t}let he=0;function ce(t,e){const i=encodeURI(t.id||t["@id"]||"").trim();return i&&e?`${i}/${e}`:i||(he++,`http://example.org/${t["@type"]}${e?`/${e}`:""}/${he}`)}function p(t){const e=[...t.behavior||[]];return t.viewingHint&&e.push(t.viewingHint),{"@context":t["@context"]?Ve(t["@context"]):void 0,id:(t["@id"]||ce(t)).trim(),type:O(t),behavior:e.length?e:void 0,height:t.height?t.height:void 0,width:t.width?t.width:void 0,motivation:t.motivation?ke(t.motivation):void 0,viewingDirection:t.viewingDirection,profile:t.profile,format:t.format?t.format:void 0,duration:void 0,timeMode:void 0}}function h(t){const[e,i]=qe(t.license),n=[...t.metadata?We(t.metadata):[],...i];return{rights:e,metadata:n.length?n:void 0,label:t.label?d(t.label):void 0,requiredStatement:t.attribution?{label:d(x.attributionLabel),value:d(t.attribution)}:void 0,navDate:t.navDate,summary:t.description?d(t.description):void 0,thumbnail:t.thumbnail}}function ze(t){if(!t.within)return;const e=Array.isArray(t.within)?t.within:[t.within],i=[];for(const n of e)if(typeof n=="string"){if(n)switch(t["@type"]){case"sc:Manifest":i.push({id:n,type:"Collection"});break}}else n["@id"]&&i.push({id:n["@id"],type:O(n)});return i.length?i:void 0}function c(t){const e=t.related?Array.isArray(t.related)?t.related:[t.related]:[],i=t.contentLayer;return{provider:t.logo||e.length?[{id:x.providerId,type:"Agent",homepage:e.length?[e[0]]:void 0,logo:t.logo?Array.isArray(t.logo)?t.logo:[t.logo]:void 0,label:d(x.providerName)}]:void 0,partOf:ze(t),rendering:t.rendering,seeAlso:t.seeAlso,start:t.startCanvas,service:t.service?Ne(t.service):void 0,supplementary:i?[i]:void 0}}function Be(t){return v({...p(t),...h(t),...c(t),items:t.members})}function He(t){const e=[],i=[];for(const r of t.sequences||[])r.canvases.length&&e.push(...r.canvases),r.behavior&&i.push(...r.behavior);const n=p(t);return i.length&&(n.behavior?n.behavior.push(...i):n.behavior=i),v({...n,...h(t),...c(t),items:e,structures:t.structures})}function Ke(t){return v({...p(t),...h(t),...c(t),annotations:t.otherContent&&t.otherContent.length?t.otherContent:void 0,items:t.images&&t.images.length?[{id:ce(t,"annotation-page"),type:"AnnotationPage",items:t.images}]:void 0})}function Qe(t){return v({...p(t),...h(t),...c(t),items:t.resources&&t.resources.length?t.resources:void 0})}function Xe(t){return!t.canvases||t.canvases.length===0?{canvases:[],behavior:[]}:{canvases:t.canvases,behavior:t.viewingHint?[t.viewingHint]:[]}}function Ye(t){return v({...p(t),...h(t),...c(t),target:typeof t.on=="string"?encodeURI(t.on).trim():t.on,body:t.resource})}function Ze(t){const e=t;return v({...p(e),...h(e),...c(e)})}function Je(t){const e=[];return t.default&&t.default!=="rdf:nil"&&e.push(t.default),t.item&&t.item!=="rdf:nil"&&e.push(...t.item),{...p(t),...h(t),items:e}}function et(t){return v({...p(t),...h(t),...c(t),items:t.members})}function tt(t){const{"@id":e,"@type":i,"@context":n,profile:r,...a}=t,o={};return e&&(o["@id"]=e),o["@type"]=O(t),o["@type"]==="unknown"&&(n&&n.length&&(o["@context"]=n),o["@type"]="Service"),r&&(o.profile=pe(r)),v({...o,...a})}function it(t){return v({...p(t),...h(t),...c(t)})}const nt=new S({collection:[Be],manifest:[He],canvas:[Ke],annotationList:[Qe],sequence:[Xe],annotation:[Ye],contentResource:[Ze],choice:[Je],range:[et],service:[tt],layer:[it]});function rt(t){return t&&t["@context"]&&(t["@context"]==="http://iiif.io/api/presentation/2/context.json"||t["@context"].indexOf("http://iiif.io/api/presentation/2/context.json")!==-1||t["@context"]==="http://www.shared-canvas.org/ns/context.json")||t["@context"]==="http://iiif.io/api/image/2/context.json"?nt.traverseUnknown(t):t}const at={Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}};function fe(){return{Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}}}function ue(t,e){if(typeof t=="string")return{id:t,type:e};if(!t.id)throw new Error(`Invalid resource does not have an ID (${e})`);return t}function st(t){return(e,i)=>{const n=t[e]?t[e]:{};return r=>{const a=ue(r,i||e);return a&&a.id&&e?(n[a.id]=n[a.id]?Object.assign({},n[a.id],a):Object.assign({},a),{id:a.id,type:e==="ContentResource"?e:a.type}):a}}}function ot(t){return(e,i)=>n=>{const{id:r,type:a}=ue(n,i||e);if(typeof r=="undefined")throw new Error("Found invalid entity without an ID.");return e==="ContentResource"?t[r]=e:t[r]=a,n}}function lt(t){const e=JSON.stringify(t);let i=5381,n=e.length;for(;n;)i=i*33^e.charCodeAt(--n);const a=(i>>>0).toString(16);return a.length%2?"0"+a:a}function P(t){return e=>typeof e=="string"?{id:e,type:t}:e.id?e.type?e:{type:t,...e}:{id:`vault://${lt(e)}`,type:t,...e}}function _(t){return e=>({...t,...e})}function b(t){return Array.isArray(t)?t:[t]}function vt(t){return t.body&&(t.body=b(t.body)),t.seeAlso&&(t.seeAlso=b(t.seeAlso)),t.body&&(t.body=b(t.body)),t.audience&&(t.audience=b(t.audience)),t.accessibility&&(t.accessibility=b(t.accessibility)),t.motivation&&(t.motivation=b(t.motivation)),t}function pt(t){const e=rt(t),i=fe(),n={},r=st(i),a=ot(n),l=new L({collection:[_(j),a("Collection"),r("Collection")],manifest:[_($),a("Manifest"),r("Manifest")],canvas:[_(k),a("Canvas"),r("Canvas")],annotationPage:[P("AnnotationPage"),_(N),a("AnnotationPage"),r("AnnotationPage")],annotation:[P("Annotation"),vt,a("Annotation"),r("Annotation")],contentResource:[P("ContentResource"),a("ContentResource"),r("ContentResource")],range:[_(G),a("Range","Canvas"),r("Range","Canvas")],agent:[_(q),a("Agent"),r("Agent")]}).traverseUnknown(e);return{entities:i,resource:l,mapping:n}}const f="__$UNSET$__",F="__$UNWRAP$__";function ht(t,e){const i=t.requests[e],n=t.mapping[e];if(!(!n||i&&i.resourceUri&&!t.entities[n][i.resourceUri]))return t.entities[n][i?i.resourceUri:e]}function de(t){const e={};for(const[i,n]of t){if(i===F&&n!==f)return n;n!==f&&typeof n!="undefined"&&n!==null&&(e[i]=n)}return e}function ct(t,e,i){if(!e.type||!e.id)throw new Error("Unknown entity");if(!i[e.type])throw new Error(`Serializer not found for ${e.type}`);function n(r){const a=i[r.type];if(!a)return f;const o=ht(t,r.id)||(r.id&&r.type?r:null);if(!o)return f;const l=a(o,t,{isTopLevel:e.id===r.id});let R=l.next();for(;!R.done;){const w=R.value;let T=f;if(w)if(Array.isArray(w)){const D=[];for(const Ae of w)D.push(n(Ae));T=D}else T=n(w);R=l.next(T)}return R.value===f?f:de(R.value)}return n(e)}function m(t){if(!t)return;const e=Object.keys(t);if(e.length!==0){if(e.length===1){const i=e[0];if(!i)return"";const n=(t[i]||[]).join("");return i==="@none"||i==="none"||i==="en"?n:{"@language":i,"@value":n}}return e.map(i=>({"@language":i,"@value":(t[i]||[]).join("")}))}}function me(t){return Array.isArray(t)?t.map(e=>me(e)):typeof t=="string"?t:t.type&&t.type==="Canvas"?t.id:t}function u(t,e=!1){if(!!t)return t.length>1&&!e?t:t[0]||void 0}function ft(t){if(!!t){if(typeof t=="string")return{"@id":t};if("@id"in t){const e={...t};return delete e["@type"],e}return{"@context":"http://iiif.io/api/image/2/context.json","@id":t.id,profile:`http://iiif.io/api/image/2/profiles/${t.profile}.json`}}}function g(t,e){return[["@id",t.id],["@type",e],["format",t.format],["height",t.height],["width",t.width],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0]]}function*y(t){const e=t.provider?yield t.provider[0]:void 0;return[["label",m(t.label)],["metadata",t.metadata&&t.metadata.length?t.metadata.map(i=>({label:m(i.label)||"",value:m(i.value)||""})):void 0],["description",m(t.summary)],["thumbnail",u(yield t.thumbnail)],["navDate",t.navDate],["logo",e?u(e.logo):void 0],["homepage",e?e.homepage:void 0],["attribution",t.requiredStatement?m(t.requiredStatement.value):void 0]]}function*E(t){return[["seeAlso",u(yield t.seeAlso)],["service",u((t.service||[]).map(ft))],["rendering",u(yield t.rendering)],["startCanvas",t.start?t.start.id:void 0]]}const ut={Manifest:function*(t){return[...g(t,"sc:Manifest"),...yield*y(t),...yield*E(t),["sequences",[{"@id":`${t.id}/sequence0`,"@type":"sc:Sequence",canvases:yield t.items}]],["structures",yield t.structures]]},Canvas:function*(t){const i=(yield t.items)[0];return[...g(t,"sc:Canvas"),...yield*y(t),...yield*E(t),["images",i?[i.resources]:void 0],["annotations",t.annotations&&t.annotations.length?u(yield t.annotations):void 0]]},AnnotationPage:function*(t){return[...g(t,"sc:AnnotationList"),...yield*y(t),["resources",t.items&&t.items.length?u(yield t.items):void 0]]},Annotation:function*(t){return[["@id",t.id],["@type","oa:Annotation"],["motivation","sc:painting"],["on",me(t.target)],["resource",u(yield t.body,!0)]]},ContentResource:function*(t){switch(t.type){case"Image":return[...g(t,"dctypes:Image"),...yield*y(t),...yield*E(t)];case"Text":case"Dataset":default:return[...g(t,void 0),...yield*y(t)]}},AnnotationCollection:function*(t){return[["@id",t.id],["@type","sc:Layer"],["label",m(t.label)]]},Collection:function*(t){return[...g(t,"sc:Collection"),...yield*y(t),...yield*E(t),["members",yield*t.items]]},Range:function*(t){const e=[],i=[];if(t.items)for(const n of t.items){const r=yield n;e.push({"@id":n.id,"@type":n.type,label:r?r.label:void 0,within:t.id}),n.type==="Canvas"&&i.push(n.id)}return[...g(t,"sc:Range"),...yield*y(t),...yield*E(t),["canvases",i.length===e.length?i:void 0],["members",i.length!==e.length?e:void 0]]}};function A(t){return[["id",t.id?.startsWith("vault://")?void 0:t.id],["type",t.type],["format",t.format],["profile",t.profile],["height",t.height],["width",t.width],["duration",t.duration||void 0],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0],["behavior",t.behavior&&t.behavior.length?t.behavior:void 0],["timeMode",t.timeMode],["motivation",Array.isArray(t.motivation)?t.motivation[0]:t.motivation]]}function s(t){if(!(!t||t.length===0))return t}function ge(t){if(t&&t.type&&t.type==="ImageService2"){const{id:e,type:i,profile:n,...r}=t;return{"@id":e,"@type":i,profile:n.startsWith("http")?n:`http://iiif.io/api/image/2/${n}.json`,...r}}return t}function ye(t){if(!(!t||t.length===0))return t.map(ge)}function*C(t){return[["label",t.label],["metadata",s(t.metadata)],["summary",t.summary],["requiredStatement",t.requiredStatement],["rights",t.rights],["navDate",t.navDate],["language",t.language],["thumbnail",s(yield t.thumbnail)],["placeholderCanvas",yield t.placeholderCanvas],["accompanyingCanvas",yield t.accompanyingCanvas],["provider",s(yield t.provider)]]}function*I(t){return[["seeAlso",s(yield t.seeAlso)],["service",ye(t.service)],["services",ye(t.services)],["rendering",s(yield t.rendering)],["supplementary",s(yield t.supplementary)],["homepage",s(yield t.homepage)],["logo",s(yield t.logo)],["partOf",s(yield t.partOf)],["start",t.start]]}const dt={Manifest:function*(t,e,{isTopLevel:i}){return i?[["@context","http://iiif.io/api/presentation/3/context.json"],...A(t),...yield*C(t),...yield*I(t),["items",yield t.items],["structures",s(yield t.structures)],["annotations",s(yield t.annotations)]]:[...A(t),...yield*C(t)]},Canvas:function*(t){return[...A(t),...yield*C(t),...yield*I(t),["items",yield t.items],["annotations",s(yield t.annotations)]]},Agent:function*(t){return[["id",t.id],["type","Agent"],["label",t.label],...yield*I(t)]},AnnotationPage:function*(t){return[...Object.entries(t).map(([i,n])=>[i,Array.isArray(n)?s(n):n]).filter(([i,n])=>i!=="items"),...yield*I(t),["items",yield t.items]]},Service:function*(t){return[[F,ge(t)]]},Annotation:function*(t){const e=Object.entries(t).map(([n,r])=>n==="motivation"?[n,Array.isArray(r)?r[0]:r]:[n,Array.isArray(r)?s(r):r]).filter(([n])=>n!=="body"),i=yield t.body;return[...e,["body",i.length===1?i[0]:i]]},ContentResource:function*(t){return[...A(t),...yield*C(t),...yield*I(t),["annotations",s(yield t.annotations)],["items",s(yield t.items)]]},AnnotationCollection:function*(t){return[["id",t.id],["type","AnnotationCollection"],["label",t.label]]},Collection:function*(t,e,{isTopLevel:i}){return i?[["@context","http://iiif.io/api/presentation/3/context.json"],...A(t),...yield*C(t),...yield*I(t),["items",s(yield t.items)]]:[...A(t),...yield*C(t)]},Range:function*(t){const e=[];for(const i of t.items)i.type==="Range"?e.push(yield i):e.push(i);return[...A(t),...yield*C(t),...yield*I(t),["items",e],["annotations",s(yield t.annotations)]]}};exports.Traverse=L,exports.UNSET=f,exports.UNWRAP=F,exports.defaultEntities=at,exports.emptyAgent=q,exports.emptyAnnotation=Ce,exports.emptyAnnotationPage=N,exports.emptyCanvas=k,exports.emptyCollection=j,exports.emptyManifest=$,exports.emptyRange=G,exports.getDefaultEntities=fe,exports.identifyResource=U,exports.languageString2to3=m,exports.normalize=pt,exports.serialize=ct,exports.serializeConfigPresentation2=ut,exports.serializeConfigPresentation3=dt,exports.serializedFieldsToObject=de,exports.types=M; |
@@ -1,1 +0,1 @@ | ||
| const Ce={id:"https://iiif-parser/annotation",type:"Annotation",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[],accessibility:[],audience:[],body:[],bodyValue:null,canonical:null,created:null,creator:[],generated:null,generator:[],modified:null,motivation:[],rights:[],stylesheet:null,target:[],timeMode:void 0,via:[],partOf:[]},k={id:"https://iiif-parser/annotation-page",type:"AnnotationPage",behavior:[],motivation:null,label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[]},N={id:"https://iiif-parser/empty-canvas",type:"Canvas",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],duration:0,height:0,width:0},$={id:"https://iiif-parser/empty-collection",type:"Collection",label:null,viewingDirection:"left-to-right",behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],services:[]},j={id:"https://iiif-parser/empty-manifest",type:"Manifest",annotations:[],behavior:[],homepage:[],items:[],label:null,logo:[],metadata:[],motivation:null,navDate:null,provider:[],partOf:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,rendering:[],requiredStatement:null,rights:null,seeAlso:[],service:[],services:[],start:null,structures:[],summary:null,thumbnail:[],viewingDirection:"left-to-right"},G={id:"https://iiif-parser/empty-canvas",type:"Range",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],start:null,supplementary:null,viewingDirection:"left-to-right"},q={id:"https://iiif-parser/empty-agent",type:"Agent",label:{},logo:[],seeAlso:[],homepage:[]},M=["Collection","Manifest","Canvas","AnnotationPage","AnnotationCollection","Annotation","ContentResource","Range","Service","Selector","Agent"];function U(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t.type=="string"){const e=M.indexOf(t.type);if(e!==-1)return M[e]}if(t.profile)return"Service";throw new Error("Resource type is not known")}class L{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationCollection:[],annotationPage:[],annotation:[],contentResource:[],choice:[],range:[],service:[],agent:[],...e},this.options={allowUndefinedReturn:!1,...i}}static all(e){return new L({collection:[e],manifest:[e],canvas:[e],annotationCollection:[e],annotationPage:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e]})}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=e.thumbnail.map(i=>this.traverseType(i,this.traversals.contentResource))),e.provider&&(e.provider=e.provider.map(i=>this.traverseAgent(i))),e}traverseLinking(e){return e.seeAlso&&(e.seeAlso=e.seeAlso.map(i=>this.traverseType(i,this.traversals.contentResource))),e.service&&(e.service=e.service.map(i=>this.traverseType(i,this.traversals.service))),e.services&&(e.services=e.services.map(i=>this.traverseType(i,this.traversals.service))),e.logo&&(e.logo=e.logo.map(i=>this.traverseType(i,this.traversals.contentResource))),e.homepage&&(e.homepage=e.homepage.map(i=>this.traverseType(i,this.traversals.contentResource))),e.partOf&&(e.partOf=e.partOf.map(i=>typeof i=="string"||!i.type?this.traverseType(i,this.traversals.contentResource):i.type==="Canvas"?this.traverseType(i,this.traversals.canvas):i.type==="AnnotationCollection"?this.traverseType(i,this.traversals.annotationCollection):this.traverseType(i,this.traversals.contentResource))),e.start&&(e.start=e.start?this.traverseType(e.start,this.traversals.canvas):null),e.rendering&&(e.rendering=e.rendering.map(i=>this.traverseType(i,this.traversals.contentResource))),e.supplementary&&(e.supplementary=e.supplementary.map(i=>this.traverseType(i,this.traversals.contentResource))),e}traverseCollectionItems(e){return e.items&&e.items.map(i=>i.type==="Collection"?this.traverseCollection(i):this.traverseManifest(i)),e}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseInlineAnnotationPages(this.traverseLinking(this.traversePosterCanvas(this.traverseCollectionItems(e))))),this.traversals.collection)}traverseManifestItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseCanvas(i))),e}traverseManifestStructures(e){return e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseManifest(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traverseManifestStructures(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e)))))),this.traversals.manifest)}traverseCanvasItems(e){return e.items=(e.items||[]).map(i=>this.traverseAnnotationPage(i)),e}traverseInlineAnnotationPages(e){return typeof e=="string"||!e||e.annotations&&(e.annotations=e.annotations.map(i=>this.traverseAnnotationPage(i))),e}traverseCanvas(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))))),this.traversals.canvas)}traverseAnnotationPageItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseAnnotation(i))),e}traverseAnnotationPage(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationPageItems(e))),this.traversals.annotationPage)}traverseAnnotationBody(e){return Array.isArray(e.body)?e.body=e.body.map(i=>this.traverseContentResource(i)):e.body&&(e.body=this.traverseContentResource(e.body)),e}traversePosterCanvas(e){return e.posterCanvas&&(e.posterCanvas=this.traverseType(e.posterCanvas,this.traversals.canvas)),e.placeholderCanvas&&(e.placeholderCanvas=this.traverseType(e.placeholderCanvas,this.traversals.canvas)),e.accompanyingCanvas&&(e.accompanyingCanvas=this.traverseType(e.accompanyingCanvas,this.traversals.canvas)),e}traverseAnnotation(e){return this.traverseType(this.traverseLinking(this.traverseAnnotationBody(e)),this.traversals.annotation)}traverseContentResourceLinking(e){return typeof e=="string"||!e||e&&e.service&&(e.service=(e.service||[]).map(i=>this.traverseType(i,this.traversals.service))),e}traverseContentResource(e){return e.type==="Choice"&&(e.items=e.items.map(i=>this.traverseContentResource(i))),this.traverseType(this.traverseInlineAnnotationPages(this.traverseContentResourceLinking(e)),this.traversals.contentResource)}traverseRangeRanges(e){return e.items&&(e.items=e.items.map(i=>typeof i=="string"?this.traverseCanvas({id:i,type:"Canvas"}):i.type==="Manifest"?this.traverseManifest(i):this.traverseRange(i))),e}traverseRange(e){return this.traverseType(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseRangeRanges(e)))),this.traversals.range)}traverseAgent(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.agent)}traverseType(e,i){return i.reduce((n,r)=>{const s=r(n);return typeof s=="undefined"&&!this.options.allowUndefinedReturn?n:s},e)}traverseService(e){return this.traverseType(e,this.traversals.service)}traverseUnknown(e){const i=U(e);switch(i){case"Collection":return this.traverseCollection(e);case"Manifest":return this.traverseManifest(e);case"Canvas":return this.traverseCanvas(e);case"AnnotationPage":return this.traverseAnnotationPage(e);case"Annotation":return this.traverseAnnotation(e);case"ContentResource":return this.traverseContentResource(e);case"Range":return this.traverseRange(e);case"Service":return this.traverseService(e);case"Agent":return this.traverseAgent(e);default:throw new Error(`Unknown or unsupported resource type of ${i}`)}}}const V=["sc:Collection","sc:Manifest","sc:Canvas","oa:AnnotationList","oa:Annotation","sc:Range","sc:Layer","sc:Sequence","oa:Choice","Service","ContentResource"];function Ie(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t["@type"]=="string"){const e=V.indexOf(t["@type"]);if(e!==-1)return V[e]}if(t.profile)return"Service";if(t.format||t["@type"])return"ContentResource";throw new Error("Resource type is not known")}class x{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationList:[],sequence:[],annotation:[],contentResource:[],choice:[],range:[],service:[],layer:[],...e},this.options={convertPropsToArray:!0,mergeMemberProperties:!0,allowUndefinedReturn:!1,...i}}static all(e){return new x({collection:[e],manifest:[e],canvas:[e],annotationList:[e],sequence:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e],layer:[e]})}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(e))),this.traversals.collection)}traverseCollectionItems(e){if(this.options.mergeMemberProperties){const i=[...(e.manifests||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Manifest"}:n),...(e.collections||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Collection"}:n),...e.members||[]];delete e.collections,delete e.manifests,e.members=i}return e.manifests&&(e.manifests=e.manifests.map(i=>this.traverseManifest(typeof i=="string"?{"@id":i,"@type":"sc:Manifest"}:i))),e.collections&&(e.collections=e.collections.map(i=>this.traverseCollection(typeof i=="string"?{"@id":i,"@type":"sc:Collection"}:i))),e.members&&(e.members=e.members.map(i=>typeof i=="string"?i:this.traverseUnknown(i))),e}traverseManifest(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e))),this.traversals.manifest)}traverseManifestItems(e){return e.sequences&&(e.sequences=e.sequences.map(i=>this.traverseSequence(i))),e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseSequence(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(e))),this.traversals.sequence)}traverseSequenceItems(e){return e.canvases&&(e.canvases=e.canvases.map(i=>this.traverseCanvas(i))),e}traverseCanvas(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))),this.traversals.canvas)}traverseCanvasItems(e){return e.images&&(e.images=e.images.map(i=>this.traverseAnnotation(i))),e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseRange(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(e))),this.traversals.range)}traverseRangeItems(e){if(this.options.mergeMemberProperties){const i=[...(e.ranges||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Range"}:n),...(e.canvases||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Canvas"}:n),...e.members||[]];delete e.ranges,delete e.canvases,e.members=i.length?i.map(n=>this.traverseUnknown(n)):void 0}return e}traverseAnnotationList(e){const i=typeof e=="string"?{"@id":e,"@type":"oa:AnnotationList"}:e;return this.traverseType(this.traverseDescriptive(this.traverseAnnotationListItems(i)),this.traversals.annotationList)}traverseAnnotationListItems(e){return e.resources&&(e.resources=e.resources.map(i=>this.traverseAnnotation(i))),e}traverseAnnotation(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(e))),this.traversals.annotation)}traverseAnnotationItems(e){return e.resource&&(e.resource=this.traverseContentResource(e.resource)),e.on,e}traverseLayer(e){return this.traverseType(this.traverseLinking(this.traverseLayerItems(e)),this.traversals.layer)}traverseLayerItems(e){return e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseChoice(e){return this.traverseType(this.traverseChoiceItems(e),this.traversals.choice)}traverseChoiceItems(e){return e.default&&e.default!=="rdf:nil"&&(e.default=this.traverseContentResource(e.default)),e.item&&e.item!=="rdf:nil"&&(e.item=e.item.map(i=>this.traverseContentResource(i))),e}traverseService(e){return this.traverseType(this.traverseLinking(e),this.traversals.service)}traverseContentResource(e){return e["@type"]==="oa:Choice"?this.traverseChoice(e):this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.contentResource)}traverseUnknown(e){if(!e["@type"]||typeof e=="string")return e;switch(Ie(e)){case"sc:Collection":return this.traverseCollection(e);case"sc:Manifest":return this.traverseManifest(e);case"sc:Canvas":return this.traverseCanvas(e);case"sc:Sequence":return this.traverseSequence(e);case"sc:Range":return this.traverseRange(e);case"oa:Annotation":return this.traverseAnnotation(e);case"oa:AnnotationList":return this.traverseAnnotationList(e);case"sc:Layer":return this.traverseLayer(e);case"Service":return this.traverseService(e);case"oa:Choice":return this.traverseChoice(e);case"ContentResource":return this.traverseContentResource(e)}return e.profile?this.traverseService(e):e}traverseImageResource(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],r=[];for(const s of n)typeof s=="string"?r.push(this.traverseContentResource({"@id":s,"@type":"dctypes:Image"})):r.push(this.traverseContentResource(s));return!i&&!this.options.convertPropsToArray?r[0]:r}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=this.traverseImageResource(e.thumbnail)),e.logo&&(e.logo=this.traverseImageResource(e.logo)),e}traverseOneOrMoreServices(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],r=[];for(const s of n)r.push(this.traverseService(s));return!i&&!this.options.convertPropsToArray?r[0]:r}traverseLinking(e){return e.related&&(e.related=this.traverseOneOrManyType(e.related,this.traversals.contentResource)),e.rendering&&(e.rendering=this.traverseOneOrManyType(e.rendering,this.traversals.contentResource)),e.service&&(e.service=this.traverseOneOrMoreServices(e.service)),e.seeAlso&&(e.seeAlso=this.traverseOneOrManyType(e.seeAlso,this.traversals.contentResource)),e.within&&(typeof e.within=="string"||(e.within=this.traverseOneOrManyType(e.within,this.traversals.contentResource))),e.startCanvas&&(typeof e.startCanvas=="string"?e.startCanvas=this.traverseType({"@id":e.startCanvas,"@type":"sc:Canvas"},this.traversals.canvas):e.startCanvas&&this.traverseType(e.startCanvas,this.traversals.canvas)),e.contentLayer&&(typeof e.contentLayer=="string"?e.contentLayer=this.traverseLayer({"@id":e.contentLayer,"@type":"sc:Layer"}):e.contentLayer=this.traverseLayer(e.contentLayer)),e}traverseOneOrManyType(e,i){if(!Array.isArray(e))if(this.options.convertPropsToArray)e=[e];else return this.traverseType(e,i);return e.map(n=>this.traverseType(n,i))}traverseType(e,i){return i.reduce((n,r)=>{const s=r(n);return typeof s=="undefined"&&!this.options.allowUndefinedReturn?n:s},e)}}const _e="http://library.stanford.edu/iiif/image-api/compliance.html#level0",W="http://library.stanford.edu/iiif/image-api/compliance.html#level1",z="http://library.stanford.edu/iiif/image-api/compliance.html#level2",be="http://library.stanford.edu/iiif/image-api/conformance.html#level0",B="http://library.stanford.edu/iiif/image-api/conformance.html#level1",H="http://library.stanford.edu/iiif/image-api/conformance.html#level2",Re="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0",K="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1",Q="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2",we="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0",X="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1",Y="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2",Ee="http://iiif.io/api/image/1/level0.json",Le="http://iiif.io/api/image/1/profiles/level0.json",Z="http://iiif.io/api/image/1/level1.json",J="http://iiif.io/api/image/1/profiles/level1.json",ee="http://iiif.io/api/image/1/level2.json",te="http://iiif.io/api/image/1/profiles/level2.json",Te="http://iiif.io/api/image/2/level0.json",Me="http://iiif.io/api/image/2/profiles/level0.json",ie="http://iiif.io/api/image/2/level1.json",ne="http://iiif.io/api/image/2/profiles/level1.json",re="http://iiif.io/api/image/2/level2.json",se="http://iiif.io/api/image/2/profiles/level2.json",xe="level0",ae="level1",oe="level2",Se="http://iiif.io/api/image/2/level0",le="http://iiif.io/api/image/2/level1",ve="http://iiif.io/api/image/2/level2",Oe=[le,ve,W,z,B,H,K,Q,X,Y,Z,J,ee,te,ie,ne,re,se,ae,oe],Pe=[Se,le,ve,_e,W,z,be,B,H,Re,K,Q,we,X,Y,Ee,Le,Z,J,ee,te,Te,Me,ie,ne,re,se,xe,ae,oe],S={attributionLabel:"Attribution",lang:"none",providerId:"http://example.org/provider",providerName:"Unknown"};function d(t,e="none"){if(!t)return{};const i=Array.isArray(t)?t:[t],n={};for(const r of i){if(typeof r=="string"){n[e]=n[e]?n[e]:[],n[e].push(r||"");continue}if(!r["@language"]){n[e]=n[e]?n[e]:[],n[e].push(r["@value"]||"");continue}const s=r["@language"];n[s]=n[s]?n[s]:[],n[s].push(r["@value"]||"")}return n}function pe(t){if(Array.isArray(t))return pe(t.find(e=>typeof e=="string"));if(Pe.indexOf(t)!==-1)return"level2";if(Oe.indexOf(t)!==-1)return"level1";if(typeof t=="string")return t}function Fe(t){const e=Array.isArray(t)?t:[t];for(const i of e)switch(i){case"http://iiif.io/api/image/2/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2":return"ImageService2";case"http://iiif.io/api/image/1/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/context.json":return"ImageService1";case"http://iiif.io/api/annex/openannotation/context.json":return"ImageApiSelector"}}function De(t){switch(t){case"http://iiif.io/api/image/2/level0.json":case"http://iiif.io/api/image/2/level1.json":case"http://iiif.io/api/image/2/level2.json":return"ImageService2";case"http://iiif.io/api/auth/1/kiosk":case"http://iiif.io/api/auth/1/login":case"http://iiif.io/api/auth/1/clickthrough":case"http://iiif.io/api/auth/1/external":case"http://iiif.io/api/auth/0/kiosk":case"http://iiif.io/api/auth/0/login":case"http://iiif.io/api/auth/0/clickthrough":case"http://iiif.io/api/auth/0/external":return"AuthCookieService1";case"http://iiif.io/api/auth/1/token":case"http://iiif.io/api/auth/0/token":return"AuthTokenService1";case"http://iiif.io/api/auth/1/logout":case"http://iiif.io/api/auth/0/logout":return"AuthLogoutService1";case"http://iiif.io/api/search/1/search":case"http://iiif.io/api/search/0/search":return"SearchService1";case"http://iiif.io/api/search/1/autocomplete":case"http://iiif.io/api/search/0/autocomplete":return"AutoCompleteService1"}}function ke(t){return Array.isArray(t)?t:[t]}function Ne(t){for(const e of["sc","oa","dcterms","dctypes","iiif"])if(t.startsWith(`${e}:`))return t.slice(e.length+1);return t}const $e=["Collection","Manifest","Annotation","AnnotationPage","Range","Service"];function O(t){const e=t["@id"]||t.id;let i=t["@type"]||t.type;const n=t.profile||void 0,r=t["@context"]||void 0;if(n){const s=De(n);if(s)return s}if(r){const s=Fe(r);if(s)return s}if(i){if(Array.isArray(i)){if(i.indexOf("oa:CssStylesheet")!==-1)return"CssStylesheet";if(i.indexOf("cnt:ContentAsText")!==-1)return"TextualBody";i=i[0]}for(const s of["sc","oa","dcterms","dctypes","iiif"])if(i.startsWith(`${s}:`)){i=i.slice(s.length+1);break}switch(i){case"Layer":return"AnnotationCollection";case"AnnotationList":return"AnnotationPage";case"cnt:ContentAsText":return"TextualBody"}}if(i&&$e.indexOf(i)!==-1)return i;if(t.format){if(t.format.startsWith("image/"))return"Image";if(t.format.startsWith("text/")||t.format==="application/pdf")return"Text";if(t.format.startsWith("application/"))return"Dataset"}return e&&(e.endsWith(".jpg")||e.endsWith(".png")||e.endsWith(".jpeg"))?"Image":i||"unknown"}const je=/http(s)?:\/\/(creativecommons.org|rightsstatements.org)[^"'\\<\n]+/gm;function Ge(t){const e=t.match(je);return e?e[0]:t}function qe(t,e="Rights/License",i="none"){let n=null;const r=[],s=Array.isArray(t)?t:[t];for(const o of s){const l=o?Ge(o):void 0;if(l&&(l.indexOf("creativecommons.org")!==-1||l.indexOf("rightsstatements.org")!==-1)){l.startsWith("https://")?n=`http://${l.slice(8)}`:n=l;continue}l&&r.push({label:{[i]:[e]},value:{[i]:[l]}})}return[n,r]}const Ue=["http://iiif.io/api/presentation/2/context.json","http://iiif.io/api/image/2/context.json","http://iiif.io/api/image/1/context.json","http://library.stanford.edu/iiif/image-api/1.1/context.json","http://iiif.io/api/search/1/context.json","http://iiif.io/api/search/0/context.json","http://iiif.io/api/auth/1/context.json","http://iiif.io/api/auth/0/context.json","http://iiif.io/api/annex/openannotation/context.json"];function Ve(t){if(t){const e=Array.isArray(t)?t:[t],i=[];for(const n of e)n==="http://iiif.io/api/presentation/2/context.json"&&i.push("http://iiif.io/api/presentation/3/context.json"),Ue.indexOf(n)===-1&&i.push(n);if(e.length)return i.length===1?i[0]:i}}function We(t){return t?t.map(e=>({label:d(e.label),value:d(e.value)})):[]}function v(t){for(const e in t)(typeof t[e]=="undefined"||t[e]===null)&&delete t[e];return t}let he=0;function ce(t,e){const i=encodeURI(t.id||t["@id"]||"").trim();return i&&e?`${i}/${e}`:i||(he++,`http://example.org/${t["@type"]}${e?`/${e}`:""}/${he}`)}function p(t){const e=[...t.behavior||[]];return t.viewingHint&&e.push(t.viewingHint),{"@context":t["@context"]?Ve(t["@context"]):void 0,id:(t["@id"]||ce(t)).trim(),type:O(t),behavior:e.length?e:void 0,height:t.height?t.height:void 0,width:t.width?t.width:void 0,motivation:t.motivation?Ne(t.motivation):void 0,viewingDirection:t.viewingDirection,profile:t.profile,format:t.format?t.format:void 0,duration:void 0,timeMode:void 0}}function h(t){const[e,i]=qe(t.license),n=[...t.metadata?We(t.metadata):[],...i];return{rights:e,metadata:n.length?n:void 0,label:t.label?d(t.label):void 0,requiredStatement:t.attribution?{label:d(S.attributionLabel),value:d(t.attribution)}:void 0,navDate:t.navDate,summary:t.description?d(t.description):void 0,thumbnail:t.thumbnail}}function ze(t){if(!t.within)return;const e=Array.isArray(t.within)?t.within:[t.within],i=[];for(const n of e)if(typeof n=="string"){if(n)switch(t["@type"]){case"sc:Manifest":i.push({id:n,type:"Collection"});break}}else n["@id"]&&i.push({id:n["@id"],type:O(n)});return i.length?i:void 0}function c(t){const e=t.related?Array.isArray(t.related)?t.related:[t.related]:[],i=t.contentLayer;return{provider:t.logo||e.length?[{id:S.providerId,type:"Agent",homepage:e.length?[e[0]]:void 0,logo:t.logo?Array.isArray(t.logo)?t.logo:[t.logo]:void 0,label:d(S.providerName)}]:void 0,partOf:ze(t),rendering:t.rendering,seeAlso:t.seeAlso,start:t.startCanvas,service:t.service?ke(t.service):void 0,supplementary:i?[i]:void 0}}function Be(t){return v({...p(t),...h(t),...c(t),items:t.members})}function He(t){const e=[],i=[];for(const r of t.sequences||[])r.canvases.length&&e.push(...r.canvases),r.behavior&&i.push(...r.behavior);const n=p(t);return i.length&&(n.behavior?n.behavior.push(...i):n.behavior=i),v({...n,...h(t),...c(t),items:e,structures:t.structures})}function Ke(t){return v({...p(t),...h(t),...c(t),annotations:t.otherContent&&t.otherContent.length?t.otherContent:void 0,items:t.images&&t.images.length?[{id:ce(t,"annotation-page"),type:"AnnotationPage",items:t.images}]:void 0})}function Qe(t){return v({...p(t),...h(t),...c(t),items:t.resources&&t.resources.length?t.resources:void 0})}function Xe(t){return!t.canvases||t.canvases.length===0?{canvases:[],behavior:[]}:{canvases:t.canvases,behavior:t.viewingHint?[t.viewingHint]:[]}}function Ye(t){return v({...p(t),...h(t),...c(t),target:typeof t.on=="string"?encodeURI(t.on).trim():t.on,body:t.resource})}function Ze(t){const e=t;return v({...p(e),...h(e),...c(e)})}function Je(t){const e=[];return t.default&&t.default!=="rdf:nil"&&e.push(t.default),t.item&&t.item!=="rdf:nil"&&e.push(...t.item),{...p(t),...h(t),items:e}}function et(t){return v({...p(t),...h(t),...c(t),items:t.members})}function tt(t){const{"@id":e,"@type":i,"@context":n,profile:r,...s}=t,o={};return e&&(o["@id"]=e),o["@type"]=O(t),o["@type"]==="unknown"&&(n&&n.length&&(o["@context"]=n),o["@type"]="Service"),r&&(o.profile=pe(r)),v({...o,...s})}function it(t){return v({...p(t),...h(t),...c(t)})}const nt=new x({collection:[Be],manifest:[He],canvas:[Ke],annotationList:[Qe],sequence:[Xe],annotation:[Ye],contentResource:[Ze],choice:[Je],range:[et],service:[tt],layer:[it]});function rt(t){return t&&t["@context"]&&(t["@context"]==="http://iiif.io/api/presentation/2/context.json"||t["@context"].indexOf("http://iiif.io/api/presentation/2/context.json")!==-1||t["@context"]==="http://www.shared-canvas.org/ns/context.json")||t["@context"]==="http://iiif.io/api/image/2/context.json"?nt.traverseUnknown(t):t}const st={Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}};function fe(){return{Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}}}function ue(t,e){if(typeof t=="string")return{id:t,type:e};if(!t.id)throw new Error(`Invalid resource does not have an ID (${e})`);return t}function at(t){return(e,i)=>{const n=t[e]?t[e]:{};return r=>{const s=ue(r,i||e);return s&&s.id&&e?(n[s.id]=n[s.id]?Object.assign({},n[s.id],s):Object.assign({},s),{id:s.id,type:e==="ContentResource"?e:s.type}):s}}}function ot(t){return(e,i)=>n=>{const{id:r,type:s}=ue(n,i||e);if(typeof r=="undefined")throw new Error("Found invalid entity without an ID.");return e==="ContentResource"?t[r]=e:t[r]=s,n}}function lt(t){const e=JSON.stringify(t);let i=5381,n=e.length;for(;n;)i=i*33^e.charCodeAt(--n);const s=(i>>>0).toString(16);return s.length%2?"0"+s:s}function P(t){return e=>typeof e=="string"?{id:e,type:t}:e.id?e.type?e:{type:t,...e}:{id:`vault://${lt(e)}`,type:t,...e}}function _(t){return e=>({...t,...e})}function b(t){return Array.isArray(t)?t:[t]}function vt(t){return t.body&&(t.body=b(t.body)),t.seeAlso&&(t.seeAlso=b(t.seeAlso)),t.body&&(t.body=b(t.body)),t.audience&&(t.audience=b(t.audience)),t.accessibility&&(t.accessibility=b(t.accessibility)),t.motivation&&(t.motivation=b(t.motivation)),t}function pt(t){const e=rt(t),i=fe(),n={},r=at(i),s=ot(n),l=new L({collection:[_($),s("Collection"),r("Collection")],manifest:[_(j),s("Manifest"),r("Manifest")],canvas:[_(N),s("Canvas"),r("Canvas")],annotationPage:[P("AnnotationPage"),_(k),s("AnnotationPage"),r("AnnotationPage")],annotation:[P("Annotation"),vt,s("Annotation"),r("Annotation")],contentResource:[P("ContentResource"),s("ContentResource"),r("ContentResource")],range:[_(G),s("Range","Canvas"),r("Range","Canvas")],agent:[_(q),s("Agent"),r("Agent")]}).traverseUnknown(e);return{entities:i,resource:l,mapping:n}}const f="__$UNSET$__",F="__$UNWRAP$__";function ht(t,e){const i=t.requests[e],n=t.mapping[e];if(!(!n||i&&i.resourceUri&&!t.entities[n][i.resourceUri]))return t.entities[n][i?i.resourceUri:e]}function de(t){const e={};for(const[i,n]of t){if(i===F&&n!==f)return n;n!==f&&typeof n!="undefined"&&n!==null&&(e[i]=n)}return e}function ct(t,e,i){if(!e.type||!e.id)throw new Error("Unknown entity");if(!i[e.type])throw new Error(`Serializer not found for ${e.type}`);function n(r){const s=i[r.type];if(!s)return f;const o=ht(t,r.id)||(r.id&&r.type?r:null);if(!o)return f;const l=s(o,t,{isTopLevel:e.id===r.id});let R=l.next();for(;!R.done;){const E=R.value;let T=f;if(E)if(Array.isArray(E)){const D=[];for(const Ae of E)D.push(n(Ae));T=D}else T=n(E);R=l.next(T)}return R.value===f?f:de(R.value)}return n(e)}function m(t){if(!t)return;const e=Object.keys(t);if(e.length!==0){if(e.length===1){const i=e[0];if(!i)return"";const n=(t[i]||[]).join("");return i==="@none"||i==="none"||i==="en"?n:{"@language":i,"@value":n}}return e.map(i=>({"@language":i,"@value":(t[i]||[]).join("")}))}}function me(t){return Array.isArray(t)?t.map(e=>me(e)):typeof t=="string"?t:t.type&&t.type==="Canvas"?t.id:t}function u(t,e=!1){if(!!t)return t.length>1&&!e?t:t[0]||void 0}function ft(t){if(!!t){if(typeof t=="string")return{"@id":t};if("@id"in t){const e={...t};return delete e["@type"],e}return{"@context":"http://iiif.io/api/image/2/context.json","@id":t.id,profile:`http://iiif.io/api/image/2/profiles/${t.profile}.json`}}}function g(t,e){return[["@id",t.id],["@type",e],["format",t.format],["height",t.height],["width",t.width],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0]]}function*y(t){const e=t.provider?yield t.provider[0]:void 0;return[["label",m(t.label)],["metadata",t.metadata&&t.metadata.length?t.metadata.map(i=>({label:m(i.label)||"",value:m(i.value)||""})):void 0],["description",m(t.summary)],["thumbnail",u(yield t.thumbnail)],["navDate",t.navDate],["logo",e?u(e.logo):void 0],["homepage",e?e.homepage:void 0],["attribution",t.requiredStatement?m(t.requiredStatement.value):void 0]]}function*w(t){return[["seeAlso",u(yield t.seeAlso)],["service",u((t.service||[]).map(ft))],["rendering",u(yield t.rendering)],["startCanvas",t.start?t.start.id:void 0]]}const ut={Manifest:function*(t){return[...g(t,"sc:Manifest"),...yield*y(t),...yield*w(t),["sequences",[{"@id":`${t.id}/sequence0`,"@type":"sc:Sequence",canvases:yield t.items}]],["structures",yield t.structures]]},Canvas:function*(t){const i=(yield t.items)[0];return[...g(t,"sc:Canvas"),...yield*y(t),...yield*w(t),["images",i?[i.resources]:void 0],["annotations",t.annotations&&t.annotations.length?u(yield t.annotations):void 0]]},AnnotationPage:function*(t){return[...g(t,"sc:AnnotationList"),...yield*y(t),["resources",t.items&&t.items.length?u(yield t.items):void 0]]},Annotation:function*(t){return[["@id",t.id],["@type","oa:Annotation"],["motivation","sc:painting"],["on",me(t.target)],["resource",u(yield t.body,!0)]]},ContentResource:function*(t){switch(t.type){case"Image":return[...g(t,"dctypes:Image"),...yield*y(t),...yield*w(t)];case"Text":case"Dataset":default:return[...g(t,void 0),...yield*y(t)]}},AnnotationCollection:function*(t){return[["@id",t.id],["@type","sc:Layer"],["label",m(t.label)]]},Collection:function*(t){return[...g(t,"sc:Collection"),...yield*y(t),...yield*w(t),["members",yield*t.items]]},Range:function*(t){const e=[],i=[];if(t.items)for(const n of t.items){const r=yield n;e.push({"@id":n.id,"@type":n.type,label:r?r.label:void 0,within:t.id}),n.type==="Canvas"&&i.push(n.id)}return[...g(t,"sc:Range"),...yield*y(t),...yield*w(t),["canvases",i.length===e.length?i:void 0],["members",i.length!==e.length?e:void 0]]}};function A(t){return[["id",t.id?.startsWith("vault://")?void 0:t.id],["type",t.type],["format",t.format],["profile",t.profile],["height",t.height],["width",t.width],["duration",t.duration||void 0],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0],["behavior",t.behavior&&t.behavior.length?t.behavior:void 0],["timeMode",t.timeMode],["motivation",Array.isArray(t.motivation)?t.motivation[0]:t.motivation]]}function a(t){if(!(!t||t.length===0))return t}function ge(t){if(t&&t.type&&t.type==="ImageService2"){const{id:e,type:i,profile:n,...r}=t;return{"@id":e,"@type":i,profile:n.startsWith("http")?n:`http://iiif.io/api/image/2/${n}.json`,...r}}return t}function ye(t){if(!(!t||t.length===0))return t.map(ge)}function*C(t){return[["label",t.label],["metadata",a(t.metadata)],["summary",t.summary],["requiredStatement",t.requiredStatement],["rights",t.rights],["navDate",t.navDate],["language",t.language],["thumbnail",a(yield t.thumbnail)],["placeholderCanvas",yield t.placeholderCanvas],["accompanyingCanvas",yield t.accompanyingCanvas],["provider",a(yield t.provider)]]}function*I(t){return[["seeAlso",a(yield t.seeAlso)],["service",ye(t.service)],["services",ye(t.services)],["rendering",a(yield t.rendering)],["supplementary",a(yield t.supplementary)],["homepage",a(yield t.homepage)],["logo",a(yield t.logo)],["partOf",a(yield t.partOf)],["start",t.start]]}const dt={Manifest:function*(t,e,{isTopLevel:i}){return i?[["@context","http://iiif.io/api/presentation/3/context.json"],...A(t),...yield*C(t),...yield*I(t),["items",yield t.items],["structures",a(yield t.structures)],["annotations",a(yield t.annotations)]]:[...A(t),...yield*C(t)]},Canvas:function*(t){return[...A(t),...yield*C(t),...yield*I(t),["items",yield t.items],["annotations",a(yield t.annotations)]]},Agent:function*(t){return[["id",t.id],["type","Agent"],["label",t.label],...yield*I(t)]},AnnotationPage:function*(t){return[...Object.entries(t).map(([i,n])=>[i,Array.isArray(n)?a(n):n]).filter(([i,n])=>i!=="items"),...yield*I(t),["items",yield t.items]]},Service:function*(t){return[[F,ge(t)]]},Annotation:function*(t){const e=Object.entries(t).map(([n,r])=>n==="motivation"?[n,Array.isArray(r)?r[0]:r]:[n,Array.isArray(r)?a(r):r]).filter(([n])=>n!=="body"),i=yield t.body;return[...e,["body",i.length===1?i[0]:i]]},ContentResource:function*(t){return[...A(t),...yield*C(t),...yield*I(t),["annotations",a(yield t.annotations)],["items",a(yield t.items)]]},AnnotationCollection:function*(t){return[["id",t.id],["type","AnnotationCollection"],["label",t.label]]},Collection:function*(t,e,{isTopLevel:i}){return i?[["@context","http://iiif.io/api/presentation/3/context.json"],...A(t),...yield*C(t),...yield*I(t),["items",a(yield t.items)]]:[...A(t),...yield*C(t)]},Range:function*(t){const e=[];for(const i of t.items)i.type==="Range"?e.push(yield i):e.push(i);return[...A(t),...yield*C(t),...yield*I(t),["items",e],["annotations",a(yield t.annotations)]]}};export{L as Traverse,f as UNSET,F as UNWRAP,st as defaultEntities,q as emptyAgent,Ce as emptyAnnotation,k as emptyAnnotationPage,N as emptyCanvas,$ as emptyCollection,j as emptyManifest,G as emptyRange,fe as getDefaultEntities,U as identifyResource,m as languageString2to3,pt as normalize,ct as serialize,ut as serializeConfigPresentation2,dt as serializeConfigPresentation3,de as serializedFieldsToObject,M as types}; | ||
| const Ce={id:"https://iiif-parser/annotation",type:"Annotation",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[],accessibility:[],audience:[],body:[],bodyValue:null,canonical:null,created:null,creator:[],generated:null,generator:[],modified:null,motivation:[],rights:[],stylesheet:null,target:[],timeMode:void 0,via:[],partOf:[]},k={id:"https://iiif-parser/annotation-page",type:"AnnotationPage",behavior:[],motivation:null,label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[]},N={id:"https://iiif-parser/empty-canvas",type:"Canvas",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],duration:0,height:0,width:0},$={id:"https://iiif-parser/empty-collection",type:"Collection",label:null,viewingDirection:"left-to-right",behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],services:[]},j={id:"https://iiif-parser/empty-manifest",type:"Manifest",annotations:[],behavior:[],homepage:[],items:[],label:null,logo:[],metadata:[],motivation:null,navDate:null,provider:[],partOf:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,rendering:[],requiredStatement:null,rights:null,seeAlso:[],service:[],services:[],start:null,structures:[],summary:null,thumbnail:[],viewingDirection:"left-to-right"},G={id:"https://iiif-parser/empty-canvas",type:"Range",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],start:null,supplementary:null,viewingDirection:"left-to-right"},q={id:"https://iiif-parser/empty-agent",type:"Agent",label:{},logo:[],seeAlso:[],homepage:[]},M=["Collection","Manifest","Canvas","AnnotationPage","AnnotationCollection","Annotation","ContentResource","Range","Service","Selector","Agent"];function U(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t.type=="string"){const e=M.indexOf(t.type);if(e!==-1)return M[e]}if(t.profile)return"Service";throw new Error("Resource type is not known")}class L{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationCollection:[],annotationPage:[],annotation:[],contentResource:[],choice:[],range:[],service:[],agent:[],...e},this.options={allowUndefinedReturn:!1,...i}}static all(e){return new L({collection:[e],manifest:[e],canvas:[e],annotationCollection:[e],annotationPage:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e]})}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=e.thumbnail.map(i=>this.traverseType(i,this.traversals.contentResource))),e.provider&&(e.provider=e.provider.map(i=>this.traverseAgent(i))),e}traverseLinking(e){return e.seeAlso&&(e.seeAlso=e.seeAlso.map(i=>this.traverseType(i,this.traversals.contentResource))),e.service&&(e.service=e.service.map(i=>this.traverseType(i,this.traversals.service))),e.services&&(e.services=e.services.map(i=>this.traverseType(i,this.traversals.service))),e.logo&&(e.logo=e.logo.map(i=>this.traverseType(i,this.traversals.contentResource))),e.homepage&&(e.homepage=e.homepage.map(i=>this.traverseType(i,this.traversals.contentResource))),e.partOf&&(e.partOf=e.partOf.map(i=>typeof i=="string"||!i.type?this.traverseType(i,this.traversals.contentResource):i.type==="Canvas"?this.traverseType(i,this.traversals.canvas):i.type==="AnnotationCollection"?this.traverseType(i,this.traversals.annotationCollection):this.traverseType(i,this.traversals.contentResource))),e.start&&(e.start=e.start?this.traverseType(e.start,this.traversals.canvas):null),e.rendering&&(e.rendering=e.rendering.map(i=>this.traverseType(i,this.traversals.contentResource))),e.supplementary&&(e.supplementary=e.supplementary.map(i=>this.traverseType(i,this.traversals.contentResource))),e}traverseCollectionItems(e){return e.items&&e.items.map(i=>i.type==="Collection"?this.traverseCollection(i):this.traverseManifest(i)),e}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseInlineAnnotationPages(this.traverseLinking(this.traversePosterCanvas(this.traverseCollectionItems(e))))),this.traversals.collection)}traverseManifestItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseCanvas(i))),e}traverseManifestStructures(e){return e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseManifest(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traverseManifestStructures(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e)))))),this.traversals.manifest)}traverseCanvasItems(e){return e.items=(e.items||[]).map(i=>this.traverseAnnotationPage(i)),e}traverseInlineAnnotationPages(e){return typeof e=="string"||!e||e.annotations&&(e.annotations=e.annotations.map(i=>this.traverseAnnotationPage(i))),e}traverseCanvas(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))))),this.traversals.canvas)}traverseAnnotationPageItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseAnnotation(i))),e}traverseAnnotationPage(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationPageItems(e))),this.traversals.annotationPage)}traverseAnnotationBody(e){return Array.isArray(e.body)?e.body=e.body.map(i=>this.traverseContentResource(i)):e.body&&(e.body=this.traverseContentResource(e.body)),e}traversePosterCanvas(e){return e.posterCanvas&&(e.posterCanvas=this.traverseCanvas(e.posterCanvas)),e.placeholderCanvas&&(e.placeholderCanvas=this.traverseCanvas(e.placeholderCanvas)),e.accompanyingCanvas&&(e.accompanyingCanvas=this.traverseCanvas(e.accompanyingCanvas)),e}traverseAnnotation(e){return this.traverseType(this.traverseLinking(this.traverseAnnotationBody(e)),this.traversals.annotation)}traverseContentResourceLinking(e){return typeof e=="string"||!e||e&&e.service&&(e.service=(e.service||[]).map(i=>this.traverseType(i,this.traversals.service))),e}traverseContentResource(e){return e.type==="Choice"&&(e.items=e.items.map(i=>this.traverseContentResource(i))),this.traverseType(this.traverseInlineAnnotationPages(this.traverseContentResourceLinking(e)),this.traversals.contentResource)}traverseRangeRanges(e){return e.items&&(e.items=e.items.map(i=>typeof i=="string"?this.traverseCanvas({id:i,type:"Canvas"}):i.type==="Manifest"?this.traverseManifest(i):this.traverseRange(i))),e}traverseRange(e){return this.traverseType(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseRangeRanges(e)))),this.traversals.range)}traverseAgent(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.agent)}traverseType(e,i){return i.reduce((n,r)=>{const a=r(n);return typeof a=="undefined"&&!this.options.allowUndefinedReturn?n:a},e)}traverseService(e){return this.traverseType(e,this.traversals.service)}traverseUnknown(e){const i=U(e);switch(i){case"Collection":return this.traverseCollection(e);case"Manifest":return this.traverseManifest(e);case"Canvas":return this.traverseCanvas(e);case"AnnotationPage":return this.traverseAnnotationPage(e);case"Annotation":return this.traverseAnnotation(e);case"ContentResource":return this.traverseContentResource(e);case"Range":return this.traverseRange(e);case"Service":return this.traverseService(e);case"Agent":return this.traverseAgent(e);default:throw new Error(`Unknown or unsupported resource type of ${i}`)}}}const V=["sc:Collection","sc:Manifest","sc:Canvas","oa:AnnotationList","oa:Annotation","sc:Range","sc:Layer","sc:Sequence","oa:Choice","Service","ContentResource"];function Ie(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t["@type"]=="string"){const e=V.indexOf(t["@type"]);if(e!==-1)return V[e]}if(t.profile)return"Service";if(t.format||t["@type"])return"ContentResource";throw new Error("Resource type is not known")}class x{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationList:[],sequence:[],annotation:[],contentResource:[],choice:[],range:[],service:[],layer:[],...e},this.options={convertPropsToArray:!0,mergeMemberProperties:!0,allowUndefinedReturn:!1,...i}}static all(e){return new x({collection:[e],manifest:[e],canvas:[e],annotationList:[e],sequence:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e],layer:[e]})}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(e))),this.traversals.collection)}traverseCollectionItems(e){if(this.options.mergeMemberProperties){const i=[...(e.manifests||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Manifest"}:n),...(e.collections||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Collection"}:n),...e.members||[]];delete e.collections,delete e.manifests,e.members=i}return e.manifests&&(e.manifests=e.manifests.map(i=>this.traverseManifest(typeof i=="string"?{"@id":i,"@type":"sc:Manifest"}:i))),e.collections&&(e.collections=e.collections.map(i=>this.traverseCollection(typeof i=="string"?{"@id":i,"@type":"sc:Collection"}:i))),e.members&&(e.members=e.members.map(i=>typeof i=="string"?i:this.traverseUnknown(i))),e}traverseManifest(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e))),this.traversals.manifest)}traverseManifestItems(e){return e.sequences&&(e.sequences=e.sequences.map(i=>this.traverseSequence(i))),e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseSequence(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(e))),this.traversals.sequence)}traverseSequenceItems(e){return e.canvases&&(e.canvases=e.canvases.map(i=>this.traverseCanvas(i))),e}traverseCanvas(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))),this.traversals.canvas)}traverseCanvasItems(e){return e.images&&(e.images=e.images.map(i=>this.traverseAnnotation(i))),e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseRange(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(e))),this.traversals.range)}traverseRangeItems(e){if(this.options.mergeMemberProperties){const i=[...(e.ranges||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Range"}:n),...(e.canvases||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Canvas"}:n),...e.members||[]];delete e.ranges,delete e.canvases,e.members=i.length?i.map(n=>this.traverseUnknown(n)):void 0}return e}traverseAnnotationList(e){const i=typeof e=="string"?{"@id":e,"@type":"oa:AnnotationList"}:e;return this.traverseType(this.traverseDescriptive(this.traverseAnnotationListItems(i)),this.traversals.annotationList)}traverseAnnotationListItems(e){return e.resources&&(e.resources=e.resources.map(i=>this.traverseAnnotation(i))),e}traverseAnnotation(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(e))),this.traversals.annotation)}traverseAnnotationItems(e){return e.resource&&(e.resource=this.traverseContentResource(e.resource)),e.on,e}traverseLayer(e){return this.traverseType(this.traverseLinking(this.traverseLayerItems(e)),this.traversals.layer)}traverseLayerItems(e){return e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseChoice(e){return this.traverseType(this.traverseChoiceItems(e),this.traversals.choice)}traverseChoiceItems(e){return e.default&&e.default!=="rdf:nil"&&(e.default=this.traverseContentResource(e.default)),e.item&&e.item!=="rdf:nil"&&(e.item=e.item.map(i=>this.traverseContentResource(i))),e}traverseService(e){return this.traverseType(this.traverseLinking(e),this.traversals.service)}traverseContentResource(e){return e["@type"]==="oa:Choice"?this.traverseChoice(e):this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.contentResource)}traverseUnknown(e){if(!e["@type"]||typeof e=="string")return e;switch(Ie(e)){case"sc:Collection":return this.traverseCollection(e);case"sc:Manifest":return this.traverseManifest(e);case"sc:Canvas":return this.traverseCanvas(e);case"sc:Sequence":return this.traverseSequence(e);case"sc:Range":return this.traverseRange(e);case"oa:Annotation":return this.traverseAnnotation(e);case"oa:AnnotationList":return this.traverseAnnotationList(e);case"sc:Layer":return this.traverseLayer(e);case"Service":return this.traverseService(e);case"oa:Choice":return this.traverseChoice(e);case"ContentResource":return this.traverseContentResource(e)}return e.profile?this.traverseService(e):e}traverseImageResource(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],r=[];for(const a of n)typeof a=="string"?r.push(this.traverseContentResource({"@id":a,"@type":"dctypes:Image"})):r.push(this.traverseContentResource(a));return!i&&!this.options.convertPropsToArray?r[0]:r}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=this.traverseImageResource(e.thumbnail)),e.logo&&(e.logo=this.traverseImageResource(e.logo)),e}traverseOneOrMoreServices(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],r=[];for(const a of n)r.push(this.traverseService(a));return!i&&!this.options.convertPropsToArray?r[0]:r}traverseLinking(e){return e.related&&(e.related=this.traverseOneOrManyType(e.related,this.traversals.contentResource)),e.rendering&&(e.rendering=this.traverseOneOrManyType(e.rendering,this.traversals.contentResource)),e.service&&(e.service=this.traverseOneOrMoreServices(e.service)),e.seeAlso&&(e.seeAlso=this.traverseOneOrManyType(e.seeAlso,this.traversals.contentResource)),e.within&&(typeof e.within=="string"||(e.within=this.traverseOneOrManyType(e.within,this.traversals.contentResource))),e.startCanvas&&(typeof e.startCanvas=="string"?e.startCanvas=this.traverseType({"@id":e.startCanvas,"@type":"sc:Canvas"},this.traversals.canvas):e.startCanvas&&this.traverseType(e.startCanvas,this.traversals.canvas)),e.contentLayer&&(typeof e.contentLayer=="string"?e.contentLayer=this.traverseLayer({"@id":e.contentLayer,"@type":"sc:Layer"}):e.contentLayer=this.traverseLayer(e.contentLayer)),e}traverseOneOrManyType(e,i){if(!Array.isArray(e))if(this.options.convertPropsToArray)e=[e];else return this.traverseType(e,i);return e.map(n=>this.traverseType(n,i))}traverseType(e,i){return i.reduce((n,r)=>{const a=r(n);return typeof a=="undefined"&&!this.options.allowUndefinedReturn?n:a},e)}}const _e="http://library.stanford.edu/iiif/image-api/compliance.html#level0",W="http://library.stanford.edu/iiif/image-api/compliance.html#level1",z="http://library.stanford.edu/iiif/image-api/compliance.html#level2",be="http://library.stanford.edu/iiif/image-api/conformance.html#level0",B="http://library.stanford.edu/iiif/image-api/conformance.html#level1",H="http://library.stanford.edu/iiif/image-api/conformance.html#level2",Re="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0",K="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1",Q="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2",we="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0",X="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1",Y="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2",Ee="http://iiif.io/api/image/1/level0.json",Le="http://iiif.io/api/image/1/profiles/level0.json",Z="http://iiif.io/api/image/1/level1.json",J="http://iiif.io/api/image/1/profiles/level1.json",ee="http://iiif.io/api/image/1/level2.json",te="http://iiif.io/api/image/1/profiles/level2.json",Te="http://iiif.io/api/image/2/level0.json",Me="http://iiif.io/api/image/2/profiles/level0.json",ie="http://iiif.io/api/image/2/level1.json",ne="http://iiif.io/api/image/2/profiles/level1.json",re="http://iiif.io/api/image/2/level2.json",ae="http://iiif.io/api/image/2/profiles/level2.json",xe="level0",se="level1",oe="level2",Se="http://iiif.io/api/image/2/level0",le="http://iiif.io/api/image/2/level1",ve="http://iiif.io/api/image/2/level2",Oe=[le,ve,W,z,B,H,K,Q,X,Y,Z,J,ee,te,ie,ne,re,ae,se,oe],Pe=[Se,le,ve,_e,W,z,be,B,H,Re,K,Q,we,X,Y,Ee,Le,Z,J,ee,te,Te,Me,ie,ne,re,ae,xe,se,oe],S={attributionLabel:"Attribution",lang:"none",providerId:"http://example.org/provider",providerName:"Unknown"};function d(t,e="none"){if(!t)return{};const i=Array.isArray(t)?t:[t],n={};for(const r of i){if(typeof r=="string"){n[e]=n[e]?n[e]:[],n[e].push(r||"");continue}if(!r["@language"]){n[e]=n[e]?n[e]:[],n[e].push(r["@value"]||"");continue}const a=r["@language"];n[a]=n[a]?n[a]:[],n[a].push(r["@value"]||"")}return n}function pe(t){if(Array.isArray(t))return pe(t.find(e=>typeof e=="string"));if(Pe.indexOf(t)!==-1)return"level2";if(Oe.indexOf(t)!==-1)return"level1";if(typeof t=="string")return t}function Fe(t){const e=Array.isArray(t)?t:[t];for(const i of e)switch(i){case"http://iiif.io/api/image/2/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2":return"ImageService2";case"http://iiif.io/api/image/1/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/context.json":return"ImageService1";case"http://iiif.io/api/annex/openannotation/context.json":return"ImageApiSelector"}}function De(t){switch(t){case"http://iiif.io/api/image/2/level0.json":case"http://iiif.io/api/image/2/level1.json":case"http://iiif.io/api/image/2/level2.json":return"ImageService2";case"http://iiif.io/api/auth/1/kiosk":case"http://iiif.io/api/auth/1/login":case"http://iiif.io/api/auth/1/clickthrough":case"http://iiif.io/api/auth/1/external":case"http://iiif.io/api/auth/0/kiosk":case"http://iiif.io/api/auth/0/login":case"http://iiif.io/api/auth/0/clickthrough":case"http://iiif.io/api/auth/0/external":return"AuthCookieService1";case"http://iiif.io/api/auth/1/token":case"http://iiif.io/api/auth/0/token":return"AuthTokenService1";case"http://iiif.io/api/auth/1/logout":case"http://iiif.io/api/auth/0/logout":return"AuthLogoutService1";case"http://iiif.io/api/search/1/search":case"http://iiif.io/api/search/0/search":return"SearchService1";case"http://iiif.io/api/search/1/autocomplete":case"http://iiif.io/api/search/0/autocomplete":return"AutoCompleteService1"}}function ke(t){return Array.isArray(t)?t:[t]}function Ne(t){for(const e of["sc","oa","dcterms","dctypes","iiif"])if(t.startsWith(`${e}:`))return t.slice(e.length+1);return t}const $e=["Collection","Manifest","Annotation","AnnotationPage","Range","Service"];function O(t){const e=t["@id"]||t.id;let i=t["@type"]||t.type;const n=t.profile||void 0,r=t["@context"]||void 0;if(n){const a=De(n);if(a)return a}if(r){const a=Fe(r);if(a)return a}if(i){if(Array.isArray(i)){if(i.indexOf("oa:CssStylesheet")!==-1)return"CssStylesheet";if(i.indexOf("cnt:ContentAsText")!==-1)return"TextualBody";i=i[0]}for(const a of["sc","oa","dcterms","dctypes","iiif"])if(i.startsWith(`${a}:`)){i=i.slice(a.length+1);break}switch(i){case"Layer":return"AnnotationCollection";case"AnnotationList":return"AnnotationPage";case"cnt:ContentAsText":return"TextualBody"}}if(i&&$e.indexOf(i)!==-1)return i;if(t.format){if(t.format.startsWith("image/"))return"Image";if(t.format.startsWith("text/")||t.format==="application/pdf")return"Text";if(t.format.startsWith("application/"))return"Dataset"}return e&&(e.endsWith(".jpg")||e.endsWith(".png")||e.endsWith(".jpeg"))?"Image":i||"unknown"}const je=/http(s)?:\/\/(creativecommons.org|rightsstatements.org)[^"'\\<\n]+/gm;function Ge(t){const e=t.match(je);return e?e[0]:t}function qe(t,e="Rights/License",i="none"){let n=null;const r=[],a=Array.isArray(t)?t:[t];for(const o of a){const l=o?Ge(o):void 0;if(l&&(l.indexOf("creativecommons.org")!==-1||l.indexOf("rightsstatements.org")!==-1)){l.startsWith("https://")?n=`http://${l.slice(8)}`:n=l;continue}l&&r.push({label:{[i]:[e]},value:{[i]:[l]}})}return[n,r]}const Ue=["http://iiif.io/api/presentation/2/context.json","http://iiif.io/api/image/2/context.json","http://iiif.io/api/image/1/context.json","http://library.stanford.edu/iiif/image-api/1.1/context.json","http://iiif.io/api/search/1/context.json","http://iiif.io/api/search/0/context.json","http://iiif.io/api/auth/1/context.json","http://iiif.io/api/auth/0/context.json","http://iiif.io/api/annex/openannotation/context.json"];function Ve(t){if(t){const e=Array.isArray(t)?t:[t],i=[];for(const n of e)n==="http://iiif.io/api/presentation/2/context.json"&&i.push("http://iiif.io/api/presentation/3/context.json"),Ue.indexOf(n)===-1&&i.push(n);if(e.length)return i.length===1?i[0]:i}}function We(t){return t?t.map(e=>({label:d(e.label),value:d(e.value)})):[]}function v(t){for(const e in t)(typeof t[e]=="undefined"||t[e]===null)&&delete t[e];return t}let he=0;function ce(t,e){const i=encodeURI(t.id||t["@id"]||"").trim();return i&&e?`${i}/${e}`:i||(he++,`http://example.org/${t["@type"]}${e?`/${e}`:""}/${he}`)}function p(t){const e=[...t.behavior||[]];return t.viewingHint&&e.push(t.viewingHint),{"@context":t["@context"]?Ve(t["@context"]):void 0,id:(t["@id"]||ce(t)).trim(),type:O(t),behavior:e.length?e:void 0,height:t.height?t.height:void 0,width:t.width?t.width:void 0,motivation:t.motivation?Ne(t.motivation):void 0,viewingDirection:t.viewingDirection,profile:t.profile,format:t.format?t.format:void 0,duration:void 0,timeMode:void 0}}function h(t){const[e,i]=qe(t.license),n=[...t.metadata?We(t.metadata):[],...i];return{rights:e,metadata:n.length?n:void 0,label:t.label?d(t.label):void 0,requiredStatement:t.attribution?{label:d(S.attributionLabel),value:d(t.attribution)}:void 0,navDate:t.navDate,summary:t.description?d(t.description):void 0,thumbnail:t.thumbnail}}function ze(t){if(!t.within)return;const e=Array.isArray(t.within)?t.within:[t.within],i=[];for(const n of e)if(typeof n=="string"){if(n)switch(t["@type"]){case"sc:Manifest":i.push({id:n,type:"Collection"});break}}else n["@id"]&&i.push({id:n["@id"],type:O(n)});return i.length?i:void 0}function c(t){const e=t.related?Array.isArray(t.related)?t.related:[t.related]:[],i=t.contentLayer;return{provider:t.logo||e.length?[{id:S.providerId,type:"Agent",homepage:e.length?[e[0]]:void 0,logo:t.logo?Array.isArray(t.logo)?t.logo:[t.logo]:void 0,label:d(S.providerName)}]:void 0,partOf:ze(t),rendering:t.rendering,seeAlso:t.seeAlso,start:t.startCanvas,service:t.service?ke(t.service):void 0,supplementary:i?[i]:void 0}}function Be(t){return v({...p(t),...h(t),...c(t),items:t.members})}function He(t){const e=[],i=[];for(const r of t.sequences||[])r.canvases.length&&e.push(...r.canvases),r.behavior&&i.push(...r.behavior);const n=p(t);return i.length&&(n.behavior?n.behavior.push(...i):n.behavior=i),v({...n,...h(t),...c(t),items:e,structures:t.structures})}function Ke(t){return v({...p(t),...h(t),...c(t),annotations:t.otherContent&&t.otherContent.length?t.otherContent:void 0,items:t.images&&t.images.length?[{id:ce(t,"annotation-page"),type:"AnnotationPage",items:t.images}]:void 0})}function Qe(t){return v({...p(t),...h(t),...c(t),items:t.resources&&t.resources.length?t.resources:void 0})}function Xe(t){return!t.canvases||t.canvases.length===0?{canvases:[],behavior:[]}:{canvases:t.canvases,behavior:t.viewingHint?[t.viewingHint]:[]}}function Ye(t){return v({...p(t),...h(t),...c(t),target:typeof t.on=="string"?encodeURI(t.on).trim():t.on,body:t.resource})}function Ze(t){const e=t;return v({...p(e),...h(e),...c(e)})}function Je(t){const e=[];return t.default&&t.default!=="rdf:nil"&&e.push(t.default),t.item&&t.item!=="rdf:nil"&&e.push(...t.item),{...p(t),...h(t),items:e}}function et(t){return v({...p(t),...h(t),...c(t),items:t.members})}function tt(t){const{"@id":e,"@type":i,"@context":n,profile:r,...a}=t,o={};return e&&(o["@id"]=e),o["@type"]=O(t),o["@type"]==="unknown"&&(n&&n.length&&(o["@context"]=n),o["@type"]="Service"),r&&(o.profile=pe(r)),v({...o,...a})}function it(t){return v({...p(t),...h(t),...c(t)})}const nt=new x({collection:[Be],manifest:[He],canvas:[Ke],annotationList:[Qe],sequence:[Xe],annotation:[Ye],contentResource:[Ze],choice:[Je],range:[et],service:[tt],layer:[it]});function rt(t){return t&&t["@context"]&&(t["@context"]==="http://iiif.io/api/presentation/2/context.json"||t["@context"].indexOf("http://iiif.io/api/presentation/2/context.json")!==-1||t["@context"]==="http://www.shared-canvas.org/ns/context.json")||t["@context"]==="http://iiif.io/api/image/2/context.json"?nt.traverseUnknown(t):t}const at={Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}};function fe(){return{Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}}}function ue(t,e){if(typeof t=="string")return{id:t,type:e};if(!t.id)throw new Error(`Invalid resource does not have an ID (${e})`);return t}function st(t){return(e,i)=>{const n=t[e]?t[e]:{};return r=>{const a=ue(r,i||e);return a&&a.id&&e?(n[a.id]=n[a.id]?Object.assign({},n[a.id],a):Object.assign({},a),{id:a.id,type:e==="ContentResource"?e:a.type}):a}}}function ot(t){return(e,i)=>n=>{const{id:r,type:a}=ue(n,i||e);if(typeof r=="undefined")throw new Error("Found invalid entity without an ID.");return e==="ContentResource"?t[r]=e:t[r]=a,n}}function lt(t){const e=JSON.stringify(t);let i=5381,n=e.length;for(;n;)i=i*33^e.charCodeAt(--n);const a=(i>>>0).toString(16);return a.length%2?"0"+a:a}function P(t){return e=>typeof e=="string"?{id:e,type:t}:e.id?e.type?e:{type:t,...e}:{id:`vault://${lt(e)}`,type:t,...e}}function _(t){return e=>({...t,...e})}function b(t){return Array.isArray(t)?t:[t]}function vt(t){return t.body&&(t.body=b(t.body)),t.seeAlso&&(t.seeAlso=b(t.seeAlso)),t.body&&(t.body=b(t.body)),t.audience&&(t.audience=b(t.audience)),t.accessibility&&(t.accessibility=b(t.accessibility)),t.motivation&&(t.motivation=b(t.motivation)),t}function pt(t){const e=rt(t),i=fe(),n={},r=st(i),a=ot(n),l=new L({collection:[_($),a("Collection"),r("Collection")],manifest:[_(j),a("Manifest"),r("Manifest")],canvas:[_(N),a("Canvas"),r("Canvas")],annotationPage:[P("AnnotationPage"),_(k),a("AnnotationPage"),r("AnnotationPage")],annotation:[P("Annotation"),vt,a("Annotation"),r("Annotation")],contentResource:[P("ContentResource"),a("ContentResource"),r("ContentResource")],range:[_(G),a("Range","Canvas"),r("Range","Canvas")],agent:[_(q),a("Agent"),r("Agent")]}).traverseUnknown(e);return{entities:i,resource:l,mapping:n}}const f="__$UNSET$__",F="__$UNWRAP$__";function ht(t,e){const i=t.requests[e],n=t.mapping[e];if(!(!n||i&&i.resourceUri&&!t.entities[n][i.resourceUri]))return t.entities[n][i?i.resourceUri:e]}function de(t){const e={};for(const[i,n]of t){if(i===F&&n!==f)return n;n!==f&&typeof n!="undefined"&&n!==null&&(e[i]=n)}return e}function ct(t,e,i){if(!e.type||!e.id)throw new Error("Unknown entity");if(!i[e.type])throw new Error(`Serializer not found for ${e.type}`);function n(r){const a=i[r.type];if(!a)return f;const o=ht(t,r.id)||(r.id&&r.type?r:null);if(!o)return f;const l=a(o,t,{isTopLevel:e.id===r.id});let R=l.next();for(;!R.done;){const E=R.value;let T=f;if(E)if(Array.isArray(E)){const D=[];for(const Ae of E)D.push(n(Ae));T=D}else T=n(E);R=l.next(T)}return R.value===f?f:de(R.value)}return n(e)}function m(t){if(!t)return;const e=Object.keys(t);if(e.length!==0){if(e.length===1){const i=e[0];if(!i)return"";const n=(t[i]||[]).join("");return i==="@none"||i==="none"||i==="en"?n:{"@language":i,"@value":n}}return e.map(i=>({"@language":i,"@value":(t[i]||[]).join("")}))}}function me(t){return Array.isArray(t)?t.map(e=>me(e)):typeof t=="string"?t:t.type&&t.type==="Canvas"?t.id:t}function u(t,e=!1){if(!!t)return t.length>1&&!e?t:t[0]||void 0}function ft(t){if(!!t){if(typeof t=="string")return{"@id":t};if("@id"in t){const e={...t};return delete e["@type"],e}return{"@context":"http://iiif.io/api/image/2/context.json","@id":t.id,profile:`http://iiif.io/api/image/2/profiles/${t.profile}.json`}}}function g(t,e){return[["@id",t.id],["@type",e],["format",t.format],["height",t.height],["width",t.width],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0]]}function*y(t){const e=t.provider?yield t.provider[0]:void 0;return[["label",m(t.label)],["metadata",t.metadata&&t.metadata.length?t.metadata.map(i=>({label:m(i.label)||"",value:m(i.value)||""})):void 0],["description",m(t.summary)],["thumbnail",u(yield t.thumbnail)],["navDate",t.navDate],["logo",e?u(e.logo):void 0],["homepage",e?e.homepage:void 0],["attribution",t.requiredStatement?m(t.requiredStatement.value):void 0]]}function*w(t){return[["seeAlso",u(yield t.seeAlso)],["service",u((t.service||[]).map(ft))],["rendering",u(yield t.rendering)],["startCanvas",t.start?t.start.id:void 0]]}const ut={Manifest:function*(t){return[...g(t,"sc:Manifest"),...yield*y(t),...yield*w(t),["sequences",[{"@id":`${t.id}/sequence0`,"@type":"sc:Sequence",canvases:yield t.items}]],["structures",yield t.structures]]},Canvas:function*(t){const i=(yield t.items)[0];return[...g(t,"sc:Canvas"),...yield*y(t),...yield*w(t),["images",i?[i.resources]:void 0],["annotations",t.annotations&&t.annotations.length?u(yield t.annotations):void 0]]},AnnotationPage:function*(t){return[...g(t,"sc:AnnotationList"),...yield*y(t),["resources",t.items&&t.items.length?u(yield t.items):void 0]]},Annotation:function*(t){return[["@id",t.id],["@type","oa:Annotation"],["motivation","sc:painting"],["on",me(t.target)],["resource",u(yield t.body,!0)]]},ContentResource:function*(t){switch(t.type){case"Image":return[...g(t,"dctypes:Image"),...yield*y(t),...yield*w(t)];case"Text":case"Dataset":default:return[...g(t,void 0),...yield*y(t)]}},AnnotationCollection:function*(t){return[["@id",t.id],["@type","sc:Layer"],["label",m(t.label)]]},Collection:function*(t){return[...g(t,"sc:Collection"),...yield*y(t),...yield*w(t),["members",yield*t.items]]},Range:function*(t){const e=[],i=[];if(t.items)for(const n of t.items){const r=yield n;e.push({"@id":n.id,"@type":n.type,label:r?r.label:void 0,within:t.id}),n.type==="Canvas"&&i.push(n.id)}return[...g(t,"sc:Range"),...yield*y(t),...yield*w(t),["canvases",i.length===e.length?i:void 0],["members",i.length!==e.length?e:void 0]]}};function A(t){return[["id",t.id?.startsWith("vault://")?void 0:t.id],["type",t.type],["format",t.format],["profile",t.profile],["height",t.height],["width",t.width],["duration",t.duration||void 0],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0],["behavior",t.behavior&&t.behavior.length?t.behavior:void 0],["timeMode",t.timeMode],["motivation",Array.isArray(t.motivation)?t.motivation[0]:t.motivation]]}function s(t){if(!(!t||t.length===0))return t}function ge(t){if(t&&t.type&&t.type==="ImageService2"){const{id:e,type:i,profile:n,...r}=t;return{"@id":e,"@type":i,profile:n.startsWith("http")?n:`http://iiif.io/api/image/2/${n}.json`,...r}}return t}function ye(t){if(!(!t||t.length===0))return t.map(ge)}function*C(t){return[["label",t.label],["metadata",s(t.metadata)],["summary",t.summary],["requiredStatement",t.requiredStatement],["rights",t.rights],["navDate",t.navDate],["language",t.language],["thumbnail",s(yield t.thumbnail)],["placeholderCanvas",yield t.placeholderCanvas],["accompanyingCanvas",yield t.accompanyingCanvas],["provider",s(yield t.provider)]]}function*I(t){return[["seeAlso",s(yield t.seeAlso)],["service",ye(t.service)],["services",ye(t.services)],["rendering",s(yield t.rendering)],["supplementary",s(yield t.supplementary)],["homepage",s(yield t.homepage)],["logo",s(yield t.logo)],["partOf",s(yield t.partOf)],["start",t.start]]}const dt={Manifest:function*(t,e,{isTopLevel:i}){return i?[["@context","http://iiif.io/api/presentation/3/context.json"],...A(t),...yield*C(t),...yield*I(t),["items",yield t.items],["structures",s(yield t.structures)],["annotations",s(yield t.annotations)]]:[...A(t),...yield*C(t)]},Canvas:function*(t){return[...A(t),...yield*C(t),...yield*I(t),["items",yield t.items],["annotations",s(yield t.annotations)]]},Agent:function*(t){return[["id",t.id],["type","Agent"],["label",t.label],...yield*I(t)]},AnnotationPage:function*(t){return[...Object.entries(t).map(([i,n])=>[i,Array.isArray(n)?s(n):n]).filter(([i,n])=>i!=="items"),...yield*I(t),["items",yield t.items]]},Service:function*(t){return[[F,ge(t)]]},Annotation:function*(t){const e=Object.entries(t).map(([n,r])=>n==="motivation"?[n,Array.isArray(r)?r[0]:r]:[n,Array.isArray(r)?s(r):r]).filter(([n])=>n!=="body"),i=yield t.body;return[...e,["body",i.length===1?i[0]:i]]},ContentResource:function*(t){return[...A(t),...yield*C(t),...yield*I(t),["annotations",s(yield t.annotations)],["items",s(yield t.items)]]},AnnotationCollection:function*(t){return[["id",t.id],["type","AnnotationCollection"],["label",t.label]]},Collection:function*(t,e,{isTopLevel:i}){return i?[["@context","http://iiif.io/api/presentation/3/context.json"],...A(t),...yield*C(t),...yield*I(t),["items",s(yield t.items)]]:[...A(t),...yield*C(t)]},Range:function*(t){const e=[];for(const i of t.items)i.type==="Range"?e.push(yield i):e.push(i);return[...A(t),...yield*C(t),...yield*I(t),["items",e],["annotations",s(yield t.annotations)]]}};export{L as Traverse,f as UNSET,F as UNWRAP,at as defaultEntities,q as emptyAgent,Ce as emptyAnnotation,k as emptyAnnotationPage,N as emptyCanvas,$ as emptyCollection,j as emptyManifest,G as emptyRange,fe as getDefaultEntities,U as identifyResource,m as languageString2to3,pt as normalize,ct as serialize,ut as serializeConfigPresentation2,dt as serializeConfigPresentation3,de as serializedFieldsToObject,M as types}; |
@@ -1,1 +0,1 @@ | ||
| (function(m,b){typeof exports=="object"&&typeof module!="undefined"?module.exports=b():typeof define=="function"&&define.amd?define(b):(m=typeof globalThis!="undefined"?globalThis:m||self,m.IIIFParser=b())})(this,function(){"use strict";const m=["sc:Collection","sc:Manifest","sc:Canvas","oa:AnnotationList","oa:Annotation","sc:Range","sc:Layer","sc:Sequence","oa:Choice","Service","ContentResource"];function b(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t["@type"]=="string"){const e=m.indexOf(t["@type"]);if(e!==-1)return m[e]}if(t.profile)return"Service";if(t.format||t["@type"])return"ContentResource";throw new Error("Resource type is not known")}class T{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationList:[],sequence:[],annotation:[],contentResource:[],choice:[],range:[],service:[],layer:[],...e},this.options={convertPropsToArray:!0,mergeMemberProperties:!0,allowUndefinedReturn:!1,...i}}static all(e){return new T({collection:[e],manifest:[e],canvas:[e],annotationList:[e],sequence:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e],layer:[e]})}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(e))),this.traversals.collection)}traverseCollectionItems(e){if(this.options.mergeMemberProperties){const i=[...(e.manifests||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Manifest"}:n),...(e.collections||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Collection"}:n),...e.members||[]];delete e.collections,delete e.manifests,e.members=i}return e.manifests&&(e.manifests=e.manifests.map(i=>this.traverseManifest(typeof i=="string"?{"@id":i,"@type":"sc:Manifest"}:i))),e.collections&&(e.collections=e.collections.map(i=>this.traverseCollection(typeof i=="string"?{"@id":i,"@type":"sc:Collection"}:i))),e.members&&(e.members=e.members.map(i=>typeof i=="string"?i:this.traverseUnknown(i))),e}traverseManifest(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e))),this.traversals.manifest)}traverseManifestItems(e){return e.sequences&&(e.sequences=e.sequences.map(i=>this.traverseSequence(i))),e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseSequence(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(e))),this.traversals.sequence)}traverseSequenceItems(e){return e.canvases&&(e.canvases=e.canvases.map(i=>this.traverseCanvas(i))),e}traverseCanvas(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))),this.traversals.canvas)}traverseCanvasItems(e){return e.images&&(e.images=e.images.map(i=>this.traverseAnnotation(i))),e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseRange(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(e))),this.traversals.range)}traverseRangeItems(e){if(this.options.mergeMemberProperties){const i=[...(e.ranges||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Range"}:n),...(e.canvases||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Canvas"}:n),...e.members||[]];delete e.ranges,delete e.canvases,e.members=i.length?i.map(n=>this.traverseUnknown(n)):void 0}return e}traverseAnnotationList(e){const i=typeof e=="string"?{"@id":e,"@type":"oa:AnnotationList"}:e;return this.traverseType(this.traverseDescriptive(this.traverseAnnotationListItems(i)),this.traversals.annotationList)}traverseAnnotationListItems(e){return e.resources&&(e.resources=e.resources.map(i=>this.traverseAnnotation(i))),e}traverseAnnotation(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(e))),this.traversals.annotation)}traverseAnnotationItems(e){return e.resource&&(e.resource=this.traverseContentResource(e.resource)),e.on,e}traverseLayer(e){return this.traverseType(this.traverseLinking(this.traverseLayerItems(e)),this.traversals.layer)}traverseLayerItems(e){return e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseChoice(e){return this.traverseType(this.traverseChoiceItems(e),this.traversals.choice)}traverseChoiceItems(e){return e.default&&e.default!=="rdf:nil"&&(e.default=this.traverseContentResource(e.default)),e.item&&e.item!=="rdf:nil"&&(e.item=e.item.map(i=>this.traverseContentResource(i))),e}traverseService(e){return this.traverseType(this.traverseLinking(e),this.traversals.service)}traverseContentResource(e){return e["@type"]==="oa:Choice"?this.traverseChoice(e):this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.contentResource)}traverseUnknown(e){if(!e["@type"]||typeof e=="string")return e;switch(b(e)){case"sc:Collection":return this.traverseCollection(e);case"sc:Manifest":return this.traverseManifest(e);case"sc:Canvas":return this.traverseCanvas(e);case"sc:Sequence":return this.traverseSequence(e);case"sc:Range":return this.traverseRange(e);case"oa:Annotation":return this.traverseAnnotation(e);case"oa:AnnotationList":return this.traverseAnnotationList(e);case"sc:Layer":return this.traverseLayer(e);case"Service":return this.traverseService(e);case"oa:Choice":return this.traverseChoice(e);case"ContentResource":return this.traverseContentResource(e)}return e.profile?this.traverseService(e):e}traverseImageResource(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],r=[];for(const a of n)typeof a=="string"?r.push(this.traverseContentResource({"@id":a,"@type":"dctypes:Image"})):r.push(this.traverseContentResource(a));return!i&&!this.options.convertPropsToArray?r[0]:r}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=this.traverseImageResource(e.thumbnail)),e.logo&&(e.logo=this.traverseImageResource(e.logo)),e}traverseOneOrMoreServices(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],r=[];for(const a of n)r.push(this.traverseService(a));return!i&&!this.options.convertPropsToArray?r[0]:r}traverseLinking(e){return e.related&&(e.related=this.traverseOneOrManyType(e.related,this.traversals.contentResource)),e.rendering&&(e.rendering=this.traverseOneOrManyType(e.rendering,this.traversals.contentResource)),e.service&&(e.service=this.traverseOneOrMoreServices(e.service)),e.seeAlso&&(e.seeAlso=this.traverseOneOrManyType(e.seeAlso,this.traversals.contentResource)),e.within&&(typeof e.within=="string"||(e.within=this.traverseOneOrManyType(e.within,this.traversals.contentResource))),e.startCanvas&&(typeof e.startCanvas=="string"?e.startCanvas=this.traverseType({"@id":e.startCanvas,"@type":"sc:Canvas"},this.traversals.canvas):e.startCanvas&&this.traverseType(e.startCanvas,this.traversals.canvas)),e.contentLayer&&(typeof e.contentLayer=="string"?e.contentLayer=this.traverseLayer({"@id":e.contentLayer,"@type":"sc:Layer"}):e.contentLayer=this.traverseLayer(e.contentLayer)),e}traverseOneOrManyType(e,i){if(!Array.isArray(e))if(this.options.convertPropsToArray)e=[e];else return this.traverseType(e,i);return e.map(n=>this.traverseType(n,i))}traverseType(e,i){return i.reduce((n,r)=>{const a=r(n);return typeof a=="undefined"&&!this.options.allowUndefinedReturn?n:a},e)}}const be="http://library.stanford.edu/iiif/image-api/compliance.html#level0",j="http://library.stanford.edu/iiif/image-api/compliance.html#level1",$="http://library.stanford.edu/iiif/image-api/compliance.html#level2",Re="http://library.stanford.edu/iiif/image-api/conformance.html#level0",G="http://library.stanford.edu/iiif/image-api/conformance.html#level1",q="http://library.stanford.edu/iiif/image-api/conformance.html#level2",Ee="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0",U="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1",V="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2",we="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0",W="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1",z="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2",Le="http://iiif.io/api/image/1/level0.json",Te="http://iiif.io/api/image/1/profiles/level0.json",B="http://iiif.io/api/image/1/level1.json",H="http://iiif.io/api/image/1/profiles/level1.json",K="http://iiif.io/api/image/1/level2.json",Q="http://iiif.io/api/image/1/profiles/level2.json",Me="http://iiif.io/api/image/2/level0.json",xe="http://iiif.io/api/image/2/profiles/level0.json",X="http://iiif.io/api/image/2/level1.json",Y="http://iiif.io/api/image/2/profiles/level1.json",Z="http://iiif.io/api/image/2/level2.json",J="http://iiif.io/api/image/2/profiles/level2.json",Se="level0",ee="level1",te="level2",Pe="http://iiif.io/api/image/2/level0",ie="http://iiif.io/api/image/2/level1",ne="http://iiif.io/api/image/2/level2",Oe=[ie,ne,j,$,G,q,U,V,W,z,B,H,K,Q,X,Y,Z,J,ee,te],Fe=[Pe,ie,ne,be,j,$,Re,G,q,Ee,U,V,we,W,z,Le,Te,B,H,K,Q,Me,xe,X,Y,Z,J,Se,ee,te],S={attributionLabel:"Attribution",lang:"none",providerId:"http://example.org/provider",providerName:"Unknown"};function c(t,e="none"){if(!t)return{};const i=Array.isArray(t)?t:[t],n={};for(const r of i){if(typeof r=="string"){n[e]=n[e]?n[e]:[],n[e].push(r||"");continue}if(!r["@language"]){n[e]=n[e]?n[e]:[],n[e].push(r["@value"]||"");continue}const a=r["@language"];n[a]=n[a]?n[a]:[],n[a].push(r["@value"]||"")}return n}function P(t){if(Array.isArray(t))return P(t.find(e=>typeof e=="string"));if(Fe.indexOf(t)!==-1)return"level2";if(Oe.indexOf(t)!==-1)return"level1";if(typeof t=="string")return t}function re(t){const e=Array.isArray(t)?t:[t];for(const i of e)switch(i){case"http://iiif.io/api/image/2/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2":return"ImageService2";case"http://iiif.io/api/image/1/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/context.json":return"ImageService1";case"http://iiif.io/api/annex/openannotation/context.json":return"ImageApiSelector"}}function De(t){switch(t){case"http://iiif.io/api/image/2/level0.json":case"http://iiif.io/api/image/2/level1.json":case"http://iiif.io/api/image/2/level2.json":return"ImageService2";case"http://iiif.io/api/auth/1/kiosk":case"http://iiif.io/api/auth/1/login":case"http://iiif.io/api/auth/1/clickthrough":case"http://iiif.io/api/auth/1/external":case"http://iiif.io/api/auth/0/kiosk":case"http://iiif.io/api/auth/0/login":case"http://iiif.io/api/auth/0/clickthrough":case"http://iiif.io/api/auth/0/external":return"AuthCookieService1";case"http://iiif.io/api/auth/1/token":case"http://iiif.io/api/auth/0/token":return"AuthTokenService1";case"http://iiif.io/api/auth/1/logout":case"http://iiif.io/api/auth/0/logout":return"AuthLogoutService1";case"http://iiif.io/api/search/1/search":case"http://iiif.io/api/search/0/search":return"SearchService1";case"http://iiif.io/api/search/1/autocomplete":case"http://iiif.io/api/search/0/autocomplete":return"AutoCompleteService1"}}function Ne(t){return Array.isArray(t)?t:[t]}function ke(t){for(const e of["sc","oa","dcterms","dctypes","iiif"])if(t.startsWith(`${e}:`))return t.slice(e.length+1);return t}const je=["Collection","Manifest","Annotation","AnnotationPage","Range","Service"];function O(t){const e=t["@id"]||t.id;let i=t["@type"]||t.type;const n=t.profile||void 0,r=t["@context"]||void 0;if(n){const a=De(n);if(a)return a}if(r){const a=re(r);if(a)return a}if(i){if(Array.isArray(i)){if(i.indexOf("oa:CssStylesheet")!==-1)return"CssStylesheet";if(i.indexOf("cnt:ContentAsText")!==-1)return"TextualBody";i=i[0]}for(const a of["sc","oa","dcterms","dctypes","iiif"])if(i.startsWith(`${a}:`)){i=i.slice(a.length+1);break}switch(i){case"Layer":return"AnnotationCollection";case"AnnotationList":return"AnnotationPage";case"cnt:ContentAsText":return"TextualBody"}}if(i&&je.indexOf(i)!==-1)return i;if(t.format){if(t.format.startsWith("image/"))return"Image";if(t.format.startsWith("text/")||t.format==="application/pdf")return"Text";if(t.format.startsWith("application/"))return"Dataset"}return e&&(e.endsWith(".jpg")||e.endsWith(".png")||e.endsWith(".jpeg"))?"Image":i||"unknown"}const $e=/http(s)?:\/\/(creativecommons.org|rightsstatements.org)[^"'\\<\n]+/gm;function Ge(t){const e=t.match($e);return e?e[0]:t}function qe(t,e="Rights/License",i="none"){let n=null;const r=[],a=Array.isArray(t)?t:[t];for(const o of a){const l=o?Ge(o):void 0;if(l&&(l.indexOf("creativecommons.org")!==-1||l.indexOf("rightsstatements.org")!==-1)){l.startsWith("https://")?n=`http://${l.slice(8)}`:n=l;continue}l&&r.push({label:{[i]:[e]},value:{[i]:[l]}})}return[n,r]}const Ue=["http://iiif.io/api/presentation/2/context.json","http://iiif.io/api/image/2/context.json","http://iiif.io/api/image/1/context.json","http://library.stanford.edu/iiif/image-api/1.1/context.json","http://iiif.io/api/search/1/context.json","http://iiif.io/api/search/0/context.json","http://iiif.io/api/auth/1/context.json","http://iiif.io/api/auth/0/context.json","http://iiif.io/api/annex/openannotation/context.json"];function Ve(t){if(t){const e=Array.isArray(t)?t:[t],i=[];for(const n of e)n==="http://iiif.io/api/presentation/2/context.json"&&i.push("http://iiif.io/api/presentation/3/context.json"),Ue.indexOf(n)===-1&&i.push(n);if(e.length)return i.length===1?i[0]:i}}function We(t){return t?t.map(e=>({label:c(e.label),value:c(e.value)})):[]}function v(t){for(const e in t)(typeof t[e]=="undefined"||t[e]===null)&&delete t[e];return t}let ae=0;function se(t,e){const i=encodeURI(t.id||t["@id"]||"").trim();return i&&e?`${i}/${e}`:i||(ae++,`http://example.org/${t["@type"]}${e?`/${e}`:""}/${ae}`)}function p(t){const e=[...t.behavior||[]];return t.viewingHint&&e.push(t.viewingHint),{"@context":t["@context"]?Ve(t["@context"]):void 0,id:(t["@id"]||se(t)).trim(),type:O(t),behavior:e.length?e:void 0,height:t.height?t.height:void 0,width:t.width?t.width:void 0,motivation:t.motivation?ke(t.motivation):void 0,viewingDirection:t.viewingDirection,profile:t.profile,format:t.format?t.format:void 0,duration:void 0,timeMode:void 0}}function f(t){const[e,i]=qe(t.license),n=[...t.metadata?We(t.metadata):[],...i];return{rights:e,metadata:n.length?n:void 0,label:t.label?c(t.label):void 0,requiredStatement:t.attribution?{label:c(S.attributionLabel),value:c(t.attribution)}:void 0,navDate:t.navDate,summary:t.description?c(t.description):void 0,thumbnail:t.thumbnail}}function ze(t){if(!t.within)return;const e=Array.isArray(t.within)?t.within:[t.within],i=[];for(const n of e)if(typeof n=="string"){if(n)switch(t["@type"]){case"sc:Manifest":i.push({id:n,type:"Collection"});break}}else n["@id"]&&i.push({id:n["@id"],type:O(n)});return i.length?i:void 0}function h(t){const e=t.related?Array.isArray(t.related)?t.related:[t.related]:[],i=t.contentLayer;return{provider:t.logo||e.length?[{id:S.providerId,type:"Agent",homepage:e.length?[e[0]]:void 0,logo:t.logo?Array.isArray(t.logo)?t.logo:[t.logo]:void 0,label:c(S.providerName)}]:void 0,partOf:ze(t),rendering:t.rendering,seeAlso:t.seeAlso,start:t.startCanvas,service:t.service?Ne(t.service):void 0,supplementary:i?[i]:void 0}}function Be(t){return v({...p(t),...f(t),...h(t),items:t.members})}function He(t){const e=[],i=[];for(const r of t.sequences||[])r.canvases.length&&e.push(...r.canvases),r.behavior&&i.push(...r.behavior);const n=p(t);return i.length&&(n.behavior?n.behavior.push(...i):n.behavior=i),v({...n,...f(t),...h(t),items:e,structures:t.structures})}function Ke(t){return v({...p(t),...f(t),...h(t),annotations:t.otherContent&&t.otherContent.length?t.otherContent:void 0,items:t.images&&t.images.length?[{id:se(t,"annotation-page"),type:"AnnotationPage",items:t.images}]:void 0})}function Qe(t){return v({...p(t),...f(t),...h(t),items:t.resources&&t.resources.length?t.resources:void 0})}function Xe(t){return!t.canvases||t.canvases.length===0?{canvases:[],behavior:[]}:{canvases:t.canvases,behavior:t.viewingHint?[t.viewingHint]:[]}}function Ye(t){return v({...p(t),...f(t),...h(t),target:typeof t.on=="string"?encodeURI(t.on).trim():t.on,body:t.resource})}function Ze(t){const e=t;return v({...p(e),...f(e),...h(e)})}function Je(t){const e=[];return t.default&&t.default!=="rdf:nil"&&e.push(t.default),t.item&&t.item!=="rdf:nil"&&e.push(...t.item),{...p(t),...f(t),items:e}}function et(t){return v({...p(t),...f(t),...h(t),items:t.members})}function tt(t){const{"@id":e,"@type":i,"@context":n,profile:r,...a}=t,o={};return e&&(o["@id"]=e),o["@type"]=O(t),o["@type"]==="unknown"&&(n&&n.length&&(o["@context"]=n),o["@type"]="Service"),r&&(o.profile=P(r)),v({...o,...a})}function it(t){return v({...p(t),...f(t),...h(t)})}const oe=new T({collection:[Be],manifest:[He],canvas:[Ke],annotationList:[Qe],sequence:[Xe],annotation:[Ye],contentResource:[Ze],choice:[Je],range:[et],service:[tt],layer:[it]});function le(t){return t&&t["@context"]&&(t["@context"]==="http://iiif.io/api/presentation/2/context.json"||t["@context"].indexOf("http://iiif.io/api/presentation/2/context.json")!==-1||t["@context"]==="http://www.shared-canvas.org/ns/context.json")||t["@context"]==="http://iiif.io/api/image/2/context.json"?oe.traverseUnknown(t):t}var nt=Object.freeze({__proto__:null,types:m,identifyResource:b,Traverse:T,convertLanguageMapping:c,getProfile:P,getTypeFromContext:re,presentation2to3:oe,convertPresentation2:le});const rt={id:"https://iiif-parser/annotation",type:"Annotation",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[],accessibility:[],audience:[],body:[],bodyValue:null,canonical:null,created:null,creator:[],generated:null,generator:[],modified:null,motivation:[],rights:[],stylesheet:null,target:[],timeMode:void 0,via:[],partOf:[]},ve={id:"https://iiif-parser/annotation-page",type:"AnnotationPage",behavior:[],motivation:null,label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[]},pe={id:"https://iiif-parser/empty-canvas",type:"Canvas",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],duration:0,height:0,width:0},fe={id:"https://iiif-parser/empty-collection",type:"Collection",label:null,viewingDirection:"left-to-right",behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],services:[]},ce={id:"https://iiif-parser/empty-manifest",type:"Manifest",annotations:[],behavior:[],homepage:[],items:[],label:null,logo:[],metadata:[],motivation:null,navDate:null,provider:[],partOf:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,rendering:[],requiredStatement:null,rights:null,seeAlso:[],service:[],services:[],start:null,structures:[],summary:null,thumbnail:[],viewingDirection:"left-to-right"},he={id:"https://iiif-parser/empty-canvas",type:"Range",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],start:null,supplementary:null,viewingDirection:"left-to-right"},ue={id:"https://iiif-parser/empty-agent",type:"Agent",label:{},logo:[],seeAlso:[],homepage:[]},F=["Collection","Manifest","Canvas","AnnotationPage","AnnotationCollection","Annotation","ContentResource","Range","Service","Selector","Agent"];function de(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t.type=="string"){const e=F.indexOf(t.type);if(e!==-1)return F[e]}if(t.profile)return"Service";throw new Error("Resource type is not known")}class M{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationCollection:[],annotationPage:[],annotation:[],contentResource:[],choice:[],range:[],service:[],agent:[],...e},this.options={allowUndefinedReturn:!1,...i}}static all(e){return new M({collection:[e],manifest:[e],canvas:[e],annotationCollection:[e],annotationPage:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e]})}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=e.thumbnail.map(i=>this.traverseType(i,this.traversals.contentResource))),e.provider&&(e.provider=e.provider.map(i=>this.traverseAgent(i))),e}traverseLinking(e){return e.seeAlso&&(e.seeAlso=e.seeAlso.map(i=>this.traverseType(i,this.traversals.contentResource))),e.service&&(e.service=e.service.map(i=>this.traverseType(i,this.traversals.service))),e.services&&(e.services=e.services.map(i=>this.traverseType(i,this.traversals.service))),e.logo&&(e.logo=e.logo.map(i=>this.traverseType(i,this.traversals.contentResource))),e.homepage&&(e.homepage=e.homepage.map(i=>this.traverseType(i,this.traversals.contentResource))),e.partOf&&(e.partOf=e.partOf.map(i=>typeof i=="string"||!i.type?this.traverseType(i,this.traversals.contentResource):i.type==="Canvas"?this.traverseType(i,this.traversals.canvas):i.type==="AnnotationCollection"?this.traverseType(i,this.traversals.annotationCollection):this.traverseType(i,this.traversals.contentResource))),e.start&&(e.start=e.start?this.traverseType(e.start,this.traversals.canvas):null),e.rendering&&(e.rendering=e.rendering.map(i=>this.traverseType(i,this.traversals.contentResource))),e.supplementary&&(e.supplementary=e.supplementary.map(i=>this.traverseType(i,this.traversals.contentResource))),e}traverseCollectionItems(e){return e.items&&e.items.map(i=>i.type==="Collection"?this.traverseCollection(i):this.traverseManifest(i)),e}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseInlineAnnotationPages(this.traverseLinking(this.traversePosterCanvas(this.traverseCollectionItems(e))))),this.traversals.collection)}traverseManifestItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseCanvas(i))),e}traverseManifestStructures(e){return e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseManifest(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traverseManifestStructures(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e)))))),this.traversals.manifest)}traverseCanvasItems(e){return e.items=(e.items||[]).map(i=>this.traverseAnnotationPage(i)),e}traverseInlineAnnotationPages(e){return typeof e=="string"||!e||e.annotations&&(e.annotations=e.annotations.map(i=>this.traverseAnnotationPage(i))),e}traverseCanvas(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))))),this.traversals.canvas)}traverseAnnotationPageItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseAnnotation(i))),e}traverseAnnotationPage(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationPageItems(e))),this.traversals.annotationPage)}traverseAnnotationBody(e){return Array.isArray(e.body)?e.body=e.body.map(i=>this.traverseContentResource(i)):e.body&&(e.body=this.traverseContentResource(e.body)),e}traversePosterCanvas(e){return e.posterCanvas&&(e.posterCanvas=this.traverseType(e.posterCanvas,this.traversals.canvas)),e.placeholderCanvas&&(e.placeholderCanvas=this.traverseType(e.placeholderCanvas,this.traversals.canvas)),e.accompanyingCanvas&&(e.accompanyingCanvas=this.traverseType(e.accompanyingCanvas,this.traversals.canvas)),e}traverseAnnotation(e){return this.traverseType(this.traverseLinking(this.traverseAnnotationBody(e)),this.traversals.annotation)}traverseContentResourceLinking(e){return typeof e=="string"||!e||e&&e.service&&(e.service=(e.service||[]).map(i=>this.traverseType(i,this.traversals.service))),e}traverseContentResource(e){return e.type==="Choice"&&(e.items=e.items.map(i=>this.traverseContentResource(i))),this.traverseType(this.traverseInlineAnnotationPages(this.traverseContentResourceLinking(e)),this.traversals.contentResource)}traverseRangeRanges(e){return e.items&&(e.items=e.items.map(i=>typeof i=="string"?this.traverseCanvas({id:i,type:"Canvas"}):i.type==="Manifest"?this.traverseManifest(i):this.traverseRange(i))),e}traverseRange(e){return this.traverseType(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseRangeRanges(e)))),this.traversals.range)}traverseAgent(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.agent)}traverseType(e,i){return i.reduce((n,r)=>{const a=r(n);return typeof a=="undefined"&&!this.options.allowUndefinedReturn?n:a},e)}traverseService(e){return this.traverseType(e,this.traversals.service)}traverseUnknown(e){const i=de(e);switch(i){case"Collection":return this.traverseCollection(e);case"Manifest":return this.traverseManifest(e);case"Canvas":return this.traverseCanvas(e);case"AnnotationPage":return this.traverseAnnotationPage(e);case"Annotation":return this.traverseAnnotation(e);case"ContentResource":return this.traverseContentResource(e);case"Range":return this.traverseRange(e);case"Service":return this.traverseService(e);case"Agent":return this.traverseAgent(e);default:throw new Error(`Unknown or unsupported resource type of ${i}`)}}}const at={Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}};function me(){return{Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}}}function ge(t,e){if(typeof t=="string")return{id:t,type:e};if(!t.id)throw new Error(`Invalid resource does not have an ID (${e})`);return t}function st(t){return(e,i)=>{const n=t[e]?t[e]:{};return r=>{const a=ge(r,i||e);return a&&a.id&&e?(n[a.id]=n[a.id]?Object.assign({},n[a.id],a):Object.assign({},a),{id:a.id,type:e==="ContentResource"?e:a.type}):a}}}function ot(t){return(e,i)=>n=>{const{id:r,type:a}=ge(n,i||e);if(typeof r=="undefined")throw new Error("Found invalid entity without an ID.");return e==="ContentResource"?t[r]=e:t[r]=a,n}}function lt(t){const e=JSON.stringify(t);let i=5381,n=e.length;for(;n;)i=i*33^e.charCodeAt(--n);const a=(i>>>0).toString(16);return a.length%2?"0"+a:a}function D(t){return e=>typeof e=="string"?{id:e,type:t}:e.id?e.type?e:{type:t,...e}:{id:`vault://${lt(e)}`,type:t,...e}}function R(t){return e=>({...t,...e})}function E(t){return Array.isArray(t)?t:[t]}function vt(t){return t.body&&(t.body=E(t.body)),t.seeAlso&&(t.seeAlso=E(t.seeAlso)),t.body&&(t.body=E(t.body)),t.audience&&(t.audience=E(t.audience)),t.accessibility&&(t.accessibility=E(t.accessibility)),t.motivation&&(t.motivation=E(t.motivation)),t}function pt(t){const e=le(t),i=me(),n={},r=st(i),a=ot(n),l=new M({collection:[R(fe),a("Collection"),r("Collection")],manifest:[R(ce),a("Manifest"),r("Manifest")],canvas:[R(pe),a("Canvas"),r("Canvas")],annotationPage:[D("AnnotationPage"),R(ve),a("AnnotationPage"),r("AnnotationPage")],annotation:[D("Annotation"),vt,a("Annotation"),r("Annotation")],contentResource:[D("ContentResource"),a("ContentResource"),r("ContentResource")],range:[R(he),a("Range","Canvas"),r("Range","Canvas")],agent:[R(ue),a("Agent"),r("Agent")]}).traverseUnknown(e);return{entities:i,resource:l,mapping:n}}const u="__$UNSET$__",N="__$UNWRAP$__";function ft(t,e){const i=t.requests[e],n=t.mapping[e];if(!(!n||i&&i.resourceUri&&!t.entities[n][i.resourceUri]))return t.entities[n][i?i.resourceUri:e]}function ye(t){const e={};for(const[i,n]of t){if(i===N&&n!==u)return n;n!==u&&typeof n!="undefined"&&n!==null&&(e[i]=n)}return e}function ct(t,e,i){if(!e.type||!e.id)throw new Error("Unknown entity");if(!i[e.type])throw new Error(`Serializer not found for ${e.type}`);function n(r){const a=i[r.type];if(!a)return u;const o=ft(t,r.id)||(r.id&&r.type?r:null);if(!o)return u;const l=a(o,t,{isTopLevel:e.id===r.id});let L=l.next();for(;!L.done;){const x=L.value;let k=u;if(x)if(Array.isArray(x)){const _e=[];for(const gt of x)_e.push(n(gt));k=_e}else k=n(x);L=l.next(k)}return L.value===u?u:ye(L.value)}return n(e)}function g(t){if(!t)return;const e=Object.keys(t);if(e.length!==0){if(e.length===1){const i=e[0];if(!i)return"";const n=(t[i]||[]).join("");return i==="@none"||i==="none"||i==="en"?n:{"@language":i,"@value":n}}return e.map(i=>({"@language":i,"@value":(t[i]||[]).join("")}))}}function Ae(t){return Array.isArray(t)?t.map(e=>Ae(e)):typeof t=="string"?t:t.type&&t.type==="Canvas"?t.id:t}function d(t,e=!1){if(!!t)return t.length>1&&!e?t:t[0]||void 0}function ht(t){if(!!t){if(typeof t=="string")return{"@id":t};if("@id"in t){const e={...t};return delete e["@type"],e}return{"@context":"http://iiif.io/api/image/2/context.json","@id":t.id,profile:`http://iiif.io/api/image/2/profiles/${t.profile}.json`}}}function y(t,e){return[["@id",t.id],["@type",e],["format",t.format],["height",t.height],["width",t.width],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0]]}function*A(t){const e=t.provider?yield t.provider[0]:void 0;return[["label",g(t.label)],["metadata",t.metadata&&t.metadata.length?t.metadata.map(i=>({label:g(i.label)||"",value:g(i.value)||""})):void 0],["description",g(t.summary)],["thumbnail",d(yield t.thumbnail)],["navDate",t.navDate],["logo",e?d(e.logo):void 0],["homepage",e?e.homepage:void 0],["attribution",t.requiredStatement?g(t.requiredStatement.value):void 0]]}function*w(t){return[["seeAlso",d(yield t.seeAlso)],["service",d((t.service||[]).map(ht))],["rendering",d(yield t.rendering)],["startCanvas",t.start?t.start.id:void 0]]}const ut={Manifest:function*(t){return[...y(t,"sc:Manifest"),...yield*A(t),...yield*w(t),["sequences",[{"@id":`${t.id}/sequence0`,"@type":"sc:Sequence",canvases:yield t.items}]],["structures",yield t.structures]]},Canvas:function*(t){const i=(yield t.items)[0];return[...y(t,"sc:Canvas"),...yield*A(t),...yield*w(t),["images",i?[i.resources]:void 0],["annotations",t.annotations&&t.annotations.length?d(yield t.annotations):void 0]]},AnnotationPage:function*(t){return[...y(t,"sc:AnnotationList"),...yield*A(t),["resources",t.items&&t.items.length?d(yield t.items):void 0]]},Annotation:function*(t){return[["@id",t.id],["@type","oa:Annotation"],["motivation","sc:painting"],["on",Ae(t.target)],["resource",d(yield t.body,!0)]]},ContentResource:function*(t){switch(t.type){case"Image":return[...y(t,"dctypes:Image"),...yield*A(t),...yield*w(t)];case"Text":case"Dataset":default:return[...y(t,void 0),...yield*A(t)]}},AnnotationCollection:function*(t){return[["@id",t.id],["@type","sc:Layer"],["label",g(t.label)]]},Collection:function*(t){return[...y(t,"sc:Collection"),...yield*A(t),...yield*w(t),["members",yield*t.items]]},Range:function*(t){const e=[],i=[];if(t.items)for(const n of t.items){const r=yield n;e.push({"@id":n.id,"@type":n.type,label:r?r.label:void 0,within:t.id}),n.type==="Canvas"&&i.push(n.id)}return[...y(t,"sc:Range"),...yield*A(t),...yield*w(t),["canvases",i.length===e.length?i:void 0],["members",i.length!==e.length?e:void 0]]}};function C(t){return[["id",t.id?.startsWith("vault://")?void 0:t.id],["type",t.type],["format",t.format],["profile",t.profile],["height",t.height],["width",t.width],["duration",t.duration||void 0],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0],["behavior",t.behavior&&t.behavior.length?t.behavior:void 0],["timeMode",t.timeMode],["motivation",Array.isArray(t.motivation)?t.motivation[0]:t.motivation]]}function s(t){if(!(!t||t.length===0))return t}function Ce(t){if(t&&t.type&&t.type==="ImageService2"){const{id:e,type:i,profile:n,...r}=t;return{"@id":e,"@type":i,profile:n.startsWith("http")?n:`http://iiif.io/api/image/2/${n}.json`,...r}}return t}function Ie(t){if(!(!t||t.length===0))return t.map(Ce)}function*I(t){return[["label",t.label],["metadata",s(t.metadata)],["summary",t.summary],["requiredStatement",t.requiredStatement],["rights",t.rights],["navDate",t.navDate],["language",t.language],["thumbnail",s(yield t.thumbnail)],["placeholderCanvas",yield t.placeholderCanvas],["accompanyingCanvas",yield t.accompanyingCanvas],["provider",s(yield t.provider)]]}function*_(t){return[["seeAlso",s(yield t.seeAlso)],["service",Ie(t.service)],["services",Ie(t.services)],["rendering",s(yield t.rendering)],["supplementary",s(yield t.supplementary)],["homepage",s(yield t.homepage)],["logo",s(yield t.logo)],["partOf",s(yield t.partOf)],["start",t.start]]}var dt=Object.freeze({__proto__:null,emptyAnnotation:rt,emptyAnnotationPage:ve,emptyCanvas:pe,emptyCollection:fe,emptyManifest:ce,emptyRange:he,emptyAgent:ue,defaultEntities:at,getDefaultEntities:me,normalize:pt,types:F,identifyResource:de,Traverse:M,UNSET:u,UNWRAP:N,serializedFieldsToObject:ye,serialize:ct,languageString2to3:g,serializeConfigPresentation2:ut,serializeConfigPresentation3:{Manifest:function*(t,e,{isTopLevel:i}){return i?[["@context","http://iiif.io/api/presentation/3/context.json"],...C(t),...yield*I(t),...yield*_(t),["items",yield t.items],["structures",s(yield t.structures)],["annotations",s(yield t.annotations)]]:[...C(t),...yield*I(t)]},Canvas:function*(t){return[...C(t),...yield*I(t),...yield*_(t),["items",yield t.items],["annotations",s(yield t.annotations)]]},Agent:function*(t){return[["id",t.id],["type","Agent"],["label",t.label],...yield*_(t)]},AnnotationPage:function*(t){return[...Object.entries(t).map(([i,n])=>[i,Array.isArray(n)?s(n):n]).filter(([i,n])=>i!=="items"),...yield*_(t),["items",yield t.items]]},Service:function*(t){return[[N,Ce(t)]]},Annotation:function*(t){const e=Object.entries(t).map(([n,r])=>n==="motivation"?[n,Array.isArray(r)?r[0]:r]:[n,Array.isArray(r)?s(r):r]).filter(([n])=>n!=="body"),i=yield t.body;return[...e,["body",i.length===1?i[0]:i]]},ContentResource:function*(t){return[...C(t),...yield*I(t),...yield*_(t),["annotations",s(yield t.annotations)],["items",s(yield t.items)]]},AnnotationCollection:function*(t){return[["id",t.id],["type","AnnotationCollection"],["label",t.label]]},Collection:function*(t,e,{isTopLevel:i}){return i?[["@context","http://iiif.io/api/presentation/3/context.json"],...C(t),...yield*I(t),...yield*_(t),["items",s(yield t.items)]]:[...C(t),...yield*I(t)]},Range:function*(t){const e=[];for(const i of t.items)i.type==="Range"?e.push(yield i):e.push(i);return[...C(t),...yield*I(t),...yield*_(t),["items",e],["annotations",s(yield t.annotations)]]}}}),mt={Presentation2:nt,Presentation3:dt};return mt}); | ||
| (function(m,b){typeof exports=="object"&&typeof module!="undefined"?module.exports=b():typeof define=="function"&&define.amd?define(b):(m=typeof globalThis!="undefined"?globalThis:m||self,m.IIIFParser=b())})(this,function(){"use strict";const m=["sc:Collection","sc:Manifest","sc:Canvas","oa:AnnotationList","oa:Annotation","sc:Range","sc:Layer","sc:Sequence","oa:Choice","Service","ContentResource"];function b(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t["@type"]=="string"){const e=m.indexOf(t["@type"]);if(e!==-1)return m[e]}if(t.profile)return"Service";if(t.format||t["@type"])return"ContentResource";throw new Error("Resource type is not known")}class T{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationList:[],sequence:[],annotation:[],contentResource:[],choice:[],range:[],service:[],layer:[],...e},this.options={convertPropsToArray:!0,mergeMemberProperties:!0,allowUndefinedReturn:!1,...i}}static all(e){return new T({collection:[e],manifest:[e],canvas:[e],annotationList:[e],sequence:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e],layer:[e]})}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCollectionItems(e))),this.traversals.collection)}traverseCollectionItems(e){if(this.options.mergeMemberProperties){const i=[...(e.manifests||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Manifest"}:n),...(e.collections||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Collection"}:n),...e.members||[]];delete e.collections,delete e.manifests,e.members=i}return e.manifests&&(e.manifests=e.manifests.map(i=>this.traverseManifest(typeof i=="string"?{"@id":i,"@type":"sc:Manifest"}:i))),e.collections&&(e.collections=e.collections.map(i=>this.traverseCollection(typeof i=="string"?{"@id":i,"@type":"sc:Collection"}:i))),e.members&&(e.members=e.members.map(i=>typeof i=="string"?i:this.traverseUnknown(i))),e}traverseManifest(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e))),this.traversals.manifest)}traverseManifestItems(e){return e.sequences&&(e.sequences=e.sequences.map(i=>this.traverseSequence(i))),e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseSequence(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseSequenceItems(e))),this.traversals.sequence)}traverseSequenceItems(e){return e.canvases&&(e.canvases=e.canvases.map(i=>this.traverseCanvas(i))),e}traverseCanvas(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))),this.traversals.canvas)}traverseCanvasItems(e){return e.images&&(e.images=e.images.map(i=>this.traverseAnnotation(i))),e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseRange(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseRangeItems(e))),this.traversals.range)}traverseRangeItems(e){if(this.options.mergeMemberProperties){const i=[...(e.ranges||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Range"}:n),...(e.canvases||[]).map(n=>typeof n=="string"?{"@id":n,"@type":"sc:Canvas"}:n),...e.members||[]];delete e.ranges,delete e.canvases,e.members=i.length?i.map(n=>this.traverseUnknown(n)):void 0}return e}traverseAnnotationList(e){const i=typeof e=="string"?{"@id":e,"@type":"oa:AnnotationList"}:e;return this.traverseType(this.traverseDescriptive(this.traverseAnnotationListItems(i)),this.traversals.annotationList)}traverseAnnotationListItems(e){return e.resources&&(e.resources=e.resources.map(i=>this.traverseAnnotation(i))),e}traverseAnnotation(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationItems(e))),this.traversals.annotation)}traverseAnnotationItems(e){return e.resource&&(e.resource=this.traverseContentResource(e.resource)),e.on,e}traverseLayer(e){return this.traverseType(this.traverseLinking(this.traverseLayerItems(e)),this.traversals.layer)}traverseLayerItems(e){return e.otherContent&&(e.otherContent=e.otherContent.map(i=>this.traverseAnnotationList(i))),e}traverseChoice(e){return this.traverseType(this.traverseChoiceItems(e),this.traversals.choice)}traverseChoiceItems(e){return e.default&&e.default!=="rdf:nil"&&(e.default=this.traverseContentResource(e.default)),e.item&&e.item!=="rdf:nil"&&(e.item=e.item.map(i=>this.traverseContentResource(i))),e}traverseService(e){return this.traverseType(this.traverseLinking(e),this.traversals.service)}traverseContentResource(e){return e["@type"]==="oa:Choice"?this.traverseChoice(e):this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.contentResource)}traverseUnknown(e){if(!e["@type"]||typeof e=="string")return e;switch(b(e)){case"sc:Collection":return this.traverseCollection(e);case"sc:Manifest":return this.traverseManifest(e);case"sc:Canvas":return this.traverseCanvas(e);case"sc:Sequence":return this.traverseSequence(e);case"sc:Range":return this.traverseRange(e);case"oa:Annotation":return this.traverseAnnotation(e);case"oa:AnnotationList":return this.traverseAnnotationList(e);case"sc:Layer":return this.traverseLayer(e);case"Service":return this.traverseService(e);case"oa:Choice":return this.traverseChoice(e);case"ContentResource":return this.traverseContentResource(e)}return e.profile?this.traverseService(e):e}traverseImageResource(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],r=[];for(const a of n)typeof a=="string"?r.push(this.traverseContentResource({"@id":a,"@type":"dctypes:Image"})):r.push(this.traverseContentResource(a));return!i&&!this.options.convertPropsToArray?r[0]:r}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=this.traverseImageResource(e.thumbnail)),e.logo&&(e.logo=this.traverseImageResource(e.logo)),e}traverseOneOrMoreServices(e){const i=Array.isArray(e),n=Array.isArray(e)?e:[e],r=[];for(const a of n)r.push(this.traverseService(a));return!i&&!this.options.convertPropsToArray?r[0]:r}traverseLinking(e){return e.related&&(e.related=this.traverseOneOrManyType(e.related,this.traversals.contentResource)),e.rendering&&(e.rendering=this.traverseOneOrManyType(e.rendering,this.traversals.contentResource)),e.service&&(e.service=this.traverseOneOrMoreServices(e.service)),e.seeAlso&&(e.seeAlso=this.traverseOneOrManyType(e.seeAlso,this.traversals.contentResource)),e.within&&(typeof e.within=="string"||(e.within=this.traverseOneOrManyType(e.within,this.traversals.contentResource))),e.startCanvas&&(typeof e.startCanvas=="string"?e.startCanvas=this.traverseType({"@id":e.startCanvas,"@type":"sc:Canvas"},this.traversals.canvas):e.startCanvas&&this.traverseType(e.startCanvas,this.traversals.canvas)),e.contentLayer&&(typeof e.contentLayer=="string"?e.contentLayer=this.traverseLayer({"@id":e.contentLayer,"@type":"sc:Layer"}):e.contentLayer=this.traverseLayer(e.contentLayer)),e}traverseOneOrManyType(e,i){if(!Array.isArray(e))if(this.options.convertPropsToArray)e=[e];else return this.traverseType(e,i);return e.map(n=>this.traverseType(n,i))}traverseType(e,i){return i.reduce((n,r)=>{const a=r(n);return typeof a=="undefined"&&!this.options.allowUndefinedReturn?n:a},e)}}const be="http://library.stanford.edu/iiif/image-api/compliance.html#level0",j="http://library.stanford.edu/iiif/image-api/compliance.html#level1",$="http://library.stanford.edu/iiif/image-api/compliance.html#level2",Re="http://library.stanford.edu/iiif/image-api/conformance.html#level0",G="http://library.stanford.edu/iiif/image-api/conformance.html#level1",q="http://library.stanford.edu/iiif/image-api/conformance.html#level2",Ee="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0",U="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1",V="http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2",we="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0",W="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1",z="http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2",Le="http://iiif.io/api/image/1/level0.json",Te="http://iiif.io/api/image/1/profiles/level0.json",B="http://iiif.io/api/image/1/level1.json",H="http://iiif.io/api/image/1/profiles/level1.json",K="http://iiif.io/api/image/1/level2.json",Q="http://iiif.io/api/image/1/profiles/level2.json",Me="http://iiif.io/api/image/2/level0.json",xe="http://iiif.io/api/image/2/profiles/level0.json",X="http://iiif.io/api/image/2/level1.json",Y="http://iiif.io/api/image/2/profiles/level1.json",Z="http://iiif.io/api/image/2/level2.json",J="http://iiif.io/api/image/2/profiles/level2.json",Se="level0",ee="level1",te="level2",Pe="http://iiif.io/api/image/2/level0",ie="http://iiif.io/api/image/2/level1",ne="http://iiif.io/api/image/2/level2",Oe=[ie,ne,j,$,G,q,U,V,W,z,B,H,K,Q,X,Y,Z,J,ee,te],Fe=[Pe,ie,ne,be,j,$,Re,G,q,Ee,U,V,we,W,z,Le,Te,B,H,K,Q,Me,xe,X,Y,Z,J,Se,ee,te],S={attributionLabel:"Attribution",lang:"none",providerId:"http://example.org/provider",providerName:"Unknown"};function c(t,e="none"){if(!t)return{};const i=Array.isArray(t)?t:[t],n={};for(const r of i){if(typeof r=="string"){n[e]=n[e]?n[e]:[],n[e].push(r||"");continue}if(!r["@language"]){n[e]=n[e]?n[e]:[],n[e].push(r["@value"]||"");continue}const a=r["@language"];n[a]=n[a]?n[a]:[],n[a].push(r["@value"]||"")}return n}function P(t){if(Array.isArray(t))return P(t.find(e=>typeof e=="string"));if(Fe.indexOf(t)!==-1)return"level2";if(Oe.indexOf(t)!==-1)return"level1";if(typeof t=="string")return t}function re(t){const e=Array.isArray(t)?t:[t];for(const i of e)switch(i){case"http://iiif.io/api/image/2/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2":return"ImageService2";case"http://iiif.io/api/image/1/context.json":case"http://library.stanford.edu/iiif/image-api/1.1/context.json":return"ImageService1";case"http://iiif.io/api/annex/openannotation/context.json":return"ImageApiSelector"}}function De(t){switch(t){case"http://iiif.io/api/image/2/level0.json":case"http://iiif.io/api/image/2/level1.json":case"http://iiif.io/api/image/2/level2.json":return"ImageService2";case"http://iiif.io/api/auth/1/kiosk":case"http://iiif.io/api/auth/1/login":case"http://iiif.io/api/auth/1/clickthrough":case"http://iiif.io/api/auth/1/external":case"http://iiif.io/api/auth/0/kiosk":case"http://iiif.io/api/auth/0/login":case"http://iiif.io/api/auth/0/clickthrough":case"http://iiif.io/api/auth/0/external":return"AuthCookieService1";case"http://iiif.io/api/auth/1/token":case"http://iiif.io/api/auth/0/token":return"AuthTokenService1";case"http://iiif.io/api/auth/1/logout":case"http://iiif.io/api/auth/0/logout":return"AuthLogoutService1";case"http://iiif.io/api/search/1/search":case"http://iiif.io/api/search/0/search":return"SearchService1";case"http://iiif.io/api/search/1/autocomplete":case"http://iiif.io/api/search/0/autocomplete":return"AutoCompleteService1"}}function Ne(t){return Array.isArray(t)?t:[t]}function ke(t){for(const e of["sc","oa","dcterms","dctypes","iiif"])if(t.startsWith(`${e}:`))return t.slice(e.length+1);return t}const je=["Collection","Manifest","Annotation","AnnotationPage","Range","Service"];function O(t){const e=t["@id"]||t.id;let i=t["@type"]||t.type;const n=t.profile||void 0,r=t["@context"]||void 0;if(n){const a=De(n);if(a)return a}if(r){const a=re(r);if(a)return a}if(i){if(Array.isArray(i)){if(i.indexOf("oa:CssStylesheet")!==-1)return"CssStylesheet";if(i.indexOf("cnt:ContentAsText")!==-1)return"TextualBody";i=i[0]}for(const a of["sc","oa","dcterms","dctypes","iiif"])if(i.startsWith(`${a}:`)){i=i.slice(a.length+1);break}switch(i){case"Layer":return"AnnotationCollection";case"AnnotationList":return"AnnotationPage";case"cnt:ContentAsText":return"TextualBody"}}if(i&&je.indexOf(i)!==-1)return i;if(t.format){if(t.format.startsWith("image/"))return"Image";if(t.format.startsWith("text/")||t.format==="application/pdf")return"Text";if(t.format.startsWith("application/"))return"Dataset"}return e&&(e.endsWith(".jpg")||e.endsWith(".png")||e.endsWith(".jpeg"))?"Image":i||"unknown"}const $e=/http(s)?:\/\/(creativecommons.org|rightsstatements.org)[^"'\\<\n]+/gm;function Ge(t){const e=t.match($e);return e?e[0]:t}function qe(t,e="Rights/License",i="none"){let n=null;const r=[],a=Array.isArray(t)?t:[t];for(const o of a){const l=o?Ge(o):void 0;if(l&&(l.indexOf("creativecommons.org")!==-1||l.indexOf("rightsstatements.org")!==-1)){l.startsWith("https://")?n=`http://${l.slice(8)}`:n=l;continue}l&&r.push({label:{[i]:[e]},value:{[i]:[l]}})}return[n,r]}const Ue=["http://iiif.io/api/presentation/2/context.json","http://iiif.io/api/image/2/context.json","http://iiif.io/api/image/1/context.json","http://library.stanford.edu/iiif/image-api/1.1/context.json","http://iiif.io/api/search/1/context.json","http://iiif.io/api/search/0/context.json","http://iiif.io/api/auth/1/context.json","http://iiif.io/api/auth/0/context.json","http://iiif.io/api/annex/openannotation/context.json"];function Ve(t){if(t){const e=Array.isArray(t)?t:[t],i=[];for(const n of e)n==="http://iiif.io/api/presentation/2/context.json"&&i.push("http://iiif.io/api/presentation/3/context.json"),Ue.indexOf(n)===-1&&i.push(n);if(e.length)return i.length===1?i[0]:i}}function We(t){return t?t.map(e=>({label:c(e.label),value:c(e.value)})):[]}function v(t){for(const e in t)(typeof t[e]=="undefined"||t[e]===null)&&delete t[e];return t}let ae=0;function se(t,e){const i=encodeURI(t.id||t["@id"]||"").trim();return i&&e?`${i}/${e}`:i||(ae++,`http://example.org/${t["@type"]}${e?`/${e}`:""}/${ae}`)}function p(t){const e=[...t.behavior||[]];return t.viewingHint&&e.push(t.viewingHint),{"@context":t["@context"]?Ve(t["@context"]):void 0,id:(t["@id"]||se(t)).trim(),type:O(t),behavior:e.length?e:void 0,height:t.height?t.height:void 0,width:t.width?t.width:void 0,motivation:t.motivation?ke(t.motivation):void 0,viewingDirection:t.viewingDirection,profile:t.profile,format:t.format?t.format:void 0,duration:void 0,timeMode:void 0}}function f(t){const[e,i]=qe(t.license),n=[...t.metadata?We(t.metadata):[],...i];return{rights:e,metadata:n.length?n:void 0,label:t.label?c(t.label):void 0,requiredStatement:t.attribution?{label:c(S.attributionLabel),value:c(t.attribution)}:void 0,navDate:t.navDate,summary:t.description?c(t.description):void 0,thumbnail:t.thumbnail}}function ze(t){if(!t.within)return;const e=Array.isArray(t.within)?t.within:[t.within],i=[];for(const n of e)if(typeof n=="string"){if(n)switch(t["@type"]){case"sc:Manifest":i.push({id:n,type:"Collection"});break}}else n["@id"]&&i.push({id:n["@id"],type:O(n)});return i.length?i:void 0}function h(t){const e=t.related?Array.isArray(t.related)?t.related:[t.related]:[],i=t.contentLayer;return{provider:t.logo||e.length?[{id:S.providerId,type:"Agent",homepage:e.length?[e[0]]:void 0,logo:t.logo?Array.isArray(t.logo)?t.logo:[t.logo]:void 0,label:c(S.providerName)}]:void 0,partOf:ze(t),rendering:t.rendering,seeAlso:t.seeAlso,start:t.startCanvas,service:t.service?Ne(t.service):void 0,supplementary:i?[i]:void 0}}function Be(t){return v({...p(t),...f(t),...h(t),items:t.members})}function He(t){const e=[],i=[];for(const r of t.sequences||[])r.canvases.length&&e.push(...r.canvases),r.behavior&&i.push(...r.behavior);const n=p(t);return i.length&&(n.behavior?n.behavior.push(...i):n.behavior=i),v({...n,...f(t),...h(t),items:e,structures:t.structures})}function Ke(t){return v({...p(t),...f(t),...h(t),annotations:t.otherContent&&t.otherContent.length?t.otherContent:void 0,items:t.images&&t.images.length?[{id:se(t,"annotation-page"),type:"AnnotationPage",items:t.images}]:void 0})}function Qe(t){return v({...p(t),...f(t),...h(t),items:t.resources&&t.resources.length?t.resources:void 0})}function Xe(t){return!t.canvases||t.canvases.length===0?{canvases:[],behavior:[]}:{canvases:t.canvases,behavior:t.viewingHint?[t.viewingHint]:[]}}function Ye(t){return v({...p(t),...f(t),...h(t),target:typeof t.on=="string"?encodeURI(t.on).trim():t.on,body:t.resource})}function Ze(t){const e=t;return v({...p(e),...f(e),...h(e)})}function Je(t){const e=[];return t.default&&t.default!=="rdf:nil"&&e.push(t.default),t.item&&t.item!=="rdf:nil"&&e.push(...t.item),{...p(t),...f(t),items:e}}function et(t){return v({...p(t),...f(t),...h(t),items:t.members})}function tt(t){const{"@id":e,"@type":i,"@context":n,profile:r,...a}=t,o={};return e&&(o["@id"]=e),o["@type"]=O(t),o["@type"]==="unknown"&&(n&&n.length&&(o["@context"]=n),o["@type"]="Service"),r&&(o.profile=P(r)),v({...o,...a})}function it(t){return v({...p(t),...f(t),...h(t)})}const oe=new T({collection:[Be],manifest:[He],canvas:[Ke],annotationList:[Qe],sequence:[Xe],annotation:[Ye],contentResource:[Ze],choice:[Je],range:[et],service:[tt],layer:[it]});function le(t){return t&&t["@context"]&&(t["@context"]==="http://iiif.io/api/presentation/2/context.json"||t["@context"].indexOf("http://iiif.io/api/presentation/2/context.json")!==-1||t["@context"]==="http://www.shared-canvas.org/ns/context.json")||t["@context"]==="http://iiif.io/api/image/2/context.json"?oe.traverseUnknown(t):t}var nt=Object.freeze({__proto__:null,types:m,identifyResource:b,Traverse:T,convertLanguageMapping:c,getProfile:P,getTypeFromContext:re,presentation2to3:oe,convertPresentation2:le});const rt={id:"https://iiif-parser/annotation",type:"Annotation",behavior:[],label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[],accessibility:[],audience:[],body:[],bodyValue:null,canonical:null,created:null,creator:[],generated:null,generator:[],modified:null,motivation:[],rights:[],stylesheet:null,target:[],timeMode:void 0,via:[],partOf:[]},ve={id:"https://iiif-parser/annotation-page",type:"AnnotationPage",behavior:[],motivation:null,label:null,thumbnail:[],summary:null,requiredStatement:null,metadata:[],rights:null,provider:[],items:[],seeAlso:[],homepage:[],logo:[],rendering:[],service:[]},pe={id:"https://iiif-parser/empty-canvas",type:"Canvas",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],duration:0,height:0,width:0},fe={id:"https://iiif-parser/empty-collection",type:"Collection",label:null,viewingDirection:"left-to-right",behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],services:[]},ce={id:"https://iiif-parser/empty-manifest",type:"Manifest",annotations:[],behavior:[],homepage:[],items:[],label:null,logo:[],metadata:[],motivation:null,navDate:null,provider:[],partOf:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,rendering:[],requiredStatement:null,rights:null,seeAlso:[],service:[],services:[],start:null,structures:[],summary:null,thumbnail:[],viewingDirection:"left-to-right"},he={id:"https://iiif-parser/empty-canvas",type:"Range",label:null,behavior:[],motivation:null,thumbnail:[],posterCanvas:null,accompanyingCanvas:null,placeholderCanvas:null,summary:null,requiredStatement:null,metadata:[],rights:null,navDate:null,provider:[],items:[],annotations:[],seeAlso:[],homepage:[],logo:[],partOf:[],rendering:[],service:[],start:null,supplementary:null,viewingDirection:"left-to-right"},ue={id:"https://iiif-parser/empty-agent",type:"Agent",label:{},logo:[],seeAlso:[],homepage:[]},F=["Collection","Manifest","Canvas","AnnotationPage","AnnotationCollection","Annotation","ContentResource","Range","Service","Selector","Agent"];function de(t){if(typeof t=="undefined"||t===null)throw new Error("Null or undefined is not a valid entity.");if(Array.isArray(t))throw new Error("Array is not a valid entity");if(typeof t!="object")throw new Error(`${typeof t} is not a valid entity`);if(typeof t.type=="string"){const e=F.indexOf(t.type);if(e!==-1)return F[e]}if(t.profile)return"Service";throw new Error("Resource type is not known")}class M{traversals;options;constructor(e,i={}){this.traversals={collection:[],manifest:[],canvas:[],annotationCollection:[],annotationPage:[],annotation:[],contentResource:[],choice:[],range:[],service:[],agent:[],...e},this.options={allowUndefinedReturn:!1,...i}}static all(e){return new M({collection:[e],manifest:[e],canvas:[e],annotationCollection:[e],annotationPage:[e],annotation:[e],contentResource:[e],choice:[e],range:[e],service:[e]})}traverseDescriptive(e){return e.thumbnail&&(e.thumbnail=e.thumbnail.map(i=>this.traverseType(i,this.traversals.contentResource))),e.provider&&(e.provider=e.provider.map(i=>this.traverseAgent(i))),e}traverseLinking(e){return e.seeAlso&&(e.seeAlso=e.seeAlso.map(i=>this.traverseType(i,this.traversals.contentResource))),e.service&&(e.service=e.service.map(i=>this.traverseType(i,this.traversals.service))),e.services&&(e.services=e.services.map(i=>this.traverseType(i,this.traversals.service))),e.logo&&(e.logo=e.logo.map(i=>this.traverseType(i,this.traversals.contentResource))),e.homepage&&(e.homepage=e.homepage.map(i=>this.traverseType(i,this.traversals.contentResource))),e.partOf&&(e.partOf=e.partOf.map(i=>typeof i=="string"||!i.type?this.traverseType(i,this.traversals.contentResource):i.type==="Canvas"?this.traverseType(i,this.traversals.canvas):i.type==="AnnotationCollection"?this.traverseType(i,this.traversals.annotationCollection):this.traverseType(i,this.traversals.contentResource))),e.start&&(e.start=e.start?this.traverseType(e.start,this.traversals.canvas):null),e.rendering&&(e.rendering=e.rendering.map(i=>this.traverseType(i,this.traversals.contentResource))),e.supplementary&&(e.supplementary=e.supplementary.map(i=>this.traverseType(i,this.traversals.contentResource))),e}traverseCollectionItems(e){return e.items&&e.items.map(i=>i.type==="Collection"?this.traverseCollection(i):this.traverseManifest(i)),e}traverseCollection(e){return this.traverseType(this.traverseDescriptive(this.traverseInlineAnnotationPages(this.traverseLinking(this.traversePosterCanvas(this.traverseCollectionItems(e))))),this.traversals.collection)}traverseManifestItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseCanvas(i))),e}traverseManifestStructures(e){return e.structures&&(e.structures=e.structures.map(i=>this.traverseRange(i))),e}traverseManifest(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traverseManifestStructures(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseManifestItems(e)))))),this.traversals.manifest)}traverseCanvasItems(e){return e.items=(e.items||[]).map(i=>this.traverseAnnotationPage(i)),e}traverseInlineAnnotationPages(e){return typeof e=="string"||!e||e.annotations&&(e.annotations=e.annotations.map(i=>this.traverseAnnotationPage(i))),e}traverseCanvas(e){return this.traverseType(this.traverseInlineAnnotationPages(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseCanvasItems(e))))),this.traversals.canvas)}traverseAnnotationPageItems(e){return e.items&&(e.items=e.items.map(i=>this.traverseAnnotation(i))),e}traverseAnnotationPage(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(this.traverseAnnotationPageItems(e))),this.traversals.annotationPage)}traverseAnnotationBody(e){return Array.isArray(e.body)?e.body=e.body.map(i=>this.traverseContentResource(i)):e.body&&(e.body=this.traverseContentResource(e.body)),e}traversePosterCanvas(e){return e.posterCanvas&&(e.posterCanvas=this.traverseCanvas(e.posterCanvas)),e.placeholderCanvas&&(e.placeholderCanvas=this.traverseCanvas(e.placeholderCanvas)),e.accompanyingCanvas&&(e.accompanyingCanvas=this.traverseCanvas(e.accompanyingCanvas)),e}traverseAnnotation(e){return this.traverseType(this.traverseLinking(this.traverseAnnotationBody(e)),this.traversals.annotation)}traverseContentResourceLinking(e){return typeof e=="string"||!e||e&&e.service&&(e.service=(e.service||[]).map(i=>this.traverseType(i,this.traversals.service))),e}traverseContentResource(e){return e.type==="Choice"&&(e.items=e.items.map(i=>this.traverseContentResource(i))),this.traverseType(this.traverseInlineAnnotationPages(this.traverseContentResourceLinking(e)),this.traversals.contentResource)}traverseRangeRanges(e){return e.items&&(e.items=e.items.map(i=>typeof i=="string"?this.traverseCanvas({id:i,type:"Canvas"}):i.type==="Manifest"?this.traverseManifest(i):this.traverseRange(i))),e}traverseRange(e){return this.traverseType(this.traversePosterCanvas(this.traverseDescriptive(this.traverseLinking(this.traverseRangeRanges(e)))),this.traversals.range)}traverseAgent(e){return this.traverseType(this.traverseDescriptive(this.traverseLinking(e)),this.traversals.agent)}traverseType(e,i){return i.reduce((n,r)=>{const a=r(n);return typeof a=="undefined"&&!this.options.allowUndefinedReturn?n:a},e)}traverseService(e){return this.traverseType(e,this.traversals.service)}traverseUnknown(e){const i=de(e);switch(i){case"Collection":return this.traverseCollection(e);case"Manifest":return this.traverseManifest(e);case"Canvas":return this.traverseCanvas(e);case"AnnotationPage":return this.traverseAnnotationPage(e);case"Annotation":return this.traverseAnnotation(e);case"ContentResource":return this.traverseContentResource(e);case"Range":return this.traverseRange(e);case"Service":return this.traverseService(e);case"Agent":return this.traverseAgent(e);default:throw new Error(`Unknown or unsupported resource type of ${i}`)}}}const at={Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}};function me(){return{Collection:{},Manifest:{},Canvas:{},AnnotationPage:{},AnnotationCollection:{},Annotation:{},ContentResource:{},Range:{},Service:{},Selector:{},Agent:{}}}function ge(t,e){if(typeof t=="string")return{id:t,type:e};if(!t.id)throw new Error(`Invalid resource does not have an ID (${e})`);return t}function st(t){return(e,i)=>{const n=t[e]?t[e]:{};return r=>{const a=ge(r,i||e);return a&&a.id&&e?(n[a.id]=n[a.id]?Object.assign({},n[a.id],a):Object.assign({},a),{id:a.id,type:e==="ContentResource"?e:a.type}):a}}}function ot(t){return(e,i)=>n=>{const{id:r,type:a}=ge(n,i||e);if(typeof r=="undefined")throw new Error("Found invalid entity without an ID.");return e==="ContentResource"?t[r]=e:t[r]=a,n}}function lt(t){const e=JSON.stringify(t);let i=5381,n=e.length;for(;n;)i=i*33^e.charCodeAt(--n);const a=(i>>>0).toString(16);return a.length%2?"0"+a:a}function D(t){return e=>typeof e=="string"?{id:e,type:t}:e.id?e.type?e:{type:t,...e}:{id:`vault://${lt(e)}`,type:t,...e}}function R(t){return e=>({...t,...e})}function E(t){return Array.isArray(t)?t:[t]}function vt(t){return t.body&&(t.body=E(t.body)),t.seeAlso&&(t.seeAlso=E(t.seeAlso)),t.body&&(t.body=E(t.body)),t.audience&&(t.audience=E(t.audience)),t.accessibility&&(t.accessibility=E(t.accessibility)),t.motivation&&(t.motivation=E(t.motivation)),t}function pt(t){const e=le(t),i=me(),n={},r=st(i),a=ot(n),l=new M({collection:[R(fe),a("Collection"),r("Collection")],manifest:[R(ce),a("Manifest"),r("Manifest")],canvas:[R(pe),a("Canvas"),r("Canvas")],annotationPage:[D("AnnotationPage"),R(ve),a("AnnotationPage"),r("AnnotationPage")],annotation:[D("Annotation"),vt,a("Annotation"),r("Annotation")],contentResource:[D("ContentResource"),a("ContentResource"),r("ContentResource")],range:[R(he),a("Range","Canvas"),r("Range","Canvas")],agent:[R(ue),a("Agent"),r("Agent")]}).traverseUnknown(e);return{entities:i,resource:l,mapping:n}}const u="__$UNSET$__",N="__$UNWRAP$__";function ft(t,e){const i=t.requests[e],n=t.mapping[e];if(!(!n||i&&i.resourceUri&&!t.entities[n][i.resourceUri]))return t.entities[n][i?i.resourceUri:e]}function ye(t){const e={};for(const[i,n]of t){if(i===N&&n!==u)return n;n!==u&&typeof n!="undefined"&&n!==null&&(e[i]=n)}return e}function ct(t,e,i){if(!e.type||!e.id)throw new Error("Unknown entity");if(!i[e.type])throw new Error(`Serializer not found for ${e.type}`);function n(r){const a=i[r.type];if(!a)return u;const o=ft(t,r.id)||(r.id&&r.type?r:null);if(!o)return u;const l=a(o,t,{isTopLevel:e.id===r.id});let L=l.next();for(;!L.done;){const x=L.value;let k=u;if(x)if(Array.isArray(x)){const _e=[];for(const gt of x)_e.push(n(gt));k=_e}else k=n(x);L=l.next(k)}return L.value===u?u:ye(L.value)}return n(e)}function g(t){if(!t)return;const e=Object.keys(t);if(e.length!==0){if(e.length===1){const i=e[0];if(!i)return"";const n=(t[i]||[]).join("");return i==="@none"||i==="none"||i==="en"?n:{"@language":i,"@value":n}}return e.map(i=>({"@language":i,"@value":(t[i]||[]).join("")}))}}function Ae(t){return Array.isArray(t)?t.map(e=>Ae(e)):typeof t=="string"?t:t.type&&t.type==="Canvas"?t.id:t}function d(t,e=!1){if(!!t)return t.length>1&&!e?t:t[0]||void 0}function ht(t){if(!!t){if(typeof t=="string")return{"@id":t};if("@id"in t){const e={...t};return delete e["@type"],e}return{"@context":"http://iiif.io/api/image/2/context.json","@id":t.id,profile:`http://iiif.io/api/image/2/profiles/${t.profile}.json`}}}function y(t,e){return[["@id",t.id],["@type",e],["format",t.format],["height",t.height],["width",t.width],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0]]}function*A(t){const e=t.provider?yield t.provider[0]:void 0;return[["label",g(t.label)],["metadata",t.metadata&&t.metadata.length?t.metadata.map(i=>({label:g(i.label)||"",value:g(i.value)||""})):void 0],["description",g(t.summary)],["thumbnail",d(yield t.thumbnail)],["navDate",t.navDate],["logo",e?d(e.logo):void 0],["homepage",e?e.homepage:void 0],["attribution",t.requiredStatement?g(t.requiredStatement.value):void 0]]}function*w(t){return[["seeAlso",d(yield t.seeAlso)],["service",d((t.service||[]).map(ht))],["rendering",d(yield t.rendering)],["startCanvas",t.start?t.start.id:void 0]]}const ut={Manifest:function*(t){return[...y(t,"sc:Manifest"),...yield*A(t),...yield*w(t),["sequences",[{"@id":`${t.id}/sequence0`,"@type":"sc:Sequence",canvases:yield t.items}]],["structures",yield t.structures]]},Canvas:function*(t){const i=(yield t.items)[0];return[...y(t,"sc:Canvas"),...yield*A(t),...yield*w(t),["images",i?[i.resources]:void 0],["annotations",t.annotations&&t.annotations.length?d(yield t.annotations):void 0]]},AnnotationPage:function*(t){return[...y(t,"sc:AnnotationList"),...yield*A(t),["resources",t.items&&t.items.length?d(yield t.items):void 0]]},Annotation:function*(t){return[["@id",t.id],["@type","oa:Annotation"],["motivation","sc:painting"],["on",Ae(t.target)],["resource",d(yield t.body,!0)]]},ContentResource:function*(t){switch(t.type){case"Image":return[...y(t,"dctypes:Image"),...yield*A(t),...yield*w(t)];case"Text":case"Dataset":default:return[...y(t,void 0),...yield*A(t)]}},AnnotationCollection:function*(t){return[["@id",t.id],["@type","sc:Layer"],["label",g(t.label)]]},Collection:function*(t){return[...y(t,"sc:Collection"),...yield*A(t),...yield*w(t),["members",yield*t.items]]},Range:function*(t){const e=[],i=[];if(t.items)for(const n of t.items){const r=yield n;e.push({"@id":n.id,"@type":n.type,label:r?r.label:void 0,within:t.id}),n.type==="Canvas"&&i.push(n.id)}return[...y(t,"sc:Range"),...yield*A(t),...yield*w(t),["canvases",i.length===e.length?i:void 0],["members",i.length!==e.length?e:void 0]]}};function C(t){return[["id",t.id?.startsWith("vault://")?void 0:t.id],["type",t.type],["format",t.format],["profile",t.profile],["height",t.height],["width",t.width],["duration",t.duration||void 0],["viewingDirection",t.viewingDirection!=="left-to-right"?t.viewingDirection:void 0],["behavior",t.behavior&&t.behavior.length?t.behavior:void 0],["timeMode",t.timeMode],["motivation",Array.isArray(t.motivation)?t.motivation[0]:t.motivation]]}function s(t){if(!(!t||t.length===0))return t}function Ce(t){if(t&&t.type&&t.type==="ImageService2"){const{id:e,type:i,profile:n,...r}=t;return{"@id":e,"@type":i,profile:n.startsWith("http")?n:`http://iiif.io/api/image/2/${n}.json`,...r}}return t}function Ie(t){if(!(!t||t.length===0))return t.map(Ce)}function*I(t){return[["label",t.label],["metadata",s(t.metadata)],["summary",t.summary],["requiredStatement",t.requiredStatement],["rights",t.rights],["navDate",t.navDate],["language",t.language],["thumbnail",s(yield t.thumbnail)],["placeholderCanvas",yield t.placeholderCanvas],["accompanyingCanvas",yield t.accompanyingCanvas],["provider",s(yield t.provider)]]}function*_(t){return[["seeAlso",s(yield t.seeAlso)],["service",Ie(t.service)],["services",Ie(t.services)],["rendering",s(yield t.rendering)],["supplementary",s(yield t.supplementary)],["homepage",s(yield t.homepage)],["logo",s(yield t.logo)],["partOf",s(yield t.partOf)],["start",t.start]]}var dt=Object.freeze({__proto__:null,emptyAnnotation:rt,emptyAnnotationPage:ve,emptyCanvas:pe,emptyCollection:fe,emptyManifest:ce,emptyRange:he,emptyAgent:ue,defaultEntities:at,getDefaultEntities:me,normalize:pt,types:F,identifyResource:de,Traverse:M,UNSET:u,UNWRAP:N,serializedFieldsToObject:ye,serialize:ct,languageString2to3:g,serializeConfigPresentation2:ut,serializeConfigPresentation3:{Manifest:function*(t,e,{isTopLevel:i}){return i?[["@context","http://iiif.io/api/presentation/3/context.json"],...C(t),...yield*I(t),...yield*_(t),["items",yield t.items],["structures",s(yield t.structures)],["annotations",s(yield t.annotations)]]:[...C(t),...yield*I(t)]},Canvas:function*(t){return[...C(t),...yield*I(t),...yield*_(t),["items",yield t.items],["annotations",s(yield t.annotations)]]},Agent:function*(t){return[["id",t.id],["type","Agent"],["label",t.label],...yield*_(t)]},AnnotationPage:function*(t){return[...Object.entries(t).map(([i,n])=>[i,Array.isArray(n)?s(n):n]).filter(([i,n])=>i!=="items"),...yield*_(t),["items",yield t.items]]},Service:function*(t){return[[N,Ce(t)]]},Annotation:function*(t){const e=Object.entries(t).map(([n,r])=>n==="motivation"?[n,Array.isArray(r)?r[0]:r]:[n,Array.isArray(r)?s(r):r]).filter(([n])=>n!=="body"),i=yield t.body;return[...e,["body",i.length===1?i[0]:i]]},ContentResource:function*(t){return[...C(t),...yield*I(t),...yield*_(t),["annotations",s(yield t.annotations)],["items",s(yield t.items)]]},AnnotationCollection:function*(t){return[["id",t.id],["type","AnnotationCollection"],["label",t.label]]},Collection:function*(t,e,{isTopLevel:i}){return i?[["@context","http://iiif.io/api/presentation/3/context.json"],...C(t),...yield*I(t),...yield*_(t),["items",s(yield t.items)]]:[...C(t),...yield*I(t)]},Range:function*(t){const e=[];for(const i of t.items)i.type==="Range"?e.push(yield i):e.push(i);return[...C(t),...yield*I(t),...yield*_(t),["items",e],["annotations",s(yield t.annotations)]]}}}),mt={Presentation2:nt,Presentation3:dt};return mt}); |
+1
-1
| { | ||
| "name": "@iiif/parser", | ||
| "version": "1.0.9", | ||
| "version": "1.0.10", | ||
| "license": "MIT", | ||
@@ -5,0 +5,0 @@ "main": "dist/cjs/index.js", |
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
0
-100%178558
-0.11%1036
-0.19%