ochre-sdk 1.0.54 → 1.0.56
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.
|
@@ -520,14 +520,14 @@ function parseWebElementProperties(componentProperty, elementResource, options,
|
|
|
520
520
|
let width = null;
|
|
521
521
|
const widthProperty = componentReader.value("width");
|
|
522
522
|
if (widthProperty !== null) {
|
|
523
|
-
if (typeof widthProperty === "
|
|
524
|
-
else if (typeof widthProperty === "
|
|
523
|
+
if (typeof widthProperty === "string") width = widthProperty;
|
|
524
|
+
else if (typeof widthProperty === "number") width = widthProperty.toString();
|
|
525
525
|
}
|
|
526
526
|
let height = null;
|
|
527
527
|
const heightProperty = componentReader.value("height");
|
|
528
528
|
if (heightProperty !== null) {
|
|
529
|
-
if (typeof heightProperty === "
|
|
530
|
-
else if (typeof heightProperty === "
|
|
529
|
+
if (typeof heightProperty === "string") height = heightProperty;
|
|
530
|
+
else if (typeof heightProperty === "number") height = heightProperty.toString();
|
|
531
531
|
}
|
|
532
532
|
const isFullWidth = componentReader.valueOr("is-full-width", true);
|
|
533
533
|
const isFullHeight = componentReader.valueOr("is-full-height", true);
|
|
@@ -1127,14 +1127,14 @@ function parseWebBlock(blockResource, options, context) {
|
|
|
1127
1127
|
* @param properties - Array of raw website properties in OCHRE format
|
|
1128
1128
|
* @returns Parsed WebsiteProperties object
|
|
1129
1129
|
*/
|
|
1130
|
-
function parseWebsiteProperties(properties, websiteTree, sidebar, options) {
|
|
1130
|
+
function parseWebsiteProperties(properties, websiteTree, sidebar, options, parent) {
|
|
1131
1131
|
const websiteReader = websitePresentationReader(parseSimplifiedProperties({ property: properties }, options)).nested("presentation");
|
|
1132
1132
|
const returnProperties = {
|
|
1133
|
-
type: websiteReader.valueOr("webUI", "traditional"),
|
|
1134
|
-
status: websiteReader.valueOr("status", "development"),
|
|
1135
|
-
versionLabel: websiteReader.valueOr("version-label", "release"),
|
|
1136
|
-
privacy: websiteReader.valueOr("privacy", "public"),
|
|
1137
|
-
contact: null,
|
|
1133
|
+
type: websiteReader.valueOr("webUI", parent?.type ?? "traditional"),
|
|
1134
|
+
status: websiteReader.valueOr("status", parent?.status ?? "development"),
|
|
1135
|
+
versionLabel: websiteReader.valueOr("version-label", parent?.versionLabel ?? "release"),
|
|
1136
|
+
privacy: websiteReader.valueOr("privacy", parent?.privacy ?? "public"),
|
|
1137
|
+
contact: parent?.contact ?? null,
|
|
1138
1138
|
loadingVariant: "spinner",
|
|
1139
1139
|
theme: {
|
|
1140
1140
|
isThemeToggleDisplayed: true,
|
|
@@ -1151,33 +1151,33 @@ function parseWebsiteProperties(properties, websiteTree, sidebar, options) {
|
|
|
1151
1151
|
alignment: "start",
|
|
1152
1152
|
isProjectDisplayed: true,
|
|
1153
1153
|
searchBarBoundElementUuid: null,
|
|
1154
|
-
items: null
|
|
1154
|
+
items: parent?.navbar.items ?? null
|
|
1155
1155
|
},
|
|
1156
1156
|
footer: {
|
|
1157
1157
|
isDisplayed: true,
|
|
1158
1158
|
logoUuid: null,
|
|
1159
|
-
items: null
|
|
1159
|
+
items: parent?.footer.items ?? null
|
|
1160
1160
|
},
|
|
1161
|
-
sidebar,
|
|
1161
|
+
sidebar: sidebar ?? parent?.sidebar ?? null,
|
|
1162
1162
|
itemPage: {
|
|
1163
|
-
isMainContentDisplayed: true,
|
|
1164
|
-
isDescriptionDisplayed: true,
|
|
1165
|
-
isDocumentDisplayed: true,
|
|
1166
|
-
isNotesDisplayed: true,
|
|
1167
|
-
isEventsDisplayed: true,
|
|
1168
|
-
isPeriodsDisplayed: true,
|
|
1169
|
-
isPropertiesDisplayed: true,
|
|
1170
|
-
isBibliographyDisplayed: true,
|
|
1171
|
-
isPropertyValuesGrouped: true,
|
|
1172
|
-
isPublicationDateTimeDisplayed: true,
|
|
1173
|
-
isPersistentIdentifierDisplayed: true,
|
|
1174
|
-
iiifViewer: "universal-viewer"
|
|
1163
|
+
isMainContentDisplayed: parent?.itemPage.isMainContentDisplayed ?? true,
|
|
1164
|
+
isDescriptionDisplayed: parent?.itemPage.isDescriptionDisplayed ?? true,
|
|
1165
|
+
isDocumentDisplayed: parent?.itemPage.isDocumentDisplayed ?? true,
|
|
1166
|
+
isNotesDisplayed: parent?.itemPage.isNotesDisplayed ?? true,
|
|
1167
|
+
isEventsDisplayed: parent?.itemPage.isEventsDisplayed ?? true,
|
|
1168
|
+
isPeriodsDisplayed: parent?.itemPage.isPeriodsDisplayed ?? true,
|
|
1169
|
+
isPropertiesDisplayed: parent?.itemPage.isPropertiesDisplayed ?? true,
|
|
1170
|
+
isBibliographyDisplayed: parent?.itemPage.isBibliographyDisplayed ?? true,
|
|
1171
|
+
isPropertyValuesGrouped: parent?.itemPage.isPropertyValuesGrouped ?? true,
|
|
1172
|
+
isPublicationDateTimeDisplayed: parent?.itemPage.isPublicationDateTimeDisplayed ?? true,
|
|
1173
|
+
isPersistentIdentifierDisplayed: parent?.itemPage.isPersistentIdentifierDisplayed ?? true,
|
|
1174
|
+
iiifViewer: parent?.itemPage.iiifViewer ?? "universal-viewer"
|
|
1175
1175
|
},
|
|
1176
1176
|
options: {
|
|
1177
|
-
contextTree: null,
|
|
1178
|
-
scopes: null,
|
|
1179
|
-
labels: { title: null },
|
|
1180
|
-
stylesheets: { properties: [] }
|
|
1177
|
+
contextTree: parent?.options.contextTree ?? null,
|
|
1178
|
+
scopes: parent?.options.scopes ?? null,
|
|
1179
|
+
labels: { title: parent?.options.labels.title ?? null },
|
|
1180
|
+
stylesheets: { properties: parent?.options.stylesheets.properties ?? [] }
|
|
1181
1181
|
}
|
|
1182
1182
|
};
|
|
1183
1183
|
const contactProperty = websiteReader.property("contact");
|
|
@@ -1189,41 +1189,44 @@ function parseWebsiteProperties(properties, websiteTree, sidebar, options) {
|
|
|
1189
1189
|
};
|
|
1190
1190
|
else throw new Error(`Contact property must use “name;email”, got “${contactProperty.values[0]?.content}” (website uuid “${websiteTree.uuid}”)`, { cause: websiteTree });
|
|
1191
1191
|
}
|
|
1192
|
-
returnProperties.loadingVariant = websiteReader.valueOr("loading-variant", "spinner");
|
|
1193
|
-
returnProperties.theme.isThemeToggleDisplayed = websiteReader.valueOr("supports-theme-toggle", true);
|
|
1194
|
-
returnProperties.theme.defaultTheme = websiteReader.valueOr("default-theme", "system");
|
|
1195
|
-
returnProperties.icon.logoUuid = websiteReader.uuid("navbar-logo");
|
|
1196
|
-
returnProperties.icon.faviconUuid = websiteReader.uuid("favicon-ico");
|
|
1197
|
-
returnProperties.icon.appleTouchIconUuid = websiteReader.uuid("favicon-img");
|
|
1198
|
-
returnProperties.navbar.isDisplayed = websiteReader.valueOr("navbar-displayed", true);
|
|
1199
|
-
returnProperties.navbar.variant = websiteReader.valueOr("navbar-variant", "default");
|
|
1200
|
-
returnProperties.navbar.alignment = websiteReader.valueOr("navbar-alignment", "start");
|
|
1201
|
-
returnProperties.navbar.isProjectDisplayed = websiteReader.valueOr("navbar-project-displayed", true);
|
|
1202
|
-
returnProperties.navbar.searchBarBoundElementUuid = websiteReader.uuid("bound-element-navbar-search-bar");
|
|
1203
|
-
returnProperties.footer.isDisplayed = websiteReader.valueOr("footer-displayed", true);
|
|
1204
|
-
returnProperties.footer.logoUuid = websiteReader.uuid("footer-logo");
|
|
1192
|
+
returnProperties.loadingVariant = websiteReader.valueOr("loading-variant", parent?.loadingVariant ?? "spinner");
|
|
1193
|
+
returnProperties.theme.isThemeToggleDisplayed = websiteReader.valueOr("supports-theme-toggle", parent?.theme.isThemeToggleDisplayed ?? true);
|
|
1194
|
+
returnProperties.theme.defaultTheme = websiteReader.valueOr("default-theme", parent?.theme.defaultTheme ?? "system");
|
|
1195
|
+
returnProperties.icon.logoUuid = websiteReader.uuid("navbar-logo") ?? parent?.icon.logoUuid ?? null;
|
|
1196
|
+
returnProperties.icon.faviconUuid = websiteReader.uuid("favicon-ico") ?? parent?.icon.faviconUuid ?? null;
|
|
1197
|
+
returnProperties.icon.appleTouchIconUuid = websiteReader.uuid("favicon-img") ?? parent?.icon.appleTouchIconUuid ?? null;
|
|
1198
|
+
returnProperties.navbar.isDisplayed = websiteReader.valueOr("navbar-displayed", parent?.navbar.isDisplayed ?? true);
|
|
1199
|
+
returnProperties.navbar.variant = websiteReader.valueOr("navbar-variant", parent?.navbar.variant ?? "default");
|
|
1200
|
+
returnProperties.navbar.alignment = websiteReader.valueOr("navbar-alignment", parent?.navbar.alignment ?? "start");
|
|
1201
|
+
returnProperties.navbar.isProjectDisplayed = websiteReader.valueOr("navbar-project-displayed", parent?.navbar.isProjectDisplayed ?? true);
|
|
1202
|
+
returnProperties.navbar.searchBarBoundElementUuid = websiteReader.uuid("bound-element-navbar-search-bar") ?? parent?.navbar.searchBarBoundElementUuid ?? null;
|
|
1203
|
+
returnProperties.footer.isDisplayed = websiteReader.valueOr("footer-displayed", parent?.footer.isDisplayed ?? true);
|
|
1204
|
+
returnProperties.footer.logoUuid = websiteReader.uuid("footer-logo") ?? parent?.footer.logoUuid ?? null;
|
|
1205
1205
|
const itemPageReader = websiteReader.nestedByValue("page-type", "item-page");
|
|
1206
1206
|
if (itemPageReader.size > 0) {
|
|
1207
|
-
returnProperties.itemPage.isMainContentDisplayed = itemPageReader.valueOr("item-page-main-content-displayed",
|
|
1208
|
-
returnProperties.itemPage.isDescriptionDisplayed = itemPageReader.valueOr("item-page-description-displayed",
|
|
1209
|
-
returnProperties.itemPage.isDocumentDisplayed = itemPageReader.valueOr("item-page-document-displayed",
|
|
1210
|
-
returnProperties.itemPage.isNotesDisplayed = itemPageReader.valueOr("item-page-notes-displayed",
|
|
1211
|
-
returnProperties.itemPage.isEventsDisplayed = itemPageReader.valueOr("item-page-events-displayed",
|
|
1212
|
-
returnProperties.itemPage.isPeriodsDisplayed = itemPageReader.valueOr("item-page-periods-displayed",
|
|
1213
|
-
returnProperties.itemPage.isPropertiesDisplayed = itemPageReader.valueOr("item-page-properties-displayed",
|
|
1214
|
-
returnProperties.itemPage.isBibliographyDisplayed = itemPageReader.valueOr("item-page-bibliography-displayed",
|
|
1215
|
-
returnProperties.itemPage.isPropertyValuesGrouped = itemPageReader.valueOr("item-page-property-values-grouped",
|
|
1216
|
-
returnProperties.itemPage.isPublicationDateTimeDisplayed = itemPageReader.valueOr("item-page-publication-date-time-displayed",
|
|
1217
|
-
returnProperties.itemPage.isPersistentIdentifierDisplayed = itemPageReader.valueOr("item-page-persistent-identifier-displayed",
|
|
1218
|
-
returnProperties.itemPage.iiifViewer = itemPageReader.valueOr("item-page-iiif-viewer",
|
|
1207
|
+
returnProperties.itemPage.isMainContentDisplayed = itemPageReader.valueOr("item-page-main-content-displayed", returnProperties.itemPage.isMainContentDisplayed);
|
|
1208
|
+
returnProperties.itemPage.isDescriptionDisplayed = itemPageReader.valueOr("item-page-description-displayed", returnProperties.itemPage.isDescriptionDisplayed);
|
|
1209
|
+
returnProperties.itemPage.isDocumentDisplayed = itemPageReader.valueOr("item-page-document-displayed", returnProperties.itemPage.isDocumentDisplayed);
|
|
1210
|
+
returnProperties.itemPage.isNotesDisplayed = itemPageReader.valueOr("item-page-notes-displayed", returnProperties.itemPage.isNotesDisplayed);
|
|
1211
|
+
returnProperties.itemPage.isEventsDisplayed = itemPageReader.valueOr("item-page-events-displayed", returnProperties.itemPage.isEventsDisplayed);
|
|
1212
|
+
returnProperties.itemPage.isPeriodsDisplayed = itemPageReader.valueOr("item-page-periods-displayed", returnProperties.itemPage.isPeriodsDisplayed);
|
|
1213
|
+
returnProperties.itemPage.isPropertiesDisplayed = itemPageReader.valueOr("item-page-properties-displayed", returnProperties.itemPage.isPropertiesDisplayed);
|
|
1214
|
+
returnProperties.itemPage.isBibliographyDisplayed = itemPageReader.valueOr("item-page-bibliography-displayed", returnProperties.itemPage.isBibliographyDisplayed);
|
|
1215
|
+
returnProperties.itemPage.isPropertyValuesGrouped = itemPageReader.valueOr("item-page-property-values-grouped", returnProperties.itemPage.isPropertyValuesGrouped);
|
|
1216
|
+
returnProperties.itemPage.isPublicationDateTimeDisplayed = itemPageReader.valueOr("item-page-publication-date-time-displayed", returnProperties.itemPage.isPublicationDateTimeDisplayed);
|
|
1217
|
+
returnProperties.itemPage.isPersistentIdentifierDisplayed = itemPageReader.valueOr("item-page-persistent-identifier-displayed", returnProperties.itemPage.isPersistentIdentifierDisplayed);
|
|
1218
|
+
returnProperties.itemPage.iiifViewer = itemPageReader.valueOr("item-page-iiif-viewer", returnProperties.itemPage.iiifViewer);
|
|
1219
1219
|
}
|
|
1220
1220
|
if (websiteTree.options != null) {
|
|
1221
1221
|
const parsedOptions = parseWebsiteOptions(websiteTree.options, options);
|
|
1222
|
-
returnProperties.options.scopes = parsedOptions.scopes;
|
|
1223
|
-
returnProperties.options.contextTree = parsedOptions.contextTree;
|
|
1224
|
-
returnProperties.options.labels = parsedOptions.labels;
|
|
1222
|
+
returnProperties.options.scopes = (parsedOptions.scopes != null && parsedOptions.scopes.length > 0 ? parsedOptions : returnProperties.options).scopes;
|
|
1223
|
+
returnProperties.options.contextTree = parsedOptions.contextTree ?? returnProperties.options.contextTree;
|
|
1224
|
+
returnProperties.options.labels = { title: parsedOptions.labels.title ?? returnProperties.options.labels.title };
|
|
1225
|
+
}
|
|
1226
|
+
if ("styleOptions" in websiteTree && websiteTree.styleOptions != null) {
|
|
1227
|
+
const stylesheetProperties = parseStylesheets(websiteTree.styleOptions.style);
|
|
1228
|
+
if (stylesheetProperties.length > 0) returnProperties.options.stylesheets.properties = stylesheetProperties;
|
|
1225
1229
|
}
|
|
1226
|
-
if ("styleOptions" in websiteTree && websiteTree.styleOptions != null) returnProperties.options.stylesheets.properties = parseStylesheets(websiteTree.styleOptions.style);
|
|
1227
1230
|
return returnProperties;
|
|
1228
1231
|
}
|
|
1229
1232
|
function parseContextItem(contextItemToParse, options) {
|
|
@@ -1303,7 +1306,8 @@ function parseWebsiteTree(websiteTree, context, type, options, slugPrefix) {
|
|
|
1303
1306
|
pageSlugsByUuid
|
|
1304
1307
|
};
|
|
1305
1308
|
const sidebar = parseSidebar(resources, options, treeContext);
|
|
1306
|
-
const properties = parseWebsiteProperties(websiteTree.properties.property, websiteTree, sidebar, options);
|
|
1309
|
+
const properties = parseWebsiteProperties(websiteTree.properties.property, websiteTree, sidebar, options, context.parentProperties ?? null);
|
|
1310
|
+
const license = parseLicense(websiteTree.availability) ?? context.parentLicense ?? null;
|
|
1307
1311
|
return {
|
|
1308
1312
|
uuid: websiteTree.uuid,
|
|
1309
1313
|
type,
|
|
@@ -1312,8 +1316,12 @@ function parseWebsiteTree(websiteTree, context, type, options, slugPrefix) {
|
|
|
1312
1316
|
publicationDateTime: websiteTree.publicationDateTime ?? null,
|
|
1313
1317
|
identification: parseIdentification(websiteTree.identification, options),
|
|
1314
1318
|
creators: websiteTree.creators ? parsePersonList(websiteTree.creators.creator, options) : [],
|
|
1315
|
-
license
|
|
1316
|
-
items: parseWebpages(resources, options,
|
|
1319
|
+
license,
|
|
1320
|
+
items: parseWebpages(resources, options, {
|
|
1321
|
+
...treeContext,
|
|
1322
|
+
parentProperties: properties,
|
|
1323
|
+
parentLicense: license
|
|
1324
|
+
}, slugPrefix),
|
|
1317
1325
|
properties
|
|
1318
1326
|
};
|
|
1319
1327
|
}
|
package/dist/types/website.d.mts
CHANGED
|
@@ -345,8 +345,8 @@ type WebElementComponent<T extends LanguageCodes = LanguageCodes> = {
|
|
|
345
345
|
component: "image";
|
|
346
346
|
images: Array<WebImage<T>>;
|
|
347
347
|
variant: "default" | "carousel" | "grid" | "hero";
|
|
348
|
-
width:
|
|
349
|
-
height:
|
|
348
|
+
width: string | null;
|
|
349
|
+
height: string | null;
|
|
350
350
|
isFullWidth: boolean;
|
|
351
351
|
isFullHeight: boolean;
|
|
352
352
|
imageQuality: "high" | "low";
|