@digitalculture/ochre-sdk 0.7.12 → 0.7.13

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,4 +1,4 @@
1
- "use strict";var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));const c=s(require(`zod`)),l=c.z.string().uuid({message:`Invalid UUID provided`}),u=c.z.object({type:c.z.enum([`traditional`,`digital-collection`,`plum`,`cedar`,`elm`,`maple`,`oak`,`palm`],{message:`Invalid website type`}),status:c.z.enum([`development`,`preview`,`production`],{message:`Invalid website status`}),privacy:c.z.enum([`public`,`password`,`private`],{message:`Invalid website privacy`})}),d=c.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`}),f=c.z.enum([`resource`,`spatialUnit`,`concept`,`period`,`bibliography`,`person`,`propertyValue`,`set`,`tree`]),p=c.z.enum([`string`,`integer`,`decimal`,`boolean`,`date`,`dateTime`,`time`,`coordinate`,`IDREF`]),m=c.z.object({uuid:c.z.string().uuid({message:`Invalid UUID`}),filter:c.z.string().optional(),page:c.z.number().positive({message:`Page must be positive`}),perPage:c.z.number().positive({message:`Per page must be positive`})}).strict(),h=c.z.string().transform(e=>e.split(` `)).pipe(c.z.array(c.z.enum([`bold`,`italic`,`underline`]))),g=c.z.string().transform(e=>e.split(` `)).pipe(c.z.array(c.z.enum([`newline`,`trailing`,`leading`]))),_=c.z.string().email({message:`Invalid email`}),v={includeNestedProperties:!1};
1
+ "use strict";var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));const c=s(require(`zod`)),l=s(require(`node:crypto`)),u=c.z.string().uuid({message:`Invalid UUID provided`}),d=c.z.object({type:c.z.enum([`traditional`,`digital-collection`,`plum`,`cedar`,`elm`,`maple`,`oak`,`palm`],{message:`Invalid website type`}),status:c.z.enum([`development`,`preview`,`production`],{message:`Invalid website status`}),privacy:c.z.enum([`public`,`password`,`private`],{message:`Invalid website privacy`})}),f=c.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`}),p=c.z.enum([`resource`,`spatialUnit`,`concept`,`period`,`bibliography`,`person`,`propertyValue`,`set`,`tree`]),m=c.z.enum([`string`,`integer`,`decimal`,`boolean`,`date`,`dateTime`,`time`,`coordinate`,`IDREF`]),h=c.z.object({uuid:c.z.string().uuid({message:`Invalid UUID`}),filter:c.z.string().optional(),page:c.z.number().positive({message:`Page must be positive`}),perPage:c.z.number().positive({message:`Per page must be positive`})}).strict(),g=c.z.string().transform(e=>e.split(` `)).pipe(c.z.array(c.z.enum([`bold`,`italic`,`underline`]))),_=c.z.string().transform(e=>e.split(` `)).pipe(c.z.array(c.z.enum([`newline`,`trailing`,`leading`]))),v=c.z.string().email({message:`Invalid email`}),y={includeNestedProperties:!1};
2
2
  /**
3
3
  * Finds a property by its label in an array of properties
4
4
  *
@@ -15,7 +15,7 @@
15
15
  * }
16
16
  * ```
17
17
  */
18
- function y(e,t,n=v){let{includeNestedProperties:r}=n,i=e.find(e=>e.label===t);if(i)return i;if(r){for(let n of e)if(n.properties.length>0){let e=y(n.properties,t,{includeNestedProperties:r});if(e)return e}}return null}
18
+ function b(e,t,n=y){let{includeNestedProperties:r}=n,i=e.find(e=>e.label===t);if(i)return i;if(r){for(let n of e)if(n.properties.length>0){let e=b(n.properties,t,{includeNestedProperties:r});if(e)return e}}return null}
19
19
  /**
20
20
  * Retrieves all values for a property with the given label
21
21
  *
@@ -34,7 +34,7 @@ function y(e,t,n=v){let{includeNestedProperties:r}=n,i=e.find(e=>e.label===t);if
34
34
  * }
35
35
  * ```
36
36
  */
37
- function b(e,t,n=v){let{includeNestedProperties:r}=n,i=e.find(e=>e.label===t);if(i)return i.values.map(e=>e.content);if(r){for(let n of e)if(n.properties.length>0){let e=b(n.properties,t,{includeNestedProperties:r});if(e)return e}}return null}
37
+ function x(e,t,n=y){let{includeNestedProperties:r}=n,i=e.find(e=>e.label===t);if(i)return i.values.map(e=>e.content);if(r){for(let n of e)if(n.properties.length>0){let e=x(n.properties,t,{includeNestedProperties:r});if(e)return e}}return null}
38
38
  /**
39
39
  * Gets the first value of a property with the given label
40
40
  *
@@ -51,7 +51,7 @@ function b(e,t,n=v){let{includeNestedProperties:r}=n,i=e.find(e=>e.label===t);if
51
51
  * }
52
52
  * ```
53
53
  */
54
- function x(e,t,n=v){let{includeNestedProperties:r}=n,i=b(e,t,{includeNestedProperties:r});if(i!==null&&i.length>0)return i[0];if(r){for(let n of e)if(n.properties.length>0){let e=x(n.properties,t,{includeNestedProperties:r});if(e!==null)return e}}return null}
54
+ function S(e,t,n=y){let{includeNestedProperties:r}=n,i=x(e,t,{includeNestedProperties:r});if(i!==null&&i.length>0)return i[0];if(r){for(let n of e)if(n.properties.length>0){let e=S(n.properties,t,{includeNestedProperties:r});if(e!==null)return e}}return null}
55
55
  /**
56
56
  * Gets all unique properties from an array of properties
57
57
  *
@@ -65,7 +65,7 @@ function x(e,t,n=v){let{includeNestedProperties:r}=n,i=b(e,t,{includeNestedPrope
65
65
  * console.log(`Available properties: ${properties.map((p) => p.label).join(", ")}`);
66
66
  * ```
67
67
  */
68
- function S(e,t=v){let{includeNestedProperties:n}=t,r=[];for(let t of e){if(r.some(e=>e.uuid===t.uuid))continue;if(r.push(t),t.properties.length>0&&n){let e=S(t.properties,{includeNestedProperties:!0});for(let t of e){if(r.some(e=>e.uuid===t.uuid))continue;r.push(t)}}}return r}
68
+ function C(e,t=y){let{includeNestedProperties:n}=t,r=[];for(let t of e){if(r.some(e=>e.uuid===t.uuid))continue;if(r.push(t),t.properties.length>0&&n){let e=C(t.properties,{includeNestedProperties:!0});for(let t of e){if(r.some(e=>e.uuid===t.uuid))continue;r.push(t)}}}return r}
69
69
  /**
70
70
  * Filters a property based on a label and value criteria
71
71
  *
@@ -87,7 +87,7 @@ function S(e,t=v){let{includeNestedProperties:n}=t,r=[];for(let t of e){if(r.som
87
87
  * }
88
88
  * ```
89
89
  */
90
- function C(e,t,n=v){let{includeNestedProperties:r}=n,i=t.label.toLocaleLowerCase(`en-US`)===`all fields`;if(i||e.label.toLocaleLowerCase(`en-US`)===t.label.toLocaleLowerCase(`en-US`)){let n=e.values.some(e=>e.content===null?!1:typeof e.content==`string`?typeof t.value==`string`?e.content.toLocaleLowerCase(`en-US`).includes(t.value.toLocaleLowerCase(`en-US`)):!1:typeof e.content==`number`?typeof t.value==`number`?e.content===t.value:!1:typeof e.content==`boolean`?typeof t.value==`boolean`?e.booleanValue===t.value:!1:e.content instanceof Date&&t.value instanceof Date?e.content.getTime()===t.value.getTime():!1);return!n&&r&&(n=e.properties.some(e=>C(e,t,{includeNestedProperties:!0}))),n}return!1}
90
+ function w(e,t,n=y){let{includeNestedProperties:r}=n,i=t.label.toLocaleLowerCase(`en-US`)===`all fields`;if(i||e.label.toLocaleLowerCase(`en-US`)===t.label.toLocaleLowerCase(`en-US`)){let n=e.values.some(e=>e.content===null?!1:typeof e.content==`string`?typeof t.value==`string`?e.content.toLocaleLowerCase(`en-US`).includes(t.value.toLocaleLowerCase(`en-US`)):!1:typeof e.content==`number`?typeof t.value==`number`?e.content===t.value:!1:typeof e.content==`boolean`?typeof t.value==`boolean`?e.booleanValue===t.value:!1:e.content instanceof Date&&t.value instanceof Date?e.content.getTime()===t.value.getTime():!1);return!n&&r&&(n=e.properties.some(e=>w(e,t,{includeNestedProperties:!0}))),n}return!1}
91
91
  /**
92
92
  * Finds a string item in an array by language code
93
93
  *
@@ -96,7 +96,7 @@ function C(e,t,n=v){let{includeNestedProperties:r}=n,i=t.label.toLocaleLowerCase
96
96
  * @returns Matching string item or null if not found
97
97
  * @internal
98
98
  */
99
- function w(e,t){let n=e.find(e=>e.lang===t);return n??null}
99
+ function ee(e,t){let n=e.find(e=>e.lang===t);return n??null}
100
100
  /**
101
101
  * Parses email addresses in a string into HTML links
102
102
  *
@@ -109,7 +109,7 @@ function w(e,t){let n=e.find(e=>e.lang===t);return n??null}
109
109
  * // Returns: "Contact us at <ExternalLink href="mailto:info@example.com">info@example.com</ExternalLink>"
110
110
  * ```
111
111
  */
112
- function T(e){let t=e.split(` `),n=[];for(let e of t){let t=e.replaceAll(/(?<=\s|^)[([{]+|[)\]}]+(?=\s|$)/g,``).replace(/[!),.:;?\]]$/,``),r=e.indexOf(t),i=e.slice(0,r),a=e.slice(r+t.length),o=_.safeParse(t).success;if(o){n.push(i,`${i}<ExternalLink href="mailto:${t}">${t}</ExternalLink>${a}`);continue}n.push(e)}return n.join(` `)}
112
+ function T(e){let t=e.split(` `),n=[];for(let e of t){let t=e.replaceAll(/(?<=\s|^)[([{]+|[)\]}]+(?=\s|$)/g,``).replace(/[!),.:;?\]]$/,``),r=e.indexOf(t),i=e.slice(0,r),a=e.slice(r+t.length),o=v.safeParse(t).success;if(o){n.push(i,`${i}<ExternalLink href="mailto:${t}">${t}</ExternalLink>${a}`);continue}n.push(e)}return n.join(` `)}
113
113
  /**
114
114
  * Applies text rendering options (bold, italic, underline) to a string
115
115
  *
@@ -118,7 +118,7 @@ function T(e){let t=e.split(` `),n=[];for(let e of t){let t=e.replaceAll(/(?<=\s
118
118
  * @returns String with markdown formatting applied
119
119
  * @internal
120
120
  */
121
- function ee(e,t){let n=e,r=h.safeParse(t);if(!r.success)return console.warn(`Invalid render options string provided: “${t}”`),e;for(let e of r.data)switch(e){case`bold`:n=`**${n}**`;break;case`italic`:n=`*${n}*`;break;case`underline`:n=`_${n}_`;break}return n.replaceAll(`&#39;`,`'`)}
121
+ function E(e,t){let n=e,r=g.safeParse(t);if(!r.success)return console.warn(`Invalid render options string provided: “${t}”`),e;for(let e of r.data)switch(e){case`bold`:n=`**${n}**`;break;case`italic`:n=`*${n}*`;break;case`underline`:n=`_${n}_`;break}return n.replaceAll(`&#39;`,`'`)}
122
122
  /**
123
123
  * Applies whitespace options to a string (newline, trailing, leading)
124
124
  *
@@ -127,7 +127,7 @@ function ee(e,t){let n=e,r=h.safeParse(t);if(!r.success)return console.warn(`Inv
127
127
  * @returns String with whitespace modifications applied
128
128
  * @internal
129
129
  */
130
- function E(e,t){let n=e,r=g.safeParse(t);if(!r.success)return console.warn(`Invalid whitespace string provided: “${t}”`),e;for(let e of r.data)switch(e){case`newline`:n=`<br />\n${n}`;break;case`trailing`:n=`${n} `;break;case`leading`:n=` ${n}`;break}return n.replaceAll(`&#39;`,`'`)}
130
+ function D(e,t){let n=e,r=_.safeParse(t);if(!r.success)return console.warn(`Invalid whitespace string provided: “${t}”`),e;for(let e of r.data)switch(e){case`newline`:n=`<br />\n${n}`;break;case`trailing`:n=`${n} `;break;case`leading`:n=` ${n}`;break}return n.replaceAll(`&#39;`,`'`)}
131
131
  /**
132
132
  * Converts a FakeString (string|number|boolean) to a proper string
133
133
  *
@@ -141,14 +141,14 @@ function E(e,t){let n=e,r=g.safeParse(t);if(!r.success)return console.warn(`Inva
141
141
  * parseFakeString("test"); // Returns "test"
142
142
  * ```
143
143
  */
144
- function D(e){let t=``;return typeof e==`string`?t=e:typeof e==`number`?t=e.toString():typeof e==`boolean`&&(t=e?`Yes`:`No`),t.replaceAll(`&#39;`,`'`).replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}
144
+ function O(e){let t=``;return typeof e==`string`?t=e:typeof e==`number`?t=e.toString():typeof e==`boolean`&&(t=e?`Yes`:`No`),t.replaceAll(`&#39;`,`'`).replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}
145
145
  /**
146
146
  * Parses an OchreStringItem into a formatted string
147
147
  *
148
148
  * @param item - OchreStringItem to parse
149
149
  * @returns Formatted string with applied rendering and whitespace
150
150
  */
151
- function O(e){let t=``;switch(typeof e.string){case`string`:t=e.string;break;case`number`:case`boolean`:t=D(e.string);break;case`object`:{let n=Array.isArray(e.string)?e.string:[e.string];for(let e of n)if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)t+=D(e);else{let n=e.rend==null?D(e.content):ee(D(e.content),e.rend),r=e.whitespace==null?n:E(n,e.whitespace);t+=r}break}default:t=``;break}return t.replaceAll(`&#39;`,`'`).replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}
151
+ function k(e){let t=``;switch(typeof e.string){case`string`:t=e.string;break;case`number`:case`boolean`:t=O(e.string);break;case`object`:{let n=Array.isArray(e.string)?e.string:[e.string];for(let e of n)if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)t+=O(e);else{let n=e.rend==null?O(e.content):E(O(e.content),e.rend),r=e.whitespace==null?n:D(n,e.whitespace);t+=r}break}default:t=``;break}return t.replaceAll(`&#39;`,`'`).replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}
152
152
  /**
153
153
  * Parses rich text content into a formatted string with links and annotations
154
154
  *
@@ -156,8 +156,8 @@ function O(e){let t=``;switch(typeof e.string){case`string`:t=e.string;break;cas
156
156
  * @param footnotes - Optional array to collect footnotes during parsing
157
157
  * @returns Formatted string with HTML/markdown elements
158
158
  */
