diff --git a/README.md b/README.md index 9c60f25..b11a75e 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ In your single page layout ```html {{ if .Params.comtodon }}
- + {{- end }} ``` diff --git a/comtodon.js b/comtodon.js index f921b42..23c98b2 100644 --- a/comtodon.js +++ b/comtodon.js @@ -66,13 +66,13 @@ function html(statuses, domain) { return statuses.map(({ account, created_at, content, id, emojis, sensitive, spoiler_text, replies }) => h('status', h('date', ago(created_at), 'p') + - h('author" href="' + account.url, `` + + h('author" target="_blank" target="_blank" href="' + account.url, `` + h('name', moji(account.display_name, account.emojis), 'span') + h('acct', account.acct, 'span'), 'a') + (spoiler_text || sensitive ? h('spoiler', spoiler_text || h('spoiler-empty', 'Sensitive', 'span')) : '') + - h('content' + (spoiler_text || sensitive ? ' sensitive' : ''), moji(content, emojis)) + + h('status-content' + (spoiler_text || sensitive ? ' sensitive' : ''), moji(content, emojis)) + (replies ? h('replies', html(replies, domain)) : '') + - h(`reply" href="https://${domain}/interact/${id}?type=reply`, 'Reply', 'a'))).join('') + h(`reply" target="_blank" href="https://${domain}/interact/${id}?type=reply`, 'Reply', 'a'))).join('') } function moderate(statuses, id) { @@ -95,7 +95,7 @@ fetch(`https://${domain}/api/v1/statuses/${status}/context`) .then(res => res.json()) .then(res => { - el.innerHTML = h(`reply-main" href="https://${domain}/interact/${status}?type=reply`, 'Comment', 'a') + el.innerHTML = h(`reply-main" target=\"_blank\" href="https://${domain}/interact/${status}?type=reply`, 'Comment', 'a') const statuses = moderate(res.descendants, el.dataset.moderator) if (statuses) { el.innerHTML += html('deep' in el.dataset ? tree(statuses, { id: status }, el.dataset.deep || -1).replies : statuses, domain) diff --git a/comtodon.min.js b/comtodon.min.js index c7be8b4..ffccc89 100644 --- a/comtodon.min.js +++ b/comtodon.min.js @@ -1 +1 @@ -(function(){function a(a,b){a.innerHTML="Loading fail =(",console.error(b,a)}function b(b,c){const d=b.dataset[c];return d?d:void a(b,`Missing data-${c} attribut`)}function c(a,b,c="div"){return`<${c} class="${a}">${b}`}function d(a){const b=Date.now(),c=+new Date(a),d=c>b?"in ":"",e=Math.floor(Math.abs(c-b));let f=0,g=1,h="millisecond";for(const b of i){g*=b[1];const a=Math.floor(e/g);if(0>=a)return`${d}${f} ${h}${1`);return a}function f(a,b,c){const[d,e]=a.reduce(([a,c],d)=>d.in_reply_to_id==b.id?[[...a,d],c]:[a,[...c,d]],[[],[]]);return b.replies=c?d.map(a=>f(e,a,c-1)):[],b}function g(a,b){return a.map(({account:a,created_at:f,content:h,id:i,emojis:j,sensitive:k,spoiler_text:l,replies:m})=>c("status",c("date",d(f),"p")+c("author\" href=\""+a.url,``+c("name",e(a.display_name,a.emojis),"span")+c("acct",a.acct,"span"),"a")+(l||k?c("spoiler",l||c("spoiler-empty","Sensitive","span")):"")+c("content"+(l||k?" sensitive":""),e(h,j))+(m?c("replies",g(m,b)):"")+c(`reply" href="https://${b}/interact/${i}?type=reply`,"Reply","a"))).join("")}function h(a,b){if(!b)return a;const c=a.filter(a=>a.account.id==b).map(a=>a.in_reply_to_id);return a.filter(a=>c.includes(a.id))}const i=new Map([["second",1e3],["minute",60],["hour",60],["day",24],["month",30.5],["year",12],["century",100]]);for(const d of document.getElementsByClassName("comtodon")){d.innerHTML="
Loading...
";const e=b(d,"domain"),i=b(d,"status");if(!e||!i)return;fetch(`https://${e}/api/v1/statuses/${i}/context`).then(a=>a.json()).then(a=>{d.innerHTML=c(`reply-main" href="https://${e}/interact/${i}?type=reply`,"Comment","a");const b=h(a.descendants,d.dataset.moderator);d.innerHTML+=b?g("deep"in d.dataset?f(b,{id:i},d.dataset.deep||-1).replies:b,e):c("empty","Any comment")}).catch(()=>a(d,"Request fail"))}})(); \ No newline at end of file +(function(){function a(a,b){a.innerHTML="Loading fail =(",console.error(b,a)}function b(b,c){const d=b.dataset[c];return d?d:void a(b,`Missing data-${c} attribut`)}function c(a,b,c="div"){return`<${c} class="${a}">${b}`}function d(a){const b=Date.now(),c=+new Date(a),d=c>b?"in ":"",e=Math.floor(Math.abs(c-b));let f=0,g=1,h="millisecond";for(const b of i){g*=b[1];const a=Math.floor(e/g);if(0>=a)return`${d}${f} ${h}${1`);return a}function f(a,b,c){const[d,e]=a.reduce(([a,c],d)=>d.in_reply_to_id==b.id?[[...a,d],c]:[a,[...c,d]],[[],[]]);return b.replies=c?d.map(a=>f(e,a,c-1)):[],b}function g(a,b){return a.map(({account:a,created_at:f,content:h,id:i,emojis:j,sensitive:k,spoiler_text:l,replies:m})=>c("status",c("date",d(f),"p")+c("author\" target=\"_blank\" href=\""+a.url,``+c("name",e(a.display_name,a.emojis),"span")+c("acct",a.acct,"span"),"a")+(l||k?c("spoiler",l||c("spoiler-empty","Sensitive","span")):"")+c("status-content"+(l||k?" sensitive":""),e(h,j))+(m?c("replies",g(m,b)):"")+c(`reply" target="_blank" href="https://${b}/interact/${i}?type=reply`,"Reply","a"))).join("")}function h(a,b){if(!b)return a;const c=a.filter(a=>a.account.id==b).map(a=>a.in_reply_to_id);return a.filter(a=>c.includes(a.id))}const i=new Map([["second",1e3],["minute",60],["hour",60],["day",24],["month",30.5],["year",12],["century",100]]);for(const d of document.getElementsByClassName("comtodon")){d.innerHTML="
Loading...
";const e=b(d,"domain"),i=b(d,"status");if(!e||!i)return;fetch(`https://${e}/api/v1/statuses/${i}/context`).then(a=>a.json()).then(a=>{d.innerHTML=c(`reply-main" target="_blank" href="https://${e}/interact/${i}?type=reply`,"Comment","a");const b=h(a.descendants,d.dataset.moderator);d.innerHTML+=b?g("deep"in d.dataset?f(b,{id:i},d.dataset.deep||-1).replies:b,e):c("empty","Any comment")}).catch(()=>a(d,"Request fail"))}})(); \ No newline at end of file diff --git a/style.css b/style.css index f561b54..74e116a 100644 --- a/style.css +++ b/style.css @@ -20,15 +20,15 @@ main { position: relative; } -.comtodon .content, .comtodon .reply-main { +.comtodon .status-content, .comtodon .reply-main { margin-bottom: .5em; } -.comtodon .content { +.comtodon .status-content { border-left: 2px solid #777; } -.comtodon .content.sensitive { +.comtodon .status-content.sensitive { content: 'Sensitive'; } diff --git a/style.sass b/style.sass index 9f7736f..2c2e8d3 100644 --- a/style.sass +++ b/style.sass @@ -13,9 +13,9 @@ main .comtodon .status position: relative - .content, .reply-main + .status-content, .reply-main margin-bottom: .5em - .content + .status-content border-left: 2px solid #777 &.sensitive content: 'Sensitive'