window.pixlfed = {}; window.pixlfed.config = { domain: process.env.MIX_APP_DOMAIN, } pixlfed.autoSizeIFrame = function(el) { console.log(el.contentDocument); el.style.height = el.contentDocument.body.scrollHeight +'px'; } pixlfed.polyfill = function() { [].forEach.call(document.querySelectorAll('div.pixelfed-embed'), function(el) { pixlfed.loadIFrame(el); }); } pixlfed.loadIFrame = function(el) { let permalink = el.getAttribute('data-pixlfed-permalink'); let parser = document.createElement('a'); parser.href = permalink; if(el.getAttribute('loaded') == 'true') { return; } if(pixlfed.config.domain !== parser.host) { el.setAttribute('loaded', 'true'); console.error('Invalid embed permalink') return; } let css = 'background: white; max-width: 540px; width: calc(100% - 2px); border-radius: 3px; border: 1px solid rgb(219, 219, 219); box-shadow: none; display: block; margin: 0px 0px 12px; min-width: 326px; padding: 0px;'; let iframe = document.createElement('iframe'); iframe.onload = function() { pixlfed.autoSizeIFrame(iframe); } iframe.setAttribute('allowtransparency', 'true'); iframe.setAttribute('frameborder', '0'); iframe.setAttribute('scrolling', 'no'); iframe.setAttribute('src', permalink); iframe.setAttribute('style', css); iframe.setAttribute('loaded', 'true'); el.replaceWith(iframe); } pixlfed.run = function() { var lazyFrames = [].slice.call(document.querySelectorAll("div.pixelfed-embed")); if ("IntersectionObserver" in window) { let lazyFrameObserver = new IntersectionObserver(function(entries, observer) { entries.forEach(function(entry) { if (entry.isIntersecting) { if(entry.target.getAttribute('loaded') !== 'true') { pixlfed.loadIFrame(entry.target); } } }); }); lazyFrames.forEach(function(lazyFrame) { lazyFrameObserver.observe(lazyFrame); }); } else { pixlfed.polyfill(); } } pixlfed.run();