/
githubmirror
/
amphtml
Обзор
Документация
Войти
/
githubmirror
/
amphtml
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
3p/reddit.js
76 строк
2 KB
Kristofer Baxter
♻️ Remove Notice from JS and Markdown (#35717)
19 авг 2021, 21:21
Не верифицирован
19 авг 2021, 21:21
f564b7e
Код
Авторство
О чём код?
import {loadScript} from './3p'; /** * Get the correct script for the container. * @param {!Window} global * @param {string} scriptSource The source of the script, different for post and comment embeds. */ function getContainerScript(global, scriptSource) { loadScript(global, scriptSource, () => {}); } /** * Embedly looks for a blockquote with a '-card' suffixed class. * @param {!Window} global * @return {!Element} blockquote */ function getPostContainer(global) { const blockquote = global.document.createElement('blockquote'); blockquote.classList.add('reddit-card'); blockquote.setAttribute('data-card-created', Math.floor(Date.now() / 1000)); return blockquote; } /** * @param {!Window} global * @param {!Object} data The element data * @return {!Element} div */ function getCommentContainer(global, data) { const div = global.document.createElement('div'); div.classList.add('reddit-embed'); div.setAttribute('data-embed-media', 'www.redditmedia.com'); // 'uuid' and 'created' are provided by the embed script, but don't seem // to actually be needed. Account for them, but let them default to undefined. div.setAttribute('data-embed-uuid', data.uuid); div.setAttribute('data-embed-created', data.embedcreated); div.setAttribute('data-embed-parent', data.embedparent || 'false'); div.setAttribute('data-embed-live', data.embedlive || 'false'); return div; } /** * @param {!Window} global * @param {!Object} data */ export function reddit(global, data) { const embedtype = data.embedtype || 'post'; let container; let scriptSource = ''; // Post and comment embeds are handled totally differently. if (embedtype === 'post') { container = getPostContainer(global); scriptSource = 'https://embed.redditmedia.com/widgets/platform.js'; } else if (embedtype === 'comment') { container = getCommentContainer(global, data); scriptSource = 'https://www.redditstatic.com/comment-embed.js'; } const link = global.document.createElement('a'); link.href = data.src; container.appendChild(link); global.document.getElementById('c').appendChild(container); getContainerScript(global, scriptSource); global.addEventListener('resize', (event) => { global.context.updateDimensions( event.target.outerWidth, event.target.outerHeight ); }); }