@digitalculture/ochre-sdk 0.7.4 → 0.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
- "use strict";var oe=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var Ke=Object.getOwnPropertyNames;var Je=Object.prototype.hasOwnProperty;var _e=(e,r)=>{for(var n in r)oe(e,n,{get:r[n],enumerable:!0})},ze=(e,r,n,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Ke(r))!Je.call(e,i)&&i!==n&&oe(e,i,{get:()=>r[i],enumerable:!(t=Ge(r,i))||t.enumerable});return e};var Qe=e=>ze(oe({},"__esModule",{value:!0}),e);var nt={};_e(nt,{fetchByUuid:()=>ce,fetchGallery:()=>tt,fetchItem:()=>pe,fetchWebsite:()=>rt,filterProperties:()=>Le,getAllPropertyLabels:()=>$e,getPropertyByLabel:()=>G,getPropertyValueByLabel:()=>d,getPropertyValuesByLabel:()=>se,parseBibliographies:()=>q,parseBibliography:()=>R,parseConcept:()=>te,parseConcepts:()=>we,parseContext:()=>U,parseCoordinates:()=>he,parseDocument:()=>re,parseEmail:()=>W,parseEvents:()=>Ue,parseFakeString:()=>u,parseIdentification:()=>P,parseImage:()=>me,parseImageMap:()=>He,parseInterpretations:()=>Ne,parseLanguages:()=>Fe,parseLicense:()=>F,parseLink:()=>Be,parseLinks:()=>j,parseMetadata:()=>ue,parseNotes:()=>ne,parseObservation:()=>ge,parseObservations:()=>je,parsePeriod:()=>Q,parsePeriods:()=>Y,parsePerson:()=>z,parsePersons:()=>L,parseProperties:()=>T,parseProperty:()=>Ve,parsePropertyValue:()=>X,parsePropertyValues:()=>Ae,parseResource:()=>Z,parseResources:()=>V,parseSet:()=>fe,parseSpatialUnit:()=>ee,parseSpatialUnits:()=>ve,parseStringContent:()=>v,parseStringDocumentItem:()=>J,parseStringItem:()=>K,parseTree:()=>de,parseWebsite:()=>Pe});module.exports=Qe(nt);var x=require("zod"),ke=x.z.string().uuid({message:"Invalid UUID provided"}),Ie=x.z.object({type:x.z.enum(["traditional","digital-collection","plum","cedar","elm","maple","oak","palm"],{message:"Invalid website type"}),status:x.z.enum(["development","preview","production"],{message:"Invalid website status"}),privacy:x.z.enum(["public","password","private"],{message:"Invalid website privacy"})}),xe=x.z.enum(["annotated-document","annotated-image","bibliography","button","collection","empty-space","entries","filter-categories","iframe","iiif-viewer","image","image-gallery","n-columns","n-rows","network-graph","search-bar","table","text","timeline","video"],{message:"Invalid component"}),ae=x.z.enum(["resource","spatialUnit","concept","period","bibliography","person","propertyValue","set","tree"]),De=x.z.enum(["string","integer","decimal","boolean","date","dateTime","time","coordinate","IDREF"]),Te=x.z.object({uuid:x.z.string().uuid({message:"Invalid UUID"}),filter:x.z.string().optional(),page:x.z.number().positive({message:"Page must be positive"}),perPage:x.z.number().positive({message:"Per page must be positive"})}).strict(),Oe=x.z.string().transform(e=>e.split(" ")).pipe(x.z.array(x.z.enum(["bold","italic","underline"]))),Ee=x.z.string().transform(e=>e.split(" ")).pipe(x.z.array(x.z.enum(["newline","trailing","leading"]))),Ce=x.z.string().email({message:"Invalid email"});var M={searchNestedProperties:!1};function G(e,r,n=M){let{searchNestedProperties:t}=n,i=e.find(s=>s.label===r);if(i)return i;if(t){for(let s of e)if(s.properties.length>0){let o=G(s.properties,r,{searchNestedProperties:t});if(o)return o}}return null}function se(e,r,n=M){let{searchNestedProperties:t}=n,i=e.find(s=>s.label===r);if(i)return i.values.map(s=>s.content);if(t){for(let s of e)if(s.properties.length>0){let o=se(s.properties,r,{searchNestedProperties:t});if(o)return o}}return null}function d(e,r,n=M){let{searchNestedProperties:t}=n,i=se(e,r,{searchNestedProperties:t});if(i!==null&&i.length>0)return i[0];if(t){for(let s of e)if(s.properties.length>0){let o=d(s.properties,r,{searchNestedProperties:t});if(o!==null)return o}}return null}function $e(e,r=M){let{searchNestedProperties:n}=r,t=new Set;for(let i of e)if(t.add(i.label),i.properties.length>0&&n){let s=$e(i.properties,{searchNestedProperties:!0});for(let o of s)t.add(o)}return[...t]}function Le(e,r,n=M){let{searchNestedProperties:t}=n;if(r.label.toLocaleLowerCase("en-US")==="all fields"||e.label.toLocaleLowerCase("en-US")===r.label.toLocaleLowerCase("en-US")){let s=e.values.some(o=>o.content===null?!1:typeof o.content=="string"?typeof r.value!="string"?!1:o.content.toLocaleLowerCase("en-US").includes(r.value.toLocaleLowerCase("en-US")):typeof o.content=="number"?typeof r.value!="number"?!1:o.content===r.value:typeof o.content=="boolean"?typeof r.value!="boolean"?!1:o.booleanValue===r.value:o.content instanceof Date&&r.value instanceof Date?o.content.getTime()===r.value.getTime():!1);return!s&&t&&(s=e.properties.some(o=>Le(o,r,{searchNestedProperties:!0}))),s}return!1}function Re(e,r){return e.find(t=>t.lang===r)??null}function W(e){let r=e.split(" "),n=[];for(let t of r){let i=t.replaceAll(/(?<=\s|^)[([{]+|[)\]}]+(?=\s|$)/g,"").replace(/[!),.:;?\]]$/,""),s=t.indexOf(i),o=t.slice(0,s),a=t.slice(s+i.length);if(Ce.safeParse(i).success){n.push(o,`${o}<ExternalLink href="mailto:${i}">${i}</ExternalLink>${a}`);continue}n.push(t)}return n.join(" ")}function We(e,r){let n=e,t=Oe.safeParse(r);if(!t.success)return console.warn(`Invalid render options string provided: \u201C${r}\u201D`),e;for(let i of t.data)switch(i){case"bold":{n=`**${n}**`;break}case"italic":{n=`*${n}*`;break}case"underline":{n=`_${n}_`;break}}return n.replaceAll("&#39;","'")}function le(e,r){let n=e,t=Ee.safeParse(r);if(!t.success)return console.warn(`Invalid whitespace string provided: \u201C${r}\u201D`),e;for(let i of t.data)switch(i){case"newline":{n=`<br />
2
- ${n}`;break}case"trailing":{n=`${n} `;break}case"leading":{n=` ${n}`;break}}return n.replaceAll("&#39;","'")}function u(e){let r="";return typeof e=="string"?r=e:typeof e=="number"?r=e.toString():typeof e=="boolean"&&(r=e?"Yes":"No"),r.replaceAll("&#39;","'").replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}function K(e){let r="";switch(typeof e.string){case"string":{r=e.string;break}case"number":case"boolean":{r=u(e.string);break}case"object":{let n=Array.isArray(e.string)?e.string:[e.string];for(let t of n)if(typeof t=="string"||typeof t=="number"||typeof t=="boolean")r+=u(t);else{let i=t.rend!=null?We(u(t.content),t.rend):u(t.content),s=t.whitespace!=null?le(i,t.whitespace):i;r+=s}break}default:{r="";break}}return r.replaceAll("&#39;","'").replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}function J(e,r){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return W(u(e));if("whitespace"in e&&!("content"in e)&&!("string"in e))return e.whitespace==="newline"?`
3
- `:"";if("links"in e){let t="";typeof e.string=="object"?t=v(e.string):t=u(e.string).replaceAll("<",String.raw`\<`).replaceAll("{",String.raw`\{`);let i=Array.isArray(e.links)?e.links:[e.links];for(let s of i)if("resource"in s){let o=Array.isArray(s.resource)?s.resource[0]:s.resource,a=null;switch(o.content!=null&&(a=u(o.content).replaceAll("<",String.raw`\<`).replaceAll("{",String.raw`\{`)),o.type){case"image":return o.rend==="inline"?`<InlineImage uuid="${o.uuid}" ${a!==null?`content="${a}"`:""} height={${o.height?.toString()??"null"}} width={${o.width?.toString()??"null"}} />`:o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="image"${a!==null?` content="${a}"`:""}>${t}</ExternalLink>`:`<TooltipSpan type="image" ${a!==null?`content="${a}"`:""}>${t}</TooltipSpan>`;case"internalDocument":return a?.toLocaleLowerCase("en-US").includes("footnote")?(r&&r.push({uuid:o.uuid,label:t,content:""}),` <Footnote uuid="${o.uuid}"${t?` label="${t}"`:""}${a!==null?` content="${a}"`:""} />`):`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="internalDocument" ${a!==null?`content="${a}"`:""}>${t}</ExternalLink>`;case"externalDocument":return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="externalDocument" ${a!==null?`content="${a}"`:""}>${t}</ExternalLink>`:`<TooltipSpan type="externalDocument" ${a!==null?`content="${a}"`:""}>${t}</TooltipSpan>`;case"webpage":return`<ExternalLink href="${o.href}" type="webpage" ${a!==null?`content="${a}"`:""}>${t}</ExternalLink>`;default:return""}}else if("concept"in s){let o=Array.isArray(s.concept)?s.concept[0]:s.concept;return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="concept">${t}</ExternalLink>`:`<TooltipSpan type="concept">${t}</TooltipSpan>`}else if("set"in s){let o=Array.isArray(s.set)?s.set[0]:s.set;return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="set">${t}</ExternalLink>`:`<TooltipSpan type="set">${t}</TooltipSpan>`}else if("person"in s){let o=Array.isArray(s.person)?s.person[0]:s.person,a=o.identification?["string","number","boolean"].includes(typeof o.identification.label)?u(o.identification.label):v(o.identification.label):null;return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="${o.type??"person"}" ${a!==null?`content="${a}"`:""}>${t}</ExternalLink>`:`<TooltipSpan type="${o.type??"person"}" ${a!==null?`content="${a}"`:""}>${t}</TooltipSpan>`}else if("bibliography"in s){let o=Array.isArray(s.bibliography)?s.bibliography[0]:s.bibliography;return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="${o.type??"bibliography"}">${t}</ExternalLink>`:`<TooltipSpan type="bibliography">${t}</TooltipSpan>`}}let n="";if("string"in e){let t=Array.isArray(e.string)?e.string:[e.string];for(let i of t)n+=J(i,r);return"whitespace"in e&&e.whitespace!=null&&(n=le(W(n),e.whitespace)),n.replaceAll("&#39;","'").replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}else n=u(e.content),e.rend!=null&&(n=We(W(n),e.rend)),e.whitespace!=null&&(n=le(W(n),e.whitespace));return n.replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}function v(e,r="eng"){switch(typeof e.content){case"string":case"number":case"boolean":return u(e.content);case"object":if(Array.isArray(e.content)){let n=Re(e.content,r);if(n)return K(n);{let t=e.content[0];if(!t)throw new Error(`No string item found for language \u201C${r}\u201D in the following content:
4
- ${JSON.stringify(e.content)}.`);return K(t)}}else return K(e.content);default:return String(e.content).replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}}function _(e){let r=e.find(t=>ae.safeParse(t).success);if(!r){let t=e.find(i=>!["uuid","uuidBelongsTo","belongsTo","publicationDateTime","metadata","languages"].includes(i));throw new Error(`Invalid OCHRE data; found unexpected "${t}" key`)}return ae.parse(r)}async function ce(e){try{let r=ke.parse(e),n=await fetch(`https://ochre.lib.uchicago.edu/ochre?uuid=${r}&format=json&lang="*"`);if(!n.ok)throw new Error("Failed to fetch OCHRE data");let t=await n.json();if(!("ochre"in t))throw new Error("Invalid OCHRE data: API response missing 'ochre' key");return[null,t]}catch(r){return[r instanceof Error?r.message:"Unknown error",null]}}async function pe(e,r,n){try{let[t,i]=await ce(e);if(t!==null)throw new Error(t);let s=_(Object.keys(i.ochre)),o;switch(s){case"resource":{if(!("resource"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'resource' key");o=Z(i.ochre.resource);break}case"spatialUnit":{if(!("spatialUnit"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'spatialUnit' key");o=ee(i.ochre.spatialUnit);break}case"concept":{if(!("concept"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'concept' key");o=te(i.ochre.concept);break}case"period":{if(!("period"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'period' key");o=Q(i.ochre.period);break}case"bibliography":{if(!("bibliography"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'bibliography' key");o=R(i.ochre.bibliography);break}case"person":{if(!("person"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'person' key");o=z(i.ochre.person);break}case"propertyValue":{if(!("propertyValue"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'propertyValue' key");o=X(i.ochre.propertyValue);break}case"set":{if(!("set"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'set' key");o=fe(i.ochre.set,n);break}case"tree":{if(!("tree"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'tree' key");o=de(i.ochre.tree);break}default:throw new Error("Invalid category")}let a=ue(i.ochre.metadata),l={uuid:i.ochre.uuidBelongsTo,abbreviation:u(i.ochre.belongsTo)};return{error:null,metadata:a,belongsTo:l,item:o,category:r}}catch(t){return{error:t instanceof Error?t.message:"Unknown error",metadata:void 0,belongsTo:void 0,item:void 0,category:void 0}}}function P(e){try{let r={label:["string","number","boolean"].includes(typeof e.label)?u(e.label):v(e.label),abbreviation:""};for(let n of Object.keys(e).filter(t=>t!=="label"))r[n]=v(e[n]);return r}catch(r){return console.error(r),{label:"",abbreviation:""}}}function Fe(e){return e==null?["eng"]:Array.isArray(e)?e.map(r=>v(r)):[v(e)]}function ue(e){let r={label:"",abbreviation:""};if(e.item)if(e.item.label||e.item.abbreviation){let i="",s="";e.item.label&&(i=v(e.item.label)),e.item.abbreviation&&(s=v(e.item.abbreviation)),r={label:i,abbreviation:s}}else r=P(e.item.identification);let n=null,t=e.project?.identification?P(e.project.identification):null;return t&&(n={...t,website:e.project?.identification.website??null}),{project:n?{identification:n}:null,item:e.item?{identification:r,category:e.item.category,type:e.item.type,maxLength:e.item.maxLength??null}:null,dataset:v(e.dataset),publisher:v(e.publisher),languages:Fe(e.language),identifier:v(e.identifier),description:v(e.description)}}function ye(e){return{uuid:e.uuid,publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,number:e.n,content:u(e.content)}}function U(e){return{nodes:(Array.isArray(e.context)?e.context:[e.context]).map(t=>{let i=[];if("spatialUnit"in t&&t.spatialUnit){let s=Array.isArray(t.spatialUnit)?t.spatialUnit:[t.spatialUnit];for(let o of s)i.push(ye(o))}return{tree:ye(t.tree),project:ye(t.project),spatialUnit:i}}),displayPath:e.displayPath}}function F(e){return typeof e.license=="string"?null:{content:e.license.content,url:e.license.target}}function z(e){return{uuid:e.uuid,category:"person",publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,type:e.type??null,date:e.date!=null?new Date(e.date):null,identification:e.identification?P(e.identification):null,content:e.content!=null?u(e.content):null}}function L(e){let r=[];for(let n of e)r.push(z(n));return r}function Be(e){let r="resource"in e?e.resource:"spatialUnit"in e?e.spatialUnit:"concept"in e?e.concept:"set"in e?e.set:"tree"in e?e.tree:"person"in e?e.person:"bibliography"in e?e.bibliography:"epigraphicUnit"in e?e.epigraphicUnit:"propertyValue"in e?e.propertyValue:null;if(!r)throw new Error(`Invalid link provided: ${JSON.stringify(e,null,2)}`);let n=Array.isArray(r)?r:[r],t=[];for(let i of n){let s={category:"resource"in e?"resource":"spatialUnit"in e?"spatialUnit":"concept"in e?"concept":"set"in e?"set":"person"in e?"person":"tree"in e?"tree":"bibliography"in e?"bibliography":"epigraphicUnit"in e?"epigraphicUnit":"propertyValue"in e?"propertyValue":null,content:"content"in i&&i.content!=null?u(i.content):null,href:"href"in i&&i.href!=null?i.href:null,uuid:i.uuid,type:i.type??null,identification:i.identification?P(i.identification):null,image:null,bibliographies:"bibliography"in e?q(Array.isArray(e.bibliography)?e.bibliography:[e.bibliography]):null,publicationDateTime:i.publicationDateTime!=null?new Date(i.publicationDateTime):null};"height"in i&&i.height!=null&&i.width!=null&&i.heightPreview!=null&&i.widthPreview!=null&&(s.image={isInline:i.rend==="inline",isPrimary:i.isPrimary??!1,heightPreview:i.heightPreview,widthPreview:i.widthPreview,height:i.height,width:i.width}),t.push(s)}return t}function j(e){let r=[];for(let n of e)r.push(...Be(n));return r}function re(e,r="eng"){let n="",t=[],i=Array.isArray(e)?e.find(s=>s.lang===r):e;if(typeof i.string=="string"||typeof i.string=="number"||typeof i.string=="boolean")n+=W(u(i.string));else{let s=Array.isArray(i.string)?i.string:[i.string];for(let o of s)n+=J(o,t)}return{content:n,footnotes:t}}function me(e){return{publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,identification:e.identification?P(e.identification):null,url:e.href??(e.htmlImgSrcPrefix==null&&e.content!=null?u(e.content):null),htmlPrefix:e.htmlImgSrcPrefix??null,content:e.htmlImgSrcPrefix!=null&&e.content!=null?u(e.content):null,widthPreview:e.widthPreview??null,heightPreview:e.heightPreview??null,width:e.width??null,height:e.height??null}}function ne(e,r="eng"){let n=[];for(let t of e){if(typeof t=="string"){if(t==="")continue;n.push({number:-1,title:null,content:t});continue}let i="",s=Array.isArray(t.content)?t.content:[t.content],o=s.find(a=>a.lang===r);if(!o&&(o=s[0],!o))throw new Error(`Note does not have a valid content item: ${JSON.stringify(t,null,2)}`);typeof o.string=="string"||typeof o.string=="number"||typeof o.string=="boolean"?i=W(u(o.string)):i=W(re(o).content),n.push({number:t.noteNo,title:o.title!=null?u(o.title):null,content:i})}return n}function he(e){if(typeof e=="string"){let[r,n]=e.split(", ");return{latitude:Number(r),longitude:Number(n),type:null,label:null}}return{latitude:e.latitude,longitude:e.longitude,type:e.coord?.coordType??null,label:e.coord?.coordLabel!=null?u(e.coord.coordLabel):null}}function ge(e){return{number:e.observationNo,date:e.date!=null?new Date(e.date):null,observers:e.observers!=null?u(e.observers).split(";").map(r=>r.trim()):[],notes:e.notes?ne(Array.isArray(e.notes.note)?e.notes.note:[e.notes.note]):[],links:e.links?j(Array.isArray(e.links)?e.links:[e.links]):[],properties:e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}function je(e){let r=[];for(let n of e)r.push(ge(n));return r}function Ue(e){let r=[];for(let n of e)r.push({date:n.dateTime!=null?new Date(n.dateTime):null,label:v(n.label),agent:n.agent?{uuid:n.agent.uuid,content:u(n.agent.content)}:null});return r}function Ve(e,r="eng"){let t=("value"in e&&e.value?Array.isArray(e.value)?e.value:[e.value]:[]).map(i=>{let s=null,o=null;if(typeof i=="string"||typeof i=="number"||typeof i=="boolean")return s=u(i),{content:s,booleanValue:o,type:"string",category:"value",uuid:null,publicationDateTime:null,unit:null};{switch(i.type){case"integer":case"decimal":{s=Number(i.content);break}case"dateTime":{s=i.content?typeof i.content=="string"?new Date(i.content):new Date(v({content:i.content})):null;break}default:{"slug"in i&&i.slug!=null?s=u(i.slug):i.content!=null&&(s=v({content:i.content})),i.type==="boolean"&&(o=i.booleanValue??null);break}}let a="string";if(i.type!=null){let{data:c,error:b}=De.safeParse(i.type);if(b)throw new Error(`Invalid property value content type: "${i.type}"`);a=c}return{content:s,booleanValue:o,type:a,category:i.category??"value",uuid:i.uuid??null,publicationDateTime:i.publicationDateTime!=null?new Date(i.publicationDateTime):null,unit:i.unit??null}}});return{label:v(e.label,r).replace(/\s*\.{3}$/,"").trim(),values:t,comment:e.comment!=null?u(e.comment):null,properties:e.property?T(Array.isArray(e.property)?e.property:[e.property]):[]}}function T(e,r="eng"){let n=[];for(let t of e)n.push(Ve(t,r));return n}function Ne(e){let r=[];for(let n of e)r.push({date:new Date(n.date),number:n.interpretationNo,properties:n.properties?T(Array.isArray(n.properties.property)?n.properties.property:[n.properties.property]):[]});return r}function He(e){let r={area:[],width:e.width,height:e.height},n=Array.isArray(e.area)?e.area:[e.area];for(let t of n)r.area.push({uuid:t.uuid,publicationDateTime:t.publicationDateTime!=null?new Date(t.publicationDateTime):null,type:t.type,title:u(t.title),shape:t.shape==="rect"?"rectangle":"polygon",coords:t.coords.split(",").map(i=>Number.parseInt(i))});return r}function Q(e){return{uuid:e.uuid,category:"period",publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,type:e.type??null,number:e.n??null,identification:P(e.identification),description:e.description?v(e.description):null}}function Y(e){let r=[];for(let n of e)r.push(Q(n));return r}function R(e){let r=null;return e.source?.resource&&(r={uuid:e.source.resource.uuid,publicationDateTime:e.source.resource.publicationDateTime?new Date(e.source.resource.publicationDateTime):null,type:e.source.resource.type,identification:P(e.source.resource.identification)}),{uuid:e.uuid,category:"bibliography",publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,type:e.type??null,number:e.n??null,identification:e.identification?P(e.identification):null,projectIdentification:e.project?.identification?P(e.project.identification):null,context:e.context?U(e.context):null,citation:{format:e.citationFormat??null,short:e.citationFormatSpan?u("default:span"in e.citationFormatSpan?e.citationFormatSpan["default:span"].content:e.citationFormatSpan.span.content):null,long:e.referenceFormatDiv?u("default:div"in e.referenceFormatDiv?e.referenceFormatDiv["default:div"]["default:div"].content:e.referenceFormatDiv.div.div.content):null},publicationInfo:{publishers:e.publicationInfo?.publishers?L(Array.isArray(e.publicationInfo.publishers.publishers.person)?e.publicationInfo.publishers.publishers.person:[e.publicationInfo.publishers.publishers.person]):[],startDate:e.publicationInfo?.startDate?new Date(e.publicationInfo.startDate.year,e.publicationInfo.startDate.month,e.publicationInfo.startDate.day):null},entryInfo:e.entryInfo?{startIssue:u(e.entryInfo.startIssue),startVolume:u(e.entryInfo.startVolume)}:null,source:{resource:r,documentUrl:e.sourceDocument?`https://ochre.lib.uchicago.edu/ochre?uuid=${e.sourceDocument.uuid}&load`:null},periods:e.periods?Y(Array.isArray(e.periods.period)?e.periods.period:[e.periods.period]):[],authors:e.authors?L(Array.isArray(e.authors.person)?e.authors.person:[e.authors.person]):[],properties:e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}function q(e){let r=[];for(let n of e)r.push(R(n));return r}function X(e){return{uuid:e.uuid,category:"propertyValue",n:e.n,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,context:e.context?U(e.context):null,availability:e.availability?F(e.availability):null,identification:P(e.identification),date:e.date?new Date(e.date):null,creators:e.creators?L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],description:e.description?["string","number","boolean"].includes(typeof e.description)?u(e.description):v(e.description):"",notes:e.notes?ne(Array.isArray(e.notes.note)?e.notes.note:[e.notes.note]):[],links:e.links?j(Array.isArray(e.links)?e.links:[e.links]):[]}}function Ae(e){let r=[];for(let n of e)r.push(X(n));return r}function de(e){let r=[];e.creators&&(r=L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]));let n=null;e.date!=null&&(n=new Date(e.date));let t=[],i=[],s=[],o=[],a=[],l=[],c=[];return typeof e.items!="string"&&"resource"in e.items&&(t=V(Array.isArray(e.items.resource)?e.items.resource:[e.items.resource])),typeof e.items!="string"&&"spatialUnit"in e.items&&(i=ve(Array.isArray(e.items.spatialUnit)?e.items.spatialUnit:[e.items.spatialUnit])),typeof e.items!="string"&&"concept"in e.items&&(s=we(Array.isArray(e.items.concept)?e.items.concept:[e.items.concept])),typeof e.items!="string"&&"period"in e.items&&(o=Y(Array.isArray(e.items.period)?e.items.period:[e.items.period])),typeof e.items!="string"&&"bibliography"in e.items&&(a=q(Array.isArray(e.items.bibliography)?e.items.bibliography:[e.items.bibliography])),typeof e.items!="string"&&"person"in e.items&&(l=L(Array.isArray(e.items.person)?e.items.person:[e.items.person])),typeof e.items!="string"&&"propertyValue"in e.items&&(c=Ae(Array.isArray(e.items.propertyValue)?e.items.propertyValue:[e.items.propertyValue])),{uuid:e.uuid,category:"tree",publicationDateTime:new Date(e.publicationDateTime),identification:P(e.identification),creators:r,license:F(e.availability),date:n,type:e.type,number:e.n,items:{resources:t,spatialUnits:i,concepts:s,periods:o,bibliographies:a,persons:l,propertyValues:c},properties:e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}function fe(e,r){if(typeof e.items=="string")throw new TypeError("Invalid OCHRE data: Set has no items");let n=r??_(Object.keys(e.items)),t=[];switch(n){case"resource":{if(!("resource"in e.items))throw new Error("Invalid OCHRE data: Set has no resources");t=V(Array.isArray(e.items.resource)?e.items.resource:[e.items.resource]);break}case"spatialUnit":{if(!("spatialUnit"in e.items))throw new Error("Invalid OCHRE data: Set has no spatial units");t=ve(Array.isArray(e.items.spatialUnit)?e.items.spatialUnit:[e.items.spatialUnit]);break}case"concept":{if(!("concept"in e.items))throw new Error("Invalid OCHRE data: Set has no concepts");t=we(Array.isArray(e.items.concept)?e.items.concept:[e.items.concept]);break}case"period":{if(!("period"in e.items))throw new Error("Invalid OCHRE data: Set has no periods");t=Y(Array.isArray(e.items.period)?e.items.period:[e.items.period]);break}case"bibliography":{if(!("bibliography"in e.items))throw new Error("Invalid OCHRE data: Set has no bibliographies");t=q(Array.isArray(e.items.bibliography)?e.items.bibliography:[e.items.bibliography]);break}case"person":{if(!("person"in e.items))throw new Error("Invalid OCHRE data: Set has no persons");t=L(Array.isArray(e.items.person)?e.items.person:[e.items.person]);break}case"propertyValue":{if(!("propertyValue"in e.items))throw new Error("Invalid OCHRE data: Set has no property values");t=Ae(Array.isArray(e.items.propertyValue)?e.items.propertyValue:[e.items.propertyValue]);break}default:throw new Error("Invalid OCHRE data: Set has no items or is malformed")}return{uuid:e.uuid,category:"set",itemCategory:r,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,date:e.date!=null?new Date(e.date):null,license:F(e.availability),identification:P(e.identification),isSuppressingBlanks:e.suppressBlanks??!1,description:e.description?["string","number","boolean"].includes(typeof e.description)?u(e.description):v(e.description):"",creators:e.creators?L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],type:e.type,number:e.n,items:t}}function Z(e){return{uuid:e.uuid,category:"resource",publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,type:e.type,number:e.n,format:e.format??null,context:"context"in e&&e.context?U(e.context):null,license:"availability"in e&&e.availability?F(e.availability):null,copyright:"copyright"in e&&e.copyright!=null?u(e.copyright):null,identification:P(e.identification),date:e.date!=null?new Date(e.date):null,image:e.image?me(e.image):null,creators:e.creators?L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],notes:e.notes?ne(Array.isArray(e.notes.note)?e.notes.note:[e.notes.note]):[],description:e.description?["string","number","boolean"].includes(typeof e.description)?u(e.description):v(e.description):"",document:e.document&&"content"in e.document?re(e.document.content):null,href:e.href??null,imageMap:e.imagemap?He(e.imagemap):null,periods:e.periods?Y(Array.isArray(e.periods.period)?e.periods.period:[e.periods.period]):[],links:e.links?j(Array.isArray(e.links)?e.links:[e.links]):[],reverseLinks:e.reverseLinks?j(Array.isArray(e.reverseLinks)?e.reverseLinks:[e.reverseLinks]):[],properties:e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],citedBibliographies:e.citedBibliography?q(Array.isArray(e.citedBibliography.reference)?e.citedBibliography.reference:[e.citedBibliography.reference]):[],resources:e.resource?V(Array.isArray(e.resource)?e.resource:[e.resource]):[]}}function V(e){let r=[],n=Array.isArray(e)?e:[e];for(let t of n)r.push(Z(t));return r}function ee(e){return{uuid:e.uuid,category:"spatialUnit",publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,type:e.type,number:e.n,context:"context"in e&&e.context?U(e.context):null,license:"availability"in e&&e.availability?F(e.availability):null,identification:P(e.identification),image:e.image?me(e.image):null,description:e.description?["string","number","boolean"].includes(typeof e.description)?u(e.description):v(e.description):"",coordinates:e.coordinates?he(e.coordinates):e.coordinate?he(e.coordinate):null,observations:"observations"in e&&e.observations?je(Array.isArray(e.observations.observation)?e.observations.observation:[e.observations.observation]):e.observation?[ge(e.observation)]:[],events:"events"in e&&e.events?Ue(Array.isArray(e.events.event)?e.events.event:[e.events.event]):[],properties:"properties"in e&&e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}function ve(e){let r=[],n=Array.isArray(e)?e:[e];for(let t of n)r.push(ee(t));return r}function te(e){return{uuid:e.uuid,category:"concept",publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,number:e.n,license:"availability"in e&&e.availability?F(e.availability):null,context:"context"in e&&e.context?U(e.context):null,identification:P(e.identification),interpretations:Ne(Array.isArray(e.interpretations.interpretation)?e.interpretations.interpretation:[e.interpretations.interpretation])}}var be=async(e,r)=>{let n=[];for(let t of e)if((t.properties?T(Array.isArray(t.properties.property)?t.properties.property:[t.properties.property]):[]).find(o=>o.label==="presentation"&&o.values[0].content===r))switch(r){case"element":{let o=await ie(t);n.push(o);break}case"page":{let o=await Me(t);o&&n.push(o);break}case"block":{let o=await Se(t);o&&n.push(o);break}}return n};function we(e){let r=[],n=Array.isArray(e)?e:[e];for(let t of n)r.push(te(t));return r}async function Xe(e,r){let n=xe.parse(e.values[0].content),t={component:n},i=r.links?j(Array.isArray(r.links)?r.links:[r.links]):[],s=i.filter(a=>a.type==="image"||a.type==="IIIF"),o=r.document&&"content"in r.document?re(r.document.content):null;if(o===null){let a=i.find(l=>l.type==="internalDocument");if(a){let{item:l,error:c}=await pe(a.uuid,"resource");if(c!==null)throw new Error("Failed to fetch OCHRE data");o=l.document}}switch(n){case"annotated-document":{if(!o)throw new Error(`Document not found for the following component: \u201C${n}\u201D`);t.document=o;break}case"annotated-image":{if(s.length===0)throw new Error(`Image link not found for the following component: \u201C${n}\u201D`);let a=d(e.properties,"is-searchable")==="Yes";t.imageUuid=s[0].uuid,t.isSearchable=a;break}case"bibliography":{let a=i.find(c=>c.category==="bibliography");if(!a)throw new Error(`Bibliography link not found for the following component: \u201C${n}\u201D`);if(!a.bibliographies)throw new Error(`Bibliography not found for the following component: \u201C${n}\u201D`);let l=d(e.properties,"layout");l??="long",t.bibliographies=a.bibliographies,t.layout=l;break}case"button":{let a=d(e.properties,"variant");a??="default";let l=!1,c=d(e.properties,"navigate-to");if(c===null){if(c=d(e.properties,"link-to"),c===null)throw new Error(`Properties \u201Cnavigate-to\u201D or \u201Clink-to\u201D not found for the following component: \u201C${n}\u201D`);l=!0}let b=null,g=d(e.properties,"icon");g!==null&&(b=g),t.variant=a,t.href=c,t.isExternal=l,t.label=["string","number","boolean"].includes(typeof r.identification.label)?u(r.identification.label):v(r.identification.label),t.icon=b;break}case"collection":{let a=i.find(D=>D.category==="set");if(!a)throw new Error(`Collection link not found for the following component: \u201C${n}\u201D`);let l=d(e.properties,"variant");l??="full";let c=d(e.properties,"item-variant");c??="default";let b=!1,g=d(e.properties,"show-count");g!==null&&(b=g==="Yes");let k=!1,y=d(e.properties,"is-searchable");y!==null&&(k=y==="Yes");let h=d(e.properties,"layout");h??="image-start",t.collectionId=a.uuid,t.variant=l,t.itemVariant=c,t.isSearchable=k,t.showCount=b,t.layout=h;break}case"empty-space":{let a=d(e.properties,"height"),l=d(e.properties,"width");t.height=a,t.width=l;break}case"entries":{let a=i.find(g=>g.category==="tree");if(!a)throw new Error(`Entries link not found for the following component: \u201C${n}\u201D`);let l=d(e.properties,"variant");l??="blog-page";let c=!1,b=d(e.properties,"is-searchable");b!==null&&(c=b==="Yes"),t.entriesId=a.uuid,t.variant=l,t.isSearchable=c;break}case"filter-categories":{let a=i.find(l=>l.category==="set");if(!a)throw new Error(`Filter link not found for the following component: \u201C${n}\u201D`);t.filterId=a.uuid;break}case"iframe":{let a=i.find(b=>b.type==="webpage")?.href;if(!a)throw new Error(`URL not found for the following component: \u201C${n}\u201D`);let l=d(e.properties,"height"),c=d(e.properties,"width");t.href=a,t.height=l,t.width=c;break}case"iiif-viewer":{let a=i.find(l=>l.type==="IIIF");if(!a)throw new Error(`Manifest link not found for the following component: \u201C${n}\u201D`);t.IIIFId=a.uuid;break}case"image":{if(s.length===0)throw new Error(`Image link not found for the following component: \u201C${n}\u201D`);let a=[];for(let $ of s)a.push({url:`https://ochre.lib.uchicago.edu/ochre?uuid=${$.uuid}&load`,label:$.identification?.label??null,width:$.image?.width??0,height:$.image?.height??0});let l=d(e.properties,"variant");l??="default";let c=d(e.properties,"layout-caption");c??="bottom";let b=null,g=d(e.properties,"width");g!==null&&(typeof g=="number"?b=g:typeof g=="string"&&(b=Number.parseFloat(g)));let k=null,y=d(e.properties,"height");y!==null&&(typeof y=="number"?k=y:typeof y=="string"&&(k=Number.parseFloat(y)));let h=!0,D=d(e.properties,"is-full-width");D!==null&&(h=D==="Yes");let I=!0,C=d(e.properties,"is-full-height");C!==null&&(I=C==="Yes");let f=d(e.properties,"image-quality");f??="high";let m=d(e.properties,"caption-source");m??="name";let w=d(e.properties,"alt-text-source");w??="name";let S=!1,p=d(e.properties,"is-transparent");p!==null&&(S=p==="Yes");let O=!1,E=d(e.properties,"is-cover");E!==null&&(O=E==="Yes");let N=null;if(a.length>1){let $=G(e.properties,"variant"),H=5;if($&&$.values[0].content==="carousel"){let B=d($.properties,"seconds-per-image");B!==null&&(typeof B=="number"?H=B:typeof B=="string"&&(H=Number.parseFloat(B)))}N={secondsPerImage:H}}t.images=a,t.variant=l,t.width=b,t.height=k,t.isFullWidth=h,t.isFullHeight=I,t.imageQuality=f,t.captionLayout=c,t.captionSource=m,t.altTextSource=w,t.isTransparentBackground=S,t.isCover=O,t.carouselOptions=N;break}case"image-gallery":{let a=i.find(c=>c.category==="tree"||c.category==="set");if(!a)throw new Error(`Image gallery link not found for the following component: \u201C${n}\u201D`);let l=d(e.properties,"is-searchable")==="Yes";t.galleryId=a.uuid,t.isSearchable=l;break}case"n-columns":{let a=r.resource?await be(Array.isArray(r.resource)?r.resource:[r.resource],"element"):[];t.columns=a;break}case"n-rows":{let a=r.resource?await be(Array.isArray(r.resource)?r.resource:[r.resource],"element"):[];t.rows=a;break}case"network-graph":break;case"table":{let a=i.find(l=>l.category==="set");if(!a)throw new Error(`Table link not found for the following component: \u201C${n}\u201D`);t.tableId=a.uuid;break}case"search-bar":{let a=d(e.properties,"variant");a??="default",t.variant=a;break}case"text":{if(!o)throw new Error(`Document not found for the following component: \u201C${n}\u201D`);let a=d(e.properties,"variant");a??="block";let l=d(e.properties,"heading");t.variant=a,t.heading=l,t.content=o.content;break}case"timeline":{let a=i.find(l=>l.category==="tree");if(!a)throw new Error(`Timeline link not found for the following component: \u201C${n}\u201D`);t.timelineId=a.uuid;break}case"video":{let a=i.find(c=>c.type==="video");if(!a)throw new Error(`Video link not found for the following component: \u201C${n}\u201D`);let l=d(e.properties,"chapters-displayed");l??="Yes",t.videoId=a.uuid,t.isChaptersDislayed=l==="Yes";break}default:{console.warn(`Invalid or non-implemented component name \u201C${n}\u201D for the following element: \u201C${v(r.identification.label)}\u201D`);break}}return t}async function ie(e){let r=P(e.identification),t=(e.properties?.property?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]).find(m=>m.label==="presentation");if(!t)throw new Error(`Presentation property not found for element \u201C${r.label}\u201D`);let i=t.properties.find(m=>m.label==="component");if(!i)throw new Error(`Component for element \u201C${r.label}\u201D not found`);let s=await Xe(i,e),a=t.properties.find(m=>m.label==="section-sidebar-displayed")?.values[0]?.booleanValue===!0,l=e.properties?.property?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],c=l.find(m=>m.label==="presentation"&&m.values[0].content==="css")?.properties??[],b=[];for(let m of c){let w=m.values[0].content;b.push({label:m.label,value:w})}let g=l.find(m=>m.label==="presentation"&&m.values[0].content==="css-mobile")?.properties??[],k=[];for(let m of g){let w=m.values[0].content;k.push({label:m.label,value:w})}let y=l.find(m=>m.label==="presentation"&&m.values[0].content==="title")?.properties,h="default",D=!1,I=!1,C=!1,f=!1;if(y){let m=d(y,"variant");m&&(h=m);let w=y.filter(S=>S.label==="display");w.length>0&&(D=w.some(S=>S.values[0].content==="name"),I=w.some(S=>S.values[0].content==="description"),C=w.some(S=>S.values[0].content==="date"),f=w.some(S=>S.values[0].content==="creators"))}return{uuid:e.uuid,type:"element",title:{label:r.label,variant:h,properties:{isNameDisplayed:D,isDescriptionDisplayed:I,isDateDisplayed:C,isCreatorsDisplayed:f}},isDisplayedInBlockSectionSidebar:a,cssStyles:b,cssStylesMobile:k,...s}}async function Me(e){let r=e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[];if(r.length===0||r.find(f=>f.label==="presentation")?.values[0]?.content!=="page")return null;let n=P(e.identification),t=e.slug;if(t===void 0)throw new Error(`Slug not found for page \u201C${n.label}\u201D`);let s=(e.links?j(Array.isArray(e.links)?e.links:[e.links]):[]).find(f=>f.type==="image"||f.type==="IIIF"),o=e.resource?Array.isArray(e.resource)?e.resource:[e.resource]:[],a=[];for(let f of o){let m=f.properties?T(Array.isArray(f.properties.property)?f.properties.property:[f.properties.property]):[],w=d(m,"presentation");if(w!=null)switch(w){case"element":{let S=await ie(f);a.push(S);break}case"block":{let S=await Se(f);S&&a.push(S);break}}}let l=e.resource?await be(Array.isArray(e.resource)?e.resource:[e.resource],"page"):[],c=!0,b="default",g="default",k=!0,y=r.find(f=>f.label==="presentation"&&f.values[0]?.content==="page")?.properties;if(y){let f=y.find(p=>p.label==="header")?.values[0];f&&(c=f.content==="Yes");let m=y.find(p=>p.label==="width")?.values[0];m&&(b=m.content);let w=y.find(p=>p.label==="variant")?.values[0];w&&(g=w.content);let S=y.find(p=>p.label==="sidebar-visible")?.values[0];S&&(k=S.content==="Yes")}let h=r.find(f=>f.label==="presentation"&&f.values[0]?.content==="css")?.properties,D=[];if(h)for(let f of h)D.push({label:f.label,value:f.values[0].content});let I=r.find(f=>f.label==="presentation"&&f.values[0]?.content==="css-mobile")?.properties,C=[];if(I)for(let f of I)C.push({label:f.label,value:f.values[0].content});return{title:n.label,slug:t,items:a,properties:{displayedInHeader:c,width:b,variant:g,backgroundImageUrl:s?`https://ochre.lib.uchicago.edu/ochre?uuid=${s.uuid}&load`:null,isSidebarDisplayed:k,cssStyles:D,cssStylesMobile:C},webpages:l}}async function Ze(e){let r=[],n=Array.isArray(e)?e:[e];for(let t of n){let i=await Me(t);i&&r.push(i)}return r}async function Se(e){let r={uuid:e.uuid,type:"block",layout:"vertical",items:[],properties:{spacing:void 0,gap:void 0,alignItems:"start",justifyContent:"stretch",sectionSidebarItems:null},propertiesMobile:null,cssStyles:[],cssStylesMobile:[]},n=e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],t=n.find(l=>l.label==="presentation"&&l.values[0]?.content==="block")?.properties;if(t){let l=t.find(h=>h.label==="layout")?.values[0];l&&(r.layout=l.content);let c=t.find(h=>h.label==="spacing")?.values[0];c&&(r.properties.spacing=c.content);let b=t.find(h=>h.label==="gap")?.values[0];b&&(r.properties.gap=b.content);let g=t.find(h=>h.label==="align-items")?.values[0];g&&(r.properties.alignItems=g.content);let k=t.find(h=>h.label==="justify-content")?.values[0];k&&(r.properties.justifyContent=k.content);let y=t.find(h=>h.label==="overwrite-mobile");if(y){let h=y.properties,D={};for(let I of h)D[I.label]=I.values[0].content;r.propertiesMobile=D}}let i=e.resource?Array.isArray(e.resource)?e.resource:[e.resource]:[],s=[];for(let l of i){let c=l.properties?T(Array.isArray(l.properties.property)?l.properties.property:[l.properties.property]):[],b=d(c,"presentation");if(b!=null)switch(b){case"element":{let g=await ie(l);s.push(g);break}case"block":{let g=await Se(l);g&&s.push(g);break}}}r.items=s;let o=n.find(l=>l.label==="presentation"&&l.values[0]?.content==="css")?.properties;if(o)for(let l of o)r.cssStyles.push({label:l.label,value:l.values[0].content});let a=n.find(l=>l.label==="presentation"&&l.values[0]?.content==="css-mobile")?.properties;if(a)for(let l of a)r.cssStylesMobile.push({label:l.label,value:l.values[0].content});return r.properties.sectionSidebarItems=Ye(r),r}function Ye(e){let r=[];for(let n of e.items)switch(n.type){case"block":{let t=Ye(n);t!==null&&r.push({uuid:n.uuid,type:"block",name:null,items:t});break}case"element":{if(!n.isDisplayedInBlockSectionSidebar)continue;r.push({uuid:n.uuid,type:"element",name:n.title.label,items:null});break}}return r.length>0?r:null}function et(e){let n=T(e).find(A=>A.label==="presentation")?.properties;if(!n)throw new Error("Presentation property not found");let t=n.find(A=>A.label==="webUI")?.values[0]?.content;if(t==null)throw new Error("Website type not found");let i=n.find(A=>A.label==="status")?.values[0]?.content;if(i==null)throw new Error("Website status not found");let s=n.find(A=>A.label==="privacy")?.values[0]?.content;s??="public";let o=Ie.safeParse({type:t,status:i,privacy:s});if(!o.success)throw new Error(`Invalid website properties: ${o.error.message}`);let a=null,l=n.find(A=>A.label==="contact");if(l){let[A,qe]=(l.values[0]?.content).split(";");a={name:A,email:qe??null}}let c=n.find(A=>A.label==="logo")?.values[0]?.uuid??null,b=!0,g="default",k="start",y=!0,h=!0,D=!1,I=null,C=!0,f=n.find(A=>A.label==="navbar-visible")?.values[0];f&&(b=f.content==="Yes");let m=n.find(A=>A.label==="navbar-variant")?.values[0];m&&(g=m.content);let w=n.find(A=>A.label==="navbar-alignment")?.values[0];w&&(k=w.content);let S=n.find(A=>A.label==="navbar-project-visible")?.values[0];S&&(y=S.content==="Yes");let p=n.find(A=>A.label==="footer-visible")?.values[0];p&&(h=p.content==="Yes");let O=n.find(A=>A.label==="sidebar-visible")?.values[0];O&&(D=O.content==="Yes");let E=n.find(A=>A.label==="search-collection")?.values[0];E&&(I=E.uuid);let N=n.find(A=>A.label==="supports-theme-toggle")?.values[0];N&&(C=N.content==="Yes");let{type:$,status:H,privacy:B}=o.data;return{type:$,privacy:B,status:H,contact:a,isHeaderDisplayed:b,headerVariant:g,headerAlignment:k,isHeaderProjectDisplayed:y,isFooterDisplayed:h,isSidebarDisplayed:D,supportsThemeToggle:C,searchCollectionUuid:I,logoUrl:c!==null?`https://ochre.lib.uchicago.edu/ochre?uuid=${c}&load`:null}}async function Pe(e,r,n){if(!e.properties)throw new Error("Website properties not found");let t=et(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]);if(typeof e.items=="string"||!("resource"in e.items))throw new Error("Website pages not found");let i=Array.isArray(e.items.resource)?e.items.resource:[e.items.resource],s=await Ze(i),o=null,a=[],l={label:"",variant:"default",properties:{isNameDisplayed:!1,isDescriptionDisplayed:!1,isDateDisplayed:!1,isCreatorsDisplayed:!1}},c="start",b="default",g=[],k=[],y=i.find(h=>(h.properties?T(Array.isArray(h.properties.property)?h.properties.property:[h.properties.property]):[]).some(I=>I.label==="presentation"&&I.values[0]?.content==="element"&&I.properties[0]?.label==="component"&&I.properties[0].values[0]?.content==="sidebar"));if(y){l.label=typeof y.identification.label=="string"||typeof y.identification.label=="number"||typeof y.identification.label=="boolean"?u(y.identification.label):v(y.identification.label);let h=y.properties?T(Array.isArray(y.properties.property)?y.properties.property:[y.properties.property]):[],D=h.find(p=>p.label==="presentation"&&p.values[0]?.content==="element")?.properties.find(p=>p.label==="component"&&p.values[0]?.content==="sidebar")?.properties??[],I=D.find(p=>p.label==="layout");I&&(c=I.values[0].content);let C=D.find(p=>p.label==="layout-mobile");C&&(b=C.values[0].content);let f=h.find(p=>p.label==="presentation"&&p.values[0].content==="css")?.properties??[];for(let p of f){let O=p.values[0].content;g.push({label:p.label,value:O})}let m=h.find(p=>p.label==="presentation"&&p.values[0].content==="css-mobile")?.properties??[];for(let p of m){let O=p.values[0].content;k.push({label:p.label,value:O})}let w=h.find(p=>p.label==="presentation"&&p.values[0].content==="title")?.properties;if(w){let p=d(w,"variant");p&&(l.variant=p);let O=w.filter(E=>E.label==="display");O.length>0&&(l.properties.isNameDisplayed=O.some(E=>E.values[0].content==="name"),l.properties.isDescriptionDisplayed=O.some(E=>E.values[0].content==="description"),l.properties.isDateDisplayed=O.some(E=>E.values[0].content==="date"),l.properties.isCreatorsDisplayed=O.some(E=>E.values[0].content==="creators"))}let S=y.resource?Array.isArray(y.resource)?y.resource:[y.resource]:[];for(let p of S){let O=await ie(p);a.push(O)}}return a.length>0&&(o={elements:a,title:l,layout:c,mobileLayout:b,cssStyles:g,cssStylesMobile:k}),{uuid:e.uuid,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,identification:P(e.identification),project:{name:u(r),website:n!==null?u(n):null},creators:e.creators?L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],license:F(e.availability),pages:s,sidebar:o,properties:t}}async function tt(e,r,n,t){try{let{uuid:i,filter:s,page:o,perPage:a}=Te.parse({uuid:e,filter:r,page:n,perPage:t}),l=await fetch(`https://ochre.lib.uchicago.edu/ochre?xquery=${encodeURIComponent(`
1
+ "use strict";var ae=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var Ke=Object.getOwnPropertyNames;var Je=Object.prototype.hasOwnProperty;var _e=(e,r)=>{for(var n in r)ae(e,n,{get:r[n],enumerable:!0})},ze=(e,r,n,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Ke(r))!Je.call(e,i)&&i!==n&&ae(e,i,{get:()=>r[i],enumerable:!(t=Ge(r,i))||t.enumerable});return e};var Qe=e=>ze(ae({},"__esModule",{value:!0}),e);var nt={};_e(nt,{fetchByUuid:()=>pe,fetchGallery:()=>tt,fetchItem:()=>ue,fetchWebsite:()=>rt,filterProperties:()=>We,getAllPropertyLabels:()=>Le,getPropertyByLabel:()=>G,getPropertyValueByLabel:()=>d,getPropertyValuesByLabel:()=>le,parseBibliographies:()=>q,parseBibliography:()=>R,parseConcept:()=>te,parseConcepts:()=>Se,parseContext:()=>U,parseCoordinates:()=>re,parseDocument:()=>ne,parseEmail:()=>W,parseEvents:()=>Ae,parseFakeString:()=>u,parseIdentification:()=>P,parseImage:()=>me,parseImageMap:()=>He,parseInterpretations:()=>Ne,parseLanguages:()=>Be,parseLicense:()=>F,parseLink:()=>je,parseLinks:()=>j,parseMetadata:()=>de,parseNotes:()=>ie,parseObservation:()=>ge,parseObservations:()=>Ue,parsePeriod:()=>Q,parsePeriods:()=>Y,parsePerson:()=>z,parsePersons:()=>L,parseProperties:()=>T,parseProperty:()=>Ve,parsePropertyValue:()=>X,parsePropertyValues:()=>ve,parseResource:()=>Z,parseResources:()=>V,parseSet:()=>ye,parseSpatialUnit:()=>ee,parseSpatialUnits:()=>we,parseStringContent:()=>v,parseStringDocumentItem:()=>J,parseStringItem:()=>K,parseTree:()=>fe,parseWebsite:()=>ke});module.exports=Qe(nt);var x=require("zod"),Ie=x.z.string().uuid({message:"Invalid UUID provided"}),xe=x.z.object({type:x.z.enum(["traditional","digital-collection","plum","cedar","elm","maple","oak","palm"],{message:"Invalid website type"}),status:x.z.enum(["development","preview","production"],{message:"Invalid website status"}),privacy:x.z.enum(["public","password","private"],{message:"Invalid website privacy"})}),De=x.z.enum(["annotated-document","annotated-image","bibliography","button","collection","empty-space","entries","filter-categories","iframe","iiif-viewer","image","image-gallery","n-columns","n-rows","network-graph","search-bar","table","text","timeline","video"],{message:"Invalid component"}),se=x.z.enum(["resource","spatialUnit","concept","period","bibliography","person","propertyValue","set","tree"]),Te=x.z.enum(["string","integer","decimal","boolean","date","dateTime","time","coordinate","IDREF"]),Oe=x.z.object({uuid:x.z.string().uuid({message:"Invalid UUID"}),filter:x.z.string().optional(),page:x.z.number().positive({message:"Page must be positive"}),perPage:x.z.number().positive({message:"Per page must be positive"})}).strict(),Ee=x.z.string().transform(e=>e.split(" ")).pipe(x.z.array(x.z.enum(["bold","italic","underline"]))),Ce=x.z.string().transform(e=>e.split(" ")).pipe(x.z.array(x.z.enum(["newline","trailing","leading"]))),$e=x.z.string().email({message:"Invalid email"});var M={searchNestedProperties:!1};function G(e,r,n=M){let{searchNestedProperties:t}=n,i=e.find(s=>s.label===r);if(i)return i;if(t){for(let s of e)if(s.properties.length>0){let o=G(s.properties,r,{searchNestedProperties:t});if(o)return o}}return null}function le(e,r,n=M){let{searchNestedProperties:t}=n,i=e.find(s=>s.label===r);if(i)return i.values.map(s=>s.content);if(t){for(let s of e)if(s.properties.length>0){let o=le(s.properties,r,{searchNestedProperties:t});if(o)return o}}return null}function d(e,r,n=M){let{searchNestedProperties:t}=n,i=le(e,r,{searchNestedProperties:t});if(i!==null&&i.length>0)return i[0];if(t){for(let s of e)if(s.properties.length>0){let o=d(s.properties,r,{searchNestedProperties:t});if(o!==null)return o}}return null}function Le(e,r=M){let{searchNestedProperties:n}=r,t=new Set;for(let i of e)if(t.add(i.label),i.properties.length>0&&n){let s=Le(i.properties,{searchNestedProperties:!0});for(let o of s)t.add(o)}return[...t]}function We(e,r,n=M){let{searchNestedProperties:t}=n;if(r.label.toLocaleLowerCase("en-US")==="all fields"||e.label.toLocaleLowerCase("en-US")===r.label.toLocaleLowerCase("en-US")){let s=e.values.some(o=>o.content===null?!1:typeof o.content=="string"?typeof r.value!="string"?!1:o.content.toLocaleLowerCase("en-US").includes(r.value.toLocaleLowerCase("en-US")):typeof o.content=="number"?typeof r.value!="number"?!1:o.content===r.value:typeof o.content=="boolean"?typeof r.value!="boolean"?!1:o.booleanValue===r.value:o.content instanceof Date&&r.value instanceof Date?o.content.getTime()===r.value.getTime():!1);return!s&&t&&(s=e.properties.some(o=>We(o,r,{searchNestedProperties:!0}))),s}return!1}function Re(e,r){return e.find(t=>t.lang===r)??null}function W(e){let r=e.split(" "),n=[];for(let t of r){let i=t.replaceAll(/(?<=\s|^)[([{]+|[)\]}]+(?=\s|$)/g,"").replace(/[!),.:;?\]]$/,""),s=t.indexOf(i),o=t.slice(0,s),a=t.slice(s+i.length);if($e.safeParse(i).success){n.push(o,`${o}<ExternalLink href="mailto:${i}">${i}</ExternalLink>${a}`);continue}n.push(t)}return n.join(" ")}function Fe(e,r){let n=e,t=Ee.safeParse(r);if(!t.success)return console.warn(`Invalid render options string provided: \u201C${r}\u201D`),e;for(let i of t.data)switch(i){case"bold":{n=`**${n}**`;break}case"italic":{n=`*${n}*`;break}case"underline":{n=`_${n}_`;break}}return n.replaceAll("&#39;","'")}function ce(e,r){let n=e,t=Ce.safeParse(r);if(!t.success)return console.warn(`Invalid whitespace string provided: \u201C${r}\u201D`),e;for(let i of t.data)switch(i){case"newline":{n=`<br />
2
+ ${n}`;break}case"trailing":{n=`${n} `;break}case"leading":{n=` ${n}`;break}}return n.replaceAll("&#39;","'")}function u(e){let r="";return typeof e=="string"?r=e:typeof e=="number"?r=e.toString():typeof e=="boolean"&&(r=e?"Yes":"No"),r.replaceAll("&#39;","'").replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}function K(e){let r="";switch(typeof e.string){case"string":{r=e.string;break}case"number":case"boolean":{r=u(e.string);break}case"object":{let n=Array.isArray(e.string)?e.string:[e.string];for(let t of n)if(typeof t=="string"||typeof t=="number"||typeof t=="boolean")r+=u(t);else{let i=t.rend!=null?Fe(u(t.content),t.rend):u(t.content),s=t.whitespace!=null?ce(i,t.whitespace):i;r+=s}break}default:{r="";break}}return r.replaceAll("&#39;","'").replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}function J(e,r){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return W(u(e));if("whitespace"in e&&!("content"in e)&&!("string"in e))return e.whitespace==="newline"?`
3
+ `:"";if("links"in e){let t="";typeof e.string=="object"?t=v(e.string):t=u(e.string).replaceAll("<",String.raw`\<`).replaceAll("{",String.raw`\{`);let i=Array.isArray(e.links)?e.links:[e.links];for(let s of i)if("resource"in s){let o=Array.isArray(s.resource)?s.resource[0]:s.resource,a=null;switch(o.content!=null&&(a=u(o.content).replaceAll("<",String.raw`\<`).replaceAll("{",String.raw`\{`)),o.type){case"image":return o.rend==="inline"?`<InlineImage uuid="${o.uuid}" ${a!==null?`content="${a}"`:""} height={${o.height?.toString()??"null"}} width={${o.width?.toString()??"null"}} />`:o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="image"${a!==null?` content="${a}"`:""}>${t}</ExternalLink>`:`<TooltipSpan type="image" ${a!==null?`content="${a}"`:""}>${t}</TooltipSpan>`;case"internalDocument":return a?.toLocaleLowerCase("en-US").includes("footnote")?(r&&r.push({uuid:o.uuid,label:t,content:""}),` <Footnote uuid="${o.uuid}"${t?` label="${t}"`:""}${a!==null?` content="${a}"`:""} />`):`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="internalDocument" ${a!==null?`content="${a}"`:""}>${t}</ExternalLink>`;case"externalDocument":return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="externalDocument" ${a!==null?`content="${a}"`:""}>${t}</ExternalLink>`:`<TooltipSpan type="externalDocument" ${a!==null?`content="${a}"`:""}>${t}</TooltipSpan>`;case"webpage":return`<ExternalLink href="${o.href}" type="webpage" ${a!==null?`content="${a}"`:""}>${t}</ExternalLink>`;default:return""}}else if("concept"in s){let o=Array.isArray(s.concept)?s.concept[0]:s.concept;return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="concept">${t}</ExternalLink>`:`<TooltipSpan type="concept">${t}</TooltipSpan>`}else if("set"in s){let o=Array.isArray(s.set)?s.set[0]:s.set;return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="set">${t}</ExternalLink>`:`<TooltipSpan type="set">${t}</TooltipSpan>`}else if("person"in s){let o=Array.isArray(s.person)?s.person[0]:s.person,a=o.identification?["string","number","boolean"].includes(typeof o.identification.label)?u(o.identification.label):v(o.identification.label):null;return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="${o.type??"person"}" ${a!==null?`content="${a}"`:""}>${t}</ExternalLink>`:`<TooltipSpan type="${o.type??"person"}" ${a!==null?`content="${a}"`:""}>${t}</TooltipSpan>`}else if("bibliography"in s){let o=Array.isArray(s.bibliography)?s.bibliography[0]:s.bibliography;return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="${o.type??"bibliography"}">${t}</ExternalLink>`:`<TooltipSpan type="bibliography">${t}</TooltipSpan>`}}let n="";if("string"in e){let t=Array.isArray(e.string)?e.string:[e.string];for(let i of t)n+=J(i,r);return"whitespace"in e&&e.whitespace!=null&&(n=ce(W(n),e.whitespace)),n.replaceAll("&#39;","'").replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}else n=u(e.content),e.rend!=null&&(n=Fe(W(n),e.rend)),e.whitespace!=null&&(n=ce(W(n),e.whitespace));return n.replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}function v(e,r="eng"){switch(typeof e.content){case"string":case"number":case"boolean":return u(e.content);case"object":if(Array.isArray(e.content)){let n=Re(e.content,r);if(n)return K(n);{let t=e.content[0];if(!t)throw new Error(`No string item found for language \u201C${r}\u201D in the following content:
4
+ ${JSON.stringify(e.content)}.`);return K(t)}}else return K(e.content);default:return String(e.content).replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}}function _(e){let r=e.find(t=>se.safeParse(t).success);if(!r){let t=e.find(i=>!["uuid","uuidBelongsTo","belongsTo","publicationDateTime","metadata","languages"].includes(i));throw new Error(`Invalid OCHRE data; found unexpected "${t}" key`)}return se.parse(r)}async function pe(e){try{let r=Ie.parse(e),n=await fetch(`https://ochre.lib.uchicago.edu/ochre?uuid=${r}&format=json&lang="*"`);if(!n.ok)throw new Error("Failed to fetch OCHRE data");let t=await n.json();if(!("ochre"in t))throw new Error("Invalid OCHRE data: API response missing 'ochre' key");return[null,t]}catch(r){return[r instanceof Error?r.message:"Unknown error",null]}}async function ue(e,r,n){try{let[t,i]=await pe(e);if(t!==null)throw new Error(t);let s=_(Object.keys(i.ochre)),o;switch(s){case"resource":{if(!("resource"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'resource' key");o=Z(i.ochre.resource);break}case"spatialUnit":{if(!("spatialUnit"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'spatialUnit' key");o=ee(i.ochre.spatialUnit);break}case"concept":{if(!("concept"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'concept' key");o=te(i.ochre.concept);break}case"period":{if(!("period"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'period' key");o=Q(i.ochre.period);break}case"bibliography":{if(!("bibliography"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'bibliography' key");o=R(i.ochre.bibliography);break}case"person":{if(!("person"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'person' key");o=z(i.ochre.person);break}case"propertyValue":{if(!("propertyValue"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'propertyValue' key");o=X(i.ochre.propertyValue);break}case"set":{if(!("set"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'set' key");o=ye(i.ochre.set,n);break}case"tree":{if(!("tree"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'tree' key");o=fe(i.ochre.tree);break}default:throw new Error("Invalid category")}let a=de(i.ochre.metadata),l={uuid:i.ochre.uuidBelongsTo,abbreviation:u(i.ochre.belongsTo)};return{error:null,metadata:a,belongsTo:l,item:o,category:r}}catch(t){return{error:t instanceof Error?t.message:"Unknown error",metadata:void 0,belongsTo:void 0,item:void 0,category:void 0}}}function P(e){try{let r={label:["string","number","boolean"].includes(typeof e.label)?u(e.label):v(e.label),abbreviation:""};for(let n of Object.keys(e).filter(t=>t!=="label"))r[n]=v(e[n]);return r}catch(r){return console.error(r),{label:"",abbreviation:""}}}function Be(e){return e==null?["eng"]:Array.isArray(e)?e.map(r=>v(r)):[v(e)]}function de(e){let r={label:"",abbreviation:""};if(e.item)if(e.item.label||e.item.abbreviation){let i="",s="";e.item.label&&(i=v(e.item.label)),e.item.abbreviation&&(s=v(e.item.abbreviation)),r={label:i,abbreviation:s}}else r=P(e.item.identification);let n=null,t=e.project?.identification?P(e.project.identification):null;return t&&(n={...t,website:e.project?.identification.website??null}),{project:n?{identification:n}:null,item:e.item?{identification:r,category:e.item.category,type:e.item.type,maxLength:e.item.maxLength??null}:null,dataset:v(e.dataset),publisher:v(e.publisher),languages:Be(e.language),identifier:v(e.identifier),description:v(e.description)}}function he(e){return{uuid:e.uuid,publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,number:e.n,content:u(e.content)}}function U(e){return{nodes:(Array.isArray(e.context)?e.context:[e.context]).map(t=>{let i=[];if("spatialUnit"in t&&t.spatialUnit){let s=Array.isArray(t.spatialUnit)?t.spatialUnit:[t.spatialUnit];for(let o of s)i.push(he(o))}return{tree:he(t.tree),project:he(t.project),spatialUnit:i}}),displayPath:e.displayPath}}function F(e){return typeof e.license=="string"?null:{content:e.license.content,url:e.license.target}}function z(e){return{uuid:e.uuid,category:"person",publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,type:e.type??null,number:e.n??null,context:e.context?U(e.context):null,date:e.date!=null?new Date(e.date):null,identification:e.identification?P(e.identification):null,availability:e.availability?F(e.availability):null,address:e.address?{country:e.address.country??null,city:e.address.city??null,state:e.address.state??null}:null,coordinates:e.coordinates?re(e.coordinates):null,content:e.content!=null?u(e.content):null,events:e.events?Ae(Array.isArray(e.events.event)?e.events.event:[e.events.event]):[],properties:e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}function L(e){let r=[];for(let n of e)r.push(z(n));return r}function je(e){let r="resource"in e?e.resource:"spatialUnit"in e?e.spatialUnit:"concept"in e?e.concept:"set"in e?e.set:"tree"in e?e.tree:"person"in e?e.person:"bibliography"in e?e.bibliography:"epigraphicUnit"in e?e.epigraphicUnit:"propertyValue"in e?e.propertyValue:null;if(!r)throw new Error(`Invalid link provided: ${JSON.stringify(e,null,2)}`);let n=Array.isArray(r)?r:[r],t=[];for(let i of n){let s={category:"resource"in e?"resource":"spatialUnit"in e?"spatialUnit":"concept"in e?"concept":"set"in e?"set":"person"in e?"person":"tree"in e?"tree":"bibliography"in e?"bibliography":"epigraphicUnit"in e?"epigraphicUnit":"propertyValue"in e?"propertyValue":null,content:"content"in i&&i.content!=null?u(i.content):null,href:"href"in i&&i.href!=null?i.href:null,uuid:i.uuid,type:i.type??null,identification:i.identification?P(i.identification):null,image:null,bibliographies:"bibliography"in e?q(Array.isArray(e.bibliography)?e.bibliography:[e.bibliography]):null,publicationDateTime:i.publicationDateTime!=null?new Date(i.publicationDateTime):null};"height"in i&&i.height!=null&&i.width!=null&&i.heightPreview!=null&&i.widthPreview!=null&&(s.image={isInline:i.rend==="inline",isPrimary:i.isPrimary??!1,heightPreview:i.heightPreview,widthPreview:i.widthPreview,height:i.height,width:i.width}),t.push(s)}return t}function j(e){let r=[];for(let n of e)r.push(...je(n));return r}function ne(e,r="eng"){let n="",t=[],i=Array.isArray(e)?e.find(s=>s.lang===r):e;if(typeof i.string=="string"||typeof i.string=="number"||typeof i.string=="boolean")n+=W(u(i.string));else{let s=Array.isArray(i.string)?i.string:[i.string];for(let o of s)n+=J(o,t)}return{content:n,footnotes:t}}function me(e){return{publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,identification:e.identification?P(e.identification):null,url:e.href??(e.htmlImgSrcPrefix==null&&e.content!=null?u(e.content):null),htmlPrefix:e.htmlImgSrcPrefix??null,content:e.htmlImgSrcPrefix!=null&&e.content!=null?u(e.content):null,widthPreview:e.widthPreview??null,heightPreview:e.heightPreview??null,width:e.width??null,height:e.height??null}}function ie(e,r="eng"){let n=[];for(let t of e){if(typeof t=="string"){if(t==="")continue;n.push({number:-1,title:null,content:t});continue}let i="",s=Array.isArray(t.content)?t.content:[t.content],o=s.find(a=>a.lang===r);if(!o&&(o=s[0],!o))throw new Error(`Note does not have a valid content item: ${JSON.stringify(t,null,2)}`);typeof o.string=="string"||typeof o.string=="number"||typeof o.string=="boolean"?i=W(u(o.string)):i=W(ne(o).content),n.push({number:t.noteNo,title:o.title!=null?u(o.title):null,content:i})}return n}function re(e){if(typeof e=="string"){let[r,n]=e.split(", ");return{latitude:Number(r),longitude:Number(n),type:null,label:null}}return{latitude:e.latitude,longitude:e.longitude,type:e.coord?.coordType??null,label:e.coord?.coordLabel!=null?u(e.coord.coordLabel):null}}function ge(e){return{number:e.observationNo,date:e.date!=null?new Date(e.date):null,observers:e.observers!=null?u(e.observers).split(";").map(r=>r.trim()):[],notes:e.notes?ie(Array.isArray(e.notes.note)?e.notes.note:[e.notes.note]):[],links:e.links?j(Array.isArray(e.links)?e.links:[e.links]):[],properties:e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}function Ue(e){let r=[];for(let n of e)r.push(ge(n));return r}function Ae(e){let r=[];for(let n of e)r.push({date:n.dateTime!=null?new Date(n.dateTime):null,label:v(n.label),agent:n.agent?{uuid:n.agent.uuid,content:u(n.agent.content)}:null});return r}function Ve(e,r="eng"){let t=("value"in e&&e.value?Array.isArray(e.value)?e.value:[e.value]:[]).map(i=>{let s=null,o=null;if(typeof i=="string"||typeof i=="number"||typeof i=="boolean")return s=u(i),{content:s,booleanValue:o,isUncertain:!1,type:"string",category:"value",uuid:null,publicationDateTime:null,unit:null};{switch(i.type){case"integer":case"decimal":{s=Number(i.content);break}case"dateTime":{s=i.content?typeof i.content=="string"?new Date(i.content):new Date(v({content:i.content})):null;break}default:{"slug"in i&&i.slug!=null?s=u(i.slug):i.content!=null&&(s=v({content:i.content})),i.type==="boolean"&&(o=i.booleanValue??null);break}}let a="string";if(i.type!=null){let{data:c,error:b}=Te.safeParse(i.type);if(b)throw new Error(`Invalid property value content type: "${i.type}"`);a=c}return{content:s,booleanValue:o,isUncertain:i.isUncertain??!1,type:a,category:i.category??"value",uuid:i.uuid??null,publicationDateTime:i.publicationDateTime!=null?new Date(i.publicationDateTime):null,unit:i.unit??null}}});return{label:v(e.label,r).replace(/\s*\.{3}$/,"").trim(),values:t,comment:e.comment!=null?u(e.comment):null,properties:e.property?T(Array.isArray(e.property)?e.property:[e.property]):[]}}function T(e,r="eng"){let n=[];for(let t of e)n.push(Ve(t,r));return n}function Ne(e){let r=[];for(let n of e)r.push({date:new Date(n.date),number:n.interpretationNo,properties:n.properties?T(Array.isArray(n.properties.property)?n.properties.property:[n.properties.property]):[]});return r}function He(e){let r={area:[],width:e.width,height:e.height},n=Array.isArray(e.area)?e.area:[e.area];for(let t of n)r.area.push({uuid:t.uuid,publicationDateTime:t.publicationDateTime!=null?new Date(t.publicationDateTime):null,type:t.type,title:u(t.title),shape:t.shape==="rect"?"rectangle":"polygon",coords:t.coords.split(",").map(i=>Number.parseInt(i))});return r}function Q(e){return{uuid:e.uuid,category:"period",publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,type:e.type??null,number:e.n??null,identification:P(e.identification),description:e.description?v(e.description):null}}function Y(e){let r=[];for(let n of e)r.push(Q(n));return r}function R(e){let r=null;return e.source?.resource&&(r={uuid:e.source.resource.uuid,publicationDateTime:e.source.resource.publicationDateTime?new Date(e.source.resource.publicationDateTime):null,type:e.source.resource.type,identification:P(e.source.resource.identification)}),{uuid:e.uuid,category:"bibliography",publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,type:e.type??null,number:e.n??null,identification:e.identification?P(e.identification):null,projectIdentification:e.project?.identification?P(e.project.identification):null,context:e.context?U(e.context):null,citation:{format:e.citationFormat??null,short:e.citationFormatSpan?u("default:span"in e.citationFormatSpan?e.citationFormatSpan["default:span"].content:e.citationFormatSpan.span.content):null,long:e.referenceFormatDiv?u("default:div"in e.referenceFormatDiv?e.referenceFormatDiv["default:div"]["default:div"].content:e.referenceFormatDiv.div.div.content):null},publicationInfo:{publishers:e.publicationInfo?.publishers?L(Array.isArray(e.publicationInfo.publishers.publishers.person)?e.publicationInfo.publishers.publishers.person:[e.publicationInfo.publishers.publishers.person]):[],startDate:e.publicationInfo?.startDate?new Date(e.publicationInfo.startDate.year,e.publicationInfo.startDate.month,e.publicationInfo.startDate.day):null},entryInfo:e.entryInfo?{startIssue:u(e.entryInfo.startIssue),startVolume:u(e.entryInfo.startVolume)}:null,source:{resource:r,documentUrl:e.sourceDocument?`https://ochre.lib.uchicago.edu/ochre?uuid=${e.sourceDocument.uuid}&load`:null},periods:e.periods?Y(Array.isArray(e.periods.period)?e.periods.period:[e.periods.period]):[],authors:e.authors?L(Array.isArray(e.authors.person)?e.authors.person:[e.authors.person]):[],properties:e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}function q(e){let r=[];for(let n of e)r.push(R(n));return r}function X(e){return{uuid:e.uuid,category:"propertyValue",number:e.n,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,context:e.context?U(e.context):null,availability:e.availability?F(e.availability):null,identification:P(e.identification),date:e.date?new Date(e.date):null,creators:e.creators?L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],description:e.description?["string","number","boolean"].includes(typeof e.description)?u(e.description):v(e.description):"",notes:e.notes?ie(Array.isArray(e.notes.note)?e.notes.note:[e.notes.note]):[],links:e.links?j(Array.isArray(e.links)?e.links:[e.links]):[]}}function ve(e){let r=[];for(let n of e)r.push(X(n));return r}function fe(e){let r=[];e.creators&&(r=L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]));let n=null;e.date!=null&&(n=new Date(e.date));let t=[],i=[],s=[],o=[],a=[],l=[],c=[];return typeof e.items!="string"&&"resource"in e.items&&(t=V(Array.isArray(e.items.resource)?e.items.resource:[e.items.resource])),typeof e.items!="string"&&"spatialUnit"in e.items&&(i=we(Array.isArray(e.items.spatialUnit)?e.items.spatialUnit:[e.items.spatialUnit])),typeof e.items!="string"&&"concept"in e.items&&(s=Se(Array.isArray(e.items.concept)?e.items.concept:[e.items.concept])),typeof e.items!="string"&&"period"in e.items&&(o=Y(Array.isArray(e.items.period)?e.items.period:[e.items.period])),typeof e.items!="string"&&"bibliography"in e.items&&(a=q(Array.isArray(e.items.bibliography)?e.items.bibliography:[e.items.bibliography])),typeof e.items!="string"&&"person"in e.items&&(l=L(Array.isArray(e.items.person)?e.items.person:[e.items.person])),typeof e.items!="string"&&"propertyValue"in e.items&&(c=ve(Array.isArray(e.items.propertyValue)?e.items.propertyValue:[e.items.propertyValue])),{uuid:e.uuid,category:"tree",publicationDateTime:new Date(e.publicationDateTime),identification:P(e.identification),creators:r,license:F(e.availability),date:n,type:e.type,number:e.n,items:{resources:t,spatialUnits:i,concepts:s,periods:o,bibliographies:a,persons:l,propertyValues:c},properties:e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}function ye(e,r){if(typeof e.items=="string")throw new TypeError("Invalid OCHRE data: Set has no items");let n=r??_(Object.keys(e.items)),t=[];switch(n){case"resource":{if(!("resource"in e.items))throw new Error("Invalid OCHRE data: Set has no resources");t=V(Array.isArray(e.items.resource)?e.items.resource:[e.items.resource]);break}case"spatialUnit":{if(!("spatialUnit"in e.items))throw new Error("Invalid OCHRE data: Set has no spatial units");t=we(Array.isArray(e.items.spatialUnit)?e.items.spatialUnit:[e.items.spatialUnit]);break}case"concept":{if(!("concept"in e.items))throw new Error("Invalid OCHRE data: Set has no concepts");t=Se(Array.isArray(e.items.concept)?e.items.concept:[e.items.concept]);break}case"period":{if(!("period"in e.items))throw new Error("Invalid OCHRE data: Set has no periods");t=Y(Array.isArray(e.items.period)?e.items.period:[e.items.period]);break}case"bibliography":{if(!("bibliography"in e.items))throw new Error("Invalid OCHRE data: Set has no bibliographies");t=q(Array.isArray(e.items.bibliography)?e.items.bibliography:[e.items.bibliography]);break}case"person":{if(!("person"in e.items))throw new Error("Invalid OCHRE data: Set has no persons");t=L(Array.isArray(e.items.person)?e.items.person:[e.items.person]);break}case"propertyValue":{if(!("propertyValue"in e.items))throw new Error("Invalid OCHRE data: Set has no property values");t=ve(Array.isArray(e.items.propertyValue)?e.items.propertyValue:[e.items.propertyValue]);break}default:throw new Error("Invalid OCHRE data: Set has no items or is malformed")}return{uuid:e.uuid,category:"set",itemCategory:r,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,date:e.date!=null?new Date(e.date):null,license:F(e.availability),identification:P(e.identification),isSuppressingBlanks:e.suppressBlanks??!1,description:e.description?["string","number","boolean"].includes(typeof e.description)?u(e.description):v(e.description):"",creators:e.creators?L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],type:e.type,number:e.n,items:t}}function Z(e){return{uuid:e.uuid,category:"resource",publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,type:e.type,number:e.n,format:e.format??null,context:"context"in e&&e.context?U(e.context):null,license:"availability"in e&&e.availability?F(e.availability):null,copyright:"copyright"in e&&e.copyright!=null?u(e.copyright):null,identification:P(e.identification),date:e.date!=null?new Date(e.date):null,image:e.image?me(e.image):null,creators:e.creators?L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],notes:e.notes?ie(Array.isArray(e.notes.note)?e.notes.note:[e.notes.note]):[],description:e.description?["string","number","boolean"].includes(typeof e.description)?u(e.description):v(e.description):"",document:e.document&&"content"in e.document?ne(e.document.content):null,href:e.href??null,imageMap:e.imagemap?He(e.imagemap):null,periods:e.periods?Y(Array.isArray(e.periods.period)?e.periods.period:[e.periods.period]):[],links:e.links?j(Array.isArray(e.links)?e.links:[e.links]):[],reverseLinks:e.reverseLinks?j(Array.isArray(e.reverseLinks)?e.reverseLinks:[e.reverseLinks]):[],properties:e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],citedBibliographies:e.citedBibliography?q(Array.isArray(e.citedBibliography.reference)?e.citedBibliography.reference:[e.citedBibliography.reference]):[],resources:e.resource?V(Array.isArray(e.resource)?e.resource:[e.resource]):[]}}function V(e){let r=[],n=Array.isArray(e)?e:[e];for(let t of n)r.push(Z(t));return r}function ee(e){return{uuid:e.uuid,category:"spatialUnit",publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,type:e.type,number:e.n,context:"context"in e&&e.context?U(e.context):null,license:"availability"in e&&e.availability?F(e.availability):null,identification:P(e.identification),image:e.image?me(e.image):null,description:e.description?["string","number","boolean"].includes(typeof e.description)?u(e.description):v(e.description):"",coordinates:e.coordinates?re(e.coordinates):e.coordinate?re(e.coordinate):null,observations:"observations"in e&&e.observations?Ue(Array.isArray(e.observations.observation)?e.observations.observation:[e.observations.observation]):e.observation?[ge(e.observation)]:[],events:"events"in e&&e.events?Ae(Array.isArray(e.events.event)?e.events.event:[e.events.event]):[],properties:"properties"in e&&e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}function we(e){let r=[],n=Array.isArray(e)?e:[e];for(let t of n)r.push(ee(t));return r}function te(e){return{uuid:e.uuid,category:"concept",publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,number:e.n,license:"availability"in e&&e.availability?F(e.availability):null,context:"context"in e&&e.context?U(e.context):null,identification:P(e.identification),interpretations:Ne(Array.isArray(e.interpretations.interpretation)?e.interpretations.interpretation:[e.interpretations.interpretation])}}var be=async(e,r)=>{let n=[];for(let t of e)if((t.properties?T(Array.isArray(t.properties.property)?t.properties.property:[t.properties.property]):[]).find(o=>o.label==="presentation"&&o.values[0].content===r))switch(r){case"element":{let o=await oe(t);n.push(o);break}case"page":{let o=await Me(t);o&&n.push(o);break}case"block":{let o=await Pe(t);o&&n.push(o);break}}return n};function Se(e){let r=[],n=Array.isArray(e)?e:[e];for(let t of n)r.push(te(t));return r}async function Xe(e,r){let n=De.parse(e.values[0].content),t={component:n},i=r.links?j(Array.isArray(r.links)?r.links:[r.links]):[],s=i.filter(a=>a.type==="image"||a.type==="IIIF"),o=r.document&&"content"in r.document?ne(r.document.content):null;if(o===null){let a=i.find(l=>l.type==="internalDocument");if(a){let{item:l,error:c}=await ue(a.uuid,"resource");if(c!==null)throw new Error("Failed to fetch OCHRE data");o=l.document}}switch(n){case"annotated-document":{if(!o)throw new Error(`Document not found for the following component: \u201C${n}\u201D`);t.document=o;break}case"annotated-image":{if(s.length===0)throw new Error(`Image link not found for the following component: \u201C${n}\u201D`);let a=d(e.properties,"is-searchable")==="Yes";t.imageUuid=s[0].uuid,t.isSearchable=a;break}case"bibliography":{let a=i.find(c=>c.category==="bibliography");if(!a)throw new Error(`Bibliography link not found for the following component: \u201C${n}\u201D`);if(!a.bibliographies)throw new Error(`Bibliography not found for the following component: \u201C${n}\u201D`);let l=d(e.properties,"layout");l??="long",t.bibliographies=a.bibliographies,t.layout=l;break}case"button":{let a=d(e.properties,"variant");a??="default";let l=!1,c=d(e.properties,"navigate-to");if(c===null){if(c=d(e.properties,"link-to"),c===null)throw new Error(`Properties \u201Cnavigate-to\u201D or \u201Clink-to\u201D not found for the following component: \u201C${n}\u201D`);l=!0}let b=null,g=d(e.properties,"icon");g!==null&&(b=g),t.variant=a,t.href=c,t.isExternal=l,t.label=["string","number","boolean"].includes(typeof r.identification.label)?u(r.identification.label):v(r.identification.label),t.icon=b;break}case"collection":{let a=i.find(D=>D.category==="set");if(!a)throw new Error(`Collection link not found for the following component: \u201C${n}\u201D`);let l=d(e.properties,"variant");l??="full";let c=d(e.properties,"item-variant");c??="default";let b=!1,g=d(e.properties,"show-count");g!==null&&(b=g==="Yes");let k=!1,y=d(e.properties,"is-searchable");y!==null&&(k=y==="Yes");let h=d(e.properties,"layout");h??="image-start",t.collectionId=a.uuid,t.variant=l,t.itemVariant=c,t.isSearchable=k,t.showCount=b,t.layout=h;break}case"empty-space":{let a=d(e.properties,"height"),l=d(e.properties,"width");t.height=a,t.width=l;break}case"entries":{let a=i.find(g=>g.category==="tree");if(!a)throw new Error(`Entries link not found for the following component: \u201C${n}\u201D`);let l=d(e.properties,"variant");l??="blog-page";let c=!1,b=d(e.properties,"is-searchable");b!==null&&(c=b==="Yes"),t.entriesId=a.uuid,t.variant=l,t.isSearchable=c;break}case"filter-categories":{let a=i.find(l=>l.category==="set");if(!a)throw new Error(`Filter link not found for the following component: \u201C${n}\u201D`);t.filterId=a.uuid;break}case"iframe":{let a=i.find(b=>b.type==="webpage")?.href;if(!a)throw new Error(`URL not found for the following component: \u201C${n}\u201D`);let l=d(e.properties,"height"),c=d(e.properties,"width");t.href=a,t.height=l,t.width=c;break}case"iiif-viewer":{let a=i.find(l=>l.type==="IIIF");if(!a)throw new Error(`Manifest link not found for the following component: \u201C${n}\u201D`);t.IIIFId=a.uuid;break}case"image":{if(s.length===0)throw new Error(`Image link not found for the following component: \u201C${n}\u201D`);let a=[];for(let $ of s)a.push({url:`https://ochre.lib.uchicago.edu/ochre?uuid=${$.uuid}&load`,label:$.identification?.label??null,width:$.image?.width??0,height:$.image?.height??0});let l=d(e.properties,"variant");l??="default";let c=d(e.properties,"layout-caption");c??="bottom";let b=null,g=d(e.properties,"width");g!==null&&(typeof g=="number"?b=g:typeof g=="string"&&(b=Number.parseFloat(g)));let k=null,y=d(e.properties,"height");y!==null&&(typeof y=="number"?k=y:typeof y=="string"&&(k=Number.parseFloat(y)));let h=!0,D=d(e.properties,"is-full-width");D!==null&&(h=D==="Yes");let I=!0,C=d(e.properties,"is-full-height");C!==null&&(I=C==="Yes");let f=d(e.properties,"image-quality");f??="high";let m=d(e.properties,"caption-source");m??="name";let w=d(e.properties,"alt-text-source");w??="name";let S=!1,p=d(e.properties,"is-transparent");p!==null&&(S=p==="Yes");let O=!1,E=d(e.properties,"is-cover");E!==null&&(O=E==="Yes");let N=null;if(a.length>1){let $=G(e.properties,"variant"),H=5;if($&&$.values[0].content==="carousel"){let B=d($.properties,"seconds-per-image");B!==null&&(typeof B=="number"?H=B:typeof B=="string"&&(H=Number.parseFloat(B)))}N={secondsPerImage:H}}t.images=a,t.variant=l,t.width=b,t.height=k,t.isFullWidth=h,t.isFullHeight=I,t.imageQuality=f,t.captionLayout=c,t.captionSource=m,t.altTextSource=w,t.isTransparentBackground=S,t.isCover=O,t.carouselOptions=N;break}case"image-gallery":{let a=i.find(c=>c.category==="tree"||c.category==="set");if(!a)throw new Error(`Image gallery link not found for the following component: \u201C${n}\u201D`);let l=d(e.properties,"is-searchable")==="Yes";t.galleryId=a.uuid,t.isSearchable=l;break}case"n-columns":{let a=r.resource?await be(Array.isArray(r.resource)?r.resource:[r.resource],"element"):[];t.columns=a;break}case"n-rows":{let a=r.resource?await be(Array.isArray(r.resource)?r.resource:[r.resource],"element"):[];t.rows=a;break}case"network-graph":break;case"table":{let a=i.find(l=>l.category==="set");if(!a)throw new Error(`Table link not found for the following component: \u201C${n}\u201D`);t.tableId=a.uuid;break}case"search-bar":{let a=d(e.properties,"variant");a??="default",t.variant=a;break}case"text":{if(!o)throw new Error(`Document not found for the following component: \u201C${n}\u201D`);let a=d(e.properties,"variant");a??="block";let l=d(e.properties,"heading");t.variant=a,t.heading=l,t.content=o.content;break}case"timeline":{let a=i.find(l=>l.category==="tree");if(!a)throw new Error(`Timeline link not found for the following component: \u201C${n}\u201D`);t.timelineId=a.uuid;break}case"video":{let a=i.find(c=>c.type==="video");if(!a)throw new Error(`Video link not found for the following component: \u201C${n}\u201D`);let l=d(e.properties,"chapters-displayed");l??="Yes",t.videoId=a.uuid,t.isChaptersDislayed=l==="Yes";break}default:{console.warn(`Invalid or non-implemented component name \u201C${n}\u201D for the following element: \u201C${v(r.identification.label)}\u201D`);break}}return t}async function oe(e){let r=P(e.identification),t=(e.properties?.property?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]).find(m=>m.label==="presentation");if(!t)throw new Error(`Presentation property not found for element \u201C${r.label}\u201D`);let i=t.properties.find(m=>m.label==="component");if(!i)throw new Error(`Component for element \u201C${r.label}\u201D not found`);let s=await Xe(i,e),a=t.properties.find(m=>m.label==="section-sidebar-displayed")?.values[0]?.booleanValue===!0,l=e.properties?.property?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],c=l.find(m=>m.label==="presentation"&&m.values[0].content==="css")?.properties??[],b=[];for(let m of c){let w=m.values[0].content;b.push({label:m.label,value:w})}let g=l.find(m=>m.label==="presentation"&&m.values[0].content==="css-mobile")?.properties??[],k=[];for(let m of g){let w=m.values[0].content;k.push({label:m.label,value:w})}let y=l.find(m=>m.label==="presentation"&&m.values[0].content==="title")?.properties,h="default",D=!1,I=!1,C=!1,f=!1;if(y){let m=d(y,"variant");m&&(h=m);let w=y.filter(S=>S.label==="display");w.length>0&&(D=w.some(S=>S.values[0].content==="name"),I=w.some(S=>S.values[0].content==="description"),C=w.some(S=>S.values[0].content==="date"),f=w.some(S=>S.values[0].content==="creators"))}return{uuid:e.uuid,type:"element",title:{label:r.label,variant:h,properties:{isNameDisplayed:D,isDescriptionDisplayed:I,isDateDisplayed:C,isCreatorsDisplayed:f}},isDisplayedInBlockSectionSidebar:a,cssStyles:b,cssStylesMobile:k,...s}}async function Me(e){let r=e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[];if(r.length===0||r.find(f=>f.label==="presentation")?.values[0]?.content!=="page")return null;let n=P(e.identification),t=e.slug;if(t===void 0)throw new Error(`Slug not found for page \u201C${n.label}\u201D`);let s=(e.links?j(Array.isArray(e.links)?e.links:[e.links]):[]).find(f=>f.type==="image"||f.type==="IIIF"),o=e.resource?Array.isArray(e.resource)?e.resource:[e.resource]:[],a=[];for(let f of o){let m=f.properties?T(Array.isArray(f.properties.property)?f.properties.property:[f.properties.property]):[],w=d(m,"presentation");if(w!=null)switch(w){case"element":{let S=await oe(f);a.push(S);break}case"block":{let S=await Pe(f);S&&a.push(S);break}}}let l=e.resource?await be(Array.isArray(e.resource)?e.resource:[e.resource],"page"):[],c=!0,b="default",g="default",k=!0,y=r.find(f=>f.label==="presentation"&&f.values[0]?.content==="page")?.properties;if(y){let f=y.find(p=>p.label==="header")?.values[0];f&&(c=f.content==="Yes");let m=y.find(p=>p.label==="width")?.values[0];m&&(b=m.content);let w=y.find(p=>p.label==="variant")?.values[0];w&&(g=w.content);let S=y.find(p=>p.label==="sidebar-visible")?.values[0];S&&(k=S.content==="Yes")}let h=r.find(f=>f.label==="presentation"&&f.values[0]?.content==="css")?.properties,D=[];if(h)for(let f of h)D.push({label:f.label,value:f.values[0].content});let I=r.find(f=>f.label==="presentation"&&f.values[0]?.content==="css-mobile")?.properties,C=[];if(I)for(let f of I)C.push({label:f.label,value:f.values[0].content});return{title:n.label,slug:t,items:a,properties:{displayedInHeader:c,width:b,variant:g,backgroundImageUrl:s?`https://ochre.lib.uchicago.edu/ochre?uuid=${s.uuid}&load`:null,isSidebarDisplayed:k,cssStyles:D,cssStylesMobile:C},webpages:l}}async function Ze(e){let r=[],n=Array.isArray(e)?e:[e];for(let t of n){let i=await Me(t);i&&r.push(i)}return r}async function Pe(e){let r={uuid:e.uuid,type:"block",layout:"vertical",items:[],properties:{spacing:void 0,gap:void 0,alignItems:"start",justifyContent:"stretch",sectionSidebarItems:null},propertiesMobile:null,cssStyles:[],cssStylesMobile:[]},n=e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],t=n.find(l=>l.label==="presentation"&&l.values[0]?.content==="block")?.properties;if(t){let l=t.find(h=>h.label==="layout")?.values[0];l&&(r.layout=l.content);let c=t.find(h=>h.label==="spacing")?.values[0];c&&(r.properties.spacing=c.content);let b=t.find(h=>h.label==="gap")?.values[0];b&&(r.properties.gap=b.content);let g=t.find(h=>h.label==="align-items")?.values[0];g&&(r.properties.alignItems=g.content);let k=t.find(h=>h.label==="justify-content")?.values[0];k&&(r.properties.justifyContent=k.content);let y=t.find(h=>h.label==="overwrite-mobile");if(y){let h=y.properties,D={};for(let I of h)D[I.label]=I.values[0].content;r.propertiesMobile=D}}let i=e.resource?Array.isArray(e.resource)?e.resource:[e.resource]:[],s=[];for(let l of i){let c=l.properties?T(Array.isArray(l.properties.property)?l.properties.property:[l.properties.property]):[],b=d(c,"presentation");if(b!=null)switch(b){case"element":{let g=await oe(l);s.push(g);break}case"block":{let g=await Pe(l);g&&s.push(g);break}}}r.items=s;let o=n.find(l=>l.label==="presentation"&&l.values[0]?.content==="css")?.properties;if(o)for(let l of o)r.cssStyles.push({label:l.label,value:l.values[0].content});let a=n.find(l=>l.label==="presentation"&&l.values[0]?.content==="css-mobile")?.properties;if(a)for(let l of a)r.cssStylesMobile.push({label:l.label,value:l.values[0].content});return r.properties.sectionSidebarItems=Ye(r),r}function Ye(e){let r=[];for(let n of e.items)switch(n.type){case"block":{let t=Ye(n);t!==null&&r.push({uuid:n.uuid,type:"block",name:null,items:t});break}case"element":{if(!n.isDisplayedInBlockSectionSidebar)continue;r.push({uuid:n.uuid,type:"element",name:n.title.label,items:null});break}}return r.length>0?r:null}function et(e){let n=T(e).find(A=>A.label==="presentation")?.properties;if(!n)throw new Error("Presentation property not found");let t=n.find(A=>A.label==="webUI")?.values[0]?.content;if(t==null)throw new Error("Website type not found");let i=n.find(A=>A.label==="status")?.values[0]?.content;if(i==null)throw new Error("Website status not found");let s=n.find(A=>A.label==="privacy")?.values[0]?.content;s??="public";let o=xe.safeParse({type:t,status:i,privacy:s});if(!o.success)throw new Error(`Invalid website properties: ${o.error.message}`);let a=null,l=n.find(A=>A.label==="contact");if(l){let[A,qe]=(l.values[0]?.content).split(";");a={name:A,email:qe??null}}let c=n.find(A=>A.label==="logo")?.values[0]?.uuid??null,b=!0,g="default",k="start",y=!0,h=!0,D=!1,I=null,C=!0,f=n.find(A=>A.label==="navbar-visible")?.values[0];f&&(b=f.content==="Yes");let m=n.find(A=>A.label==="navbar-variant")?.values[0];m&&(g=m.content);let w=n.find(A=>A.label==="navbar-alignment")?.values[0];w&&(k=w.content);let S=n.find(A=>A.label==="navbar-project-visible")?.values[0];S&&(y=S.content==="Yes");let p=n.find(A=>A.label==="footer-visible")?.values[0];p&&(h=p.content==="Yes");let O=n.find(A=>A.label==="sidebar-visible")?.values[0];O&&(D=O.content==="Yes");let E=n.find(A=>A.label==="search-collection")?.values[0];E&&(I=E.uuid);let N=n.find(A=>A.label==="supports-theme-toggle")?.values[0];N&&(C=N.content==="Yes");let{type:$,status:H,privacy:B}=o.data;return{type:$,privacy:B,status:H,contact:a,isHeaderDisplayed:b,headerVariant:g,headerAlignment:k,isHeaderProjectDisplayed:y,isFooterDisplayed:h,isSidebarDisplayed:D,supportsThemeToggle:C,searchCollectionUuid:I,logoUrl:c!==null?`https://ochre.lib.uchicago.edu/ochre?uuid=${c}&load`:null}}async function ke(e,r,n){if(!e.properties)throw new Error("Website properties not found");let t=et(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]);if(typeof e.items=="string"||!("resource"in e.items))throw new Error("Website pages not found");let i=Array.isArray(e.items.resource)?e.items.resource:[e.items.resource],s=await Ze(i),o=null,a=[],l={label:"",variant:"default",properties:{isNameDisplayed:!1,isDescriptionDisplayed:!1,isDateDisplayed:!1,isCreatorsDisplayed:!1}},c="start",b="default",g=[],k=[],y=i.find(h=>(h.properties?T(Array.isArray(h.properties.property)?h.properties.property:[h.properties.property]):[]).some(I=>I.label==="presentation"&&I.values[0]?.content==="element"&&I.properties[0]?.label==="component"&&I.properties[0].values[0]?.content==="sidebar"));if(y){l.label=typeof y.identification.label=="string"||typeof y.identification.label=="number"||typeof y.identification.label=="boolean"?u(y.identification.label):v(y.identification.label);let h=y.properties?T(Array.isArray(y.properties.property)?y.properties.property:[y.properties.property]):[],D=h.find(p=>p.label==="presentation"&&p.values[0]?.content==="element")?.properties.find(p=>p.label==="component"&&p.values[0]?.content==="sidebar")?.properties??[],I=D.find(p=>p.label==="layout");I&&(c=I.values[0].content);let C=D.find(p=>p.label==="layout-mobile");C&&(b=C.values[0].content);let f=h.find(p=>p.label==="presentation"&&p.values[0].content==="css")?.properties??[];for(let p of f){let O=p.values[0].content;g.push({label:p.label,value:O})}let m=h.find(p=>p.label==="presentation"&&p.values[0].content==="css-mobile")?.properties??[];for(let p of m){let O=p.values[0].content;k.push({label:p.label,value:O})}let w=h.find(p=>p.label==="presentation"&&p.values[0].content==="title")?.properties;if(w){let p=d(w,"variant");p&&(l.variant=p);let O=w.filter(E=>E.label==="display");O.length>0&&(l.properties.isNameDisplayed=O.some(E=>E.values[0].content==="name"),l.properties.isDescriptionDisplayed=O.some(E=>E.values[0].content==="description"),l.properties.isDateDisplayed=O.some(E=>E.values[0].content==="date"),l.properties.isCreatorsDisplayed=O.some(E=>E.values[0].content==="creators"))}let S=y.resource?Array.isArray(y.resource)?y.resource:[y.resource]:[];for(let p of S){let O=await oe(p);a.push(O)}}return a.length>0&&(o={elements:a,title:l,layout:c,mobileLayout:b,cssStyles:g,cssStylesMobile:k}),{uuid:e.uuid,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,identification:P(e.identification),project:{name:u(r),website:n!==null?u(n):null},creators:e.creators?L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],license:F(e.availability),pages:s,sidebar:o,properties:t}}async function tt(e,r,n,t){try{let{uuid:i,filter:s,page:o,perPage:a}=Oe.parse({uuid:e,filter:r,page:n,perPage:t}),l=await fetch(`https://ochre.lib.uchicago.edu/ochre?xquery=${encodeURIComponent(`
5
5
  for $q in input()/ochre[@uuid='${i}']
6
6
  let $filtered := $q//items/resource[contains(lower-case(identification/label), lower-case('${s}'))]
7
7
  let $maxLength := count($filtered)
@@ -10,4 +10,4 @@ ${JSON.stringify(e.content)}.`);return K(t)}}else return K(e.content);default:re
10
10
  {$q/metadata/item}
11
11
  {$filtered[position() >= ${((o-1)*a+1).toString()} and position() < ${(o*a+1).toString()}]}
12
12
  </gallery>
13
- `)}&format=json`);if(!l.ok)throw new Error("Error fetching gallery items, please try again later.");let c=await l.json();if(!("gallery"in c.result))throw new Error("Failed to fetch gallery");let b=P(c.result.gallery.item.identification),g=P(c.result.gallery.project.identification);return{item:{identification:b,projectIdentification:g,resources:V(c.result.gallery.resource?Array.isArray(c.result.gallery.resource)?c.result.gallery.resource:[c.result.gallery.resource]:[]),maxLength:c.result.gallery.maxLength},error:null}}catch(i){return console.error(i),{item:null,error:i instanceof Error?i.message:"Failed to fetch gallery"}}}async function rt(e){try{let r=await fetch(`https://ochre.lib.uchicago.edu/ochre?xquery=for $q in input()/ochre[tree[@type='lesson'][identification/abbreviation='${e.toLocaleLowerCase("en-US")}']] return $q&format=json`);if(!r.ok)throw new Error("Failed to fetch website");let n=await r.json();if(!("ochre"in n.result)||!("tree"in n.result.ochre))throw new Error("Failed to fetch website");let t=n.result.ochre.metadata.project?.identification?P(n.result.ochre.metadata.project.identification):null;return await Pe(n.result.ochre.tree,t?.label??"",n.result.ochre.metadata.project?.identification.website??null)}catch(r){return console.error(r),null}}0&&(module.exports={fetchByUuid,fetchGallery,fetchItem,fetchWebsite,filterProperties,getAllPropertyLabels,getPropertyByLabel,getPropertyValueByLabel,getPropertyValuesByLabel,parseBibliographies,parseBibliography,parseConcept,parseConcepts,parseContext,parseCoordinates,parseDocument,parseEmail,parseEvents,parseFakeString,parseIdentification,parseImage,parseImageMap,parseInterpretations,parseLanguages,parseLicense,parseLink,parseLinks,parseMetadata,parseNotes,parseObservation,parseObservations,parsePeriod,parsePeriods,parsePerson,parsePersons,parseProperties,parseProperty,parsePropertyValue,parsePropertyValues,parseResource,parseResources,parseSet,parseSpatialUnit,parseSpatialUnits,parseStringContent,parseStringDocumentItem,parseStringItem,parseTree,parseWebsite});
13
+ `)}&format=json`);if(!l.ok)throw new Error("Error fetching gallery items, please try again later.");let c=await l.json();if(!("gallery"in c.result))throw new Error("Failed to fetch gallery");let b=P(c.result.gallery.item.identification),g=P(c.result.gallery.project.identification);return{item:{identification:b,projectIdentification:g,resources:V(c.result.gallery.resource?Array.isArray(c.result.gallery.resource)?c.result.gallery.resource:[c.result.gallery.resource]:[]),maxLength:c.result.gallery.maxLength},error:null}}catch(i){return console.error(i),{item:null,error:i instanceof Error?i.message:"Failed to fetch gallery"}}}async function rt(e){try{let r=await fetch(`https://ochre.lib.uchicago.edu/ochre?xquery=for $q in input()/ochre[tree[@type='lesson'][identification/abbreviation='${e.toLocaleLowerCase("en-US")}']] return $q&format=json`);if(!r.ok)throw new Error("Failed to fetch website");let n=await r.json();if(!("ochre"in n.result)||!("tree"in n.result.ochre))throw new Error("Failed to fetch website");let t=n.result.ochre.metadata.project?.identification?P(n.result.ochre.metadata.project.identification):null;return await ke(n.result.ochre.tree,t?.label??"",n.result.ochre.metadata.project?.identification.website??null)}catch(r){return console.error(r),null}}0&&(module.exports={fetchByUuid,fetchGallery,fetchItem,fetchWebsite,filterProperties,getAllPropertyLabels,getPropertyByLabel,getPropertyValueByLabel,getPropertyValuesByLabel,parseBibliographies,parseBibliography,parseConcept,parseConcepts,parseContext,parseCoordinates,parseDocument,parseEmail,parseEvents,parseFakeString,parseIdentification,parseImage,parseImageMap,parseInterpretations,parseLanguages,parseLicense,parseLink,parseLinks,parseMetadata,parseNotes,parseObservation,parseObservations,parsePeriod,parsePeriods,parsePerson,parsePersons,parseProperties,parseProperty,parsePropertyValue,parsePropertyValues,parseResource,parseResources,parseSet,parseSpatialUnit,parseSpatialUnits,parseStringContent,parseStringDocumentItem,parseStringItem,parseTree,parseWebsite});
package/dist/index.d.cts CHANGED
@@ -81,9 +81,20 @@ type Person = {
81
81
  category: "person";
82
82
  publicationDateTime: Date | null;
83
83
  type: string | null;
84
+ number: number | null;
85
+ context: Context | null;
86
+ availability: License | null;
84
87
  date: Date | null;
85
88
  identification: Identification | null;
89
+ address: {
90
+ country: string | null;
91
+ city: string | null;
92
+ state: string | null;
93
+ } | null;
94
+ coordinates: Coordinates | null;
86
95
  content: string | null;
96
+ events: Array<Event>;
97
+ properties: Array<Property>;
87
98
  };
88
99
  /**
89
100
  * Represents a note with number, title and content
@@ -331,7 +342,7 @@ type Period = {
331
342
  type PropertyValue = {
332
343
  uuid: string;
333
344
  category: "propertyValue";
334
- n: number;
345
+ number: number;
335
346
  publicationDateTime: Date | null;
336
347
  context: Context | null;
337
348
  availability: License | null;
@@ -349,6 +360,7 @@ type PropertyValueContentType = "string" | "integer" | "decimal" | "boolean" | "
349
360
  type PropertyValueContent = {
350
361
  content: string | number | boolean | Date | null;
351
362
  booleanValue: boolean | null;
363
+ isUncertain: boolean;
352
364
  type: PropertyValueContentType;
353
365
  category: string;
354
366
  uuid: string | null;
@@ -972,6 +984,7 @@ type OchrePropertyValueContent = {
972
984
  slug?: FakeString;
973
985
  unit?: string;
974
986
  booleanValue?: boolean;
987
+ isUncertain?: boolean;
975
988
  content?: FakeString | OchreStringItem | Array<OchreStringItem>;
976
989
  };
977
990
 
@@ -1216,7 +1229,18 @@ type OchrePerson = {
1216
1229
  type?: string;
1217
1230
  date?: string; // YYYY-MM-DD
1218
1231
  identification?: OchreIdentification;
1232
+ n?: number;
1233
+ context?: OchreContext;
1234
+ availability?: OchreLicense;
1235
+ address?: {
1236
+ country?: string;
1237
+ city?: string;
1238
+ state?: string;
1239
+ };
1240
+ coordinates?: OchreCoordinates;
1219
1241
  content?: FakeString | null;
1242
+ events?: { event: OchreEvent | Array<OchreEvent> };
1243
+ properties?: { property: OchreProperty | Array<OchreProperty> };
1220
1244
  };
1221
1245
 
1222
1246
  /**
@@ -1237,6 +1261,7 @@ type OchreObservation = {
1237
1261
  type OchreCoordinates = {
1238
1262
  latitude: number;
1239
1263
  longitude: number;
1264
+ elevation?: number;
1240
1265
  coordinatesArray?: string;
1241
1266
  coord?: {
1242
1267
  coordLatitude: number;
@@ -1257,6 +1282,7 @@ type OchreEvent = {
1257
1282
  uuid: string;
1258
1283
  content: FakeString;
1259
1284
  };
1285
+ comment?: FakeString;
1260
1286
  label: OchreStringContent;
1261
1287
  };
1262
1288
 
package/dist/index.d.ts CHANGED
@@ -81,9 +81,20 @@ type Person = {
81
81
  category: "person";
82
82
  publicationDateTime: Date | null;
83
83
  type: string | null;
84
+ number: number | null;
85
+ context: Context | null;
86
+ availability: License | null;
84
87
  date: Date | null;
85
88
  identification: Identification | null;
89
+ address: {
90
+ country: string | null;
91
+ city: string | null;
92
+ state: string | null;
93
+ } | null;
94
+ coordinates: Coordinates | null;
86
95
  content: string | null;
96
+ events: Array<Event>;
97
+ properties: Array<Property>;
87
98
  };
88
99
  /**
89
100
  * Represents a note with number, title and content
@@ -331,7 +342,7 @@ type Period = {
331
342
  type PropertyValue = {
332
343
  uuid: string;
333
344
  category: "propertyValue";
334
- n: number;
345
+ number: number;
335
346
  publicationDateTime: Date | null;
336
347
  context: Context | null;
337
348
  availability: License | null;
@@ -349,6 +360,7 @@ type PropertyValueContentType = "string" | "integer" | "decimal" | "boolean" | "
349
360
  type PropertyValueContent = {
350
361
  content: string | number | boolean | Date | null;
351
362
  booleanValue: boolean | null;
363
+ isUncertain: boolean;
352
364
  type: PropertyValueContentType;
353
365
  category: string;
354
366
  uuid: string | null;
@@ -972,6 +984,7 @@ type OchrePropertyValueContent = {
972
984
  slug?: FakeString;
973
985
  unit?: string;
974
986
  booleanValue?: boolean;
987
+ isUncertain?: boolean;
975
988
  content?: FakeString | OchreStringItem | Array<OchreStringItem>;
976
989
  };
977
990
 
@@ -1216,7 +1229,18 @@ type OchrePerson = {
1216
1229
  type?: string;
1217
1230
  date?: string; // YYYY-MM-DD
1218
1231
  identification?: OchreIdentification;
1232
+ n?: number;
1233
+ context?: OchreContext;
1234
+ availability?: OchreLicense;
1235
+ address?: {
1236
+ country?: string;
1237
+ city?: string;
1238
+ state?: string;
1239
+ };
1240
+ coordinates?: OchreCoordinates;
1219
1241
  content?: FakeString | null;
1242
+ events?: { event: OchreEvent | Array<OchreEvent> };
1243
+ properties?: { property: OchreProperty | Array<OchreProperty> };
1220
1244
  };
1221
1245
 
1222
1246
  /**
@@ -1237,6 +1261,7 @@ type OchreObservation = {
1237
1261
  type OchreCoordinates = {
1238
1262
  latitude: number;
1239
1263
  longitude: number;
1264
+ elevation?: number;
1240
1265
  coordinatesArray?: string;
1241
1266
  coord?: {
1242
1267
  coordLatitude: number;
@@ -1257,6 +1282,7 @@ type OchreEvent = {
1257
1282
  uuid: string;
1258
1283
  content: FakeString;
1259
1284
  };
1285
+ comment?: FakeString;
1260
1286
  label: OchreStringContent;
1261
1287
  };
1262
1288
 
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- import{z as D}from"zod";var pe=D.string().uuid({message:"Invalid UUID provided"}),ue=D.object({type:D.enum(["traditional","digital-collection","plum","cedar","elm","maple","oak","palm"],{message:"Invalid website type"}),status:D.enum(["development","preview","production"],{message:"Invalid website status"}),privacy:D.enum(["public","password","private"],{message:"Invalid website privacy"})}),de=D.enum(["annotated-document","annotated-image","bibliography","button","collection","empty-space","entries","filter-categories","iframe","iiif-viewer","image","image-gallery","n-columns","n-rows","network-graph","search-bar","table","text","timeline","video"],{message:"Invalid component"}),J=D.enum(["resource","spatialUnit","concept","period","bibliography","person","propertyValue","set","tree"]),fe=D.enum(["string","integer","decimal","boolean","date","dateTime","time","coordinate","IDREF"]),ye=D.object({uuid:D.string().uuid({message:"Invalid UUID"}),filter:D.string().optional(),page:D.number().positive({message:"Page must be positive"}),perPage:D.number().positive({message:"Per page must be positive"})}).strict(),he=D.string().transform(e=>e.split(" ")).pipe(D.array(D.enum(["bold","italic","underline"]))),be=D.string().transform(e=>e.split(" ")).pipe(D.array(D.enum(["newline","trailing","leading"]))),me=D.string().email({message:"Invalid email"});var N={searchNestedProperties:!1};function _(e,r,n=N){let{searchNestedProperties:t}=n,i=e.find(s=>s.label===r);if(i)return i;if(t){for(let s of e)if(s.properties.length>0){let o=_(s.properties,r,{searchNestedProperties:t});if(o)return o}}return null}function ge(e,r,n=N){let{searchNestedProperties:t}=n,i=e.find(s=>s.label===r);if(i)return i.values.map(s=>s.content);if(t){for(let s of e)if(s.properties.length>0){let o=ge(s.properties,r,{searchNestedProperties:t});if(o)return o}}return null}function f(e,r,n=N){let{searchNestedProperties:t}=n,i=ge(e,r,{searchNestedProperties:t});if(i!==null&&i.length>0)return i[0];if(t){for(let s of e)if(s.properties.length>0){let o=f(s.properties,r,{searchNestedProperties:t});if(o!==null)return o}}return null}function Fe(e,r=N){let{searchNestedProperties:n}=r,t=new Set;for(let i of e)if(t.add(i.label),i.properties.length>0&&n){let s=Fe(i.properties,{searchNestedProperties:!0});for(let o of s)t.add(o)}return[...t]}function Be(e,r,n=N){let{searchNestedProperties:t}=n;if(r.label.toLocaleLowerCase("en-US")==="all fields"||e.label.toLocaleLowerCase("en-US")===r.label.toLocaleLowerCase("en-US")){let s=e.values.some(o=>o.content===null?!1:typeof o.content=="string"?typeof r.value!="string"?!1:o.content.toLocaleLowerCase("en-US").includes(r.value.toLocaleLowerCase("en-US")):typeof o.content=="number"?typeof r.value!="number"?!1:o.content===r.value:typeof o.content=="boolean"?typeof r.value!="boolean"?!1:o.booleanValue===r.value:o.content instanceof Date&&r.value instanceof Date?o.content.getTime()===r.value.getTime():!1);return!s&&t&&(s=e.properties.some(o=>Be(o,r,{searchNestedProperties:!0}))),s}return!1}function je(e,r){return e.find(t=>t.lang===r)??null}function W(e){let r=e.split(" "),n=[];for(let t of r){let i=t.replaceAll(/(?<=\s|^)[([{]+|[)\]}]+(?=\s|$)/g,"").replace(/[!),.:;?\]]$/,""),s=t.indexOf(i),o=t.slice(0,s),a=t.slice(s+i.length);if(me.safeParse(i).success){n.push(o,`${o}<ExternalLink href="mailto:${i}">${i}</ExternalLink>${a}`);continue}n.push(t)}return n.join(" ")}function Ae(e,r){let n=e,t=he.safeParse(r);if(!t.success)return console.warn(`Invalid render options string provided: \u201C${r}\u201D`),e;for(let i of t.data)switch(i){case"bold":{n=`**${n}**`;break}case"italic":{n=`*${n}*`;break}case"underline":{n=`_${n}_`;break}}return n.replaceAll("&#39;","'")}function Q(e,r){let n=e,t=be.safeParse(r);if(!t.success)return console.warn(`Invalid whitespace string provided: \u201C${r}\u201D`),e;for(let i of t.data)switch(i){case"newline":{n=`<br />
2
- ${n}`;break}case"trailing":{n=`${n} `;break}case"leading":{n=` ${n}`;break}}return n.replaceAll("&#39;","'")}function u(e){let r="";return typeof e=="string"?r=e:typeof e=="number"?r=e.toString():typeof e=="boolean"&&(r=e?"Yes":"No"),r.replaceAll("&#39;","'").replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}function z(e){let r="";switch(typeof e.string){case"string":{r=e.string;break}case"number":case"boolean":{r=u(e.string);break}case"object":{let n=Array.isArray(e.string)?e.string:[e.string];for(let t of n)if(typeof t=="string"||typeof t=="number"||typeof t=="boolean")r+=u(t);else{let i=t.rend!=null?Ae(u(t.content),t.rend):u(t.content),s=t.whitespace!=null?Q(i,t.whitespace):i;r+=s}break}default:{r="";break}}return r.replaceAll("&#39;","'").replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}function R(e,r){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return W(u(e));if("whitespace"in e&&!("content"in e)&&!("string"in e))return e.whitespace==="newline"?`
3
- `:"";if("links"in e){let t="";typeof e.string=="object"?t=S(e.string):t=u(e.string).replaceAll("<",String.raw`\<`).replaceAll("{",String.raw`\{`);let i=Array.isArray(e.links)?e.links:[e.links];for(let s of i)if("resource"in s){let o=Array.isArray(s.resource)?s.resource[0]:s.resource,a=null;switch(o.content!=null&&(a=u(o.content).replaceAll("<",String.raw`\<`).replaceAll("{",String.raw`\{`)),o.type){case"image":return o.rend==="inline"?`<InlineImage uuid="${o.uuid}" ${a!==null?`content="${a}"`:""} height={${o.height?.toString()??"null"}} width={${o.width?.toString()??"null"}} />`:o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="image"${a!==null?` content="${a}"`:""}>${t}</ExternalLink>`:`<TooltipSpan type="image" ${a!==null?`content="${a}"`:""}>${t}</TooltipSpan>`;case"internalDocument":return a?.toLocaleLowerCase("en-US").includes("footnote")?(r&&r.push({uuid:o.uuid,label:t,content:""}),` <Footnote uuid="${o.uuid}"${t?` label="${t}"`:""}${a!==null?` content="${a}"`:""} />`):`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="internalDocument" ${a!==null?`content="${a}"`:""}>${t}</ExternalLink>`;case"externalDocument":return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="externalDocument" ${a!==null?`content="${a}"`:""}>${t}</ExternalLink>`:`<TooltipSpan type="externalDocument" ${a!==null?`content="${a}"`:""}>${t}</TooltipSpan>`;case"webpage":return`<ExternalLink href="${o.href}" type="webpage" ${a!==null?`content="${a}"`:""}>${t}</ExternalLink>`;default:return""}}else if("concept"in s){let o=Array.isArray(s.concept)?s.concept[0]:s.concept;return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="concept">${t}</ExternalLink>`:`<TooltipSpan type="concept">${t}</TooltipSpan>`}else if("set"in s){let o=Array.isArray(s.set)?s.set[0]:s.set;return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="set">${t}</ExternalLink>`:`<TooltipSpan type="set">${t}</TooltipSpan>`}else if("person"in s){let o=Array.isArray(s.person)?s.person[0]:s.person,a=o.identification?["string","number","boolean"].includes(typeof o.identification.label)?u(o.identification.label):S(o.identification.label):null;return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="${o.type??"person"}" ${a!==null?`content="${a}"`:""}>${t}</ExternalLink>`:`<TooltipSpan type="${o.type??"person"}" ${a!==null?`content="${a}"`:""}>${t}</TooltipSpan>`}else if("bibliography"in s){let o=Array.isArray(s.bibliography)?s.bibliography[0]:s.bibliography;return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="${o.type??"bibliography"}">${t}</ExternalLink>`:`<TooltipSpan type="bibliography">${t}</TooltipSpan>`}}let n="";if("string"in e){let t=Array.isArray(e.string)?e.string:[e.string];for(let i of t)n+=R(i,r);return"whitespace"in e&&e.whitespace!=null&&(n=Q(W(n),e.whitespace)),n.replaceAll("&#39;","'").replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}else n=u(e.content),e.rend!=null&&(n=Ae(W(n),e.rend)),e.whitespace!=null&&(n=Q(W(n),e.whitespace));return n.replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}function S(e,r="eng"){switch(typeof e.content){case"string":case"number":case"boolean":return u(e.content);case"object":if(Array.isArray(e.content)){let n=je(e.content,r);if(n)return z(n);{let t=e.content[0];if(!t)throw new Error(`No string item found for language \u201C${r}\u201D in the following content:
4
- ${JSON.stringify(e.content)}.`);return z(t)}}else return z(e.content);default:return String(e.content).replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}}function Y(e){let r=e.find(t=>J.safeParse(t).success);if(!r){let t=e.find(i=>!["uuid","uuidBelongsTo","belongsTo","publicationDateTime","metadata","languages"].includes(i));throw new Error(`Invalid OCHRE data; found unexpected "${t}" key`)}return J.parse(r)}async function ve(e){try{let r=pe.parse(e),n=await fetch(`https://ochre.lib.uchicago.edu/ochre?uuid=${r}&format=json&lang="*"`);if(!n.ok)throw new Error("Failed to fetch OCHRE data");let t=await n.json();if(!("ochre"in t))throw new Error("Invalid OCHRE data: API response missing 'ochre' key");return[null,t]}catch(r){return[r instanceof Error?r.message:"Unknown error",null]}}async function we(e,r,n){try{let[t,i]=await ve(e);if(t!==null)throw new Error(t);let s=Y(Object.keys(i.ochre)),o;switch(s){case"resource":{if(!("resource"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'resource' key");o=re(i.ochre.resource);break}case"spatialUnit":{if(!("spatialUnit"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'spatialUnit' key");o=ne(i.ochre.spatialUnit);break}case"concept":{if(!("concept"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'concept' key");o=ie(i.ochre.concept);break}case"period":{if(!("period"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'period' key");o=Z(i.ochre.period);break}case"bibliography":{if(!("bibliography"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'bibliography' key");o=ee(i.ochre.bibliography);break}case"person":{if(!("person"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'person' key");o=X(i.ochre.person);break}case"propertyValue":{if(!("propertyValue"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'propertyValue' key");o=te(i.ochre.propertyValue);break}case"set":{if(!("set"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'set' key");o=ke(i.ochre.set,n);break}case"tree":{if(!("tree"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'tree' key");o=Pe(i.ochre.tree);break}default:throw new Error("Invalid category")}let a=Se(i.ochre.metadata),l={uuid:i.ochre.uuidBelongsTo,abbreviation:u(i.ochre.belongsTo)};return{error:null,metadata:a,belongsTo:l,item:o,category:r}}catch(t){return{error:t instanceof Error?t.message:"Unknown error",metadata:void 0,belongsTo:void 0,item:void 0,category:void 0}}}function P(e){try{let r={label:["string","number","boolean"].includes(typeof e.label)?u(e.label):S(e.label),abbreviation:""};for(let n of Object.keys(e).filter(t=>t!=="label"))r[n]=S(e[n]);return r}catch(r){return console.error(r),{label:"",abbreviation:""}}}function Ue(e){return e==null?["eng"]:Array.isArray(e)?e.map(r=>S(r)):[S(e)]}function Se(e){let r={label:"",abbreviation:""};if(e.item)if(e.item.label||e.item.abbreviation){let i="",s="";e.item.label&&(i=S(e.item.label)),e.item.abbreviation&&(s=S(e.item.abbreviation)),r={label:i,abbreviation:s}}else r=P(e.item.identification);let n=null,t=e.project?.identification?P(e.project.identification):null;return t&&(n={...t,website:e.project?.identification.website??null}),{project:n?{identification:n}:null,item:e.item?{identification:r,category:e.item.category,type:e.item.type,maxLength:e.item.maxLength??null}:null,dataset:S(e.dataset),publisher:S(e.publisher),languages:Ue(e.language),identifier:S(e.identifier),description:S(e.description)}}function oe(e){return{uuid:e.uuid,publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,number:e.n,content:u(e.content)}}function H(e){return{nodes:(Array.isArray(e.context)?e.context:[e.context]).map(t=>{let i=[];if("spatialUnit"in t&&t.spatialUnit){let s=Array.isArray(t.spatialUnit)?t.spatialUnit:[t.spatialUnit];for(let o of s)i.push(oe(o))}return{tree:oe(t.tree),project:oe(t.project),spatialUnit:i}}),displayPath:e.displayPath}}function B(e){return typeof e.license=="string"?null:{content:e.license.content,url:e.license.target}}function X(e){return{uuid:e.uuid,category:"person",publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,type:e.type??null,date:e.date!=null?new Date(e.date):null,identification:e.identification?P(e.identification):null,content:e.content!=null?u(e.content):null}}function L(e){let r=[];for(let n of e)r.push(X(n));return r}function Ve(e){let r="resource"in e?e.resource:"spatialUnit"in e?e.spatialUnit:"concept"in e?e.concept:"set"in e?e.set:"tree"in e?e.tree:"person"in e?e.person:"bibliography"in e?e.bibliography:"epigraphicUnit"in e?e.epigraphicUnit:"propertyValue"in e?e.propertyValue:null;if(!r)throw new Error(`Invalid link provided: ${JSON.stringify(e,null,2)}`);let n=Array.isArray(r)?r:[r],t=[];for(let i of n){let s={category:"resource"in e?"resource":"spatialUnit"in e?"spatialUnit":"concept"in e?"concept":"set"in e?"set":"person"in e?"person":"tree"in e?"tree":"bibliography"in e?"bibliography":"epigraphicUnit"in e?"epigraphicUnit":"propertyValue"in e?"propertyValue":null,content:"content"in i&&i.content!=null?u(i.content):null,href:"href"in i&&i.href!=null?i.href:null,uuid:i.uuid,type:i.type??null,identification:i.identification?P(i.identification):null,image:null,bibliographies:"bibliography"in e?G(Array.isArray(e.bibliography)?e.bibliography:[e.bibliography]):null,publicationDateTime:i.publicationDateTime!=null?new Date(i.publicationDateTime):null};"height"in i&&i.height!=null&&i.width!=null&&i.heightPreview!=null&&i.widthPreview!=null&&(s.image={isInline:i.rend==="inline",isPrimary:i.isPrimary??!1,heightPreview:i.heightPreview,widthPreview:i.widthPreview,height:i.height,width:i.width}),t.push(s)}return t}function j(e){let r=[];for(let n of e)r.push(...Ve(n));return r}function se(e,r="eng"){let n="",t=[],i=Array.isArray(e)?e.find(s=>s.lang===r):e;if(typeof i.string=="string"||typeof i.string=="number"||typeof i.string=="boolean")n+=W(u(i.string));else{let s=Array.isArray(i.string)?i.string:[i.string];for(let o of s)n+=R(o,t)}return{content:n,footnotes:t}}function xe(e){return{publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,identification:e.identification?P(e.identification):null,url:e.href??(e.htmlImgSrcPrefix==null&&e.content!=null?u(e.content):null),htmlPrefix:e.htmlImgSrcPrefix??null,content:e.htmlImgSrcPrefix!=null&&e.content!=null?u(e.content):null,widthPreview:e.widthPreview??null,heightPreview:e.heightPreview??null,width:e.width??null,height:e.height??null}}function le(e,r="eng"){let n=[];for(let t of e){if(typeof t=="string"){if(t==="")continue;n.push({number:-1,title:null,content:t});continue}let i="",s=Array.isArray(t.content)?t.content:[t.content],o=s.find(a=>a.lang===r);if(!o&&(o=s[0],!o))throw new Error(`Note does not have a valid content item: ${JSON.stringify(t,null,2)}`);typeof o.string=="string"||typeof o.string=="number"||typeof o.string=="boolean"?i=W(u(o.string)):i=W(se(o).content),n.push({number:t.noteNo,title:o.title!=null?u(o.title):null,content:i})}return n}function Ie(e){if(typeof e=="string"){let[r,n]=e.split(", ");return{latitude:Number(r),longitude:Number(n),type:null,label:null}}return{latitude:e.latitude,longitude:e.longitude,type:e.coord?.coordType??null,label:e.coord?.coordLabel!=null?u(e.coord.coordLabel):null}}function De(e){return{number:e.observationNo,date:e.date!=null?new Date(e.date):null,observers:e.observers!=null?u(e.observers).split(";").map(r=>r.trim()):[],notes:e.notes?le(Array.isArray(e.notes.note)?e.notes.note:[e.notes.note]):[],links:e.links?j(Array.isArray(e.links)?e.links:[e.links]):[],properties:e.properties?O(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}function Ne(e){let r=[];for(let n of e)r.push(De(n));return r}function He(e){let r=[];for(let n of e)r.push({date:n.dateTime!=null?new Date(n.dateTime):null,label:S(n.label),agent:n.agent?{uuid:n.agent.uuid,content:u(n.agent.content)}:null});return r}function Me(e,r="eng"){let t=("value"in e&&e.value?Array.isArray(e.value)?e.value:[e.value]:[]).map(i=>{let s=null,o=null;if(typeof i=="string"||typeof i=="number"||typeof i=="boolean")return s=u(i),{content:s,booleanValue:o,type:"string",category:"value",uuid:null,publicationDateTime:null,unit:null};{switch(i.type){case"integer":case"decimal":{s=Number(i.content);break}case"dateTime":{s=i.content?typeof i.content=="string"?new Date(i.content):new Date(S({content:i.content})):null;break}default:{"slug"in i&&i.slug!=null?s=u(i.slug):i.content!=null&&(s=S({content:i.content})),i.type==="boolean"&&(o=i.booleanValue??null);break}}let a="string";if(i.type!=null){let{data:c,error:b}=fe.safeParse(i.type);if(b)throw new Error(`Invalid property value content type: "${i.type}"`);a=c}return{content:s,booleanValue:o,type:a,category:i.category??"value",uuid:i.uuid??null,publicationDateTime:i.publicationDateTime!=null?new Date(i.publicationDateTime):null,unit:i.unit??null}}});return{label:S(e.label,r).replace(/\s*\.{3}$/,"").trim(),values:t,comment:e.comment!=null?u(e.comment):null,properties:e.property?O(Array.isArray(e.property)?e.property:[e.property]):[]}}function O(e,r="eng"){let n=[];for(let t of e)n.push(Me(t,r));return n}function Ye(e){let r=[];for(let n of e)r.push({date:new Date(n.date),number:n.interpretationNo,properties:n.properties?O(Array.isArray(n.properties.property)?n.properties.property:[n.properties.property]):[]});return r}function qe(e){let r={area:[],width:e.width,height:e.height},n=Array.isArray(e.area)?e.area:[e.area];for(let t of n)r.area.push({uuid:t.uuid,publicationDateTime:t.publicationDateTime!=null?new Date(t.publicationDateTime):null,type:t.type,title:u(t.title),shape:t.shape==="rect"?"rectangle":"polygon",coords:t.coords.split(",").map(i=>Number.parseInt(i))});return r}function Z(e){return{uuid:e.uuid,category:"period",publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,type:e.type??null,number:e.n??null,identification:P(e.identification),description:e.description?S(e.description):null}}function q(e){let r=[];for(let n of e)r.push(Z(n));return r}function ee(e){let r=null;return e.source?.resource&&(r={uuid:e.source.resource.uuid,publicationDateTime:e.source.resource.publicationDateTime?new Date(e.source.resource.publicationDateTime):null,type:e.source.resource.type,identification:P(e.source.resource.identification)}),{uuid:e.uuid,category:"bibliography",publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,type:e.type??null,number:e.n??null,identification:e.identification?P(e.identification):null,projectIdentification:e.project?.identification?P(e.project.identification):null,context:e.context?H(e.context):null,citation:{format:e.citationFormat??null,short:e.citationFormatSpan?u("default:span"in e.citationFormatSpan?e.citationFormatSpan["default:span"].content:e.citationFormatSpan.span.content):null,long:e.referenceFormatDiv?u("default:div"in e.referenceFormatDiv?e.referenceFormatDiv["default:div"]["default:div"].content:e.referenceFormatDiv.div.div.content):null},publicationInfo:{publishers:e.publicationInfo?.publishers?L(Array.isArray(e.publicationInfo.publishers.publishers.person)?e.publicationInfo.publishers.publishers.person:[e.publicationInfo.publishers.publishers.person]):[],startDate:e.publicationInfo?.startDate?new Date(e.publicationInfo.startDate.year,e.publicationInfo.startDate.month,e.publicationInfo.startDate.day):null},entryInfo:e.entryInfo?{startIssue:u(e.entryInfo.startIssue),startVolume:u(e.entryInfo.startVolume)}:null,source:{resource:r,documentUrl:e.sourceDocument?`https://ochre.lib.uchicago.edu/ochre?uuid=${e.sourceDocument.uuid}&load`:null},periods:e.periods?q(Array.isArray(e.periods.period)?e.periods.period:[e.periods.period]):[],authors:e.authors?L(Array.isArray(e.authors.person)?e.authors.person:[e.authors.person]):[],properties:e.properties?O(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}function G(e){let r=[];for(let n of e)r.push(ee(n));return r}function te(e){return{uuid:e.uuid,category:"propertyValue",n:e.n,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,context:e.context?H(e.context):null,availability:e.availability?B(e.availability):null,identification:P(e.identification),date:e.date?new Date(e.date):null,creators:e.creators?L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],description:e.description?["string","number","boolean"].includes(typeof e.description)?u(e.description):S(e.description):"",notes:e.notes?le(Array.isArray(e.notes.note)?e.notes.note:[e.notes.note]):[],links:e.links?j(Array.isArray(e.links)?e.links:[e.links]):[]}}function Te(e){let r=[];for(let n of e)r.push(te(n));return r}function Pe(e){let r=[];e.creators&&(r=L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]));let n=null;e.date!=null&&(n=new Date(e.date));let t=[],i=[],s=[],o=[],a=[],l=[],c=[];return typeof e.items!="string"&&"resource"in e.items&&(t=M(Array.isArray(e.items.resource)?e.items.resource:[e.items.resource])),typeof e.items!="string"&&"spatialUnit"in e.items&&(i=Oe(Array.isArray(e.items.spatialUnit)?e.items.spatialUnit:[e.items.spatialUnit])),typeof e.items!="string"&&"concept"in e.items&&(s=Ee(Array.isArray(e.items.concept)?e.items.concept:[e.items.concept])),typeof e.items!="string"&&"period"in e.items&&(o=q(Array.isArray(e.items.period)?e.items.period:[e.items.period])),typeof e.items!="string"&&"bibliography"in e.items&&(a=G(Array.isArray(e.items.bibliography)?e.items.bibliography:[e.items.bibliography])),typeof e.items!="string"&&"person"in e.items&&(l=L(Array.isArray(e.items.person)?e.items.person:[e.items.person])),typeof e.items!="string"&&"propertyValue"in e.items&&(c=Te(Array.isArray(e.items.propertyValue)?e.items.propertyValue:[e.items.propertyValue])),{uuid:e.uuid,category:"tree",publicationDateTime:new Date(e.publicationDateTime),identification:P(e.identification),creators:r,license:B(e.availability),date:n,type:e.type,number:e.n,items:{resources:t,spatialUnits:i,concepts:s,periods:o,bibliographies:a,persons:l,propertyValues:c},properties:e.properties?O(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}function ke(e,r){if(typeof e.items=="string")throw new TypeError("Invalid OCHRE data: Set has no items");let n=r??Y(Object.keys(e.items)),t=[];switch(n){case"resource":{if(!("resource"in e.items))throw new Error("Invalid OCHRE data: Set has no resources");t=M(Array.isArray(e.items.resource)?e.items.resource:[e.items.resource]);break}case"spatialUnit":{if(!("spatialUnit"in e.items))throw new Error("Invalid OCHRE data: Set has no spatial units");t=Oe(Array.isArray(e.items.spatialUnit)?e.items.spatialUnit:[e.items.spatialUnit]);break}case"concept":{if(!("concept"in e.items))throw new Error("Invalid OCHRE data: Set has no concepts");t=Ee(Array.isArray(e.items.concept)?e.items.concept:[e.items.concept]);break}case"period":{if(!("period"in e.items))throw new Error("Invalid OCHRE data: Set has no periods");t=q(Array.isArray(e.items.period)?e.items.period:[e.items.period]);break}case"bibliography":{if(!("bibliography"in e.items))throw new Error("Invalid OCHRE data: Set has no bibliographies");t=G(Array.isArray(e.items.bibliography)?e.items.bibliography:[e.items.bibliography]);break}case"person":{if(!("person"in e.items))throw new Error("Invalid OCHRE data: Set has no persons");t=L(Array.isArray(e.items.person)?e.items.person:[e.items.person]);break}case"propertyValue":{if(!("propertyValue"in e.items))throw new Error("Invalid OCHRE data: Set has no property values");t=Te(Array.isArray(e.items.propertyValue)?e.items.propertyValue:[e.items.propertyValue]);break}default:throw new Error("Invalid OCHRE data: Set has no items or is malformed")}return{uuid:e.uuid,category:"set",itemCategory:r,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,date:e.date!=null?new Date(e.date):null,license:B(e.availability),identification:P(e.identification),isSuppressingBlanks:e.suppressBlanks??!1,description:e.description?["string","number","boolean"].includes(typeof e.description)?u(e.description):S(e.description):"",creators:e.creators?L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],type:e.type,number:e.n,items:t}}function re(e){return{uuid:e.uuid,category:"resource",publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,type:e.type,number:e.n,format:e.format??null,context:"context"in e&&e.context?H(e.context):null,license:"availability"in e&&e.availability?B(e.availability):null,copyright:"copyright"in e&&e.copyright!=null?u(e.copyright):null,identification:P(e.identification),date:e.date!=null?new Date(e.date):null,image:e.image?xe(e.image):null,creators:e.creators?L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],notes:e.notes?le(Array.isArray(e.notes.note)?e.notes.note:[e.notes.note]):[],description:e.description?["string","number","boolean"].includes(typeof e.description)?u(e.description):S(e.description):"",document:e.document&&"content"in e.document?se(e.document.content):null,href:e.href??null,imageMap:e.imagemap?qe(e.imagemap):null,periods:e.periods?q(Array.isArray(e.periods.period)?e.periods.period:[e.periods.period]):[],links:e.links?j(Array.isArray(e.links)?e.links:[e.links]):[],reverseLinks:e.reverseLinks?j(Array.isArray(e.reverseLinks)?e.reverseLinks:[e.reverseLinks]):[],properties:e.properties?O(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],citedBibliographies:e.citedBibliography?G(Array.isArray(e.citedBibliography.reference)?e.citedBibliography.reference:[e.citedBibliography.reference]):[],resources:e.resource?M(Array.isArray(e.resource)?e.resource:[e.resource]):[]}}function M(e){let r=[],n=Array.isArray(e)?e:[e];for(let t of n)r.push(re(t));return r}function ne(e){return{uuid:e.uuid,category:"spatialUnit",publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,type:e.type,number:e.n,context:"context"in e&&e.context?H(e.context):null,license:"availability"in e&&e.availability?B(e.availability):null,identification:P(e.identification),image:e.image?xe(e.image):null,description:e.description?["string","number","boolean"].includes(typeof e.description)?u(e.description):S(e.description):"",coordinates:e.coordinates?Ie(e.coordinates):e.coordinate?Ie(e.coordinate):null,observations:"observations"in e&&e.observations?Ne(Array.isArray(e.observations.observation)?e.observations.observation:[e.observations.observation]):e.observation?[De(e.observation)]:[],events:"events"in e&&e.events?He(Array.isArray(e.events.event)?e.events.event:[e.events.event]):[],properties:"properties"in e&&e.properties?O(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}function Oe(e){let r=[],n=Array.isArray(e)?e:[e];for(let t of n)r.push(ne(t));return r}function ie(e){return{uuid:e.uuid,category:"concept",publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,number:e.n,license:"availability"in e&&e.availability?B(e.availability):null,context:"context"in e&&e.context?H(e.context):null,identification:P(e.identification),interpretations:Ye(Array.isArray(e.interpretations.interpretation)?e.interpretations.interpretation:[e.interpretations.interpretation])}}var ae=async(e,r)=>{let n=[];for(let t of e)if((t.properties?O(Array.isArray(t.properties.property)?t.properties.property:[t.properties.property]):[]).find(o=>o.label==="presentation"&&o.values[0].content===r))switch(r){case"element":{let o=await K(t);n.push(o);break}case"page":{let o=await Ce(t);o&&n.push(o);break}case"block":{let o=await ce(t);o&&n.push(o);break}}return n};function Ee(e){let r=[],n=Array.isArray(e)?e:[e];for(let t of n)r.push(ie(t));return r}async function Ge(e,r){let n=de.parse(e.values[0].content),t={component:n},i=r.links?j(Array.isArray(r.links)?r.links:[r.links]):[],s=i.filter(a=>a.type==="image"||a.type==="IIIF"),o=r.document&&"content"in r.document?se(r.document.content):null;if(o===null){let a=i.find(l=>l.type==="internalDocument");if(a){let{item:l,error:c}=await we(a.uuid,"resource");if(c!==null)throw new Error("Failed to fetch OCHRE data");o=l.document}}switch(n){case"annotated-document":{if(!o)throw new Error(`Document not found for the following component: \u201C${n}\u201D`);t.document=o;break}case"annotated-image":{if(s.length===0)throw new Error(`Image link not found for the following component: \u201C${n}\u201D`);let a=f(e.properties,"is-searchable")==="Yes";t.imageUuid=s[0].uuid,t.isSearchable=a;break}case"bibliography":{let a=i.find(c=>c.category==="bibliography");if(!a)throw new Error(`Bibliography link not found for the following component: \u201C${n}\u201D`);if(!a.bibliographies)throw new Error(`Bibliography not found for the following component: \u201C${n}\u201D`);let l=f(e.properties,"layout");l??="long",t.bibliographies=a.bibliographies,t.layout=l;break}case"button":{let a=f(e.properties,"variant");a??="default";let l=!1,c=f(e.properties,"navigate-to");if(c===null){if(c=f(e.properties,"link-to"),c===null)throw new Error(`Properties \u201Cnavigate-to\u201D or \u201Clink-to\u201D not found for the following component: \u201C${n}\u201D`);l=!0}let b=null,g=f(e.properties,"icon");g!==null&&(b=g),t.variant=a,t.href=c,t.isExternal=l,t.label=["string","number","boolean"].includes(typeof r.identification.label)?u(r.identification.label):S(r.identification.label),t.icon=b;break}case"collection":{let a=i.find(x=>x.category==="set");if(!a)throw new Error(`Collection link not found for the following component: \u201C${n}\u201D`);let l=f(e.properties,"variant");l??="full";let c=f(e.properties,"item-variant");c??="default";let b=!1,g=f(e.properties,"show-count");g!==null&&(b=g==="Yes");let k=!1,y=f(e.properties,"is-searchable");y!==null&&(k=y==="Yes");let h=f(e.properties,"layout");h??="image-start",t.collectionId=a.uuid,t.variant=l,t.itemVariant=c,t.isSearchable=k,t.showCount=b,t.layout=h;break}case"empty-space":{let a=f(e.properties,"height"),l=f(e.properties,"width");t.height=a,t.width=l;break}case"entries":{let a=i.find(g=>g.category==="tree");if(!a)throw new Error(`Entries link not found for the following component: \u201C${n}\u201D`);let l=f(e.properties,"variant");l??="blog-page";let c=!1,b=f(e.properties,"is-searchable");b!==null&&(c=b==="Yes"),t.entriesId=a.uuid,t.variant=l,t.isSearchable=c;break}case"filter-categories":{let a=i.find(l=>l.category==="set");if(!a)throw new Error(`Filter link not found for the following component: \u201C${n}\u201D`);t.filterId=a.uuid;break}case"iframe":{let a=i.find(b=>b.type==="webpage")?.href;if(!a)throw new Error(`URL not found for the following component: \u201C${n}\u201D`);let l=f(e.properties,"height"),c=f(e.properties,"width");t.href=a,t.height=l,t.width=c;break}case"iiif-viewer":{let a=i.find(l=>l.type==="IIIF");if(!a)throw new Error(`Manifest link not found for the following component: \u201C${n}\u201D`);t.IIIFId=a.uuid;break}case"image":{if(s.length===0)throw new Error(`Image link not found for the following component: \u201C${n}\u201D`);let a=[];for(let $ of s)a.push({url:`https://ochre.lib.uchicago.edu/ochre?uuid=${$.uuid}&load`,label:$.identification?.label??null,width:$.image?.width??0,height:$.image?.height??0});let l=f(e.properties,"variant");l??="default";let c=f(e.properties,"layout-caption");c??="bottom";let b=null,g=f(e.properties,"width");g!==null&&(typeof g=="number"?b=g:typeof g=="string"&&(b=Number.parseFloat(g)));let k=null,y=f(e.properties,"height");y!==null&&(typeof y=="number"?k=y:typeof y=="string"&&(k=Number.parseFloat(y)));let h=!0,x=f(e.properties,"is-full-width");x!==null&&(h=x==="Yes");let I=!0,C=f(e.properties,"is-full-height");C!==null&&(I=C==="Yes");let d=f(e.properties,"image-quality");d??="high";let m=f(e.properties,"caption-source");m??="name";let v=f(e.properties,"alt-text-source");v??="name";let w=!1,p=f(e.properties,"is-transparent");p!==null&&(w=p==="Yes");let T=!1,E=f(e.properties,"is-cover");E!==null&&(T=E==="Yes");let U=null;if(a.length>1){let $=_(e.properties,"variant"),V=5;if($&&$.values[0].content==="carousel"){let F=f($.properties,"seconds-per-image");F!==null&&(typeof F=="number"?V=F:typeof F=="string"&&(V=Number.parseFloat(F)))}U={secondsPerImage:V}}t.images=a,t.variant=l,t.width=b,t.height=k,t.isFullWidth=h,t.isFullHeight=I,t.imageQuality=d,t.captionLayout=c,t.captionSource=m,t.altTextSource=v,t.isTransparentBackground=w,t.isCover=T,t.carouselOptions=U;break}case"image-gallery":{let a=i.find(c=>c.category==="tree"||c.category==="set");if(!a)throw new Error(`Image gallery link not found for the following component: \u201C${n}\u201D`);let l=f(e.properties,"is-searchable")==="Yes";t.galleryId=a.uuid,t.isSearchable=l;break}case"n-columns":{let a=r.resource?await ae(Array.isArray(r.resource)?r.resource:[r.resource],"element"):[];t.columns=a;break}case"n-rows":{let a=r.resource?await ae(Array.isArray(r.resource)?r.resource:[r.resource],"element"):[];t.rows=a;break}case"network-graph":break;case"table":{let a=i.find(l=>l.category==="set");if(!a)throw new Error(`Table link not found for the following component: \u201C${n}\u201D`);t.tableId=a.uuid;break}case"search-bar":{let a=f(e.properties,"variant");a??="default",t.variant=a;break}case"text":{if(!o)throw new Error(`Document not found for the following component: \u201C${n}\u201D`);let a=f(e.properties,"variant");a??="block";let l=f(e.properties,"heading");t.variant=a,t.heading=l,t.content=o.content;break}case"timeline":{let a=i.find(l=>l.category==="tree");if(!a)throw new Error(`Timeline link not found for the following component: \u201C${n}\u201D`);t.timelineId=a.uuid;break}case"video":{let a=i.find(c=>c.type==="video");if(!a)throw new Error(`Video link not found for the following component: \u201C${n}\u201D`);let l=f(e.properties,"chapters-displayed");l??="Yes",t.videoId=a.uuid,t.isChaptersDislayed=l==="Yes";break}default:{console.warn(`Invalid or non-implemented component name \u201C${n}\u201D for the following element: \u201C${S(r.identification.label)}\u201D`);break}}return t}async function K(e){let r=P(e.identification),t=(e.properties?.property?O(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]).find(m=>m.label==="presentation");if(!t)throw new Error(`Presentation property not found for element \u201C${r.label}\u201D`);let i=t.properties.find(m=>m.label==="component");if(!i)throw new Error(`Component for element \u201C${r.label}\u201D not found`);let s=await Ge(i,e),a=t.properties.find(m=>m.label==="section-sidebar-displayed")?.values[0]?.booleanValue===!0,l=e.properties?.property?O(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],c=l.find(m=>m.label==="presentation"&&m.values[0].content==="css")?.properties??[],b=[];for(let m of c){let v=m.values[0].content;b.push({label:m.label,value:v})}let g=l.find(m=>m.label==="presentation"&&m.values[0].content==="css-mobile")?.properties??[],k=[];for(let m of g){let v=m.values[0].content;k.push({label:m.label,value:v})}let y=l.find(m=>m.label==="presentation"&&m.values[0].content==="title")?.properties,h="default",x=!1,I=!1,C=!1,d=!1;if(y){let m=f(y,"variant");m&&(h=m);let v=y.filter(w=>w.label==="display");v.length>0&&(x=v.some(w=>w.values[0].content==="name"),I=v.some(w=>w.values[0].content==="description"),C=v.some(w=>w.values[0].content==="date"),d=v.some(w=>w.values[0].content==="creators"))}return{uuid:e.uuid,type:"element",title:{label:r.label,variant:h,properties:{isNameDisplayed:x,isDescriptionDisplayed:I,isDateDisplayed:C,isCreatorsDisplayed:d}},isDisplayedInBlockSectionSidebar:a,cssStyles:b,cssStylesMobile:k,...s}}async function Ce(e){let r=e.properties?O(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[];if(r.length===0||r.find(d=>d.label==="presentation")?.values[0]?.content!=="page")return null;let n=P(e.identification),t=e.slug;if(t===void 0)throw new Error(`Slug not found for page \u201C${n.label}\u201D`);let s=(e.links?j(Array.isArray(e.links)?e.links:[e.links]):[]).find(d=>d.type==="image"||d.type==="IIIF"),o=e.resource?Array.isArray(e.resource)?e.resource:[e.resource]:[],a=[];for(let d of o){let m=d.properties?O(Array.isArray(d.properties.property)?d.properties.property:[d.properties.property]):[],v=f(m,"presentation");if(v!=null)switch(v){case"element":{let w=await K(d);a.push(w);break}case"block":{let w=await ce(d);w&&a.push(w);break}}}let l=e.resource?await ae(Array.isArray(e.resource)?e.resource:[e.resource],"page"):[],c=!0,b="default",g="default",k=!0,y=r.find(d=>d.label==="presentation"&&d.values[0]?.content==="page")?.properties;if(y){let d=y.find(p=>p.label==="header")?.values[0];d&&(c=d.content==="Yes");let m=y.find(p=>p.label==="width")?.values[0];m&&(b=m.content);let v=y.find(p=>p.label==="variant")?.values[0];v&&(g=v.content);let w=y.find(p=>p.label==="sidebar-visible")?.values[0];w&&(k=w.content==="Yes")}let h=r.find(d=>d.label==="presentation"&&d.values[0]?.content==="css")?.properties,x=[];if(h)for(let d of h)x.push({label:d.label,value:d.values[0].content});let I=r.find(d=>d.label==="presentation"&&d.values[0]?.content==="css-mobile")?.properties,C=[];if(I)for(let d of I)C.push({label:d.label,value:d.values[0].content});return{title:n.label,slug:t,items:a,properties:{displayedInHeader:c,width:b,variant:g,backgroundImageUrl:s?`https://ochre.lib.uchicago.edu/ochre?uuid=${s.uuid}&load`:null,isSidebarDisplayed:k,cssStyles:x,cssStylesMobile:C},webpages:l}}async function Ke(e){let r=[],n=Array.isArray(e)?e:[e];for(let t of n){let i=await Ce(t);i&&r.push(i)}return r}async function ce(e){let r={uuid:e.uuid,type:"block",layout:"vertical",items:[],properties:{spacing:void 0,gap:void 0,alignItems:"start",justifyContent:"stretch",sectionSidebarItems:null},propertiesMobile:null,cssStyles:[],cssStylesMobile:[]},n=e.properties?O(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],t=n.find(l=>l.label==="presentation"&&l.values[0]?.content==="block")?.properties;if(t){let l=t.find(h=>h.label==="layout")?.values[0];l&&(r.layout=l.content);let c=t.find(h=>h.label==="spacing")?.values[0];c&&(r.properties.spacing=c.content);let b=t.find(h=>h.label==="gap")?.values[0];b&&(r.properties.gap=b.content);let g=t.find(h=>h.label==="align-items")?.values[0];g&&(r.properties.alignItems=g.content);let k=t.find(h=>h.label==="justify-content")?.values[0];k&&(r.properties.justifyContent=k.content);let y=t.find(h=>h.label==="overwrite-mobile");if(y){let h=y.properties,x={};for(let I of h)x[I.label]=I.values[0].content;r.propertiesMobile=x}}let i=e.resource?Array.isArray(e.resource)?e.resource:[e.resource]:[],s=[];for(let l of i){let c=l.properties?O(Array.isArray(l.properties.property)?l.properties.property:[l.properties.property]):[],b=f(c,"presentation");if(b!=null)switch(b){case"element":{let g=await K(l);s.push(g);break}case"block":{let g=await ce(l);g&&s.push(g);break}}}r.items=s;let o=n.find(l=>l.label==="presentation"&&l.values[0]?.content==="css")?.properties;if(o)for(let l of o)r.cssStyles.push({label:l.label,value:l.values[0].content});let a=n.find(l=>l.label==="presentation"&&l.values[0]?.content==="css-mobile")?.properties;if(a)for(let l of a)r.cssStylesMobile.push({label:l.label,value:l.values[0].content});return r.properties.sectionSidebarItems=$e(r),r}function $e(e){let r=[];for(let n of e.items)switch(n.type){case"block":{let t=$e(n);t!==null&&r.push({uuid:n.uuid,type:"block",name:null,items:t});break}case"element":{if(!n.isDisplayedInBlockSectionSidebar)continue;r.push({uuid:n.uuid,type:"element",name:n.title.label,items:null});break}}return r.length>0?r:null}function Je(e){let n=O(e).find(A=>A.label==="presentation")?.properties;if(!n)throw new Error("Presentation property not found");let t=n.find(A=>A.label==="webUI")?.values[0]?.content;if(t==null)throw new Error("Website type not found");let i=n.find(A=>A.label==="status")?.values[0]?.content;if(i==null)throw new Error("Website status not found");let s=n.find(A=>A.label==="privacy")?.values[0]?.content;s??="public";let o=ue.safeParse({type:t,status:i,privacy:s});if(!o.success)throw new Error(`Invalid website properties: ${o.error.message}`);let a=null,l=n.find(A=>A.label==="contact");if(l){let[A,We]=(l.values[0]?.content).split(";");a={name:A,email:We??null}}let c=n.find(A=>A.label==="logo")?.values[0]?.uuid??null,b=!0,g="default",k="start",y=!0,h=!0,x=!1,I=null,C=!0,d=n.find(A=>A.label==="navbar-visible")?.values[0];d&&(b=d.content==="Yes");let m=n.find(A=>A.label==="navbar-variant")?.values[0];m&&(g=m.content);let v=n.find(A=>A.label==="navbar-alignment")?.values[0];v&&(k=v.content);let w=n.find(A=>A.label==="navbar-project-visible")?.values[0];w&&(y=w.content==="Yes");let p=n.find(A=>A.label==="footer-visible")?.values[0];p&&(h=p.content==="Yes");let T=n.find(A=>A.label==="sidebar-visible")?.values[0];T&&(x=T.content==="Yes");let E=n.find(A=>A.label==="search-collection")?.values[0];E&&(I=E.uuid);let U=n.find(A=>A.label==="supports-theme-toggle")?.values[0];U&&(C=U.content==="Yes");let{type:$,status:V,privacy:F}=o.data;return{type:$,privacy:F,status:V,contact:a,isHeaderDisplayed:b,headerVariant:g,headerAlignment:k,isHeaderProjectDisplayed:y,isFooterDisplayed:h,isSidebarDisplayed:x,supportsThemeToggle:C,searchCollectionUuid:I,logoUrl:c!==null?`https://ochre.lib.uchicago.edu/ochre?uuid=${c}&load`:null}}async function Le(e,r,n){if(!e.properties)throw new Error("Website properties not found");let t=Je(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]);if(typeof e.items=="string"||!("resource"in e.items))throw new Error("Website pages not found");let i=Array.isArray(e.items.resource)?e.items.resource:[e.items.resource],s=await Ke(i),o=null,a=[],l={label:"",variant:"default",properties:{isNameDisplayed:!1,isDescriptionDisplayed:!1,isDateDisplayed:!1,isCreatorsDisplayed:!1}},c="start",b="default",g=[],k=[],y=i.find(h=>(h.properties?O(Array.isArray(h.properties.property)?h.properties.property:[h.properties.property]):[]).some(I=>I.label==="presentation"&&I.values[0]?.content==="element"&&I.properties[0]?.label==="component"&&I.properties[0].values[0]?.content==="sidebar"));if(y){l.label=typeof y.identification.label=="string"||typeof y.identification.label=="number"||typeof y.identification.label=="boolean"?u(y.identification.label):S(y.identification.label);let h=y.properties?O(Array.isArray(y.properties.property)?y.properties.property:[y.properties.property]):[],x=h.find(p=>p.label==="presentation"&&p.values[0]?.content==="element")?.properties.find(p=>p.label==="component"&&p.values[0]?.content==="sidebar")?.properties??[],I=x.find(p=>p.label==="layout");I&&(c=I.values[0].content);let C=x.find(p=>p.label==="layout-mobile");C&&(b=C.values[0].content);let d=h.find(p=>p.label==="presentation"&&p.values[0].content==="css")?.properties??[];for(let p of d){let T=p.values[0].content;g.push({label:p.label,value:T})}let m=h.find(p=>p.label==="presentation"&&p.values[0].content==="css-mobile")?.properties??[];for(let p of m){let T=p.values[0].content;k.push({label:p.label,value:T})}let v=h.find(p=>p.label==="presentation"&&p.values[0].content==="title")?.properties;if(v){let p=f(v,"variant");p&&(l.variant=p);let T=v.filter(E=>E.label==="display");T.length>0&&(l.properties.isNameDisplayed=T.some(E=>E.values[0].content==="name"),l.properties.isDescriptionDisplayed=T.some(E=>E.values[0].content==="description"),l.properties.isDateDisplayed=T.some(E=>E.values[0].content==="date"),l.properties.isCreatorsDisplayed=T.some(E=>E.values[0].content==="creators"))}let w=y.resource?Array.isArray(y.resource)?y.resource:[y.resource]:[];for(let p of w){let T=await K(p);a.push(T)}}return a.length>0&&(o={elements:a,title:l,layout:c,mobileLayout:b,cssStyles:g,cssStylesMobile:k}),{uuid:e.uuid,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,identification:P(e.identification),project:{name:u(r),website:n!==null?u(n):null},creators:e.creators?L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],license:B(e.availability),pages:s,sidebar:o,properties:t}}async function bt(e,r,n,t){try{let{uuid:i,filter:s,page:o,perPage:a}=ye.parse({uuid:e,filter:r,page:n,perPage:t}),l=await fetch(`https://ochre.lib.uchicago.edu/ochre?xquery=${encodeURIComponent(`
1
+ import{z as D}from"zod";var ue=D.string().uuid({message:"Invalid UUID provided"}),de=D.object({type:D.enum(["traditional","digital-collection","plum","cedar","elm","maple","oak","palm"],{message:"Invalid website type"}),status:D.enum(["development","preview","production"],{message:"Invalid website status"}),privacy:D.enum(["public","password","private"],{message:"Invalid website privacy"})}),fe=D.enum(["annotated-document","annotated-image","bibliography","button","collection","empty-space","entries","filter-categories","iframe","iiif-viewer","image","image-gallery","n-columns","n-rows","network-graph","search-bar","table","text","timeline","video"],{message:"Invalid component"}),J=D.enum(["resource","spatialUnit","concept","period","bibliography","person","propertyValue","set","tree"]),ye=D.enum(["string","integer","decimal","boolean","date","dateTime","time","coordinate","IDREF"]),he=D.object({uuid:D.string().uuid({message:"Invalid UUID"}),filter:D.string().optional(),page:D.number().positive({message:"Page must be positive"}),perPage:D.number().positive({message:"Per page must be positive"})}).strict(),be=D.string().transform(e=>e.split(" ")).pipe(D.array(D.enum(["bold","italic","underline"]))),me=D.string().transform(e=>e.split(" ")).pipe(D.array(D.enum(["newline","trailing","leading"]))),ge=D.string().email({message:"Invalid email"});var H={searchNestedProperties:!1};function _(e,r,n=H){let{searchNestedProperties:t}=n,i=e.find(s=>s.label===r);if(i)return i;if(t){for(let s of e)if(s.properties.length>0){let o=_(s.properties,r,{searchNestedProperties:t});if(o)return o}}return null}function Ae(e,r,n=H){let{searchNestedProperties:t}=n,i=e.find(s=>s.label===r);if(i)return i.values.map(s=>s.content);if(t){for(let s of e)if(s.properties.length>0){let o=Ae(s.properties,r,{searchNestedProperties:t});if(o)return o}}return null}function f(e,r,n=H){let{searchNestedProperties:t}=n,i=Ae(e,r,{searchNestedProperties:t});if(i!==null&&i.length>0)return i[0];if(t){for(let s of e)if(s.properties.length>0){let o=f(s.properties,r,{searchNestedProperties:t});if(o!==null)return o}}return null}function Be(e,r=H){let{searchNestedProperties:n}=r,t=new Set;for(let i of e)if(t.add(i.label),i.properties.length>0&&n){let s=Be(i.properties,{searchNestedProperties:!0});for(let o of s)t.add(o)}return[...t]}function je(e,r,n=H){let{searchNestedProperties:t}=n;if(r.label.toLocaleLowerCase("en-US")==="all fields"||e.label.toLocaleLowerCase("en-US")===r.label.toLocaleLowerCase("en-US")){let s=e.values.some(o=>o.content===null?!1:typeof o.content=="string"?typeof r.value!="string"?!1:o.content.toLocaleLowerCase("en-US").includes(r.value.toLocaleLowerCase("en-US")):typeof o.content=="number"?typeof r.value!="number"?!1:o.content===r.value:typeof o.content=="boolean"?typeof r.value!="boolean"?!1:o.booleanValue===r.value:o.content instanceof Date&&r.value instanceof Date?o.content.getTime()===r.value.getTime():!1);return!s&&t&&(s=e.properties.some(o=>je(o,r,{searchNestedProperties:!0}))),s}return!1}function Ue(e,r){return e.find(t=>t.lang===r)??null}function W(e){let r=e.split(" "),n=[];for(let t of r){let i=t.replaceAll(/(?<=\s|^)[([{]+|[)\]}]+(?=\s|$)/g,"").replace(/[!),.:;?\]]$/,""),s=t.indexOf(i),o=t.slice(0,s),a=t.slice(s+i.length);if(ge.safeParse(i).success){n.push(o,`${o}<ExternalLink href="mailto:${i}">${i}</ExternalLink>${a}`);continue}n.push(t)}return n.join(" ")}function ve(e,r){let n=e,t=be.safeParse(r);if(!t.success)return console.warn(`Invalid render options string provided: \u201C${r}\u201D`),e;for(let i of t.data)switch(i){case"bold":{n=`**${n}**`;break}case"italic":{n=`*${n}*`;break}case"underline":{n=`_${n}_`;break}}return n.replaceAll("&#39;","'")}function Q(e,r){let n=e,t=me.safeParse(r);if(!t.success)return console.warn(`Invalid whitespace string provided: \u201C${r}\u201D`),e;for(let i of t.data)switch(i){case"newline":{n=`<br />
2
+ ${n}`;break}case"trailing":{n=`${n} `;break}case"leading":{n=` ${n}`;break}}return n.replaceAll("&#39;","'")}function u(e){let r="";return typeof e=="string"?r=e:typeof e=="number"?r=e.toString():typeof e=="boolean"&&(r=e?"Yes":"No"),r.replaceAll("&#39;","'").replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}function z(e){let r="";switch(typeof e.string){case"string":{r=e.string;break}case"number":case"boolean":{r=u(e.string);break}case"object":{let n=Array.isArray(e.string)?e.string:[e.string];for(let t of n)if(typeof t=="string"||typeof t=="number"||typeof t=="boolean")r+=u(t);else{let i=t.rend!=null?ve(u(t.content),t.rend):u(t.content),s=t.whitespace!=null?Q(i,t.whitespace):i;r+=s}break}default:{r="";break}}return r.replaceAll("&#39;","'").replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}function R(e,r){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return W(u(e));if("whitespace"in e&&!("content"in e)&&!("string"in e))return e.whitespace==="newline"?`
3
+ `:"";if("links"in e){let t="";typeof e.string=="object"?t=S(e.string):t=u(e.string).replaceAll("<",String.raw`\<`).replaceAll("{",String.raw`\{`);let i=Array.isArray(e.links)?e.links:[e.links];for(let s of i)if("resource"in s){let o=Array.isArray(s.resource)?s.resource[0]:s.resource,a=null;switch(o.content!=null&&(a=u(o.content).replaceAll("<",String.raw`\<`).replaceAll("{",String.raw`\{`)),o.type){case"image":return o.rend==="inline"?`<InlineImage uuid="${o.uuid}" ${a!==null?`content="${a}"`:""} height={${o.height?.toString()??"null"}} width={${o.width?.toString()??"null"}} />`:o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="image"${a!==null?` content="${a}"`:""}>${t}</ExternalLink>`:`<TooltipSpan type="image" ${a!==null?`content="${a}"`:""}>${t}</TooltipSpan>`;case"internalDocument":return a?.toLocaleLowerCase("en-US").includes("footnote")?(r&&r.push({uuid:o.uuid,label:t,content:""}),` <Footnote uuid="${o.uuid}"${t?` label="${t}"`:""}${a!==null?` content="${a}"`:""} />`):`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="internalDocument" ${a!==null?`content="${a}"`:""}>${t}</ExternalLink>`;case"externalDocument":return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="externalDocument" ${a!==null?`content="${a}"`:""}>${t}</ExternalLink>`:`<TooltipSpan type="externalDocument" ${a!==null?`content="${a}"`:""}>${t}</TooltipSpan>`;case"webpage":return`<ExternalLink href="${o.href}" type="webpage" ${a!==null?`content="${a}"`:""}>${t}</ExternalLink>`;default:return""}}else if("concept"in s){let o=Array.isArray(s.concept)?s.concept[0]:s.concept;return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="concept">${t}</ExternalLink>`:`<TooltipSpan type="concept">${t}</TooltipSpan>`}else if("set"in s){let o=Array.isArray(s.set)?s.set[0]:s.set;return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="set">${t}</ExternalLink>`:`<TooltipSpan type="set">${t}</TooltipSpan>`}else if("person"in s){let o=Array.isArray(s.person)?s.person[0]:s.person,a=o.identification?["string","number","boolean"].includes(typeof o.identification.label)?u(o.identification.label):S(o.identification.label):null;return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="${o.type??"person"}" ${a!==null?`content="${a}"`:""}>${t}</ExternalLink>`:`<TooltipSpan type="${o.type??"person"}" ${a!==null?`content="${a}"`:""}>${t}</TooltipSpan>`}else if("bibliography"in s){let o=Array.isArray(s.bibliography)?s.bibliography[0]:s.bibliography;return o.publicationDateTime!=null?`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${o.uuid}" type="${o.type??"bibliography"}">${t}</ExternalLink>`:`<TooltipSpan type="bibliography">${t}</TooltipSpan>`}}let n="";if("string"in e){let t=Array.isArray(e.string)?e.string:[e.string];for(let i of t)n+=R(i,r);return"whitespace"in e&&e.whitespace!=null&&(n=Q(W(n),e.whitespace)),n.replaceAll("&#39;","'").replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}else n=u(e.content),e.rend!=null&&(n=ve(W(n),e.rend)),e.whitespace!=null&&(n=Q(W(n),e.whitespace));return n.replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}function S(e,r="eng"){switch(typeof e.content){case"string":case"number":case"boolean":return u(e.content);case"object":if(Array.isArray(e.content)){let n=Ue(e.content,r);if(n)return z(n);{let t=e.content[0];if(!t)throw new Error(`No string item found for language \u201C${r}\u201D in the following content:
4
+ ${JSON.stringify(e.content)}.`);return z(t)}}else return z(e.content);default:return String(e.content).replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}}function Y(e){let r=e.find(t=>J.safeParse(t).success);if(!r){let t=e.find(i=>!["uuid","uuidBelongsTo","belongsTo","publicationDateTime","metadata","languages"].includes(i));throw new Error(`Invalid OCHRE data; found unexpected "${t}" key`)}return J.parse(r)}async function we(e){try{let r=ue.parse(e),n=await fetch(`https://ochre.lib.uchicago.edu/ochre?uuid=${r}&format=json&lang="*"`);if(!n.ok)throw new Error("Failed to fetch OCHRE data");let t=await n.json();if(!("ochre"in t))throw new Error("Invalid OCHRE data: API response missing 'ochre' key");return[null,t]}catch(r){return[r instanceof Error?r.message:"Unknown error",null]}}async function Se(e,r,n){try{let[t,i]=await we(e);if(t!==null)throw new Error(t);let s=Y(Object.keys(i.ochre)),o;switch(s){case"resource":{if(!("resource"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'resource' key");o=re(i.ochre.resource);break}case"spatialUnit":{if(!("spatialUnit"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'spatialUnit' key");o=ne(i.ochre.spatialUnit);break}case"concept":{if(!("concept"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'concept' key");o=ie(i.ochre.concept);break}case"period":{if(!("period"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'period' key");o=Z(i.ochre.period);break}case"bibliography":{if(!("bibliography"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'bibliography' key");o=ee(i.ochre.bibliography);break}case"person":{if(!("person"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'person' key");o=X(i.ochre.person);break}case"propertyValue":{if(!("propertyValue"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'propertyValue' key");o=te(i.ochre.propertyValue);break}case"set":{if(!("set"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'set' key");o=Ie(i.ochre.set,n);break}case"tree":{if(!("tree"in i.ochre))throw new Error("Invalid OCHRE data: API response missing 'tree' key");o=ke(i.ochre.tree);break}default:throw new Error("Invalid category")}let a=Pe(i.ochre.metadata),l={uuid:i.ochre.uuidBelongsTo,abbreviation:u(i.ochre.belongsTo)};return{error:null,metadata:a,belongsTo:l,item:o,category:r}}catch(t){return{error:t instanceof Error?t.message:"Unknown error",metadata:void 0,belongsTo:void 0,item:void 0,category:void 0}}}function P(e){try{let r={label:["string","number","boolean"].includes(typeof e.label)?u(e.label):S(e.label),abbreviation:""};for(let n of Object.keys(e).filter(t=>t!=="label"))r[n]=S(e[n]);return r}catch(r){return console.error(r),{label:"",abbreviation:""}}}function Ve(e){return e==null?["eng"]:Array.isArray(e)?e.map(r=>S(r)):[S(e)]}function Pe(e){let r={label:"",abbreviation:""};if(e.item)if(e.item.label||e.item.abbreviation){let i="",s="";e.item.label&&(i=S(e.item.label)),e.item.abbreviation&&(s=S(e.item.abbreviation)),r={label:i,abbreviation:s}}else r=P(e.item.identification);let n=null,t=e.project?.identification?P(e.project.identification):null;return t&&(n={...t,website:e.project?.identification.website??null}),{project:n?{identification:n}:null,item:e.item?{identification:r,category:e.item.category,type:e.item.type,maxLength:e.item.maxLength??null}:null,dataset:S(e.dataset),publisher:S(e.publisher),languages:Ve(e.language),identifier:S(e.identifier),description:S(e.description)}}function oe(e){return{uuid:e.uuid,publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,number:e.n,content:u(e.content)}}function U(e){return{nodes:(Array.isArray(e.context)?e.context:[e.context]).map(t=>{let i=[];if("spatialUnit"in t&&t.spatialUnit){let s=Array.isArray(t.spatialUnit)?t.spatialUnit:[t.spatialUnit];for(let o of s)i.push(oe(o))}return{tree:oe(t.tree),project:oe(t.project),spatialUnit:i}}),displayPath:e.displayPath}}function F(e){return typeof e.license=="string"?null:{content:e.license.content,url:e.license.target}}function X(e){return{uuid:e.uuid,category:"person",publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,type:e.type??null,number:e.n??null,context:e.context?U(e.context):null,date:e.date!=null?new Date(e.date):null,identification:e.identification?P(e.identification):null,availability:e.availability?F(e.availability):null,address:e.address?{country:e.address.country??null,city:e.address.city??null,state:e.address.state??null}:null,coordinates:e.coordinates?ae(e.coordinates):null,content:e.content!=null?u(e.content):null,events:e.events?Te(Array.isArray(e.events.event)?e.events.event:[e.events.event]):[],properties:e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}function L(e){let r=[];for(let n of e)r.push(X(n));return r}function Ne(e){let r="resource"in e?e.resource:"spatialUnit"in e?e.spatialUnit:"concept"in e?e.concept:"set"in e?e.set:"tree"in e?e.tree:"person"in e?e.person:"bibliography"in e?e.bibliography:"epigraphicUnit"in e?e.epigraphicUnit:"propertyValue"in e?e.propertyValue:null;if(!r)throw new Error(`Invalid link provided: ${JSON.stringify(e,null,2)}`);let n=Array.isArray(r)?r:[r],t=[];for(let i of n){let s={category:"resource"in e?"resource":"spatialUnit"in e?"spatialUnit":"concept"in e?"concept":"set"in e?"set":"person"in e?"person":"tree"in e?"tree":"bibliography"in e?"bibliography":"epigraphicUnit"in e?"epigraphicUnit":"propertyValue"in e?"propertyValue":null,content:"content"in i&&i.content!=null?u(i.content):null,href:"href"in i&&i.href!=null?i.href:null,uuid:i.uuid,type:i.type??null,identification:i.identification?P(i.identification):null,image:null,bibliographies:"bibliography"in e?G(Array.isArray(e.bibliography)?e.bibliography:[e.bibliography]):null,publicationDateTime:i.publicationDateTime!=null?new Date(i.publicationDateTime):null};"height"in i&&i.height!=null&&i.width!=null&&i.heightPreview!=null&&i.widthPreview!=null&&(s.image={isInline:i.rend==="inline",isPrimary:i.isPrimary??!1,heightPreview:i.heightPreview,widthPreview:i.widthPreview,height:i.height,width:i.width}),t.push(s)}return t}function j(e){let r=[];for(let n of e)r.push(...Ne(n));return r}function le(e,r="eng"){let n="",t=[],i=Array.isArray(e)?e.find(s=>s.lang===r):e;if(typeof i.string=="string"||typeof i.string=="number"||typeof i.string=="boolean")n+=W(u(i.string));else{let s=Array.isArray(i.string)?i.string:[i.string];for(let o of s)n+=R(o,t)}return{content:n,footnotes:t}}function xe(e){return{publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,identification:e.identification?P(e.identification):null,url:e.href??(e.htmlImgSrcPrefix==null&&e.content!=null?u(e.content):null),htmlPrefix:e.htmlImgSrcPrefix??null,content:e.htmlImgSrcPrefix!=null&&e.content!=null?u(e.content):null,widthPreview:e.widthPreview??null,heightPreview:e.heightPreview??null,width:e.width??null,height:e.height??null}}function ce(e,r="eng"){let n=[];for(let t of e){if(typeof t=="string"){if(t==="")continue;n.push({number:-1,title:null,content:t});continue}let i="",s=Array.isArray(t.content)?t.content:[t.content],o=s.find(a=>a.lang===r);if(!o&&(o=s[0],!o))throw new Error(`Note does not have a valid content item: ${JSON.stringify(t,null,2)}`);typeof o.string=="string"||typeof o.string=="number"||typeof o.string=="boolean"?i=W(u(o.string)):i=W(le(o).content),n.push({number:t.noteNo,title:o.title!=null?u(o.title):null,content:i})}return n}function ae(e){if(typeof e=="string"){let[r,n]=e.split(", ");return{latitude:Number(r),longitude:Number(n),type:null,label:null}}return{latitude:e.latitude,longitude:e.longitude,type:e.coord?.coordType??null,label:e.coord?.coordLabel!=null?u(e.coord.coordLabel):null}}function De(e){return{number:e.observationNo,date:e.date!=null?new Date(e.date):null,observers:e.observers!=null?u(e.observers).split(";").map(r=>r.trim()):[],notes:e.notes?ce(Array.isArray(e.notes.note)?e.notes.note:[e.notes.note]):[],links:e.links?j(Array.isArray(e.links)?e.links:[e.links]):[],properties:e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}function He(e){let r=[];for(let n of e)r.push(De(n));return r}function Te(e){let r=[];for(let n of e)r.push({date:n.dateTime!=null?new Date(n.dateTime):null,label:S(n.label),agent:n.agent?{uuid:n.agent.uuid,content:u(n.agent.content)}:null});return r}function Me(e,r="eng"){let t=("value"in e&&e.value?Array.isArray(e.value)?e.value:[e.value]:[]).map(i=>{let s=null,o=null;if(typeof i=="string"||typeof i=="number"||typeof i=="boolean")return s=u(i),{content:s,booleanValue:o,isUncertain:!1,type:"string",category:"value",uuid:null,publicationDateTime:null,unit:null};{switch(i.type){case"integer":case"decimal":{s=Number(i.content);break}case"dateTime":{s=i.content?typeof i.content=="string"?new Date(i.content):new Date(S({content:i.content})):null;break}default:{"slug"in i&&i.slug!=null?s=u(i.slug):i.content!=null&&(s=S({content:i.content})),i.type==="boolean"&&(o=i.booleanValue??null);break}}let a="string";if(i.type!=null){let{data:c,error:b}=ye.safeParse(i.type);if(b)throw new Error(`Invalid property value content type: "${i.type}"`);a=c}return{content:s,booleanValue:o,isUncertain:i.isUncertain??!1,type:a,category:i.category??"value",uuid:i.uuid??null,publicationDateTime:i.publicationDateTime!=null?new Date(i.publicationDateTime):null,unit:i.unit??null}}});return{label:S(e.label,r).replace(/\s*\.{3}$/,"").trim(),values:t,comment:e.comment!=null?u(e.comment):null,properties:e.property?T(Array.isArray(e.property)?e.property:[e.property]):[]}}function T(e,r="eng"){let n=[];for(let t of e)n.push(Me(t,r));return n}function Ye(e){let r=[];for(let n of e)r.push({date:new Date(n.date),number:n.interpretationNo,properties:n.properties?T(Array.isArray(n.properties.property)?n.properties.property:[n.properties.property]):[]});return r}function qe(e){let r={area:[],width:e.width,height:e.height},n=Array.isArray(e.area)?e.area:[e.area];for(let t of n)r.area.push({uuid:t.uuid,publicationDateTime:t.publicationDateTime!=null?new Date(t.publicationDateTime):null,type:t.type,title:u(t.title),shape:t.shape==="rect"?"rectangle":"polygon",coords:t.coords.split(",").map(i=>Number.parseInt(i))});return r}function Z(e){return{uuid:e.uuid,category:"period",publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,type:e.type??null,number:e.n??null,identification:P(e.identification),description:e.description?S(e.description):null}}function q(e){let r=[];for(let n of e)r.push(Z(n));return r}function ee(e){let r=null;return e.source?.resource&&(r={uuid:e.source.resource.uuid,publicationDateTime:e.source.resource.publicationDateTime?new Date(e.source.resource.publicationDateTime):null,type:e.source.resource.type,identification:P(e.source.resource.identification)}),{uuid:e.uuid,category:"bibliography",publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,type:e.type??null,number:e.n??null,identification:e.identification?P(e.identification):null,projectIdentification:e.project?.identification?P(e.project.identification):null,context:e.context?U(e.context):null,citation:{format:e.citationFormat??null,short:e.citationFormatSpan?u("default:span"in e.citationFormatSpan?e.citationFormatSpan["default:span"].content:e.citationFormatSpan.span.content):null,long:e.referenceFormatDiv?u("default:div"in e.referenceFormatDiv?e.referenceFormatDiv["default:div"]["default:div"].content:e.referenceFormatDiv.div.div.content):null},publicationInfo:{publishers:e.publicationInfo?.publishers?L(Array.isArray(e.publicationInfo.publishers.publishers.person)?e.publicationInfo.publishers.publishers.person:[e.publicationInfo.publishers.publishers.person]):[],startDate:e.publicationInfo?.startDate?new Date(e.publicationInfo.startDate.year,e.publicationInfo.startDate.month,e.publicationInfo.startDate.day):null},entryInfo:e.entryInfo?{startIssue:u(e.entryInfo.startIssue),startVolume:u(e.entryInfo.startVolume)}:null,source:{resource:r,documentUrl:e.sourceDocument?`https://ochre.lib.uchicago.edu/ochre?uuid=${e.sourceDocument.uuid}&load`:null},periods:e.periods?q(Array.isArray(e.periods.period)?e.periods.period:[e.periods.period]):[],authors:e.authors?L(Array.isArray(e.authors.person)?e.authors.person:[e.authors.person]):[],properties:e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}function G(e){let r=[];for(let n of e)r.push(ee(n));return r}function te(e){return{uuid:e.uuid,category:"propertyValue",number:e.n,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,context:e.context?U(e.context):null,availability:e.availability?F(e.availability):null,identification:P(e.identification),date:e.date?new Date(e.date):null,creators:e.creators?L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],description:e.description?["string","number","boolean"].includes(typeof e.description)?u(e.description):S(e.description):"",notes:e.notes?ce(Array.isArray(e.notes.note)?e.notes.note:[e.notes.note]):[],links:e.links?j(Array.isArray(e.links)?e.links:[e.links]):[]}}function Oe(e){let r=[];for(let n of e)r.push(te(n));return r}function ke(e){let r=[];e.creators&&(r=L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]));let n=null;e.date!=null&&(n=new Date(e.date));let t=[],i=[],s=[],o=[],a=[],l=[],c=[];return typeof e.items!="string"&&"resource"in e.items&&(t=M(Array.isArray(e.items.resource)?e.items.resource:[e.items.resource])),typeof e.items!="string"&&"spatialUnit"in e.items&&(i=Ee(Array.isArray(e.items.spatialUnit)?e.items.spatialUnit:[e.items.spatialUnit])),typeof e.items!="string"&&"concept"in e.items&&(s=Ce(Array.isArray(e.items.concept)?e.items.concept:[e.items.concept])),typeof e.items!="string"&&"period"in e.items&&(o=q(Array.isArray(e.items.period)?e.items.period:[e.items.period])),typeof e.items!="string"&&"bibliography"in e.items&&(a=G(Array.isArray(e.items.bibliography)?e.items.bibliography:[e.items.bibliography])),typeof e.items!="string"&&"person"in e.items&&(l=L(Array.isArray(e.items.person)?e.items.person:[e.items.person])),typeof e.items!="string"&&"propertyValue"in e.items&&(c=Oe(Array.isArray(e.items.propertyValue)?e.items.propertyValue:[e.items.propertyValue])),{uuid:e.uuid,category:"tree",publicationDateTime:new Date(e.publicationDateTime),identification:P(e.identification),creators:r,license:F(e.availability),date:n,type:e.type,number:e.n,items:{resources:t,spatialUnits:i,concepts:s,periods:o,bibliographies:a,persons:l,propertyValues:c},properties:e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}function Ie(e,r){if(typeof e.items=="string")throw new TypeError("Invalid OCHRE data: Set has no items");let n=r??Y(Object.keys(e.items)),t=[];switch(n){case"resource":{if(!("resource"in e.items))throw new Error("Invalid OCHRE data: Set has no resources");t=M(Array.isArray(e.items.resource)?e.items.resource:[e.items.resource]);break}case"spatialUnit":{if(!("spatialUnit"in e.items))throw new Error("Invalid OCHRE data: Set has no spatial units");t=Ee(Array.isArray(e.items.spatialUnit)?e.items.spatialUnit:[e.items.spatialUnit]);break}case"concept":{if(!("concept"in e.items))throw new Error("Invalid OCHRE data: Set has no concepts");t=Ce(Array.isArray(e.items.concept)?e.items.concept:[e.items.concept]);break}case"period":{if(!("period"in e.items))throw new Error("Invalid OCHRE data: Set has no periods");t=q(Array.isArray(e.items.period)?e.items.period:[e.items.period]);break}case"bibliography":{if(!("bibliography"in e.items))throw new Error("Invalid OCHRE data: Set has no bibliographies");t=G(Array.isArray(e.items.bibliography)?e.items.bibliography:[e.items.bibliography]);break}case"person":{if(!("person"in e.items))throw new Error("Invalid OCHRE data: Set has no persons");t=L(Array.isArray(e.items.person)?e.items.person:[e.items.person]);break}case"propertyValue":{if(!("propertyValue"in e.items))throw new Error("Invalid OCHRE data: Set has no property values");t=Oe(Array.isArray(e.items.propertyValue)?e.items.propertyValue:[e.items.propertyValue]);break}default:throw new Error("Invalid OCHRE data: Set has no items or is malformed")}return{uuid:e.uuid,category:"set",itemCategory:r,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,date:e.date!=null?new Date(e.date):null,license:F(e.availability),identification:P(e.identification),isSuppressingBlanks:e.suppressBlanks??!1,description:e.description?["string","number","boolean"].includes(typeof e.description)?u(e.description):S(e.description):"",creators:e.creators?L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],type:e.type,number:e.n,items:t}}function re(e){return{uuid:e.uuid,category:"resource",publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,type:e.type,number:e.n,format:e.format??null,context:"context"in e&&e.context?U(e.context):null,license:"availability"in e&&e.availability?F(e.availability):null,copyright:"copyright"in e&&e.copyright!=null?u(e.copyright):null,identification:P(e.identification),date:e.date!=null?new Date(e.date):null,image:e.image?xe(e.image):null,creators:e.creators?L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],notes:e.notes?ce(Array.isArray(e.notes.note)?e.notes.note:[e.notes.note]):[],description:e.description?["string","number","boolean"].includes(typeof e.description)?u(e.description):S(e.description):"",document:e.document&&"content"in e.document?le(e.document.content):null,href:e.href??null,imageMap:e.imagemap?qe(e.imagemap):null,periods:e.periods?q(Array.isArray(e.periods.period)?e.periods.period:[e.periods.period]):[],links:e.links?j(Array.isArray(e.links)?e.links:[e.links]):[],reverseLinks:e.reverseLinks?j(Array.isArray(e.reverseLinks)?e.reverseLinks:[e.reverseLinks]):[],properties:e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],citedBibliographies:e.citedBibliography?G(Array.isArray(e.citedBibliography.reference)?e.citedBibliography.reference:[e.citedBibliography.reference]):[],resources:e.resource?M(Array.isArray(e.resource)?e.resource:[e.resource]):[]}}function M(e){let r=[],n=Array.isArray(e)?e:[e];for(let t of n)r.push(re(t));return r}function ne(e){return{uuid:e.uuid,category:"spatialUnit",publicationDateTime:e.publicationDateTime!=null?new Date(e.publicationDateTime):null,type:e.type,number:e.n,context:"context"in e&&e.context?U(e.context):null,license:"availability"in e&&e.availability?F(e.availability):null,identification:P(e.identification),image:e.image?xe(e.image):null,description:e.description?["string","number","boolean"].includes(typeof e.description)?u(e.description):S(e.description):"",coordinates:e.coordinates?ae(e.coordinates):e.coordinate?ae(e.coordinate):null,observations:"observations"in e&&e.observations?He(Array.isArray(e.observations.observation)?e.observations.observation:[e.observations.observation]):e.observation?[De(e.observation)]:[],events:"events"in e&&e.events?Te(Array.isArray(e.events.event)?e.events.event:[e.events.event]):[],properties:"properties"in e&&e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}function Ee(e){let r=[],n=Array.isArray(e)?e:[e];for(let t of n)r.push(ne(t));return r}function ie(e){return{uuid:e.uuid,category:"concept",publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,number:e.n,license:"availability"in e&&e.availability?F(e.availability):null,context:"context"in e&&e.context?U(e.context):null,identification:P(e.identification),interpretations:Ye(Array.isArray(e.interpretations.interpretation)?e.interpretations.interpretation:[e.interpretations.interpretation])}}var se=async(e,r)=>{let n=[];for(let t of e)if((t.properties?T(Array.isArray(t.properties.property)?t.properties.property:[t.properties.property]):[]).find(o=>o.label==="presentation"&&o.values[0].content===r))switch(r){case"element":{let o=await K(t);n.push(o);break}case"page":{let o=await $e(t);o&&n.push(o);break}case"block":{let o=await pe(t);o&&n.push(o);break}}return n};function Ce(e){let r=[],n=Array.isArray(e)?e:[e];for(let t of n)r.push(ie(t));return r}async function Ge(e,r){let n=fe.parse(e.values[0].content),t={component:n},i=r.links?j(Array.isArray(r.links)?r.links:[r.links]):[],s=i.filter(a=>a.type==="image"||a.type==="IIIF"),o=r.document&&"content"in r.document?le(r.document.content):null;if(o===null){let a=i.find(l=>l.type==="internalDocument");if(a){let{item:l,error:c}=await Se(a.uuid,"resource");if(c!==null)throw new Error("Failed to fetch OCHRE data");o=l.document}}switch(n){case"annotated-document":{if(!o)throw new Error(`Document not found for the following component: \u201C${n}\u201D`);t.document=o;break}case"annotated-image":{if(s.length===0)throw new Error(`Image link not found for the following component: \u201C${n}\u201D`);let a=f(e.properties,"is-searchable")==="Yes";t.imageUuid=s[0].uuid,t.isSearchable=a;break}case"bibliography":{let a=i.find(c=>c.category==="bibliography");if(!a)throw new Error(`Bibliography link not found for the following component: \u201C${n}\u201D`);if(!a.bibliographies)throw new Error(`Bibliography not found for the following component: \u201C${n}\u201D`);let l=f(e.properties,"layout");l??="long",t.bibliographies=a.bibliographies,t.layout=l;break}case"button":{let a=f(e.properties,"variant");a??="default";let l=!1,c=f(e.properties,"navigate-to");if(c===null){if(c=f(e.properties,"link-to"),c===null)throw new Error(`Properties \u201Cnavigate-to\u201D or \u201Clink-to\u201D not found for the following component: \u201C${n}\u201D`);l=!0}let b=null,g=f(e.properties,"icon");g!==null&&(b=g),t.variant=a,t.href=c,t.isExternal=l,t.label=["string","number","boolean"].includes(typeof r.identification.label)?u(r.identification.label):S(r.identification.label),t.icon=b;break}case"collection":{let a=i.find(x=>x.category==="set");if(!a)throw new Error(`Collection link not found for the following component: \u201C${n}\u201D`);let l=f(e.properties,"variant");l??="full";let c=f(e.properties,"item-variant");c??="default";let b=!1,g=f(e.properties,"show-count");g!==null&&(b=g==="Yes");let k=!1,y=f(e.properties,"is-searchable");y!==null&&(k=y==="Yes");let h=f(e.properties,"layout");h??="image-start",t.collectionId=a.uuid,t.variant=l,t.itemVariant=c,t.isSearchable=k,t.showCount=b,t.layout=h;break}case"empty-space":{let a=f(e.properties,"height"),l=f(e.properties,"width");t.height=a,t.width=l;break}case"entries":{let a=i.find(g=>g.category==="tree");if(!a)throw new Error(`Entries link not found for the following component: \u201C${n}\u201D`);let l=f(e.properties,"variant");l??="blog-page";let c=!1,b=f(e.properties,"is-searchable");b!==null&&(c=b==="Yes"),t.entriesId=a.uuid,t.variant=l,t.isSearchable=c;break}case"filter-categories":{let a=i.find(l=>l.category==="set");if(!a)throw new Error(`Filter link not found for the following component: \u201C${n}\u201D`);t.filterId=a.uuid;break}case"iframe":{let a=i.find(b=>b.type==="webpage")?.href;if(!a)throw new Error(`URL not found for the following component: \u201C${n}\u201D`);let l=f(e.properties,"height"),c=f(e.properties,"width");t.href=a,t.height=l,t.width=c;break}case"iiif-viewer":{let a=i.find(l=>l.type==="IIIF");if(!a)throw new Error(`Manifest link not found for the following component: \u201C${n}\u201D`);t.IIIFId=a.uuid;break}case"image":{if(s.length===0)throw new Error(`Image link not found for the following component: \u201C${n}\u201D`);let a=[];for(let $ of s)a.push({url:`https://ochre.lib.uchicago.edu/ochre?uuid=${$.uuid}&load`,label:$.identification?.label??null,width:$.image?.width??0,height:$.image?.height??0});let l=f(e.properties,"variant");l??="default";let c=f(e.properties,"layout-caption");c??="bottom";let b=null,g=f(e.properties,"width");g!==null&&(typeof g=="number"?b=g:typeof g=="string"&&(b=Number.parseFloat(g)));let k=null,y=f(e.properties,"height");y!==null&&(typeof y=="number"?k=y:typeof y=="string"&&(k=Number.parseFloat(y)));let h=!0,x=f(e.properties,"is-full-width");x!==null&&(h=x==="Yes");let I=!0,C=f(e.properties,"is-full-height");C!==null&&(I=C==="Yes");let d=f(e.properties,"image-quality");d??="high";let m=f(e.properties,"caption-source");m??="name";let v=f(e.properties,"alt-text-source");v??="name";let w=!1,p=f(e.properties,"is-transparent");p!==null&&(w=p==="Yes");let O=!1,E=f(e.properties,"is-cover");E!==null&&(O=E==="Yes");let V=null;if(a.length>1){let $=_(e.properties,"variant"),N=5;if($&&$.values[0].content==="carousel"){let B=f($.properties,"seconds-per-image");B!==null&&(typeof B=="number"?N=B:typeof B=="string"&&(N=Number.parseFloat(B)))}V={secondsPerImage:N}}t.images=a,t.variant=l,t.width=b,t.height=k,t.isFullWidth=h,t.isFullHeight=I,t.imageQuality=d,t.captionLayout=c,t.captionSource=m,t.altTextSource=v,t.isTransparentBackground=w,t.isCover=O,t.carouselOptions=V;break}case"image-gallery":{let a=i.find(c=>c.category==="tree"||c.category==="set");if(!a)throw new Error(`Image gallery link not found for the following component: \u201C${n}\u201D`);let l=f(e.properties,"is-searchable")==="Yes";t.galleryId=a.uuid,t.isSearchable=l;break}case"n-columns":{let a=r.resource?await se(Array.isArray(r.resource)?r.resource:[r.resource],"element"):[];t.columns=a;break}case"n-rows":{let a=r.resource?await se(Array.isArray(r.resource)?r.resource:[r.resource],"element"):[];t.rows=a;break}case"network-graph":break;case"table":{let a=i.find(l=>l.category==="set");if(!a)throw new Error(`Table link not found for the following component: \u201C${n}\u201D`);t.tableId=a.uuid;break}case"search-bar":{let a=f(e.properties,"variant");a??="default",t.variant=a;break}case"text":{if(!o)throw new Error(`Document not found for the following component: \u201C${n}\u201D`);let a=f(e.properties,"variant");a??="block";let l=f(e.properties,"heading");t.variant=a,t.heading=l,t.content=o.content;break}case"timeline":{let a=i.find(l=>l.category==="tree");if(!a)throw new Error(`Timeline link not found for the following component: \u201C${n}\u201D`);t.timelineId=a.uuid;break}case"video":{let a=i.find(c=>c.type==="video");if(!a)throw new Error(`Video link not found for the following component: \u201C${n}\u201D`);let l=f(e.properties,"chapters-displayed");l??="Yes",t.videoId=a.uuid,t.isChaptersDislayed=l==="Yes";break}default:{console.warn(`Invalid or non-implemented component name \u201C${n}\u201D for the following element: \u201C${S(r.identification.label)}\u201D`);break}}return t}async function K(e){let r=P(e.identification),t=(e.properties?.property?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]).find(m=>m.label==="presentation");if(!t)throw new Error(`Presentation property not found for element \u201C${r.label}\u201D`);let i=t.properties.find(m=>m.label==="component");if(!i)throw new Error(`Component for element \u201C${r.label}\u201D not found`);let s=await Ge(i,e),a=t.properties.find(m=>m.label==="section-sidebar-displayed")?.values[0]?.booleanValue===!0,l=e.properties?.property?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],c=l.find(m=>m.label==="presentation"&&m.values[0].content==="css")?.properties??[],b=[];for(let m of c){let v=m.values[0].content;b.push({label:m.label,value:v})}let g=l.find(m=>m.label==="presentation"&&m.values[0].content==="css-mobile")?.properties??[],k=[];for(let m of g){let v=m.values[0].content;k.push({label:m.label,value:v})}let y=l.find(m=>m.label==="presentation"&&m.values[0].content==="title")?.properties,h="default",x=!1,I=!1,C=!1,d=!1;if(y){let m=f(y,"variant");m&&(h=m);let v=y.filter(w=>w.label==="display");v.length>0&&(x=v.some(w=>w.values[0].content==="name"),I=v.some(w=>w.values[0].content==="description"),C=v.some(w=>w.values[0].content==="date"),d=v.some(w=>w.values[0].content==="creators"))}return{uuid:e.uuid,type:"element",title:{label:r.label,variant:h,properties:{isNameDisplayed:x,isDescriptionDisplayed:I,isDateDisplayed:C,isCreatorsDisplayed:d}},isDisplayedInBlockSectionSidebar:a,cssStyles:b,cssStylesMobile:k,...s}}async function $e(e){let r=e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[];if(r.length===0||r.find(d=>d.label==="presentation")?.values[0]?.content!=="page")return null;let n=P(e.identification),t=e.slug;if(t===void 0)throw new Error(`Slug not found for page \u201C${n.label}\u201D`);let s=(e.links?j(Array.isArray(e.links)?e.links:[e.links]):[]).find(d=>d.type==="image"||d.type==="IIIF"),o=e.resource?Array.isArray(e.resource)?e.resource:[e.resource]:[],a=[];for(let d of o){let m=d.properties?T(Array.isArray(d.properties.property)?d.properties.property:[d.properties.property]):[],v=f(m,"presentation");if(v!=null)switch(v){case"element":{let w=await K(d);a.push(w);break}case"block":{let w=await pe(d);w&&a.push(w);break}}}let l=e.resource?await se(Array.isArray(e.resource)?e.resource:[e.resource],"page"):[],c=!0,b="default",g="default",k=!0,y=r.find(d=>d.label==="presentation"&&d.values[0]?.content==="page")?.properties;if(y){let d=y.find(p=>p.label==="header")?.values[0];d&&(c=d.content==="Yes");let m=y.find(p=>p.label==="width")?.values[0];m&&(b=m.content);let v=y.find(p=>p.label==="variant")?.values[0];v&&(g=v.content);let w=y.find(p=>p.label==="sidebar-visible")?.values[0];w&&(k=w.content==="Yes")}let h=r.find(d=>d.label==="presentation"&&d.values[0]?.content==="css")?.properties,x=[];if(h)for(let d of h)x.push({label:d.label,value:d.values[0].content});let I=r.find(d=>d.label==="presentation"&&d.values[0]?.content==="css-mobile")?.properties,C=[];if(I)for(let d of I)C.push({label:d.label,value:d.values[0].content});return{title:n.label,slug:t,items:a,properties:{displayedInHeader:c,width:b,variant:g,backgroundImageUrl:s?`https://ochre.lib.uchicago.edu/ochre?uuid=${s.uuid}&load`:null,isSidebarDisplayed:k,cssStyles:x,cssStylesMobile:C},webpages:l}}async function Ke(e){let r=[],n=Array.isArray(e)?e:[e];for(let t of n){let i=await $e(t);i&&r.push(i)}return r}async function pe(e){let r={uuid:e.uuid,type:"block",layout:"vertical",items:[],properties:{spacing:void 0,gap:void 0,alignItems:"start",justifyContent:"stretch",sectionSidebarItems:null},propertiesMobile:null,cssStyles:[],cssStylesMobile:[]},n=e.properties?T(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],t=n.find(l=>l.label==="presentation"&&l.values[0]?.content==="block")?.properties;if(t){let l=t.find(h=>h.label==="layout")?.values[0];l&&(r.layout=l.content);let c=t.find(h=>h.label==="spacing")?.values[0];c&&(r.properties.spacing=c.content);let b=t.find(h=>h.label==="gap")?.values[0];b&&(r.properties.gap=b.content);let g=t.find(h=>h.label==="align-items")?.values[0];g&&(r.properties.alignItems=g.content);let k=t.find(h=>h.label==="justify-content")?.values[0];k&&(r.properties.justifyContent=k.content);let y=t.find(h=>h.label==="overwrite-mobile");if(y){let h=y.properties,x={};for(let I of h)x[I.label]=I.values[0].content;r.propertiesMobile=x}}let i=e.resource?Array.isArray(e.resource)?e.resource:[e.resource]:[],s=[];for(let l of i){let c=l.properties?T(Array.isArray(l.properties.property)?l.properties.property:[l.properties.property]):[],b=f(c,"presentation");if(b!=null)switch(b){case"element":{let g=await K(l);s.push(g);break}case"block":{let g=await pe(l);g&&s.push(g);break}}}r.items=s;let o=n.find(l=>l.label==="presentation"&&l.values[0]?.content==="css")?.properties;if(o)for(let l of o)r.cssStyles.push({label:l.label,value:l.values[0].content});let a=n.find(l=>l.label==="presentation"&&l.values[0]?.content==="css-mobile")?.properties;if(a)for(let l of a)r.cssStylesMobile.push({label:l.label,value:l.values[0].content});return r.properties.sectionSidebarItems=Le(r),r}function Le(e){let r=[];for(let n of e.items)switch(n.type){case"block":{let t=Le(n);t!==null&&r.push({uuid:n.uuid,type:"block",name:null,items:t});break}case"element":{if(!n.isDisplayedInBlockSectionSidebar)continue;r.push({uuid:n.uuid,type:"element",name:n.title.label,items:null});break}}return r.length>0?r:null}function Je(e){let n=T(e).find(A=>A.label==="presentation")?.properties;if(!n)throw new Error("Presentation property not found");let t=n.find(A=>A.label==="webUI")?.values[0]?.content;if(t==null)throw new Error("Website type not found");let i=n.find(A=>A.label==="status")?.values[0]?.content;if(i==null)throw new Error("Website status not found");let s=n.find(A=>A.label==="privacy")?.values[0]?.content;s??="public";let o=de.safeParse({type:t,status:i,privacy:s});if(!o.success)throw new Error(`Invalid website properties: ${o.error.message}`);let a=null,l=n.find(A=>A.label==="contact");if(l){let[A,Fe]=(l.values[0]?.content).split(";");a={name:A,email:Fe??null}}let c=n.find(A=>A.label==="logo")?.values[0]?.uuid??null,b=!0,g="default",k="start",y=!0,h=!0,x=!1,I=null,C=!0,d=n.find(A=>A.label==="navbar-visible")?.values[0];d&&(b=d.content==="Yes");let m=n.find(A=>A.label==="navbar-variant")?.values[0];m&&(g=m.content);let v=n.find(A=>A.label==="navbar-alignment")?.values[0];v&&(k=v.content);let w=n.find(A=>A.label==="navbar-project-visible")?.values[0];w&&(y=w.content==="Yes");let p=n.find(A=>A.label==="footer-visible")?.values[0];p&&(h=p.content==="Yes");let O=n.find(A=>A.label==="sidebar-visible")?.values[0];O&&(x=O.content==="Yes");let E=n.find(A=>A.label==="search-collection")?.values[0];E&&(I=E.uuid);let V=n.find(A=>A.label==="supports-theme-toggle")?.values[0];V&&(C=V.content==="Yes");let{type:$,status:N,privacy:B}=o.data;return{type:$,privacy:B,status:N,contact:a,isHeaderDisplayed:b,headerVariant:g,headerAlignment:k,isHeaderProjectDisplayed:y,isFooterDisplayed:h,isSidebarDisplayed:x,supportsThemeToggle:C,searchCollectionUuid:I,logoUrl:c!==null?`https://ochre.lib.uchicago.edu/ochre?uuid=${c}&load`:null}}async function We(e,r,n){if(!e.properties)throw new Error("Website properties not found");let t=Je(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]);if(typeof e.items=="string"||!("resource"in e.items))throw new Error("Website pages not found");let i=Array.isArray(e.items.resource)?e.items.resource:[e.items.resource],s=await Ke(i),o=null,a=[],l={label:"",variant:"default",properties:{isNameDisplayed:!1,isDescriptionDisplayed:!1,isDateDisplayed:!1,isCreatorsDisplayed:!1}},c="start",b="default",g=[],k=[],y=i.find(h=>(h.properties?T(Array.isArray(h.properties.property)?h.properties.property:[h.properties.property]):[]).some(I=>I.label==="presentation"&&I.values[0]?.content==="element"&&I.properties[0]?.label==="component"&&I.properties[0].values[0]?.content==="sidebar"));if(y){l.label=typeof y.identification.label=="string"||typeof y.identification.label=="number"||typeof y.identification.label=="boolean"?u(y.identification.label):S(y.identification.label);let h=y.properties?T(Array.isArray(y.properties.property)?y.properties.property:[y.properties.property]):[],x=h.find(p=>p.label==="presentation"&&p.values[0]?.content==="element")?.properties.find(p=>p.label==="component"&&p.values[0]?.content==="sidebar")?.properties??[],I=x.find(p=>p.label==="layout");I&&(c=I.values[0].content);let C=x.find(p=>p.label==="layout-mobile");C&&(b=C.values[0].content);let d=h.find(p=>p.label==="presentation"&&p.values[0].content==="css")?.properties??[];for(let p of d){let O=p.values[0].content;g.push({label:p.label,value:O})}let m=h.find(p=>p.label==="presentation"&&p.values[0].content==="css-mobile")?.properties??[];for(let p of m){let O=p.values[0].content;k.push({label:p.label,value:O})}let v=h.find(p=>p.label==="presentation"&&p.values[0].content==="title")?.properties;if(v){let p=f(v,"variant");p&&(l.variant=p);let O=v.filter(E=>E.label==="display");O.length>0&&(l.properties.isNameDisplayed=O.some(E=>E.values[0].content==="name"),l.properties.isDescriptionDisplayed=O.some(E=>E.values[0].content==="description"),l.properties.isDateDisplayed=O.some(E=>E.values[0].content==="date"),l.properties.isCreatorsDisplayed=O.some(E=>E.values[0].content==="creators"))}let w=y.resource?Array.isArray(y.resource)?y.resource:[y.resource]:[];for(let p of w){let O=await K(p);a.push(O)}}return a.length>0&&(o={elements:a,title:l,layout:c,mobileLayout:b,cssStyles:g,cssStylesMobile:k}),{uuid:e.uuid,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,identification:P(e.identification),project:{name:u(r),website:n!==null?u(n):null},creators:e.creators?L(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],license:F(e.availability),pages:s,sidebar:o,properties:t}}async function bt(e,r,n,t){try{let{uuid:i,filter:s,page:o,perPage:a}=he.parse({uuid:e,filter:r,page:n,perPage:t}),l=await fetch(`https://ochre.lib.uchicago.edu/ochre?xquery=${encodeURIComponent(`
5
5
  for $q in input()/ochre[@uuid='${i}']
6
6
  let $filtered := $q//items/resource[contains(lower-case(identification/label), lower-case('${s}'))]
7
7
  let $maxLength := count($filtered)
@@ -10,4 +10,4 @@ ${JSON.stringify(e.content)}.`);return z(t)}}else return z(e.content);default:re
10
10
  {$q/metadata/item}
11
11
  {$filtered[position() >= ${((o-1)*a+1).toString()} and position() < ${(o*a+1).toString()}]}
12
12
  </gallery>
13
- `)}&format=json`);if(!l.ok)throw new Error("Error fetching gallery items, please try again later.");let c=await l.json();if(!("gallery"in c.result))throw new Error("Failed to fetch gallery");let b=P(c.result.gallery.item.identification),g=P(c.result.gallery.project.identification);return{item:{identification:b,projectIdentification:g,resources:M(c.result.gallery.resource?Array.isArray(c.result.gallery.resource)?c.result.gallery.resource:[c.result.gallery.resource]:[]),maxLength:c.result.gallery.maxLength},error:null}}catch(i){return console.error(i),{item:null,error:i instanceof Error?i.message:"Failed to fetch gallery"}}}async function At(e){try{let r=await fetch(`https://ochre.lib.uchicago.edu/ochre?xquery=for $q in input()/ochre[tree[@type='lesson'][identification/abbreviation='${e.toLocaleLowerCase("en-US")}']] return $q&format=json`);if(!r.ok)throw new Error("Failed to fetch website");let n=await r.json();if(!("ochre"in n.result)||!("tree"in n.result.ochre))throw new Error("Failed to fetch website");let t=n.result.ochre.metadata.project?.identification?P(n.result.ochre.metadata.project.identification):null;return await Le(n.result.ochre.tree,t?.label??"",n.result.ochre.metadata.project?.identification.website??null)}catch(r){return console.error(r),null}}export{ve as fetchByUuid,bt as fetchGallery,we as fetchItem,At as fetchWebsite,Be as filterProperties,Fe as getAllPropertyLabels,_ as getPropertyByLabel,f as getPropertyValueByLabel,ge as getPropertyValuesByLabel,G as parseBibliographies,ee as parseBibliography,ie as parseConcept,Ee as parseConcepts,H as parseContext,Ie as parseCoordinates,se as parseDocument,W as parseEmail,He as parseEvents,u as parseFakeString,P as parseIdentification,xe as parseImage,qe as parseImageMap,Ye as parseInterpretations,Ue as parseLanguages,B as parseLicense,Ve as parseLink,j as parseLinks,Se as parseMetadata,le as parseNotes,De as parseObservation,Ne as parseObservations,Z as parsePeriod,q as parsePeriods,X as parsePerson,L as parsePersons,O as parseProperties,Me as parseProperty,te as parsePropertyValue,Te as parsePropertyValues,re as parseResource,M as parseResources,ke as parseSet,ne as parseSpatialUnit,Oe as parseSpatialUnits,S as parseStringContent,R as parseStringDocumentItem,z as parseStringItem,Pe as parseTree,Le as parseWebsite};
13
+ `)}&format=json`);if(!l.ok)throw new Error("Error fetching gallery items, please try again later.");let c=await l.json();if(!("gallery"in c.result))throw new Error("Failed to fetch gallery");let b=P(c.result.gallery.item.identification),g=P(c.result.gallery.project.identification);return{item:{identification:b,projectIdentification:g,resources:M(c.result.gallery.resource?Array.isArray(c.result.gallery.resource)?c.result.gallery.resource:[c.result.gallery.resource]:[]),maxLength:c.result.gallery.maxLength},error:null}}catch(i){return console.error(i),{item:null,error:i instanceof Error?i.message:"Failed to fetch gallery"}}}async function At(e){try{let r=await fetch(`https://ochre.lib.uchicago.edu/ochre?xquery=for $q in input()/ochre[tree[@type='lesson'][identification/abbreviation='${e.toLocaleLowerCase("en-US")}']] return $q&format=json`);if(!r.ok)throw new Error("Failed to fetch website");let n=await r.json();if(!("ochre"in n.result)||!("tree"in n.result.ochre))throw new Error("Failed to fetch website");let t=n.result.ochre.metadata.project?.identification?P(n.result.ochre.metadata.project.identification):null;return await We(n.result.ochre.tree,t?.label??"",n.result.ochre.metadata.project?.identification.website??null)}catch(r){return console.error(r),null}}export{we as fetchByUuid,bt as fetchGallery,Se as fetchItem,At as fetchWebsite,je as filterProperties,Be as getAllPropertyLabels,_ as getPropertyByLabel,f as getPropertyValueByLabel,Ae as getPropertyValuesByLabel,G as parseBibliographies,ee as parseBibliography,ie as parseConcept,Ce as parseConcepts,U as parseContext,ae as parseCoordinates,le as parseDocument,W as parseEmail,Te as parseEvents,u as parseFakeString,P as parseIdentification,xe as parseImage,qe as parseImageMap,Ye as parseInterpretations,Ve as parseLanguages,F as parseLicense,Ne as parseLink,j as parseLinks,Pe as parseMetadata,ce as parseNotes,De as parseObservation,He as parseObservations,Z as parsePeriod,q as parsePeriods,X as parsePerson,L as parsePersons,T as parseProperties,Me as parseProperty,te as parsePropertyValue,Oe as parsePropertyValues,re as parseResource,M as parseResources,Ie as parseSet,ne as parseSpatialUnit,Ee as parseSpatialUnits,S as parseStringContent,R as parseStringDocumentItem,z as parseStringItem,ke as parseTree,We as parseWebsite};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digitalculture/ochre-sdk",
3
- "version": "0.7.4",
3
+ "version": "0.7.6",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Node.js library for working with OCHRE (Online Cultural and Historical Research Environment) data",