diff --git a/__tests__/fixtures/version-3/structures.json b/__tests__/fixtures/version-3/structures.json index a3c255310f9866d44458e9d22c45c1546f0b6b66..bd7bfc276ea83aa84dbe510d7e1279f01b587637 100644 --- a/__tests__/fixtures/version-3/structures.json +++ b/__tests__/fixtures/version-3/structures.json @@ -127,7 +127,7 @@ { "id": "http://foo.test/1/range/0-0-3", "type": "Range", - "label": { "none": "missing start canvas" }, + "label": { "none": ["missing start canvas"] }, "items": [ { "id": "http://foo.test/1/canvas/c10", @@ -145,4 +145,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/__tests__/src/selectors/manifests.test.js b/__tests__/src/selectors/manifests.test.js index d7ee0a531fe9f82ba96b6f9ff102d27e736b9d29..0251ccb49a847c5ab968153a7dedffa58de37681 100644 --- a/__tests__/src/selectors/manifests.test.js +++ b/__tests__/src/selectors/manifests.test.js @@ -217,6 +217,7 @@ describe('getManifestRelatedContent', () => { expect(received).toEqual([ { format: 'application/mods+xml', + label: null, value: 'https://purl.stanford.edu/sn904cj3429.mods', }, ]); diff --git a/__tests__/src/selectors/searches.test.js b/__tests__/src/selectors/searches.test.js index ab6fab00b001926967dfc56a96ba967e3d37595a..3a9e3791a4e3e215d79cb17419d0785c21ea6a0e 100644 --- a/__tests__/src/selectors/searches.test.js +++ b/__tests__/src/selectors/searches.test.js @@ -319,7 +319,7 @@ describe('getResourceAnnotationForSearchHit', () => { describe('getResourceAnnotationLabel', () => { const companionWindowId = 'cwid'; const annoId = 'annoId2'; - it('returns the label from a LanguageMap JSON object', () => { + it('returns the label from a PropertyValue JSON object', () => { const state = { companionWindows: { [companionWindowId]: { locale: 'en' }, @@ -350,7 +350,7 @@ describe('getResourceAnnotationLabel', () => { ).toEqual(['The Annotation Label']); }); - it('returns an empty array if the annotation resource does not have a label (to be consistent w/ the return of LanguageMap.parse)', () => { + it('returns an empty array if the annotation resource does not have a label (to be consistent w/ the return of PropertyValue.parse)', () => { const state = { companionWindows: { [companionWindowId]: { locale: 'en' }, diff --git a/package.json b/package.json index 0d11099bccacac2674230c243d9e5c82d993b263..e0286bdba86168d504af2ed22b64e91afc02cfc2 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "jss": "^10.3.0", "jss-rtl": "^0.3.0", "lodash": "^4.17.11", - "manifesto.js": "^4.1.0", + "manifesto.js": "^4.2.0", "normalize-url": "^4.5.0", "openseadragon": "^2.4.2", "prop-types": "^15.6.2", diff --git a/src/components/CanvasLayers.js b/src/components/CanvasLayers.js index d2eb7d44d8e1aa471a211b3fc14955006f290e14..c58a0eab8f7dd214dd68379f46e37616deaa8f40 100644 --- a/src/components/CanvasLayers.js +++ b/src/components/CanvasLayers.js @@ -34,7 +34,7 @@ export class CanvasLayers extends Component { return (resource && resource.getLabel && resource.getLabel().length > 0) - ? resource.getLabel().map(label => label.value)[0] + ? resource.getLabel().getValue() : String(index + 1); } diff --git a/src/components/CollectionDialog.js b/src/components/CollectionDialog.js index e1aba1a6e6db82f5bea5fde40f34c4fc983a7a3e..f66e36a48cda54890294652bb2fdbcc51ea8a4ca 100644 --- a/src/components/CollectionDialog.js +++ b/src/components/CollectionDialog.js @@ -37,7 +37,7 @@ export class CollectionDialog extends Component { return (resource && resource.getLabel && resource.getLabel().length > 0) - ? resource.getLabel().map(label => label.value)[0] + ? resource.getLabel().getValue() : String(index + 1); } @@ -172,7 +172,7 @@ export class CollectionDialog extends Component { const requiredStatement = manifest && asArray(manifest.getRequiredStatement()).filter(l => l.getValue()).map(labelValuePair => ({ - label: labelValuePair.getLabel(), + label: null, values: labelValuePair.getValues(), })); diff --git a/src/components/IIIFThumbnail.js b/src/components/IIIFThumbnail.js index 789c1499bb7be76aedc4c36f28feaf09ad8d255f..a22c153a373529256747a16923356ba68943a06e 100644 --- a/src/components/IIIFThumbnail.js +++ b/src/components/IIIFThumbnail.js @@ -15,7 +15,7 @@ export class IIIFThumbnail extends Component { return (resource && resource.getLabel && resource.getLabel().length > 0) - ? resource.getLabel().map(label => label.value)[0] + ? resource.getLabel().getValue() : String(index + 1); } diff --git a/src/components/WindowSideBarCanvasPanel.js b/src/components/WindowSideBarCanvasPanel.js index 0100d965d0329b39620dc8dc2e16901cfe1eb717..bc8297dc4a2d448495590493ad9e9bbdabfa97f5 100644 --- a/src/components/WindowSideBarCanvasPanel.js +++ b/src/components/WindowSideBarCanvasPanel.js @@ -31,7 +31,7 @@ export class WindowSideBarCanvasPanel extends Component { return (resource && resource.getLabel && resource.getLabel().length > 0) - ? resource.getLabel().map(label => label.value)[0] + ? resource.getLabel().getValue() : resource.id; } diff --git a/src/components/WindowSideBarCollectionPanel.js b/src/components/WindowSideBarCollectionPanel.js index baa41c951c26e1fea9571e3a0afe6e3b04b34ca6..78b6f2b0c93def01ae376b1375a11acbf6adff7e 100644 --- a/src/components/WindowSideBarCollectionPanel.js +++ b/src/components/WindowSideBarCollectionPanel.js @@ -19,7 +19,7 @@ export class WindowSideBarCollectionPanel extends Component { return (resource && resource.getLabel && resource.getLabel().length > 0) - ? resource.getLabel().map(label => label.value)[0] + ? resource.getLabel().getValue() : resource.id; } diff --git a/src/lib/MiradorCanvas.js b/src/lib/MiradorCanvas.js index 3c490aed07dc85da4174ce4609c205823bd2a39e..01a1eef4bd255171659b59323e539b5a3ab9a165 100644 --- a/src/lib/MiradorCanvas.js +++ b/src/lib/MiradorCanvas.js @@ -167,7 +167,7 @@ export default class MiradorCanvas { */ getLabel() { return this.canvas.getLabel().length > 0 - ? this.canvas.getLabel().map(label => label.value)[0] + ? this.canvas.getLabel().getValue() : String(this.canvas.index + 1); } } diff --git a/src/state/selectors/canvases.js b/src/state/selectors/canvases.js index a6408805608c234c2a1cc556e59d744e2fbf5808..8078bf823c8385a81582e75b9d9e8f13f961294c 100644 --- a/src/state/selectors/canvases.js +++ b/src/state/selectors/canvases.js @@ -160,7 +160,7 @@ export const getCanvasLabel = createSelector( [getCanvas], canvas => (canvas && ( canvas.getLabel().length > 0 - ? canvas.getLabel().map(label => label.value)[0] + ? canvas.getLabel().getValue() : String(canvas.index + 1) )), ); diff --git a/src/state/selectors/manifests.js b/src/state/selectors/manifests.js index 5c48a79020fb27f6245e0e46a82e2e735c0fe8eb..63a726680aa8929779c2888c5cc1635b424bdbb5 100644 --- a/src/state/selectors/manifests.js +++ b/src/state/selectors/manifests.js @@ -1,6 +1,6 @@ import { createSelector } from 'reselect'; import createCachedSelector from 're-reselect'; -import { LanguageMap } from 'manifesto.js/dist-esmodule/LanguageMap'; +import { PropertyValue } from 'manifesto.js/dist-esmodule/PropertyValue'; import { Utils } from 'manifesto.js/dist-esmodule/Utils'; import getThumbnail from '../../lib/ThumbnailFactory'; import { getCompanionWindow } from './companionWindows'; @@ -12,9 +12,6 @@ function createManifestoInstance(json, locale) { if (!json) return undefined; const manifestoObject = Utils.parseManifest(json, locale ? { locale } : undefined); // Local patching of Manifesto so that when its a Collection, it behaves similarly - if (typeof manifestoObject.getViewingHint != 'function') { - manifestoObject.getViewingHint = () => {}; - } if (typeof manifestoObject.getSequences != 'function') { manifestoObject.getSequences = () => []; } @@ -109,7 +106,7 @@ export const getManifestProvider = createSelector( ], (provider, locale) => provider && provider[0].label - && LanguageMap.parse(provider[0].label, locale).map(label => label.value)[0], + && PropertyValue.parse(provider[0].label, locale).getValue(), ); /** @@ -138,8 +135,8 @@ export const getManifestHomepage = createSelector( (homepages, locale) => homepages && asArray(homepages).map(homepage => ( { - label: LanguageMap.parse(homepage.label, locale) - .map(label => label.value)[0], + label: PropertyValue.parse(homepage.label, locale) + .getValue(), value: homepage.id || homepage['@id'], } )), @@ -158,7 +155,7 @@ export const getManifestRenderings = createSelector( manifest => manifest && manifest.getRenderings().map(rendering => ( { - label: rendering.getLabel().map(label => label.value)[0], + label: rendering.getLabel().getValue(), value: rendering.id, } )), @@ -181,8 +178,8 @@ export const getManifestRelatedContent = createSelector( && asArray(seeAlso).map(related => ( { format: related.format, - label: LanguageMap.parse(related.label, locale) - .map(label => label.value)[0], + label: PropertyValue.parse(related.label, locale) + .getValue(), value: related.id || related['@id'], } )), @@ -202,7 +199,7 @@ export const getRequiredStatement = createSelector( && asArray(manifest.getRequiredStatement()) .filter(l => l.getValues().some(v => v)) .map(labelValuePair => ({ - label: labelValuePair.getLabel(), + label: (labelValuePair.label && labelValuePair.label.getValue()) || null, values: labelValuePair.getValues(), })), ); @@ -223,7 +220,7 @@ export const getRights = createSelector( ], (rights, license, locale) => { const data = rights || license; - return asArray(LanguageMap.parse(data, locale).map(label => label.value)); + return asArray(PropertyValue.parse(data, locale).getValues()); }, ); @@ -256,7 +253,7 @@ export function getManifestThumbnail(state, props) { export const getManifestTitle = createSelector( [getManifestoInstance], manifest => manifest - && manifest.getLabel().map(label => label.value)[0], + && manifest.getLabel().getValue(), ); /** @@ -270,7 +267,7 @@ export const getManifestTitle = createSelector( export const getManifestDescription = createSelector( [getManifestoInstance], manifest => manifest - && manifest.getDescription().map(label => label.value)[0], + && manifest.getDescription().getValue(), ); /** diff --git a/src/state/selectors/searches.js b/src/state/selectors/searches.js index b65ad89351d353b987ec73bfdbcd81d0195ab8e0..f679b1b59cf08a12610193dddede306ff1e9ccc0 100644 --- a/src/state/selectors/searches.js +++ b/src/state/selectors/searches.js @@ -1,5 +1,5 @@ import { createSelector } from 'reselect'; -import { LanguageMap } from 'manifesto.js/dist-esmodule/LanguageMap'; +import { PropertyValue } from 'manifesto.js/dist-esmodule/PropertyValue'; import flatten from 'lodash/flatten'; import AnnotationList from '../../lib/AnnotationList'; import { getCanvas, getCanvases } from './canvases'; @@ -195,7 +195,7 @@ export const getResourceAnnotationLabel = createSelector( !(resourceAnnotation && resourceAnnotation.resource && resourceAnnotation.resource.label) ) return []; - return LanguageMap.parse(resourceAnnotation.resource.label, locale).map(label => label.value); + return PropertyValue.parse(resourceAnnotation.resource.label, locale).getValues(); }, );