export const utopiaUrn = 'dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6cGtxYjhrbHBnZWtsZ2tlbHBzanBoYzljMm5neXhtbjY0cXZocHNhcXVodjQ2emVuLWJhc2ljLWFwcC8yNi4wMS4xNiUyMC0lMjBFeHBvcnQlMjBUTUIlMjAtJTIwUGhhbiUyMG1lbS5kd2c'; export const blankUrn = 'dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6cGtxYjhrbHBnZWtsZ2tlbHBzanBoYzljMm5neXhtbjY0cXZocHNhcXVodjQ2emVuLWJhc2ljLWFwcC9ibGFuay5kd2c'; export async function getAccessToken(callback) { try { const { access_token, expires_in } = await $fetch('/api/apsAuthToken'); callback(access_token, expires_in); } catch (err) { console.error('Could not obtain access token. Error:', err); } } export function loadModel(viewer, urn, xform) { return new Promise((resolve, reject) => { function onDocumentLoadSuccess(doc) { const viewable = doc.getRoot().getDefaultGeometry(); const options = { keepCurrentModels: true, }; if (xform) { options.placementTransform = xform; } viewer.loadDocumentNode(doc, viewable, options).then(resolve).catch(reject); } function onDocumentLoadFailure(code, message, errors) { reject({ code, message, errors }); } viewer.setLightPreset(0); Autodesk.Viewing.Document.load(`urn:${urn}`, onDocumentLoadSuccess, onDocumentLoadFailure); }); } function showNotification(message) { const overlay = document.getElementById('overlay'); overlay.innerHTML = `