36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
class EnhanceContent extends HTMLElement {
|
|
connectedCallback() {
|
|
const el = this.getElementsByClassName("hashtag");
|
|
const server = this.dataset.server;
|
|
const tagUrl = this.dataset.tagUrl;
|
|
|
|
for (let i = 0; i < el.length; i++) {
|
|
const tagEl = el.item(i);
|
|
const currentHref = tagEl.getAttribute("href");
|
|
const tagName = currentHref.replace(`${server}/tags/`, "");
|
|
tagEl.setAttribute("href", tagUrl + tagName);
|
|
|
|
const parentEl = tagEl.parentElement;
|
|
const siblings = parentEl.childNodes;
|
|
let validSiblingsCount = 0;
|
|
|
|
for (const sibling of siblings) {
|
|
if (!(sibling.nodeType === 3 && sibling.textContent === " ")) {
|
|
validSiblingsCount++;
|
|
}
|
|
}
|
|
|
|
const childrenTags = parentEl.getElementsByClassName("hashtag");
|
|
|
|
const isTagBar = validSiblingsCount === childrenTags.length;
|
|
|
|
if (isTagBar) {
|
|
parentEl.classList.add("tag-bar");
|
|
tagEl.textContent = tagName;
|
|
tagEl.classList.add("pill");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
customElements.define("enhance-content", EnhanceContent);
|