159
- function k(e,t){if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return T(D(e));if(`whitespace`in e&&!(`content`in e)&&!(`string`in e))return e.whitespace===`newline`?`
160
- `:``;if(`links`in e){let n=``;n=typeof e.string==`object`?A(e.string):D(e.string).replaceAll(`<`,String.raw`\<`).replaceAll(`{`,String.raw`\{`);let r=Array.isArray(e.links)?e.links:[e.links];for(let e of r)if(`resource`in e){let r=Array.isArray(e.resource)?e.resource[0]:e.resource,i=null;switch(r.content!=null&&(i=D(r.content).replaceAll(`<`,String.raw`\<`).replaceAll(`{`,String.raw`\{`)),r.type){case`image`:return r.rend===`inline`?`<InlineImage uuid="${r.uuid}" ${i===null?``:`content="${i}"`} height={${r.height?.toString()??`null`}} width={${r.width?.toString()??`null`}} />`:r.publicationDateTime==null?`<TooltipSpan type="image" ${i===null?``:`content="${i}"`}>${n}</TooltipSpan>`:`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${r.uuid}" type="image"${i===null?``:` content="${i}"`}>${n}</ExternalLink>`;case`internalDocument`:{let e=i?.toLocaleLowerCase(`en-US`).includes(`footnote`);return e?(t&&t.push({uuid:r.uuid,label:n,content:``}),` <Footnote uuid="${r.uuid}"${n?` label="${n}"`:``}${i===null?``:` content="${i}"`} />`):`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${r.uuid}" type="internalDocument" ${i===null?``:`content="${i}"`}>${n}</ExternalLink>`}case`externalDocument`:return r.publicationDateTime==null?`<TooltipSpan type="externalDocument" ${i===null?``:`content="${i}"`}>${n}</TooltipSpan>`:`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${r.uuid}" type="externalDocument" ${i===null?``:`content="${i}"`}>${n}</ExternalLink>`;case`webpage`:return`<ExternalLink href="${r.href}" type="webpage" ${i===null?``:`content="${i}"`}>${n}</ExternalLink>`;default:return``}}else if(`concept`in e){let t=Array.isArray(e.concept)?e.concept[0]:e.concept;return t.publicationDateTime==null?`<TooltipSpan type="concept">${n}</TooltipSpan>`:`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${t.uuid}" type="concept">${n}</ExternalLink>`}else if(`set`in e){let t=Array.isArray(e.set)?e.set[0]:e.set;return t.publicationDateTime==null?`<TooltipSpan type="set">${n}</TooltipSpan>`:`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${t.uuid}" type="set">${n}</ExternalLink>`}else if(`person`in e){let t=Array.isArray(e.person)?e.person[0]:e.person,r=t.identification?[`string`,`number`,`boolean`].includes(typeof t.identification.label)?D(t.identification.label):A(t.identification.label):null;return t.publicationDateTime==null?`<TooltipSpan type="${t.type??`person`}" ${r===null?``:`content="${r}"`}>${n}</TooltipSpan>`:`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${t.uuid}" type="${t.type??`person`}" ${r===null?``:`content="${r}"`}>${n}</ExternalLink>`}else if(`bibliography`in e){let t=Array.isArray(e.bibliography)?e.bibliography[0]:e.bibliography;return t.publicationDateTime==null?`<TooltipSpan type="bibliography">${n}</TooltipSpan>`:`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${t.uuid}" type="${t.type??`bibliography`}">${n}</ExternalLink>`}}let n=``;if(`string`in e){let r=Array.isArray(e.string)?e.string:[e.string];for(let e of r)n+=k(e,t);return`whitespace`in e&&e.whitespace!=null&&(n=E(T(n),e.whitespace)),n.replaceAll(`&#39;`,`'`).replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}else n=D(e.content),e.rend!=null&&(n=ee(T(n),e.rend)),e.whitespace!=null&&(n=E(T(n),e.whitespace));return n.replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}
159
+ function A(e,t){if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return T(O(e));if(`whitespace`in e&&!(`content`in e)&&!(`string`in e))return e.whitespace===`newline`?`
160
+ `:``;if(`links`in e){let n=``;n=typeof e.string==`object`?j(e.string):O(e.string).replaceAll(`<`,String.raw`\<`).replaceAll(`{`,String.raw`\{`);let r=Array.isArray(e.links)?e.links:[e.links];for(let e of r)if(`resource`in e){let r=Array.isArray(e.resource)?e.resource[0]:e.resource,i=null;switch(r.content!=null&&(i=O(r.content).replaceAll(`<`,String.raw`\<`).replaceAll(`{`,String.raw`\{`)),r.type){case`image`:return r.rend===`inline`?`<InlineImage uuid="${r.uuid}" ${i===null?``:`content="${i}"`} height={${r.height?.toString()??`null`}} width={${r.width?.toString()??`null`}} />`:r.publicationDateTime==null?`<TooltipSpan type="image" ${i===null?``:`content="${i}"`}>${n}</TooltipSpan>`:`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${r.uuid}" type="image"${i===null?``:` content="${i}"`}>${n}</ExternalLink>`;case`internalDocument`:{let e=i?.toLocaleLowerCase(`en-US`).includes(`footnote`);return e?(t&&t.push({uuid:r.uuid,label:n,content:``}),` <Footnote uuid="${r.uuid}"${n?` label="${n}"`:``}${i===null?``:` content="${i}"`} />`):`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${r.uuid}" type="internalDocument" ${i===null?``:`content="${i}"`}>${n}</ExternalLink>`}case`externalDocument`:return r.publicationDateTime==null?`<TooltipSpan type="externalDocument" ${i===null?``:`content="${i}"`}>${n}</TooltipSpan>`:`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${r.uuid}" type="externalDocument" ${i===null?``:`content="${i}"`}>${n}</ExternalLink>`;case`webpage`:return`<ExternalLink href="${r.href}" type="webpage" ${i===null?``:`content="${i}"`}>${n}</ExternalLink>`;default:return``}}else if(`concept`in e){let t=Array.isArray(e.concept)?e.concept[0]:e.concept;return t.publicationDateTime==null?`<TooltipSpan type="concept">${n}</TooltipSpan>`:`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${t.uuid}" type="concept">${n}</ExternalLink>`}else if(`set`in e){let t=Array.isArray(e.set)?e.set[0]:e.set;return t.publicationDateTime==null?`<TooltipSpan type="set">${n}</TooltipSpan>`:`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${t.uuid}" type="set">${n}</ExternalLink>`}else if(`person`in e){let t=Array.isArray(e.person)?e.person[0]:e.person,r=t.identification?[`string`,`number`,`boolean`].includes(typeof t.identification.label)?O(t.identification.label):j(t.identification.label):null;return t.publicationDateTime==null?`<TooltipSpan type="${t.type??`person`}" ${r===null?``:`content="${r}"`}>${n}</TooltipSpan>`:`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${t.uuid}" type="${t.type??`person`}" ${r===null?``:`content="${r}"`}>${n}</ExternalLink>`}else if(`bibliography`in e){let t=Array.isArray(e.bibliography)?e.bibliography[0]:e.bibliography;return t.publicationDateTime==null?`<TooltipSpan type="bibliography">${n}</TooltipSpan>`:`<ExternalLink href="https:\\/\\/ochre.lib.uchicago.edu/ochre?uuid=${t.uuid}" type="${t.type??`bibliography`}">${n}</ExternalLink>`}}let n=``;if(`string`in e){let r=Array.isArray(e.string)?e.string:[e.string];for(let e of r)n+=A(e,t);return`whitespace`in e&&e.whitespace!=null&&(n=D(T(n),e.whitespace)),n.replaceAll(`&#39;`,`'`).replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}else n=O(e.content),e.rend!=null&&(n=E(T(n),e.rend)),e.whitespace!=null&&(n=D(T(n),e.whitespace));return n.replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}
161
161
  /**
162
162
  * Parses raw string content into a formatted string
163
163
  *
@@ -165,14 +165,14 @@ function k(e,t){if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)r
165
165
  * @param language - Optional language code for content selection (defaults to "eng")
166
166
  * @returns Parsed and formatted string
167
167
  */
168
- function A(e,t=`eng`){switch(typeof e.content){case`string`:case`number`:case`boolean`:return D(e.content);case`object`:if(Array.isArray(e.content)){let n=w(e.content,t);if(n)return O(n);{let n=e.content[0];if(!n)throw Error(`No string item found for language “${t}” in the following content:\n${JSON.stringify(e.content)}.`);return O(n)}}else return O(e.content);default:return String(e.content).replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}}
168
+ function j(e,t=`eng`){switch(typeof e.content){case`string`:case`number`:case`boolean`:return O(e.content);case`object`:if(Array.isArray(e.content)){let n=ee(e.content,t);if(n)return k(n);{let n=e.content[0];if(!n)throw Error(`No string item found for language “${t}” in the following content:\n${JSON.stringify(e.content)}.`);return k(n)}}else return k(e.content);default:return String(e.content).replaceAll(/^(\d+)\./gm,String.raw`$1\.`)}}
169
169
  /**
170
170
  * Get the category of an item from the OCHRE API response
171
171
  * @param keys - The keys of the OCHRE API response
172
172
  * @returns The category of the item
173
173
  * @internal
174
174
  */
175
- function te(e){let t=e.find(e=>f.safeParse(e).success);if(!t){let t=e.find(e=>![`uuid`,`uuidBelongsTo`,`belongsTo`,`publicationDateTime`,`metadata`,`languages`].includes(e));throw Error(`Invalid OCHRE data; found unexpected "${t}" key`)}let n=f.parse(t);return n}
175
+ function te(e){let t=e.find(e=>p.safeParse(e).success);if(!t){let t=e.find(e=>![`uuid`,`uuidBelongsTo`,`belongsTo`,`publicationDateTime`,`metadata`,`languages`].includes(e));throw Error(`Invalid OCHRE data; found unexpected "${t}" key`)}let n=p.parse(t);return n}
176
176
  /**
177
177
  * Fetches raw OCHRE data by UUID from the OCHRE API
178
178
  *
@@ -191,7 +191,7 @@ function te(e){let t=e.find(e=>f.safeParse(e).success);if(!t){let t=e.find(e=>![
191
191
  *
192
192
  * @internal
193
193
  */
194
- async function ne(e){try{let t=l.parse(e),n=await fetch(`https://ochre.lib.uchicago.edu/ochre?uuid=${t}&format=json&lang="*"`);if(!n.ok)throw Error(`Failed to fetch OCHRE data`);let r=await n.json();if(!(`ochre`in r))throw Error(`Invalid OCHRE data: API response missing 'ochre' key`);return[null,r]}catch(e){return[e instanceof Error?e.message:`Unknown error`,null]}}
194
+ async function ne(e){try{let t=u.parse(e),n=await fetch(`https://ochre.lib.uchicago.edu/ochre?uuid=${t}&format=json&lang="*"`);if(!n.ok)throw Error(`Failed to fetch OCHRE data`);let r=await n.json();if(!(`ochre`in r))throw Error(`Invalid OCHRE data: API response missing 'ochre' key`);return[null,r]}catch(e){return[e instanceof Error?e.message:`Unknown error`,null]}}
195
195
  /**
196
196
  * Fetches and parses an OCHRE item from the OCHRE API
197
197
  *
@@ -225,77 +225,77 @@ async function ne(e){try{let t=l.parse(e),n=await fetch(`https://ochre.lib.uchic
225
225
  *
226
226
  * If the fetch/parse fails, the returned object will have an `error` property.
227
227
  */
228
- async function re(e,t,n){try{let[r,i]=await ne(e);if(r!==null)throw Error(r);let a=te(Object.keys(i.ochre)),o;switch(a){case`resource`:if(!(`resource`in i.ochre))throw Error(`Invalid OCHRE data: API response missing 'resource' key`);o=X(i.ochre.resource);break;case`spatialUnit`:if(!(`spatialUnit`in i.ochre))throw Error(`Invalid OCHRE data: API response missing 'spatialUnit' key`);o=me(i.ochre.spatialUnit);break;case`concept`:if(!(`concept`in i.ochre))throw Error(`Invalid OCHRE data: API response missing 'concept' key`);o=ge(i.ochre.concept);break;case`period`:if(!(`period`in i.ochre))throw Error(`Invalid OCHRE data: API response missing 'period' key`);o=W(i.ochre.period);break;case`bibliography`:if(!(`bibliography`in i.ochre))throw Error(`Invalid OCHRE data: API response missing 'bibliography' key`);o=K(i.ochre.bibliography);break;case`person`:if(!(`person`in i.ochre))throw Error(`Invalid OCHRE data: API response missing 'person' key`);o=oe(i.ochre.person);break;case`propertyValue`:if(!(`propertyValue`in i.ochre))throw Error(`Invalid OCHRE data: API response missing 'propertyValue' key`);o=J(i.ochre.propertyValue);break;case`set`:if(!(`set`in i.ochre))throw Error(`Invalid OCHRE data: API response missing 'set' key`);o=pe(i.ochre.set,n);break;case`tree`:if(!(`tree`in i.ochre))throw Error(`Invalid OCHRE data: API response missing 'tree' key`);o=fe(i.ochre.tree);break;default:throw Error(`Invalid category`)}let s=ae(i.ochre.metadata),c={uuid:i.ochre.uuidBelongsTo,abbreviation:D(i.ochre.belongsTo)};return{error:null,metadata:s,belongsTo:c,item:o,category:t}}catch(e){return{error:e instanceof Error?e.message:`Unknown error`,metadata:void 0,belongsTo:void 0,item:void 0,category:void 0}}}
228
+ async function re(e,t,n){try{let[r,i]=await ne(e);if(r!==null)throw Error(r);let a=te(Object.keys(i.ochre)),o;switch(a){case`resource`:if(!(`resource`in i.ochre))throw Error(`Invalid OCHRE data: API response missing 'resource' key`);o=X(i.ochre.resource);break;case`spatialUnit`:if(!(`spatialUnit`in i.ochre))throw Error(`Invalid OCHRE data: API response missing 'spatialUnit' key`);o=he(i.ochre.spatialUnit);break;case`concept`:if(!(`concept`in i.ochre))throw Error(`Invalid OCHRE data: API response missing 'concept' key`);o=_e(i.ochre.concept);break;case`period`:if(!(`period`in i.ochre))throw Error(`Invalid OCHRE data: API response missing 'period' key`);o=G(i.ochre.period);break;case`bibliography`:if(!(`bibliography`in i.ochre))throw Error(`Invalid OCHRE data: API response missing 'bibliography' key`);o=fe(i.ochre.bibliography);break;case`person`:if(!(`person`in i.ochre))throw Error(`Invalid OCHRE data: API response missing 'person' key`);o=oe(i.ochre.person);break;case`propertyValue`:if(!(`propertyValue`in i.ochre))throw Error(`Invalid OCHRE data: API response missing 'propertyValue' key`);o=J(i.ochre.propertyValue);break;case`set`:if(!(`set`in i.ochre))throw Error(`Invalid OCHRE data: API response missing 'set' key`);o=me(i.ochre.set,n);break;case`tree`:if(!(`tree`in i.ochre))throw Error(`Invalid OCHRE data: API response missing 'tree' key`);o=pe(i.ochre.tree);break;default:throw Error(`Invalid category`)}let s=ae(i.ochre.metadata),c={uuid:i.ochre.uuidBelongsTo,abbreviation:O(i.ochre.belongsTo)};return{error:null,metadata:s,belongsTo:c,item:o,category:t}}catch(e){return{error:e instanceof Error?e.message:`Unknown error`,metadata:void 0,belongsTo:void 0,item:void 0,category:void 0}}}
229
229
  /**
230
230
  * Parses raw identification data into the standardized Identification type
231
231
  *
232
232
  * @param identification - Raw identification data from OCHRE format
233
233
  * @returns Parsed Identification object with label and abbreviation
234
234
  */
