forked from andyburke/autonomous.contact
feature: reactions
This commit is contained in:
parent
6500d9a9be
commit
b8467ec870
16 changed files with 2603 additions and 383 deletions
|
|
@ -14,11 +14,13 @@ function smarten_feeds() {
|
|||
continue;
|
||||
}
|
||||
|
||||
const feed_item_template = feed.querySelector("template");
|
||||
if (!feed_item_template) {
|
||||
console.warn("No template for smart feed: " + feed);
|
||||
continue;
|
||||
}
|
||||
feed.__templates = feed
|
||||
.querySelectorAll("template[data-for_type]")
|
||||
.values()
|
||||
.reduce((_templates, template) => {
|
||||
_templates[template.dataset.for_type] = template;
|
||||
return _templates;
|
||||
}, {});
|
||||
|
||||
feed.__start = () => {
|
||||
feed.__started = true;
|
||||
|
|
@ -65,17 +67,26 @@ function smarten_feeds() {
|
|||
};
|
||||
|
||||
feed.__target = (item) => {
|
||||
return feed.__target_element?.(item) ?? feed;
|
||||
if (!feed.__target_element) {
|
||||
return feed;
|
||||
}
|
||||
|
||||
return feed.__target_element(item);
|
||||
};
|
||||
|
||||
feed.__autoscroll_debounce_timeout = undefined;
|
||||
feed.__render = async (item) => {
|
||||
const template = feed.__templates[item.type];
|
||||
if (!template) {
|
||||
return;
|
||||
}
|
||||
|
||||
feed.__context =
|
||||
feed.__context ??
|
||||
(feed.dataset.context ? new Function(feed.dataset.context) : undefined);
|
||||
const context = feed.__context ? await feed.__context(item, feed) : {};
|
||||
|
||||
const rendered_html = eval("`" + feed_item_template.innerHTML.trim() + "`");
|
||||
const rendered_html = eval("`" + template.innerHTML.trim() + "`");
|
||||
|
||||
const existing_element =
|
||||
feed.querySelector("#" + item.id?.replace(/([:\.])/g, "\\$1")) ??
|
||||
|
|
@ -106,6 +117,10 @@ function smarten_feeds() {
|
|||
}
|
||||
} else {
|
||||
const target = feed.__target(item);
|
||||
if (!target) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (feed.dataset.insert ?? "append") {
|
||||
case "prepend":
|
||||
target.insertAdjacentHTML("afterbegin", rendered_html);
|
||||
|
|
@ -120,7 +135,7 @@ function smarten_feeds() {
|
|||
break;
|
||||
}
|
||||
|
||||
if (feed.dataset.autoscroll) {
|
||||
if (target === feed && feed.dataset.autoscroll) {
|
||||
if (feed.__autoscroll_debounce_timeout) {
|
||||
clearTimeout(feed.__autoscroll_debounce_timeout);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue