generic-skin 4.3.0 → 4.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -281,11 +281,16 @@ const FNR = {
281
281
  user: {
282
282
  getUrl: (name) => {
283
283
  let character =
284
- name !== undefined ? encodeURIComponent(name)
285
- .replace(/[!'()]/g, escape)
286
- .replace(/\*/g, "%2A") :
284
+ name !== undefined ?
285
+ Object.keys(window.localStorage).filter(key => key.indexOf('userInfo') > -1 && window.localStorage[key].indexOf(`"name":"${name}"`) > -1).join().replace(`${forumData.prefix}_userInfo`, '') :
287
286
  _userdata.user_id;
288
287
 
288
+ if (character.length === 0) {
289
+ character = encodeURIComponent(name).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
290
+ }
291
+
292
+ Object.keys(window.localStorage).filter(key => key.indexOf('userInfo') > -1 && window.localStorage[key].indexOf(`"name":"${name}"`) > -1).join().replace(`${forumData.prefix}_userInfo`, '');
293
+
289
294
  return "/profile?mode=viewprofile&u=" + character;
290
295
  },
291
296
  getLevel: async () => {
@@ -1 +1 @@
1
- const FNR = { execFn: e => { document.addEventListener("forumReady", e, !1) }, forum: { getColors: () => Object.values(forumColours).map(e => ({ name: e.code, hex: e.hex })), getTopics: async (e, t) => { const n = e => { const t = $(e).find(".topictitle"), n = $(e).children().last(); i.push({ name: t.text().trim(), url: Vue.filter("url-to-normal")(t.attr("href")), lastpost: { url: Vue.filter("url-to-normal")(n.children().last().attr("href")), date: n.text().split("por")[0].trim(), who: { name: n.find("strong a").length ? n.find("strong a").text().trim() : "Invitado", url: Vue.filter("url-to-normal")(n.find("strong a").length ? n.find("strong a").attr("href") : "/"), color: n.find("strong a").length ? n.find("strong a span").attr("style").split("color:")[1] : "initial" } }, forum: { name: $(e).find(".row2 + .row2:not(.centered) a").text().trim(), url: Vue.filter("url-to-normal")($(e).find(".row2 + .row2:not(.centered) a").attr("href")) } }) }, r = async a => { $.get(a, a => ($(a).find(".ipbform").find("tbody").find("tr").each(function () { i.length < t && -1 === e.indexOf(parseInt($(this).find(".row2 + .row2:not(.centered) a").attr("href").split("/f")[1].split("-")[0])) && n(this) }), i.length !== t && $(a).find(".pagination")[0].children.length && "b" !== $(a).find(".pagination").children().last()[0].localName ? r($(a).find(".pagination").children().last().attr("href")) : i)) }; await r("/latest?change_version=invision"); let i = []; return i }, getMembers: e => new Promise((t, n) => { let r = []; const i = (e, t) => ({ user: $(e).find(".membername span").text().trim(), id: $(e).find(".popupmenu .popupmenu-item a").attr("href").split("?")[0], img: $(e).find(".mini-avatar img").attr("src"), color: t }), a = t => { let n = []; return $(t).find(".member-list .member").each(function () { const t = FNR.utility.getGroup($(this).find(".membername span").attr("style").split("color:")[1]); e ? n.push(i(this, t)) : "unknown" !== t && t !== forumConfig.skinOptions.adminGroup && n.push(i(this, t)) }), n }, o = e => { $.get(e, e => { const n = $(e).find('.pagination img[alt="Siguiente"]').parent().attr("href") || !1; r = r.concat(a(e)), n ? o(n) : t(r.sort((e, t) => e.user < t.user ? -1 : e.user > t.user ? 1 : 0)) }) }; o("/memberlist?change_version=invision") }), getGroups: e => { const t = () => new Promise((e, t) => { $.get("/groups?change_version=invision", t => { let n = []; $(t).find(".group_list > li").each(function () { n.push({ id: parseInt($(this).find("a").attr("href").split("/g")[1].split("-")[0]), name: $(this).find("a").text().trim(), color: $(this).find("a").css("color"), url: Vue.filter("url-to-normal")($(this).find("a").attr("href")), count: parseInt($(this).find("div > span").text()) - 1 }) }), e(n) }) }), n = () => new Promise((n, r) => { FNR.cache.useData("groups", e).then(e => { n(e) }, e => { t().then(e => { FNR.cache.setData("groups", e), n(e) }) }) }); return n() }, getAffiliates: () => new Promise((e, t) => { const n = forumConfig.affiliatesMax, r = Object.entries(forumAffiliates).map(e => { let t = ""; e[1].forEach(e => { t += '<li><a href="' + e.url + '" title="' + e.title + '" target="_blank"><img src="' + e.img + '" alt="' + e.title + '"/></a></li>' }); for (let r = 0; r < n[e[0]] - e[1].length; r++)t += '<li><a href="/" title="' + forumData.name + '"><img src="' + forumDefaults.affiliates[e[0]] + '" alt="' + forumData.name + '"/></a></li>'; return t }); e({ normal: r[0], elite: r[1], directory: r[2], sister: r[3] }) }) }, content: { isAutosave: () => void 0 !== document.post && (-1 !== _userdata.user_id && "reply" === document.post.mode.value && void 0 !== document.post.t), post: { getPost: e => new Promise((t, n) => { $.get(Vue.filter("url-to-invision")(e), n => { const r = $(n).find("#p" + e.split("#")[1]); t({ author: { text: r.find(".author a").text(), color: r.find(".author a span").css("color"), url: Vue.filter("url-to-normal")(r.find(".author a").attr("href")) }, content: r.find(".post-entry > div").html(), date: r.find(".author").html().split("</a>")[1] }) }) }), genPost: (e, t) => new Promise((n, r) => { let i = document.createElement("iframe"); i.id = "forum-save", i.src = "/post?t=" + e + "&mode=reply&change_version=invision", i.width = 0, i.height = 0, i.onload = (() => { a.onload = (() => { $("#forum-save").remove(), console.clear(), n(!0) }), $("#forum-save").contents().find('.subtitle:contains("Mensaje")').next().find("textarea").val(t), $("#forum-save").contents().find('.formbuttonrow.center input[value="Enviar"]').click() }), document.querySelector("body").prepend(i); const a = document.getElementById("forum-save") }) }, topic: { getType: e => { const t = []; return e.indexOf("unread") > -1 ? t.push("is-unread") : t.push("is-read"), e.indexOf("locked") > -1 ? t.push("is-closed") : e.indexOf("sticky") > 1 ? t.push("is-sticky") : e.indexOf("global_announce") > 1 ? t.push("is-global-announcement") : e.indexOf("announce") > 1 && t.push("is-announcement"), t }, genTopic: (e, t, n) => new Promise((r, i) => { let a = document.createElement("iframe"); a.id = "forum-save", a.src = "/post?f=" + e + "&mode=newtopic&change_version=invision", a.width = 0, a.height = 0, a.onload = (() => { o.onload = (() => { $("#forum-save").remove(), console.clear(), r(!0) }), $("#forum-save").contents().find('dl dt:contains("Título del tema")').parent().find("input").val(t), $("#forum-save").contents().find('.subtitle:contains("Mensaje")').next().find("textarea").val(n), $("#forum-save").contents().find('.formbuttonrow.center input[value="Enviar"]').click() }), document.querySelector("body").prepend(a); const o = document.getElementById("forum-save") }) } }, user: { getUrl: e => { let t = void 0 !== e ? encodeURIComponent(e).replace(/[!'()]/g, escape).replace(/\*/g, "%2A") : _userdata.user_id; return "/profile?mode=viewprofile&u=" + t }, getLevel: async () => { switch (_userdata.user_level) { case 2: return "mod"; case 1: return "admin"; case 0: return -1 == _userdata.user_id ? "guest" : "user" } }, getGroup: async () => { const e = await FNR.user.getLevel(); if ("guest" === e) return "unknown"; const { colour: t } = await FNR.user.getProfile(_userdata.user_id, .25); return t }, getProfile: (e, t) => { const n = null != e ? FNR.user.getUrl(e) : FNR.user.getUrl(), r = t || 5, i = e => e.find("a").length ? Vue.filter("url-to-normal")(e.find("a").attr("href")) : e.find("table").length ? e.find("table").html() : e.find("img").length ? e.find("img").attr("src") : e.find("textarea").length ? e.find("textarea").val() : e.find("span").length ? e.find("span").text().trim() : "-" === e.text().trim() ? "" : e.text(), a = () => new Promise((e, t) => { $.get(n + "&change_version=invision", t => { let r = {}; r.name = $(t).find(".maintitle h1 span").text(), r.lastvisit = $(t).find('dt:contains("Última visita")').parent().find("dd").text(), r.colour = FNR.utility.getGroup($(t).find(".maintitle h1 span").css("color").replace("rgb(", "rgb_").replace(/, /g, "_").replace(")", "")), r.avatar = $(t).find(".real_avatar img").attr("src"), r.links = { profile: "/u" + n.split("&u=")[1], mp: "/privmsg?mode=post&u=" + n.split("&u=")[1] }, r.messages = { public: parseInt($(t).find('span:contains("Mensajes")').parent().parent().find("dd > div").text()) || 0, private: parseInt($(t).find('dt:contains("Mensajes privados")').parent().find("dd").text()) || 0 }, r.fields = {}, $(t).find('dl[id^="field_id"]').each(function () { if ("" !== $(this).find("dt span").text()) { if ("Mensajes" === $(this).find("dt span").text()) return; r.fields[FNR.utility.genSlug($(this).find("dt span").text())] = { name: $(this).find("dt span").text(), content: i($(this).find("dd .field_uneditable")) } } }), $(t).find(".ipbform2 > dl").each(function () { if ($(this).find("dt span").length && "" !== $(this).find("dt span").text()) { if ("Mensajes" === $(this).find("dt span").text()) return; r.fields[FNR.utility.genSlug($(this).find("dt span").text())] = { name: $(this).find("dt span").text(), content: i($(this).find("dd")) } } }), r.fields.rango = { name: "Rango", content: $(t).find('dt:contains("Rango:")').parent().find("dd").text() }, e(r) }) }), o = e => { const t = `userInfo${e}`; return new Promise((e, n) => { FNR.cache.useData(t, r).then(t => { e(t) }, n => { a().then(n => { FNR.cache.setData(t, n), e(n) }) }) }) }; return o(e) }, changeAccount: async (e, t, n) => { try { return await fetch(e), await fetch("/login", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: `username=${encodeURIComponent(t)}&password=${encodeURIComponent(n)}&autologin=1&login=1` }), !0 } catch (e) { return console.error("Error inesperado", e), !1 } }, followed: { getPages: async () => { try { const e = await fetch("/search?search_id=watchsearch&change_version=invision"), t = await e.text(), n = document.createElement("html"); n.innerHTML = t; const r = n.querySelectorAll(".pagination a"); let i = []; if (r.length) { const e = r[r.length - 2], t = e.href.split(e.origin)[1], n = t.match(/[0-9]/g) || [], a = parseInt(n.join("")) || 0, o = r[1], l = o.href.split(o.origin)[1], s = l.match(/[0-9]/g) || [], c = parseInt(s.join("")) || 0, d = void 0 === a ? 0 : a / c; i = Array(d).fill(null).map((e, t) => `/search?search_id=watchsearch&start=${c * (t + 1)}&change_version=invision`) } return { items: 1 === n.querySelectorAll(".ipbtable tbody tr td").length ? 0 : n.querySelectorAll(".ipbtable tbody tr").length, pages: ["/search?search_id=watchsearch&change_version=invision", ...i] } } catch (e) { return console.error("Error inesperado", e), !1 } }, getFollowed: async e => { try { const t = await fetch(e), n = await t.text(), r = document.createElement("html"); return r.innerHTML = n, Array.from(r.querySelectorAll(".ipbtable tbody tr")).map(e => { const t = e.children; return { id: parseInt(t[7].children[0].value), name: t[1].querySelector(".topictitle").textContent.trim(), url: Vue.filter("url-to-normal")(t[1].querySelector(".topictitle").href), views: parseInt(t[5].textContent), replies: parseInt(t[3].textContent), type: FNR.content.topic.getType(t[0].querySelector("img").src).join(" ") } }) } catch (e) { return console.error("Error inesperado", e), !1 } }, delFollowed: async e => { try { return await fetch("/search?search_id=watchsearch", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: `confirm=confirm${e.map(e => `&mark${encodeURIComponent("[]")}2=${e}`)}` }), !0 } catch (e) { return console.error("Error inesperado", e), !1 } } }, drafts: { delDrafts: async (e, t) => { try { const n = "draft" === e ? "draft" : "topic_draft"; return await fetch(`/search?search_id=${e}search`, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: `confirm=confirm${t.map(e => `&delete_${n}${encodeURIComponent(`[${e}]`)}=on`)}` }), !0 } catch (e) { return console.error("Error inesperado", e), !1 } }, messages: { getPages: async () => { try { const e = await fetch("/search?search_id=draftsearch&change_version=invision"), t = await e.text(), n = document.createElement("html"); n.innerHTML = t; const r = n.querySelectorAll(".pagination a"); let i = []; if (r.length) { const e = r[r.length - 2], t = e.href.split(e.origin)[1], n = t.match(/[0-9]/g) || [], a = parseInt(n.join("")) || 0, o = r[1], l = o.href.split(o.origin)[1], s = l.match(/[0-9]/g) || [], c = parseInt(s.join("")) || 0, d = void 0 === a ? 0 : a / c; i = Array(d).fill(null).map((e, t) => `/search?search_id=draftsearch&start=${c * (t + 1)}&change_version=invision`) } return { items: 1 === n.querySelectorAll(".ipbtable tbody tr td").length ? 0 : n.querySelectorAll(".ipbtable tbody tr").length, pages: ["/search?search_id=draftsearch&change_version=invision", ...i] } } catch (e) { return console.error("Error inesperado", e), !1 } }, getDrafts: async e => { try { const t = await fetch(e), n = await t.text(), r = document.createElement("html"); return r.innerHTML = n, Array.from(r.querySelectorAll(".ipbtable tbody tr")).map(e => { const t = e.children; return { topic: { name: t[1].textContent.trim(), url: Vue.filter("url-to-normal")(t[1].querySelector("a").href) }, info: { location: t[2].textContent.trim(), date: t[3].textContent.trim() }, modify: Vue.filter("url-to-normal")(t[4].querySelector("a").href) } }) } catch (e) { return console.error("Error inesperado", e), !1 } } }, topics: { getPages: async () => { try { const e = await fetch("/search?search_id=topicdraftsearch&change_version=invision"), t = await e.text(), n = document.createElement("html"); n.innerHTML = t; const r = n.querySelectorAll(".pagination a"); let i = []; if (r.length) { const e = r[r.length - 2], t = e.href.split(e.origin)[1], n = t.match(/[0-9]/g) || [], a = parseInt(n.join("")) || 0, o = r[1], l = o.href.split(o.origin)[1], s = l.match(/[0-9]/g) || [], c = parseInt(s.join("")) || 0, d = void 0 === a ? 0 : a / c; i = Array(d).fill(null).map((e, t) => `/search?search_id=topicdraftsearch&start=${c * (t + 1)}&change_version=invision`) } return { items: 1 === n.querySelectorAll(".ipbtable tbody tr td").length ? 0 : n.querySelectorAll(".ipbtable tbody tr").length, pages: ["/search?search_id=topicdraftsearch&change_version=invision", ...i] } } catch (e) { return console.error("Error inesperado", e), !1 } }, getDrafts: async e => { try { const t = await fetch(e), n = await t.text(), r = document.createElement("html"); return r.innerHTML = n, Array.from(r.querySelectorAll(".ipbtable tbody tr")).map(e => { const t = e.children; return { topic: { name: t[0].textContent.trim(), url: Vue.filter("url-to-normal")(t[0].querySelector("a").href) }, info: { location: t[1].textContent.trim(), date: t[2].textContent.trim() }, modify: Vue.filter("url-to-normal")(t[3].querySelector("a").href) } }) } catch (e) { return console.error("Error inesperado", e), !1 } } } }, profile: { getData: e => new Promise((t, n) => { $.get("/profile?change_version=invision&mode=editprofile", n => { const r = n; $.get("/profile?change_version=invision&mode=editprofile&page_profil=avatars", n => { const i = n; let a = [];[].forEach.call(e, e => { let t = "", n = []; switch (e.type) { case "input": t = $(r).find('dl:contains("' + e.name + '")').find("dd").find("input").val(); break; case "textarea": t = $(r).find('dl:contains("' + e.name + '")').find("dd").find("textarea").val(); break; case "select": t = $(r).find('dl:contains("' + e.name + '")').find("dd").find("select option:selected").attr("value"), $(r).find('dl:contains("' + e.name + '")').find("dd").find("select option").each(function () { "" !== $(this).attr("value") && n.push({ name: $(this).text(), value: $(this).attr("value") }) }); break; case "avatar": t = $(i).find(".box-content img").attr("src") }if ("select" === e.type && void 0 === t || "select" === e.type && "" === t) return; let o = { type: e.type, name: e.name, value: t }; e.validation && (o.validation = e.validation), n.length && (o.options = n), a.push(o) }), t(a) }) }) }), setData: e => new Promise((t, n) => { const r = () => { $("#forum-save").remove(), console.clear(), t(!0) }; let i = document.createElement("iframe"); i.id = "forum-save", i.src = "/profile?change_version=invision&mode=editprofile", i.width = 0, i.height = 0, i.onload = (() => { let t = !1;[].forEach.call(e, e => { switch (e.type) { case "input": $("#forum-save").contents().find('dl:contains("' + e.name + '")').find("dd").find("input").first().val(e.value); break; case "textarea": $("#forum-save").contents().find('dl:contains("' + e.name + '")').find("dd").find("textarea").val(e.value); break; case "select": $("#forum-save").contents().find('dl:contains("' + e.name + '")').find("dd").find('select option[value="' + e.value + '"]').attr("selected", "selected"); break; case "avatar": t = e.value } }), a.onload = (() => { t ? (a.onload = (() => { a.onload = (() => { r() }), $("#forum-save").contents().find('input[name="avatarremoteurl"]').val(t), $("#forum-save").contents().find('input[type="submit"][value="Registrar"]').click() }), a.src = "/profile?change_version=invision&mode=editprofile&page_profil=avatars") : r() }), $("#forum-save").contents().find('input[type="submit"][value="Registrar"]').click() }), document.querySelector("body").prepend(i); const a = document.getElementById("forum-save") }) } }, cache: { getData: e => null !== localStorage.getItem(forumData.prefix + "_" + e) && JSON.parse(localStorage.getItem(forumData.prefix + "_" + e)).content, setData: (e, t, n) => { let r = -1 === n ? "undefined" : (new Date).getTime(); localStorage.setItem(forumData.prefix + "_" + e, JSON.stringify({ cached_at: r, content: t })) }, delData: e => null !== localStorage.getItem(forumData.prefix + "_" + e) && localStorage.removeItem(forumData.prefix + "_" + e), useData: async (e, t) => { const n = localStorage.getItem(forumData.prefix + "_" + e), r = new Date, i = -1 == t ? "undefined" : 864e5 * t; return null != n && -1 == t || null != n && parseInt(JSON.parse(n).cached_at) + i > r.getTime() ? JSON.parse(n).content : Promise.reject(!1) } }, utility: { genSlug: (e, t) => { const n = e => { const t = "àáäâèéëêìíïîòóöôùúüûñç·/_,:;"; e = e.trim().toLowerCase(); for (var n = 0, r = t.length; n < r; n++)e = e.replace(new RegExp(t.charAt(n), "g"), "aaaaeeeeiiiioooouuuunc------".charAt(n)); return e.replace(/[^a-z0-9 -]/g, "").replace(/\s+/g, "-").replace(/-+/g, "-") }, r = t || "_"; return n(e).replace(/-/g, r) }, genArray: e => JSON.parse(e.replace(/`/g, '"')), genValidation: e => { let t = ""; return [].forEach.call(e, e => { switch (e.validation) { case "hex": e.value.match(/^#[a-f0-9]{6}$/i) || (t += "<li>El campo de " + e.name.toLowerCase() + " debe incluir un código de color hexadecimal.</li>"); break; case "img": e.value.match(/(jpg|jpeg|png)$/i) || (t += "<li>El campo de " + e.name.toLowerCase() + " debe ser el enlace a una imagen (formato png, jpg o jpeg).</li>") } }), t }, getGroup: e => { const t = e => { let t = "unknown"; return Object.values(forumColours).map(n => { n.hex === e.toLowerCase() && (t = FNR.utility.genSlug(n.code)) }), t }, n = e => { let t = "unknown"; return Object.values(forumColours).map(n => { n.id === e && (t = FNR.utility.genSlug(n.code)) }), t }; return void 0 === e ? "unknown" : e.indexOf("#") > -1 ? t(e) : e.indexOf("id_") > -1 ? n(parseFloat(e.split("_")[1])) : void 0 === forumColours[e] ? "unknown" : FNR.utility.genSlug(forumColours[e].code) } }, html: { genModal: (e, t, n) => { if ("" === e || null == e) return; if ("" === t || null == t) return; let r = document.createElement("div"); r.id = "forum-modal", document.body.appendChild(r); let i = ""; i += '<div id="' + FNR.utility.genSlug(e, "-") + '" class="modal-element">', i += '<div class="modal-title">', i += "<h3>" + e + "</h3>", i += '<a onclick="document.querySelector(`#forum-modal`).remove()">', i += '<i class="fas fa-times"></i>', i += "</a>", i += "</div>", i += '<div class="modal-content">', i += '<div class="is-content">', i += t.replace(/\n/g, "<br>"), i += "</div>", "" !== n && null != n && (i += '<div class="modal-buttons">', i += n, i += "</div>"), i += "</div>", i += "</div>", i += '<div class="is-bgmodal bg-active" onclick="document.querySelector(`#forum-modal`).remove()"></div>', document.getElementById("forum-modal").innerHTML = i }, genPrompt: (e, t, n, r) => { if ("" !== e && null != e && "" !== t && null != t) return new Promise((i, a) => { FNR.html.genModal(e, "<p>" + t + '</p><p><input id="modal-prompt" type="text" placeholder="' + n + '" value="' + r + '"></p>', '<button id="modal-button-enter" class="button1 btn-main">Confirmar</button><button id="modal-button-cancel" class="button1">Cancelar</button>'), document.querySelector("#modal-button-enter").onclick = (() => { const e = document.querySelector("#modal-prompt").value; i("" !== e && e), document.getElementById("forum-modal").remove() }), document.querySelector("#modal-button-cancel").onclick = (() => { a(!1), document.getElementById("forum-modal").remove() }), document.querySelector(".modal-title a").onclick = (() => { a(!1), document.getElementById("forum-modal").remove() }), document.querySelector(".is-bgmodal.bg-active").onclick = (() => { a(!1), document.getElementById("forum-modal").remove() }) }) }, genNotification: (e, t, n, r) => { if ("" === e || null == e) return; if ("" === t || null == t) return; if (t.length > 50) return; if ("" === n || null == n) return; document.querySelectorAll("forum-notification").length && (document.getElementById("forum-notification").remove(), clearTimeout()); let i = document.createElement("div"); i.id = "forum-notification", document.body.appendChild(i); let a = ""; a += "" === r || null == r ? '<div id="' + FNR.utility.genSlug(e, "-") + '" class="notification-element" onclick="document.querySelector(`#forum-notification`).classList.remove(`notification-show`)" >' : '<a href="' + r + '" target="_blank" id="' + FNR.utility.genSlug(e, "-") + '" class="notification-element" onclick="document.querySelector(`#forum-notification`).classList.remove(`notification-show`)" >', a += '<div class="notification-icon">', a += '<i class="' + n + '"></i>', a += "</div>", a += '<div class="notification-content">', a += "<h3>" + e + "</h3>", a += "<p>" + t + "</p>", a += "</div>", a += '<div class="notification-controls">', a += '<i class="fas fa-times"></i>', a += "</div>", a += "" === r || null == r ? "</div>" : "</a>", document.getElementById("forum-notification").innerHTML = a, setTimeout(() => { document.getElementById("forum-notification").classList.add("notification-show") }, 250), setTimeout(() => { document.getElementById("forum-notification").classList.remove("notification-show") }, 8e3), setTimeout(() => { document.getElementById("forum-notification").remove() }, 1e4) } }, behaviour: { genWiki: () => { document.querySelector(".wiki-cascade") && [].forEach.call(document.getElementsByClassName("wiki-cascade"), e => { e.onclick = (() => { const t = e.parentElement.parentElement; t.classList.contains("is-active") ? t.classList.remove("is-active") : t.classList.add("is-active") }) }), document.querySelector(".wiki-controls .router-link-active") && [].forEach.call(document.querySelectorAll(".wiki-controls .router-link-active"), e => { if (!e.parentElement.parentElement.parentElement.parentElement.parentElement.classList.contains("wiki-index")) { const t = (e, n) => { let r = e.parentElement.parentElement; n && (r = r.parentElement.parentElement), r.classList.add("is-active"), r.classList.add("is-selected"), r.parentElement.parentElement.parentElement.classList.contains("wiki-index") || t(r, !1) }; t(e, !0) } }), document.querySelector("aside.wiki-index > .select-container > select") && (document.querySelector("aside.wiki-index > .select-container > select").onchange = (() => { router.push(document.querySelector("aside.wiki-index > .select-container > select").value) })) }, genDropeable: () => { document.querySelector(".is-dropeable") && [].forEach.call(document.getElementsByClassName("is-dropeable"), e => { e.onclick = (() => { e.classList.contains("is-active") ? e.classList.remove("is-active") : ([].forEach.call(document.getElementsByClassName("is-dropeable"), e => { e.classList.remove("is-active") }), e.classList.add("is-active")) }) }) }, genControls: () => { document.querySelector(".forum-controls") && [].forEach.call(document.querySelectorAll(".forum-controls"), e => { let t = 0;[].forEach.call(e.children, e => { "none" !== window.getComputedStyle(e, null).display && (t += e.children.length) }), 0 === t && !1 === e.classList.contains("not-show") && e.classList.add("not-show") }) }, genDebounce: (e, t = 750) => { let n; return (...r) => { clearTimeout(n), n = setTimeout(() => { e.apply(this, r) }, t) } } } };
1
+ const FNR={execFn:e=>{document.addEventListener("forumReady",e,!1)},forum:{getColors:()=>Object.values(forumColours).map(e=>({name:e.code,hex:e.hex})),getTopics:async(e,t)=>{const n=e=>{const t=$(e).find(".topictitle"),n=$(e).children().last();o.push({name:t.text().trim(),url:Vue.filter("url-to-normal")(t.attr("href")),lastpost:{url:Vue.filter("url-to-normal")(n.children().last().attr("href")),date:n.text().split("por")[0].trim(),who:{name:n.find("strong a").length?n.find("strong a").text().trim():"Invitado",url:Vue.filter("url-to-normal")(n.find("strong a").length?n.find("strong a").attr("href"):"/"),color:n.find("strong a").length?n.find("strong a span").attr("style").split("color:")[1]:"initial"}},forum:{name:$(e).find(".row2 + .row2:not(.centered) a").text().trim(),url:Vue.filter("url-to-normal")($(e).find(".row2 + .row2:not(.centered) a").attr("href"))}})},r=async i=>{$.get(i,i=>($(i).find(".ipbform").find("tbody").find("tr").each(function(){o.length<t&&-1===e.indexOf(parseInt($(this).find(".row2 + .row2:not(.centered) a").attr("href").split("/f")[1].split("-")[0]))&&n(this)}),o.length!==t&&$(i).find(".pagination")[0].children.length&&"b"!==$(i).find(".pagination").children().last()[0].localName?r($(i).find(".pagination").children().last().attr("href")):o))};await r("/latest?change_version=invision");let o=[];return o},getMembers:e=>new Promise((t,n)=>{let r=[];const o=(e,t)=>({user:$(e).find(".membername span").text().trim(),id:$(e).find(".popupmenu .popupmenu-item a").attr("href").split("?")[0],img:$(e).find(".mini-avatar img").attr("src"),color:t}),i=t=>{let n=[];return $(t).find(".member-list .member").each(function(){const t=FNR.utility.getGroup($(this).find(".membername span").attr("style").split("color:")[1]);e?n.push(o(this,t)):"unknown"!==t&&t!==forumConfig.skinOptions.adminGroup&&n.push(o(this,t))}),n},a=e=>{$.get(e,e=>{const n=$(e).find('.pagination img[alt="Siguiente"]').parent().attr("href")||!1;r=r.concat(i(e)),n?a(n):t(r.sort((e,t)=>e.user<t.user?-1:e.user>t.user?1:0))})};a("/memberlist?change_version=invision")}),getGroups:e=>{const t=()=>new Promise((e,t)=>{$.get("/groups?change_version=invision",t=>{let n=[];$(t).find(".group_list > li").each(function(){n.push({id:parseInt($(this).find("a").attr("href").split("/g")[1].split("-")[0]),name:$(this).find("a").text().trim(),color:$(this).find("a").css("color"),url:Vue.filter("url-to-normal")($(this).find("a").attr("href")),count:parseInt($(this).find("div > span").text())-1})}),e(n)})}),n=()=>new Promise((n,r)=>{FNR.cache.useData("groups",e).then(e=>{n(e)},e=>{t().then(e=>{FNR.cache.setData("groups",e),n(e)})})});return n()},getAffiliates:()=>new Promise((e,t)=>{const n=forumConfig.affiliatesMax,r=Object.entries(forumAffiliates).map(e=>{let t="";e[1].forEach(e=>{t+='<li><a href="'+e.url+'" title="'+e.title+'" target="_blank"><img src="'+e.img+'" alt="'+e.title+'"/></a></li>'});for(let r=0;r<n[e[0]]-e[1].length;r++)t+='<li><a href="/" title="'+forumData.name+'"><img src="'+forumDefaults.affiliates[e[0]]+'" alt="'+forumData.name+'"/></a></li>';return t});e({normal:r[0],elite:r[1],directory:r[2],sister:r[3]})})},content:{isAutosave:()=>void 0!==document.post&&(-1!==_userdata.user_id&&"reply"===document.post.mode.value&&void 0!==document.post.t),post:{getPost:e=>new Promise((t,n)=>{$.get(Vue.filter("url-to-invision")(e),n=>{const r=$(n).find("#p"+e.split("#")[1]);t({author:{text:r.find(".author a").text(),color:r.find(".author a span").css("color"),url:Vue.filter("url-to-normal")(r.find(".author a").attr("href"))},content:r.find(".post-entry > div").html(),date:r.find(".author").html().split("</a>")[1]})})}),genPost:(e,t)=>new Promise((n,r)=>{let o=document.createElement("iframe");o.id="forum-save",o.src="/post?t="+e+"&mode=reply&change_version=invision",o.width=0,o.height=0,o.onload=(()=>{i.onload=(()=>{$("#forum-save").remove(),console.clear(),n(!0)}),$("#forum-save").contents().find('.subtitle:contains("Mensaje")').next().find("textarea").val(t),$("#forum-save").contents().find('.formbuttonrow.center input[value="Enviar"]').click()}),document.querySelector("body").prepend(o);const i=document.querySelector("#forum-save")})},topic:{getType:e=>{const t=[];return e.indexOf("unread")>-1?t.push("is-unread"):t.push("is-read"),e.indexOf("locked")>-1?t.push("is-closed"):e.indexOf("sticky")>1?t.push("is-sticky"):e.indexOf("global_announce")>1?t.push("is-global-announcement"):e.indexOf("announce")>1&&t.push("is-announcement"),t},genTopic:(e,t,n)=>new Promise((r,o)=>{let i=document.createElement("iframe");i.id="forum-save",i.src="/post?f="+e+"&mode=newtopic&change_version=invision",i.width=0,i.height=0,i.onload=(()=>{a.onload=(()=>{$("#forum-save").remove(),console.clear(),r(!0)}),$("#forum-save").contents().find('dl dt:contains("Título del tema")').parent().find("input").val(t),$("#forum-save").contents().find('.subtitle:contains("Mensaje")').next().find("textarea").val(n),$("#forum-save").contents().find('.formbuttonrow.center input[value="Enviar"]').click()}),document.querySelector("body").prepend(i);const a=document.querySelector("#forum-save")})}},user:{getUrl:e=>{let t=void 0!==e?Object.keys(window.localStorage).filter(t=>t.indexOf("userInfo")>-1&&window.localStorage[t].indexOf(`"name":"${e}"`)>-1).join().replace(`${forumData.prefix}_userInfo`,""):_userdata.user_id;return 0===t.length&&(t=encodeURIComponent(e).replace(/[!'()]/g,escape).replace(/\*/g,"%2A")),Object.keys(window.localStorage).filter(t=>t.indexOf("userInfo")>-1&&window.localStorage[t].indexOf(`"name":"${e}"`)>-1).join().replace(`${forumData.prefix}_userInfo`,""),"/profile?mode=viewprofile&u="+t},getLevel:async()=>{switch(_userdata.user_level){case 2:return"mod";case 1:return"admin";case 0:return-1==_userdata.user_id?"guest":"user"}},getGroup:async()=>{const e=await FNR.user.getLevel();if("guest"===e)return"unknown";const{colour:t}=await FNR.user.getProfile(_userdata.user_id,.25);return t},getProfile:(e,t)=>{const n=null!=e?FNR.user.getUrl(e):FNR.user.getUrl(),r=t||5,o=e=>e.find("a").length?Vue.filter("url-to-normal")(e.find("a").attr("href")):e.find("table").length?e.find("table").html():e.find("img").length?e.find("img").attr("src"):e.find("textarea").length?e.find("textarea").val():e.find("span").length?e.find("span").text().trim():"-"===e.text().trim()?"":e.text(),i=()=>new Promise((e,t)=>{$.get(n+"&change_version=invision",t=>{let r={};r.name=$(t).find(".maintitle h1 span").text(),r.lastvisit=$(t).find('dt:contains("Última visita")').parent().find("dd").text(),r.colour=FNR.utility.getGroup($(t).find(".maintitle h1 span").css("color").replace("rgb(","rgb_").replace(/, /g,"_").replace(")","")),r.avatar=$(t).find(".real_avatar img").attr("src"),r.links={profile:"/u"+n.split("&u=")[1],mp:"/privmsg?mode=post&u="+n.split("&u=")[1]},r.messages={public:parseInt($(t).find('span:contains("Mensajes")').parent().parent().find("dd > div").text())||0,private:parseInt($(t).find('dt:contains("Mensajes privados")').parent().find("dd").text())||0},r.fields={},$(t).find('dl[id^="field_id"]').each(function(){if(""!==$(this).find("dt span").text()){if("Mensajes"===$(this).find("dt span").text())return;r.fields[FNR.utility.genSlug($(this).find("dt span").text())]={name:$(this).find("dt span").text(),content:o($(this).find("dd .field_uneditable"))}}}),$(t).find(".ipbform2 > dl").each(function(){if($(this).find("dt span").length&&""!==$(this).find("dt span").text()){if("Mensajes"===$(this).find("dt span").text())return;r.fields[FNR.utility.genSlug($(this).find("dt span").text())]={name:$(this).find("dt span").text(),content:o($(this).find("dd"))}}}),r.fields.rango={name:"Rango",content:$(t).find('dt:contains("Rango:")').parent().find("dd").text()},e(r)})}),a=e=>{const t=`userInfo${e}`;return new Promise((e,n)=>{FNR.cache.useData(t,r).then(t=>{e(t)},n=>{i().then(n=>{FNR.cache.setData(t,n),e(n)})})})};return a(e)},changeAccount:async(e,t,n)=>{try{return await fetch(e),await fetch("/login",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:`username=${encodeURIComponent(t)}&password=${encodeURIComponent(n)}&autologin=1&login=1`}),!0}catch(e){return console.error("Error inesperado",e),!1}},followed:{getPages:async()=>{try{const e=await fetch("/search?search_id=watchsearch&change_version=invision"),t=await e.text(),n=document.createElement("html");n.innerHTML=t;const r=n.querySelectorAll(".pagination a");let o=[];if(r.length){const e=r[r.length-2],t=e.href.split(e.origin)[1],n=t.match(/[0-9]/g)||[],i=parseInt(n.join(""))||0,a=r[1],l=a.href.split(a.origin)[1],s=l.match(/[0-9]/g)||[],c=parseInt(s.join(""))||0,d=void 0===i?0:i/c;o=Array(d).fill(null).map((e,t)=>`/search?search_id=watchsearch&start=${c*(t+1)}&change_version=invision`)}return{items:1===n.querySelectorAll(".ipbtable tbody tr td").length?0:n.querySelectorAll(".ipbtable tbody tr").length,pages:["/search?search_id=watchsearch&change_version=invision",...o]}}catch(e){return console.error("Error inesperado",e),!1}},getFollowed:async e=>{try{const t=await fetch(e),n=await t.text(),r=document.createElement("html");return r.innerHTML=n,Array.from(r.querySelectorAll(".ipbtable tbody tr")).map(e=>{const t=e.children;return{id:parseInt(t[7].children[0].value),name:t[1].querySelector(".topictitle").textContent.trim(),url:Vue.filter("url-to-normal")(t[1].querySelector(".topictitle").href),views:parseInt(t[5].textContent),replies:parseInt(t[3].textContent),type:FNR.content.topic.getType(t[0].querySelector("img").src).join(" ")}})}catch(e){return console.error("Error inesperado",e),!1}},delFollowed:async e=>{try{return await fetch("/search?search_id=watchsearch",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:`confirm=confirm${e.map(e=>`&mark${encodeURIComponent("[]")}2=${e}`)}`}),!0}catch(e){return console.error("Error inesperado",e),!1}}},drafts:{delDrafts:async(e,t)=>{try{const n="draft"===e?"draft":"topic_draft";return await fetch(`/search?search_id=${e}search`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:`confirm=confirm${t.map(e=>`&delete_${n}${encodeURIComponent(`[${e}]`)}=on`)}`}),!0}catch(e){return console.error("Error inesperado",e),!1}},messages:{getPages:async()=>{try{const e=await fetch("/search?search_id=draftsearch&change_version=invision"),t=await e.text(),n=document.createElement("html");n.innerHTML=t;const r=n.querySelectorAll(".pagination a");let o=[];if(r.length){const e=r[r.length-2],t=e.href.split(e.origin)[1],n=t.match(/[0-9]/g)||[],i=parseInt(n.join(""))||0,a=r[1],l=a.href.split(a.origin)[1],s=l.match(/[0-9]/g)||[],c=parseInt(s.join(""))||0,d=void 0===i?0:i/c;o=Array(d).fill(null).map((e,t)=>`/search?search_id=draftsearch&start=${c*(t+1)}&change_version=invision`)}return{items:1===n.querySelectorAll(".ipbtable tbody tr td").length?0:n.querySelectorAll(".ipbtable tbody tr").length,pages:["/search?search_id=draftsearch&change_version=invision",...o]}}catch(e){return console.error("Error inesperado",e),!1}},getDrafts:async e=>{try{const t=await fetch(e),n=await t.text(),r=document.createElement("html");return r.innerHTML=n,Array.from(r.querySelectorAll(".ipbtable tbody tr")).map(e=>{const t=e.children;return{topic:{name:t[1].textContent.trim(),url:Vue.filter("url-to-normal")(t[1].querySelector("a").href)},info:{location:t[2].textContent.trim(),date:t[3].textContent.trim()},modify:Vue.filter("url-to-normal")(t[4].querySelector("a").href)}})}catch(e){return console.error("Error inesperado",e),!1}}},topics:{getPages:async()=>{try{const e=await fetch("/search?search_id=topicdraftsearch&change_version=invision"),t=await e.text(),n=document.createElement("html");n.innerHTML=t;const r=n.querySelectorAll(".pagination a");let o=[];if(r.length){const e=r[r.length-2],t=e.href.split(e.origin)[1],n=t.match(/[0-9]/g)||[],i=parseInt(n.join(""))||0,a=r[1],l=a.href.split(a.origin)[1],s=l.match(/[0-9]/g)||[],c=parseInt(s.join(""))||0,d=void 0===i?0:i/c;o=Array(d).fill(null).map((e,t)=>`/search?search_id=topicdraftsearch&start=${c*(t+1)}&change_version=invision`)}return{items:1===n.querySelectorAll(".ipbtable tbody tr td").length?0:n.querySelectorAll(".ipbtable tbody tr").length,pages:["/search?search_id=topicdraftsearch&change_version=invision",...o]}}catch(e){return console.error("Error inesperado",e),!1}},getDrafts:async e=>{try{const t=await fetch(e),n=await t.text(),r=document.createElement("html");return r.innerHTML=n,Array.from(r.querySelectorAll(".ipbtable tbody tr")).map(e=>{const t=e.children;return{topic:{name:t[0].textContent.trim(),url:Vue.filter("url-to-normal")(t[0].querySelector("a").href)},info:{location:t[1].textContent.trim(),date:t[2].textContent.trim()},modify:Vue.filter("url-to-normal")(t[3].querySelector("a").href)}})}catch(e){return console.error("Error inesperado",e),!1}}}},profile:{getData:e=>new Promise((t,n)=>{$.get("/profile?change_version=invision&mode=editprofile",n=>{const r=n;$.get("/profile?change_version=invision&mode=editprofile&page_profil=avatars",n=>{const o=n;let i=[];[].forEach.call(e,e=>{let t="",n=[];switch(e.type){case"input":t=$(r).find('dl:contains("'+e.name+'")').find("dd").find("input").val();break;case"textarea":t=$(r).find('dl:contains("'+e.name+'")').find("dd").find("textarea").val();break;case"select":t=$(r).find('dl:contains("'+e.name+'")').find("dd").find("select option:selected").attr("value"),$(r).find('dl:contains("'+e.name+'")').find("dd").find("select option").each(function(){""!==$(this).attr("value")&&n.push({name:$(this).text(),value:$(this).attr("value")})});break;case"avatar":t=$(o).find(".box-content img").attr("src")}if("select"===e.type&&void 0===t||"select"===e.type&&""===t)return;let a={type:e.type,name:e.name,value:t};e.validation&&(a.validation=e.validation),n.length&&(a.options=n),i.push(a)}),t(i)})})}),setData:e=>new Promise((t,n)=>{const r=()=>{$("#forum-save").remove(),console.clear(),t(!0)};let o=document.createElement("iframe");o.id="forum-save",o.src="/profile?change_version=invision&mode=editprofile",o.width=0,o.height=0,o.onload=(()=>{let t=!1;[].forEach.call(e,e=>{switch(e.type){case"input":$("#forum-save").contents().find('dl:contains("'+e.name+'")').find("dd").find("input").first().val(e.value);break;case"textarea":$("#forum-save").contents().find('dl:contains("'+e.name+'")').find("dd").find("textarea").val(e.value);break;case"select":$("#forum-save").contents().find('dl:contains("'+e.name+'")').find("dd").find('select option[value="'+e.value+'"]').attr("selected","selected");break;case"avatar":t=e.value}}),i.onload=(()=>{t?(i.onload=(()=>{i.onload=(()=>{r()}),$("#forum-save").contents().find('input[name="avatarremoteurl"]').val(t),$("#forum-save").contents().find('input[type="submit"][value="Registrar"]').click()}),i.src="/profile?change_version=invision&mode=editprofile&page_profil=avatars"):r()}),$("#forum-save").contents().find('input[type="submit"][value="Registrar"]').click()}),document.querySelector("body").prepend(o);const i=document.querySelector("#forum-save")})}},cache:{getData:e=>null!==localStorage.getItem(forumData.prefix+"_"+e)&&JSON.parse(localStorage.getItem(forumData.prefix+"_"+e)).content,setData:(e,t,n)=>{let r=-1===n?"undefined":(new Date).getTime();localStorage.setItem(forumData.prefix+"_"+e,JSON.stringify({cached_at:r,content:t}))},delData:e=>null!==localStorage.getItem(forumData.prefix+"_"+e)&&localStorage.removeItem(forumData.prefix+"_"+e),useData:async(e,t)=>{const n=localStorage.getItem(forumData.prefix+"_"+e),r=new Date,o=-1==t?"undefined":864e5*t;return null!=n&&-1==t||null!=n&&parseInt(JSON.parse(n).cached_at)+o>r.getTime()?JSON.parse(n).content:Promise.reject(!1)}},utility:{genSlug:(e,t)=>{const n=e=>{const t="àáäâèéëêìíïîòóöôùúüûñç·/_,:;";e=e.trim().toLowerCase();for(var n=0,r=t.length;n<r;n++)e=e.replace(new RegExp(t.charAt(n),"g"),"aaaaeeeeiiiioooouuuunc------".charAt(n));return e.replace(/[^a-z0-9 -]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-")},r=t||"_";return n(e).replace(/-/g,r)},genArray:e=>JSON.parse(e.replace(/`/g,'"')),genValidation:e=>{let t="";return[].forEach.call(e,e=>{switch(e.validation){case"hex":e.value.match(/^#[a-f0-9]{6}$/i)||(t+="<li>El campo de "+e.name.toLowerCase()+" debe incluir un código de color hexadecimal.</li>");break;case"img":e.value.match(/(jpg|jpeg|png)$/i)||(t+="<li>El campo de "+e.name.toLowerCase()+" debe ser el enlace a una imagen (formato png, jpg o jpeg).</li>")}}),t},getGroup:e=>{const t=e=>{let t="unknown";return Object.values(forumColours).map(n=>{n.hex===e.toLowerCase()&&(t=FNR.utility.genSlug(n.code))}),t},n=e=>{let t="unknown";return Object.values(forumColours).map(n=>{n.id===e&&(t=FNR.utility.genSlug(n.code))}),t};return void 0===e?"unknown":e.indexOf("#")>-1?t(e):e.indexOf("id_")>-1?n(parseFloat(e.split("_")[1])):void 0===forumColours[e]?"unknown":FNR.utility.genSlug(forumColours[e].code)}},html:{genModal:(e,t,n)=>{if(""===e||null==e)return;if(""===t||null==t)return;let r=document.createElement("div");r.id="forum-modal",document.body.appendChild(r);let o="";o+='<div id="'+FNR.utility.genSlug(e,"-")+'" class="modal-element">',o+='<div class="modal-title">',o+="<h3>"+e+"</h3>",o+='<a onclick="document.querySelector(`#forum-modal`).remove()">',o+='<i class="fas fa-times"></i>',o+="</a>",o+="</div>",o+='<div class="modal-content">',o+='<div class="is-content">',o+=t.replace(/\n/g,"<br>"),o+="</div>",""!==n&&null!=n&&(o+='<div class="modal-buttons">',o+=n,o+="</div>"),o+="</div>",o+="</div>",o+='<div class="is-bgmodal bg-active" onclick="document.querySelector(`#forum-modal`).remove()"></div>',document.querySelector("#forum-modal").innerHTML=o},genPrompt:(e,t,n,r)=>{if(""!==e&&null!=e&&""!==t&&null!=t)return new Promise((o,i)=>{FNR.html.genModal(e,"<p>"+t+'</p><p><input id="modal-prompt" type="text" placeholder="'+n+'" value="'+r+'"></p>','<button id="modal-button-enter" class="button1 btn-main">Confirmar</button><button id="modal-button-cancel" class="button1">Cancelar</button>'),document.querySelector("#modal-button-enter").onclick=(()=>{const e=document.querySelector("#modal-prompt").value;o(""!==e&&e),document.querySelector("#forum-modal").remove()}),document.querySelector("#modal-button-cancel").onclick=(()=>{i(!1),document.querySelector("#forum-modal").remove()}),document.querySelector(".modal-title a").onclick=(()=>{i(!1),document.querySelector("#forum-modal").remove()}),document.querySelector(".is-bgmodal.bg-active").onclick=(()=>{i(!1),document.querySelector("#forum-modal").remove()})})},genNotification:(e,t,n,r)=>{if(""===e||null==e)return;if(""===t||null==t)return;if(t.length>50)return;if(""===n||null==n)return;document.querySelectorAll("forum-notification").length&&(document.querySelector("#forum-notification").remove(),clearTimeout());let o=document.createElement("div");o.id="forum-notification",document.body.appendChild(o);let i="";i+=""===r||null==r?'<div id="'+FNR.utility.genSlug(e,"-")+'" class="notification-element" onclick="document.querySelector(`#forum-notification`).classList.remove(`notification-show`)" >':'<a href="'+r+'" target="_blank" id="'+FNR.utility.genSlug(e,"-")+'" class="notification-element" onclick="document.querySelector(`#forum-notification`).classList.remove(`notification-show`)" >',i+='<div class="notification-icon">',i+='<i class="'+n+'"></i>',i+="</div>",i+='<div class="notification-content">',i+="<h3>"+e+"</h3>",i+="<p>"+t+"</p>",i+="</div>",i+='<div class="notification-controls">',i+='<i class="fas fa-times"></i>',i+="</div>",i+=""===r||null==r?"</div>":"</a>",document.querySelector("#forum-notification").innerHTML=i,setTimeout(()=>{document.querySelector("#forum-notification").classList.add("notification-show")},250),setTimeout(()=>{document.querySelector("#forum-notification").classList.remove("notification-show")},8e3),setTimeout(()=>{document.querySelector("#forum-notification").remove()},1e4)}},behaviour:{genWiki:()=>{document.querySelector(".wiki-cascade")&&[].forEach.call(document.getElementsByClassName("wiki-cascade"),e=>{e.onclick=(()=>{const t=e.parentElement.parentElement;t.classList.contains("is-active")?t.classList.remove("is-active"):t.classList.add("is-active")})}),document.querySelector(".wiki-controls .router-link-active")&&[].forEach.call(document.querySelectorAll(".wiki-controls .router-link-active"),e=>{if(!e.parentElement.parentElement.parentElement.parentElement.parentElement.classList.contains("wiki-index")){const t=(e,n)=>{let r=e.parentElement.parentElement;n&&(r=r.parentElement.parentElement),r.classList.add("is-active"),r.classList.add("is-selected"),r.parentElement.parentElement.parentElement.classList.contains("wiki-index")||t(r,!1)};t(e,!0)}}),document.querySelector("aside.wiki-index > .select-container > select")&&(document.querySelector("aside.wiki-index > .select-container > select").onchange=(()=>{router.push(document.querySelector("aside.wiki-index > .select-container > select").value)}))},genDropeable:()=>{document.querySelector(".is-dropeable")&&[].forEach.call(document.getElementsByClassName("is-dropeable"),e=>{e.onclick=(()=>{e.classList.contains("is-active")?e.classList.remove("is-active"):([].forEach.call(document.getElementsByClassName("is-dropeable"),e=>{e.classList.remove("is-active")}),e.classList.add("is-active"))})})},genControls:()=>{document.querySelector(".forum-controls")&&[].forEach.call(document.querySelectorAll(".forum-controls"),e=>{let t=0;[].forEach.call(e.children,e=>{"none"!==window.getComputedStyle(e,null).display&&(t+=e.children.length)}),0===t&&!1===e.classList.contains("not-show")&&e.classList.add("not-show")})},genDebounce:(e,t=750)=>{let n;return(...r)=>{clearTimeout(n),n=setTimeout(()=>{e.apply(this,r)},t)}}}};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "generic-skin",
3
- "version": "4.3.0",
3
+ "version": "4.3.1",
4
4
  "description": "Generic Forum Skin for Forumotion created by Gaylien.",
5
5
  "main": "readme.md",
6
6
  "scripts": {