235
- function j(e){try{let t={label:[`string`,`number`,`boolean`].includes(typeof e.label)?D(e.label):A(e.label),abbreviation:``};for(let n of Object.keys(e).filter(e=>e!==`label`))t[n]=A(e[n]);return t}catch(e){return console.error(e),{label:``,abbreviation:``}}}
235
+ function M(e){try{let t={label:[`string`,`number`,`boolean`].includes(typeof e.label)?O(e.label):j(e.label),abbreviation:``};for(let n of Object.keys(e).filter(e=>e!==`label`))t[n]=j(e[n]);return t}catch(e){return console.error(e),{label:``,abbreviation:``}}}
236
236
  /**
237
237
  * Parses raw language data into an array of language codes
238
238
  *
239
239
  * @param language - Raw language data, either single or array
240
240
  * @returns Array of language codes as strings
241
241
  */
242
- function ie(e){return e==null?[`eng`]:Array.isArray(e)?e.map(e=>A(e)):[A(e)]}
242
+ function ie(e){return e==null?[`eng`]:Array.isArray(e)?e.map(e=>j(e)):[j(e)]}
243
243
  /**
244
244
  * Parses raw metadata into the standardized Metadata type
245
245
  *
246
246
  * @param metadata - Raw metadata from OCHRE format
247
247
  * @returns Parsed Metadata object
248
248
  */
249
- function ae(e){let t={label:``,abbreviation:``};if(e.item)if(e.item.label||e.item.abbreviation){let n=``,r=``;e.item.label&&(n=A(e.item.label)),e.item.abbreviation&&(r=A(e.item.abbreviation)),t={label:n,abbreviation:r}}else t=j(e.item.identification);let n=null,r=e.project?.identification?j(e.project.identification):null;return r&&(n={...r,website:e.project?.identification.website??null}),{project:n?{identification:n}:null,item:e.item?{identification:t,category:e.item.category,type:e.item.type,maxLength:e.item.maxLength??null}:null,dataset:A(e.dataset),publisher:A(e.publisher),languages:ie(e.language),identifier:A(e.identifier),description:A(e.description)}}
249
+ function ae(e){let t={label:``,abbreviation:``};if(e.item)if(e.item.label||e.item.abbreviation){let n=``,r=``;e.item.label&&(n=j(e.item.label)),e.item.abbreviation&&(r=j(e.item.abbreviation)),t={label:n,abbreviation:r}}else t=M(e.item.identification);let n=null,r=e.project?.identification?M(e.project.identification):null;return r&&(n={...r,website:e.project?.identification.website??null}),{project:n?{identification:n}:null,item:e.item?{identification:t,category:e.item.category,type:e.item.type,maxLength:e.item.maxLength??null}:null,dataset:j(e.dataset),publisher:j(e.publisher),languages:ie(e.language),identifier:j(e.identifier),description:j(e.description)}}
250
250
  /**
251
251
  * Parses raw context item data into the standardized ContextItem type
252
252
  *
253
253
  * @param contextItem - Raw context item data from OCHRE format
254
254
  * @returns Parsed ContextItem object
255
255
  */
256
- function M(e){return{uuid:e.uuid,publicationDateTime:e.publicationDateTime==null?null:new Date(e.publicationDateTime),number:e.n,content:D(e.content)}}
256
+ function N(e){return{uuid:e.uuid,publicationDateTime:e.publicationDateTime==null?null:new Date(e.publicationDateTime),number:e.n,content:O(e.content)}}
257
257
  /**
258
258
  * Parses raw context data into the standardized Context type
259
259
  *
260
260
  * @param context - Raw context data from OCHRE format
261
261
  * @returns Parsed Context object
262
262
  */
263
- function N(e){let t=Array.isArray(e.context)?e.context:[e.context],n={nodes:t.map(e=>{let t=[];if(`spatialUnit`in e&&e.spatialUnit){let n=Array.isArray(e.spatialUnit)?e.spatialUnit:[e.spatialUnit];for(let e of n)t.push(M(e))}return{tree:M(e.tree),project:M(e.project),spatialUnit:t}}),displayPath:e.displayPath};return n}
263
+ function P(e){let t=Array.isArray(e.context)?e.context:[e.context],n={nodes:t.map(e=>{let t=[];if(`spatialUnit`in e&&e.spatialUnit){let n=Array.isArray(e.spatialUnit)?e.spatialUnit:[e.spatialUnit];for(let e of n)t.push(N(e))}return{tree:N(e.tree),project:N(e.project),spatialUnit:t}}),displayPath:e.displayPath};return n}
264
264
  /**
265
265
  * Parses raw license data into the standardized License type
266
266
  *
267
267
  * @param license - Raw license data from OCHRE format
268
268
  * @returns Parsed License object or null if invalid
269
269
  */
270
- function P(e){return typeof e.license==`string`?null:{content:e.license.content,url:e.license.target}}
270
+ function F(e){return typeof e.license==`string`?null:{content:e.license.content,url:e.license.target}}
271
271
  /**
272
272
  * Parses raw person data into the standardized Person type
273
273
  *
274
274
  * @param person - Raw person data from OCHRE format
275
275
  * @returns Parsed Person object
276
276
  */
