{"version":3,"file":"object-4YhpT3N5.js","sources":["../../src/mixins/download/index.vue","../../src/helpers/ProvenanceHelpers.js","../../src/helpers/VisualItem.js","../../src/stores/object.js"],"sourcesContent":["\n","import {\n getValueByClassification,\n getValuesByClassification,\n getClassifiedAs,\n normalizeFieldToArray,\n getAssignedBy,\n getValueOrContent\n} from \"@thegetty/linkedart.js\";\nimport { getIndexedId } from \"@thegetty-private/rad-app-utils\";\nimport { getName } from \"@thegetty-private/linked-data.js\";\nimport * as localActorHelpers from \"@/helpers/Person\";\nimport { isGroupTheGetty } from \"@/helpers/Group\";\nimport { removeEmpty } from \"@/helpers/LinkedArt\";\nimport internal from \"@/data/internal-ontologies\";\nimport aat from \"@/data/aat\";\nconst IDENTIFIED_BY = \"identified_by\";\nconst REFERRED_TO_BY = \"referred_to_by\";\nconst CLASSIFIED_AS = \"classified_as\";\nconst PART_OF = \"part_of\";\nconst CHANGED_OWNERSHIP_THROUGH = \"changed_ownership_through\";\n\n/**\n * Gets the overall provenance remarks from the HumanMadeObject's list of linguistic objects\n *\n * @param {object} humanMadeObject - the JSON-LD object\n *\n * @returns {array} a list of the remarks ordered by the dimension\n */\nexport function getOverallProvenanceNotes(humanMadeObject) {\n if (humanMadeObject == undefined) {\n return [];\n }\n let referred = normalizeFieldToArray(humanMadeObject, REFERRED_TO_BY);\n let remarks = getClassifiedAs(referred, aat.PROVENANCE_REMARKS);\n\n if (remarks.length == 0) {\n return [];\n }\n // sort them by the assigned order dimensions\n remarks = sortByAssignedDimension(remarks);\n // just return the values\n return remarks.map((remark) => {\n return getValueOrContent(remark);\n });\n}\n\n/**\n * Uses the \"assigned\" dimension property to sort all of the objects in the array\n *\n * @param {array} array - a list of JSON-LD fragments\n *\n * @returns {array}\n */\nexport function sortByAssignedDimension(array) {\n return array.sort((a, b) => {\n let aOrder = getAssignedBy(a, \"dimension\")[0].value;\n let bOrder = getAssignedBy(b, \"dimension\")[0].value;\n return aOrder > bOrder ? 1 : -1;\n });\n}\n\n/**\n * Gets the owner's lugt number\n *\n * @param {object} acquisition - the acquisition object\n *\n * @returns {string|undefined} - the owern's lugt number\n */\nexport function getLugtNumber(acquisition) {\n let identifiedBy = normalizeFieldToArray(\n getFirstAcquisitionPart(acquisition),\n IDENTIFIED_BY\n );\n\n let lugtNumbers = getValuesByClassification(identifiedBy, aat.LUGT_NUMBER);\n if (lugtNumbers.length == 0) {\n return undefined;\n }\n return lugtNumbers;\n}\n\n/**\n * Traverses the HumanMadeObject to extract out all of the indexedIds for constituents that purchased the object\n *\n * @param {object} humanMadeObject\n *\n * @returns {array} a list of indexedIds\n */\nexport function getOwnersIndexedIds(humanMadeObject) {\n return getOwners(humanMadeObject, true);\n}\n\n/**\n * Gets all of the owner stubs from the HumanMadeObject\n *\n * @param {Object} humanMadeObject - the JSON-LD HumanMadeObject\n * @param {boolean} returnIdsOnly - whether to return just the list of indexedIds (default false)\n *\n * @returns {array} - the list of stub constituents who were owners\n */\nexport function getOwners(humanMadeObject, returnIdsOnly = false) {\n let changedOwnership = normalizeFieldToArray(\n humanMadeObject,\n CHANGED_OWNERSHIP_THROUGH\n );\n let stubs = [];\n let indexedIds = [];\n changedOwnership.forEach((activity) => {\n let constituents = normalizeFieldToArray(activity, \"transferred_title_to\");\n constituents.forEach((constituent) => {\n let indexedId = getIndexedId(constituent.id);\n if (indexedId in indexedIds == false) {\n indexedIds.push(indexedId);\n stubs.push(constituent);\n }\n });\n });\n\n if (returnIdsOnly) {\n return indexedIds;\n }\n\n return stubs;\n}\n\n/**\n * Gets the \"Place Found\" with the additional metadata for the Place\n *\n * @param {object} humanMadeObject - the JSON-LD representation of the HumanMadeObject\n *\n * @returns {object} - an object that shares `timespan` and `remarks` with the ownership entries\n */\nexport function getProvenancePlaceFound(humanMadeObject) {\n let found = getClassifiedAs(\n normalizeFieldToArray(humanMadeObject, REFERRED_TO_BY),\n internal.PLACE_FOUND\n )[0];\n\n let current_keeper = normalizeFieldToArray(humanMadeObject, \"current_keeper\");\n\n // limit to just things that have a place found AND the things from the antiquities department\n if (\n found == undefined ||\n current_keeper.filter(\n (keeper) =>\n keeper.id == internal.ANTIQUITIES_DEPARTMENT ||\n keeper.id == internal.ANTIQUITIES_DEPARTMENT_STAGING\n ).length < 1\n ) {\n return;\n }\n\n // create a pseudo entry that goes with the owners but with a place instead of an owner.\n let pseudoOwner = {\n place: getValueOrContent(found),\n remarks: getValueOrContent(getAssignedBy(found, REFERRED_TO_BY)[0])\n };\n\n // check if there is an available timespan to use, if not, use \"-\"\n const timespan = getAssignedBy(found, \"timespan\");\n if (timespan.length == 0) {\n pseudoOwner.timespan = \"-\";\n } else {\n pseudoOwner.timespan = getValueOrContent(timespan[0].identified_by[0]);\n }\n\n return pseudoOwner;\n}\n\n/**\n * Gets all available provenanace data to be displayed on object page\n *\n * @param {object} humanMadeObject - the JSON-LD HumanMadeObject\n * @param {array} owners - an array of owner objects from the store\n *\n * @returns {array} - an array of objects containing provenanace data\n */\nexport function getProvenanceData(\n humanMadeObject,\n owners = [],\n unknownOwners = []\n) {\n let changedOwnership = normalizeFieldToArray(\n humanMadeObject,\n CHANGED_OWNERSHIP_THROUGH\n );\n\n if (humanMadeObject == undefined || !changedOwnership.length) {\n return undefined;\n }\n\n let acquisitions = sortAcquisitions(changedOwnership);\n\n // take the list of owner data passed in and make it a map/dictionary\n // that's easier to search through for the below mapping\n let ownerData = {};\n owners = owners.filter((owner) => owner != undefined);\n\n owners.forEach((owner) => {\n ownerData[getIndexedId(owner.id)] = owner;\n });\n\n acquisitions = acquisitions\n .map((acquisition) => {\n let owners = [];\n let transferred_title_to = normalizeFieldToArray(\n acquisition,\n \"transferred_title_to\"\n );\n\n sortByAssignedDimension(transferred_title_to).forEach((owner) => {\n let ownerIndexedId = getIndexedId(owner.id);\n const source = ownerData[ownerIndexedId];\n\n let data = {\n id: ownerIndexedId,\n prefix: getJoiningPrefix(owner),\n suffix: getSuffix(owner),\n name: getName(source),\n life_dates: localActorHelpers.getLifeDates(source),\n lugtNumber: getLugtNumber(acquisition),\n nationality_and_dates:\n localActorHelpers.getNationalityAndDates(source)\n };\n\n if (\n isOwnerPrivate(source) ||\n isGroupTheGetty(source) ||\n unknownOwners.includes(source?.id)\n ) {\n data[\"hideLink\"] = true;\n }\n\n owners.push(data);\n });\n\n if (!isDeaccessioned(acquisition)) {\n let result = {\n citation: getProvenanceCitation(acquisition),\n location: getProvenanceLocation(acquisition),\n owners: owners,\n remarks: getProvenanceRemarks(acquisition),\n saleNote: getProvenanceSaleNote(acquisition),\n statement: getProvenanceStatement(acquisition),\n timespan: getProvenanceTimespan(acquisition),\n naziEraGaps: hasNaziEraGaps(acquisition),\n naziEraRestitution: hasNaziEraRestitution(acquisition)\n };\n\n return removeEmpty(result);\n }\n })\n .filter((acq) => acq);\n\n // inject the place_found as the 1st element\n let found = getProvenancePlaceFound(humanMadeObject);\n\n if (found != undefined) {\n acquisitions = [found, ...acquisitions];\n }\n return acquisitions;\n}\n\n/**\n * Determines whether the acquisition has any Nazi Era Gaps\n *\n * @param {object} acquisition - the JSON-LD acquisition object\n *\n * @returns {boolean}\n */\nexport function hasNaziEraGaps(acquisition) {\n return hasAssignedClassification(acquisition, internal.NAZI_ERA_GAPS);\n}\n\n/**\n * Finds the assigned classification on the acquisition\n *\n * @param {object} acquisition - the JSON-LD acquisition record\n * @param {string} classifiedAs - the classification type for the query\n * @private\n *\n * @returns {boolean}\n */\nfunction hasAssignedClassification(acquisition, classifiedAs) {\n let assigned = getAssignedBy(acquisition, CLASSIFIED_AS);\n if (assigned.length > 0) {\n let results = assigned.filter(\n (classification) => classification.id == classifiedAs\n );\n if (results.length > 0) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Returns whether the owner is classified as \"Private\" or not\n *\n * @param {object} owner - the JSON-LD object for a Person or Group\n *\n * @returns {boolean}\n */\nexport function isOwnerPrivate(owner) {\n return getClassifiedAs(owner, aat.PRIVATE).length > 0;\n}\n\n/**\n * Returns whether a provenance entry is an empty deaccessioned entry\n *\n * @param {object} owner - the JSON-LD object for a Person or Group\n *\n * @returns {boolean}\n */\nexport function isDeaccessioned(acquisition) {\n return getClassifiedAs(acquisition, aat.DEACCESSIONED).length > 0;\n}\n\n/**\n * Determines whether the acquisition has any Nazi Era Restitution records\n *\n * @param {object} acquisition - the JSON-LD acquisition object\n *\n * @returns {boolean}\n */\nexport function hasNaziEraRestitution(acquisition) {\n return hasAssignedClassification(acquisition, internal.NAZI_ERA_RESTITUTED);\n}\n\n/**\n * Transforms the provenance data for the indexer\n *\n * @param {object} provenanceData - the generic provenance data to be processed for the indexer\n *\n * @returns {object}\n */\nexport function cleanupForIndexer(provenanceData) {\n if (provenanceData == undefined) {\n return;\n }\n return provenanceData.map((rec) => {\n let owners = [];\n if (rec.owners) {\n // transform each owner\n rec.owners.forEach((owner) => {\n let indexedOwner = {\n id: owner.id,\n primary_name: owner.name,\n \"primary_name--text\": owner.name,\n life_dates: owner.life_dates,\n nationality_and_dates: owner.nationality_and_dates,\n lugtNumber: owner.lugtNumber,\n prefix: owner.prefix\n };\n\n // delete fields of 'only' undefined values\n for (let field of [\n \"life_dates\",\n \"lugtNumber\",\n \"prefix\",\n \"nationality_and_dates\"\n ]) {\n if (\n indexedOwner[field] == undefined ||\n indexedOwner[field].length == 0\n ) {\n delete indexedOwner[field];\n }\n }\n owners.push(indexedOwner);\n });\n rec.owner = owners;\n }\n // rename our fields\n for (let field of [\n \"citation\",\n \"remarks\",\n \"saleNote\",\n \"statement\",\n \"timespan\",\n \"location\"\n ]) {\n if (rec[field] != undefined) {\n rec[field + \"--text\"] = rec[field];\n }\n delete rec[field];\n }\n\n // delete extra fields\n for (let field of [\"owners\", \"naziEraGaps\", \"naziEraRestitution\"]) {\n delete rec[field];\n }\n return rec;\n });\n}\n\n/**\n * An internal function to centralize checking whether the HumanMadeObject contains Nazi Era Gaps or Restitution Records\n *\n * @param {object} humanMadeObject - the HumanMadeObject JSON-LD\n * @param {function} callback - the callback function to test whether the entry contains the value\n *\n * @private\n * @returns {boolean}\n */\nfunction hasNaziEraAttribution(humanMadeObject, callback) {\n let changedOwnership = normalizeFieldToArray(\n humanMadeObject,\n CHANGED_OWNERSHIP_THROUGH\n );\n\n if (humanMadeObject == undefined || !changedOwnership.length) {\n return false;\n }\n\n // iterate through each acquisition\n for (let i = 0; i < changedOwnership.length; i++) {\n let acquisition = changedOwnership[i];\n let parts = normalizeFieldToArray(acquisition, PART_OF);\n\n // the by each part\n for (let j = 0; j < parts.length; j++) {\n let part = parts[j];\n if (callback(part)) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Returns whether the HumanMadeObject contains Nazi Era gaps\n *\n * @param {object} humanMadeObject - the HumanMadeObject JSON-LD\n *\n * @returns {boolean}\n */\nexport function objectHasNaziEraGaps(humanMadeObject) {\n return hasNaziEraAttribution(humanMadeObject, hasNaziEraGaps);\n}\n\n/**\n * Returns whether the HumanMadeObject contains Nazi Era restitution records\n *\n * @param {object} humanMadeObject - the HumanMadeObject JSON-LD\n *\n * @returns {boolean}\n */\nexport function objectHasNaziEraRestitution(humanMadeObject) {\n return hasNaziEraAttribution(humanMadeObject, hasNaziEraRestitution);\n}\n\n/**\n * Extracts out the prefix (if it exists) for a person (could be 'probably' or the joining 'and')\n *\n * @param {object} owner - the `transferred_title_to` reference to an actor\n *\n * @returns {string} the prefix text\n */\nexport function getJoiningPrefix(owner) {\n let assigned = getAssignedBy(owner, REFERRED_TO_BY);\n return getValueByClassification(assigned, internal.ACTOR_NAME_PREFIX);\n}\n\n/**\n * Extracts out the suffix (if it exists) for a person\n *\n * @param {object} owner - the `transferred_title_to` reference to an actor\n *\n * @returns {string} the suffix text\n */\nexport function getSuffix(owner) {\n let assigned = getAssignedBy(owner, REFERRED_TO_BY);\n return getValueByClassification(assigned, internal.ACTOR_NAME_SUFFIX);\n}\n\n/**\n * Gets the provenance location from an acquisition\n *\n * @param {object} acquisition - the acquisition object\n *\n * @returns {string} - the provenance location\n */\nexport function getProvenanceLocation(acquisition) {\n let referredToBy = normalizeFieldToArray(\n getFirstAcquisitionPart(acquisition),\n REFERRED_TO_BY\n );\n\n return getValueByClassification(referredToBy, aat.PROVENANCE_LOCATION);\n}\n\n/**\n * Gets the provenance remarks from an acquisition\n *\n * @param {object} acquisition - the acquisition object\n *\n * @returns {string|undefined} - the provenance remarks\n */\nexport function getProvenanceRemarks(acquisition) {\n let referredToBy = normalizeFieldToArray(\n getFirstAcquisitionPart(acquisition),\n REFERRED_TO_BY\n );\n\n return getValueByClassification(referredToBy, aat.PROVENANCE_REMARKS);\n}\n\n/**\n * Gets the provenance sale note from an acquisition\n *\n * @param {object} acquisition - the acquisition object\n *\n * @returns {string|undefined} - the provenance sale note\n */\nexport function getProvenanceSaleNote(acquisition) {\n let referredToBy = normalizeFieldToArray(\n getFirstAcquisitionPart(acquisition),\n REFERRED_TO_BY\n );\n\n return getValueByClassification(referredToBy, aat.PROVENANCE_SALE_NOTE);\n}\n\n/**\n * Gets the provenance statement from an acquisition\n *\n * @param {object} acquisition - the acquisition object\n *\n * @returns {string} - the provenance statement\n */\nexport function getProvenanceStatement(acquisition) {\n let referredToBy = normalizeFieldToArray(\n getFirstAcquisitionPart(acquisition),\n REFERRED_TO_BY\n );\n\n return getValueByClassification(referredToBy, aat.PROVENANCE_STATEMENT);\n}\n\n/**\n * Sorts the list of acquisitions by the order defined by the part's ends_before_the_start_of\n *\n * @param {array} acquisitions - a list of the acquisitions\n *\n * @returns {array} - the sorted list\n */\nexport function sortAcquisitions(acquisitions) {\n let idMap = {};\n let current = undefined;\n if (acquisitions == undefined || acquisitions.length == 0) {\n return [];\n }\n // loop through all of the acquisitions and find (a) the first and also create a map of ids => acqusiitions\n acquisitions.forEach((acquisition) => {\n let part = getFirstAcquisitionPart(acquisition);\n idMap[part.id] = acquisition;\n if (part.starts_after_the_end_of == undefined) {\n current = acquisition;\n }\n });\n\n // while we have a current, find the next and add it it to sorted\n let sorted = [current];\n while (\n getFirstAcquisitionPart(current).ends_before_the_start_of != undefined\n ) {\n let nextId =\n getFirstAcquisitionPart(current).ends_before_the_start_of[0].id;\n current = idMap[nextId];\n if (current == undefined) {\n break;\n }\n sorted.push(current);\n }\n\n return sorted;\n}\n\n/**\n * Gets the citation from an acquisition\n *\n * @param {object} acquisition\n * @returns {string}\n */\nexport function getProvenanceCitation(acquisition) {\n let referredToBy = normalizeFieldToArray(\n getFirstAcquisitionPart(acquisition),\n REFERRED_TO_BY\n );\n let citation = getValueByClassification(\n referredToBy,\n internal.PROVENANCE_CITATION\n );\n return citation;\n}\n\n/**\n * helper to get the part\n *\n * @param {object} acquisition\n * @returns {object}\n */\nfunction getFirstAcquisitionPart(acquisition) {\n let firstPart = normalizeFieldToArray(acquisition, PART_OF);\n if (firstPart.length) {\n return firstPart[0];\n }\n return undefined;\n}\n\n/**\n * Gets the human-readable version of the provenance timespan\n *\n * @param {Object} acquisition - the JSON-LD Acquisition record\n *\n * @returns {string|undefined} - the textual version of the date\n */\nexport function getProvenanceTimespan(acquisition) {\n let part = getFirstAcquisitionPart(acquisition);\n let timespan = part.timespan;\n if (timespan == undefined) {\n return undefined;\n }\n\n const identified_by = normalizeFieldToArray(timespan, IDENTIFIED_BY);\n if (identified_by.length == 0) {\n return undefined;\n }\n return identified_by[0].content;\n}\n","import {\n getValueByClassification,\n normalizeFieldToArray,\n getCopyrightStatements\n} from \"@thegetty/linkedart.js\";\nimport {\n getClearanceLevel,\n getVisualItemsRightsStatementId,\n getIIIFImageId,\n getAltText,\n getDescription,\n extractImageUuid\n} from \"@thegetty-private/linked-data.js\";\nimport aat from \"@/data/aat\";\nimport internal from \"@/data/internal-ontologies\";\nimport rightsStatements from \"@/data/rights-statements\";\n\nconst DIGITALLY_SHOWN_BY = \"digitally_shown_by\";\n\n/**\n * Checks whether an image supports the allowed permissions or not\n *\n * @param {object} object\n * @param {array} allowedImagePermissions\n *\n * @returns {boolean}\n */\nfunction canImage(object, allowedImagePermissions) {\n if (object == undefined) {\n return false;\n }\n\n const clearanceLevels = getClearanceLevel(object);\n const clearanceIds = clearanceLevels.map((obj) => obj.id);\n const includesAllowed = clearanceIds.some((id) =>\n allowedImagePermissions.includes(id)\n );\n\n return includesAllowed;\n}\n\n/**\n * Checks the visual item clearance to determine if the image\n * can be zoomed\n *\n * @param {object} object - the JSON-LD VisualItem\n *\n * @returns {boolean} whether or not to display the image\n */\nexport function isZoomable(object) {\n const allowedImagePermissions = [\n internal.DOWNLOAD,\n internal.ENLARGE,\n internal.ZOOM\n ];\n return canImage(object, allowedImagePermissions);\n}\n\n/**\n * Checks the visual item clearance to determine if the image\n * can be displayed\n *\n * @param {object} object - the JSON-LD VisualItem\n *\n * @returns {boolean} whether or not to display the image\n */\nexport function isDisplayable(object) {\n const allowedImagePermissions = [\n internal.DOWNLOAD,\n internal.ENLARGE,\n internal.THUMBNAIL,\n internal.ZOOM\n ];\n\n return canImage(object, allowedImagePermissions);\n}\n\n/**\n * Whether the visual item can be downloaded or not\n *\n * @param {object} object - the Visual Item\n *\n * @returns {boolean}\n */\nexport function canDownload(object) {\n return canImage(object, [internal.DOWNLOAD]);\n}\n\n/**\n * Checks the dimensions of a visual item to determine if the portrait\n * should be used (includes square images)\n *\n * @param {object} object - the JSON-LD VisualItem\n *\n * @returns {boolean} whether or not to use portrait view\n */\nexport function isPortrait(object) {\n const digitallyShownBy = normalizeFieldToArray(object, DIGITALLY_SHOWN_BY);\n\n if (!digitallyShownBy) {\n return undefined;\n }\n\n // check for both dimensions & dimension field\n let dimensions = digitallyShownBy[0].dimensions;\n if (dimensions == undefined) {\n dimensions = digitallyShownBy[0].dimension;\n }\n\n const height = getValueByClassification(dimensions, aat.HEIGHT);\n const width = getValueByClassification(dimensions, aat.WIDTH);\n\n return width > height ? false : true;\n}\n\n/**\n * Extracts the IIIF Image UUID from the current canvas\n * @returns {string}\n */\nexport function getCanvasUuid(canvas) {\n if (canvas == undefined) {\n return;\n }\n return extractImageUuid(canvas.images[0].resource.service[\"@id\"]);\n}\n\n/**\n * Extracts the IIIF Image service url from the selected canvas\n * @returns {string}\n */\nexport function getServiceUrl(canvas) {\n if (canvas == undefined) {\n return;\n }\n return canvas.images[0].resource.service[\"@id\"];\n}\n\n/**\n * Extracts a visual item's copyright statement\n *\n * @param {object} object - the JSON-LD VisualItem\n *\n * @returns {string}\n */\nexport function getCopyright(object) {\n const copyrightStatements = getCopyrightStatements(object);\n if (copyrightStatements.length === 0) {\n return;\n }\n return copyrightStatements[0];\n}\n\n/**\n * Gets the RightsStatement.org ID from the Visual Item\n *\n * @param {Object} visualItem - the Visual item\n *\n * @returns {String} the Rights Statement.org ID\n */\nexport function getRightsStatementId(visualItem) {\n let statement = getVisualItemsRightsStatementId(\n visualItem,\n internal.RIGHTS_STATEMENT_ID\n );\n\n if (statement == undefined) {\n statement = getVisualItemsRightsStatementId(visualItem);\n }\n\n return statement;\n}\n\n/**\n * Gets and formats metadata for an array of visual items\n * @param {array} visualItems - array of visual item lod objects\n * @returns {array} visual item metadata objects\n */\nexport function getVisualItemMetadata(visualItems) {\n return visualItems.map((item) => {\n let itemMetadata = {\n id: item.id,\n iiifImageId: getIIIFImageId(item),\n altText: getAltText(item),\n canDownload: canDownload(item),\n descriptiveNote: getDescription(item),\n disableContextMenu: isInCopyright(item),\n isDisplayable: isDisplayable(item),\n isPortrait: isPortrait(item),\n isZoomable: isZoomable(item),\n rightsStatementId: getRightsStatementId(item),\n copyright: getCopyright(item)\n };\n\n // remove empty values\n itemMetadata = Object.entries(itemMetadata).filter(\n (e) => e[1] !== undefined\n );\n return Object.fromEntries(itemMetadata);\n });\n}\n\n/**\n * Temporary helper to determine whether visual item is in copyright\n * @todo remove after image viewer launch\n *\n * @param {object} visualItem\n * @returns {boolean}\n */\nexport function isInCopyright(visualItem) {\n let rightsStatementId = getRightsStatementId(visualItem);\n return (\n rightsStatementId.endsWith(rightsStatements.IN_COPYRIGHT) ||\n rightsStatementId.endsWith(rightsStatements.IN_COPYRIGHT_UNIDENTIFIABLE)\n );\n}\n","import { defineStore } from \"pinia\";\nimport { useAatStore } from \"@/stores/aat.js\";\nimport { getLinksFromIdManager, getElasticData } from \"./localActionSupport\";\n\nimport * as configHelper from \"@/helpers/configHelper\";\nimport * as localHumanMadeObjectHelpers from \"@/helpers/HumanMadeObject\";\nimport {\n getAllStubs,\n getExhibitionArray,\n getExhibitionAndLocations\n} from \"@/helpers/Exhibition\";\nimport {\n containsCustomManifest,\n getManifestThumbnail,\n getTechnicalMetadataFields,\n removeEmpty,\n getManifestUrls\n} from \"@/helpers/LinkedArt\";\nimport {\n getHumanMadeObjectMetadata,\n setMetaValues\n} from \"@/helpers/MetaTagHelper\";\n\nimport {\n getOwners,\n getProvenanceData,\n getOverallProvenanceNotes\n} from \"@/helpers/ProvenanceHelpers\";\nimport { transformSearchResultToThumbnailItemWithArtist } from \"@/helpers/SearchItemHelper\";\nimport { getVisualItemMetadata } from \"@/helpers/VisualItem\";\n\nimport { dataService, getIndexedId } from \"@thegetty-private/rad-app-utils\";\nimport {\n getName,\n getObjectNumber,\n getObjectDescription,\n convertToTitleCase,\n getLocationMessage,\n getCopyrightStatement\n} from \"@thegetty-private/linked-data.js\";\nimport { getClassifiedAs, normalizeFieldToArray } from \"@thegetty/linkedart.js\";\n\nimport * as aat from \"@/data/aat\";\nimport * as iiif from \"@/data/iiif\";\nimport internal from \"@/data/internal-ontologies\";\n\nlet apiUrl = configHelper.getApiPath(\"/\");\nlet dataUrl = configHelper.getDataUrl(\"/\");\nlet mediaBaseUrl = configHelper.getMediaGatewayUrl(\"/\");\nlet idManagerDataUrl = configHelper.getIdManagerDataUrl(dataUrl);\nlet IGNORE_MEDIA_HOST = configHelper.ignoreMediaHost();\n/*\n * allow the overwriting of the app url (testing)\n *\n * @param {string} url\n */\nexport function setApiPath(url) {\n apiUrl = url;\n}\n\n/**\n * allow the overwriting of the data url (testing)\n *\n * @param {string} url\n */\nexport function setDataUrl(url) {\n dataUrl = url;\n}\n\n/**\n * Sets the ID manger Data Url\n *\n * @param {string} url\n */\nexport function setIdManagerDataUrl(url) {\n idManagerDataUrl = url;\n}\n\n/**\n * allow the overwriting of the data url (testing)\n *\n * @param {string} url\n */\nexport function setMediaDataUrl(url) {\n mediaBaseUrl = url;\n}\n\nexport const useObjectStore = defineStore(\"object\", {\n state: () => ({\n items: {}\n }),\n actions: {\n /**\n * Adds an object to the store\n *\n * @param {string} indexedId - the indexed id\n * @param {function} translate - the vueI18n translate function\n * @param {function} localizeNumber - the vueI18n localization number function\n * @param {string} preferredLang - the preferred language\n * @async\n */\n async addObject(\n indexedId,\n translate,\n localizeNumber,\n preferredLang = \"en\"\n ) {\n translate = translate ?? this.i18n.t;\n localizeNumber = localizeNumber ?? this.i18n.n;\n // does hmo exist in the store already?\n if (this.items[indexedId]) {\n return;\n }\n\n const aatStore = useAatStore();\n\n let lodObject = undefined;\n try {\n this.items[indexedId] = { id: indexedId };\n lodObject = await dataService.getAllById(indexedId, dataUrl);\n } catch (err) {\n console.error(err);\n\n // remove from store if we weren't able to get response from LOD\n delete this.items[indexedId];\n return;\n }\n\n if (lodObject == undefined) {\n delete this.items[indexedId];\n return;\n }\n\n const ref = this.items[indexedId];\n\n let artists = localHumanMadeObjectHelpers.getMetadataProducers(lodObject);\n artists.forEach((artist, index) => {\n // if artist is a string, and ends in \"unknown\", then add suffix if suffix doesn't exist\n if (\n artist.id == undefined &&\n artist.name == \"Unknown\" &&\n (artist.afterLink == undefined || artist.afterLink == \"\")\n ) {\n artist.name = translate(\"artist.unknown\");\n }\n if (typeof artist !== \"string\") {\n // we need unique ids on the page, this removes the conflict with the homepage\n artist.key = `${artist.id}_${index}_title_and_artist`;\n }\n });\n\n ref.objectProfile = {\n title: getName(lodObject),\n artists: artists,\n copyrightStatement: getCopyrightStatement(lodObject, aat.COPYRIGHT),\n objectNumber: getObjectNumber(lodObject),\n captionDetails: localHumanMadeObjectHelpers.getCaptionDetails(\n getIndexedId(lodObject.id),\n lodObject\n ),\n description: getObjectDescription(lodObject, \"text/markdown\"),\n creationDate: localHumanMadeObjectHelpers.getDateCreated(lodObject)\n };\n // get elasticsearch data\n let elasticData = await getElasticData(indexedId, apiUrl);\n\n try {\n if (elasticData) {\n let metaValues = getHumanMadeObjectMetadata(elasticData, translate);\n ref.head = {\n title: elasticData?.primary_name,\n metadata: setMetaValues(metaValues)\n };\n }\n } catch (e) {\n console.error(e);\n }\n\n ref.isOpenContent = elasticData?.open_content;\n\n ref.isDeaccessioned =\n localHumanMadeObjectHelpers.isDeaccessioned(lodObject);\n\n await addObjectProfileInformation(\n lodObject,\n elasticData,\n ref,\n translate,\n artists\n );\n\n // apply slugs/routes to just top level links showing in objectProfile\n let objectProfileLookups = [\n ...(ref.objectProfile?.artists || []),\n ...ref.objectProfile?.currentLocations\n ];\n\n // map of slugs that have been requested\n let slugs = {};\n\n await addRoutesToObjects(objectProfileLookups, slugs);\n\n // get complex set / book information\n\n let parts = await addStructuralData(\n indexedId,\n lodObject,\n elasticData,\n ref,\n translate\n );\n\n await addMetadata(\n lodObject,\n ref,\n parts,\n aatStore,\n translate,\n localizeNumber\n );\n\n // get related media\n await addRelatedMedia(lodObject, ref, preferredLang);\n\n // get provenance\n await addProvenance(lodObject, ref);\n\n // get bibliography\n await addBibliography(lodObject, ref);\n\n // get exhibitions\n await addExhibitionInformation(lodObject, ref);\n\n let hasTabData = false;\n if (\n ref.provenance?.data?.length > 0 ||\n ref.exhibitions?.length > 0 ||\n ref.bibliography?.length > 0\n ) {\n hasTabData = true;\n }\n ref.hasTabData = hasTabData;\n\n let lookupObjects = [\n ...(ref.metadata?.artist || []),\n ...(ref.metadata?.previous_attribution || []),\n ...(ref.exhibitions || [])\n ];\n\n (ref.provenance.data || []).forEach((entry) => {\n let owners = entry?.owners || [];\n owners.forEach((o) => {\n lookupObjects.push(o);\n });\n });\n\n await addRoutesToObjects(lookupObjects, slugs);\n\n // technical metadata\n ref.technicalMetadata = getTechnicalMetadataFields(\n lodObject,\n translate,\n ref.isOpenContent\n );\n },\n /**\n * Adds an object to the store with form information\n *\n * @param {string} indexedId - the indexed id\n * @param {function} translate - the vueI18n translate function\n * @param {function} localizeNumber - the vueI18n localization number function\n * @param {string} imageServiceUrl - the Image Service URL for the requested Image\n * @param {string} preferredLang - the preferred language\n * @async\n */\n\n async addObjectWithRequestFormData(\n indexedId,\n translate,\n localizeNumber,\n imageServiceUrl,\n preferredLang = \"en\"\n ) {\n translate = translate ?? this.i18n.t;\n localizeNumber = localizeNumber ?? this.i18n.n;\n\n if (this.items[indexedId] == undefined) {\n await this.addObject(\n indexedId,\n translate,\n localizeNumber,\n preferredLang\n );\n }\n let ref = this.items[indexedId];\n\n if (ref.requestForm == undefined) {\n ref.requestForm = {};\n }\n\n if (imageServiceUrl == undefined) {\n imageServiceUrl = ref.objectProfile?.mediaItems[0]?.serviceUrl;\n }\n\n // already requested\n if (ref.requestForm[imageServiceUrl] != undefined) {\n return;\n }\n try {\n let results = await getLinksFromIdManager([\n {\n motivation: internal.ID_MANAGER_IMAGE_OF_MOTIVATION,\n body_generator: internal.ID_MANAGER_GCIS_GENERATOR,\n target_generator: internal.ID_MANAGER_OTMM_GENERATOR,\n body_id: imageServiceUrl\n }\n ]);\n results = results[internal.ID_MANAGER_OTMM_GENERATOR];\n const first = results[0]?.id;\n const otmm_id = first.substring(first.lastIndexOf(\":\") + 1);\n\n // get the artist names\n const artists = JSON.parse(JSON.stringify(ref.metadata.artist));\n const names = [];\n artists.forEach((artist) => {\n if (artist.name) {\n names.push(artist.name);\n delete artist.afterLink;\n delete artist.to;\n } else if (typeof artist === \"string\") {\n names.push(artist);\n } else {\n names.push(translate(\"artist.unknown_short\"));\n }\n });\n\n // construct the return object\n const captionDetails = JSON.parse(\n JSON.stringify(ref.objectProfile.captionDetails)\n );\n captionDetails.artists = artists;\n\n ref.requestForm[imageServiceUrl] = {\n \".tmsAccessionNumber\": captionDetails.object_number,\n \".title\": captionDetails.title,\n \".id\": otmm_id,\n \".author\":\n artists.length > 0\n ? names.join(\", \")\n : translate(\"artist.unknown_short\"),\n \".citation\": captionDetails\n };\n } catch (e) {\n console.error(e);\n }\n }\n },\n getters: {\n // NOTE: getters do not accept parameters, but can return a function that receives one\n /**\n * Gets the transformed object data object from the store\n * @param {object} state - automatic access to state\n * @return {object}\n * @example\n * {\n * description: \"\",\n * id: \"type/1234\",\n * isGetty: false,\n * metadata: {...},\n * pageTitle: \"Vincent van Gogh\",\n * relatedResourcesLinks: [],\n * subheading: \"Dutch, 1853 - 1890\",\n * technicalMetadata: {...},\n * type: \"Person\"\n * }\n */\n getObject(state) {\n /**\n * [returned function of getter - returns a function that has access to state & can receive a paramater]\n * @param {string} indexedId - indexedId of actor to retrieve from store\n */\n return (indexedId) => {\n if (state.items[indexedId]) {\n return state.items[indexedId];\n } else {\n return undefined;\n }\n };\n }\n }\n});\n\n/**\n * Adds the structural data to the store\n *\n * @param {string} indexedId - the indexed id\n * @param {object} lodObject - the HMO LOD object\n * @param {object} elasticData - the elastic search data\n * @param {object} ref - the reference to the store\n * @param {function} translate - the translate function\n * @async\n *\n * @returns {array} a list of parts\n */\nasync function addStructuralData(\n indexedId,\n lodObject,\n elasticData = {},\n ref,\n translate\n) {\n let hasParts = localHumanMadeObjectHelpers.getNumberOfParts(lodObject) > 0;\n ref.structure = {\n localeKey:\n localHumanMadeObjectHelpers.getRecordStructureLocaleKey(lodObject),\n isParent: elasticData?.is_parent,\n isPart: elasticData?.is_part,\n isRoot: elasticData?.is_root,\n rootId: elasticData?.root_id,\n hasParts: hasParts,\n isStandalone: elasticData?.is_standalone,\n parentId: elasticData?.parent_id,\n parentTree: elasticData?.parent_tree,\n level: elasticData?.level,\n numberOfChildren: elasticData?.number_of_children,\n complexObjectType:\n localHumanMadeObjectHelpers.getComplexObjectType(lodObject)\n };\n\n let complexObjectResponse = [];\n try {\n let resp = await dataService.axiosGet(\n apiUrl + \"api/object-tree\",\n undefined,\n { id: indexedId }\n );\n complexObjectResponse = resp?.data ?? [];\n } catch (e) {\n console.error(e);\n }\n\n let parts = complexObjectResponse?.parts?.hits || [];\n let partsHaveDistinctImages = false;\n let partImage = undefined;\n for (let part of parts) {\n if (part[\"manifest\"]) {\n if (\n partImage != undefined &&\n partImage != part[\"manifest\"][\"thumbUuid\"]\n ) {\n partsHaveDistinctImages = true;\n break;\n }\n partImage = part[\"manifest\"][\"thumbUuid\"];\n }\n }\n\n ref.structure.partsHaveDistinctImages = partsHaveDistinctImages;\n ref.structure.isManuscript =\n localHumanMadeObjectHelpers.showBookViewer(lodObject);\n\n ref.structure.parts = parts.map((item) =>\n transformSearchResultToThumbnailItemWithArtist(\n item,\n partsHaveDistinctImages,\n translate\n )\n );\n let partOf = complexObjectResponse?.part_of?.hits || [];\n if (partOf.length) {\n ref.structure.partOf = transformSearchResultToThumbnailItemWithArtist(\n partOf[0],\n false,\n translate\n );\n }\n\n let allObjects = complexObjectResponse?.all_objects?.hits || [];\n ref.structure.allObjects = allObjects.map((item) =>\n transformSearchResultToThumbnailItemWithArtist(item, true, translate)\n );\n ref.structure.hasAllObjects = allObjects.length > 0;\n let displayManuscriptPartsComponent = true;\n\n ref.structure.isComplexObject =\n ref.structure.parts.length > 0 ||\n ref.structure.allObjects.length > 0 ||\n ref.structure.isRoot;\n\n if (\n elasticData?.is_standalone !== true ||\n hasParts > 0 ||\n elasticData?.number_of_children > 0\n ) {\n let title = getName(lodObject);\n let header = translate(\"human_made_object_set.heading\", {\n title: title\n });\n\n if (ref.structure?.hasAllObjects && elasticData?.is_root == false) {\n header = localHumanMadeObjectHelpers.relatedPartsOfSetHeader(\n lodObject,\n title,\n translate\n );\n }\n ref.structure.partsOfSetHeader = header;\n }\n\n if (\n (ref.structure.complexObjectType == \"fragment\" ||\n (ref.structure.complexObjectType == \"set\" &&\n partsHaveDistinctImages == false) ||\n (ref.structure.complexObjectType == \"manuscript\" &&\n displayManuscriptPartsComponent == false)) &&\n ref.structure.parts.length\n ) {\n return parts;\n }\n return [];\n}\n\n/**\n * Adds more of the object profile information to the store\n *\n * @param {object} lodObject - the HMO LOD object\n * @param {object} elasticData - the elasticsearch data\n * @param {object} ref - the store reference\n * @param {function} translate - the translate function\n * @param {array} artists - the list of artists\n * @async\n */\nasync function addObjectProfileInformation(\n lodObject,\n elasticData,\n ref,\n translate,\n artists\n) {\n ref.hasCanvases = false;\n ref.manifestUrl = getManifestUrls(lodObject);\n ref.containsCustomManifest = containsCustomManifest(lodObject);\n ref.sequenceLabelSource =\n localHumanMadeObjectHelpers.getSequenceLabelSource(lodObject);\n let manifest = undefined;\n\n if (ref.manifestUrl != undefined) {\n try {\n let resp = await dataService.axiosGet(ref.manifestUrl);\n if (resp != undefined) {\n manifest = resp?.data;\n ref.manifestLoaded = true;\n }\n } catch (e) {\n ref.manifestLoaded = false;\n console.error(e);\n }\n }\n\n let visualItemStubs = localHumanMadeObjectHelpers\n .getVisualItemStubs(lodObject)\n .map((o) => o.id);\n let visualItems = [];\n try {\n visualItems = await dataService.getAllById(visualItemStubs, mediaBaseUrl);\n } catch (e) {\n console.error(e);\n }\n\n let currentLocations = [];\n try {\n currentLocations = await dataService.getAllById(\n localHumanMadeObjectHelpers\n .getCurrentLocations(lodObject)\n .map((o) => o.id),\n dataUrl\n );\n\n currentLocations = currentLocations\n .filter((place) => {\n // if the place object isn't classified as on display/a gallery, don't get the location message\n return (\n place != undefined && getClassifiedAs(place, aat.ON_DISPLAY).length\n );\n })\n .map((place) => {\n let indexedId = getIndexedId(place.id);\n return {\n id: indexedId,\n name: getLocationMessage(place)\n };\n });\n } catch (e) {\n console.error(e);\n }\n\n let mediaItems = buildMediaItems(manifest, visualItems, ref);\n\n (ref.isManuscriptWithParts =\n localHumanMadeObjectHelpers.showBookViewer(lodObject) &&\n localHumanMadeObjectHelpers.getNumberOfParts(lodObject) > 0),\n Object.assign(ref.objectProfile, {\n colors: elasticData?.colors || [],\n numberOfChildren: elasticData?.number_of_children || 0,\n currentLocations: currentLocations,\n mediaItems: mediaItems\n });\n\n let stickyBoxArtists = \"\";\n if (artists && artists.length > 0 && artists[0] != undefined) {\n // handle unknown artists\n stickyBoxArtists = artists[0].name ? artists[0].name : artists[0];\n // handle multiple artists\n if (artists.length > 1) {\n stickyBoxArtists = translate(\"stickybox.artists\", {\n name: artists[0].name,\n number: artists.length - 1\n });\n }\n }\n\n let deaccessionStatement =\n ref.isDeaccessioned &&\n localHumanMadeObjectHelpers.getDeaccessionStatement(lodObject);\n if (deaccessionStatement) {\n ref.objectProfile.deaccessionStatement = deaccessionStatement;\n }\n\n let deaccessionStatementLong =\n ref.isDeaccessioned &&\n localHumanMadeObjectHelpers.getDeaccessionStatementLong(lodObject);\n if (deaccessionStatementLong) {\n ref.objectProfile.deaccessionStatementLong = deaccessionStatementLong;\n }\n\n let firstMediaItem = {};\n if (ref.objectProfile?.mediaItems?.length) {\n firstMediaItem = ref.objectProfile?.mediaItems[0];\n }\n\n let stickyBoxData = {\n heading: ref.objectProfile.title,\n subheading: stickyBoxArtists,\n imageUuid: firstMediaItem?.iiifImageId?.replace(\n \"https://media.getty.edu/iiif/image/\",\n \"\"\n ),\n imageAlt: firstMediaItem?.altText\n };\n\n // if there's a manuscript\n if (ref.objectProfile.mediaItems?.length == 0 && manifest) {\n stickyBoxData.imageUuid = getManifestThumbnail(manifest);\n }\n\n if (ref.isDeaccessioned) {\n stickyBoxData.isDeaccessioned = true;\n }\n\n ref.stickyBoxData = stickyBoxData;\n}\n\n/**\n *\n * @param {object} manifest - the IIIF Manifest\n * @param {array} visualItems - the list of VisualItems\n * @param {object} ref - the object to store\n *\n * @returns {array}\n */\nfunction buildMediaItems(manifest, visualItems, ref) {\n if (!manifest) {\n return;\n }\n const canvases =\n manifest[\"@context\"] == iiif.PRESENTATION_V2\n ? manifest?.sequences[0]?.canvases\n : manifest?.items;\n\n if (canvases?.length > 0) {\n ref.hasCanvases = true;\n }\n\n let mediaItems = getVisualItemMetadata(visualItems);\n\n mediaItems = mediaItems.reduce((acc, item) => {\n // @todo for now only return canvases for which we haeve a corresponding\n // visual item, may want to revisit in the future\n let canvas;\n if (manifest[\"@context\"] == iiif.PRESENTATION_V2) {\n // special handling to exclude host (when in staging) because of known discrepencies\n if (IGNORE_MEDIA_HOST) {\n canvas = canvases.find(\n (canvas) =>\n canvas.images[0].resource.service[\"@id\"]\n .split(\"/\")\n .slice(3)\n .join(\"/\") == item.iiifImageId.split(\"/\").slice(3).join(\"/\")\n );\n } else {\n canvas = canvases.find(\n (canvas) =>\n canvas.images[0].resource.service[\"@id\"] == item.iiifImageId\n );\n }\n } else {\n canvas = canvases.find(\n (canvas) =>\n canvas.items[0].items[0].body.type == \"Image\" &&\n canvas.items[0].items[0].body.service[0][\"@id\"] == item.iiifImageId\n );\n }\n\n if (canvas) {\n item = {\n ...item,\n canvasId: canvas[\"@id\"],\n // @todo remove when image viewer rights panel is enabled\n width: canvas.width,\n height: canvas.height,\n serviceUrl: item.iiifImageId\n };\n acc = acc.concat(item);\n }\n\n return acc;\n }, []);\n\n return mediaItems;\n}\n/**\n * Adds the metadata to the Store\n *\n * @param {object} lodObject - the HMO\n * @param {object} ref - the ref to the store\n * @param {array} parts - the list of parts of the object\n * @param {object} aatStore - the aat store\n * @param {function} translate - the translate function\n * @param {function} localizeNumber - the number localization function\n * @async\n */\nasync function addMetadata(\n lodObject,\n ref,\n parts,\n aatStore,\n translate,\n localizeNumber\n) {\n let currentKeepers = [];\n try {\n currentKeepers = await dataService.getAllById(\n localHumanMadeObjectHelpers.getCurrentKeepers(lodObject).map((a) => a.id),\n dataUrl\n );\n } catch (e) {\n console.error(e);\n }\n\n const departments = currentKeepers.map((keeper) => getName(keeper));\n let producers = localHumanMadeObjectHelpers.getMetadataProducers(lodObject);\n let prevProducers =\n localHumanMadeObjectHelpers.getPreviouslyAttributedProducers(lodObject);\n let actors = [];\n try {\n let actorIds = [...producers, ...prevProducers]\n // filter to known producers and then grab just the ids\n .filter((obj) => {\n return obj && localHumanMadeObjectHelpers.isMakerKnown(obj);\n })\n .map((a) => a.id)\n .filter((o) => o != undefined);\n actors = await dataService.getAllById(actorIds, dataUrl);\n } catch (e) {\n console.error(e);\n }\n let map = {};\n actors.forEach((a) => {\n if (a) {\n map[getIndexedId(a.id)] = a;\n }\n });\n\n prevProducers = localHumanMadeObjectHelpers.getPreviousProducerAttributions(\n lodObject,\n actors\n );\n\n let classifications = [];\n\n for (let term of getClassifiedAs(\n normalizeFieldToArray(lodObject, \"classified_as\"),\n aat.CLASSIFICATION\n )) {\n if (term && term.id.includes(\"aat\") == false) {\n continue;\n }\n await aatStore.addAat(term.id);\n classifications.push(aatStore.getAat(term.id)?.value);\n }\n\n classifications = classifications.map((classification) =>\n convertToTitleCase(classification)\n );\n\n const fragmentPartLinks = localHumanMadeObjectHelpers.linkifyFragments(\n lodObject,\n parts,\n getIndexedId(lodObject.id),\n translate,\n localizeNumber\n );\n\n ref.relatedLinks = localHumanMadeObjectHelpers.getRelatedLinks(lodObject);\n\n ref.metadata = localHumanMadeObjectHelpers.getMetadataFields(\n lodObject,\n classifications,\n departments,\n producers,\n prevProducers,\n fragmentPartLinks,\n translate\n );\n}\n\n/**\n * Adds the related media to the store\n *\n * @param {object} lodObject - the HMO\n * @param {object} ref - the ref to the store\n * @param {string} preferredLang - the preferred language\n * @async\n */\nasync function addRelatedMedia(lodObject, ref, preferredLang) {\n let typeMap = undefined;\n const mediaInfo = {};\n try {\n typeMap = await getLinksFromIdManager([\n {\n motivation: internal.ID_MANAGER_RELATED_CONTENT_MOTIVATION,\n body_generator: internal.ID_MANAGER_TARGET_GENERATOR,\n body_id: lodObject.id\n },\n {\n motivation: internal.ID_MANAGER_RELATED_CONTENT_MOTIVATION,\n body_generator: internal.ID_MANAGER_RELATED_COLLECTION_LOD_GENERATOR,\n body_id: lodObject.id\n }\n ]);\n if (typeMap[internal.ID_MANAGER_TARGET_GENERATOR]) {\n let audio = await dataService.getAllById(\n typeMap[internal.ID_MANAGER_TARGET_GENERATOR].map((a) => a.id),\n mediaBaseUrl\n );\n // return array of arrays of linguistic object formatted details\n let relatedAudioDetails = [];\n for (let item of localHumanMadeObjectHelpers.getRelatedMediaDetails(\n audio\n )) {\n if (!item.length) {\n continue;\n }\n relatedAudioDetails.push({\n sources: item.map((e) => {\n if (e.language == preferredLang) {\n e.preferred = true;\n }\n return { ...e, downloadURL: e.url, src: e.url };\n })\n });\n }\n if (relatedAudioDetails.length > 0) {\n mediaInfo.audio = relatedAudioDetails;\n }\n }\n } catch (e) {\n console.error(e);\n }\n try {\n // look through other related content, for now to locate video\n const relatedVideo =\n typeMap?.[internal.ID_MANAGER_RELATED_CONTENT_GENERATOR];\n let video = [];\n if (relatedVideo) {\n relatedVideo.forEach((item) => {\n // hardcode the video logic for youtube\n if (item.id.toLowerCase().includes(\"youtu\")) {\n item.type = \"video/youtube\";\n video.push({\n enableYouTube: true,\n sources: [{ ...item, src: item.id }]\n });\n }\n });\n mediaInfo.video = video;\n }\n\n ref.relatedMedia = mediaInfo;\n } catch (e) {\n console.error(e);\n }\n}\n\n/**\n * Adds the provenance owners to the store\n *\n * @param {object} lodObject - the HMO\n * @param {object} ref - the ref to the store\n * @async\n */\nasync function addProvenance(lodObject, ref) {\n let provenanceOwners = [];\n let ownerRefs = getOwners(lodObject);\n let unknownOwners = ownerRefs\n .filter((obj) => {\n return obj && !localHumanMadeObjectHelpers.isMakerKnown(obj);\n })\n .map((a) => a.id);\n\n try {\n provenanceOwners = await dataService.getAllById(\n ownerRefs.map((a) => a.id),\n dataUrl\n );\n } catch (e) {\n console.error(e);\n }\n\n // what happens with unknown owners\n\n ref.provenance = {\n data: getProvenanceData(lodObject, provenanceOwners, unknownOwners),\n notes: getOverallProvenanceNotes(lodObject)\n };\n}\n\n/**\n * Adds the bibliographic information to the store\n *\n * @param {object} lodObject - the HMO\n * @param {object} ref - the ref to the store\n * @async\n */\nasync function addBibliography(lodObject, ref) {\n const references =\n localHumanMadeObjectHelpers.getBibliographicTabData(lodObject);\n const about = references\n .map((ref) => ref.linguisticObjectId)\n .filter((r) => r != undefined);\n let bibs = [];\n\n try {\n bibs = await dataService.getAllById(about, dataUrl);\n } catch (e) {\n console.error(e);\n }\n\n ref.bibliography = localHumanMadeObjectHelpers\n .getBibliographicLinks(references, bibs, lodObject)\n .map((v) => {\n return removeEmpty({\n id: v.id,\n url: v.url,\n content: v.content\n });\n });\n}\n\n/**\n * Adds the exhibition information to the store\n *\n * @param {object} lodObject - the HMO JSON-LD Object\n * @param {object} ref - the reference to the store\n * @async\n */\nasync function addExhibitionInformation(lodObject, ref) {\n let exhibitionIds = localHumanMadeObjectHelpers.getExhibitionIDs(lodObject);\n let exhibitions = [];\n let allStubs = [];\n let motivations = [];\n let places = [];\n try {\n exhibitions = await dataService.getAllById(exhibitionIds, dataUrl);\n allStubs = getAllStubs(exhibitions);\n } catch (e) {\n console.error(e);\n }\n\n try {\n motivations = await dataService.getAllById(\n allStubs.motivations.map((a) => a.id),\n dataUrl\n );\n } catch (e) {\n console.error(e);\n }\n try {\n places = await dataService.getAllById(\n allStubs.places.map((a) => a.id),\n dataUrl\n );\n } catch (e) {\n console.error(e);\n }\n\n ref.exhibitions = getExhibitionAndLocations(\n getExhibitionArray({\n exhibitions: exhibitions,\n places: places,\n motivations: motivations\n })\n );\n}\n\n/**\n * Takes an array of objects that may need routes/slugs added to them,\n * filtering out any undefined/unknown and objects that don't need a link\n * as well as objects we have already requested the slug for earlier in the store\n *\n * @param {array} objects - an array of stub objects with an id\n * @param {object} slugs - the map of slugs\n */\nasync function addRoutesToObjects(objects, slugs) {\n objects = objects.filter((o) => o?.id != undefined && o.hideLink != true);\n\n if (objects.length != 0) {\n let fetchedSlugs = await dataService.getSlugs(\n objects,\n idManagerDataUrl,\n internal.ID_MANAGER_SOURCE_GENERATOR,\n internal.ID_MANAGER_TARGET_GENERATOR\n );\n Object.assign(slugs, fetchedSlugs);\n objects.forEach((stub) => applyRouteToStub(stub, slugs));\n }\n}\n\n/**\n * Applies a route to a stub\n *\n * @param {object} stub - the stub object with an id\n * @param {object} slugs - the map of slugs\n *\n */\nexport function applyRouteToStub(stub, slugs) {\n if (stub?.id == undefined) {\n return;\n }\n const id = getIndexedId(stub.id);\n const entry = slugs[id];\n if (entry?.slug) {\n stub.to = {\n name: entry.path,\n params: {\n slug: entry.slug\n },\n state: {\n slug: entry.slug,\n indexedId: id\n }\n };\n }\n}\n"],"names":["_sfc_main","name","data","eventBus","useEventBus","methods","downloadImage","document","imageUrl","objectId","qualifier","link","createElement","href","body","appendChild","click","this","emit","action","category","label","noninteraction","IDENTIFIED_BY","REFERRED_TO_BY","CLASSIFIED_AS","PART_OF","CHANGED_OWNERSHIP_THROUGH","getOverallProvenanceNotes","humanMadeObject","referred","normalizeFieldToArray","remarks","getClassifiedAs","aat","PROVENANCE_REMARKS","length","sortByAssignedDimension","map","remark","getValueOrContent","array","sort","a","b","getAssignedBy","value","getLugtNumber","acquisition","identifiedBy","getFirstAcquisitionPart","lugtNumbers","getValuesByClassification","LUGT_NUMBER","getOwners","returnIdsOnly","changedOwnership","stubs","indexedIds","forEach","activity","constituent","indexedId","getIndexedId","id","push","getProvenancePlaceFound","found","internal","PLACE_FOUND","current_keeper","filter","keeper","ANTIQUITIES_DEPARTMENT","ANTIQUITIES_DEPARTMENT_STAGING","pseudoOwner","place","timespan","identified_by","getProvenanceData","owners","unknownOwners","acquisitions","sortAcquisitions","ownerData","owner","ownerIndexedId","source","prefix","getJoiningPrefix","suffix","getSuffix","getName","life_dates","localActorHelpers.getLifeDates","lugtNumber","nationality_and_dates","localActorHelpers.getNationalityAndDates","isOwnerPrivate","isGroupTheGetty","includes","isDeaccessioned","result","citation","getProvenanceCitation","location","getProvenanceLocation","getProvenanceRemarks","saleNote","getProvenanceSaleNote","statement","getProvenanceStatement","getProvenanceTimespan","naziEraGaps","hasNaziEraGaps","naziEraRestitution","hasNaziEraRestitution","removeEmpty","acq","hasAssignedClassification","NAZI_ERA_GAPS","classifiedAs","assigned","classification","PRIVATE","DEACCESSIONED","NAZI_ERA_RESTITUTED","getValueByClassification","ACTOR_NAME_PREFIX","ACTOR_NAME_SUFFIX","referredToBy","PROVENANCE_LOCATION","PROVENANCE_SALE_NOTE","PROVENANCE_STATEMENT","current","idMap","part","starts_after_the_end_of","sorted","ends_before_the_start_of","nextId","PROVENANCE_CITATION","firstPart","content","__name","DIGITALLY_SHOWN_BY","canImage","object","allowedImagePermissions","getClearanceLevel","obj","some","isZoomable","DOWNLOAD","ENLARGE","ZOOM","isDisplayable","THUMBNAIL","canDownload","isPortrait","digitallyShownBy","dimensions","dimension","height","HEIGHT","WIDTH","getCopyright","copyrightStatements","getCopyrightStatements","getRightsStatementId","visualItem","getVisualItemsRightsStatementId","RIGHTS_STATEMENT_ID","getVisualItemMetadata","visualItems","item","itemMetadata","iiifImageId","getIIIFImageId","altText","getAltText","descriptiveNote","getDescription","disableContextMenu","isInCopyright","rightsStatementId","copyright","Object","entries","e","fromEntries","endsWith","rightsStatements","IN_COPYRIGHT","IN_COPYRIGHT_UNIDENTIFIABLE","apiUrl","configHelper.getApiPath","dataUrl","configHelper.getDataUrl","mediaBaseUrl","configHelper.getMediaGatewayUrl","idManagerDataUrl","configHelper.getIdManagerDataUrl","IGNORE_MEDIA_HOST","configHelper.ignoreMediaHost","useObjectStore","defineStore","state","items","actions","addObject","translate","localizeNumber","preferredLang","__async","i18n","t","n","aatStore","useAatStore","lodObject","dataService","getAllById","err","console","error","ref","artists","localHumanMadeObjectHelpers.getMetadataProducers","artist","index","afterLink","key","objectProfile","title","copyrightStatement","getCopyrightStatement","aat.COPYRIGHT","objectNumber","getObjectNumber","captionDetails","localHumanMadeObjectHelpers.getCaptionDetails","description","getObjectDescription","creationDate","localHumanMadeObjectHelpers.getDateCreated","elasticData","getElasticData","metaValues","getHumanMadeObjectMetadata","head","primary_name","metadata","setMetaValues","isOpenContent","open_content","localHumanMadeObjectHelpers.isDeaccessioned","addObjectProfileInformation","objectProfileLookups","_a","_b","currentLocations","slugs","addRoutesToObjects","parts","addStructuralData","addMetadata","addRelatedMedia","addProvenance","addBibliography","addExhibitionInformation","hasTabData","_d","provenance","_c","_e","exhibitions","_f","bibliography","lookupObjects","_g","_h","previous_attribution","entry","o","technicalMetadata","getTechnicalMetadataFields","addObjectWithRequestFormData","imageServiceUrl","requestForm","mediaItems","serviceUrl","results","getLinksFromIdManager","motivation","ID_MANAGER_IMAGE_OF_MOTIVATION","body_generator","ID_MANAGER_GCIS_GENERATOR","target_generator","ID_MANAGER_OTMM_GENERATOR","body_id","first","otmm_id","substring","lastIndexOf","JSON","parse","stringify","names","to","object_number","join","getters","getObject","_0","_1","arguments","hasParts","localHumanMadeObjectHelpers.getNumberOfParts","structure","localeKey","localHumanMadeObjectHelpers.getRecordStructureLocaleKey","isParent","is_parent","isPart","is_part","isRoot","is_root","rootId","root_id","isStandalone","is_standalone","parentId","parent_id","parentTree","parent_tree","level","numberOfChildren","number_of_children","complexObjectType","localHumanMadeObjectHelpers.getComplexObjectType","complexObjectResponse","resp","axiosGet","partImage","hits","partsHaveDistinctImages","isManuscript","localHumanMadeObjectHelpers.showBookViewer","transformSearchResultToThumbnailItemWithArtist","partOf","part_of","allObjects","all_objects","hasAllObjects","isComplexObject","header","localHumanMadeObjectHelpers.relatedPartsOfSetHeader","partsOfSetHeader","manifest","hasCanvases","manifestUrl","getManifestUrls","containsCustomManifest","sequenceLabelSource","localHumanMadeObjectHelpers.getSequenceLabelSource","manifestLoaded","visualItemStubs","localHumanMadeObjectHelpers\n .getVisualItemStubs","localHumanMadeObjectHelpers\n .getCurrentLocations","aat.ON_DISPLAY","getLocationMessage","buildMediaItems","isManuscriptWithParts","assign","colors","stickyBoxArtists","number","deaccessionStatement","localHumanMadeObjectHelpers.getDeaccessionStatement","deaccessionStatementLong","localHumanMadeObjectHelpers.getDeaccessionStatementLong","firstMediaItem","stickyBoxData","heading","subheading","imageUuid","replace","imageAlt","getManifestThumbnail","canvases","iiif.PRESENTATION_V2","sequences","reduce","acc","canvas","find","images","resource","service","split","slice","type","__spreadProps","canvasId","width","concat","currentKeepers","localHumanMadeObjectHelpers.getCurrentKeepers","departments","producers","prevProducers","localHumanMadeObjectHelpers.getPreviouslyAttributedProducers","actors","actorIds","localHumanMadeObjectHelpers.isMakerKnown","localHumanMadeObjectHelpers.getPreviousProducerAttributions","classifications","term","aat.CLASSIFICATION","addAat","getAat","convertToTitleCase","fragmentPartLinks","localHumanMadeObjectHelpers.linkifyFragments","relatedLinks","localHumanMadeObjectHelpers.getRelatedLinks","localHumanMadeObjectHelpers.getMetadataFields","typeMap","mediaInfo","ID_MANAGER_RELATED_CONTENT_MOTIVATION","ID_MANAGER_TARGET_GENERATOR","ID_MANAGER_RELATED_COLLECTION_LOD_GENERATOR","audio","relatedAudioDetails","localHumanMadeObjectHelpers.getRelatedMediaDetails","sources","language","preferred","__spreadValues","downloadURL","url","src","relatedVideo","ID_MANAGER_RELATED_CONTENT_GENERATOR","video","toLowerCase","enableYouTube","relatedMedia","provenanceOwners","ownerRefs","notes","references","localHumanMadeObjectHelpers.getBibliographicTabData","about","linguisticObjectId","r","bibs","localHumanMadeObjectHelpers\n .getBibliographicLinks","v","exhibitionIds","localHumanMadeObjectHelpers.getExhibitionIDs","allStubs","motivations","places","getAllStubs","getExhibitionAndLocations","getExhibitionArray","objects","hideLink","fetchedSlugs","getSlugs","ID_MANAGER_SOURCE_GENERATOR","stub","applyRouteToStub","slug","path","params"],"mappings":"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"}