diff options
Diffstat (limited to 'js/Headlines.js')
-rwxr-xr-x | js/Headlines.js | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/js/Headlines.js b/js/Headlines.js index 23dc0b2c2..b98098c33 100755 --- a/js/Headlines.js +++ b/js/Headlines.js @@ -32,6 +32,15 @@ const Headlines = { }, {threshold: [0, 1], root: document.querySelector("#headlines-frame")} ), + unpack_observer: new IntersectionObserver( + (entries, observer) => { + entries.forEach((entry) => { + if (entry.intersectionRatio > 0) + Article.unpack(entry.target); + }); + }, + {threshold: [0], root: document.querySelector("#headlines-frame")} + ), row_observer: new MutationObserver((mutations) => { const modified = []; @@ -360,6 +369,7 @@ const Headlines = { if (hl.active) { new_row.addClassName("active"); + Article.unpack(new_row); if (App.isCombinedMode()) Article.cdmMoveToId(id, {noscroll: true}); @@ -375,6 +385,11 @@ const Headlines = { this.sticky_header_observer.observe(e) }); + if (App.getInitParam("cdm_expanded")) + $$("#headlines-frame > div[id*=RROW].cdm").each((e) => { + this.unpack_observer.observe(e) + }); + }, render: function (headlines, hl) { let row = null; @@ -411,6 +426,7 @@ const Headlines = { id="RROW-${hl.id}" data-article-id="${hl.id}" data-orig-feed-id="${hl.feed_id}" + data-content="${App.escapeHtml(hl.content)}" data-score="${hl.score}" data-article-title="${App.escapeHtml(hl.title)}" onmouseover="Article.mouseIn(${hl.id})" @@ -450,7 +466,7 @@ const Headlines = { <div class="content" onclick="return Headlines.click(event, ${hl.id}, true);"> <div id="POSTNOTE-${hl.id}">${hl.note}</div> <div class="content-inner" lang="${hl.lang ? hl.lang : 'en'}"> - ${hl.content} + <img src="${App.getInitParam('icon_indicator_white')}"> </div> <div class="intermediate"> ${hl.enclosures} @@ -517,7 +533,6 @@ const Headlines = { this.row_observer.observe(tmp.firstChild, {attributes: true}); PluginHost.run(PluginHost.HOOK_HEADLINE_RENDERED, tmp.firstChild); - PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED_CDM, tmp.firstChild); return tmp.firstChild; }, @@ -687,6 +702,11 @@ const Headlines = { this.sticky_header_observer.observe(e) }); + if (App.getInitParam("cdm_expanded")) + $$("#headlines-frame > div[id*=RROW].cdm").each((e) => { + this.unpack_observer.observe(e) + }); + } else { console.error("Invalid object received: " + transport.responseText); dijit.byId("headlines-frame").attr('content', "<div class='whiteBox'>" + @@ -697,7 +717,7 @@ const Headlines = { Feeds.infscroll_in_progress = 0; // this is used to auto-catchup articles if needed after infscroll request has finished, - // fill buffer more, etc + // unpack visible articles, fill buffer more, etc this.scrollHandler(); Notify.close(); |