277
- function oe(e){return{uuid:e.uuid,category:`person`,publicationDateTime:e.publicationDateTime==null?null:new Date(e.publicationDateTime),type:e.type??null,number:e.n??null,context:e.context?N(e.context):null,date:e.date==null?null:new Date(e.date),identification:e.identification?j(e.identification):null,availability:e.availability?P(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?B(e.coordinates):null,content:e.content==null?null:D(e.content),events:e.events?H(Array.isArray(e.events.event)?e.events.event:[e.events.event]):[],properties:e.properties?U(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}
277
+ function oe(e){return{uuid:e.uuid,category:`person`,publicationDateTime:e.publicationDateTime==null?null:new Date(e.publicationDateTime),type:e.type??null,number:e.n??null,context:e.context?P(e.context):null,date:e.date==null?null:new Date(e.date),identification:e.identification?M(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?V(e.coordinates):null,content:e.content==null?null:O(e.content),events:e.events?U(Array.isArray(e.events.event)?e.events.event:[e.events.event]):[],properties:e.properties?W(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}
278
278
  /**
279
279
  * Parses raw person data into the standardized Person type
280
280
  *
281
281
  * @param persons - Array of raw person data from OCHRE format
282
282
  * @returns Array of parsed Person objects
283
283
  */
284
- function F(e){let t=[];for(let n of e)t.push(oe(n));return t}
284
+ function I(e){let t=[];for(let n of e)t.push(oe(n));return t}
285
285
  /**
286
286
  * Parses an array of raw links into standardized Link objects
287
287
  *
288
288
  * @param linkRaw - Raw OCHRE link
289
289
  * @returns Parsed Link object
290
290
  */
291
- function se(e){let t=`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(!t)throw Error(`Invalid link provided: ${JSON.stringify(e,null,2)}`);let n=Array.isArray(t)?t:[t],r=[];for(let t of n){let n={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 t?t.content==null?null:D(t.content):null,href:`href`in t&&t.href!=null?t.href:null,uuid:t.uuid,type:t.type??null,identification:t.identification?j(t.identification):null,image:null,bibliographies:`bibliography`in e?q(Array.isArray(e.bibliography)?e.bibliography:[e.bibliography]):null,publicationDateTime:t.publicationDateTime==null?null:new Date(t.publicationDateTime)};`height`in t&&t.height!=null&&t.width!=null&&t.heightPreview!=null&&t.widthPreview!=null&&(n.image={isInline:t.rend===`inline`,isPrimary:t.isPrimary??!1,heightPreview:t.heightPreview,widthPreview:t.widthPreview,height:t.height,width:t.width}),r.push(n)}return r}
291
+ function se(e){let t=`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(!t)throw Error(`Invalid link provided: ${JSON.stringify(e,null,2)}`);let n=Array.isArray(t)?t:[t],r=[];for(let t of n){let n={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 t?t.content==null?null:O(t.content):null,href:`href`in t&&t.href!=null?t.href:null,uuid:t.uuid,type:t.type??null,identification:t.identification?M(t.identification):null,image:null,bibliographies:`bibliography`in e?q(Array.isArray(e.bibliography)?e.bibliography:[e.bibliography]):null,publicationDateTime:t.publicationDateTime==null?null:new Date(t.publicationDateTime)};`height`in t&&t.height!=null&&t.width!=null&&t.heightPreview!=null&&t.widthPreview!=null&&(n.image={isInline:t.rend===`inline`,isPrimary:t.isPrimary??!1,heightPreview:t.heightPreview,widthPreview:t.widthPreview,height:t.height,width:t.width}),r.push(n)}return r}
292
292
  /**
293
293
  * Parses an array of raw links into standardized Link objects
294
294
  *
295
295
  * @param links - Array of raw OCHRE links
296
296
  * @returns Array of parsed Link objects
297
297
  */
298
- function I(e){let t=[];for(let n of e)t.push(...se(n));return t}
298
+ function L(e){let t=[];for(let n of e)t.push(...se(n));return t}
299
299
  /**
300
300
  * Parses raw document content into a standardized Document structure
301
301
  *
@@ -303,14 +303,14 @@ function I(e){let t=[];for(let n of e)t.push(...se(n));return t}
303
303
  * @param language - Language code to use for content selection (defaults to "eng")
304
304
  * @returns Parsed Document object with content and footnotes
305
305
  */
306
- function L(e,t=`eng`){let n=``,r=[],i=Array.isArray(e)?e.find(e=>e.lang===t):e;if(typeof i.string==`string`||typeof i.string==`number`||typeof i.string==`boolean`)n+=T(D(i.string));else{let e=Array.isArray(i.string)?i.string:[i.string];for(let t of e)n+=k(t,r)}return{content:n,footnotes:r}}
306
+ function R(e,t=`eng`){let n=``,r=[],i=Array.isArray(e)?e.find(e=>e.lang===t):e;if(typeof i.string==`string`||typeof i.string==`number`||typeof i.string==`boolean`)n+=T(O(i.string));else{let e=Array.isArray(i.string)?i.string:[i.string];for(let t of e)n+=A(t,r)}return{content:n,footnotes:r}}
307
307
  /**
308
308
  * Parses raw image data into a standardized Image structure
309
309
  *
310
310
  * @param image - Raw image data in OCHRE format
311
311
  * @returns Parsed Image object or null if invalid
312
312
  */
313
- function R(e){return{publicationDateTime:e.publicationDateTime==null?null:new Date(e.publicationDateTime),identification:e.identification?j(e.identification):null,url:e.href??(e.htmlImgSrcPrefix==null&&e.content!=null?D(e.content):null),htmlPrefix:e.htmlImgSrcPrefix??null,content:e.htmlImgSrcPrefix!=null&&e.content!=null?D(e.content):null,widthPreview:e.widthPreview??null,heightPreview:e.heightPreview??null,width:e.width??null,height:e.height??null}}
313
+ function z(e){return{publicationDateTime:e.publicationDateTime==null?null:new Date(e.publicationDateTime),identification:e.identification?M(e.identification):null,url:e.href??(e.htmlImgSrcPrefix==null&&e.content!=null?O(e.content):null),htmlPrefix:e.htmlImgSrcPrefix??null,content:e.htmlImgSrcPrefix!=null&&e.content!=null?O(e.content):null,widthPreview:e.widthPreview??null,heightPreview:e.heightPreview??null,width:e.width??null,height:e.height??null}}
314
314
  /**
315
315
  * Parses raw notes into standardized Note objects
316
316
  *
@@ -318,35 +318,35 @@ function R(e){return{publicationDateTime:e.publicationDateTime==null?null:new Da
318
318
  * @param language - Language code for content selection (defaults to "eng")
319
319
  * @returns Array of parsed Note objects
320
320
  */
321
- function z(e,t=`eng`){let n=[];for(let r of e){if(typeof r==`string`){if(r===``)continue;n.push({number:-1,title:null,content:r});continue}let e=``,i=Array.isArray(r.content)?r.content:[r.content],a=i.find(e=>e.lang===t);if(!a&&(a=i[0],!a))throw Error(`Note does not have a valid content item: ${JSON.stringify(r,null,2)}`);e=typeof a.string==`string`||typeof a.string==`number`||typeof a.string==`boolean`?T(D(a.string)):T(L(a).content),n.push({number:r.noteNo,title:a.title==null?null:D(a.title),content:e})}return n}
321
+ function B(e,t=`eng`){let n=[];for(let r of e){if(typeof r==`string`){if(r===``)continue;n.push({number:-1,title:null,content:r});continue}let e=``,i=Array.isArray(r.content)?r.content:[r.content],a=i.find(e=>e.lang===t);if(!a&&(a=i[0],!a))throw Error(`Note does not have a valid content item: ${JSON.stringify(r,null,2)}`);e=typeof a.string==`string`||typeof a.string==`number`||typeof a.string==`boolean`?T(O(a.string)):T(R(a).content),n.push({number:r.noteNo,title:a.title==null?null:O(a.title),content:e})}return n}
322
322
  /**
323
323
  * Parses raw coordinates data into a standardized Coordinates structure
324
324
  *
325
325
  * @param coordinates - Raw coordinates data in OCHRE format
326
326
  * @returns Parsed Coordinates object
327
327
  */
328
- function B(e){if(typeof e==`string`){let[t,n]=e.split(`, `);return{latitude:Number(t),longitude:Number(n),type:null,label:null}}return{latitude:e.latitude,longitude:e.longitude,type:e.coord?.coordType??null,label:e.coord?.coordLabel==null?null:D(e.coord.coordLabel)}}
328
+ function V(e){if(typeof e==`string`){let[t,n]=e.split(`, `);return{latitude:Number(t),longitude:Number(n),type:null,label:null}}return{latitude:e.latitude,longitude:e.longitude,type:e.coord?.coordType??null,label:e.coord?.coordLabel==null?null:O(e.coord.coordLabel)}}
329
329
  /**
330
330
  * Parses a raw observation into a standardized Observation structure
331
331
  *
332
332
  * @param observation - Raw observation data in OCHRE format
333
333
  * @returns Parsed Observation object
334
334
  */
335
- function V(e){return{number:e.observationNo,date:e.date==null?null:new Date(e.date),observers:e.observers==null?[]:D(e.observers).split(`;`).map(e=>e.trim()),notes:e.notes?z(Array.isArray(e.notes.note)?e.notes.note:[e.notes.note]):[],links:e.links?I(Array.isArray(e.links)?e.links:[e.links]):[],properties:e.properties?U(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}
335
+ function H(e){return{number:e.observationNo,date:e.date==null?null:new Date(e.date),observers:e.observers==null?[]:O(e.observers).split(`;`).map(e=>e.trim()),notes:e.notes?B(Array.isArray(e.notes.note)?e.notes.note:[e.notes.note]):[],links:e.links?L(Array.isArray(e.links)?e.links:[e.links]):[],properties:e.properties?W(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}
336
336
  /**
337
337
  * Parses an array of raw observations into standardized Observation objects
338
338
  *
339
339
  * @param observations - Array of raw observations in OCHRE format
340
340
  * @returns Array of parsed Observation objects
341
341
  */
342
- function ce(e){let t=[];for(let n of e)t.push(V(n));return t}
342
+ function ce(e){let t=[];for(let n of e)t.push(H(n));return t}
343
343
  /**
344
344
  * Parses an array of raw events into standardized Event objects
345
345
  *
346
346
  * @param events - Array of raw events in OCHRE format
347
347
  * @returns Array of parsed Event objects
348
348
  */
349
- function H(e){let t=[];for(let n of e)t.push({date:n.dateTime==null?null:new Date(n.dateTime),label:A(n.label),agent:n.agent?{uuid:n.agent.uuid,content:D(n.agent.content)}:null});return t}function le(e,t=`eng`){let n=`value`in e&&e.value?Array.isArray(e.value)?e.value:[e.value]:[],r=n.map(e=>{let t=null,n=null;if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`){t=D(e);let r={content:t,booleanValue:n,isUncertain:!1,type:`string`,category:`value`,uuid:null,publicationDateTime:null,unit:null};return r}else{switch(e.type){case`integer`:case`decimal`:t=Number(e.content);break;case`dateTime`:t=e.content?typeof e.content==`string`?new Date(e.content):new Date(A({content:e.content})):null;break;default:`slug`in e&&e.slug!=null?t=D(e.slug):e.content!=null&&(t=A({content:e.content})),e.type===`boolean`&&(n=e.booleanValue??null);break}let r=`string`;if(e.type!=null){let{data:t,error:n}=p.safeParse(e.type);if(n)throw Error(`Invalid property value content type: "${e.type}"`);r=t}let i={content:t,booleanValue:n,isUncertain:e.isUncertain??!1,type:r,category:e.category??`value`,uuid:e.uuid??null,publicationDateTime:e.publicationDateTime==null?null:new Date(e.publicationDateTime),unit:e.unit??null};return i}});return{uuid:e.label.uuid,label:A(e.label,t).replace(/\s*\.{3}$/,``).trim(),values:r,comment:e.comment==null?null:D(e.comment),properties:e.property?U(Array.isArray(e.property)?e.property:[e.property]):[]}}
349
+ function U(e){let t=[];for(let n of e)t.push({date:n.dateTime==null?null:new Date(n.dateTime),label:j(n.label),agent:n.agent?{uuid:n.agent.uuid,content:O(n.agent.content)}:null});return t}function le(e,t=`eng`){let n=`value`in e&&e.value?Array.isArray(e.value)?e.value:[e.value]:[],r=n.map(e=>{let t=null,n=null;if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`){t=O(e);let r={content:t,booleanValue:n,isUncertain:!1,type:`string`,category:`value`,uuid:null,publicationDateTime:null,unit:null};return r}else{switch(e.type){case`integer`:case`decimal`:t=Number(e.content);break;case`dateTime`:t=e.content?typeof e.content==`string`?new Date(e.content):new Date(j({content:e.content})):null;break;default:`slug`in e&&e.slug!=null?t=O(e.slug):e.content!=null&&(t=j({content:e.content})),e.type===`boolean`&&(n=e.booleanValue??null);break}let r=`string`;if(e.type!=null){let{data:t,error:n}=m.safeParse(e.type);if(n)throw Error(`Invalid property value content type: "${e.type}"`);r=t}let i={content:t,booleanValue:n,isUncertain:e.isUncertain??!1,type:r,category:e.category??`value`,uuid:e.uuid??null,publicationDateTime:e.publicationDateTime==null?null:new Date(e.publicationDateTime),unit:e.unit??null};return i}});return{uuid:e.label.uuid,label:j(e.label,t).replace(/\s*\.{3}$/,``).trim(),values:r,comment:e.comment==null?null:O(e.comment),properties:e.property?W(Array.isArray(e.property)?e.property:[e.property]):[]}}
350
350
  /**
351
351
  * Parses raw properties into standardized Property objects
352
352
  *
@@ -354,56 +354,56 @@ function H(e){let t=[];for(let n of e)t.push({date:n.dateTime==null?null:new Dat
354
354
  * @param language - Language code for content selection (defaults to "eng")
355
355
  * @returns Array of parsed Property objects
356
356
  */
357
- function U(e,t=`eng`){let n=[];for(let r of e)n.push(le(r,t));return n}
357
+ function W(e,t=`eng`){let n=[];for(let r of e)n.push(le(r,t));return n}
358
358
  /**
359
359
  * Parses raw interpretations into standardized Interpretation objects
360
360
  *
361
361
  * @param interpretations - Array of raw interpretations in OCHRE format
362
362
  * @returns Array of parsed Interpretation objects
363
363
  */
364
- function ue(e){let t=[];for(let n of e)t.push({date:new Date(n.date),number:n.interpretationNo,properties:n.properties?U(Array.isArray(n.properties.property)?n.properties.property:[n.properties.property]):[]});return t}
364
+ function ue(e){let t=[];for(let n of e)t.push({date:new Date(n.date),number:n.interpretationNo,properties:n.properties?W(Array.isArray(n.properties.property)?n.properties.property:[n.properties.property]):[]});return t}
365
365
  /**
366
366
  * Parses raw image map data into a standardized ImageMap structure
367
367
  *
368
368
  * @param imageMap - Raw image map data in OCHRE format
369
369
  * @returns Parsed ImageMap object
370
370
  */
371
- function de(e){let t={area:[],width:e.width,height:e.height},n=Array.isArray(e.area)?e.area:[e.area];for(let e of n)t.area.push({uuid:e.uuid,publicationDateTime:e.publicationDateTime==null?null:new Date(e.publicationDateTime),type:e.type,title:D(e.title),shape:e.shape===`rect`?`rectangle`:`polygon`,coords:e.coords.split(`,`).map(e=>Number.parseInt(e))});return t}
371
+ function de(e){let t={area:[],width:e.width,height:e.height},n=Array.isArray(e.area)?e.area:[e.area];for(let e of n)t.area.push({uuid:(0,l.randomUUID)(),itemUuid:e.uuid,publicationDateTime:e.publicationDateTime==null?null:new Date(e.publicationDateTime),type:e.type,title:O(e.title),shape:e.shape===`rect`?`rectangle`:`polygon`,coords:e.coords.split(`,`).map(e=>Number.parseInt(e))});return t}
372
372
  /**
373
373
  * Parses raw period data into a standardized Period structure
374
374
  *
375
375
  * @param period - Raw period data in OCHRE format
376
376
  * @returns Parsed Period object
377
377
  */
378
- function W(e){return{uuid:e.uuid,category:`period`,publicationDateTime:e.publicationDateTime==null?null:new Date(e.publicationDateTime),type:e.type??null,number:e.n??null,identification:j(e.identification),description:e.description?A(e.description):null}}
378
+ function G(e){return{uuid:e.uuid,category:`period`,publicationDateTime:e.publicationDateTime==null?null:new Date(e.publicationDateTime),type:e.type??null,number:e.n??null,identification:M(e.identification),description:e.description?j(e.description):null}}
379
379
  /**
380
380
  * Parses an array of raw periods into standardized Period objects
381
381
  *
382
382
  * @param periods - Array of raw periods in OCHRE format
383
383
  * @returns Array of parsed Period objects
384
384
  */
385
- function G(e){let t=[];for(let n of e)t.push(W(n));return t}
385
+ function K(e){let t=[];for(let n of e)t.push(G(n));return t}
386
386
  /**
387
387
  * Parses raw bibliography data into a standardized Bibliography structure
388
388
  *
389
389
  * @param bibliography - Raw bibliography data in OCHRE format
390
390
  * @returns Parsed Bibliography object
391
391
  */
392
- function K(e){let t=null;return e.source?.resource&&(t={uuid:e.source.resource.uuid,publicationDateTime:e.source.resource.publicationDateTime?new Date(e.source.resource.publicationDateTime):null,type:e.source.resource.type,identification:j(e.source.resource.identification)}),{uuid:e.uuid,category:`bibliography`,publicationDateTime:e.publicationDateTime==null?null:new Date(e.publicationDateTime),type:e.type??null,number:e.n??null,identification:e.identification?j(e.identification):null,projectIdentification:e.project?.identification?j(e.project.identification):null,context:e.context?N(e.context):null,citation:{format:e.citationFormat??null,short:e.citationFormatSpan?D(`default:span`in e.citationFormatSpan?e.citationFormatSpan[`default:span`].content:e.citationFormatSpan.span.content):null,long:e.referenceFormatDiv?D(`default:div`in e.referenceFormatDiv?e.referenceFormatDiv[`default:div`][`default:div`].content:e.referenceFormatDiv.div.div.content):null},publicationInfo:{publishers:e.publicationInfo?.publishers?F(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:D(e.entryInfo.startIssue),startVolume:D(e.entryInfo.startVolume)}:null,source:{resource:t,documentUrl:e.sourceDocument?`https://ochre.lib.uchicago.edu/ochre?uuid=${e.sourceDocument.uuid}&load`:null},periods:e.periods?G(Array.isArray(e.periods.period)?e.periods.period:[e.periods.period]):[],authors:e.authors?F(Array.isArray(e.authors.person)?e.authors.person:[e.authors.person]):[],properties:e.properties?U(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}
392
+ function fe(e){let t=null;return e.source?.resource&&(t={uuid:e.source.resource.uuid,publicationDateTime:e.source.resource.publicationDateTime?new Date(e.source.resource.publicationDateTime):null,type:e.source.resource.type,identification:M(e.source.resource.identification)}),{uuid:e.uuid,category:`bibliography`,publicationDateTime:e.publicationDateTime==null?null:new Date(e.publicationDateTime),type:e.type??null,number:e.n??null,identification:e.identification?M(e.identification):null,projectIdentification:e.project?.identification?M(e.project.identification):null,context:e.context?P(e.context):null,citation:{format:e.citationFormat??null,short:e.citationFormatSpan?O(`default:span`in e.citationFormatSpan?e.citationFormatSpan[`default:span`].content:e.citationFormatSpan.span.content):null,long:e.referenceFormatDiv?O(`default:div`in e.referenceFormatDiv?e.referenceFormatDiv[`default:div`][`default:div`].content:e.referenceFormatDiv.div.div.content):null},publicationInfo:{publishers:e.publicationInfo?.publishers?I(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:O(e.entryInfo.startIssue),startVolume:O(e.entryInfo.startVolume)}:null,source:{resource:t,documentUrl:e.sourceDocument?`https://ochre.lib.uchicago.edu/ochre?uuid=${e.sourceDocument.uuid}&load`:null},periods:e.periods?K(Array.isArray(e.periods.period)?e.periods.period:[e.periods.period]):[],authors:e.authors?I(Array.isArray(e.authors.person)?e.authors.person:[e.authors.person]):[],properties:e.properties?W(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]}}
393
393
  /**
394
394
  * Parses an array of raw bibliographies into standardized Bibliography objects
395
395
  *
396
396
  * @param bibliographies - Array of raw bibliographies in OCHRE format
397
397
  * @returns Array of parsed Bibliography objects
398
398
  */
399
- function q(e){let t=[];for(let n of e)t.push(K(n));return t}
399
+ function q(e){let t=[];for(let n of e)t.push(fe(n));return t}
400
400
  /**
401
401
  * Parses raw property value data into a standardized PropertyValue structure
402
402
  *
403
403
  * @param propertyValue - Raw property value data in OCHRE format
404
404
  * @returns Parsed PropertyValue object
405
405
  */
406
- function J(e){return{uuid:e.uuid,category:`propertyValue`,number:e.n,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,context:e.context?N(e.context):null,availability:e.availability?P(e.availability):null,identification:j(e.identification),date:e.date?new Date(e.date):null,creators:e.creators?F(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],description:e.description?[`string`,`number`,`boolean`].includes(typeof e.description)?D(e.description):A(e.description):``,notes:e.notes?z(Array.isArray(e.notes.note)?e.notes.note:[e.notes.note]):[],links:e.links?I(Array.isArray(e.links)?e.links:[e.links]):[]}}
406
+ function J(e){return{uuid:e.uuid,category:`propertyValue`,number:e.n,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,context:e.context?P(e.context):null,availability:e.availability?F(e.availability):null,identification:M(e.identification),date:e.date?new Date(e.date):null,creators:e.creators?I(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],description:e.description?[`string`,`number`,`boolean`].includes(typeof e.description)?O(e.description):j(e.description):``,notes:e.notes?B(Array.isArray(e.notes.note)?e.notes.note:[e.notes.note]):[],links:e.links?L(Array.isArray(e.links)?e.links:[e.links]):[]}}
407
407
  /**
408
408
  * Parses an array of raw property values into standardized PropertyValue objects
409
409
  *
@@ -417,21 +417,21 @@ function Y(e){let t=[];for(let n of e)t.push(J(n));return t}
417
417
  * @param tree - Raw tree data in OCHRE format
418
418
  * @returns Parsed Tree object or null if invalid
419
419
  */
420
- function fe(e){let t=[];e.creators&&(t=F(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]));let n=null;e.date!=null&&(n=new Date(e.date));let r=[],i=[],a=[],o=[],s=[],c=[],l=[];typeof e.items!=`string`&&`resource`in e.items&&(r=Z(Array.isArray(e.items.resource)?e.items.resource:[e.items.resource])),typeof e.items!=`string`&&`spatialUnit`in e.items&&(i=he(Array.isArray(e.items.spatialUnit)?e.items.spatialUnit:[e.items.spatialUnit])),typeof e.items!=`string`&&`concept`in e.items&&(a=Q(Array.isArray(e.items.concept)?e.items.concept:[e.items.concept])),typeof e.items!=`string`&&`period`in e.items&&(o=G(Array.isArray(e.items.period)?e.items.period:[e.items.period])),typeof e.items!=`string`&&`bibliography`in e.items&&(s=q(Array.isArray(e.items.bibliography)?e.items.bibliography:[e.items.bibliography])),typeof e.items!=`string`&&`person`in e.items&&(c=F(Array.isArray(e.items.person)?e.items.person:[e.items.person])),typeof e.items!=`string`&&`propertyValue`in e.items&&(l=Y(Array.isArray(e.items.propertyValue)?e.items.propertyValue:[e.items.propertyValue]));let u={uuid:e.uuid,category:`tree`,publicationDateTime:new Date(e.publicationDateTime),identification:j(e.identification),creators:t,license:P(e.availability),date:n,type:e.type,number:e.n,items:{resources:r,spatialUnits:i,concepts:a,periods:o,bibliographies:s,persons:c,propertyValues:l},properties:e.properties?U(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]};return u}
420
+ function pe(e){let t=[];e.creators&&(t=I(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]));let n=null;e.date!=null&&(n=new Date(e.date));let r=[],i=[],a=[],o=[],s=[],c=[],l=[];typeof e.items!=`string`&&`resource`in e.items&&(r=Z(Array.isArray(e.items.resource)?e.items.resource:[e.items.resource])),typeof e.items!=`string`&&`spatialUnit`in e.items&&(i=ge(Array.isArray(e.items.spatialUnit)?e.items.spatialUnit:[e.items.spatialUnit])),typeof e.items!=`string`&&`concept`in e.items&&(a=ye(Array.isArray(e.items.concept)?e.items.concept:[e.items.concept])),typeof e.items!=`string`&&`period`in e.items&&(o=K(Array.isArray(e.items.period)?e.items.period:[e.items.period])),typeof e.items!=`string`&&`bibliography`in e.items&&(s=q(Array.isArray(e.items.bibliography)?e.items.bibliography:[e.items.bibliography])),typeof e.items!=`string`&&`person`in e.items&&(c=I(Array.isArray(e.items.person)?e.items.person:[e.items.person])),typeof e.items!=`string`&&`propertyValue`in e.items&&(l=Y(Array.isArray(e.items.propertyValue)?e.items.propertyValue:[e.items.propertyValue]));let u={uuid:e.uuid,category:`tree`,publicationDateTime:new Date(e.publicationDateTime),identification:M(e.identification),creators:t,license:F(e.availability),date:n,type:e.type,number:e.n,items:{resources:r,spatialUnits:i,concepts:a,periods:o,bibliographies:s,persons:c,propertyValues:l},properties:e.properties?W(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]};return u}
421
421
  /**
422
422
  * Parses raw set data into a standardized Set structure
423
423
  *
424
424
  * @param set - Raw set data in OCHRE format
425
425
  * @returns Parsed Set object
426
426
  */
427
- function pe(e,t){if(typeof e.items==`string`)throw TypeError(`Invalid OCHRE data: Set has no items`);let n=t??te(Object.keys(e.items)),r=[];switch(n){case`resource`:if(!(`resource`in e.items))throw Error(`Invalid OCHRE data: Set has no resources`);r=Z(Array.isArray(e.items.resource)?e.items.resource:[e.items.resource]);break;case`spatialUnit`:if(!(`spatialUnit`in e.items))throw Error(`Invalid OCHRE data: Set has no spatial units`);r=he(Array.isArray(e.items.spatialUnit)?e.items.spatialUnit:[e.items.spatialUnit]);break;case`concept`:if(!(`concept`in e.items))throw Error(`Invalid OCHRE data: Set has no concepts`);r=Q(Array.isArray(e.items.concept)?e.items.concept:[e.items.concept]);break;case`period`:if(!(`period`in e.items))throw Error(`Invalid OCHRE data: Set has no periods`);r=G(Array.isArray(e.items.period)?e.items.period:[e.items.period]);break;case`bibliography`:if(!(`bibliography`in e.items))throw Error(`Invalid OCHRE data: Set has no bibliographies`);r=q(Array.isArray(e.items.bibliography)?e.items.bibliography:[e.items.bibliography]);break;case`person`:if(!(`person`in e.items))throw Error(`Invalid OCHRE data: Set has no persons`);r=F(Array.isArray(e.items.person)?e.items.person:[e.items.person]);break;case`propertyValue`:if(!(`propertyValue`in e.items))throw Error(`Invalid OCHRE data: Set has no property values`);r=Y(Array.isArray(e.items.propertyValue)?e.items.propertyValue:[e.items.propertyValue]);break;default:throw Error(`Invalid OCHRE data: Set has no items or is malformed`)}return{uuid:e.uuid,category:`set`,itemCategory:t,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,date:e.date==null?null:new Date(e.date),license:P(e.availability),identification:j(e.identification),isSuppressingBlanks:e.suppressBlanks??!1,description:e.description?[`string`,`number`,`boolean`].includes(typeof e.description)?D(e.description):A(e.description):``,creators:e.creators?F(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],type:e.type,number:e.n,items:r}}
427
+ function me(e,t){if(typeof e.items==`string`)throw TypeError(`Invalid OCHRE data: Set has no items`);let n=t??te(Object.keys(e.items)),r=[];switch(n){case`resource`:if(!(`resource`in e.items))throw Error(`Invalid OCHRE data: Set has no resources`);r=Z(Array.isArray(e.items.resource)?e.items.resource:[e.items.resource]);break;case`spatialUnit`:if(!(`spatialUnit`in e.items))throw Error(`Invalid OCHRE data: Set has no spatial units`);r=ge(Array.isArray(e.items.spatialUnit)?e.items.spatialUnit:[e.items.spatialUnit]);break;case`concept`:if(!(`concept`in e.items))throw Error(`Invalid OCHRE data: Set has no concepts`);r=ye(Array.isArray(e.items.concept)?e.items.concept:[e.items.concept]);break;case`period`:if(!(`period`in e.items))throw Error(`Invalid OCHRE data: Set has no periods`);r=K(Array.isArray(e.items.period)?e.items.period:[e.items.period]);break;case`bibliography`:if(!(`bibliography`in e.items))throw Error(`Invalid OCHRE data: Set has no bibliographies`);r=q(Array.isArray(e.items.bibliography)?e.items.bibliography:[e.items.bibliography]);break;case`person`:if(!(`person`in e.items))throw Error(`Invalid OCHRE data: Set has no persons`);r=I(Array.isArray(e.items.person)?e.items.person:[e.items.person]);break;case`propertyValue`:if(!(`propertyValue`in e.items))throw Error(`Invalid OCHRE data: Set has no property values`);r=Y(Array.isArray(e.items.propertyValue)?e.items.propertyValue:[e.items.propertyValue]);break;default:throw Error(`Invalid OCHRE data: Set has no items or is malformed`)}return{uuid:e.uuid,category:`set`,itemCategory:t,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,date:e.date==null?null:new Date(e.date),license:F(e.availability),identification:M(e.identification),isSuppressingBlanks:e.suppressBlanks??!1,description:e.description?[`string`,`number`,`boolean`].includes(typeof e.description)?O(e.description):j(e.description):``,creators:e.creators?I(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],type:e.type,number:e.n,items:r}}
428
428
  /**
429
429
  * Parses raw resource data into a standardized Resource structure
430
430
  *
431
431
  * @param resource - Raw resource data in OCHRE format
432
432
  * @returns Parsed Resource object
433
433
  */
434
- function X(e){let t={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?N(e.context):null,license:`availability`in e&&e.availability?P(e.availability):null,copyright:`copyright`in e&&e.copyright!=null?D(e.copyright):null,identification:j(e.identification),date:e.date==null?null:new Date(e.date),image:e.image?R(e.image):null,creators:e.creators?F(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],notes:e.notes?z(Array.isArray(e.notes.note)?e.notes.note:[e.notes.note]):[],description:e.description?[`string`,`number`,`boolean`].includes(typeof e.description)?D(e.description):A(e.description):``,document:e.document&&`content`in e.document?L(e.document.content):null,href:e.href??null,imageMap:e.imagemap?de(e.imagemap):null,periods:e.periods?G(Array.isArray(e.periods.period)?e.periods.period:[e.periods.period]):[],links:e.links?I(Array.isArray(e.links)?e.links:[e.links]):[],reverseLinks:e.reverseLinks?I(Array.isArray(e.reverseLinks)?e.reverseLinks:[e.reverseLinks]):[],properties:e.properties?U(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?Z(Array.isArray(e.resource)?e.resource:[e.resource]):[]};return t}
434
+ function X(e){let t={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?P(e.context):null,license:`availability`in e&&e.availability?F(e.availability):null,copyright:`copyright`in e&&e.copyright!=null?O(e.copyright):null,identification:M(e.identification),date:e.date==null?null:new Date(e.date),image:e.image?z(e.image):null,creators:e.creators?I(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],notes:e.notes?B(Array.isArray(e.notes.note)?e.notes.note:[e.notes.note]):[],description:e.description?[`string`,`number`,`boolean`].includes(typeof e.description)?O(e.description):j(e.description):``,document:e.document&&`content`in e.document?R(e.document.content):null,href:e.href??null,imageMap:e.imagemap?de(e.imagemap):null,periods:e.periods?K(Array.isArray(e.periods.period)?e.periods.period:[e.periods.period]):[],links:e.links?L(Array.isArray(e.links)?e.links:[e.links]):[],reverseLinks:e.reverseLinks?L(Array.isArray(e.reverseLinks)?e.reverseLinks:[e.reverseLinks]):[],properties:e.properties?W(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?Z(Array.isArray(e.resource)?e.resource:[e.resource]):[]};return t}
435
435
  /**
436
436
  * Parses raw resource data into a standardized Resource structure
437
437
  *
@@ -445,21 +445,21 @@ function Z(e){let t=[],n=Array.isArray(e)?e:[e];for(let e of n)t.push(X(e));retu
445
445
  * @param spatialUnit - Raw spatial unit in OCHRE format
446
446
  * @returns Parsed SpatialUnit object
447
447
  */
448
- function me(e){let t={uuid:e.uuid,category:`spatialUnit`,publicationDateTime:e.publicationDateTime==null?null:new Date(e.publicationDateTime),type:e.type,number:e.n,context:`context`in e&&e.context?N(e.context):null,license:`availability`in e&&e.availability?P(e.availability):null,identification:j(e.identification),image:e.image?R(e.image):null,description:e.description?[`string`,`number`,`boolean`].includes(typeof e.description)?D(e.description):A(e.description):``,coordinates:e.coordinates?B(e.coordinates):e.coordinate?B(e.coordinate):null,observations:`observations`in e&&e.observations?ce(Array.isArray(e.observations.observation)?e.observations.observation:[e.observations.observation]):e.observation?[V(e.observation)]:[],events:`events`in e&&e.events?H(Array.isArray(e.events.event)?e.events.event:[e.events.event]):[],properties:`properties`in e&&e.properties?U(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]};return t}
448
+ function he(e){let t={uuid:e.uuid,category:`spatialUnit`,publicationDateTime:e.publicationDateTime==null?null:new Date(e.publicationDateTime),type:e.type,number:e.n,context:`context`in e&&e.context?P(e.context):null,license:`availability`in e&&e.availability?F(e.availability):null,identification:M(e.identification),image:e.image?z(e.image):null,description:e.description?[`string`,`number`,`boolean`].includes(typeof e.description)?O(e.description):j(e.description):``,coordinates:e.coordinates?V(e.coordinates):e.coordinate?V(e.coordinate):null,observations:`observations`in e&&e.observations?ce(Array.isArray(e.observations.observation)?e.observations.observation:[e.observations.observation]):e.observation?[H(e.observation)]:[],events:`events`in e&&e.events?U(Array.isArray(e.events.event)?e.events.event:[e.events.event]):[],properties:`properties`in e&&e.properties?W(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[]};return t}
449
449
  /**
450
450
  * Parses an array of raw spatial units into standardized SpatialUnit objects
451
451
  *
452
452
  * @param spatialUnits - Array of raw spatial units in OCHRE format
453
453
  * @returns Array of parsed SpatialUnit objects
454
454
  */
455
- function he(e){let t=[],n=Array.isArray(e)?e:[e];for(let e of n)t.push(me(e));return t}
455
+ function ge(e){let t=[],n=Array.isArray(e)?e:[e];for(let e of n)t.push(he(e));return t}
456
456
  /**
457
457
  * Parses a raw concept into a standardized Concept object
458
458
  *
459
459
  * @param concept - Raw concept data in OCHRE format
460
460
  * @returns Parsed Concept object
461
461
  */
462
- function ge(e){let t={uuid:e.uuid,category:`concept`,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,number:e.n,license:`availability`in e&&e.availability?P(e.availability):null,context:`context`in e&&e.context?N(e.context):null,identification:j(e.identification),interpretations:ue(Array.isArray(e.interpretations.interpretation)?e.interpretations.interpretation:[e.interpretations.interpretation])};return t}
462
+ function _e(e){let t={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?P(e.context):null,identification:M(e.identification),interpretations:ue(Array.isArray(e.interpretations.interpretation)?e.interpretations.interpretation:[e.interpretations.interpretation])};return t}
463
463
  /**
464
464
  * Parses raw webpage resources into standardized WebElement or Webpage objects
465
465
  *
@@ -467,14 +467,14 @@ function ge(e){let t={uuid:e.uuid,category:`concept`,publicationDateTime:e.publi
467
467
  * @param type - Type of resource to parse ("element" or "page")
468
468
  * @returns Array of parsed WebElement or Webpage objects
469
469
  */
470
- const _e=async(e,t)=>{let n=[];for(let r of e){let e=r.properties?U(Array.isArray(r.properties.property)?r.properties.property:[r.properties.property]):[],i=e.find(e=>e.label===`presentation`&&e.values[0].content===t);if(!i)continue;switch(t){case`element`:{let e=await $(r);n.push(e);break}case`page`:{let e=await ye(r);e&&n.push(e);break}case`block`:{let e=await xe(r);e&&n.push(e);break}}}return n};
470
+ const ve=async(e,t)=>{let n=[];for(let r of e){let e=r.properties?W(Array.isArray(r.properties.property)?r.properties.property:[r.properties.property]):[],i=e.find(e=>e.label===`presentation`&&e.values[0].content===t);if(!i)continue;switch(t){case`element`:{let e=await Q(r);n.push(e);break}case`page`:{let e=await xe(r);e&&n.push(e);break}case`block`:{let e=await $(r);e&&n.push(e);break}}}return n};
471
471
  /**
472
472
  * Parses raw concept data into standardized Concept objects
473
473
  *
474
474
  * @param concepts - Array of raw concept data in OCHRE format
475
475
  * @returns Array of parsed Concept objects
476
476
  */
477
- function Q(e){let t=[],n=Array.isArray(e)?e:[e];for(let e of n)t.push(ge(e));return t}
477
+ function ye(e){let t=[],n=Array.isArray(e)?e:[e];for(let e of n)t.push(_e(e));return t}
478
478
  /**
479
479
  * Parses raw web element properties into a standardized WebElementComponent structure
480
480
  *
@@ -482,42 +482,42 @@ function Q(e){let t=[],n=Array.isArray(e)?e:[e];for(let e of n)t.push(ge(e));ret
482
482
  * @param elementResource - Raw element resource data in OCHRE format
483
483
  * @returns Parsed WebElementComponent object
484
484
  */
485
- async function ve(e,t){let n=d.parse(e.values[0].content),r={component:n},i=t.links?I(Array.isArray(t.links)?t.links:[t.links]):[],a=i.filter(e=>e.type===`image`||e.type===`IIIF`),o=t.document&&`content`in t.document?L(t.document.content):null;if(o===null){let e=i.find(e=>e.type===`internalDocument`);if(e){let{item:t,error:n}=await re(e.uuid,`resource`);if(n!==null)throw Error(`Failed to fetch OCHRE data`);o=t.document}}switch(n){case`annotated-document`:if(!o)throw Error(`Document not found for the following component: “${n}”`);r.document=o;break;case`annotated-image`:{if(a.length===0)throw Error(`Image link not found for the following component: “${n}”`);let t=x(e.properties,`is-searchable`)===`Yes`;r.imageUuid=a[0].uuid,r.isSearchable=t;break}case`bibliography`:{let t=i.find(e=>e.category===`bibliography`);if(!t)throw Error(`Bibliography link not found for the following component: “${n}”`);if(!t.bibliographies)throw Error(`Bibliography not found for the following component: “${n}”`);let a=x(e.properties,`layout`);a??=`long`,r.bibliographies=t.bibliographies,r.layout=a;break}case`button`:{let i=x(e.properties,`variant`);i??=`default`;let a=!1,o=x(e.properties,`navigate-to`);if(o===null){if(o=x(e.properties,`link-to`),o===null)throw Error(`Properties “navigate-to” or “link-to” not found for the following component: “${n}”`);a=!0}let s=null,c=x(e.properties,`icon`);c!==null&&(s=c),r.variant=i,r.href=o,r.isExternal=a,r.label=[`string`,`number`,`boolean`].includes(typeof t.identification.label)?D(t.identification.label):A(t.identification.label),r.icon=s;break}case`collection`:{let t=i.find(e=>e.category===`set`);if(!t)throw Error(`Collection link not found for the following component: “${n}”`);let a=x(e.properties,`variant`);a??=`full`;let o=x(e.properties,`item-variant`);o??=`default`;let s=!1,c=x(e.properties,`show-count`);c!==null&&(s=c===`Yes`);let l=!1,u=x(e.properties,`is-searchable`);u!==null&&(l=u===`Yes`);let d=x(e.properties,`layout`);d??=`image-start`,r.collectionId=t.uuid,r.variant=a,r.itemVariant=o,r.isSearchable=l,r.showCount=s,r.layout=d;break}case`empty-space`:{let t=x(e.properties,`height`),n=x(e.properties,`width`);r.height=t,r.width=n;break}case`entries`:{let t=i.find(e=>e.category===`tree`);if(!t)throw Error(`Entries link not found for the following component: “${n}”`);let a=x(e.properties,`variant`);a??=`entry`;let o=!1,s=x(e.properties,`is-searchable`);s!==null&&(o=s===`Yes`),r.entriesId=t.uuid,r.variant=a,r.isSearchable=o;break}case`filter-categories`:{let e=i.find(e=>e.category===`set`);if(!e)throw Error(`Filter link not found for the following component: “${n}”`);r.filterId=e.uuid;break}case`iframe`:{let t=i.find(e=>e.type===`webpage`)?.href;if(!t)throw Error(`URL not found for the following component: “${n}”`);let a=x(e.properties,`height`),o=x(e.properties,`width`);r.href=t,r.height=a,r.width=o;break}case`iiif-viewer`:{let e=i.find(e=>e.type===`IIIF`);if(!e)throw Error(`Manifest link not found for the following component: “${n}”`);r.IIIFId=e.uuid;break}case`image`:{if(a.length===0)throw Error(`Image link not found for the following component: “${n}”`);let t=[];for(let e of a)t.push({url:`https://ochre.lib.uchicago.edu/ochre?uuid=${e.uuid}&load`,label:e.identification?.label??null,width:e.image?.width??0,height:e.image?.height??0});let i=x(e.properties,`variant`);i??=`default`;let o=x(e.properties,`layout-caption`);o??=`bottom`;let s=null,c=x(e.properties,`width`);c!==null&&(typeof c==`number`?s=c:typeof c==`string`&&(s=Number.parseFloat(c)));let l=null,u=x(e.properties,`height`);u!==null&&(typeof u==`number`?l=u:typeof u==`string`&&(l=Number.parseFloat(u)));let d=!0,f=x(e.properties,`is-full-width`);f!==null&&(d=f===`Yes`);let p=!0,m=x(e.properties,`is-full-height`);m!==null&&(p=m===`Yes`);let h=x(e.properties,`image-quality`);h??=`high`;let g=x(e.properties,`caption-source`);g??=`name`;let _=x(e.properties,`alt-text-source`);_??=`name`;let v=!1,b=x(e.properties,`is-transparent`);b!==null&&(v=b===`Yes`);let S=!1,C=x(e.properties,`is-cover`);C!==null&&(S=C===`Yes`);let w=null;if(t.length>1){let t=y(e.properties,`variant`),n=5;if(t&&t.values[0].content===`carousel`){let e=x(t.properties,`seconds-per-image`);e!==null&&(typeof e==`number`?n=e:typeof e==`string`&&(n=Number.parseFloat(e)))}w={secondsPerImage:n}}r.images=t,r.variant=i,r.width=s,r.height=l,r.isFullWidth=d,r.isFullHeight=p,r.imageQuality=h,r.captionLayout=o,r.captionSource=g,r.altTextSource=_,r.isTransparentBackground=v,r.isCover=S,r.carouselOptions=w;break}case`image-gallery`:{let t=i.find(e=>e.category===`tree`||e.category===`set`);if(!t)throw Error(`Image gallery link not found for the following component: “${n}”`);let a=x(e.properties,`is-searchable`)===`Yes`;r.galleryId=t.uuid,r.isSearchable=a;break}case`n-columns`:{let e=t.resource?await _e(Array.isArray(t.resource)?t.resource:[t.resource],`element`):[];r.columns=e;break}case`n-rows`:{let e=t.resource?await _e(Array.isArray(t.resource)?t.resource:[t.resource],`element`):[];r.rows=e;break}case`network-graph`:break;case`table`:{let e=i.find(e=>e.category===`set`);if(!e)throw Error(`Table link not found for the following component: “${n}”`);r.tableId=e.uuid;break}case`search-bar`:{let t=x(e.properties,`variant`);t??=`default`,r.variant=t;break}case`text`:{if(!o)throw Error(`Document not found for the following component: “${n}”`);let t=x(e.properties,`variant`);t??=`block`;let i=x(e.properties,`heading`);r.variant=t,r.heading=i,r.content=o.content;break}case`timeline`:{let e=i.find(e=>e.category===`tree`);if(!e)throw Error(`Timeline link not found for the following component: “${n}”`);r.timelineId=e.uuid;break}case`video`:{let t=i.find(e=>e.type===`video`);if(!t)throw Error(`Video link not found for the following component: “${n}”`);let a=x(e.properties,`chapters-displayed`);a??=`Yes`,r.videoId=t.uuid,r.isChaptersDislayed=a===`Yes`;break}default:console.warn(`Invalid or non-implemented component name “${n}” for the following element: “${A(t.identification.label)}”`);break}return r}
485
+ async function be(e,t){let n=f.parse(e.values[0].content),r={component:n},i=t.links?L(Array.isArray(t.links)?t.links:[t.links]):[],a=i.filter(e=>e.type===`image`||e.type===`IIIF`),o=t.document&&`content`in t.document?R(t.document.content):null;if(o===null){let e=i.find(e=>e.type===`internalDocument`);if(e){let{item:t,error:n}=await re(e.uuid,`resource`);if(n!==null)throw Error(`Failed to fetch OCHRE data`);o=t.document}}switch(n){case`annotated-document`:if(!o)throw Error(`Document not found for the following component: “${n}”`);r.document=o;break;case`annotated-image`:{if(a.length===0)throw Error(`Image link not found for the following component: “${n}”`);let t=S(e.properties,`is-searchable`)===`Yes`;r.imageUuid=a[0].uuid,r.isSearchable=t;break}case`bibliography`:{let t=i.find(e=>e.category===`bibliography`);if(!t)throw Error(`Bibliography link not found for the following component: “${n}”`);if(!t.bibliographies)throw Error(`Bibliography not found for the following component: “${n}”`);let a=S(e.properties,`layout`);a??=`long`,r.bibliographies=t.bibliographies,r.layout=a;break}case`button`:{let i=S(e.properties,`variant`);i??=`default`;let a=!1,o=S(e.properties,`navigate-to`);if(o===null){if(o=S(e.properties,`link-to`),o===null)throw Error(`Properties “navigate-to” or “link-to” not found for the following component: “${n}”`);a=!0}let s=null,c=S(e.properties,`icon`);c!==null&&(s=c),r.variant=i,r.href=o,r.isExternal=a,r.label=[`string`,`number`,`boolean`].includes(typeof t.identification.label)?O(t.identification.label):j(t.identification.label),r.icon=s;break}case`collection`:{let t=i.find(e=>e.category===`set`);if(!t)throw Error(`Collection link not found for the following component: “${n}”`);let a=S(e.properties,`variant`);a??=`full`;let o=S(e.properties,`item-variant`);o??=`default`;let s=!1,c=S(e.properties,`show-count`);c!==null&&(s=c===`Yes`);let l=!1,u=S(e.properties,`is-searchable`);u!==null&&(l=u===`Yes`);let d=S(e.properties,`layout`);d??=`image-start`,r.collectionId=t.uuid,r.variant=a,r.itemVariant=o,r.isSearchable=l,r.showCount=s,r.layout=d;break}case`empty-space`:{let t=S(e.properties,`height`),n=S(e.properties,`width`);r.height=t,r.width=n;break}case`entries`:{let t=i.find(e=>e.category===`tree`);if(!t)throw Error(`Entries link not found for the following component: “${n}”`);let a=S(e.properties,`variant`);a??=`entry`;let o=!1,s=S(e.properties,`is-searchable`);s!==null&&(o=s===`Yes`),r.entriesId=t.uuid,r.variant=a,r.isSearchable=o;break}case`filter-categories`:{let e=i.find(e=>e.category===`set`);if(!e)throw Error(`Filter link not found for the following component: “${n}”`);r.filterId=e.uuid;break}case`iframe`:{let t=i.find(e=>e.type===`webpage`)?.href;if(!t)throw Error(`URL not found for the following component: “${n}”`);let a=S(e.properties,`height`),o=S(e.properties,`width`);r.href=t,r.height=a,r.width=o;break}case`iiif-viewer`:{let e=i.find(e=>e.type===`IIIF`);if(!e)throw Error(`Manifest link not found for the following component: “${n}”`);r.IIIFId=e.uuid;break}case`image`:{if(a.length===0)throw Error(`Image link not found for the following component: “${n}”`);let t=[];for(let e of a)t.push({url:`https://ochre.lib.uchicago.edu/ochre?uuid=${e.uuid}&load`,label:e.identification?.label??null,width:e.image?.width??0,height:e.image?.height??0});let i=S(e.properties,`variant`);i??=`default`;let o=S(e.properties,`layout-caption`);o??=`bottom`;let s=null,c=S(e.properties,`width`);c!==null&&(typeof c==`number`?s=c:typeof c==`string`&&(s=Number.parseFloat(c)));let l=null,u=S(e.properties,`height`);u!==null&&(typeof u==`number`?l=u:typeof u==`string`&&(l=Number.parseFloat(u)));let d=!0,f=S(e.properties,`is-full-width`);f!==null&&(d=f===`Yes`);let p=!0,m=S(e.properties,`is-full-height`);m!==null&&(p=m===`Yes`);let h=S(e.properties,`image-quality`);h??=`high`;let g=S(e.properties,`caption-source`);g??=`name`;let _=S(e.properties,`alt-text-source`);_??=`name`;let v=!1,y=S(e.properties,`is-transparent`);y!==null&&(v=y===`Yes`);let x=!1,C=S(e.properties,`is-cover`);C!==null&&(x=C===`Yes`);let w=null;if(t.length>1){let t=b(e.properties,`variant`),n=5;if(t&&t.values[0].content===`carousel`){let e=S(t.properties,`seconds-per-image`);e!==null&&(typeof e==`number`?n=e:typeof e==`string`&&(n=Number.parseFloat(e)))}w={secondsPerImage:n}}r.images=t,r.variant=i,r.width=s,r.height=l,r.isFullWidth=d,r.isFullHeight=p,r.imageQuality=h,r.captionLayout=o,r.captionSource=g,r.altTextSource=_,r.isTransparentBackground=v,r.isCover=x,r.carouselOptions=w;break}case`image-gallery`:{let t=i.find(e=>e.category===`tree`||e.category===`set`);if(!t)throw Error(`Image gallery link not found for the following component: “${n}”`);let a=S(e.properties,`is-searchable`)===`Yes`;r.galleryId=t.uuid,r.isSearchable=a;break}case`n-columns`:{let e=t.resource?await ve(Array.isArray(t.resource)?t.resource:[t.resource],`element`):[];r.columns=e;break}case`n-rows`:{let e=t.resource?await ve(Array.isArray(t.resource)?t.resource:[t.resource],`element`):[];r.rows=e;break}case`network-graph`:break;case`table`:{let e=i.find(e=>e.category===`set`);if(!e)throw Error(`Table link not found for the following component: “${n}”`);r.tableId=e.uuid;break}case`search-bar`:{let t=S(e.properties,`variant`);t??=`default`,r.variant=t;break}case`text`:{if(!o)throw Error(`Document not found for the following component: “${n}”`);let t=S(e.properties,`variant`);t??=`block`;let i=S(e.properties,`heading`);r.variant=t,r.heading=i,r.content=o.content;break}case`timeline`:{let e=i.find(e=>e.category===`tree`);if(!e)throw Error(`Timeline link not found for the following component: “${n}”`);r.timelineId=e.uuid;break}case`video`:{let t=i.find(e=>e.type===`video`);if(!t)throw Error(`Video link not found for the following component: “${n}”`);let a=S(e.properties,`chapters-displayed`);a??=`Yes`,r.videoId=t.uuid,r.isChaptersDislayed=a===`Yes`;break}default:console.warn(`Invalid or non-implemented component name “${n}” for the following element: “${j(t.identification.label)}”`);break}return r}
486
486
  /**
487
487
  * Parses raw web element data into a standardized WebElement structure
488
488
  *
489
489
  * @param elementResource - Raw element resource data in OCHRE format
490
490
  * @returns Parsed WebElement object
491
491
  */
492
- async function $(e){let t=j(e.identification),n=e.properties?.property?U(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],r=n.find(e=>e.label===`presentation`);if(!r)throw Error(`Presentation property not found for element “${t.label}”`);let i=r.properties.find(e=>e.label===`component`);if(!i)throw Error(`Component for element “${t.label}” not found`);let a=await ve(i,e),o=r.properties.find(e=>e.label===`section-sidebar-displayed`),s=o?.values[0]?.booleanValue===!0,c=e.properties?.property?U(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],l=c.find(e=>e.label===`presentation`&&e.values[0].content===`css`)?.properties??[],u=[];for(let e of l){let t=e.values[0].content;u.push({label:e.label,value:t})}let d=c.find(e=>e.label===`presentation`&&e.values[0].content===`css-mobile`)?.properties??[],f=[];for(let e of d){let t=e.values[0].content;f.push({label:e.label,value:t})}let p=c.find(e=>e.label===`presentation`&&e.values[0].content===`title`)?.properties,m=`default`,h=!1,g=!1,_=!1,v=!1;if(p){let e=x(p,`variant`);e&&(m=e);let t=p.filter(e=>e.label===`display`);t.length>0&&(h=t.some(e=>e.values[0].content===`name`),g=t.some(e=>e.values[0].content===`description`),_=t.some(e=>e.values[0].content===`date`),v=t.some(e=>e.values[0].content===`creators`))}return{uuid:e.uuid,type:`element`,title:{label:t.label,variant:m,properties:{isNameDisplayed:h,isDescriptionDisplayed:g,isDateDisplayed:_,isCreatorsDisplayed:v}},isDisplayedInBlockSectionSidebar:s,cssStyles:u,cssStylesMobile:f,...a}}
492
+ async function Q(e){let t=M(e.identification),n=e.properties?.property?W(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],r=n.find(e=>e.label===`presentation`);if(!r)throw Error(`Presentation property not found for element “${t.label}”`);let i=r.properties.find(e=>e.label===`component`);if(!i)throw Error(`Component for element “${t.label}” not found`);let a=await be(i,e),o=r.properties.find(e=>e.label===`section-sidebar-displayed`),s=o?.values[0]?.booleanValue===!0,c=e.properties?.property?W(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],l=c.find(e=>e.label===`presentation`&&e.values[0].content===`css`)?.properties??[],u=[];for(let e of l){let t=e.values[0].content;u.push({label:e.label,value:t})}let d=c.find(e=>e.label===`presentation`&&e.values[0].content===`css-mobile`)?.properties??[],f=[];for(let e of d){let t=e.values[0].content;f.push({label:e.label,value:t})}let p=c.find(e=>e.label===`presentation`&&e.values[0].content===`title`)?.properties,m=`default`,h=!1,g=!1,_=!1,v=!1;if(p){let e=S(p,`variant`);e&&(m=e);let t=p.filter(e=>e.label===`display`);t.length>0&&(h=t.some(e=>e.values[0].content===`name`),g=t.some(e=>e.values[0].content===`description`),_=t.some(e=>e.values[0].content===`date`),v=t.some(e=>e.values[0].content===`creators`))}return{uuid:e.uuid,type:`element`,title:{label:t.label,variant:m,properties:{isNameDisplayed:h,isDescriptionDisplayed:g,isDateDisplayed:_,isCreatorsDisplayed:v}},isDisplayedInBlockSectionSidebar:s,cssStyles:u,cssStylesMobile:f,...a}}
493
493
  /**
494
494
  * Parses raw webpage data into a standardized Webpage structure
495
495
  *
496
496
  * @param webpageResource - Raw webpage resource data in OCHRE format
497
497
  * @returns Parsed Webpage object
498
498
  */
499
- async function ye(e){let t=e.properties?U(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[];if(t.length===0||t.find(e=>e.label===`presentation`)?.values[0]?.content!==`page`)return null;let n=j(e.identification),r=e.slug;if(r===void 0)throw Error(`Slug not found for page “${n.label}”`);let i=e.links?I(Array.isArray(e.links)?e.links:[e.links]):[],a=i.find(e=>e.type===`image`||e.type===`IIIF`),o=e.resource?Array.isArray(e.resource)?e.resource:[e.resource]:[],s=[];for(let e of o){let t=e.properties?U(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],n=x(t,`presentation`);if(n==null)continue;switch(n){case`element`:{let t=await $(e);s.push(t);break}case`block`:{let t=await xe(e);t&&s.push(t);break}}}let c=e.resource?await _e(Array.isArray(e.resource)?e.resource:[e.resource],`page`):[],l=!0,u=`default`,d=`default`,f=!0,p=t.find(e=>e.label===`presentation`&&e.values[0]?.content===`page`)?.properties;if(p){let e=p.find(e=>e.label===`header`)?.values[0];e&&(l=e.content===`Yes`);let t=p.find(e=>e.label===`width`)?.values[0];t&&(u=t.content);let n=p.find(e=>e.label===`variant`)?.values[0];n&&(d=n.content);let r=p.find(e=>e.label===`sidebar-visible`)?.values[0];r&&(f=r.content===`Yes`)}let m=t.find(e=>e.label===`presentation`&&e.values[0]?.content===`css`)?.properties,h=[];if(m)for(let e of m)h.push({label:e.label,value:e.values[0].content});let g=t.find(e=>e.label===`presentation`&&e.values[0]?.content===`css-mobile`)?.properties,_=[];if(g)for(let e of g)_.push({label:e.label,value:e.values[0].content});return{title:n.label,slug:r,items:s,properties:{displayedInHeader:l,width:u,variant:d,backgroundImageUrl:a?`https://ochre.lib.uchicago.edu/ochre?uuid=${a.uuid}&load`:null,isSidebarDisplayed:f,cssStyles:h,cssStylesMobile:_},webpages:c}}
499
+ async function xe(e){let t=e.properties?W(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[];if(t.length===0||t.find(e=>e.label===`presentation`)?.values[0]?.content!==`page`)return null;let n=M(e.identification),r=e.slug;if(r===void 0)throw Error(`Slug not found for page “${n.label}”`);let i=e.links?L(Array.isArray(e.links)?e.links:[e.links]):[],a=i.find(e=>e.type===`image`||e.type===`IIIF`),o=e.resource?Array.isArray(e.resource)?e.resource:[e.resource]:[],s=[];for(let e of o){let t=e.properties?W(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],n=S(t,`presentation`);if(n==null)continue;switch(n){case`element`:{let t=await Q(e);s.push(t);break}case`block`:{let t=await $(e);t&&s.push(t);break}}}let c=e.resource?await ve(Array.isArray(e.resource)?e.resource:[e.resource],`page`):[],l=!0,u=`default`,d=`default`,f=!0,p=t.find(e=>e.label===`presentation`&&e.values[0]?.content===`page`)?.properties;if(p){let e=p.find(e=>e.label===`header`)?.values[0];e&&(l=e.content===`Yes`);let t=p.find(e=>e.label===`width`)?.values[0];t&&(u=t.content);let n=p.find(e=>e.label===`variant`)?.values[0];n&&(d=n.content);let r=p.find(e=>e.label===`sidebar-visible`)?.values[0];r&&(f=r.content===`Yes`)}let m=t.find(e=>e.label===`presentation`&&e.values[0]?.content===`css`)?.properties,h=[];if(m)for(let e of m)h.push({label:e.label,value:e.values[0].content});let g=t.find(e=>e.label===`presentation`&&e.values[0]?.content===`css-mobile`)?.properties,_=[];if(g)for(let e of g)_.push({label:e.label,value:e.values[0].content});return{title:n.label,slug:r,items:s,properties:{displayedInHeader:l,width:u,variant:d,backgroundImageUrl:a?`https://ochre.lib.uchicago.edu/ochre?uuid=${a.uuid}&load`:null,isSidebarDisplayed:f,cssStyles:h,cssStylesMobile:_},webpages:c}}
500
500
  /**
501
501
  * Parses raw webpage resources into an array of Webpage objects
502
502
  *
503
503
  * @param webpageResources - Array of raw webpage resources in OCHRE format
504
504
  * @returns Array of parsed Webpage objects
505
505
  */
506
- async function be(e){let t=[],n=Array.isArray(e)?e:[e];for(let e of n){let n=await ye(e);n&&t.push(n)}return t}
506
+ async function Se(e){let t=[],n=Array.isArray(e)?e:[e];for(let e of n){let n=await xe(e);n&&t.push(n)}return t}
507
507
  /**
508
508
  * Parses raw block data into a standardized Block structure
509
509
  *
510
510
  * @param blockResource - Raw block resource data in OCHRE format
511
511
  * @returns Parsed Block object
512
512
  */
513
- async function xe(e){let t={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?U(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],r=n.find(e=>e.label===`presentation`&&e.values[0]?.content===`block`)?.properties;if(r){let e=r.find(e=>e.label===`layout`)?.values[0];e&&(t.layout=e.content);let n=r.find(e=>e.label===`spacing`)?.values[0];n&&(t.properties.spacing=n.content);let i=r.find(e=>e.label===`gap`)?.values[0];i&&(t.properties.gap=i.content);let a=r.find(e=>e.label===`align-items`)?.values[0];a&&(t.properties.alignItems=a.content);let o=r.find(e=>e.label===`justify-content`)?.values[0];o&&(t.properties.justifyContent=o.content);let s=r.find(e=>e.label===`overwrite-mobile`);if(s){let e=s.properties,n={};for(let t of e)n[t.label]=t.values[0].content;t.propertiesMobile=n}}let i=e.resource?Array.isArray(e.resource)?e.resource:[e.resource]:[],a=[];for(let e of i){let t=e.properties?U(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],n=x(t,`presentation`);if(n==null)continue;switch(n){case`element`:{let t=await $(e);a.push(t);break}case`block`:{let t=await xe(e);t&&a.push(t);break}}}t.items=a;let o=n.find(e=>e.label===`presentation`&&e.values[0]?.content===`css`)?.properties;if(o)for(let e of o)t.cssStyles.push({label:e.label,value:e.values[0].content});let s=n.find(e=>e.label===`presentation`&&e.values[0]?.content===`css-mobile`)?.properties;if(s)for(let e of s)t.cssStylesMobile.push({label:e.label,value:e.values[0].content});return t.properties.sectionSidebarItems=Se(t),t}function Se(e){let t=[];for(let n of e.items)switch(n.type){case`block`:{let e=Se(n);e!==null&&t.push({uuid:n.uuid,type:`block`,name:null,items:e});break}case`element`:{let e=n.isDisplayedInBlockSectionSidebar;if(!e)continue;t.push({uuid:n.uuid,type:`element`,name:n.title.label,items:null});break}}return t.length>0?t:null}
513
+ async function $(e){let t={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?W(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],r=n.find(e=>e.label===`presentation`&&e.values[0]?.content===`block`)?.properties;if(r){let e=r.find(e=>e.label===`layout`)?.values[0];e&&(t.layout=e.content);let n=r.find(e=>e.label===`spacing`)?.values[0];n&&(t.properties.spacing=n.content);let i=r.find(e=>e.label===`gap`)?.values[0];i&&(t.properties.gap=i.content);let a=r.find(e=>e.label===`align-items`)?.values[0];a&&(t.properties.alignItems=a.content);let o=r.find(e=>e.label===`justify-content`)?.values[0];o&&(t.properties.justifyContent=o.content);let s=r.find(e=>e.label===`overwrite-mobile`);if(s){let e=s.properties,n={};for(let t of e)n[t.label]=t.values[0].content;t.propertiesMobile=n}}let i=e.resource?Array.isArray(e.resource)?e.resource:[e.resource]:[],a=[];for(let e of i){let t=e.properties?W(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[],n=S(t,`presentation`);if(n==null)continue;switch(n){case`element`:{let t=await Q(e);a.push(t);break}case`block`:{let t=await $(e);t&&a.push(t);break}}}t.items=a;let o=n.find(e=>e.label===`presentation`&&e.values[0]?.content===`css`)?.properties;if(o)for(let e of o)t.cssStyles.push({label:e.label,value:e.values[0].content});let s=n.find(e=>e.label===`presentation`&&e.values[0]?.content===`css-mobile`)?.properties;if(s)for(let e of s)t.cssStylesMobile.push({label:e.label,value:e.values[0].content});return t.properties.sectionSidebarItems=Ce(t),t}function Ce(e){let t=[];for(let n of e.items)switch(n.type){case`block`:{let e=Ce(n);e!==null&&t.push({uuid:n.uuid,type:`block`,name:null,items:e});break}case`element`:{let e=n.isDisplayedInBlockSectionSidebar;if(!e)continue;t.push({uuid:n.uuid,type:`element`,name:n.title.label,items:null});break}}return t.length>0?t:null}
514
514
  /**
515
515
  * Parses raw website properties into a standardized WebsiteProperties structure
516
516
  *
517
517
  * @param properties - Array of raw website properties in OCHRE format
518
518
  * @returns Parsed WebsiteProperties object
519
519
  */
520
- function Ce(e){let t=U(e),n=t.find(e=>e.label===`presentation`)?.properties;if(!n)throw Error(`Presentation property not found`);let r=n.find(e=>e.label===`webUI`)?.values[0]?.content;if(r==null)throw Error(`Website type not found`);let i=n.find(e=>e.label===`status`)?.values[0]?.content;if(i==null)throw Error(`Website status not found`);let a=n.find(e=>e.label===`privacy`)?.values[0]?.content;a??=`public`;let o=u.safeParse({type:r,status:i,privacy:a});if(!o.success)throw Error(`Invalid website properties: ${o.error.message}`);let s=null,c=n.find(e=>e.label===`contact`);if(c){let[e,t]=(c.values[0]?.content).split(`;`);s={name:e,email:t??null}}let l=n.find(e=>e.label===`logo`)?.values[0]?.uuid??null,d=!0,f=`default`,p=`start`,m=!0,h=!0,g=!1,_=!0,v=n.find(e=>e.label===`navbar-visible`)?.values[0];v&&(d=v.content===`Yes`);let y=n.find(e=>e.label===`navbar-variant`)?.values[0];y&&(f=y.content);let b=n.find(e=>e.label===`navbar-alignment`)?.values[0];b&&(p=b.content);let x=n.find(e=>e.label===`navbar-project-visible`)?.values[0];x&&(m=x.content===`Yes`);let S=n.find(e=>e.label===`footer-visible`)?.values[0];S&&(h=S.content===`Yes`);let C=n.find(e=>e.label===`sidebar-visible`)?.values[0];C&&(g=C.content===`Yes`);let w=n.find(e=>e.label===`supports-theme-toggle`)?.values[0];w&&(_=w.content===`Yes`);let{type:T,status:ee,privacy:E}=o.data;return{type:T,privacy:E,status:ee,contact:s,isHeaderDisplayed:d,headerVariant:f,headerAlignment:p,isHeaderProjectDisplayed:m,isFooterDisplayed:h,isSidebarDisplayed:g,supportsThemeToggle:_,logoUrl:l===null?null:`https://ochre.lib.uchicago.edu/ochre?uuid=${l}&load`}}async function we(e,t,n){if(!e.properties)throw Error(`Website properties not found`);let r=Ce(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]);if(typeof e.items==`string`||!(`resource`in e.items))throw Error(`Website pages not found`);let i=Array.isArray(e.items.resource)?e.items.resource:[e.items.resource],a=await be(i),o=null,s=[],c={label:``,variant:`default`,properties:{isNameDisplayed:!1,isDescriptionDisplayed:!1,isDateDisplayed:!1,isCreatorsDisplayed:!1}},l=`start`,u=`default`,d=[],f=[],p=i.find(e=>{let t=e.properties?U(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[];return t.some(e=>e.label===`presentation`&&e.values[0]?.content===`element`&&e.properties[0]?.label===`component`&&e.properties[0].values[0]?.content===`sidebar`)});if(p){c.label=typeof p.identification.label==`string`||typeof p.identification.label==`number`||typeof p.identification.label==`boolean`?D(p.identification.label):A(p.identification.label);let e=p.properties?U(Array.isArray(p.properties.property)?p.properties.property:[p.properties.property]):[],t=e.find(e=>e.label===`presentation`&&e.values[0]?.content===`element`)?.properties.find(e=>e.label===`component`&&e.values[0]?.content===`sidebar`)?.properties??[],n=t.find(e=>e.label===`layout`);n&&(l=n.values[0].content);let r=t.find(e=>e.label===`layout-mobile`);r&&(u=r.values[0].content);let i=e.find(e=>e.label===`presentation`&&e.values[0].content===`css`)?.properties??[];for(let e of i){let t=e.values[0].content;d.push({label:e.label,value:t})}let a=e.find(e=>e.label===`presentation`&&e.values[0].content===`css-mobile`)?.properties??[];for(let e of a){let t=e.values[0].content;f.push({label:e.label,value:t})}let o=e.find(e=>e.label===`presentation`&&e.values[0].content===`title`)?.properties;if(o){let e=x(o,`variant`);e&&(c.variant=e);let t=o.filter(e=>e.label===`display`);t.length>0&&(c.properties.isNameDisplayed=t.some(e=>e.values[0].content===`name`),c.properties.isDescriptionDisplayed=t.some(e=>e.values[0].content===`description`),c.properties.isDateDisplayed=t.some(e=>e.values[0].content===`date`),c.properties.isCreatorsDisplayed=t.some(e=>e.values[0].content===`creators`))}let m=p.resource?Array.isArray(p.resource)?p.resource:[p.resource]:[];for(let e of m){let t=await $(e);s.push(t)}}s.length>0&&(o={elements:s,title:c,layout:l,mobileLayout:u,cssStyles:d,cssStylesMobile:f});let m=null;if(e.collectionOptions){let t=[];for(let e of a)for(let n of e.items)n.type===`element`&&n.component===`collection`&&t.push(n.collectionId);m={uuids:t,properties:{metadataUuids:e.collectionOptions.metadataUuids.uuid?(Array.isArray(e.collectionOptions.metadataUuids.uuid)?e.collectionOptions.metadataUuids.uuid:[e.collectionOptions.metadataUuids.uuid]).map(e=>e.content):[],searchUuids:e.collectionOptions.searchUuids.uuid?(Array.isArray(e.collectionOptions.searchUuids.uuid)?e.collectionOptions.searchUuids.uuid:[e.collectionOptions.searchUuids.uuid]).map(e=>e.content):[],labelUuids:e.collectionOptions.labelUuids.uuid?(Array.isArray(e.collectionOptions.labelUuids.uuid)?e.collectionOptions.labelUuids.uuid:[e.collectionOptions.labelUuids.uuid]).map(e=>e.content):[]}}}return{uuid:e.uuid,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,identification:j(e.identification),project:{name:D(t),website:n===null?null:D(n)},creators:e.creators?F(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],license:P(e.availability),pages:a,sidebar:o,properties:r,collectionOptions:m}}
520
+ function we(e){let t=W(e),n=t.find(e=>e.label===`presentation`)?.properties;if(!n)throw Error(`Presentation property not found`);let r=n.find(e=>e.label===`webUI`)?.values[0]?.content;if(r==null)throw Error(`Website type not found`);let i=n.find(e=>e.label===`status`)?.values[0]?.content;if(i==null)throw Error(`Website status not found`);let a=n.find(e=>e.label===`privacy`)?.values[0]?.content;a??=`public`;let o=d.safeParse({type:r,status:i,privacy:a});if(!o.success)throw Error(`Invalid website properties: ${o.error.message}`);let s=null,c=n.find(e=>e.label===`contact`);if(c){let[e,t]=(c.values[0]?.content).split(`;`);s={name:e,email:t??null}}let l=n.find(e=>e.label===`logo`)?.values[0]?.uuid??null,u=!0,f=`default`,p=`start`,m=!0,h=!0,g=!1,_=!0,v=n.find(e=>e.label===`navbar-visible`)?.values[0];v&&(u=v.content===`Yes`);let y=n.find(e=>e.label===`navbar-variant`)?.values[0];y&&(f=y.content);let b=n.find(e=>e.label===`navbar-alignment`)?.values[0];b&&(p=b.content);let x=n.find(e=>e.label===`navbar-project-visible`)?.values[0];x&&(m=x.content===`Yes`);let S=n.find(e=>e.label===`footer-visible`)?.values[0];S&&(h=S.content===`Yes`);let C=n.find(e=>e.label===`sidebar-visible`)?.values[0];C&&(g=C.content===`Yes`);let w=n.find(e=>e.label===`supports-theme-toggle`)?.values[0];w&&(_=w.content===`Yes`);let{type:ee,status:T,privacy:E}=o.data;return{type:ee,privacy:E,status:T,contact:s,isHeaderDisplayed:u,headerVariant:f,headerAlignment:p,isHeaderProjectDisplayed:m,isFooterDisplayed:h,isSidebarDisplayed:g,supportsThemeToggle:_,logoUrl:l===null?null:`https://ochre.lib.uchicago.edu/ochre?uuid=${l}&load`}}async function Te(e,t,n){if(!e.properties)throw Error(`Website properties not found`);let r=we(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]);if(typeof e.items==`string`||!(`resource`in e.items))throw Error(`Website pages not found`);let i=Array.isArray(e.items.resource)?e.items.resource:[e.items.resource],a=await Se(i),o=null,s=[],c={label:``,variant:`default`,properties:{isNameDisplayed:!1,isDescriptionDisplayed:!1,isDateDisplayed:!1,isCreatorsDisplayed:!1}},l=`start`,u=`default`,d=[],f=[],p=i.find(e=>{let t=e.properties?W(Array.isArray(e.properties.property)?e.properties.property:[e.properties.property]):[];return t.some(e=>e.label===`presentation`&&e.values[0]?.content===`element`&&e.properties[0]?.label===`component`&&e.properties[0].values[0]?.content===`sidebar`)});if(p){c.label=typeof p.identification.label==`string`||typeof p.identification.label==`number`||typeof p.identification.label==`boolean`?O(p.identification.label):j(p.identification.label);let e=p.properties?W(Array.isArray(p.properties.property)?p.properties.property:[p.properties.property]):[],t=e.find(e=>e.label===`presentation`&&e.values[0]?.content===`element`)?.properties.find(e=>e.label===`component`&&e.values[0]?.content===`sidebar`)?.properties??[],n=t.find(e=>e.label===`layout`);n&&(l=n.values[0].content);let r=t.find(e=>e.label===`layout-mobile`);r&&(u=r.values[0].content);let i=e.find(e=>e.label===`presentation`&&e.values[0].content===`css`)?.properties??[];for(let e of i){let t=e.values[0].content;d.push({label:e.label,value:t})}let a=e.find(e=>e.label===`presentation`&&e.values[0].content===`css-mobile`)?.properties??[];for(let e of a){let t=e.values[0].content;f.push({label:e.label,value:t})}let o=e.find(e=>e.label===`presentation`&&e.values[0].content===`title`)?.properties;if(o){let e=S(o,`variant`);e&&(c.variant=e);let t=o.filter(e=>e.label===`display`);t.length>0&&(c.properties.isNameDisplayed=t.some(e=>e.values[0].content===`name`),c.properties.isDescriptionDisplayed=t.some(e=>e.values[0].content===`description`),c.properties.isDateDisplayed=t.some(e=>e.values[0].content===`date`),c.properties.isCreatorsDisplayed=t.some(e=>e.values[0].content===`creators`))}let m=p.resource?Array.isArray(p.resource)?p.resource:[p.resource]:[];for(let e of m){let t=await Q(e);s.push(t)}}s.length>0&&(o={elements:s,title:c,layout:l,mobileLayout:u,cssStyles:d,cssStylesMobile:f});let m=null;if(e.collectionOptions){let t=[];for(let e of a)for(let n of e.items)n.type===`element`&&n.component===`collection`&&t.push(n.collectionId);m={uuids:t,properties:{metadataUuids:e.collectionOptions.metadataUuids.uuid?(Array.isArray(e.collectionOptions.metadataUuids.uuid)?e.collectionOptions.metadataUuids.uuid:[e.collectionOptions.metadataUuids.uuid]).map(e=>e.content):[],searchUuids:e.collectionOptions.searchUuids.uuid?(Array.isArray(e.collectionOptions.searchUuids.uuid)?e.collectionOptions.searchUuids.uuid:[e.collectionOptions.searchUuids.uuid]).map(e=>e.content):[],labelUuids:e.collectionOptions.labelUuids.uuid?(Array.isArray(e.collectionOptions.labelUuids.uuid)?e.collectionOptions.labelUuids.uuid:[e.collectionOptions.labelUuids.uuid]).map(e=>e.content):[]}}}return{uuid:e.uuid,publicationDateTime:e.publicationDateTime?new Date(e.publicationDateTime):null,identification:M(e.identification),project:{name:O(t),website:n===null?null:O(n)},creators:e.creators?I(Array.isArray(e.creators.creator)?e.creators.creator:[e.creators.creator]):[],license:F(e.availability),pages:a,sidebar:o,properties:r,collectionOptions:m}}
521
521
  /**
522
522
  * Fetches and parses a gallery from the OCHRE API
523
523
  *
@@ -544,7 +544,7 @@ function Ce(e){let t=U(e),n=t.find(e=>e.label===`presentation`)?.properties;if(!
544
544
  * - Project identification
545
545
  * - Resources (gallery items)
546
546
  */
547
- async function Te(e,t,n,r){try{let{uuid:i,filter:a,page:o,perPage:s}=m.parse({uuid:e,filter:t,page:n,perPage:r}),c=await fetch(`https://ochre.lib.uchicago.edu/ochre?xquery=${encodeURIComponent(`
547
+ async function Ee(e,t,n,r){try{let{uuid:i,filter:a,page:o,perPage:s}=h.parse({uuid:e,filter:t,page:n,perPage:r}),c=await fetch(`https://ochre.lib.uchicago.edu/ochre?xquery=${encodeURIComponent(`
548
548
  for $q in input()/ochre[@uuid='${i}']
549
549
  let $filtered := $q//items/resource[contains(lower-case(identification/label), lower-case('${a}'))]
550
550
  let $maxLength := count($filtered)
@@ -553,7 +553,7 @@ async function Te(e,t,n,r){try{let{uuid:i,filter:a,page:o,perPage:s}=m.parse({uu
553
553
  {$q/metadata/item}
554
554
  {$filtered[position() >= ${((o-1)*s+1).toString()} and position() < ${(o*s+1).toString()}]}
555
555
  </gallery>
556
- `)}&format=json`);if(!c.ok)throw Error(`Error fetching gallery items, please try again later.`);let l=await c.json();if(!(`gallery`in l.result))throw Error(`Failed to fetch gallery`);let u=j(l.result.gallery.item.identification),d=j(l.result.gallery.project.identification),f={identification:u,projectIdentification:d,resources:Z(l.result.gallery.resource?Array.isArray(l.result.gallery.resource)?l.result.gallery.resource:[l.result.gallery.resource]:[]),maxLength:l.result.gallery.maxLength};return{item:f,error:null}}catch(e){return console.error(e),{item:null,error:e instanceof Error?e.message:`Failed to fetch gallery`}}}
556
+ `)}&format=json`);if(!c.ok)throw Error(`Error fetching gallery items, please try again later.`);let l=await c.json();if(!(`gallery`in l.result))throw Error(`Failed to fetch gallery`);let u=M(l.result.gallery.item.identification),d=M(l.result.gallery.project.identification),f={identification:u,projectIdentification:d,resources:Z(l.result.gallery.resource?Array.isArray(l.result.gallery.resource)?l.result.gallery.resource:[l.result.gallery.resource]:[]),maxLength:l.result.gallery.maxLength};return{item:f,error:null}}catch(e){return console.error(e),{item:null,error:e instanceof Error?e.message:`Failed to fetch gallery`}}}
557
557
  /**
558
558
  * Fetches and parses a website configuration from the OCHRE API
559
559
  *
@@ -583,4 +583,4 @@ async function Te(e,t,n,r){try{let{uuid:i,filter:a,page:o,perPage:s}=m.parse({uu
583
583
  *
584
584
  * The abbreviation is case-insensitive and should match the website's configured abbreviation in OCHRE.
585
585
  */
586
- async function Ee(e){try{let t=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(!t.ok)throw Error(`Failed to fetch website`);let n=await t.json();if(!(`ochre`in n.result)||!(`tree`in n.result.ochre))throw Error(`Failed to fetch website`);let r=n.result.ochre.metadata.project?.identification?j(n.result.ochre.metadata.project.identification):null,i=await we(n.result.ochre.tree,r?.label??``,n.result.ochre.metadata.project?.identification.website??null);return i}catch(e){return console.error(e),null}}exports.fetchByUuid=ne,exports.fetchGallery=Te,exports.fetchItem=re,exports.fetchWebsite=Ee,exports.filterProperties=C,exports.getPropertyByLabel=y,exports.getPropertyValueByLabel=x,exports.getPropertyValuesByLabel=b,exports.getUniqueProperties=S,exports.parseBibliographies=q,exports.parseBibliography=K,exports.parseConcept=ge,exports.parseConcepts=Q,exports.parseContext=N,exports.parseCoordinates=B,exports.parseDocument=L,exports.parseEmail=T,exports.parseEvents=H,exports.parseFakeString=D,exports.parseIdentification=j,exports.parseImage=R,exports.parseImageMap=de,exports.parseInterpretations=ue,exports.parseLanguages=ie,exports.parseLicense=P,exports.parseLink=se,exports.parseLinks=I,exports.parseMetadata=ae,exports.parseNotes=z,exports.parseObservation=V,exports.parseObservations=ce,exports.parsePeriod=W,exports.parsePeriods=G,exports.parsePerson=oe,exports.parsePersons=F,exports.parseProperties=U,exports.parseProperty=le,exports.parsePropertyValue=J,exports.parsePropertyValues=Y,exports.parseResource=X,exports.parseResources=Z,exports.parseSet=pe,exports.parseSpatialUnit=me,exports.parseSpatialUnits=he,exports.parseStringContent=A,exports.parseStringDocumentItem=k,exports.parseStringItem=O,exports.parseTree=fe,exports.parseWebsite=we;
586
+ async function De(e){try{let t=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(!t.ok)throw Error(`Failed to fetch website`);let n=await t.json();if(!(`ochre`in n.result)||!(`tree`in n.result.ochre))throw Error(`Failed to fetch website`);let r=n.result.ochre.metadata.project?.identification?M(n.result.ochre.metadata.project.identification):null,i=await Te(n.result.ochre.tree,r?.label??``,n.result.ochre.metadata.project?.identification.website??null);return i}catch(e){return console.error(e),null}}exports.fetchByUuid=ne,exports.fetchGallery=Ee,exports.fetchItem=re,exports.fetchWebsite=De,exports.filterProperties=w,exports.getPropertyByLabel=b,exports.getPropertyValueByLabel=S,exports.getPropertyValuesByLabel=x,exports.getUniqueProperties=C,exports.parseBibliographies=q,exports.parseBibliography=fe,exports.parseConcept=_e,exports.parseConcepts=ye,exports.parseContext=P,exports.parseCoordinates=V,exports.parseDocument=R,exports.parseEmail=T,exports.parseEvents=U,exports.parseFakeString=O,exports.parseIdentification=M,exports.parseImage=z,exports.parseImageMap=de,exports.parseInterpretations=ue,exports.parseLanguages=ie,exports.parseLicense=F,exports.parseLink=se,exports.parseLinks=L,exports.parseMetadata=ae,exports.parseNotes=B,exports.parseObservation=H,exports.parseObservations=ce,exports.parsePeriod=G,exports.parsePeriods=K,exports.parsePerson=oe,exports.parsePersons=I,exports.parseProperties=W,exports.parseProperty=le,exports.parsePropertyValue=J,exports.parsePropertyValues=Y,exports.parseResource=X,exports.parseResources=Z,exports.parseSet=me,exports.parseSpatialUnit=he,exports.parseSpatialUnits=ge,exports.parseStringContent=j,exports.parseStringDocumentItem=A,exports.parseStringItem=k,exports.parseTree=pe,exports.parseWebsite=Te;