.
This commit is contained in:
150
public/js/events.js
Normal file
150
public/js/events.js
Normal file
@ -0,0 +1,150 @@
|
||||
import rt from "./rt.js";
|
||||
import lib from "./lib.js";
|
||||
|
||||
const events = {};
|
||||
events.wheel = {
|
||||
page: async e => {
|
||||
if(rt.scroll)
|
||||
return;
|
||||
rt.scroll = true;
|
||||
const deltaY = e.target.id === "up" ? -1 : e.deltaY < 0 ? -1: 1; // -1 up, 1 down
|
||||
|
||||
if((deltaY === -1 && rt.items.first === rt.items.newest) || (deltaY === 1 && rt.items.last === rt.items.oldest))
|
||||
return rt.scroll = false;
|
||||
rt.items.eps = 0;
|
||||
await lib.getItems({
|
||||
el: rt.ct.wrapper.pages[deltaY === -1 ? 0 : 2],
|
||||
opt: deltaY === -1 ? `id=${rt.items.first}&order=asc` : `id=${rt.items.last}&order=desc`
|
||||
});
|
||||
rt.ct.wrapper.pages[deltaY === -1 ? 0 : 2].scrollIntoView({ block: rt.vars.block, behavior: "smooth" });
|
||||
await new Promise(resolve => setTimeout(resolve, rt.vars.cd));
|
||||
|
||||
rt.ct.wrapper.pages[1].innerHTML = rt.ct.wrapper.pages[deltaY === -1 ? 0 : 2].innerHTML;
|
||||
rt.ct.wrapper.pages[1].scrollIntoView({ block: rt.vars.block });
|
||||
|
||||
rt.scroll = false;
|
||||
},
|
||||
item: async e => {
|
||||
if(rt.scroll)
|
||||
return;
|
||||
const deltaY = e.target.id === "left" ? -1 : e.deltaY < 0 ? -1: 1; // -1 left, 1 right
|
||||
if((deltaY === -1 && rt.items.act === rt.items.first) || (deltaY === 1 && rt.items.act === rt.items.last))
|
||||
return rt.scroll = false;
|
||||
window.location = `${window.location.pathname}#${rt.items.act - deltaY}`;
|
||||
}
|
||||
};
|
||||
events.resize = {
|
||||
page: async e => {
|
||||
e.preventDefault();
|
||||
clearTimeout(rt.tmp.resize);
|
||||
lib.calcItems();
|
||||
rt.tmp.resize = setTimeout(() => lib.getItems({
|
||||
el: rt.ct.wrapper.pages[1],
|
||||
opt: `id=${rt.items.first + 1}&order=desc`
|
||||
}), rt.vars.cd);
|
||||
|
||||
lib.scrolltomiddle(rt.ct.wrapper.pages);
|
||||
},
|
||||
item: async e => {
|
||||
lib.scrolltomiddle(rt.ct.wrapper.items);
|
||||
}
|
||||
};
|
||||
events.hashchange = async e => {
|
||||
if(rt.scroll)
|
||||
return;
|
||||
rt.scroll = true;
|
||||
|
||||
if(!rt.tmp.hash)
|
||||
return rt.tmp.hash = true;
|
||||
const itemid = parseInt((e.newURL?e.newURL:e.detail.newURL).split("#").slice(-1));
|
||||
if(!itemid || itemid <= 0) // failover oder so
|
||||
return lib.showLayer("page");
|
||||
|
||||
const next = rt.items.act === null || rt.items.act === itemid ? 1 : rt.items.act > itemid ? 2 : 0;
|
||||
rt.ct.header.itempos.innerHTML = `item ${itemid}`;
|
||||
const item = await (await fetch(`${rt.api}/item/${itemid}`)).json();
|
||||
item.dest = item.dest.replace(/^\./, "");
|
||||
|
||||
rt.ct.header.infos.source.href = item.src;
|
||||
rt.ct.header.infos.source.innerHTML = item.srchost;
|
||||
rt.ct.header.infos.channel.innerHTML = `${item.usernetwork} ${item.userchannel}`;
|
||||
rt.ct.header.infos.title.innerHTML = `${item.mime} (${item.size})`;
|
||||
rt.ct.header.infos.nick.innerHTML = item.username;
|
||||
|
||||
lib.showLayer("item", next === 1);
|
||||
|
||||
rt.ct.wrapper.pages[1].querySelectorAll("a > img").forEach(e => {
|
||||
e.style.boxShadow = null;
|
||||
e.style.borderRadius = null;
|
||||
e.style.transition = ".1s ease-out";
|
||||
});
|
||||
setTimeout(() => {
|
||||
rt.ct.wrapper.pages[1].querySelector(`a[href='#${itemid}'] > img`).style.boxShadow = "0px 0px 0px 2px #dac8d2";
|
||||
rt.ct.wrapper.pages[1].querySelector(`a[href='#${itemid}'] > img`).style.borderRadius = "5px";
|
||||
rt.ct.wrapper.pages[1].querySelector(`a[href='#${itemid}'] > img`).style.transition = ".1s ease-in";
|
||||
}, 50);
|
||||
|
||||
let el;
|
||||
switch(item.mime) {
|
||||
case "audio/flac":
|
||||
case "audio/mpeg":
|
||||
case "audio/ogg":
|
||||
case "audio/x-flac": // audios
|
||||
el = document.createElement("audio");
|
||||
el.src = `${rt.url}${item.dest}`;
|
||||
el.type = item.mime;
|
||||
el.autoplay = true;
|
||||
el.controls = true;
|
||||
el.loop = true;
|
||||
break;
|
||||
case "image/gif":
|
||||
case "image/jpeg":
|
||||
case "image/png": // images
|
||||
el = document.createElement("img");
|
||||
el.src = `${rt.url}${item.dest}`;
|
||||
break;
|
||||
case "video/mp4":
|
||||
case "video/quicktime":
|
||||
case "video/webm":
|
||||
case "video/ogv": // videos
|
||||
el = document.createElement("video");
|
||||
el.src = `${rt.url}${item.dest}`;
|
||||
el.type = item.mime;
|
||||
el.autoplay = true;
|
||||
el.controls = true;
|
||||
el.loop = true;
|
||||
break;
|
||||
default:
|
||||
alert("lol hacker");
|
||||
break;
|
||||
}
|
||||
|
||||
el.classList.add("item");
|
||||
|
||||
rt.ct.wrapper.items[next].insertAdjacentElement("afterbegin", el);
|
||||
|
||||
rt.ct.wrapper.items[next].scrollIntoView({ block: rt.vars.block, behavior: "smooth" });
|
||||
|
||||
rt.items.prev = item.prev;
|
||||
rt.items.next = item.next;
|
||||
rt.items.act = item.id;
|
||||
|
||||
await new Promise(resolve => setTimeout(resolve, rt.vars.cd));
|
||||
|
||||
if(next !== 1) {
|
||||
document.querySelector("div#i_items").removeChild(rt.ct.wrapper.items[next === 0 ? 2 : 0]);
|
||||
const newdiv = document.createElement("div");
|
||||
newdiv.classList.add("i_item");
|
||||
document.querySelector("div#i_items").insertAdjacentElement((next === 0 ? "afterbegin" : "beforeend"), newdiv);
|
||||
|
||||
rt.ct.wrapper.items = document.querySelectorAll("div.i_item");
|
||||
}
|
||||
|
||||
lib.scrolltomiddle(rt.ct.wrapper.items);
|
||||
rt.ct.wrapper.items[0].innerHTML = "";
|
||||
rt.ct.wrapper.items[2].innerHTML = "";
|
||||
|
||||
rt.scroll = false;
|
||||
};
|
||||
|
||||
export default events;
|
@ -1,170 +1,33 @@
|
||||
/* Todo:
|
||||
* - Event tracker (rt.events)
|
||||
* - Functions und Events in Module auslagern
|
||||
*/
|
||||
import rt from "./rt.js";
|
||||
import "./test.js";
|
||||
import events from "./events.js";
|
||||
import lib from "./lib.js";
|
||||
|
||||
const calcItems = () => {
|
||||
const cs = window.getComputedStyle(rt.container.posts[0]);
|
||||
const height = parseInt(cs.height.replace("px", ""));
|
||||
const width = parseInt(cs.width.replace("px", ""));
|
||||
const cols = ~~(width / ( rt.layout.itemsize + rt.layout.margin ));
|
||||
const rows = ~~(height / ( rt.layout.itemsize + rt.layout.margin ));
|
||||
rt.container.posts.forEach(e => {
|
||||
e.style.marginLeft = Math.max((width - (cols * (rt.layout.itemsize + rt.layout.margin)) + rt.layout.margin) / rt.layout.min_rows, 0) * 1.5;
|
||||
});
|
||||
|
||||
return {
|
||||
rows: rows,
|
||||
cols: cols,
|
||||
eps: rows * cols,
|
||||
width: width,
|
||||
height: height
|
||||
};
|
||||
};
|
||||
const getItems = async ({ el, opt = "" }) => {
|
||||
const tmp = calcItems();
|
||||
if(tmp.eps === rt.items.eps)
|
||||
return;
|
||||
rt.items.eps = tmp.eps;
|
||||
el.innerHTML = "";
|
||||
const i = await (await fetch(`/api/p?eps=${tmp.eps}&${opt}`)).json();
|
||||
(async () => {
|
||||
lib.showLayer("page");
|
||||
window.addEventListener("hashchange", events.hashchange);
|
||||
|
||||
const items = i.items.sort((a, b) => b.id - a.id);
|
||||
items.forEach(item => {
|
||||
const _a = document.createElement("a");
|
||||
_a.title = item.mime;
|
||||
_a.href = `#${item.id}`;//`${rt.url}/${item.id}`;
|
||||
const _img = document.createElement("img");
|
||||
_img.classList.add("thumb");
|
||||
_img.src = `${rt.url}/t/${item.id}.png`;
|
||||
_a.insertAdjacentElement("afterbegin", _img);
|
||||
el.insertAdjacentElement("beforeend", _a);
|
||||
const debug = document.querySelectorAll("span#debug > a");
|
||||
debug[0].addEventListener("click", () => { // page
|
||||
lib.showLayer("page");
|
||||
});
|
||||
rt.items.first = items[0].id;
|
||||
rt.items.last = items[items.length - 1].id;
|
||||
rt.items.oldest = i.oldest;
|
||||
rt.items.newest = i.newest;
|
||||
window.history.pushState(rt.items.first, `f0ck.me! page ${rt.items.first}`, `/page/${rt.items.first}`);
|
||||
|
||||
document.querySelector("#pagePosition").innerHTML = `items ${rt.items.first} - ${rt.items.last}`;
|
||||
};
|
||||
|
||||
const scroll = async e => { // uff
|
||||
if(rt.tmp.scroll)
|
||||
return;
|
||||
rt.tmp.scroll = true;
|
||||
const direction = e.target.id === "up" ? "up" : e.deltaY < 0 ? "up": "down";
|
||||
if((direction === "up" && rt.items.first === rt.items.newest) || (direction === "down" && rt.items.last === rt.items.oldest))
|
||||
return rt.tmp.scroll = false;
|
||||
rt.items.eps = 0;
|
||||
await getItems({
|
||||
el: rt.container.posts[direction === "up" ? 0 : 2],
|
||||
opt: direction === "up" ? `id=${rt.items.first}&order=asc` : `id=${rt.items.last}&order=desc`
|
||||
debug[1].addEventListener("click", () => { // item
|
||||
lib.showLayer("item");
|
||||
});
|
||||
rt.container.posts[direction === "up" ? 0 : 2].scrollIntoView({ block: rt.st.block, behavior: "smooth" });
|
||||
await new Promise(resolve => setTimeout(resolve, 500));
|
||||
|
||||
rt.container.posts[1].innerHTML = rt.container.posts[direction === "up" ? 0 : 2].innerHTML;
|
||||
rt.container.posts[1].scrollIntoView({ block: rt.st.block, behavior: "auto" });
|
||||
|
||||
rt.tmp.scroll = false;
|
||||
};
|
||||
|
||||
const swiper = {
|
||||
touchStartY: 0,
|
||||
touchEndY: 0,
|
||||
minSwipePixels: 30,
|
||||
detectionZone: undefined,
|
||||
swiperCallback: () => {},
|
||||
init: (detectionZone, callback) => {
|
||||
swiper.swiperCallback = callback
|
||||
detectionZone.addEventListener("touchstart", event => {
|
||||
swiper.touchStartY = event.changedTouches[0].screenY;
|
||||
}, false);
|
||||
detectionZone.addEventListener("touchend", event => {
|
||||
swiper.touchEndY = event.changedTouches[0].screenY;
|
||||
swiper.handleSwipeGesture();
|
||||
}, false);
|
||||
},
|
||||
handleSwipeGesture: () => {
|
||||
let direction, moved;
|
||||
if (swiper.touchEndY <= swiper.touchStartY) {
|
||||
moved = swiper.touchStartY - swiper.touchEndY;
|
||||
direction = "down";
|
||||
}
|
||||
if (swiper.touchEndY >= swiper.touchStartY) {
|
||||
moved = swiper.touchEndY - swiper.touchStartY;
|
||||
direction = "up";
|
||||
}
|
||||
if (moved > swiper.minSwipePixels && direction !== "undefined")
|
||||
swiper.swipe(direction, moved);
|
||||
},
|
||||
swipe: (direction, movedPixels) => {
|
||||
const ret = {};
|
||||
ret.direction = direction;
|
||||
ret.movedPixels = movedPixels;
|
||||
swiper.swiperCallback(ret);
|
||||
}
|
||||
};
|
||||
|
||||
const resize = e => {
|
||||
e.preventDefault();
|
||||
clearTimeout(rt.tmp.resize);
|
||||
rt.tmp.resize = setTimeout(() => getItems({
|
||||
el: rt.container.posts[1],
|
||||
opt: `id=${rt.items.first + 1}&order=desc`
|
||||
}), 500);
|
||||
};
|
||||
|
||||
// events
|
||||
swiper.init(rt.container.wrapper, e => scroll({ target: { id: e.direction }}));
|
||||
[...document.querySelectorAll("div.arrow")].filter(e => ["up", "down"].includes(e.id)).forEach(p => p.addEventListener("click", scroll));
|
||||
document.addEventListener("wheel", scroll);
|
||||
|
||||
(() => { // init
|
||||
window.addEventListener("resize", resize);
|
||||
debug[2].addEventListener("click", () => { // item
|
||||
lib.showLayer("howto");
|
||||
});
|
||||
|
||||
setTimeout(() => {
|
||||
const pn = parseInt(document.location.pathname.split("/").splice(-1));
|
||||
rt.container.posts[1].scrollIntoView({ block: rt.st.block }); // mitte
|
||||
getItems({
|
||||
el: rt.container.posts[1],
|
||||
const hash = document.location.hash;
|
||||
lib.scrolltomiddle(rt.ct.wrapper.pages);
|
||||
lib.getItems({
|
||||
el: rt.ct.wrapper.pages[1],
|
||||
opt: pn > 0 ? `id=${pn + 1}&order=desc` : ""
|
||||
});
|
||||
|
||||
if(hash)
|
||||
window.dispatchEvent(new CustomEvent("hashchange", { detail: { newURL: hash } }));
|
||||
}, 300);
|
||||
|
||||
})();
|
||||
|
||||
|
||||
|
||||
window.addEventListener("hashchange", async e => {
|
||||
const itemid = parseInt(e.newURL.split("#").slice(-1));
|
||||
if(itemid <= 0) { // failover
|
||||
rt.container.itemview.style.display = "none";
|
||||
return false;
|
||||
}
|
||||
|
||||
rt.container.itemview.style.display = "flex"; // show itemview
|
||||
rt.container.header.itempos.style.display = "block";
|
||||
rt.container.header.pagepos.style.display = "none";
|
||||
rt.container.header.iteminfo.style.display = "block";
|
||||
|
||||
rt.container.header.itempos.innerHTML = `item ${itemid}`;
|
||||
|
||||
const item = await (await fetch(`/api/item/${itemid}`)).json();
|
||||
console.log(item);
|
||||
|
||||
rt.container.header.infos.source.href = item.src;
|
||||
rt.container.header.infos.source.innerHTML = item.srchost;
|
||||
rt.container.header.infos.channel.innerHTML = `${item.usernetwork} ${item.userchannel}`;
|
||||
rt.container.header.infos.title.innerHTML = `${item.mime} (${item.size})`;
|
||||
rt.container.header.infos.nick.innerHTML = item.username;
|
||||
|
||||
rt.container.items[1].innerHTML = `<img src="${rt.url}${item.dest}" class="item" />`;
|
||||
rt.container.items[1].scrollIntoView({ block: rt.st.block }); // mitte
|
||||
|
||||
// remove page events
|
||||
document.removeEventListener("wheel", scroll);
|
||||
|
||||
console.log(itemid);
|
||||
});
|
||||
|
1
public/js/f0ck.min.js
vendored
Normal file
1
public/js/f0ck.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import rt from"./rt.js";import events from"./events.js";import lib from"./lib.js";(async()=>{lib.showLayer("page"),window.addEventListener("hashchange",events.hashchange);const e=document.querySelectorAll("span#debug > a");e[0].addEventListener("click",()=>{lib.showLayer("page")}),e[1].addEventListener("click",()=>{lib.showLayer("item")}),e[2].addEventListener("click",()=>{lib.showLayer("howto")}),setTimeout(()=>{const e=parseInt(document.location.pathname.split("/").splice(-1)),t=document.location.hash;lib.scrolltomiddle(rt.ct.wrapper.pages),lib.getItems({el:rt.ct.wrapper.pages[1],opt:e>0?`id=${e+1}&order=desc`:""}),t&&window.dispatchEvent(new CustomEvent("hashchange",{detail:{newURL:t}}))},300)})();
|
121
public/js/lib.js
Normal file
121
public/js/lib.js
Normal file
@ -0,0 +1,121 @@
|
||||
import rt from "./rt.js";
|
||||
import events from "./events.js";
|
||||
|
||||
const calcItems = () => {
|
||||
const cs = window.getComputedStyle(rt.ct.content);
|
||||
const height = parseInt(cs.height.replace("px", ""));
|
||||
const width = parseInt(cs.width.replace("px", ""));
|
||||
const cols = ~~(width / ( rt.layout.itemsize + rt.layout.margin ));
|
||||
const rows = ~~(height / ( rt.layout.itemsize + rt.layout.margin ));
|
||||
|
||||
rt.ct.wrapper.pages.forEach(e => {
|
||||
e.style.marginLeft = Math.max((width - (cols * (rt.layout.itemsize + rt.layout.margin)) + rt.layout.margin) / rt.layout.min_rows, 0) * 1.5 + "px";
|
||||
e.style.paddingTop = Math.max((height - (rows * (rt.layout.itemsize + rt.layout.margin)) + rt.layout.margin) / rt.layout.min_rows, 0) + "px";
|
||||
});
|
||||
|
||||
return {
|
||||
rows: rows,
|
||||
cols: cols,
|
||||
eps: rows * cols,
|
||||
width: width,
|
||||
height: height
|
||||
};
|
||||
};
|
||||
|
||||
const getItems = async ({ el, opt = "" }) => {
|
||||
const tmp = calcItems();
|
||||
if(tmp.eps === rt.items.eps)
|
||||
return;
|
||||
rt.items.eps = tmp.eps;
|
||||
el.innerHTML = "";
|
||||
const i = await (await fetch(`${rt.api}/p?eps=${tmp.eps}&${opt}`)).json();
|
||||
|
||||
const items = i.items.sort((a, b) => b.id - a.id);
|
||||
items.forEach(item => {
|
||||
const _a = document.createElement("a");
|
||||
_a.title = item.mime;
|
||||
_a.href = `#${item.id}`;//`${rt.url}/${item.id}`;
|
||||
const _img = document.createElement("img");
|
||||
_img.classList.add("thumb");
|
||||
_img.src = `${rt.url}/t/${item.id}.png`;
|
||||
_a.insertAdjacentElement("afterbegin", _img);
|
||||
el.insertAdjacentElement("beforeend", _a);
|
||||
});
|
||||
rt.items.first = items[0].id;
|
||||
rt.items.last = items[items.length - 1].id;
|
||||
rt.items.oldest = i.oldest;
|
||||
rt.items.newest = i.newest;
|
||||
|
||||
rt.tmp.hash = false;
|
||||
window.history.pushState(rt.items.first, `f0ck.me! page ${rt.items.first}`, `/page/${rt.items.first}${(window.location.hash?window.location.hash:"")}`);
|
||||
rt.tmp.hash = true;
|
||||
|
||||
rt.ct.header.pagepos.innerHTML = `items ${rt.items.first} - ${rt.items.last}`;
|
||||
};
|
||||
|
||||
const scrolltomiddle = el => {
|
||||
el[0].scrollIntoView({ block: rt.vars.block });
|
||||
el[2].scrollIntoView({ block: rt.vars.block });
|
||||
el[1].scrollIntoView({ block: rt.vars.block });
|
||||
};
|
||||
|
||||
const showLayer = (layer, scroll = true) => {
|
||||
// hide all pages
|
||||
for(let e in rt.ct.tabs)
|
||||
rt.ct.tabs[e].style.display = "none";
|
||||
// remove all events for reassigning
|
||||
document.removeEventListener("wheel", events.wheel.item);
|
||||
document.removeEventListener("wheel", events.wheel.page);
|
||||
window.removeEventListener("resize", events.resize.item);
|
||||
window.removeEventListener("resize", events.resize.page);
|
||||
[...rt.ct.arrows] // remove itembuttons
|
||||
.filter(e => ["left", "right"].includes(e.id))
|
||||
.forEach(p => p.removeEventListener("click", events.wheel.item));
|
||||
[...rt.ct.arrows] // remove pagebuttons
|
||||
.filter(e => ["up", "down"].includes(e.id))
|
||||
.forEach(p => p.removeEventListener("click", events.wheel.page));
|
||||
|
||||
switch(layer) {
|
||||
case "page":
|
||||
rt.ct.tabs.item.style.display = "none";
|
||||
rt.ct.tabs.howto.style.display = "none";
|
||||
document.addEventListener("wheel", events.wheel.page);
|
||||
window.addEventListener("resize", events.resize.page);
|
||||
[...rt.ct.arrows] // add pagebuttons
|
||||
.filter(e => ["up", "down"].includes(e.id))
|
||||
.forEach(p => p.addEventListener("click", events.wheel.page));
|
||||
|
||||
if(scroll)
|
||||
scrolltomiddle(rt.ct.wrapper.pages);
|
||||
|
||||
rt.ct.header.pagepos.style.display = "block";
|
||||
rt.ct.header.itempos.style.display = "none";
|
||||
rt.ct.header.iteminfo.style.display = "none";
|
||||
break;
|
||||
case "item":
|
||||
rt.ct.tabs.item.style.display = "block";
|
||||
document.addEventListener("wheel", events.wheel.item);
|
||||
window.addEventListener("resize", events.resize.item);
|
||||
[...rt.ct.arrows] // add itembuttons
|
||||
.filter(e => ["left", "right"].includes(e.id))
|
||||
.forEach(p => p.addEventListener("click", events.wheel.item));
|
||||
|
||||
if(scroll)
|
||||
scrolltomiddle(rt.ct.wrapper.items);
|
||||
|
||||
rt.ct.header.pagepos.style.display = "none";
|
||||
rt.ct.header.itempos.style.display = "block";
|
||||
rt.ct.header.iteminfo.style.display = "block";
|
||||
break;
|
||||
case "howto":
|
||||
rt.ct.tabs.howto.style.display = "block";
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
export default { // oof
|
||||
calcItems: calcItems,
|
||||
getItems: getItems,
|
||||
showLayer: showLayer,
|
||||
scrolltomiddle: scrolltomiddle
|
||||
};
|
@ -5,18 +5,38 @@ export default {
|
||||
min_rows: 4,
|
||||
itemsize: 130
|
||||
},
|
||||
st: {
|
||||
behavior: "smooth",
|
||||
block: "center"
|
||||
},
|
||||
url: "//f0ck.me",
|
||||
api: "//dev.f0ck.me/api",
|
||||
vars: {
|
||||
cd: 700,
|
||||
block: "start"
|
||||
},
|
||||
tmp: {
|
||||
scroll: false,
|
||||
resize: null
|
||||
resize: null,
|
||||
hash: true
|
||||
},
|
||||
container: {
|
||||
wrapper: document.querySelector("div#wrapper"),
|
||||
itemview: document.querySelector("div#itemview"),
|
||||
items: {
|
||||
first: null,
|
||||
last: null,
|
||||
newest: null,
|
||||
oldest: null,
|
||||
next: null,
|
||||
prev: null,
|
||||
act: null,
|
||||
eps: 0
|
||||
},
|
||||
ct: {
|
||||
content: document.querySelector("div#content"),
|
||||
wrapper: {
|
||||
pages: document.querySelectorAll("div.p_item"),
|
||||
items: document.querySelectorAll("div.i_item")
|
||||
},
|
||||
tabs: {
|
||||
item: document.querySelector("div#itemwrapper"),
|
||||
howto: document.querySelector("div#howtowrapper")
|
||||
},
|
||||
arrows: document.querySelectorAll("div.arrow"),
|
||||
header: {
|
||||
iteminfo: document.querySelector("div#itemInfo"),
|
||||
pagepos: document.querySelector("div#pagePosition"),
|
||||
@ -28,15 +48,6 @@ export default {
|
||||
nick: document.querySelector("span#itemNick"),
|
||||
channel: document.querySelector("span#itemChannel")
|
||||
}
|
||||
},
|
||||
items: document.querySelectorAll("div.items"),
|
||||
posts: document.querySelectorAll("div.posts")
|
||||
},
|
||||
items: {
|
||||
first: null,
|
||||
last: null,
|
||||
newest: null,
|
||||
oldest: null,
|
||||
eps: 0
|
||||
}
|
||||
}
|
||||
};
|
||||
|
Reference in New Issue
Block a user