#70,198,004textInscription #65938476#65,938,476png#64,442,738mint100,000,000.sats#34,008,741brc-20mint100,000,000.sats#34,008,018brc-20mint100,000,000.sats#34,008,017brc-20Inscription #29497299#29,497,299htmlInscription #29492371#29,492,371htmlInscription #29492370#29,492,370htmlInscription #29490829#29,490,829htmlInscription #29053787#29,053,787htmlInscription #29051114#29,051,114html#29,050,538jsInscription #29036317#29,036,317html<html> <style> html, body { margin: 0; height: 100%; width: 100%; aspect-ratio: 1; } </style> <script type="module" src="/content/547a6709441bc5c9d206150ce5fb7605c28a90c46bd6e4330c4420cb41477aeai0"></script> <script type="module"> import card from '/content/431aeab46e2a0207fdcdacbc6160b56739e2249139f64f79f433c981462c0c43i0' const style = { height: '100%', width: '100%', background: 'black' } const props = { image: '/content/968bd911c724ac0f7cad94714ef671462479dd252a4582ad167000e5aefca00bi0', title: 'Bitcoin Pizza', inscription_num: 5416, attributes: [{ trait_type: ‘MESSAGE’, value: 'Hey there! I am a pizza and just testing some fun stuff out on Bitcoin. Let’s see what Bitcoin can do!' } ] } card(props, document.body, style) </script> <body></body> </html>#29,021,952textimport * as fflate from '/content/f815bd5c566c6e46de5cdb6ccb3a7043c63deeba61f4234baea84b602b0d4440i0' import transform from '/content/7d3dd64f6598ea371aeff4d70b0f1728af0f57dd1747b58a190f7e52a9f5cd30i0' const PADDING = 100 const WIDTH = 2048 const TOP_OFFSET = 1255 const ATTRIBUTE_OFFSET = TOP_OFFSET + PADDING + 220 export default async function(props, element, style) { const res = await fetch( '/content/83b2e90431c87df3045b80e774a747fa745f655132d25a6ab1600ce1b8307d98i0' ) const compressed = new Uint8Array(await res.arrayBuffer()) const inflated = await fflate.decompressSync(compressed) const base64 = btoa(inflated.reduce((data, byte) => data + String.fromCharCode(byte), '')) const url = `data:model/gltf-binary;base64,${base64}` const modelViewer = document.createElement('model-viewer') modelViewer.src = url Object.keys(style).forEach((key) => { modelViewer.style[key] = style[key] }) let transformations = [ // Border { material: 0, type: 'image', coords: [0, 0], size: [WIDTH, WIDTH], image: '/content/20bcaf88ed106f80d16a1bd7aceb5164270ef27a7b5ae95c11873e014a31f950i0' }, // Back { material: 3, type: 'image', coords: [0, 0], size: [WIDTH, WIDTH], image: '/content/74c2e0f8c9b7cccf65b6b003f753a1769b3af71292405fe5f5c8981f45391de9i0' }, // Body { material: 1, type: 'image', coords: [0, 0], size: [WIDTH, WIDTH], image: props.image }, { material: 2, type: 'text', font: 'bold 120px Helvetica', text: props.title, coords: [PADDING, TOP_OFFSET + PADDING + 103], color: 'white' }, { material: 2, type: 'text', font: '500 60px Helvetica', text: `Inscription #${props.inscription_num}`, coords: [PADDING, ATTRIBUTE_OFFSET], color: 'white' } ] props.attributes.forEach((a, index) => { let TOP_OFFSET = ATTRIBUTE_OFFSET + (index + 1) * 72 const leftOffset = index % 2 === 0 ? PADDING : PADDING + 800 if (index > 0) { TOP_OFFSET -= 72 * (index / 2) } if (index % 2 === 1) { TOP_OFFSET -= 36 } transformations.push({ material: 2, type: 'text', font: '52px Helvetica', text: `${a.trait_type}: ${a.value}`, coords: [leftOffset, TOP_OFFSET], color: '#BABBC7' }) }) modelViewer.setAttribute('ar', '') modelViewer.setAttribute('enable-pan', '') modelViewer.setAttribute('shadow-intensity', '1') modelViewer.setAttribute('camera-controls', '') modelViewer.setAttribute('touch-action', 'pan-y') modelViewer.addEventListener('load', async () => { transform(modelViewer, transformations) }) element.appendChild(modelViewer) }#29,011,916textInscription #29008965#29,008,965pngInscription #29008964#29,008,964png