/* { "p": "brc69", "op": "compile", "s": "p1pp0" } */ // EDIT const collectionJsonUrl = '/content/52bc0c1d62570209d75dc58345a941fb7d580524a0ca5fd2db2e6df5948acca0i0'; const previewUrl = '' // if preview available const imageRendering = 'auto' // or pixelated const renderSize = { width: 500, height: 500 }; // select image render size async function loadImage (url) { return new Promise((resolve, reject) => { const image = document.createElement('img') image.src = url image.crossOrigin = 'anonymous' image.onload = () => { resolve(image) } image.onerror = () => { // Some display fallbacks for when the image fails to load if (!image.src.startsWith('https://')) { image.src = 'https://ordinals.com' + url } else if (image.src.startsWith('https://ordinals.com')) { image.src = 'https://ord-mirror.magiceden.dev' + url } } }) } async function renderImage(imageEl, urls) { const canvas = document.createElement('canvas'); canvas.width = renderSize.width; canvas.height = renderSize.height; const ctx = canvas.getContext("2d"); ctx.imageSmoothingEnabled = false; const images = await Promise.all((urls).map(loadImage)) images.forEach(_ => ctx.drawImage(_, 0, 0, canvas.width, canvas.height)) imageEl.src = canvas.toDataURL("image/png") } async function getAllTraits(traitsUrl, retry = false) { try { const collectionMetadataRes = await fetch(traitsUrl) const collectionMetadata = await collectionMetadataRes.json() return collectionMetadata.attributes.map(_ => `/content/${_}`) } catch (e) { if (!retry) { const timestamp = Math.floor(Date.now() / (60000 * 10)) // 10 minutes const newTraitsUrl = `${traitsUrl}?timestamp=${timestamp}` return getAllTraits(newTraitsUrl, true) } throw e } } function createInitialImage () { // Manipulate the
tag document.body.style.margin = '0px'; document.body.style.padding = '0px'; // Create and set properties of the