MCPcopy
hub / github.com/ampproject/amphtml / twitter

Function twitter

3p/twitter.js:36–119  ·  view source on GitHub ↗
(global, data)

Source from the content-addressed store, hash-verified

34 * @param {!Object} data
35 */
36export function twitter(global, data) {
37 const tweet = global.document.createElement('div');
38 tweet.id = 'tweet';
39 setStyles(tweet, {
40 width: '100%',
41 display: 'flex',
42 alignItems: 'center',
43 justifyContent: 'center',
44 });
45 global.document.getElementById('c').appendChild(tweet);
46 getTwttr(global, function (twttr) {
47 // Dimensions are given by the parent frame.
48 delete data.width;
49 delete data.height;
50
51 if (data.tweetid) {
52 twttr.widgets
53 .createTweet(cleanupTweetId_(data.tweetid), tweet, data)
54 ./*OK*/ then((el) => tweetCreated(twttr, el));
55 } else if (data.momentid) {
56 twttr.widgets
57 .createMoment(data.momentid, tweet, data)
58 ./*OK*/ then((el) => tweetCreated(twttr, el));
59 } else if (data.timelineSourceType) {
60 // Extract properties starting with 'timeline'.
61 const timelineData = Object.keys(data)
62 .filter((prop) => prop.startsWith('timeline'))
63 .reduce((newData, prop) => {
64 newData[stripPrefixCamelCase(prop, 'timeline')] = data[prop];
65 return newData;
66 }, {});
67 twttr.widgets
68 .createTimeline(timelineData, tweet, data)
69 ./*OK*/ then((el) => tweetCreated(twttr, el));
70 }
71 });
72
73 /**
74 * Handles a tweet or moment being created, resizing as necessary.
75 * @param {!Object} twttr
76 * @param {?Element} el
77 */
78 function tweetCreated(twttr, el) {
79 if (!el) {
80 global.context.noContentAvailable();
81 return;
82 }
83
84 resize(/** @type {!Element} */ (el));
85 twttr.events.bind('resize', (event) => {
86 // To be safe, make sure the resize event was triggered for the widget we
87 // created below.
88 if (el === event.target) {
89 resize(/** @type {!Element} */ (el));
90 }
91 });
92 }
93

Callers 1

Calls 8

setStylesFunction · 0.90
getTwttrFunction · 0.85
cleanupTweetId_Function · 0.85
tweetCreatedFunction · 0.85
stripPrefixCamelCaseFunction · 0.85
getElementByIdMethod · 0.45
thenMethod · 0.45
filterMethod · 0.45

Tested by

no test coverage detected