diff --git a/LICENSE b/LICENSE
index db93e531a..ab6232f86 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,5 +1,5 @@
/*
-* appchan x - Version 2.1.3 - 2013-07-21
+* appchan x - Version 2.1.3 - 2013-07-22
*
* Licensed under the MIT license.
* https://github.com/zixaphir/appchan-x/blob/master/LICENSE
diff --git a/builds/appchan-x.user.js b/builds/appchan-x.user.js
index a5b5d4fac..70c0fde69 100644
--- a/builds/appchan-x.user.js
+++ b/builds/appchan-x.user.js
@@ -18,7 +18,7 @@
// ==/UserScript==
/*
-* appchan x - Version 2.1.3 - 2013-07-21
+* appchan x - Version 2.1.3 - 2013-07-22
*
* Licensed under the MIT license.
* https://github.com/zixaphir/appchan-x/blob/master/LICENSE
@@ -2695,7 +2695,6 @@
Array.prototype.add = function(object, position) {
var keep;
-
keep = this.slice(position);
this.length = position;
this.push(object);
@@ -2708,7 +2707,6 @@
Array.prototype.indexOf = function(object) {
var i;
-
i = this.length;
while (i--) {
if (this[i] === object) {
@@ -2720,7 +2718,6 @@
Array.prototype.pushArrays = function() {
var arg, args, _i, _len;
-
args = arguments;
for (_i = 0, _len = args.length; _i < _len; _i++) {
arg = args[_i];
@@ -2731,7 +2728,6 @@
Array.prototype.remove = function(object) {
var index;
-
if ((index = this.indexOf(object)) > -1) {
return this.splice(index, 1);
} else {
@@ -2748,7 +2744,6 @@
$.extend = function(object, properties) {
var key, val;
-
for (key in properties) {
val = properties[key];
if (!properties.hasOwnProperty(key)) {
@@ -2766,7 +2761,6 @@
$.ready = function(fc) {
var cb;
-
if (d.readyState !== 'loading') {
$.queueTask(fc);
return;
@@ -2780,7 +2774,6 @@
$.formData = function(form) {
var fd, key, val;
-
if (form instanceof HTMLFormElement) {
return new FormData(form);
}
@@ -2801,7 +2794,6 @@
$.ajax = function(url, callbacks, opts) {
var cred, err, form, headers, key, r, sync, type, upCallbacks, val;
-
if (opts == null) {
opts = {};
}
@@ -2827,11 +2819,9 @@
$.cache = (function() {
var reqs;
-
reqs = {};
return function(url, cb) {
var err, req, rm;
-
if (req = reqs[url]) {
if (req.readyState === 4) {
cb.call(req, req.evt);
@@ -2847,7 +2837,6 @@
req = $.ajax(url, {
onload: function(e) {
var _i, _len, _ref;
-
_ref = this.callbacks;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
cb = _ref[_i];
@@ -2889,7 +2878,6 @@
$.addStyle = function(css, id) {
var style;
-
style = $.el('style', {
id: id,
textContent: css
@@ -2936,7 +2924,6 @@
} else {
return function(el) {
var _ref;
-
return (_ref = el.parentNode) != null ? _ref.removeChild(el) : void 0;
};
}
@@ -2944,7 +2931,6 @@
$.rmAll = function(root) {
var node;
-
while (node = root.firstChild) {
root.removeChild(node);
}
@@ -2960,7 +2946,6 @@
$.nodes = function(nodes) {
var frag, node, _i, _len;
-
if (!(nodes instanceof Array)) {
return nodes;
}
@@ -2994,7 +2979,6 @@
$.el = function(tag, properties) {
var el;
-
el = d.createElement(tag);
if (properties) {
$.extend(el, properties);
@@ -3004,7 +2988,6 @@
$.on = function(el, events, handler) {
var event, _i, _len, _ref;
-
_ref = events.split(' ');
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
event = _ref[_i];
@@ -3014,7 +2997,6 @@
$.off = function(el, events, handler) {
var event, _i, _len, _ref;
-
_ref = events.split(' ');
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
event = _ref[_i];
@@ -3040,7 +3022,6 @@
$.debounce = function(wait, fn) {
var args, exec, lastCall, that, timeout;
-
lastCall = 0;
timeout = null;
that = null;
@@ -3062,11 +3043,9 @@
$.queueTask = (function() {
var execTask, taskChannel, taskQueue;
-
taskQueue = [];
execTask = function() {
var args, func, task;
-
task = taskQueue.shift();
func = task[0];
args = Array.prototype.slice.call(task, 1);
@@ -3089,7 +3068,6 @@
$.globalEval = function(code) {
var script;
-
script = $.el('script', {
textContent: code
});
@@ -3099,7 +3077,6 @@
$.bytesToString = function(size) {
var unit;
-
unit = 0;
while (size >= 1024) {
size /= 1024;
@@ -3115,7 +3092,6 @@
$.item = function(key, val) {
var item;
-
item = {};
item[key] = val;
return item;
@@ -3126,7 +3102,6 @@
$.sync = (function() {
$.on(window, 'storage', function(e) {
var cb;
-
if (cb = $.syncing[e.key]) {
return cb(JSON.parse(e.newValue));
}
@@ -3138,7 +3113,6 @@
$["delete"] = function(keys) {
var key, _i, _len;
-
if (!(keys instanceof Array)) {
keys = [keys];
}
@@ -3152,7 +3126,6 @@
$.get = function(key, val, cb) {
var items;
-
if (typeof cb === 'function') {
items = $.item(key, val);
} else {
@@ -3171,7 +3144,6 @@
$.set = (function() {
var set;
-
set = function(key, val) {
key = g.NAMESPACE + key;
val = JSON.stringify(val);
@@ -3182,7 +3154,6 @@
};
return function(keys, val) {
var key;
-
if (typeof keys === 'string') {
set(keys, val);
return;
@@ -3250,7 +3221,6 @@
function Post(root, thread, board, that) {
var capcode, date, email, flag, info, name, post, subject, tripcode, uniqueID;
-
this.thread = thread;
this.board = board;
if (that == null) {
@@ -3323,7 +3293,6 @@
Post.prototype.parseComment = function() {
var bq, i, node, nodes, text, _i, _len, _ref;
-
bq = this.nodes.comment.cloneNode(true);
_ref = $$('.abbr, .capcodeReplies, .exif, b', bq);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -3341,7 +3310,6 @@
Post.prototype.parseQuotes = function() {
var hash, pathname, quotelink, quotes, _i, _len, _ref;
-
quotes = {};
_ref = $$('.quotelink', this.nodes.comment);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -3371,7 +3339,6 @@
Post.prototype.parseFile = function(that) {
var alt, anchor, fileEl, fileInfo, size, thumb, unit;
-
if (!((fileEl = $('.file', this.nodes.post)) && (thumb = $('img[data-md5]', fileEl)))) {
return;
}
@@ -3402,7 +3369,6 @@
Post.prototype.kill = function(file, now) {
var clone, quotelink, strong, _i, _j, _len, _len1, _ref, _ref1;
-
now || (now = new Date());
if (file) {
if (this.file.isDead) {
@@ -3451,7 +3417,6 @@
Post.prototype.resurrect = function() {
var clone, quotelink, strong, _i, _j, _len, _len1, _ref, _ref1;
-
delete this.isDead;
delete this.timeOfDeath;
$.rmClass(this.nodes.root, 'deleted-post');
@@ -3485,7 +3450,6 @@
Post.prototype.rmClone = function(index) {
var clone, _i, _len, _ref;
-
this.clones.splice(index, 1);
_ref = this.clones.slice(index);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -3503,7 +3467,6 @@
function Clone(origin, context) {
var file, info, inline, inlined, key, nodes, post, root, val, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _ref3;
-
this.origin = origin;
this.context = context;
_ref = ['ID', 'fullID', 'board', 'thread', 'info', 'quotes', 'isReply'];
@@ -3591,7 +3554,6 @@
function DataBoard(key, sync) {
var init,
_this = this;
-
this.key = key;
this.data = Conf[key];
$.sync(key, this.onSync.bind(this));
@@ -3608,7 +3570,6 @@
DataBoard.prototype["delete"] = function(_arg) {
var boardID, postID, threadID;
-
boardID = _arg.boardID, threadID = _arg.threadID, postID = _arg.postID;
if (postID) {
delete this.data.boards[boardID][threadID][postID];
@@ -3629,7 +3590,6 @@
DataBoard.prototype.deleteIfEmpty = function(_arg) {
var boardID, threadID;
-
boardID = _arg.boardID, threadID = _arg.threadID;
if (threadID) {
if (!Object.keys(this.data.boards[boardID][threadID]).length) {
@@ -3645,7 +3605,6 @@
DataBoard.prototype.set = function(_arg) {
var boardID, postID, threadID, val, _base, _base1, _base2;
-
boardID = _arg.boardID, threadID = _arg.threadID, postID = _arg.postID, val = _arg.val;
if (postID !== void 0) {
((_base = ((_base1 = this.data.boards)[boardID] || (_base1[boardID] = {})))[threadID] || (_base[threadID] = {}))[postID] = val;
@@ -3659,7 +3618,6 @@
DataBoard.prototype.get = function(_arg) {
var ID, board, boardID, defaultValue, postID, thread, threadID, val, _i, _len;
-
boardID = _arg.boardID, threadID = _arg.threadID, postID = _arg.postID, defaultValue = _arg.defaultValue;
if (board = this.data.boards[boardID]) {
if (!threadID) {
@@ -3683,7 +3641,6 @@
DataBoard.prototype.clean = function() {
var boardID, now, val, _ref;
-
_ref = this.data.boards;
for (boardID in _ref) {
val = _ref[boardID];
@@ -3703,10 +3660,8 @@
DataBoard.prototype.ajaxClean = function(boardID) {
var _this = this;
-
return $.cache("//api.4chan.org/" + boardID + "/threads.json", function(e) {
var board, page, thread, threads, _i, _j, _len, _len1, _ref, _ref1;
-
if (e.target.status === 404) {
_this["delete"](boardID);
} else if (e.target.status === 200) {
@@ -3817,7 +3772,6 @@
init: function() {
var barFixedToggler, barPositionToggler, customNavToggler, editCustomNav, headerToggler,
_this = this;
-
this.menu = new UI.Menu('header');
this.menuButton = $.el('span', {
className: 'menu-button',
@@ -3906,7 +3860,6 @@
}),
setBoardList: function() {
var a, boardList, btn, fourchannav, fullBoardList, settings;
-
fourchannav = $.id('boardNavDesktop');
if (a = $("a[href*='/" + g.BOARD + "/']", fourchannav)) {
a.className = 'current';
@@ -3931,7 +3884,6 @@
},
generateBoardList: function(text) {
var as, list, nodes;
-
list = $('#custom-board-list', Header.bar);
$.rmAll(list);
if (!text) {
@@ -3940,7 +3892,6 @@
as = $$('#full-board-list a[title]', Header.bar);
nodes = text.match(/[\w@]+((-(all|title|replace|full|index|catalog|url:"[^"]+[^"]"|text:"[^"]+")|\,"[^"]+[^"]"))*|[^\w@]+/g).map(function(t) {
var a, board, m, _i, _len;
-
if (/^[^\w@]/.test(t)) {
return $.tn(t);
}
@@ -3987,7 +3938,6 @@
},
toggleBoardList: function() {
var bar, custom, full, showBoardList;
-
bar = Header.bar;
custom = $('#custom-board-list', bar);
full = $('#full-board-list', bar);
@@ -4038,7 +3988,6 @@
},
toggleBarVisibility: function(e) {
var hide, message;
-
if (e.type === 'mousedown' && e.button !== 0) {
return;
}
@@ -4051,7 +4000,6 @@
},
setCustomNav: function(show) {
var btn, cust, full, _ref;
-
Header.customNavToggler.checked = show;
cust = $('#custom-board-list', Header.bar);
full = $('#full-board-list', Header.bar);
@@ -4064,14 +4012,12 @@
},
editCustomNav: function() {
var settings;
-
Settings.open('Advanced');
settings = $.id('fourchanx-settings');
return $('input[name=boardnav]', settings).focus();
},
hashScroll: function() {
var hash, post;
-
if (!((hash = this.location.hash.slice(1)) && (post = $.id(hash)))) {
return;
}
@@ -4082,7 +4028,6 @@
},
scrollToPost: function(post) {
var headRect, top;
-
top = post.getBoundingClientRect().top;
if (Conf['Fixed Header'] && !Conf['Bottom Header']) {
headRect = Header.bar.getBoundingClientRect();
@@ -4092,7 +4037,6 @@
},
addShortcut: function(el) {
var shortcut;
-
shortcut = $.el('span', {
className: 'shortcut'
});
@@ -4105,7 +4049,6 @@
},
createNotification: function(e) {
var cb, content, lifetime, notif, type, _ref;
-
_ref = e.detail, type = _ref.type, content = _ref.content, lifetime = _ref.lifetime, cb = _ref.cb;
notif = new Notification(type, content, lifetime);
if (cb) {
@@ -4118,7 +4061,6 @@
spoilerRange: {},
shortFilename: function(filename, isReply) {
var threshold;
-
threshold = isReply ? 30 : 40;
if (filename.length - 4 > threshold) {
return "" + filename.slice(0, threshold - 5) + "(...)." + filename.slice(-3);
@@ -4128,7 +4070,6 @@
},
postFromObject: function(data, boardID) {
var o;
-
o = {
postID: data.no,
threadID: data.resto || data.no,
@@ -4172,7 +4113,6 @@
*/
var a, boardID, capcode, capcodeClass, capcodeStart, closed, comment, container, date, dateUTC, email, emailEnd, emailStart, ext, file, fileDims, fileHTML, fileInfo, fileSize, fileThumb, filename, flag, flagCode, flagName, href, imgSrc, isClosed, isOP, isSticky, name, postID, quote, shortFilename, spoilerRange, staticPath, sticky, subject, threadID, tripcode, uniqueID, userID, _i, _len, _ref;
-
postID = o.postID, threadID = o.threadID, boardID = o.boardID, name = o.name, capcode = o.capcode, tripcode = o.tripcode, uniqueID = o.uniqueID, email = o.email, subject = o.subject, flagCode = o.flagCode, flagName = o.flagName, date = o.date, dateUTC = o.dateUTC, isSticky = o.isSticky, isClosed = o.isClosed, comment = o.comment, file = o.file;
isOP = postID === threadID;
staticPath = '//static.4chan.org/image/';
@@ -4268,7 +4208,6 @@
Get = {
threadExcerpt: function(thread) {
var OP, excerpt, _ref;
-
OP = thread.OP;
excerpt = ((_ref = OP.info.subject) != null ? _ref.trim() : void 0) || OP.info.comment.replace(/\n+/g, ' // ') || Conf['Anonymize'] && 'Anonymous' || $('.nameBlock', OP.nodes.info).textContent.trim();
if (excerpt.length > 70) {
@@ -4281,7 +4220,6 @@
},
postFromRoot: function(root) {
var boardID, index, link, post, postID;
-
link = $('a[title="Highlight this post"]', root);
boardID = link.pathname.split('/')[1];
postID = link.hash.slice(2);
@@ -4301,7 +4239,6 @@
},
postDataFromLink: function(link) {
var boardID, path, postID, threadID, _ref;
-
if (link.hostname === 'boards.4chan.org') {
path = link.pathname.split('/');
boardID = path[1];
@@ -4319,7 +4256,6 @@
},
allQuotelinksLinkingTo: function(post) {
var ID, quote, quotedPost, quotelinks, quoterPost, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _ref3;
-
quotelinks = [];
_ref = g.posts;
for (ID in _ref) {
@@ -4348,14 +4284,12 @@
}
return quotelinks.filter(function(quotelink) {
var boardID, postID, _ref4;
-
_ref4 = Get.postDataFromLink(quotelink), boardID = _ref4.boardID, postID = _ref4.postID;
return boardID === post.board.ID && postID === post.ID;
});
},
postClone: function(boardID, threadID, postID, root, context) {
var post, url;
-
if (post = g.posts["" + boardID + "." + postID]) {
Get.insert(post, root, context);
return;
@@ -4376,7 +4310,6 @@
},
insert: function(post, root, context) {
var clone, nodes;
-
if (!root.parentNode) {
return;
}
@@ -4390,7 +4323,6 @@
},
fetchedPost: function(req, boardID, threadID, postID, root, context) {
var board, post, posts, status, thread, url, _i, _len;
-
if (post = g.posts["" + boardID + "." + postID]) {
Get.insert(post, root, context);
return;
@@ -4440,7 +4372,6 @@
},
archivedPost: function(req, boardID, postID, root, context) {
var board, bq, comment, data, o, post, thread, threadID, _ref;
-
if (post = g.posts["" + boardID + "." + postID]) {
Get.insert(post, root, context);
return;
@@ -4534,10 +4465,8 @@
UI = (function() {
var Menu, dialog, drag, dragend, dragstart, hover, hoverend, hoverstart, touchend, touchmove;
-
dialog = function(id, position, html) {
var el, move;
-
el = $.el('div', {
className: 'dialog',
innerHTML: html,
@@ -4567,7 +4496,6 @@
Menu.prototype.makeMenu = function() {
var menu;
-
menu = $.el('div', {
className: 'dialog',
id: 'menu',
@@ -4582,7 +4510,6 @@
Menu.prototype.toggle = function(e, button, data) {
var previousButton;
-
e.preventDefault();
e.stopPropagation();
if (currentMenu) {
@@ -4600,7 +4527,6 @@
Menu.prototype.open = function(button, data) {
var bLeft, bRect, bTop, bottom, cHeight, cWidth, entry, left, mRect, menu, right, style, top, _i, _len, _ref, _ref1, _ref2;
-
menu = this.makeMenu();
currentMenu = menu;
lastToggledButton = button;
@@ -4640,7 +4566,6 @@
Menu.prototype.insertEntry = function(entry, parent, data) {
var subEntry, submenu, _i, _len, _ref;
-
if (typeof entry.open === 'function') {
if (!entry.open(data)) {
return;
@@ -4674,7 +4599,6 @@
Menu.prototype.findNextEntry = function(entry, direction) {
var entries;
-
entries = __slice.call(entry.parentNode.children);
entries.sort(function(first, second) {
return +(first.style.order || first.style.webkitOrder) - +(second.style.order || second.style.webkitOrder);
@@ -4684,7 +4608,6 @@
Menu.prototype.keybinds = function(e) {
var entry, next, nextPrev, subEntry, submenu;
-
entry = $('.focused', currentMenu);
while (subEntry = $('.focused', entry)) {
entry = subEntry;
@@ -4730,7 +4653,6 @@
Menu.prototype.focus = function(entry) {
var bottom, cHeight, cWidth, eRect, focused, left, right, sRect, style, submenu, top, _i, _len, _ref, _ref1, _ref2;
-
while (focused = $.x('parent::*/child::*[contains(@class,"focused")]', entry)) {
$.rmClass(focused, 'focused');
}
@@ -4758,7 +4680,6 @@
Menu.prototype.addEntry = function(e) {
var entry;
-
entry = e.detail;
if (entry.type !== this.type) {
return;
@@ -4769,7 +4690,6 @@
Menu.prototype.parseEntry = function(entry) {
var el, style, subEntries, subEntry, _i, _len;
-
el = entry.el, subEntries = entry.subEntries;
$.addClass(el, 'entry');
$.on(el, 'focus mouseover', (function(e) {
@@ -4793,7 +4713,6 @@
})();
dragstart = function(e) {
var el, isTouching, o, rect, screenHeight, screenWidth, _ref;
-
if (e.type === 'mousedown' && e.button !== 0) {
return;
}
@@ -4832,7 +4751,6 @@
};
touchmove = function(e) {
var touch, _i, _len, _ref;
-
_ref = e.changedTouches;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
touch = _ref[_i];
@@ -4844,7 +4762,6 @@
};
drag = function(e) {
var bottom, clientX, clientY, left, right, style, top;
-
clientX = e.clientX, clientY = e.clientY;
left = clientX - this.dx;
left = left < 10 ? 0 : this.width - left < 10 ? null : left / this.screenWidth * 100 + '%';
@@ -4860,7 +4777,6 @@
};
touchend = function(e) {
var touch, _i, _len, _ref;
-
_ref = e.changedTouches;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
touch = _ref[_i];
@@ -4882,7 +4798,6 @@
};
hoverstart = function(_arg) {
var asapTest, cb, close, el, endEvents, latestEvent, o, root;
-
root = _arg.root, el = _arg.el, latestEvent = _arg.latestEvent, endEvents = _arg.endEvents, asapTest = _arg.asapTest, cb = _arg.cb, close = _arg.close;
o = {
root: root,
@@ -4918,7 +4833,6 @@
};
hover = function(e) {
var clientX, clientY, height, left, right, style, top, _ref;
-
this.latestEvent = e;
height = this.el.offsetHeight;
clientX = e.clientX, clientY = e.clientY;
@@ -4962,7 +4876,6 @@
},
node: function() {
var email, name, tripcode, _ref;
-
if (this.info.capcode || this.isClone) {
return;
}
@@ -4989,7 +4902,6 @@
filters: {},
init: function() {
var boards, err, filter, hl, key, op, regexp, stub, top, _i, _len, _ref, _ref1, _ref2, _ref3, _ref4;
-
if (g.VIEW === 'catalog' || !Conf['Filter']) {
return;
}
@@ -5026,7 +4938,6 @@
op = ((_ref2 = filter.match(/[^t]op:(yes|no|only)/)) != null ? _ref2[1] : void 0) || 'yes';
stub = (function() {
var _ref3;
-
switch ((_ref3 = filter.match(/stub:(yes|no)/)) != null ? _ref3[1] : void 0) {
case 'yes':
return true;
@@ -5057,7 +4968,6 @@
},
createFilter: function(regexp, op, stub, hl, top) {
var settings, test;
-
test = typeof regexp === 'string' ? function(value) {
return regexp === value;
} : function(value) {
@@ -5081,7 +4991,6 @@
},
node: function() {
var filter, firstThread, key, result, thisThread, value, _i, _len, _ref;
-
if (this.isClone) {
return;
}
@@ -5193,7 +5102,6 @@
menu: {
init: function() {
var div, entry, type, _i, _len, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Filter']) {
return;
}
@@ -5219,7 +5127,6 @@
},
createSubEntry: function(text, type) {
var el;
-
el = $.el('a', {
href: 'javascript:;',
textContent: text
@@ -5230,7 +5137,6 @@
el: el,
open: function(post) {
var value;
-
value = Filter[type](post);
return value !== false;
}
@@ -5238,7 +5144,6 @@
},
makeFilter: function() {
var re, type, value;
-
type = this.dataset.type;
value = Filter[type](Filter.menu.post);
re = ['uniqueID', 'MD5'].contains(type) ? value : value.replace(/\/|\\|\^|\$|\n|\.|\(|\)|\{|\}|\[|\]|\?|\*|\+|\|/g, function(c) {
@@ -5253,7 +5158,6 @@
re = ['uniqueID', 'MD5'].contains(type) ? "/" + re + "/" : "/^" + re + "$/";
return $.get(type, Conf[type], function(item) {
var save, section, select, ta, tl;
-
save = item[type];
save = save ? "" + save + "\n" + re : re;
$.set(type, save);
@@ -5287,7 +5191,6 @@
},
node: function() {
var data;
-
if (!this.isReply || this.isClone) {
return;
}
@@ -5311,7 +5214,6 @@
menu: {
init: function() {
var apply, div, hideStubLink, makeStub, replies, thisPost;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Reply Hiding Link']) {
return;
}
@@ -5382,7 +5284,6 @@
order: 20,
open: function(post) {
var data;
-
if (!post.isReply || post.isClone || !post.isHidden) {
return false;
}
@@ -5414,7 +5315,6 @@
order: 15,
open: function(post) {
var data;
-
if (!post.isReply || post.isClone || !post.isHidden) {
return false;
}
@@ -5431,7 +5331,6 @@
},
hide: function() {
var makeStub, parent, post, replies, thisPost;
-
parent = this.parentNode;
thisPost = $('input[name=thisPost]', parent).checked;
replies = $('input[name=replies]', parent).checked;
@@ -5450,7 +5349,6 @@
},
show: function() {
var data, parent, post, replies, thisPost;
-
parent = this.parentNode;
thisPost = $('input[name=thisPost]', parent).checked;
replies = $('input[name=replies]', parent).checked;
@@ -5474,7 +5372,6 @@
},
hideStub: function() {
var post;
-
post = PostHiding.menu.post;
post.nodes.root.hidden = true;
$.event('CloseMenu');
@@ -5482,7 +5379,6 @@
},
makeButton: function(post, type) {
var a;
-
a = $.el('a', {
className: "" + type + "-reply-button",
innerHTML: " " + (type === 'hide' ? '-' : '+') + " ",
@@ -5493,7 +5389,6 @@
},
saveHiddenState: function(post, isHiding, thisPost, makeStub, hideRecursively) {
var data;
-
data = {
boardID: post.board.ID,
threadID: post.thread.ID,
@@ -5512,7 +5407,6 @@
},
toggle: function() {
var post;
-
post = Get.postFromNode(this);
if (post.isHidden) {
PostHiding.show(post);
@@ -5523,7 +5417,6 @@
},
hide: function(post, makeStub, hideRecursively) {
var a, postInfo, quotelink, _i, _len, _ref;
-
if (makeStub == null) {
makeStub = Conf['Stubs'];
}
@@ -5561,7 +5454,6 @@
},
show: function(post, showRecursively) {
var quotelink, _i, _len, _ref;
-
if (showRecursively == null) {
showRecursively = Conf['Recursive Hiding'];
}
@@ -5597,7 +5489,6 @@
},
node: function() {
var i, obj, quote, recursive, _i, _j, _len, _len1, _ref, _ref1;
-
if (this.isClone) {
return;
}
@@ -5615,7 +5506,6 @@
},
add: function() {
var args, obj, post, recursive, _base, _name;
-
recursive = arguments[0], post = arguments[1], args = 3 <= arguments.length ? __slice.call(arguments, 2) : [];
obj = (_base = Recursive.recursives)[_name = post.fullID] || (_base[_name] = {
recursives: [],
@@ -5626,7 +5516,6 @@
},
rm: function(recursive, post) {
var i, obj, rec, _i, _len, _ref;
-
if (!(obj = Recursive.recursives[post.fullID])) {
return;
}
@@ -5641,7 +5530,6 @@
},
apply: function() {
var ID, args, fullID, post, recursive, _ref;
-
recursive = arguments[0], post = arguments[1], args = 3 <= arguments.length ? __slice.call(arguments, 2) : [];
fullID = post.fullID;
_ref = g.posts;
@@ -5668,7 +5556,6 @@
},
node: function() {
var data;
-
if (data = ThreadHiding.db.get({
boardID: this.board.ID,
threadID: this.ID
@@ -5682,7 +5569,6 @@
},
syncCatalog: function() {
var hiddenThreads, hiddenThreadsOnCatalog, threadID;
-
hiddenThreads = ThreadHiding.db.get({
boardID: g.BOARD.ID,
defaultValue: {}
@@ -5709,7 +5595,6 @@
cleanCatalog: function(hiddenThreadsOnCatalog) {
return $.cache("//api.4chan.org/" + g.BOARD + "/threads.json", function() {
var page, thread, threads, _i, _j, _len, _len1, _ref, _ref1;
-
if (this.status !== 200) {
return;
}
@@ -5735,7 +5620,6 @@
menu: {
init: function() {
var apply, div, hideStubLink, makeStub;
-
if (g.VIEW !== 'index' || !Conf['Menu'] || !Conf['Thread Hiding Link']) {
return;
}
@@ -5762,7 +5646,6 @@
order: 20,
open: function(_arg) {
var isReply, thread;
-
thread = _arg.thread, isReply = _arg.isReply;
if (isReply || thread.isHidden) {
return false;
@@ -5784,7 +5667,6 @@
order: 15,
open: function(_arg) {
var isReply, thread;
-
thread = _arg.thread, isReply = _arg.isReply;
if (isReply || !thread.isHidden) {
return false;
@@ -5795,7 +5677,6 @@
},
hide: function() {
var makeStub, thread;
-
makeStub = $('input', this.parentNode).checked;
thread = ThreadHiding.menu.thread;
ThreadHiding.hide(thread, makeStub);
@@ -5804,7 +5685,6 @@
},
hideStub: function() {
var thread;
-
thread = ThreadHiding.menu.thread;
ThreadHiding.hide(thread, false);
$.event('CloseMenu');
@@ -5812,7 +5692,6 @@
},
makeButton: function(thread, type) {
var a;
-
a = $.el('a', {
className: "" + type + "-thread-button",
innerHTML: " " + (type === 'hide' ? '-' : '+') + " ",
@@ -5824,7 +5703,6 @@
},
saveHiddenState: function(thread, makeStub) {
var hiddenThreadsOnCatalog;
-
hiddenThreadsOnCatalog = JSON.parse(localStorage.getItem("4chan-hide-t-" + g.BOARD)) || {};
if (thread.isHidden) {
ThreadHiding.db.set({
@@ -5857,7 +5735,6 @@
},
hide: function(thread, makeStub) {
var OP, a, numReplies, opInfo, span, threadRoot;
-
if (makeStub == null) {
makeStub = Conf['Stubs'];
}
@@ -5888,7 +5765,6 @@
},
show: function(thread) {
var threadRoot;
-
if (thread.stub) {
$.rm(thread.stub);
delete thread.stub;
@@ -5901,7 +5777,6 @@
QuoteBacklink = {
init: function() {
var format;
-
if (g.VIEW === 'catalog' || !Conf['Quote Backlinks']) {
return;
}
@@ -5919,7 +5794,6 @@
},
firstNode: function() {
var a, clone, container, containers, frag, link, post, quote, _i, _j, _k, _len, _len1, _len2, _ref, _ref1;
-
if (this.isClone || !this.quotes.length) {
return;
}
@@ -5958,7 +5832,6 @@
},
secondNode: function() {
var container;
-
if (this.isClone && (this.origin.isReply || Conf['OP Backlinks'])) {
this.nodes.backlinkContainer = $('.container', this.nodes.info);
return;
@@ -5975,7 +5848,6 @@
},
getContainer: function(id) {
var _base;
-
return (_base = this.containers)[id] || (_base[id] = $.el('span', {
className: 'container'
}));
@@ -5998,7 +5870,6 @@
},
node: function() {
var board, boardID, quotelink, quotelinks, quotes, thread, threadID, _i, _len, _ref, _ref1;
-
if (this.isClone && this.thread === this.context.thread) {
return;
}
@@ -6034,7 +5905,6 @@
if (Conf['Quote Hash Navigation']) {
this.node = function() {
var link, _i, _len, _ref;
-
_ref = this.nodes.quotelinks.concat(__slice.call(this.nodes.backlinks));
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
link = _ref[_i];
@@ -6047,7 +5917,6 @@
} else {
this.node = function() {
var link, _i, _len, _ref;
-
_ref = this.nodes.quotelinks.concat(__slice.call(this.nodes.backlinks));
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
link = _ref[_i];
@@ -6071,7 +5940,6 @@
},
toggle: function(e) {
var boardID, context, postID, threadID, _ref;
-
if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || e.button !== 0) {
return;
}
@@ -6097,7 +5965,6 @@
},
add: function(quotelink, boardID, threadID, postID, context) {
var inline, isBacklink, post, qroot, root;
-
isBacklink = $.hasClass(quotelink, 'backlink');
inline = $.el('div', {
id: "i" + postID,
@@ -6122,7 +5989,6 @@
},
rm: function(quotelink, boardID, threadID, postID, context) {
var el, inlined, isBacklink, post, qroot, root, _ref;
-
isBacklink = $.hasClass(quotelink, 'backlink');
root = QuoteInline.findRoot(quotelink, isBacklink);
root = $.x("following-sibling::div[@id='i" + postID + "'][1]", root);
@@ -6164,7 +6030,6 @@
},
node: function() {
var boardID, op, postID, quotelink, quotelinks, quotes, _i, _j, _len, _len1, _ref;
-
if (this.isClone && this.thread === this.context.thread) {
return;
}
@@ -6207,7 +6072,6 @@
},
node: function() {
var link, _i, _len, _ref;
-
_ref = this.nodes.quotelinks.concat(__slice.call(this.nodes.backlinks));
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
link = _ref[_i];
@@ -6216,7 +6080,6 @@
},
mouseover: function(e) {
var boardID, clone, origin, post, postID, posts, qp, quote, quoterID, threadID, _i, _j, _len, _len1, _ref, _ref1;
-
if ($.hasClass(this, 'inlined')) {
return;
}
@@ -6260,7 +6123,6 @@
},
mouseout: function() {
var clone, post, root, _i, _len, _ref;
-
if (!(root = this.el.firstElementChild)) {
return;
}
@@ -6290,7 +6152,6 @@
},
node: function() {
var boardID, postID, quotelink, _i, _len, _ref, _ref1, _ref2;
-
if (this.isClone) {
return;
}
@@ -6313,7 +6174,6 @@
QuoteThreading = {
init: function() {
var input;
-
if (!(Conf['Quote Threading'] && g.VIEW === 'thread')) {
return;
}
@@ -6336,7 +6196,6 @@
},
setup: function() {
var ID, post, posts;
-
$.off(d, '4chanXInitFinished', QuoteThreading.setup);
posts = g.posts;
for (ID in posts) {
@@ -6349,7 +6208,6 @@
},
node: function() {
var ID, fullID, keys, len, post, posts, qid, quote, quotes, uniq, _i, _len;
-
if (this.isClone || !QuoteThreading.enabled || this.thread.OP === this) {
return;
}
@@ -6379,7 +6237,6 @@
},
nodeinsert: function() {
var bottom, height, posts, qpost, qroot, threadContainer, top, _ref;
-
posts = g.posts;
qpost = posts[this.threaded];
delete this.threaded;
@@ -6409,14 +6266,12 @@
},
toggle: function() {
var container, containers, node, nodes, replies, reply, thread, _i, _j, _len, _len1;
-
thread = $('.thread');
replies = $$('.thread > .replyContainer, .threadContainer > .replyContainer', thread);
QuoteThreading.enabled = this.checked;
if (this.checked) {
nodes = (function() {
var _i, _len, _results;
-
_results = [];
for (_i = 0, _len = replies.length; _i < _len; _i++) {
reply = replies[_i];
@@ -6431,7 +6286,6 @@
} else {
replies.sort(function(a, b) {
var aID, bID;
-
aID = Number(a.id.slice(2));
bID = Number(b.id.slice(2));
return aID - bID;
@@ -6447,7 +6301,6 @@
},
kb: function() {
var control;
-
control = $.id('threadingControl');
return control.click();
}
@@ -6474,7 +6327,6 @@
},
node: function() {
var quotelink, _i, _len, _ref;
-
if (this.isClone) {
return;
}
@@ -6510,7 +6362,6 @@
},
node: function() {
var deadlink, _i, _len, _ref;
-
_ref = $$('.deadlink', this.nodes.comment);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
deadlink = _ref[_i];
@@ -6525,7 +6376,6 @@
},
parseDeadlink: function(deadlink) {
var a, boardID, m, post, postID, quote, quoteID, redirect, _ref;
-
if (deadlink.parentNode.className === 'prettyprint') {
$.replace(deadlink, __slice.call(deadlink.childNodes));
return;
@@ -6609,7 +6459,6 @@
cypher: $.el('div'),
node: function() {
var a, child, cypher, cypherText, data, embed, embedder, embeds, i, index, len, link, links, lookahead, name, next, node, nodes, snapshot, spoiler, text, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _m, _ref, _ref1, _ref2;
-
if (this.isClone && Conf['Embedding']) {
_ref = $$('.embedder', this.nodes.comment);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -6694,7 +6543,6 @@
},
toggle: function() {
var el, embed, style, type, url;
-
embed = this.previousElementSibling;
if (this.className.contains("embedded")) {
el = $.el('a', {
@@ -6788,7 +6636,6 @@
style: 'height: auto; width: 500px; display: inline-block;',
el: function() {
var div;
-
div = $.el('div', {
className: "soundcloud",
name: "soundcloud"
@@ -6814,7 +6661,6 @@
regExp: /.*(?:pastebin.com\/(?!u\/))([^#\&\?]*).*/,
el: function() {
var div;
-
return div = $.el('iframe', {
src: "http://pastebin.com/embed_iframe.php?i=" + this.name
});
@@ -6824,7 +6670,6 @@
regExp: /.*(?:gist.github.com.*\/)([^\/][^\/]*)$/,
el: function() {
var div;
-
return div = $.el('iframe', {
src: "http://www.purplegene.com/script?url=https://gist.github.com/" + this.name + ".js"
});
@@ -6835,7 +6680,6 @@
},
text: function() {
var file, response;
-
response = JSON.parse(this.responseText).files;
for (file in response) {
if (response.hasOwnProperty(file)) {
@@ -6856,14 +6700,12 @@
},
embedder: function(a) {
var callbacks, embed, key, match, service, titles, type, _ref;
-
if (!Conf['Link Title']) {
return [a];
}
titles = {};
callbacks = function() {
var title;
-
return a.textContent = (function() {
switch (this.status) {
case 200:
@@ -6905,7 +6747,6 @@
if (Conf['Link Title'] && (service = type.title)) {
$.get('CachedTitles', {}, function(item) {
var err, title;
-
titles = item['CachedTitles'];
if (title = titles[match[1]]) {
a.textContent = title[0];
@@ -6929,7 +6770,6 @@
QR = {
init: function() {
var con, sc;
-
this.db = new DataBoard('yourPosts');
$.ready(this.initReady);
if (Conf['Persistent QR']) {
@@ -6988,13 +6828,11 @@
}
$.on(d, 'QRGetSelectedPost', function(_arg) {
var cb;
-
cb = _arg.detail;
return cb(QR.selected);
});
$.on(d, 'QRAddPreSubmitHook', function(_arg) {
var cb;
-
cb = _arg.detail;
return QR.preSubmitHooks.push(cb);
});
@@ -7023,7 +6861,6 @@
},
open: function() {
var err;
-
if (QR.nodes) {
QR.nodes.el.hidden = false;
return QR.unhide();
@@ -7042,7 +6879,6 @@
},
close: function() {
var post, _i, _len, _ref;
-
if (QR.req) {
QR.abort();
return;
@@ -7089,7 +6925,6 @@
},
error: function(err) {
var el;
-
QR.open();
if (typeof err === 'string') {
el = $.tn(err);
@@ -7117,7 +6952,6 @@
notifications: [],
cleanNotifications: function() {
var notification, _i, _len, _ref;
-
_ref = QR.notifications;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
notification = _ref[_i];
@@ -7127,7 +6961,6 @@
},
status: function() {
var disabled, status, thread, value;
-
if (!QR.nodes) {
return;
}
@@ -7149,7 +6982,6 @@
QR.persona.getPassword();
return $.get('QR.personas', Conf['QR.personas'], function(_arg) {
var arr, item, personas, type, types, _i, _len, _ref;
-
personas = _arg['QR.personas'];
types = {
name: [],
@@ -7169,7 +7001,6 @@
},
parseItem: function(item, types) {
var boards, match, type, val, _ref, _ref1;
-
if (item[0] === '#') {
return;
}
@@ -7198,7 +7029,6 @@
},
loadPersonas: function(type, arr) {
var list, val, _i, _len;
-
list = $("#list-" + type, QR.nodes.el);
for (_i = 0, _len = arr.length; _i < _len; _i++) {
val = arr[_i];
@@ -7212,7 +7042,6 @@
},
getPassword: function() {
var input, m;
-
if (!QR.persona.pwd) {
QR.persona.pwd = (m = d.cookie.match(/4chan_pass=([^;]+)/)) ? decodeURIComponent(m[1]) : (input = $.id('postPassword')) ? input.value : $.id('delPassword').value;
}
@@ -7221,7 +7050,6 @@
get: function(cb) {
return $.get('QR.persona', {}, function(_arg) {
var persona;
-
persona = _arg['QR.persona'];
return cb(persona);
});
@@ -7229,7 +7057,6 @@
set: function(post) {
return $.get('QR.persona', {}, function(_arg) {
var persona;
-
persona = _arg['QR.persona'];
persona = {
name: post.name,
@@ -7243,7 +7070,6 @@
cooldown: {
init: function() {
var board;
-
if (!Conf['Cooldown']) {
return;
}
@@ -7285,7 +7111,6 @@
},
sync: function(cooldowns) {
var id;
-
for (id in cooldowns) {
QR.cooldown.cooldowns[id] = cooldowns[id];
}
@@ -7293,7 +7118,6 @@
},
set: function(data) {
var cooldown, delay, hasFile, isReply, isSage, post, req, start, type, upSpd;
-
if (!Conf['Cooldown']) {
return;
}
@@ -7333,7 +7157,6 @@
},
count: function() {
var cooldown, cooldowns, elapsed, hasFile, isReply, isSage, now, post, seconds, start, type, types, upSpd, upSpdAccuracy, update, _ref;
-
if (!Object.keys(QR.cooldown.cooldowns).length) {
$["delete"]("" + g.BOARD + ".cooldown");
delete QR.cooldown.isCounting;
@@ -7387,7 +7210,6 @@
},
quote: function(e) {
var caretPos, com, index, post, range, s, sel, text, thread, _ref;
-
if (e != null) {
e.preventDefault();
}
@@ -7424,7 +7246,6 @@
},
characterCount: function() {
var count, counter;
-
counter = QR.nodes.charCount;
count = QR.nodes.com.textLength;
counter.textContent = count;
@@ -7433,7 +7254,6 @@
},
drag: function(e) {
var toggle;
-
toggle = e.type === 'dragstart' ? $.off : $.on;
toggle(d, 'dragover', QR.dragOver);
return toggle(d, 'drop', QR.dropFile);
@@ -7453,7 +7273,6 @@
},
paste: function(e) {
var blob, files, item, _i, _len, _ref;
-
files = [];
_ref = e.clipboardData.items;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -7481,7 +7300,6 @@
},
fileInput: function(files) {
var file, length, max, post, _i, _len;
-
if (files instanceof Event) {
files = __slice.call(this.files);
QR.nodes.fileInput.value = null;
@@ -7530,7 +7348,6 @@
function _Class(select) {
var el, elm, event, prev, _i, _j, _len, _len1, _ref, _ref1,
_this = this;
-
el = $.el('a', {
className: 'qr-preview',
draggable: true,
@@ -7590,7 +7407,6 @@
_Class.prototype.rm = function() {
var index;
-
this["delete"]();
index = QR.posts.indexOf(this);
if (QR.posts.length === 1) {
@@ -7610,7 +7426,6 @@
_Class.prototype.lock = function(lock) {
var name, _i, _len, _ref;
-
if (lock == null) {
lock = true;
}
@@ -7635,7 +7450,6 @@
_Class.prototype.select = function() {
var rectEl, rectList;
-
if (QR.selected) {
QR.selected.nodes.el.id = null;
QR.selected.forceSave();
@@ -7652,7 +7466,6 @@
_Class.prototype.load = function() {
var name, _i, _len, _ref;
-
_ref = ['thread', 'name', 'email', 'sub', 'com'];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
name = _ref[_i];
@@ -7665,7 +7478,6 @@
_Class.prototype.save = function(input) {
var name, _ref;
-
if (input.type === 'checkbox') {
this.spoiler = input.checked;
return;
@@ -7686,7 +7498,6 @@
_Class.prototype.forceSave = function() {
var name, _i, _len, _ref;
-
if (this !== QR.selected) {
return;
}
@@ -7716,11 +7527,9 @@
_Class.prototype.setThumbnail = function() {
var fileURL, img,
_this = this;
-
img = $.el('img');
img.onload = function() {
var applyBlob, cv, data, height, i, l, s, ui8a, width, _i;
-
s = 90 * 2;
if (_this.file.type === 'image/gif') {
s *= 3;
@@ -7791,11 +7600,9 @@
_Class.prototype.pasteText = function(file) {
var reader,
_this = this;
-
reader = new FileReader();
reader.onload = function(e) {
var text;
-
text = e.target.result;
if (_this.com) {
_this.com += "\n" + text;
@@ -7833,7 +7640,6 @@
_Class.prototype.drop = function() {
var el, index, newIndex, oldIndex, post;
-
$.rmClass(this, 'over');
if (!this.draggable) {
return;
@@ -7868,7 +7674,6 @@
ready: function() {
var imgContainer, input, setLifetime,
_this = this;
-
setLifetime = function(e) {
return _this.lifetime = e.detail;
};
@@ -7905,7 +7710,6 @@
});
$.get('captchas', [], function(_arg) {
var captchas;
-
captchas = _arg.captchas;
return _this.sync(captchas);
});
@@ -7922,7 +7726,6 @@
},
getOne: function() {
var captcha, challenge, response;
-
this.clear();
if (captcha = this.captchas.shift()) {
challenge = captcha.challenge, response = captcha.response;
@@ -7947,7 +7750,6 @@
},
save: function() {
var response;
-
if (!(response = this.nodes.input.value.trim())) {
return;
}
@@ -7962,7 +7764,6 @@
},
clear: function() {
var captcha, i, now, _i, _len, _ref;
-
now = Date.now();
_ref = this.captchas;
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
@@ -7980,7 +7781,6 @@
},
load: function() {
var challenge;
-
if (!this.nodes.challenge.firstChild) {
return;
}
@@ -7993,7 +7793,6 @@
},
count: function() {
var count;
-
count = this.captchas.length;
this.nodes.input.placeholder = (function() {
switch (count) {
@@ -8026,7 +7825,6 @@
},
dialog: function() {
var dialog, elm, mimeTypes, name, nodes, thread, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2;
-
dialog = UI.dialog('qr', 'top:0;right:0;', "
");
QR.nodes = nodes = {
el: dialog,
@@ -8156,7 +7954,6 @@
},
tripcodeHider: function() {
var check;
-
check = /^.*##?.+/.test(this.value);
if (check && !this.className.match("\\btripped\\b")) {
return $.addClass(this, 'tripped');
@@ -8167,7 +7964,6 @@
preSubmitHooks: [],
submit: function(e) {
var callbacks, challenge, err, filetag, hook, opts, post, postData, response, textOnly, thread, threadID, _i, _len, _ref, _ref1;
-
if (e != null) {
e.preventDefault();
}
@@ -8280,7 +8076,6 @@
},
response: function() {
var URL, ban, board, err, h1, isReply, m, post, postID, req, threadID, tmpDoc, _, _ref, _ref1;
-
req = QR.req;
delete QR.req;
post = QR.posts[0];
@@ -8376,7 +8171,6 @@
},
mouseover: function(e) {
var mouseover;
-
mouseover = $.el('div', {
id: 'mouseover',
className: 'dialog'
@@ -8399,7 +8193,6 @@
FappeTyme = {
init: function() {
var el;
-
if (!Conf['Fappe Tyme'] || g.VIEW === 'catalog' || g.BOARD === 'f') {
return;
}
@@ -8454,7 +8247,6 @@
},
node: function() {
var thumb, _ref;
-
if (!((_ref = this.file) != null ? _ref.isImage : void 0)) {
return;
}
@@ -8479,7 +8271,6 @@
},
toggleAll: function() {
var ID, file, func, post, _i, _len, _ref, _ref1;
-
$.event('CloseMenu');
if (ImageExpand.on = $.hasClass(ImageExpand.EAI, 'expand-all-shortcut')) {
ImageExpand.EAI.className = 'contract-all-shortcut';
@@ -8513,7 +8304,6 @@
},
toggle: function(post) {
var headRect, node, rect, root, thumb, top;
-
thumb = post.file.thumb;
if (!(post.file.isExpanded || $.hasClass(thumb, 'expanding'))) {
ImageExpand.expand(post);
@@ -8558,7 +8348,6 @@
},
expand: function(post, src) {
var img, thumb;
-
thumb = post.file.thumb;
if (post.isHidden || post.file.isExpanded || $.hasClass(thumb, 'expanding')) {
return;
@@ -8586,7 +8375,6 @@
},
completeExpand: function(post) {
var prev, thumb;
-
thumb = post.file.thumb;
if (!$.hasClass(thumb, 'expanding')) {
return;
@@ -8600,7 +8388,6 @@
prev = post.nodes.root.getBoundingClientRect();
return $.queueTask(function() {
var curr, root;
-
$.addClass(post.nodes.root, 'expanded-image');
$.rmClass(post.file.thumb, 'expanding');
if (!(prev.top + prev.height <= 0)) {
@@ -8613,7 +8400,6 @@
},
error: function() {
var URL, post, src, timeoutID;
-
post = Get.postFromNode(this);
$.rm(this);
delete post.file.fullImage;
@@ -8639,7 +8425,6 @@
return $.ajax("//api.4chan.org/" + post.board + "/res/" + post.thread + ".json", {
onload: function() {
var postObj, _i, _len, _ref;
-
if (this.status !== 200) {
return;
}
@@ -8663,7 +8448,6 @@
menu: {
init: function() {
var conf, createSubEntry, el, key, subEntries, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Image Expansion']) {
return;
}
@@ -8687,7 +8471,6 @@
},
createSubEntry: function(type, config) {
var input, label;
-
label = $.el('label', {
innerHTML: " " + type
});
@@ -8723,7 +8506,6 @@
},
node: function() {
var _ref;
-
if (!((_ref = this.file) != null ? _ref.isImage : void 0)) {
return;
}
@@ -8731,7 +8513,6 @@
},
mouseover: function(e) {
var el, post;
-
post = Get.postFromNode(this);
el = $.el('img', {
id: 'ihover',
@@ -8753,7 +8534,6 @@
error: function() {
var URL, post, src, timeoutID,
_this = this;
-
if (!doc.contains(this)) {
return;
}
@@ -8778,7 +8558,6 @@
return $.ajax("//api.4chan.org/" + post.board + "/res/" + post.thread + ".json", {
onload: function() {
var postObj, _i, _len, _ref;
-
if (this.status !== 200) {
return;
}
@@ -8804,7 +8583,6 @@
ImageLoader = {
init: function() {
var prefetch;
-
if (g.VIEW === 'catalog') {
return;
}
@@ -8831,7 +8609,6 @@
},
node: function() {
var URL, img, string, style, thumb, type, _ref, _ref1;
-
if (this.isClone || this.isHidden || this.thread.isHidden || !((_ref = this.file) != null ? _ref.isImage : void 0)) {
return;
}
@@ -8853,7 +8630,6 @@
},
toggle: function() {
var enabled, id, post, _ref;
-
enabled = Conf['prefetch'] = this.checked;
if (enabled) {
_ref = g.threads["" + g.BOARD.ID + "." + g.THREADID].posts;
@@ -8877,7 +8653,6 @@
},
node: function() {
var thumb, _ref;
-
if (this.isClone || !((_ref = this.file) != null ? _ref.isSpoiler : void 0)) {
return;
}
@@ -8890,7 +8665,6 @@
Sauce = {
init: function() {
var err, link, links, _i, _len, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Sauce']) {
return;
}
@@ -8920,7 +8694,6 @@
},
createSauceLink: function(link) {
var m, text;
-
link = link.replace(/(%(T?URL|MD5|board)|\$[1-4])/ig, function(parameter) {
switch (parameter) {
case '%TURL':
@@ -8945,7 +8718,6 @@
},
node: function() {
var link, nodes, _i, _len, _ref;
-
if (this.isClone || !this.file) {
return;
}
@@ -8962,7 +8734,6 @@
ArchiveLink = {
init: function() {
var div, entry, type, _i, _len, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Archive Link']) {
return;
}
@@ -8975,7 +8746,6 @@
order: 90,
open: function(_arg) {
var ID, board, thread;
-
ID = _arg.ID, thread = _arg.thread, board = _arg.board;
return !!Redirect.to('thread', {
postID: ID,
@@ -8994,14 +8764,12 @@
},
createSubEntry: function(text, type) {
var el, open;
-
el = $.el('a', {
textContent: text,
target: '_blank'
});
open = type === 'post' ? function(_arg) {
var ID, board, thread;
-
ID = _arg.ID, thread = _arg.thread, board = _arg.board;
el.href = Redirect.to('thread', {
postID: ID,
@@ -9011,7 +8779,6 @@
return true;
} : function(post) {
var value;
-
value = Filter[type](post);
if (!value) {
return false;
@@ -9034,7 +8801,6 @@
DeleteLink = {
init: function() {
var div, fileEl, fileEntry, postEl, postEntry;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Delete Link']) {
return;
}
@@ -9062,7 +8828,6 @@
el: fileEl,
open: function(_arg) {
var file;
-
file = _arg.file;
if (!file || file.isDead) {
return false;
@@ -9078,7 +8843,6 @@
order: 40,
open: function(post) {
var node;
-
if (post.isDead || post.board.ID === 'q') {
return false;
}
@@ -9093,7 +8857,6 @@
},
"delete": function() {
var fileOnly, form, link, post;
-
post = DeleteLink.post;
if (DeleteLink.cooldown.counting === post) {
return;
@@ -9122,7 +8885,6 @@
},
load: function(link, post, fileOnly, html) {
var msg, s, tmpDoc;
-
tmpDoc = d.implementation.createHTMLDocument('');
tmpDoc.documentElement.innerHTML = html;
if (tmpDoc.title === '4chan - Banned') {
@@ -9145,7 +8907,6 @@
cooldown: {
start: function(post, node) {
var length, seconds, _ref;
-
if (!((_ref = QR.db) != null ? _ref.get({
boardID: post.board.ID,
threadID: post.thread.ID,
@@ -9179,7 +8940,6 @@
DownloadLink = {
init: function() {
var a;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Download Link']) {
return;
}
@@ -9193,7 +8953,6 @@
order: 100,
open: function(_arg) {
var file;
-
file = _arg.file;
if (!file) {
return false;
@@ -9219,7 +8978,6 @@
},
node: function() {
var button;
-
if (this.isClone) {
button = $('.menu-button', this.nodes.info);
} else {
@@ -9230,7 +8988,6 @@
},
makeButton: (function() {
var a;
-
a = null;
return function() {
a || (a = $.el('a', {
@@ -9249,7 +9006,6 @@
ReportLink = {
init: function() {
var a;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Report Link']) {
return;
}
@@ -9271,7 +9027,6 @@
},
report: function() {
var id, post, set, url;
-
post = ReportLink.post;
url = "//sys.4chan.org/" + post.board + "/imgboard.php?mode=report&no=" + post;
id = Date.now();
@@ -9284,7 +9039,6 @@
init: function() {
return $.ready(function() {
var href;
-
Favicon.el = $('link[rel="shortcut icon"]', d.head);
Favicon.el.type = 'image/x-icon';
href = Favicon.el.href;
@@ -9295,7 +9049,6 @@
},
"switch": function() {
var unreadDead;
-
unreadDead = Favicon.unreadDeadY = Favicon.unreadSFW = Favicon.unreadSFWY = Favicon.unreadNSFW = Favicon.unreadNSFWY = 'data:image/png;base64,';
switch (Conf['favicon']) {
case 'ferongr':
@@ -9368,7 +9121,6 @@
init: function() {
var sc,
_this = this;
-
if (g.VIEW !== 'thread' || !Conf['Thread Stats']) {
return;
}
@@ -9398,7 +9150,6 @@
},
node: function() {
var ID, fileCount, post, postCount, _ref;
-
postCount = 0;
fileCount = 0;
_ref = this.posts;
@@ -9416,7 +9167,6 @@
},
onUpdate: function(e) {
var fileCount, postCount, _ref;
-
if (e.detail[404]) {
return;
}
@@ -9425,7 +9175,6 @@
},
update: function(postCount, fileCount) {
var fileCountEl, postCountEl, thread;
-
thread = ThreadStats.thread, postCountEl = ThreadStats.postCountEl, fileCountEl = ThreadStats.fileCountEl;
postCountEl.textContent = postCount;
fileCountEl.textContent = fileCount;
@@ -9452,7 +9201,6 @@
},
onThreadsLoad: function() {
var page, pages, thread, _i, _j, _len, _len1, _ref;
-
if (!Conf["Page Count in Stats"]) {
return;
}
@@ -9480,7 +9228,6 @@
init: function() {
var checked, conf, el, input, name, sc, settings, subEntries, _ref,
_this = this;
-
if (g.VIEW !== 'thread' || !Conf['Thread Updater']) {
return;
}
@@ -9632,7 +9379,6 @@
},
interval: function() {
var val;
-
val = +this.value;
if (val < 1) {
val = 1;
@@ -9642,7 +9388,6 @@
},
load: function() {
var klass, req, text, _ref;
-
req = ThreadUpdater.req;
switch (req.status) {
case 200:
@@ -9686,7 +9431,6 @@
},
getInterval: function() {
var i, j;
-
i = ThreadUpdater.interval;
j = Math.min(ThreadUpdater.outdateCount, 10);
if (!d.hidden) {
@@ -9696,14 +9440,12 @@
},
intervalShortcut: function() {
var settings;
-
Settings.open('Advanced');
settings = $.id('fourchanx-settings');
return $('input[name=Interval]', settings).focus();
},
set: function(name, text, klass) {
var el, node;
-
el = ThreadUpdater[name];
if (node = el.firstChild) {
node.data = text;
@@ -9716,7 +9458,6 @@
},
timeout: function() {
var n;
-
ThreadUpdater.timeoutID = setTimeout(ThreadUpdater.timeout, 1000);
if (!(n = --ThreadUpdater.seconds)) {
return ThreadUpdater.update();
@@ -9729,7 +9470,6 @@
},
update: function() {
var url;
-
if (!ThreadUpdater.online) {
return;
}
@@ -9754,7 +9494,6 @@
},
updateThreadStatus: function(title, OP) {
var icon, message, root, titleLC;
-
titleLC = title.toLowerCase();
if (ThreadUpdater.thread["is" + title] === !!OP[titleLC]) {
return;
@@ -9781,7 +9520,6 @@
},
parse: function(postObjects) {
var ID, OP, count, deletedFiles, deletedPosts, files, index, key, node, num, post, postObject, posts, root, scroll, _i, _len, _ref;
-
OP = postObjects[0];
Build.spoilerRange[ThreadUpdater.thread.board] = OP.custom_spoiler;
ThreadUpdater.updateThreadStatus('Sticky', OP);
@@ -9867,7 +9605,6 @@
}
$.queueTask(function() {
var length, threadID;
-
threadID = ThreadUpdater.thread.ID;
length = $$('.thread > .postContainer', ThreadUpdater.root).length;
return Fourchan.parseThread(threadID, length - count, length);
@@ -9905,7 +9642,6 @@
node: function() {
var favicon,
_this = this;
-
favicon = $.el('a', {
className: 'watch-thread-link',
href: 'javascript:;'
@@ -9925,7 +9661,6 @@
},
refresh: function(watched) {
var ID, board, div, favicon, id, link, nodes, props, thread, x, _ref, _ref1;
-
if (!watched) {
$.get('WatchedThreads', {}, function(item) {
return ThreadWatcher.refresh(item['WatchedThreads']);
@@ -9970,13 +9705,11 @@
},
x: function() {
var thread;
-
thread = this.nextElementSibling.pathname.split('/');
return ThreadWatcher.unwatch(thread[1], thread[3]);
},
post: function(e) {
var board, postID, threadID, _ref;
-
_ref = e.detail, board = _ref.board, postID = _ref.postID, threadID = _ref.threadID;
if (postID === threadID) {
if (Conf['Auto Watch']) {
@@ -9997,7 +9730,6 @@
unwatch: function(board, threadID) {
return $.get('WatchedThreads', {}, function(item) {
var watched;
-
watched = item['WatchedThreads'];
delete watched[board][threadID];
if (!Object.keys(watched[board]).length) {
@@ -10010,7 +9742,6 @@
watch: function(thread) {
return $.get('WatchedThreads', {}, function(item) {
var watched, _name;
-
watched = item['WatchedThreads'];
watched[_name = thread.board] || (watched[_name] = {});
watched[thread.board][thread] = {
@@ -10056,7 +9787,6 @@
},
ready: function() {
var ID, post, posts, _ref;
-
$.off(d, '4chanXInitFinished', Unread.ready);
posts = [];
_ref = Unread.thread.posts;
@@ -10073,7 +9803,6 @@
},
scroll: function() {
var checkPosition, hash, onload, post, posts, root;
-
if ((hash = location.hash.match(/\d+/)) && hash[0] in Unread.thread.posts) {
return;
}
@@ -10103,7 +9832,6 @@
}
checkPosition = function(target) {
var height, top, _ref;
-
_ref = target.getBoundingClientRect(), top = _ref.top, height = _ref.height;
return top + height - doc.clientHeight > 0;
};
@@ -10111,7 +9839,6 @@
},
sync: function() {
var lastReadPost;
-
lastReadPost = Unread.db.get({
boardID: Unread.thread.board.ID,
threadID: Unread.thread.ID,
@@ -10128,7 +9855,6 @@
},
addPosts: function(posts) {
var ID, data, post, _i, _len, _ref;
-
for (_i = 0, _len = posts.length; _i < _len; _i++) {
post = posts[_i];
ID = post.ID;
@@ -10156,7 +9882,6 @@
},
addPostQuotingYou: function(post) {
var quotelink, _i, _len, _ref;
-
if (!QR.db) {
return;
}
@@ -10177,7 +9902,6 @@
},
readSinglePost: function(post) {
var i;
-
if ((i = Unread.posts.indexOf(post)) === -1) {
return;
}
@@ -10193,7 +9917,6 @@
},
readArray: function(arr) {
var i, post, _i, _len;
-
for (i = _i = 0, _len = arr.length; _i < _len; i = ++_i) {
post = arr[i];
if (post.ID > Unread.lastReadPost) {
@@ -10204,7 +9927,6 @@
},
read: $.debounce(50, function(e) {
var ID, bottom, height, i, post, posts, read;
-
if (d.hidden || !Unread.posts.length) {
return;
}
@@ -10238,7 +9960,6 @@
}),
setLine: function(force) {
var post, root;
-
if (!(d.hidden || force === true)) {
return;
}
@@ -10253,7 +9974,6 @@
},
update: function() {
var count;
-
count = Unread.posts.length;
if (Conf['Unread Count']) {
d.title = "" + (Conf['Quoted Title'] && Unread.postsQuotingYou.length ? '(!) ' : '') + (count || !Conf['Hide Unread Count at (0)'] ? "(" + count + ") " : '') + (g.DEAD ? "/" + g.BOARD + "/ - 404" : "" + Unread.title);
@@ -10272,7 +9992,6 @@
file: {},
init: function() {
var archive, arr, boardID, data, id, name, type, _ref, _ref1, _ref2, _results;
-
_ref = Conf['selectedArchives'];
for (boardID in _ref) {
data = _ref[boardID];
@@ -10297,7 +10016,6 @@
archive = _ref2[name];
_results.push((function() {
var _i, _len, _ref3, _results1;
-
_ref3 = archive.boards;
_results1 = [];
for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
@@ -10409,7 +10127,6 @@
},
to: function(dest, data) {
var archive;
-
archive = (dest === 'search' ? Redirect.thread : Redirect[dest])[data.boardID];
if (!archive) {
return '';
@@ -10418,7 +10135,6 @@
},
protocol: function(archive) {
var protocol;
-
protocol = location.protocol;
if (!archive[protocol.slice(0, -1)]) {
protocol = protocol === 'https:' ? 'http:' : 'https:';
@@ -10427,7 +10143,6 @@
},
thread: function(archive, _arg) {
var boardID, path, postID, threadID;
-
boardID = _arg.boardID, threadID = _arg.threadID, postID = _arg.postID;
path = threadID ? "" + boardID + "/thread/" + threadID : "" + boardID + "/post/" + postID;
if (archive.software === 'foolfuuka') {
@@ -10440,7 +10155,6 @@
},
post: function(archive, _arg) {
var boardID, postID, protocol;
-
boardID = _arg.boardID, postID = _arg.postID;
protocol = Redirect.protocol(archive);
if (['Foolz', 'NSFW Foolz'].contains(archive.name)) {
@@ -10450,13 +10164,11 @@
},
file: function(archive, _arg) {
var boardID, filename;
-
boardID = _arg.boardID, filename = _arg.filename;
return "" + (Redirect.protocol(archive)) + archive.domain + "/" + boardID + "/full_image/" + filename;
},
search: function(archive, _arg) {
var boardID, path, type, value;
-
boardID = _arg.boardID, type = _arg.type, value = _arg.value;
type = type === 'name' ? 'username' : type === 'MD5' ? 'image' : type;
value = encodeURIComponent(value);
@@ -10477,7 +10189,6 @@
},
ready: function() {
var banner, child, children, i, nodes, title;
-
banner = $(".boardBanner");
title = $.el("div", {
id: "boardTitle"
@@ -10510,7 +10221,6 @@
},
focus: function() {
var items, string;
-
string = "" + g.BOARD + "." + this.className;
items = {
title: this.innerHTML
@@ -10532,11 +10242,9 @@
},
custom: function(child) {
var cachedTest;
-
cachedTest = child.innerHTML;
$.get("" + g.BOARD + "." + child.className, cachedTest, function(item) {
var title;
-
if (!(title = item["" + g.BOARD + "." + child.className])) {
return;
}
@@ -10566,7 +10274,6 @@
},
css: function() {
var category, css, icon, key, name, _conf, _ref;
-
_conf = Conf;
css = [];
_ref = Emoji.icons;
@@ -10639,7 +10346,6 @@
},
ready: function() {
var child, el, _i, _len, _ref;
-
if (el = $("#globalMessage", d.body)) {
_ref = el.children;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -10674,7 +10380,6 @@
},
getRelMousePos: function(e) {
var x, y;
-
e || (e = window.event);
x = 0;
y = 0;
@@ -10692,7 +10397,6 @@
},
color: function(target) {
var HSV_RGB, RGB_HSV, THIS, abortBlur, blurTarget, blurValue, drawPicker, holdPad, holdSld, isPickerOwner, leavePad, leaveSld, leaveStyle, leaveValue, redrawPad, redrawSld, removePicker, setPad, setSld, styleElement, valueElement;
-
this.hsv = [0, 0, 1];
this.rgb = [1, 1, 1];
this.valueElement = this.styleElement = target;
@@ -10719,7 +10423,6 @@
};
this.exportColor = function(flags) {
var value;
-
if (!(flags & leaveValue) && valueElement) {
value = '#' + this.toString();
valueElement.value = value;
@@ -10746,7 +10449,6 @@
};
this.fromRGB = function(r, g, b, flags) {
var hsv;
-
r = r != null ? $.minmax(r, 0.0, 1.0) : this.rgb[0];
g = g != null ? $.minmax(g, 0.0, 1.0) : this.rgb[1];
b = b != null ? $.minmax(b, 0.0, 1.0) : this.rgb[2];
@@ -10763,7 +10465,6 @@
};
this.fromString = function(number, flags) {
var m, val;
-
m = number.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i);
if (!m) {
return false;
@@ -10781,7 +10482,6 @@
};
RGB_HSV = function(r, g, b) {
var h, m, n, v;
-
n = (n = r < g ? r : g) < b ? n : b;
v = (v = r > g ? r : g) > b ? v : b;
m = v - n;
@@ -10793,7 +10493,6 @@
};
HSV_RGB = function(h, s, v) {
var f, i, m, n;
-
if (h == null) {
return [v, v, v];
}
@@ -10823,7 +10522,6 @@
};
drawPicker = function(x, y) {
var box, boxB, btn, btnS, elements, item, p, pad, padB, padM, sld, sldB, sldM, _i, _len;
-
if (!(p = JSColor.picker)) {
elements = ['box', 'boxB', 'pad', 'padB', 'padM', 'sld', 'sldB', 'sldM', 'btn'];
p = {};
@@ -10896,7 +10594,6 @@
};
redrawPad = function() {
var rgb;
-
JSColor.picker.padM.style.backgroundPosition = "" + (4 + Math.round((THIS.hsv[0] / 6) * 180)) + "px " + (4 + Math.round((1 - THIS.hsv[1]) * 100)) + "px";
rgb = HSV_RGB(THIS.hsv[0], THIS.hsv[1], 1);
JSColor.picker.sld.style.backgroundColor = "rgb(" + (rgb[0] * 100) + "%, " + (rgb[1] * 100) + "%, " + (rgb[2] * 100) + "%)";
@@ -10919,7 +10616,6 @@
};
setPad = function(e) {
var mpos, x, y;
-
mpos = JSColor.getRelMousePos(e);
x = mpos.x - 11;
y = mpos.y - 11;
@@ -10927,7 +10623,6 @@
};
setSld = function(e) {
var mpos, y;
-
mpos = JSColor.getRelMousePos(e);
y = mpos.y - 9;
return THIS.fromHSV(null, null, 1 - y / 100, leavePad);
@@ -10972,7 +10667,6 @@
init: function(mascot) {
var el, image, name,
_this = this;
-
if (!(mascot && mascot.image)) {
if (!Conf[g.MASCOTSTRING].length) {
return;
@@ -11036,7 +10730,6 @@
categories: ['Anime', 'Ponies', 'Questionable', 'Silhouette', 'Western'],
dialog: function(key) {
var container, dialog, div, fileInput, input, item, layout, name, option, optionHTML, setting, value, _i, _len, _ref;
-
Conf['editMode'] = 'mascot';
if (Mascots[key]) {
editMascot = JSON.parse(JSON.stringify(Mascots[key]));
@@ -11153,7 +10846,6 @@
},
input: function(item, name) {
var div, value;
-
if (Array.isArray(editMascot[name])) {
if (Style.lightTheme) {
value = editMascot[name][1];
@@ -11172,12 +10864,10 @@
},
uploadImage: function(evt, el) {
var file, reader;
-
file = evt.target.files[0];
reader = new FileReader();
reader.onload = function(evt) {
var val;
-
val = evt.target.result;
el.previousSibling.value = val;
return editMascot.image = val;
@@ -11186,7 +10876,6 @@
},
save: function(mascot) {
var image, name, type, _i, _len, _ref;
-
name = mascot.name, image = mascot.image;
if ((name == null) || name === "") {
alert("Please name your mascot.");
@@ -11224,7 +10913,6 @@
delete Mascots[name].name;
return $.get("userMascots", {}, function(item) {
var userMascots;
-
userMascots = item['userMascots'];
userMascots[name] = Mascots[name];
$.set('userMascots', userMascots);
@@ -11246,12 +10934,10 @@
},
importMascot: function(evt) {
var file, reader;
-
file = evt.target.files[0];
reader = new FileReader();
reader.onload = function(e) {
var err, imported, name;
-
try {
imported = JSON.parse(e.target.result);
} catch (_error) {
@@ -11272,7 +10958,6 @@
Mascots[name] = imported;
$.get("userMascots", {}, function(item) {
var userMascots;
-
userMascots = item['userMascots'];
userMascots[name] = Mascots[name];
return $.set('userMascots', userMascots);
@@ -11285,7 +10970,6 @@
},
reposition: function() {
var mascot;
-
mascot = Mascots[Conf['mascot']];
return Style.mascot.textContent = "#mascot img {\nheight: " + (mascot.height && isNaN(parseFloat(mascot.height)) ? mascot.height : mascot.height ? parseInt(mascot.height, 10) + 'px' : 'auto') + ";\nwidth: " + (mascot.width && isNaN(parseFloat(mascot.width)) ? mascot.width : mascot.width ? parseInt(mascot.width, 10) + 'px' : 'auto') + ";\n}\n#mascot {\nmargin: " + (mascot.vOffset || 0) + "px " + (mascot.hOffset || 0) + "px;\n}\n.sidebar-large #mascot {\nleft: " + (mascot.center ? 25 : 0) + "px;\nright: " + (mascot.center ? 25 : 0) + "px;\n}\n.mascot-position-above-post-form.post-form-style-fixed #mascot {\ntransform: translateY(-" + (QR.nodes ? QR.nodes.el.getBoundingClientRect().height : 0) + "px);\n}";
}
@@ -11309,7 +10993,6 @@
},
option: function(e) {
var container, select;
-
e.stopPropagation();
e.preventDefault();
select = Rice.input;
@@ -11321,7 +11004,6 @@
},
select: function(e) {
var clientHeight, li, nodes, option, rect, select, style, ul, _i, _len, _ref;
-
e.stopPropagation();
e.preventDefault();
ul = Rice.ul;
@@ -11359,7 +11041,6 @@
},
cleanup: function() {
var child, _i, _len, _ref;
-
$.off(d, 'click scroll blur resize', Rice.cleanup);
_ref = __slice.call(Rice.ul.children);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -11369,7 +11050,6 @@
},
nodes: function(root) {
var checkboxes, checkrice, input, select, selectrice, selects, _i, _j, _len, _len1;
-
root || (root = d.body);
checkboxes = $$('[type=checkbox]:not(.riced)', root);
checkrice = Rice.checkbox;
@@ -11389,7 +11069,6 @@
},
checkbox: function(input) {
var div;
-
if ($.hasClass(input, 'riced')) {
return;
}
@@ -11403,7 +11082,6 @@
},
select: function(select) {
var div;
-
$.addClass(select, 'riced');
div = $.el('div', {
className: 'selectrice',
@@ -11425,7 +11103,6 @@
},
asapInit: function() {
var cat, hyphenated, name, setting, title, _ref;
-
$.addClass(doc, 'gecko');
$.addClass(doc, 'fourchan-x');
$.addClass(doc, 'appchan-x');
@@ -11449,7 +11126,6 @@
return $('.mPagelist');
}), function() {
var next, nextA, nextAction, prev, prevA, prevAction;
-
prev = $(".pagelist > .prev");
prevA = $.el('a', {
textContent: '<'
@@ -11477,7 +11153,6 @@
},
readyInit: function() {
var exLink;
-
Style.padding();
Style.iconPositions();
if (exLink = $("#navtopright .exlinksOptionsLink", d.body)) {
@@ -11488,7 +11163,6 @@
},
setup: function() {
var theme;
-
theme = Themes[Conf['theme']] || Themes['Yotsuba B'];
Style.svg = $.el('div', {
id: 'svg_filters'
@@ -11513,7 +11187,6 @@
},
observe: function() {
var onMutationObserver;
-
if (window.MutationObserver) {
Style.observer = new MutationObserver(onMutationObserver = this.wrapper);
return Style.observer.observe(d, {
@@ -11547,7 +11220,6 @@
headCount: 12,
remStyle: function() {
var href, i, node, nodes;
-
nodes = d.head.children;
i = nodes.length;
while (i--) {
@@ -11555,7 +11227,7 @@
return;
}
node = nodes[i];
- if ((node.nodeName === 'STYLE' && !node.id) || (("" + node.rel).contains('stylesheet') && !/static\.4chan\.org\/css\/flags\.507\.css/.test(href = node.href) && href.slice(0, 4) !== 'data')) {
+ if ((node.nodeName === 'STYLE' && !node.id) || (("" + node.rel).contains('stylesheet') && !/flags.*\.css$/.test(href = node.href) && href.slice(0, 4) !== 'data')) {
Style.headCount--;
$.rm(node);
}
@@ -11563,7 +11235,6 @@
},
matrix: function(foreground, background) {
var bg, bgHex, fg, fgHex;
-
fgHex = Style.colorToHex(foreground);
fg = {
r: parseInt(fgHex.substr(0, 2), 16) / 255,
@@ -11583,20 +11254,17 @@
},
filter: function(_arg) {
var bg, fg;
-
fg = _arg[0], bg = _arg[1];
return "" + bg.r + " " + (-fg.r) + " 0 0 " + fg.r + " " + bg.g + " " + (-fg.g) + " 0 0 " + fg.g + " " + bg.b + " " + (-fg.b) + " 0 0 " + fg.b;
},
silhouette: function(_arg) {
var fg;
-
fg = _arg[0];
return "0 0 0 0 " + fg.r + " 0 0 0 0 " + fg.g + " 0 0 0 0 " + fg.b;
},
layout: "/* Cleanup */\n#absbot,\n#boardNavDesktop,\n#delPassword,\n#delform > hr:last-of-type,\n#navbotright,\n#postForm,\n#search-label,\n#search-label-bottom,\n#styleSwitcher,\n#togglePostForm,\n.boardBanner > div,\n.mobile,\n.next form,\n.next span,\n.postingMode,\n.prev form,\n.prev span,\n.riced,\n.sideArrows,\n.stylechanger,\nbody > br,\nbody > div[style^=\"text-align\"],\nbody > hr {\n display: none;\n}\n/* Empties */\n#qr .warning:empty,\n#qr-thread-select:empty {\n display: none;\n}\n/* File Name Trunctuate */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull {\n display: none;\n}\n/* Unnecessary */\n#qp input,\n#qp .rice,\n.inline .rice {\n display: none !important;\n}\n/* Hidden Content */\n.forwarded,\n.hidden,\n.hidden_thread ~ div,\n.hidden_thread ~ a,\n.replyContainer .stub ~ div,\n.replyContainer .stub ~ a,\n.stub + div,\n.thread > .stub:first-child ~ .postContainer,\n.thread > .stub:first-child ~ .summary,\n[hidden] {\n display: none !important;\n}\n/* Hidden UI */\n#catalog,\n#navlinks,\n#navtopright,\n#svg_filters,\n.cataloglink,\n.navLinks {\n z-index: 7;\n position: fixed;\n top: 100%;\n left: 100%;\n}\n/* Hide last horizontal rule, keep clear functionality. */\n.board > hr:last-of-type {\n visibility: hidden;\n}\n/* Fappe Tyme */\n.fappeTyme .thread > .noFile,\n.fappeTyme .threadContainer > .noFile {\n display: none;\n}\n/* Defaults */\na {\n text-decoration: none;\n outline: none;\n}\n.underline-links a {\n text-decoration: underline;\n}\nbody,\nhtml {\n min-height: 100%;\n -moz-box-sizing: border-box;\n}\nbody {\n outline: none;\n min-height: 100%;\n}\n.sidebar-hide body {\n margin: 0 2px;\n}\n.sidebar-minimal body {\n margin: 0 20px;\n}\n.sidebar-normal body {\n margin: 0 252px\n}\n.sidebar-large body {\n margin: 0 303px;\n}\n.sidebar-location-right body {\n margin-left: 2px;\n}\n.sidebar-location-left body {\n margin-right: 2px;\n}\nbody.unscroll {\n overflow: hidden;\n}\n.fourchan-ss-sidebar body::before {\n content: '';\n position: fixed;\n top: 0;\n bottom: 0;\n -moz-box-sizing: border-box;\n display: block;\n z-index: 0;\n}\n.fourchan-ss-sidebar.sidebar-large body::before {\n width: 306px;\n}\n.fourchan-ss-sidebar.sidebar-normal body::before {\n width: 255px;\n}\n.fourchan-ss-sidebar.sidebar-minimal body::before {\n width: 23px;\n}\n.sidebar-location-right body::before {\n right: 0;\n}\nsidebar-location-left body::before {\n left: 0;\n}\n.fourchan-ss-sidebar.sidebar-location-right body {\n padding-right: 2px;\n}\n.fourchan-ss-sidebar.sidebar-location-left body {\n padding-left: 2px;\n}\nhr {\n clear: both;\n border: 0;\n padding: 0;\n margin: 0 0 1px;\n}\n.hide-horizontal-rules hr {\n visibility: hidden;\n}\nth {\n text-align: left;\n}\n.center {\n text-align: center;\n}\n.disabled {\n opacity: 0.5;\n}\n.pointer {\n cursor: pointer;\n}\n/* Symbols */\n.drop-marker {\n vertical-align: middle;\n display: inline-block;\n margin: 2px 2px 3px;\n border-top: .5em solid;\n border-right: .3em solid transparent;\n border-left: .3em solid transparent;\n}\n.brackets-wrap::before {\n content: \" [\";\n}\n.brackets-wrap::after {\n content: \"] \";\n}\n/* Thread / Reply Nav */\n#navlinks a {\n position: fixed;\n z-index: 12;\n opacity: 0.5;\n display: inline-block;\n border-right: 6px solid transparent;\n border-left: 6px solid transparent;\n margin: 1.5px;\n}\n#navlinks a:first-of-type {\n border-bottom: 11px solid rgb(130,130,130);\n}\n#navlinks a:last-of-type {\n border-top: 11px solid rgb(130,130,130);\n}\n/* Header */\n#header-bar {\n z-index: 6;\n border-width: 1px;\n padding: 0 2px;\n border-style: solid;\n}\n.pagination-sticky-top .pagelist,\n.pagination-sticky-bottom .pagelist,\n#header-bar {\n left: 2px;\n right: 2px;\n}\n.navigation-alignment-center #header-bar {\n text-align: center;\n}\n.navigation-alignment-right #header-bar {\n text-align: right;\n}\n.sidebar-location-left.sidebar-large:not(.pagination-on-side):not(.fourchan-ss-navigation) .pagelist,\n.sidebar-location-left #header-bar {\n left: 303px;\n}\n.sidebar-location-left.sidebar-normal:not(.pagination-on-side):not(.fourchan-ss-navigation) .pagelist,\n.sidebar-location-left #header-bar {\n left: 252px;\n}\n.sidebar-location-left.sidebar-minimal:not(.pagination-on-side):not(.fourchan-ss-navigation) .pagelist,\n.sidebar-location-left.sidebar-minimal:not(.fourchan-ss-navigation) #header-bar {\n left: 20px;\n}\n.sidebar-location-right.sidebar-large:not(.pagination-on-side):not(.fourchan-ss-navigation) .pagelist,\n.sidebar-location-right #header-bar {\n right: 303px;\n}\n.sidebar-location-right.sidebar-normal:not(.pagination-on-side):not(.fourchan-ss-navigation) .pagelist,\n.sidebar-location-right #header-bar {\n right: 252px;\n}\n.sidebar-location-right.sidebar-minimal:not(.pagination-on-side):not(.fourchan-ss-navigation) .pagelist,\n.sidebar-location-right.sidebar-minimal:not(.fourchan-ss-navigation) #header-bar {\n right: 20px;\n}\n.fourchan-ss-navigation .pagelist,\n.fourchan-ss-navigation #header-bar {\n left: 0;\n right: 0;\n border-left: 0;\n border-right: 0;\n border-radius: 0 !important;\n}\n.hide-navigation-decorations #header-bar {\n font-size: 0;\n color: transparent;\n word-spacing: 2px;\n}\n#shortcuts {\n float: right;\n}\n.fixed #header-bar.autohide {\n z-index: 24;\n}\n.fixed #header-bar {\n position: fixed;\n}\n.top #header-bar {\n top: 0;\n border-top-width: 0;\n}\n.rounded-edges.top #header-bar {\n border-radius: 0 0 3px 3px;\n}\n.fixed.bottom #header-bar {\n bottom: 0;\n border-bottom-width: 0;\n}\n.rounded-edges.bottom #header-bar {\n border-radius: 3px 3px 0 0;\n}\n.hide #header-bar {\n position: fixed;\n top: 110%;\n bottom: auto;\n}\n/* Header Autohide */\n.fixed #header-bar.autohide:not(:hover) {\n box-shadow: none;\n transition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #header-bar.autohide:not(:hover) {\n margin-bottom: -1em;\n transform: translateY(-100%);\n}\n.fixed.bottom #header-bar.autohide:not(:hover) {\n transform: translateY(100%);\n}\n#scroll-marker {\n left: 0;\n right: 0;\n height: 10px;\n position: absolute;\n}\n#header-bar #scroll-marker {\n display: none;\n}\n.fixed #header-bar #scroll-marker {\n display: block;\n}\n.fixed.top header-bar #scroll-marker {\n top: 100%;\n}\n.fixed.bottom #header-bar #scroll-marker {\n bottom: 100%;\n}\n/* Notifications */\n#notifications {\n position: fixed;\n top: 0;\n text-align: center;\n right: 0;\n left: 0;\n transition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #header-bar #notifications {\n position: absolute;\n top: 100%;\n}\n.notification {\n color: #fff;\n font-weight: 700;\n text-shadow: 0 1px 2px rgba(0, 0, 0, .5);\n box-shadow: 0 1px 2px rgba(0, 0, 0, .15);\n border-radius: 2px;\n margin: 1px auto;\n width: 500px;\n max-width: 100%;\n position: relative;\n transition: all .25s ease-in-out;\n}\n.notification.error {\n background-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\n background-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\n background-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\n background-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\n color: #fff;\n}\n.notification > .close {\n padding: 6px;\n top: 0;\n right: 5px;\n position: absolute;\n color: #fff;\n}\n.message {\n -moz-box-sizing: border-box;\n padding: 6px 20px;\n max-height: 200px;\n width: 100%;\n overflow: auto;\n}\n/* Updater / Thread Stats */\n.float #thread-stats,\n.float #updater {\n position: fixed;\n}\n#update-status.new::after {\n content: ', ';\n}\n/* Pagination */\n.pagelist {\n border-style: solid;\n border-width: 1px;\n z-index: 6;\n}\n.pagination-alignment-center .pagelist {\n text-align: center;\n}\n.pagination-alignment-right .pagelist {\n text-align: right;\n}\n.pagination-sticky-top .pagelist {\n position: fixed;\n top: 0;\n border-top-width: 0;\n}\n.pagination-sticky-bottom .pagelist {\n position: fixed;\n bottom: 0;\n border-bottom-width: 0;\n}\n.pagination-top .pagelist {\n position: static;\n border-top-width: 0;\n}\n.pagination-bottom .pagelist {\n position: static;\n}\n.pagination-top.rounded-edges .pagelist,\n.pagination-sticky-top.rounded-edges .pagelist {\n border-radius: 0 0 3px 3px;\n}\n.pagination-bottom.rounded-edges .pagelist,\n.pagination-sticky-bottom.rounded-edges .pagelist {\n border-radius: 3px 3px 0 0;\n}\n.pagination-hide .pagelist {\n display: none;\n}\n.pagination-on-side .pagelist {\n position: fixed;\n padding: 0;\n top: auto;\n bottom: 0.5em;\n margin: 0;\n background: none transparent !important;\n border: 0 none !important;\n text-align: right;\n}\n.pagination-on-side.post-form-style-fixed.show-post-form-header .pagelist {\n bottom: 23.1em;\n}\n.pagination-on-side.post-form-style-fixed .pagelist {\n bottom: 21.6em;\n}\n.sidebar-location-left.pagination-on-side .pagelist {\n transform: rotate(-90deg);\n transform-origin: bottom left;\n}\n\n.sidebar-location-right.pagination-on-side .pagelist {\n transform: rotate(90deg);\n transform-origin: bottom right;\"\n}\n.sidebar-location-right.sidebar-large.pagination-on-side .pagelist {\n left: auto;\n right: 301px;\n}\n.sidebar-location-left.sidebar-large.pagination-on-side .pagelist {\n right: auto;\n left: 301px;\n}\n.sidebar-location-right.sidebar-normal.pagination-on-side .pagelist {\n left: auto;\n right: 246px;\n}\n.sidebar-location-left.sidebar-normal.pagination-on-side .pagelist {\n right: auto;\n left: 246px;\n}\n.sidebar-location-right.sidebar-minimal.pagination-on-side .pagelist {\n left: auto;\n right: 246px;\n}\n.sidebar-location-left.sidebar-minimal.pagination-on-side .pagelist {\n right: auto;\n left: 18px;\n}\n.hide-navigation-decorations .pagelist {\n font-size: 0;\n color: transparent;\n word-spacing: 0;\n}\n.pagelist input,\n.pagelist div {\n vertical-align: middle;\n}\n.hide-navigation-decorations .pages a {\n margin: 0 1px;\n}\n.next,\n.pages,\n.prev {\n display: inline-block;\n margin: 0 3px;\n}\n/* Icons */\n.icons-4chan-ss #navtopright .exlinksOptionsLink::after,\n.icons-4chan-ss #main-menu,\n.icons-4chan-ss .navLinks > a:first-of-type::after,\n.icons-4chan-ss #watcher::after,\n.icons-4chan-ss #globalMessage::after,\n.icons-4chan-ss #boardNavDesktopFoot::after,\n.icons-4chan-ss #img-controls,\n.icons-4chan-ss #catalog::after,\n.icons-4chan-ss #fappeTyme {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAACWCAMAAAA2YSLzAAAAPFBMVEVkZGRlZWVjY2NmZmZnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dZxmG7AAAAE3RSTlMFFQ0AJD8eQFRqf5CgssDM4+73gHqZRAAAA0pJREFUSMetVlmy5CgMZDMGxK7737Ulgcu8ejMREzHtD7sShJRaKWV/Psq3iz7QGwTF2BZ01hp3N6yasctZJANiN5ZlItDLtNkQDGNeMLU7EqmCbUwhkhZbwsIuNbyWPX7dIyHOrDYOc8SOiEUJjojN0EsWlCXRrq2qvJCsIjic2OcFrwrOpdmTimqVyWG7ZkrWy97p7z/hACd2FUetBcQDpTN+nuKsGng881L5xOz/VQ88xL/eQkyZT3axp+4dUMwvH0Pnhn6wSyR+8IdR4f43/v8XX1BHjXpjwy5RdEcQ7DiuzlBUsFD+GeIFEy6W0pKXoSZOiUz5tf99nvTDD/1sP9VRPvb/un86lT57SVqwSk8KR+L6kgTOlcZslRQe5WmJRKovETW7Anb+HzxUW4Xgnv11fuuj82aKXHz1Tzztx9v4VA9+/6le26B+3VhTC9RMPIr0qx4zaWNsnFRO0s8FWgEIFIRiVUAIlJGciqMmCwpQWyI/OplXA1RrXG1YI2svTQ3ufhWjNlKFqtXFI7Yg+zAXRcBZ+HygJuVHd0ys35bVn6QojLL5cZeVvPht/mVu/r/8s7GMXsLjv2s71GZhgjnEwsEVXogiSl/pl7LWra0IQgO3poTsieoYd4dhWfJlGWqyQf6sLxWt3/MRa4Im04ixeSdAWnxvqCX6tObVmzpZOPOZvrBNJF8gmGciBChsV+YdRYwnAvNpS4AnYFBm0KA2a35Unh+efxjercaLfV7wW0rtUTNl2j715al/9VtfutF+NZ/+aZSa+py/GCpRyvr17EsVLbRhmN++BBY/ik5/+YPK6bKnf2T8fh7P+uEYn0D3E4L3i6QHmvc3+k+8PN6Mb1w52tje6LbAi+M0FT4YneqVbpVDPnL2Xqx7m3tf9ENXHba9H/a/+X3z/+XfCnOo+Zy/o4SgY5Z6iq0nb+9Mc4JxL5f1qYs+xhTP/uiX/cMe4+hDHAfGnmGe+Ev+G88vnG7Ie20wHiUt/S1Kv+6BCM/9fkEfz73/9HNufQ4ZKdzvnwtS/LXltRcJB/yJ23H/mo89nPFa85Li3XOYu435LwTXKVWwO+cnlWFTB47L/AdfR//KI2bvF8sAb0c/M+1+YE3/oS77B8N+UUVHraV6AAAAAElFTkSuQmCC\");\n}\n.icons-oneechan #navtopright .exlinksOptionsLink::after,\n.icons-oneechan #main-menu,\n.icons-oneechan .navLinks > a:first-of-type::after,\n.icons-oneechan #watcher::after,\n.icons-oneechan #globalMessage::after,\n.icons-oneechan #boardNavDesktopFoot::after,\n.icons-oneechan #img-controls,\n.icons-oneechan #catalog::after,\n.icons-oneechan #fappeTyme {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAACWCAMAAAA2YSLzAAAAPFBMVEVoaGhqampeXl5sbGxsbGxra2tsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGzXmsRLAAAAE3RSTlMAEAYnHBg2QExbcYaWqM++2+z4BMdvAwAAAtVJREFUSMfFVgmu3CAMhYRPAmb3/e9aL5Bl2kptVbXWSOSBsY15NmOMMZs1KnNExC+ezgV4MBtNMIw58+qX2REtQwiifdC6hwlNQBGfUlBzc+KYkP3IxH5hNvicCPXrMfEVi3ts2WrzaiN6jie2OI2GXbBfXiA/XPyexPpEHrHdyDV8YAt6vEYCVpJ3S7rXAZKkkfbnuR8Uk/32xsac6Y01La2ZfyIh1VrX9Rnfu5ygd6/XeQAGFxACkopDb3mkeXug48x5FCKhNzW+1j2t8/5EEwHTIfPm6G3aP37o/w/ir3QZ2V/xY0spdSxWL7MrLU7slmnDSY0UrH6CBJ/wFI3TNGECCDY9G4xmrpDkZvQMJ4q31EzLQuhipr7ag8ueFa+hUQy2d43nnPGg7NopHTUVyYlWpE+lUT4qfhDCnLpzB8oXLLJb4leptD/JblswOaZd0gRkDV0cJi69NNOUaclRpG6S1NPdRVPLjI3VSjWV8+FmaARknTxqfipl0tGR1DXvd0h251Ww/ZlaNQoaX3bqUS+IK6ZX4hysvuQinS+6n9638/6BbK4RLi6R11O8rPS4OnO66KHtw6yK96BWrg5QxDGcVzcoB8cYb/dE1zPO6C+pHxN0Ttw/JtJrx55+oV9Jq+ScF22IfBWDD+sHfTnBmKlpS99hPGSC4SBsi+dP3p0PjVBVedMdO3WoG57cAEbYVNkRHFROIzjYuGjoM7LOaEQKbtQjkuo5hCSMmezaNq3Gl6TE5J3ZLMu26SjpPJZo4h/9FJhT4JQJzjFXD7x54fBgzO9RvDH9Vl5vHIetcGHct1apLh/6gU3c2PYy5rrYh7a1NP29/H/G9xn/d+f7FNVcw9/H/9sf8ymXPnqdDd7Wx3OpzWRJuP8+iMTFe7wZq48Tce7QciNetUzku+pT/t4UHK/iIq2yPR/8y/315M/rWl1A/sM83phVh6+aeZY39OLNN4Y0P2GdHOWPAAAAAElFTkSuQmCC\");\n}\n/* Banner & Board Title */\n.boardBanner {\n line-height: 0;\n}\n.faded-4chan-banner .boardBanner {\n opacity: 0.5;\n transition: opacity 0.3s ease-in-out .5s;\n}\n.faded-4chan-banner .boardBanner:hover {\n opacity: 1;\n transition: opacity 0.3s ease-in;\n}\n/* From 4chan SS / OneeChan */\n\n.fourchan-banner-reflection .boardBanner::after {\n background-image: -moz-element(#Banner);\n bottom: -100%;\n content: '';\n left: 0;\n mask: url(\"data:image/svg+xml,#mask\");\n opacity: 0.3;\n position: absolute;\n right: 0;\n top: 100%;\n -moz-transform: scaleY(-1);\n z-index: -1;\n}\n\n.fourchan-banner-at-sidebar-top .boardBanner,\n.fourchan-banner-at-sidebar-bottom .boardBanner,\n.fourchan-banner-at-sidebar-bottom .boardBanner {\n position: fixed;\n}\n.fourchan-banner-at-sidebar-top .boardBanner {\n top: 16px;\n}\n.fourchan-banner-at-sidebar-bottom .boardBanner {\n bottom: 270px;\n}\n.fourchan-banner-under-post-form .boardBanner {\n bottom: 130px;\n}\n.board-title-at-sidebar-top.sidebar-location-right #boardTitle,\n.board-title-at-sidebar-bottom.sidebar-location-right #boardTitle,\n.board-title-under-post-form.sidebar-location-right #boardTitle,\n.fourchan-banner-at-sidebar-top.sidebar-location-right .boardBanner,\n.fourchan-banner-at-sidebar-bottom.sidebar-location-right .boardBanner,\n.fourchan-banner-under-post-form.sidebar-location-right .boardBanner {\n right: 2px;\n}\n.board-title-at-sidebar-top.sidebar-location-left #boardTitle,\n.board-title-at-sidebar-bottom.sidebar-location-left #boardTitle,\n.board-title-under-post-form.sidebar-location-left #boardTitle,\n.fourchan-banner-at-sidebar-top.sidebar-location-left .boardBanner,\n.fourchan-banner-at-sidebar-bottom.sidebar-location-left .boardBanner,\n.fourchan-banner-under-post-form.sidebar-location-left .boardBanner {\n left: 2px;\n}\n.board-title-at-sidebar-top #boardTitle,\n.board-title-at-sidebar-bottom #boardTitle,\n.board-title-under-post-form #boardTitle,\n.fourchan-banner-at-sidebar-top .boardBanner img,\n.fourchan-banner-at-sidebar-bottom .boardBanner img,\n.fourchan-banner-under-post-form .boardBanner img {\n width: 248px;\n}\n.board-title-at-sidebar-top.sidebar-large #boardTitle,\n.board-title-at-sidebar-bottom.sidebar-large #boardTitle,\n.board-title-under-post-form.sidebar-large #boardTitle,\n.fourchan-banner-at-sidebar-top.sidebar-large .boardBanner img,\n.fourchan-banner-at-sidebar-bottom.sidebar-large .boardBanner img,\n.fourchan-banner-under-post-form.sidebar-large .boardBanner img {\n width: 299px;\n}\n.fourchan-banner-at-top .boardBanner {\n position: relative;\n display: table;\n margin: 12px auto;\n text-align: center;\n}\n:root:not(.board-subtitle) .boardSubtitle,\n.board-title-hide #boardTitle,\n.fourchan-banner-hide .boardBanner {\n display: none;\n}\n#boardTitle {\n text-align: center;\n z-index: 4;\n}\n.board-title-at-sidebar-top #boardTitle,\n.board-title-at-sidebar-bottom #boardTitle,\n.board-title-under-post-form #boardTitle {\n position: fixed;\n}\n.board-title-at-sidebar-top.fourchan-banner-at-sidebar-top.sidebar-large #boardTitle {\n top: 121px;\n}\n.board-title-at-sidebar-top.fourchan-banner-at-sidebar-top #boardTitle {\n top: 104px;\n}\n.board-title-at-sidebar-top #boardTitle {\n top: 40px;\n}\n.board-title-at-sidebar-bottom #boardTitle {\n bottom: 280px;\n}\n.board-title-under-post-form #boardTitle {\n bottom: 140px;\n}\n/* Hover UI */\n.move {\n cursor: pointer;\n}\n#ihover {\n position: fixed;\n max-height: 97%;\n max-width: 75%;\n padding: 10px;\n z-index: 22;\n}\n#qp {\n position: fixed;\n z-index: 22;\n}\n#qp .postMessage::after {\n clear: both;\n display: block;\n content: \"\";\n}\n#qp .full-image {\n max-height: 300px;\n max-width: 500px;\n}\n#menu {\n position: fixed;\n outline: none;\n z-index: 22;\n}\n/* Image Expansion */\n.fit-width .full-image {\n max-width: 100%;\n width: 100%;\n}\n.fit-height .full-image {\n max-height: 95vh;\n}\n.images-overlap-post-form .full-image {\n position: relative;\n z-index: 21;\n}\n/* Delete Buttons */\n.hide-delete-ui .deleteform,\n.hide-delete-ui .post:not(#exlinks-options) .rice {\n display: none;\n}\n.hide-delete-ui .postInfo {\n padding: 0 0 0 3px;\n}\n.deleteform {\n position: fixed;\n z-index: 18;\n width: 0;\n bottom: 0;\n right: 0;\n border-width: 1px 0 0 1px;\n border-style: solid;\n font-size: 0;\n color: transparent;\n}\n.deleteform:hover {\n width: auto;\n}\n.deleteform::before {\n z-index: 18;\n border-width: 1px 0 0 1px;\n border-style: solid;\n content: '✖';\n display: block;\n position: fixed;\n bottom: 0;\n right: 0;\n -moz-box-sizing: border-box;\n height: 1.6em;\n width: 1.4em;\n text-align: center;\n}\n.deleteform:hover::before {\n display: none;\n}\n.deleteform input {\n margin: 0 1px 0 0;\n}\n/* Slideout Navigation */\n#boardNavDesktopFoot {\n position: fixed;\n text-align: center;\n font-size: 0;\n color: transparent;\n overflow: hidden;\n -moz-box-sizing: border-box;\n width: 248px;\n}\n.sidebar-large #boardNavDesktopFoot {\n width: 299px;\n}\n.sidebar-location-right #boardNavDesktopFoot {\n right: 2px;\n}\n.sidebar-location-left #boardNavDesktopFoot {\n left: 2px;\n}\n#boardNavDesktopFoot:hover {\n overflow-y: auto;\n padding: 2px;\n}\n#boardNavDesktopFoot:not(:hover) {\n border-color: transparent;\n background-color: transparent;\n height: 0;\n overflow: hidden;\n padding: 0;\n border: 0 none;\n}\n.slideout-navigation-compact #boardNavDesktopFoot {\n word-spacing: 1px;\n}\n.slideout-navigation-list #boardNavDesktopFoot a {\n display: block;\n}\n.slideout-navigation-list #boardNavDesktopFoot:hover {\n max-height: 400px;\n}\n.slideout-navigation-list #boardNavDesktopFoot a::after {\n content: ' - ' attr(title);\n}\n.slideout-navigation-list #boardNavDesktopFoot a[href*='//boards.4chan.org/']::after,\n.slideout-navigation-list #boardNavDesktopFoot a[href*='//rs.4chan.org/']::after {\n content: '/ - ' attr(title);\n}\n.slideout-navigation-list #boardNavDesktopFoot a[href*='//boards.4chan.org/']::before,\n.slideout-navigation-list #boardNavDesktopFoot a[href*='//rs.4chan.org/']::before {\n content: '/';\n}\n.slideout-navigation-hide #boardNavDesktopFoot {\n display: none;\n}\n/* Watcher */\n#watcher {\n position: fixed;\n z-index: 14;\n padding: 2px;\n}\n#watcher {\n width: 200px;\n}\n#watcher:not(:hover) {\n max-height: 200px;\n overflow: hidden;\n}\n.rounded-edges #watcher {\n border-radius: 3px;\n}\n#watcher > div {\n max-height: 1.3em;\n overflow: hidden;\n}\n.slideout-watcher #watcher {\n -moz-box-sizing: border-box;\n width: 248px;\n}\n.slideout-watcher.sidebar-large #boardNavDesktopFoot {\n width: 299px;\n}\n.slideout-watcher.sidebar-location-right #watcher {\n left: auto !important;\n right: 2px !important;\n}\n.slideout-watcher.sidebar-location-left #watcher {\n right: auto !important;\n left: 2px !important;\n}\n.slideout-watcher #watcher .move {\n cursor: default;\n}\n.slideout-watcher.underline-links #watcher .move {\n text-decoration: underline;\n}\n.slideout-watcher #watcher > div {\n overflow: hidden;\n}\n.slideout-watcher #watcher:hover {\n overflow-y: auto;\n}\n.slideout-watcher #watcher:not(:hover) {\n height: 0;\n overflow: hidden;\n border: 0 none;\n padding: 0;\n}\n.watch-thread-link {\n padding-top: 18px;\n width: 18px;\n height: 0px;\n display: inline-block;\n background-repeat: no-repeat;\n opacity: 0.2;\n position: relative;\n top: 1px;\n}\n.watch-thread-link.watched {\n opacity: 1;\n}\n/* Announcements */\n#globalMessage {\n text-align: center;\n}\n.rounded-edges #globalMessage {\n border-radius: 3px;\n}\n.announcements-slideout #globalMessage {\n position: fixed;\n padding: 2px;\n width: 248px;\n}\n.announcements-slideout.sidebar-location-right #globalMessage {\n left: auto;\n right: 2px;\n}\n.announcements-slideout.sidebar-location-left #globalMessage {\n right: auto;\n left: 2px;\n}\n.announcements-slideout.sidebar-large #globalMessage {\n width: 299px;\n}\n.announcements-slideout #globalMessage h3 {\n margin: 0;\n}\n.announcements-slideout #globalMessage:hover {\n -moz-box-sizing: border-box;\n overflow-y: auto;\n}\n.announcements-slideout #globalMessage:not(:hover) {\n height: 0;\n overflow: hidden;\n padding: 0;\n border: 0 none;\n}\n.announcements-hide #globalMessage {\n display: none !important;\n}\n/* Threads */\n#threads,\n.rounded-edges .board > .thread {\n border-radius: 4px;\n}\n/* Thread Clearfix */\n.thread > .threadContainer:last-of-type::after,\n.thread > .postContainer:last-of-type::after {\n display: block;\n content: ' ';\n clear: both;\n}\n/* Posts */\n.expanding {\n opacity: .5;\n}\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n.post > .file > .fileThumb > .full-image {\n display: none;\n}\n.expanded-image > .post > .file > .fileThumb > .full-image {\n display: block;\n}\n.thread > .replyContainer:last-of-type .post {\n margin-bottom: 0;\n}\n.menu-button {\n position: relative;\n}\n.stub .menu-button,\n.post .menu-button,\n.hide-thread-button,\n.show-thread-button span,\n.hide-reply-button,\n.show-reply-button span {\n float: right;\n}\n.post .menu-button,\n.hide-thread-button,\n.hide-reply-button {\n margin: 0 3px;\n opacity: 0;\n transition: opacity .3s ease-out 0s;\n}\n.post:hover .hide-reply-button,\n.post:hover .menu-button,\n.post:hover .hide-thread-button,\n.hidden_thread .hide-thread-button,\n.hidden_thread .menu-button,\n.inline .hide-reply-button,\n.inline .menu-button {\n opacity: 1;\n}\n.hidden_thread {\n text-align: right;\n}\n.color-user-ids .posteruid .hand {\n padding: .1em .3em;\n border-radius: 1em;\n font-size: 80%;\n}\n.postInfo > span {\n vertical-align: bottom;\n}\n.bolds .subject,\n.bolds .name {\n font-weight: 600;\n}\n.italics .postertrip {\n font-style: italic;\n}\n.underline-links .replylink {\n text-decoration: underline;\n}\n.fileInfo {\n padding: 0 3px;\n}\n.fileThumb {\n float: left;\n margin: 3px 20px;\n outline: none;\n}\n.reply.post {\n -moz-box-sizing: border-box;\n display: inline-block;\n}\n.fit-width-replies .reply.post {\n display: block;\n overflow: hidden;\n}\n.fit-width-replies .expanded-image .reply.post,\n.fit-width-replies .hasInline .reply.post {\n width: 100%;\n}\n.indent-replies #unread-line,\n.indent-replies .thread > .replyContainer,\n.indent-replies .threadContainer > .replyContainer {\n margin-left: 2em;\n}\n.expanded-image .reply.post,\n.hasInline .reply.post {\n display: inline-block;\n overflow: visible;\n clear: both;\n}\n.rounded-edges .post {\n border-radius: 3px;\n}\n.spoiler,\ns {\n text-decoration: none;\n}\n/* Emoji */\na.useremail:last-of-type {\n vertical-align: top;\n}\n/* Reply Clearfix */\n.reply.post .postMessage {\n clear: right;\n}\n.op-background .op.post .postMessage::after,\n.force-reply-break .op.post .postMessage::after {\n display: block;\n content: ' ';\n clear: both;\n}\n/* OP */\n.favicon {\n vertical-align: bottom;\n}\n.op-background .op.post {\n -moz-box-sizing: border-box;\n}\n/* Summary */\n.force-reply-break .summary {\n clear: both;\n}\n/* Inlined */\n.inline {\n margin: 2px 8px 2px 2px;\n}\n.post .inline {\n margin: 2px;\n}\n.inline .replyContainer {\n display: inline-block;\n}\n/* Inlined Clearfix */\n.inline .postMessage::after {\n clear: both;\n display: block;\n content: \"\";\n}\n/* Quotes */\n.inlined {\n opacity: .5;\n}\n.underline-links .quotelink {\n text-decoration: underline;\n}\n.filtered,\n.quotelink.filtered {\n text-decoration: line-through !important;\n}\n.inline + .hashlink {\n display: none;\n}\n/* Quote Threading */\n.threadContainer {\n padding-left: 2em;\n border-left: 1px solid;\n}\n.indent-replies .threadContainer {\n margin-left: 2em;\n padding-left: 0;\n}\n.threadOP {\n clear: both;\n}\n/* Backlinks */\n.underline-links .forwardlink,\n.underline-links .backlink {\n text-decoration: underline;\n}\n.backlink.dead {\n text-decoration: none;\n}\n.filtered-backlinks .filtered.backlink {\n display: none;\n}\n.backlinks-position-lower-left .container,\n.backlinks-position-lower-right .container {\n max-width: 100%;\n padding: 0 5px;\n}\n.backlinks-position-lower-left .reply.quoted,\n.backlinks-position-lower-right .reply.quoted {\n position: relative;\n padding-bottom: 1.7em;\n}\n.backlinks-position-lower-left .inline .reply.quoted,\n.backlinks-position-lower-right .inline .reply.quoted,\n.backlinks-position-lower-right #qp .reply.quoted,\n.backlinks-position-lower-left #qp .reply.quoted {\n position: static;\n padding-bottom: 0;\n}\n.backlinks-position-lower-right .reply .container,\n.backlinks-position-lower-left .reply .container {\n position: absolute;\n bottom: 0;\n padding: 0 5px;\n}\n.backlinks-position-lower-left .reply .container {\n left: 0;\n}\n.backlinks-position-lower-right .reply .container {\n right: 0;\n}\n.backlinks-position-lower-right .container::before,\n.backlinks-position-lower-left .reply .container::before {\n content: 'REPLIES: ';\n}\n.container:empty {\n display: none;\n}\n.backlinks-position-lower-left #qp .container,\n.backlinks-position-lower-left .inline .container,\n.backlinks-position-lower-right .inline .container,\n.backlinks-position-lower-right #qp .container {\n position: static;\n max-width: 100%;\n}\n.backlinks-position-lower-left #qp .container::before,\n.backlinks-position-lower-left .inline .container::before,\n.backlinks-position-lower-right #qp .container::before,\n.backlinks-position-lower-right .inline .container::before {\n content: '';\n}\n.backlinks-position-lower-right .inline .container {\n float: none;\n}\n/* Fixes text spoilers */\n.remove-spoilers.indicate-spoilers .spoiler::before,\n.remove-spoilers.indicate-spoilers s::before {\n content: '[spoiler]';\n}\n.remove-spoilers.indicate-spoilers .spoiler::after,\n.remove-spoilers.indicate-spoilers s::after {\n content: '[/spoiler]';\n}\n:root:not(.remove-spoilers) .spoiler:not(:hover) *,\n:root:not(.remove-spoilers) s:not(:hover) * {\n color: rgb(0,0,0) !important;\n text-shadow: none !important;\n}\n:root:not(.remove-spoilers) spoiler:not(:hover),\n:root:not(.remove-spoilers) s:not(:hover) {\n background-color: rgb(0,0,0);\n color: rgb(0,0,0) !important;\n text-shadow: none !important;\n}\n/* Code */\n.prettyprint {\n -moz-box-sizing: border-box;\n font-family: monospace;\n display: inline-block;\n margin-right: auto;\n white-space: pre-wrap;\n border-radius: 2px;\n overflow-x: auto;\n padding: 3px;\n max-width: 100%;\n}\n/* Menu */\n.entry {\n border-bottom: 1px solid rgba(0,0,0,.25);\n cursor: pointer;\n display: block;\n outline: none;\n padding: 3px 1em 3px 7px;\n position: relative;\n text-decoration: none;\n white-space: nowrap;\n}\n.entry:last-child {\n border-bottom: 0;\n}\n.has-submenu::after {\n content: \"\";\n border-left: .5em solid;\n border-top: .3em solid transparent;\n border-bottom: .3em solid transparent;\n display: inline-block;\n margin: .3em;\n position: absolute;\n right: 0;\n}\n.submenu {\n display: none;\n position: absolute;\n top: -1px;\n}\n.focused .submenu {\n display: block;\n}\n/* Stubs */\n.fit-width-replies .stub {\n display: block;\n text-align: right;\n}\n/* Element Replacing: */\n/* Checkboxes */\n.rice {\n cursor: pointer;\n width: 9px;\n height: 9px;\n margin: 2px 3px 3px;\n display: inline-block;\n vertical-align: bottom;\n}\ninput[type=checkbox]:checked + .rice {\n position: relative;\n}\ninput[type=checkbox]:checked + .rice::after {\n content: \"\";\n display: block;\n width: 4px;\n height: 10px;\n border-width: 0 3px 3px 0;\n border-style: solid;\n transform: rotate(45deg);\n position: absolute;\n left: 2px;\n bottom: -1px;\n}\n.rounded-edges .rice {\n border-radius: 2px;}\n}\n.circle-checkboxes .rice {\n border-radius: 6px;}\n}\ninput:checked + .rice {\n background-attachment: scroll;\n background-repeat: no-repeat;\n background-position: bottom right;\n}\n/* Selects */\n.selectrice {\n position: relative;\n cursor: default;\n overflow: hidden;\n text-align: left;\n}\n#settings .selectrice {\n display: inline-block;\n}\n.selectrice::after {\n content: \"\";\n border-right: .25em solid transparent;\n border-left: .25em solid transparent;\n position: absolute;\n right: .4em;\n top: .5em;\n}\n.selectrice::before {\n content: \"\";\n height: 1.6em;\n position: absolute;\n right: 1.3em;\n top: 0;\n}\n/* Select Dropdown */\n#selectrice {\n padding: 0;\n margin: 0;\n position: fixed;\n max-height: 120px;\n overflow-y: auto;\n overflow-x: hidden;\n z-index: 32;\n}\n#selectrice:empty {\n display: none;\n}\n/* Post Form Shortcut */\n.qr-shortcut.on-page {\n font-size: 250%;\n}\n/* Post Form */\n#qr {\n z-index: 20;\n position: fixed;\n background: none;\n border: none;\n padding: 1px;\n min-width: 248px;\n background: transparent;\n border: 1px solid transparent;\n}\n.sidebar-large #qr {\n min-width: 299px;\n}\n.rounded-edges #qr,\n.rounded-edges #qrtab {\n border-radius: 3px 3px 0 0;\n}\n.post-form-style-fixed #qr {\n top: auto !important;\n}\n.sidebar-location-left:not(.post-form-style-float) #qr {\n left: 0 !important;\n right: auto !important;\n}\n.sidebar-location-right:not(.post-form-style-float) #qr {\n right: 0 !important;\n left: auto !important;\n}\n:root:not(.post-form-style-float) #qr {\n bottom: 0 !important;\n}\n.fourchan-ss-navigation.fixed.bottom:not(.post-form-style-float) #qr,\n.fourchan-ss-navigation.index.pagination-sticky-bottom:not(.post-form-style-float) #qr {\n bottom: 1.5em !important;\n}\n.post-form-style-slideout #qr {\n top: auto !important;\n}\n.post-form-style-slideout.sidebar-location-left #qr {\n transform: translateX(-93%);\n}\n.post-form-style-slideout.sidebar-location-right #qr {\n transform: translateX(93%);\n}\n.post-form-style-slideout #qr:hover,\n.post-form-style-slideout #qr.has-focus,\n.post-form-style-slideout #qr.dump {\n transform: translate(0);\n}\n.post-form-style-tabbed-slideout #qr {\n top: auto !important;\n}\n.post-form-style-tabbed-slideout.sidebar-location-left #qr {\n transform: translateX(-100%);\n}\n.post-form-style-tabbed-slideout.sidebar-location-right #qr {\n transform: translateX(100%);\n}\n.post-form-style-tabbed-slideout #qr:hover,\n.post-form-style-tabbed-slideout #qr.has-focus,\n.post-form-style-tabbed-slideout #qr.dump {\n transform: translateX(0);\n}\n.post-form-style-tabbed-slideout #qrtab {\n position: absolute;\n top: 0;\n width: 120px;\n text-align: center;\n border-width: 1px 1px 0 1px;\n cursor: default;\n}\n.post-form-style-tabbed-slideout.sidebar-location-left #qrtab {\n transform: rotate(90deg);\n transform-origin: bottom right;\n left: 100%;\n}\n.post-form-style-tabbed-slideout.sidebar-location-right #qrtab {\n transform: rotate(-90deg);\n transform-origin: bottom right;\n right: 100%;\n}\n.post-form-style-tabbed-slideout #qr:hover #qrtab,\n.post-form-style-tabbed-slideout #qr.has-focus #qrtab,\n.post-form-style-tabbed-slideout #qr.dump #qrtab {\n opacity: 0 !important;\n}\n.post-form-style-slideout #qrtab input,\n.post-form-style-slideout #qrtab .rice,\n.post-form-style-tabbed-slideout #qrtab input,\n.post-form-style-tabbed-slideout #qrtab .close,\n.post-form-style-tabbed-slideout #qrtab .rice,\n.post-form-style-tabbed-slideout #qrtab span {\n display: none;\n}\n.post-form-style-tabbed-slideout #qrtab .selectrice {\n text-align: center;\n}\n.transparent-post-form #qr {\n opacity: 0.2;\n transition: opacity .3s ease-in-out 1s;\n}\n.transparent-post-form #qr:hover,\n.transparent-post-form #qr.has-focus,\n.transparent-post-form #qr.dump {\n opacity: 1;\n transition: opacity .3s linear;\n}\n:root:not(.show-post-form-header):not(.post-form-style-float):not(.post-form-style-tabbed-slideout) #qrtab,\n.post-form-style-float .autohide:not(:hover):not(.has-focus) form,\n.show-post-form-header.post-form-style-fixed .autohide:not(:hover):not(.has-focus) form {\n display: none !important;\n}\n:root:not(.post-form-style-tabbed-slideout) #qrtab {\n margin-bottom: 1px;\n}\n#qr.autohide:not(:hover):not(.has-focus) #qrtab {\n margin-bottom: 0;\n}\n.post-form-slideout-transitions.post-form-style-slideout #qr,\n.post-form-slideout-transitions.post-form-style-tabbed-slideout #qr {\n transition: transform .3s ease-in-out 1s;\n}\n.post-form-slideout-transitions.post-form-style-tabbed-slideout #qr.dump,\n.post-form-slideout-transitions.post-form-style-tabbed-slideout #qr:hover,\n.post-form-slideout-transitions.post-form-style-tabbed-slideout #qr.has-focus,\n.post-form-slideout-transitions.post-form-style-slideout #qr.dump,\n.post-form-slideout-transitions.post-form-style-slideout #qr:hover,\n.post-form-slideout-transitions.post-form-style-slideout #qr.has-focus {\n transition: transform .3s linear;\n}\n.post-form-slideout-transitions #qrtab {\n transition: opacity .3s ease-in-out 1s;\n}\n.post-form-slideout-transitions #qr:hover #qrtab {\n transition: opacity .3s linear;\n}\n#qr .close {\n float: right;\n padding: 0 3px;\n}\n#qr .warning {\n min-height: 1.6em;\n vertical-align: middle;\n padding: 0 1px;\n border-width: 1px;\n border-style: solid;\n}\n.persona {\n width: 248px;\n max-width: 100%;\n min-width: 100%;\n}\n.persona input.field {\n width: 100%;\n}\n#qr textarea.field {\n height: 11.6em;\n min-height: 6em;\n}\n#qr.has-captcha textarea.field {\n height: 6em;\n}\n.compact-post-form-inputs .persona input.field {\n width: 33%;\n}\n.compact-post-form-inputs .persona input.field:first-child {\n margin: 0;\n}\n.compact-post-form-inputs .persona input.field {\n margin: 0 0 0 0.5%;\n}\n.compact-post-form-inputs #qr textarea.field {\n height: 14.9em;\n min-height: 9em;\n}\n.compact-post-form-inputs #qr.has-captcha textarea.field {\n height: 9em;\n}\n.tripcode-hider .tripped:not(:hover):not(:focus) {\n color: transparent !important;\n}\n.textarea-resize-horizontal #qr textarea {\n resize: horizontal;\n}\n.textarea-resize-vertical #qr textarea {\n resize: vertical;\n}\n.textarea-resize-both #qr textarea {\n resize: both;\n}\n.textarea-resize-none #qr textarea {\n resize: none;\n}\n.captcha-img {\n margin: 1px 0 0;\n text-align: center;\n line-height: 0;\n}\n.captcha-img img {\n width: 246px;\n}\n.captcha-img,\n.captcha-img img {\n height: 4em;\n}\n.captcha-input {\n width: 100%;\n margin: 1px 0 0;\n}\n.field,\n.selectrice,\nbutton,\ninput:not([type=radio]) {\n -moz-box-sizing: border-box;\n height: 1.6em;\n margin: 1px 0 0;\n vertical-align: bottom;\n padding: 0 1px;\n outline: none;\n}\n.selectrice {\n padding-right: 1.6em;\n}\n#qr textarea {\n min-width: 100%;\n}\n#qr [type='submit'] {\n width: 25%;\n}\n[type='file'] {\n position: absolute;\n opacity: 0;\n z-index: -1;\n}\n/* Fake File Input */\n#qr-filename,\n#qr-filerm,\n.has-file #qr-no-file {\n display: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\n display: block;\n}\n.has-file #qr-filerm {\n display: inline-block;\n}\n#qr-extras-container {\n position: absolute;\n right: 0;\n top: 0;\n z-index: 2;\n}\n#qr-extras-container > label,\n#qr-extras-container > a {\n cursor: pointer;\n margin-right: 3px;\n}\n#qr-filename-container {\n -moz-box-sizing: border-box;\n display: inline-block;\n position: relative;\n width: 100px;\n min-width: 74.6%;\n max-width: 74.6%;\n margin-right: 0.4%;\n overflow: hidden;\n padding: 2px 1px 0;\n}\n/* Thread Select */\n#qr-thread-select,\n#qr-thread-select .selectrice div {\n display: inline;\n}\n#qr-thread-select .selectrice {\n cursor: pointer;\n display: inline-block;\n width: 120px;\n border: none;\n background: none transparent;\n padding: 0;\n margin: 0;\n height: auto;\n}\n#qr-thread-select .selectrice::before,\n#qr-thread-select .selectrice::after {\n display: none;\n}\n/* Dumping UI */\n.dump #dump-list-container {\n display: block;\n}\n#dump-list-container {\n display: none;\n position: relative;\n overflow-y: hidden;\n margin-top: 1px;\n}\n#dump-list {\n overflow-x: auto;\n overflow-y: hidden;\n white-space: nowrap;\n width: 248px;\n max-width: 100%;\n min-width: 100%;\n}\n#dump-list:hover {\n overflow-x: auto;\n}\n.qr-preview {\n -moz-box-sizing: border-box;\n counter-increment: thumbnails;\n cursor: move;\n display: inline-block;\n height: 90px;\n width: 90px;\n padding: 2px;\n opacity: .5;\n overflow: hidden;\n position: relative;\n text-shadow: 0 1px 1px #000;\n transition: opacity .25s ease-in-out;\n vertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\n opacity: .9;\n}\n.qr-preview::before {\n content: counter(thumbnails);\n color: #fff;\n position: absolute;\n top: 3px;\n right: 3px;\n text-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\n opacity: 1;\n}\n.qr-preview.drag {\n box-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\n border-color: #fff;\n}\n.qr-preview > span {\n color: #fff;\n}\n.remove {\n background: none;\n color: #e00;\n font-weight: 700;\n padding: 3px;\n}\na:only-of-type > .remove {\n display: none;\n}\n.remove:hover::after {\n content: \" Remove\";\n}\n.qr-preview > label {\n background: rgba(0,0,0,.5);\n color: #fff;\n right: 0; bottom: 0; left: 0;\n position: absolute;\n text-align: center;\n}\n.qr-preview > label > input {\n margin: 0;\n}\n#add-post {\n cursor: pointer;\n font-size: 2em;\n position: absolute;\n top: 50%;\n right: 10px;\n transform: translateY(-50%);\n}\n/* Ads */\n.fade-ads .topad img,\n.fade-ads .middlead img,\n.fade-ads .bottomad img {\n opacity: 0.3;\n transition: opacity .3s linear;\n}\n.fade-ads .topad img:hover,\n.fade-ads .middlead img:hover,\n.fade-ads .bottomad img:hover {\n opacity: 1;\n}\n.hide-ads .bottomad + hr,\n.hide-ads .topad,\n.hide-ads .middlead,\n.hide-ads .bottomad,\n.hide-ads .ad-plea {\n display: none;\n}\n.shrink-ads .topad a img,\n.shrink-ads .middlead a img,\n.shrink-ads .bottomad a img {\n width: 500px;\n height: auto;\n}\n/* Mascot Positions */\n#mascot {\n display: none;\n position: fixed;\n z-index: -1;\n bottom: 0;\n left: 0;\n right: 0;\n line-height: 0;\n cursor: pointer;\n}\n.mascot-position-above-post-form.post-form-style-fixed:not(.post-form-decorations) #mascot img {\n margin-bottom: -2px;\n}\n.mascots #mascot {\n display: block;\n}\n.sidebar-location-right.mascot-location-sidebar #mascot,\n.sidebar-location-left.mascot-location-opposite #mascot {\n left: auto;\n}\n.sidebar-location-left.mascot-location-sidebar #mascot,\n.sidebar-location-right.mascot-location-opposite #mascot {\n right: auto;\n}\n.sidebar-location-left.mascot-location-sidebar #mascot img,\n.sidebar-location-right.mascot-location-opposite #mascot img {\n transform: scaleX(-1);\n}\n.fourchan-ss-navigation.bottom.fixed #mascot,\n.fourchan-ss-navigation.index.pagination-sticky-bottom #mascot {\n bottom: 1.5em\n}\n.mascots-overlap-posts #mascot {\n z-index: 3;\n}\n.mascot-position-middle #mascot {\n bottom: 50% !important;\n transform: translateY(50%);\n}\n.mascot-position-top #mascot {\n bottom: auto !important;\n top: 17px;\n}\n.grayscale-mascots #mascot {\n filter: url('#grayscale');\n}\n.silhouettize-mascots #mascot img {\n filter: url('#mascot-filter');\n}\n/* Options */\n#overlay {\n position: fixed;\n z-index: 30;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n background: rgba(0,0,0,.5);\n}\n#appchanx-settings {\n width: auto;\n left: 15%;\n right: 15%;\n top: 15%;\n bottom: 15%;\n position: fixed;\n z-index: 31;\n padding: .3em;\n}\n.rounded-edges #appchanx-settings,\n.rounded-edges #appchanx-settings fieldset,\n.rounded-edges .mascots-container,\n.rounded-edges .section-container,\n.rounded-edges .sections-list > a {\n border-radius: 3px;\n}\n.description {\n display: none;\n}\n#appchanx-settings h3,\n.section-keybinds,\n.section-mascots,\n.section-script,\n.style {\n text-align: center;\n}\n.section-keybinds table,\n.section-script fieldset,\n.section-style fieldset {\n text-align: left;\n}\n.section-keybinds table {\n margin: auto;\n}\n#appchanx-settings fieldset {\n padding: 5px 0;\n vertical-align: top;\n border: 0;\n margin: 0 3px 6px;\n display: inline-block;\n}\n.single-column-mode #appchanx-settings fieldset {\n display: block;\n margin: 0 auto 6px;\n}\n#appchanx-settings .section-advanced fieldset {\n display: block;\n margin: 0 auto 6px;\n}\n.section-advanced .archive-cell {\n min-width: 200px;\n}\n.section-advanced .selectrice {\n display: inline-block;\n clear: both;\n}\n.section-container {\n overflow: auto;\n position: absolute;\n top: 1.7em;\n right: 5px;\n bottom: 5px;\n left: 5px;\n padding: 5px;\n}\n.sections-list {\n padding: 0 3px;\n float: left;\n}\n.sections-list > a {\n cursor: pointer;\n position: relative;\n padding: 0 4px;\n z-index: 1;\n height: 1.4em;\n display: inline-block;\n border-width: 1px 1px 0 1px;\n border-color: transparent;\n border-style: solid;\n}\n.sections-list > a.tab-selected {\n border-style: solid;\n}\n.credits {\n float: right;\n}\n#appchanx-settings h3 {\n margin: 0;\n}\n.section-script fieldset > div,\n.section-style fieldset > div,\n.section-advanced fieldset > div {\n overflow: visible;\n padding: 0 5px 0 7px;\n}\n#appchanx-settings tr:nth-of-type(2n+1),\n.section-script fieldset > div:nth-of-type(2n+1),\n.section-advanced fieldset > div:nth-of-type(2n+1),\n.section-style fieldset > div:nth-of-type(2n+1),\n.section-keybinds tr:nth-of-type(2n+1),\n#selectrice li:nth-of-type(2n+1) {\n background-color: rgba(0, 0, 0, 0.05);\n}\narticle li {\n margin: 10px 0 10px 2em;\n}\n#appchanx-settings .option {\n width: 50%;\n display: inline-block;\n vertical-align: bottom;\n}\n.option input {\n width: 100%;\n}\n.optionlabel {\n padding-left: 18px;\n}\n.rice + .optionlabel {\n padding-left: 0;\n}\n.section-script fieldset,\n.styleoption {\n text-align: left;\n}\n.section-style fieldset {\n width: 370px;\n}\n.section-script fieldset {\n width: 200px;\n}\n#mascotcontent,\n#themecontent,\n.suboptions {\n overflow: auto;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 1.7em;\n left: 0;\n}\n#mascotcontent,\n#themecontent {\n padding: 5px;\n}\n#themecontent {\n top: 1.8em;\n}\n.mAlign {\n height: 250px;\n vertical-align: bottom;\n display: table-cell;\n line-height: 0;\n}\n#save,\n.stylesettings {\n position: absolute;\n right: 10px;\n bottom: 0;\n}\n.section-style .suboptions {\n bottom: 0;\n}\n.section-container textarea {\n font-family: monospace;\n min-height: 150px;\n resize: vertical;\n width: 100%;\n}\n/* Hover Functionality */\n#mouseover {\n z-index: 33;\n position: fixed;\n max-width: 70%;\n}\n#mouseover:empty {\n display: none;\n}\n/* Mascot Tab */\n#mascot_hide {\n padding: 3px;\n position: absolute;\n top: 2px;\n right: 18px;\n}\n#mascot_hide .rice {\n float: left;\n}\n#mascot_hide > div {\n height: 0;\n text-align: right;\n overflow: hidden;\n}\n#mascot_hide:hover > div {\n height: auto;\n}\n#mascot_hide label {\n width: 100%;\n display: block;\n clear: both;\n text-decoration: none;\n}\n.mascots-container {\n padding: 0;\n text-align: center;\n}\n.mascot,\n.mascotcontainer {\n overflow: hidden;\n}\n.mascot {\n position: relative;\n border: none;\n margin: 5px;\n padding: 0;\n width: 200px;\n display: inline-block;\n background-color: transparent;\n}\n.mascotcontainer {\n height: 250px;\n border: 0;\n margin: 0;\n max-height: 250px;\n cursor: pointer;\n bottom: 0;\n border-width: 0 1px 1px;\n border-style: solid;\n border-color: transparent;\n overflow: hidden;\n}\n.mascot img {\n max-width: 200px;\n}\n.export-button,\n.mascotname,\n#mascot-options {\n -moz-box-sizing: border-box;\n padding: 0;\n width: 100%;\n}\n#mascot-options {\n opacity: 0;\n transition: opacity .3s linear;\n}\n.mascot:hover #mascot-options {\n opacity: 1;\n}\n#mascot-options {\n position: absolute;\n bottom: 0;\n right: 0;\n left: 0;\n}\n.export-button {\n position: absolute;\n bottom: 1.7em;\n right: 0;\n left: 0;\n text-align: center;\n}\n#mascot-options a {\n display: inline-block;\n width: 33%;\n}\n#upload {\n position: absolute;\n width: 100px;\n left: 50%;\n margin-left: -50px;\n text-align: center;\n bottom: 0;\n}\n#mascots_batch {\n position: absolute;\n left: 10px;\n bottom: 0;\n}\n/* Themes Tab */\n#themes h1 {\n position: absolute;\n right: 300px;\n bottom: 10px;\n margin: 0;\n transition: all .2s ease-in-out;\n opacity: 0;\n}\n#themes .selectedtheme h1 {\n right: 11px;\n opacity: 1;\n}\n#addthemes {\n position: absolute;\n left: 10px;\n bottom: 0;\n}\n.theme {\n margin: 1em;\n}\n/* Theme Editor */\n#themeConf {\n position: fixed;\n top: 0;\n bottom: 0;\n width: 296px;\n z-index: 10;\n}\n.sidebar-location-right #themeConf {\n right: 2px;\n left: auto;\n}\n.sidebar-location-right #themeConf {\n left: 2px;\n right: auto;\n}\n#themebar input {\n width: 30%;\n}\n.option .color {\n width: 10%;\n border-left: none !important;\n color: transparent !important;\n}\n.option .colorfield {\n width: 90%;\n}\n.themevar textarea {\n min-width: 100%;\n max-width: 100%;\n height: 20em;\n resize: vertical;\n}\n/* Mascot Editor */\n#mascotConf {\n position: fixed;\n height: 17em;\n bottom: 0;\n left: 50%;\n width: 500px;\n margin-left: -250px;\n overflow: auto;\n z-index: 10;\n}\n#mascotConf .option,\n#mascotConf .optionlabel {\n -moz-box-sizing: border-box;\n width: 50%;\n display: inline-block;\n vertical-align: middle;\n}\n#mascotConf .option input {\n width: 100%;\n}\n#close {\n position: absolute;\n left: 10px;\n bottom: 0;\n}\n/* Catalog */\n#content .navLinks,\n#info .navLinks,\n.btn-wrap {\n display: block;\n}\n.navLinks > .btn-wrap:not(:first-of-type)::before {\n content: ' - ';\n}\n.button {\n cursor: pointer;\n}\n#content .btn-wrap,\n#info .btn-wrap {\n display: inline-block;\n}\n#post-preview,\n#quote-preview {\n position: absolute;\n z-index: 22;\n}\n.rounded-edges #post-preview {\n border-radius: 3px;\n}\n#settings,\n#threads,\n#info .navLinks,\n#content .navLinks {\n text-align: center;\n}\n#threads .thread {\n vertical-align: top;\n display: inline-block;\n word-wrap: break-word;\n overflow: hidden;\n margin: 1px;\n padding: 5px 0 3px;\n text-align: center;\n}\n.extended-small .thread,\n.small .thread {\n width: 165px;\n max-height: 320px;\n}\n.small .teaser,\n.large .teaser {\n display: none;\n}\n.extended-large .thread,\n.large .thread {\n width: 270px;\n max-height: 410px;\n}\n.extended-small .thumb,\n.small .thumb {\n max-width: 150px;\n max-height: 150px;\n}\n.panel {\n position: fixed;\n top: 50% !important;\n left: 50%;\n transform: translate(-50%, -50%);\n padding: 5px;\n}\n.icon::after {\n display: inline-block;\n float: right;\n width: 1em;\n cursor: pointer;\n}\n.helpIcon::after {\n content: '?';\n}\n.closeIcon::after {\n content: '✖';\n}\n/* Front Page */\n#logo {\n text-align: center;\n}\n#doc {\n -moz-box-sizing: border-box;\n margin: 10px auto;\n width: 1006px;\n padding: 2px;\n position: relative;\n}\n.rounded-edges #doc,\n.rounded-edges #doc div {\n border-radius: 3px;\n}\n#boards .boxcontent {\n vertical-align: top;\n text-align: center;\n}\n#filter-container,\n#options-container {\n top: 4px;\n right: 8px;\n position: absolute;\n}\n#filtermenu,\n#optionsmenu {\n top: 100% !important;\n left: auto !important;\n right: 0 !important;\n}\n#boards .column {\n -moz-box-sizing: border-box;\n display: inline-block;\n width: 180px;\n text-align: left;\n vertical-align: top;\n}\n.bd ul,\n.boxcontent ul {\n vertical-align: top;\n padding: 0;\n margin: 0;\n}\n.right-box .boxcontent ul {\n padding: 0 10px;\n}\n.yuimenuitem,\n.boxcontent li {\n list-style-type: none;\n}\n.boxbar {\n position: relative;\n}\n#doc h3,\n.boxbar h2 {\n margin: 0;\n}\n#doc h3 {\n text-decoration: none !important;\n}\n.underline-links #doc h3 {\n text-decoration: underline !important;\n}\n#ft,\n.box-outer {\n margin: 2px 0 0;\n overflow: hidden;\n}\n#ft,\n.boxbar,\n.boxcontent {\n padding: 0 8px;\n}\n.yui-module {\n position: absolute;\n}\n.yuimenuitem::before {\n content: \" [ ] \";\n font-family: monospace;\n}\n.yuimenuitem-checked::before {\n content: \" [x] \"\n}\n.yui-g {\n overflow: hidden;\n}\n.yui-u {\n display: inline-block;\n vertical-align: top;\n width: 499px;\n float: right;\n}\n.yui-u.first {\n float: left;\n}\n#recent-images .boxcontent {\n text-align: center;\n}\n#ft {\n text-align: center;\n}\n#ft ul {\n padding: 0;\n}\n#ft li {\n list-style-type: none;\n display: inline-block;\n width: 100px;\n}\n#preview-tooltip-nws,\n#preview-tooltip-ws,\n#ft .fill,\n.clear-bug {\n display: none;\n}\n/* ExLinks */\n#exlinks-options-content {\n padding: 5px;\n}",
dynamic: function() {
var editSpace, sidebarLocation, _conf;
-
_conf = Conf;
sidebarLocation = _conf["Sidebar Location"] === "left" ? ["left", "right"] : ["right", "left"];
if (_conf['editMode'] === "theme") {
@@ -11613,7 +11281,6 @@
},
theme: function(theme) {
var background, backgroundC, bgColor, replyRGB, replybg;
-
bgColor = new Style.color(Style.colorToHex(backgroundC = theme["Background Color"]) || 'aaaaaa');
replybg = new Style.color(Style.colorToHex(theme["Reply Background"]));
replyRGB = "rgb(" + (replybg.shiftRGB(parseInt(Conf['Silhouette Contrast'], 10), true)) + ")";
@@ -11623,7 +11290,6 @@
},
iconPositions: function() {
var align, aligner, css, i, iconOffset, navlinks, notCatalog, notEither, position, psa, sidebar, _conf;
-
css = "#navtopright .exlinksOptionsLink::after,\n#main-menu,\nbody > div.navLinks > a:first-of-type::after,\n.slideout-watcher #watcher::after,\n.announcements-slideout #globalMessage::after,\n#boardNavDesktopFoot::after,\n#img-controls,\n#catalog::after,\n#fappeTyme {\n z-index: 18;\n position: fixed;\n display: block;\n width: 15px;\n height: 15px;\n content: \"\";\n opacity: 0.5;\n}\nbody::after {\n content: \"\";\n display: block;\n position: fixed;\n z-index: 5;\n width: 18px;\n height: 18px;\n}\n.invisible-icons #navtopright .exlinksOptionsLink::after,\n.invisible-icons #main-menu,\n.invisible-icons body > div.navLinks > a:first-of-type::after,\n.invisible-icons.slideout-watcher #watcher::after,\n.invisible-icons.announcements-slideout #globalMessage::after,\n.invisible-icons #boardNavDesktopFoot::after,\n.invisible-icons #img-controls,\n.invisible-icons #catalog::after,\n.invisible-icons #fappeTyme {\n opacity: 0;\n}\n#navtopright .exlinksOptionsLink,\nbody > div.navLinks > a:first-of-type,\n" + (Conf['Slideout Watcher'] ? '#watcher,' : '') + "\n" + (Conf['Announcements'] === 'slideout' ? '#globalMessage,' : '') + "\n#boardNavDesktopFoot,\n#catalog {\n z-index: 16;\n}\n#navtopright .exlinksOptionsLink:hover,\nbody > div.navLinks > a:first-of-type:hover,\n.slideout-watcher #watcher:hover,\n.announcements-slideout #globalMessage:hover,\n#boardNavDesktopFoot:hover,\n#img-controls,\n#catalog:hover {\n z-index: 17;\n}\n#main-menu {\n visibility: visible;\n background-position: 0 0;\n cursor: pointer;\n}\nbody > div.navLinks > a:first-of-type::after {\n cursor: pointer;\n background-position: 0 -15px;\n}\n.slideout-watcher #watcher::after {\n background-position: 0 -30px;\n}\n.announcements-slideout #globalMessage::after {\n background-position: 0 -45px;\n}\n#boardNavDesktopFoot::after {\n background-position: 0 -60px;\n}\n#img-controls {\n background-position: 0 -90px;\n}\n#navtopright .exlinksOptionsLink::after {\n background-position: 0 -105px;\n}\n#catalog::after {\n visibility: visible;\n background-position: 0 -120px;\n}\n#fappeTyme {\n background-position: 0 -135px;\n}\n#boardNavDesktopFoot:hover::after,\n.announcements-slideout #globalMessage:hover::after,\n#img-controls:hover,\n#navlinks a:hover,\n#appchanOptions:hover,\n#main-menu:hover,\n#navtopright .exlinksOptionsLink:hover::after,\n#qr #qrtab,\n.slideout-watcher #watcher:hover::after,\n.thumbnail#selected,\ndiv.navLinks > a:first-of-type:hover::after,\n#catalog:hover::after,\n#fappeTyme:hover {\n opacity: 1 !important;\n}";
_conf = Conf;
i = 0;
@@ -11638,7 +11304,6 @@
notEither = notCatalog && g.BOARD !== 'f';
aligner = function(first, checks) {
var enabled, position, _i, _len;
-
position = [first];
for (_i = 0, _len = checks.length; _i < _len; _i++) {
enabled = checks[_i];
@@ -11665,7 +11330,6 @@
},
padding: function() {
var css;
-
Style.padding.nav = Header.bar;
Style.padding.pages = $('.pagelist', d.body);
css = "body {\npadding-bottom: 1px;\n}\n.fourchan-ss-navigation.fixed.top:not(.autohide) body::before {\ntop: " + Style.padding.nav.offsetHeight + "px;\n}\n.fourchan-ss-navigation.fixed.bottom:not(.autohide) body::before {\nbottom: " + Style.padding.nav.offsetHeight + "px;\n}\n.top:not(.autohide) body {\npadding-top: " + (Style.padding.nav.offsetHeight + 1) + "px;\n}\n.bottom:not(.autohide) body {\npadding-bottom: " + (Style.padding.nav.offsetHeight + 1) + "px;\"\n}";
@@ -11684,13 +11348,11 @@
this.rgb = this.private_rgb.join(",");
this.isLight = function() {
var rgb;
-
rgb = this.private_rgb;
return (rgb[0] + rgb[1] + rgb[2]) >= 400;
};
this.shiftRGB = function(shift, smart) {
var minmax, rgb;
-
minmax = function(base) {
return Math.min(Math.max(base, 0), 255);
};
@@ -11702,7 +11364,6 @@
},
colorToHex: function(color) {
var digits, hex;
-
if (color.substr(0, 1) === '#') {
return color.slice(1, color.length);
}
@@ -11726,7 +11387,6 @@
ThemeTools = {
init: function(key) {
var colorInput, div, fileInput, header, input, item, layout, theme, themeContent, _i, _j, _len, _len1, _ref;
-
Conf['editMode'] = "theme";
theme = Themes[key];
if (theme) {
@@ -11824,7 +11484,6 @@
},
apply: function() {
var depth, i, len, toggle1, toggle2;
-
depth = 0;
toggle1 = false;
toggle2 = false;
@@ -11859,12 +11518,10 @@
},
uploadImage: function(evt, el) {
var file, reader;
-
file = evt.target.files[0];
reader = new FileReader();
reader.onload = function(evt) {
var val;
-
val = "url(\"" + evt.target.result + "\")";
el.previousSibling.value = val;
editTheme["Background Image"] = val;
@@ -11874,12 +11531,10 @@
},
importtheme: function(evt) {
var file, reader;
-
file = evt.target.files[0];
reader = new FileReader();
reader.onload = function(e) {
var bgColor, bgRPA, blinkColor, brderColor, color, err, imported, inputColor, inputbColor, jlinkColor, linkColor, linkHColor, mainColor, name, nameColor, quoteColor, sageColor, textColor, timeColor, titleColor, tripColor;
-
try {
imported = JSON.parse(e.target.result);
if (!imported) {
@@ -11980,7 +11635,6 @@
}
return $.get("userThemes", {}, function(_arg) {
var userThemes;
-
userThemes = _arg.userThemes;
userThemes[name] = Themes[name];
$.set('userThemes', userThemes);
@@ -11995,7 +11649,6 @@
},
save: function(theme) {
var name;
-
name = theme["Theme"];
if (Themes[name] && !Themes[name]["Deleted"]) {
if (confirm("A theme with this name already exists. Would you like to over-write?")) {
@@ -12008,7 +11661,6 @@
delete Themes[name]["Theme"];
return $.get("userThemes", {}, function(_arg) {
var userThemes;
-
userThemes = _arg.userThemes;
userThemes[name] = Themes[name];
$.set('userThemes', userThemes);
@@ -12034,7 +11686,6 @@
},
setup: function() {
var btn, entry, psa;
-
$.off(d, '4chanXInitFinished', PSAHiding.setup);
if (!(psa = $.id('globalMessage'))) {
return;
@@ -12063,7 +11714,6 @@
$.on(btn, 'click', PSAHiding.toggle);
$.get('hiddenPSA', 0, function(_arg) {
var hiddenPSA;
-
hiddenPSA = _arg.hiddenPSA;
PSAHiding.sync(hiddenPSA);
$.prepend(psa, btn);
@@ -12073,7 +11723,6 @@
},
toggle: function(e) {
var UTC;
-
if ($.hasClass(this, 'hide-announcement')) {
UTC = +$.id('globalMessage').dataset.utc;
$.set('hiddenPSA', UTC);
@@ -12085,7 +11734,6 @@
},
sync: function(UTC) {
var hr, psa;
-
psa = $.id('globalMessage');
psa.hidden = PSAHiding.btn.hidden = UTC && UTC >= +psa.dataset.utc ? true : false;
if ((hr = psa.nextElementSibling) && hr.nodeName === 'HR') {
@@ -12098,7 +11746,6 @@
CatalogLinks = {
init: function() {
var el, input;
-
$.ready(this.ready);
if (!Conf['Catalog Links']) {
return;
@@ -12123,14 +11770,12 @@
},
toggle: function() {
var useCatalog;
-
$.event('CloseMenu');
$.set('Header catalog links', useCatalog = this.checked);
return CatalogLinks.set(useCatalog);
},
set: function(useCatalog) {
var a, board, path, _i, _len, _ref;
-
path = useCatalog ? 'catalog' : '';
_ref = $$("#board-list a[href*=\"boards.4chan.org\"]:not(.catalog),\n#boardNavDesktopFoot a[href*=\"boards.4chan.org\"]");
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -12152,7 +11797,6 @@
},
ready: function() {
var catalogLink;
-
if (catalogLink = $('.pages.cataloglink a', d.body) || $('[href=".././catalog"]', d.body)) {
if (g.VIEW !== 'thread') {
$.add(d.body, catalogLink);
@@ -12174,7 +11818,6 @@
},
node: function(post) {
var str, uid;
-
if (!(uid = $('.hand', this.nodes.uniqueID))) {
return;
}
@@ -12186,7 +11829,6 @@
ids: {},
compute: function(str) {
var hash, rgb;
-
hash = this.hash(str);
rgb = [(hash >> 24) & 0xFF, (hash >> 16) & 0xFF, (hash >> 8) & 0xFF];
rgb[3] = ((rgb[0] * 0.299) + (rgb[1] * 0.587) + (rgb[2] * 0.114)) > 125;
@@ -12195,13 +11837,11 @@
},
apply: function() {
var rgb;
-
rgb = IDColor.ids[this] || IDColor.compute(this);
return ("background-color: rgb(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + "); color: ") + (rgb[3] ? "black; border-radius: 3px; padding: 0px 2px;" : "white; border-radius: 3px; padding: 0px 2px;");
},
hash: function(str) {
var i, j, msg;
-
msg = 0;
i = 0;
j = str.length;
@@ -12255,7 +11895,6 @@
},
node: function() {
var a;
-
if (a = $('.abbr > a:not([onclick])', this.nodes.comment)) {
return $.on(a, 'click', ExpandComment.cb);
}
@@ -12263,14 +11902,12 @@
callbacks: [],
cb: function(e) {
var post;
-
e.preventDefault();
post = Get.postFromNode(this);
return ExpandComment.expand(post);
},
expand: function(post) {
var a;
-
if (post.nodes.longComment && !post.nodes.longComment.parentNode) {
$.replace(post.nodes.shortComment, post.nodes.longComment);
post.nodes.comment = post.nodes.longComment;
@@ -12286,7 +11923,6 @@
},
contract: function(post) {
var a;
-
if (!post.nodes.shortComment) {
return;
}
@@ -12297,7 +11933,6 @@
},
parse: function(req, a, post) {
var callback, clone, comment, href, postObj, posts, quote, spoilerRange, status, _i, _j, _k, _len, _len1, _len2, _ref, _ref1;
-
status = req.status;
if (![200, 304].contains(status)) {
a.textContent = "Error " + req.statusText + " (" + status + ")";
@@ -12354,7 +11989,6 @@
},
node: function() {
var a, span;
-
if (!(span = $('.summary', this.OP.nodes.root.parentNode))) {
return;
}
@@ -12368,13 +12002,11 @@
},
cbToggle: function() {
var op;
-
op = Get.postFromRoot(this.previousElementSibling);
return ExpandThread.toggle(op.thread);
},
toggle: function(thread) {
var a, inlined, num, post, replies, reply, threadRoot, _i, _j, _k, _len, _len1, _len2, _ref, _ref1;
-
threadRoot = thread.OP.nodes.root.parentNode;
a = $('.summary', threadRoot);
switch (thread.isExpanded) {
@@ -12443,7 +12075,6 @@
},
parse: function(req, thread, a) {
var link, node, nodes, post, posts, replies, reply, spoilerRange, status, _i, _len;
-
if (a.textContent[0] === '+') {
return;
}
@@ -12501,7 +12132,6 @@
},
createFunc: function(format) {
var code;
-
code = format.replace(/%(.)/g, function(s, c) {
if (c in FileInfo.formatters) {
return "' + FileInfo.formatters." + c + ".call(post) + '";
@@ -12513,7 +12143,6 @@
},
convertUnit: function(size, unit) {
var i;
-
if (unit === 'B') {
return "" + (size.toFixed()) + " Bytes";
}
@@ -12544,7 +12173,6 @@
},
n: function() {
var fullname, shortname;
-
fullname = this.file.name;
shortname = Build.shortFilename(this.file.name, this.isReply);
if (fullname === shortname) {
@@ -12588,7 +12216,6 @@
Fourchan = {
init: function() {
var board;
-
if (g.VIEW === 'catalog') {
return;
}
@@ -12610,7 +12237,6 @@
},
code: function() {
var pre, _i, _len, _ref;
-
if (this.isClone) {
return;
}
@@ -12640,13 +12266,11 @@
Keybinds = {
init: function() {
var init;
-
if (g.VIEW === 'catalog' || !Conf['Keybinds']) {
return;
}
init = function() {
var node, _i, _len, _ref;
-
$.off(d, '4chanXInitFinished', init);
$.on(d, 'keydown', Keybinds.keydown);
_ref = $$('[accesskey]');
@@ -12659,7 +12283,6 @@
},
keydown: function(e) {
var form, key, notification, notifications, op, target, thread, threadRoot, _i, _len;
-
if (!(key = Keybinds.keyCode(e))) {
return;
}
@@ -12831,7 +12454,6 @@
},
keyCode: function(e) {
var kc, key;
-
key = (function() {
switch (kc = e.keyCode) {
case 8:
@@ -12887,7 +12509,6 @@
},
tags: function(tag, ta) {
var range, selEnd, selStart, value;
-
value = ta.value;
selStart = ta.selectionStart;
selEnd = ta.selectionEnd;
@@ -12898,13 +12519,11 @@
},
sage: function() {
var isSage;
-
isSage = /sage/i.test(QR.nodes.email.value);
return QR.nodes.email.value = isSage ? "" : "sage";
},
img: function(thread, all) {
var post;
-
if (all) {
return ImageExpand.cb.toggleAll();
} else {
@@ -12914,7 +12533,6 @@
},
open: function(thread, tab) {
var url;
-
if (g.VIEW !== 'index') {
return;
}
@@ -12927,7 +12545,6 @@
},
hl: function(delta, thread) {
var axe, headRect, next, postEl, rect, replies, reply, root, topMargin, _i, _len;
-
if (!delta) {
if (postEl = $('.reply.highlight', thread)) {
$.rmClass(postEl, 'highlight');
@@ -12987,7 +12604,6 @@
Nav = {
init: function() {
var append, next, prev, span;
-
switch (g.VIEW) {
case 'index':
if (!Conf['Index Navigation']) {
@@ -13036,7 +12652,6 @@
},
getThread: function(full) {
var headRect, i, rect, thread, threads, topMargin, _i, _len;
-
if (Conf['Bottom header'] || !Conf['Fixed Header']) {
topMargin = 0;
} else {
@@ -13062,7 +12677,6 @@
},
scroll: function(delta) {
var i, rect, thread, threads, top, topMargin, _ref, _ref1;
-
_ref = Nav.getThread(true), threads = _ref[0], thread = _ref[1], i = _ref[2], rect = _ref[3], topMargin = _ref[4];
top = rect.top - topMargin;
if ((delta === -1 && top > -5) || (delta === +1 && top < 5)) {
@@ -13087,7 +12701,6 @@
},
node: function() {
var dateEl;
-
if (this.isClone) {
return;
}
@@ -13097,7 +12710,6 @@
},
relative: function(diff, now, date) {
var days, months, number, rounded, unit, years;
-
unit = (number = diff / $.DAY) >= 1 ? (years = now.getYear() - date.getYear(), months = now.getMonth() - date.getMonth(), days = now.getDate() - date.getDate(), years > 1 ? (number = years - (months < 0 || months === 0 && days < 0), 'year') : years === 1 && (months > 0 || months === 0 && days >= 0) ? (number = years, 'year') : (months = (months + 12) % 12) > 1 ? (number = months - (days < 0), 'month') : months === 1 && days >= 0 ? (number = months, 'month') : 'day') : (number = diff / $.HOUR) >= 1 ? 'hour' : (number = diff / $.MINUTE) >= 1 ? 'minute' : (number = Math.max(0, diff) / $.SECOND, 'second');
rounded = Math.round(number);
if (rounded !== 1) {
@@ -13108,7 +12720,6 @@
stale: [],
flush: function() {
var now, update, _i, _len, _ref;
-
if (d.hidden) {
return;
}
@@ -13124,16 +12735,13 @@
},
setUpdate: function(post) {
var markStale, setOwnTimeout, update;
-
setOwnTimeout = function(diff) {
var delay;
-
delay = diff < $.MINUTE ? $.SECOND - (diff + $.SECOND / 2) % $.SECOND : diff < $.HOUR ? $.MINUTE - (diff + $.MINUTE / 2) % $.MINUTE : diff < $.DAY ? $.HOUR - (diff + $.HOUR / 2) % $.HOUR : $.DAY - (diff + $.DAY / 2) % $.DAY;
return setTimeout(markStale, delay);
};
update = function(now) {
var date, diff, relative, singlePost, _i, _len, _ref;
-
date = post.info.date;
diff = now - date;
relative = RelativeDates.relative(diff, now, date);
@@ -13174,7 +12782,6 @@
},
node: function(post) {
var spoiler, spoilers, _i, _len;
-
spoilers = $$('s', this.nodes.comment);
for (_i = 0, _len = spoilers.length; _i < _len; _i++) {
spoiler = spoilers[_i];
@@ -13194,7 +12801,6 @@
},
ready: function() {
var field;
-
field = $.id('recaptcha_response_field');
$.on(field, 'keydown', function(e) {
if (e.keyCode === 8 && !field.value) {
@@ -13203,7 +12809,6 @@
});
return $.on($('form'), 'submit', function(e) {
var response;
-
e.preventDefault();
response = field.value.trim();
if (!/\s/.test(response)) {
@@ -13233,7 +12838,6 @@
},
createFunc: function(format) {
var code;
-
code = format.replace(/%([A-Za-z])/g, function(s, c) {
if (c in Time.formatters) {
return "' + Time.formatters." + c + ".call(date) + '";
@@ -13318,7 +12922,6 @@
Settings = {
init: function() {
var el, settings;
-
el = $.el('a', {
className: 'settings-link',
href: 'javascript:;',
@@ -13332,7 +12935,6 @@
});
$.get('previousversion', null, function(item) {
var changelog, curr, prev, previous;
-
if (previous = item['previousversion']) {
if (previous === g.VERSION) {
return;
@@ -13378,7 +12980,6 @@
},
open: function(openSection) {
var dialog, link, links, overlay, section, sectionToOpen, _i, _len, _ref;
-
if (Conf['editMode'] === "theme") {
if (confirm("Opening the options dialog will close and discard any theme changes made with the theme editor.")) {
ThemeTools.close();
@@ -13440,7 +13041,6 @@
sections: [],
addSection: function(title, open) {
var hyphenatedTitle, _ref;
-
if (typeof title !== 'string') {
_ref = title.detail, title = _ref.title, open = _ref.open;
}
@@ -13453,7 +13053,6 @@
},
openSection: function(mode) {
var section, selected;
-
if (selected = $('.tab-selected', Settings.dialog)) {
$.rmClass(selected, 'tab-selected');
}
@@ -13467,7 +13066,6 @@
},
main: function(section) {
var arr, button, description, div, fs, hiddenNum, input, inputs, items, key, obj, _ref;
-
items = {};
inputs = {};
_ref = Config.main;
@@ -13494,7 +13092,6 @@
}
$.get(items, function(items) {
var val;
-
for (key in items) {
val = items[key];
inputs[key].checked = val;
@@ -13509,7 +13106,6 @@
boards: {}
}, function(item) {
var ID, board, thread, _ref1;
-
_ref1 = item.hiddenThreads.boards;
for (ID in _ref1) {
board = _ref1[ID];
@@ -13524,7 +13120,6 @@
boards: {}
}, function(item) {
var ID, board, post, thread, _ref1;
-
_ref1 = item.hiddenPosts.boards;
for (ID in _ref1) {
board = _ref1[ID];
@@ -13544,7 +13139,6 @@
boards: {}
}, function(item) {
var boardID;
-
for (boardID in item.hiddenThreads.boards) {
localStorage.removeItem("4chan-hide-t-" + boardID);
}
@@ -13555,7 +13149,6 @@
},
"export": function(now, data) {
var a, db, span, _i, _len;
-
if (typeof now !== 'number') {
now = Date.now();
data = {
@@ -13592,7 +13185,6 @@
},
onImport: function() {
var file, output, reader;
-
if (!(file = this.files[0])) {
return;
}
@@ -13604,7 +13196,6 @@
reader = new FileReader();
reader.onload = function(e) {
var data, err;
-
try {
data = JSON.parse(e.target.result);
Settings.loadSettings(data);
@@ -13621,13 +13212,11 @@
},
loadSettings: function(data) {
var version;
-
version = data.version.split('.');
return $.set(data.Conf);
},
convertSettings: function(data, map) {
var newKey, prevKey;
-
for (prevKey in map) {
newKey = map[prevKey];
if (newKey) {
@@ -13639,7 +13228,6 @@
},
filter: function(section) {
var select;
-
section.innerHTML = "";
select = $('select', section);
$.on(select, 'change', Settings.selectFilter);
@@ -13647,7 +13235,6 @@
},
selectFilter: function() {
var div, name, ta;
-
div = this.nextElementSibling;
if ((name = this.value) !== 'guide') {
$.rmAll(div);
@@ -13667,7 +13254,6 @@
},
sauce: function(section) {
var ta;
-
section.innerHTML = " Sauce is disabled.
Lines starting with a # will be ignored.
You can specify a display text by appending ;text:[text] to the URL.
These parameters will be replaced by their corresponding values:\n%TURL: Thumbnail URL.%URL: Full image URL.%MD5: MD5 hash.%board: Current board.
";
ta = $('textarea', section);
$.get('sauces', Conf['sauces'], function(item) {
@@ -13690,7 +13276,6 @@
},
advanced: function(section) {
var archive, boardID, boardOptions, boardSelect, boards, data, event, input, inputs, item, items, name, row, rows, ta, table, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref, _ref1, _ref2, _ref3, _ref4;
-
section.innerHTML = "";
items = {};
inputs = {};
@@ -13710,7 +13295,6 @@
$.on(ta, 'change', $.cb.value);
$.get(items, function(items) {
var key, val;
-
for (key in items) {
val = items[key];
input = inputs[key];
@@ -13779,7 +13363,6 @@
});
$.get('selectedArchives', Conf['selectedArchives'], function(_arg) {
var option, selectedArchives, type;
-
selectedArchives = _arg.selectedArchives;
for (boardID in selectedArchives) {
data = selectedArchives[boardID];
@@ -13794,7 +13377,6 @@
},
addArchiveCell: function(boardID, data, type) {
var archive, i, length, options, select, td;
-
length = data[type].length;
td = $.el('td', {
className: 'archive-cell'
@@ -13824,10 +13406,8 @@
},
saveSelectedArchive: function() {
var _this = this;
-
return $.get('selectedArchives', Conf['selectedArchives'], function(_arg) {
var selectedArchives, _name;
-
selectedArchives = _arg.selectedArchives;
(selectedArchives[_name = _this.dataset.boardid] || (selectedArchives[_name] = {}))[_this.dataset.type] = _this.value;
return $.set('selectedArchives', selectedArchives);
@@ -13838,7 +13418,6 @@
},
time: function() {
var funk;
-
funk = Time.createFunc(this.value);
return this.nextElementSibling.textContent = funk(Time, new Date());
},
@@ -13847,7 +13426,6 @@
},
fileInfo: function() {
var data, funk;
-
data = {
isReply: true,
file: {
@@ -13883,7 +13461,6 @@
},
keybinds: function(section) {
var arr, input, inputs, items, key, tbody, tr, _ref;
-
section.innerHTML = "Keybinds are disabled.
Allowed keys: a-z, 0-9, Ctrl, Shift, Alt, Meta, Enter, Esc, Up, Down, Right, Left.
Press Backspace to disable a keybind.
";
tbody = $('tbody', section);
items = {};
@@ -13905,7 +13482,6 @@
}
return $.get(items, function(items) {
var val;
-
for (key in items) {
val = items[key];
inputs[key].value = val;
@@ -13914,7 +13490,6 @@
},
keybind: function(e) {
var key;
-
if (e.keyCode === 9) {
return;
}
@@ -13928,7 +13503,6 @@
},
style: function(section) {
var arr, description, div, fs, html, input, inputs, items, key, name, nodes, obj, type, value, _i, _len, _ref;
-
nodes = $.frag();
items = {};
inputs = {};
@@ -13971,7 +13545,6 @@
}
return $.get(items, function(items) {
var cb, val;
-
cb = Settings.cb.style;
for (key in items) {
val = items[key];
@@ -13996,7 +13569,6 @@
},
themes: function(section, mode) {
var a, cb, div, keys, mouseout, mouseover, name, parentdiv, suboptions, theme, _i, _j, _k, _len, _len1, _len2, _ref;
-
if (typeof mode !== 'string') {
mode = 'default';
}
@@ -14056,7 +13628,6 @@
$.on($("#importbutton", div), 'change', ThemeTools.importtheme);
$.on($('#tUndelete', div), 'click', function() {
var themes;
-
$.rm($.id("themeContainer"));
themes = {
open: Settings.themes,
@@ -14085,7 +13656,6 @@
});
$.on($('a', div), 'click', function() {
var themes;
-
themes = {
open: Settings.themes,
hyphenatedTitle: 'themes'
@@ -14100,7 +13670,6 @@
},
mouseover: function(e) {
var mouseover;
-
mouseover = $.el('div', {
id: 'mouseover',
className: 'dialog'
@@ -14120,7 +13689,6 @@
},
mascots: function(section, mode) {
var addoptions, batchmascots, categories, cb, container, div, keys, mascot, mascotEl, mascotHide, mascotoptions, menu, name, node, option, suboptions, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref, _ref1;
-
categories = {};
cb = Settings.cb.mascot;
if (typeof mode !== 'string') {
@@ -14189,7 +13757,6 @@
});
$.on($('#clear', batchmascots), 'click', function() {
var enabledMascots, _k, _len2;
-
enabledMascots = JSON.parse(JSON.stringify(Conf[g.MASCOTSTRING]));
for (_k = 0, _len2 = enabledMascots.length; _k < _len2; _k++) {
name = enabledMascots[_k];
@@ -14219,7 +13786,6 @@
});
$.on($('#undelete', batchmascots), 'click', function() {
var mascots;
-
if (!(Conf["Deleted Mascots"].length > 0)) {
alert("No mascots have been deleted.");
return;
@@ -14255,7 +13821,6 @@
});
$.on($('#return', batchmascots), 'click', function() {
var mascots;
-
mascots = {
open: Settings.mascots,
hyphenatedTitle: 'mascots'
@@ -14274,7 +13839,6 @@
style: {
checked: function() {
var hyphenated;
-
$.cb.checked.call(this);
hyphenated = this.name.toLowerCase().replace(/^4/, 'four').replace(/\s+/g, '-');
return (this.checked ? $.addClass : $.rmClass)(doc, hyphenated);
@@ -14285,7 +13849,6 @@
},
select: function() {
var hyphenated, option, _i, _len, _ref;
-
$.cb.value.call(this);
_ref = this.options;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -14298,7 +13861,6 @@
mascot: {
category: function() {
var i, name, setting, test, type, _i, _len, _ref;
-
if ($.id(this.name).hidden = this.checked) {
Conf["Hidden Categories"].push(this.name);
_ref = ["Enabled Mascots", "Enabled Mascots sfw", "Enabled Mascots nsfw"];
@@ -14332,7 +13894,6 @@
},
"delete": function(e) {
var name, type, _i, _len, _ref;
-
e.stopPropagation();
name = this.parentElement.parentElement.id;
if (confirm("Are you sure you want to delete \"" + name + "\"?")) {
@@ -14352,7 +13913,6 @@
},
"export": function(e) {
var a, data, name;
-
e.stopPropagation();
name = this.parentElement.parentElement.id;
data = Mascots[name];
@@ -14393,7 +13953,6 @@
theme: {
select: function() {
var currentTheme;
-
if (currentTheme = $.id(Conf['theme'])) {
$.rmClass(currentTheme, 'selectedtheme');
}
@@ -14414,7 +13973,6 @@
},
"export": function(e) {
var a, data;
-
e.preventDefault();
e.stopPropagation();
data = Themes[this.name];
@@ -14433,7 +13991,6 @@
"delete": function(e) {
var container, settheme,
_this = this;
-
e.preventDefault();
e.stopPropagation();
container = $.id(this.name);
@@ -14452,7 +14009,6 @@
Themes[this.name]["Deleted"] = true;
return $.get("userThemes", {}, function(_arg) {
var userThemes;
-
userThemes = _arg.userThemes;
userThemes[_this.name] = Themes[_this.name];
$.set('userThemes', userThemes);
@@ -14462,12 +14018,10 @@
},
restore: function() {
var _this = this;
-
if (confirm("Are you sure you want to restore \"" + this.id + "\"?")) {
Themes[this.id]["Deleted"] = false;
return $.get("userThemes", {}, function(_arg) {
var userThemes;
-
userThemes = _arg.userThemes;
userThemes[_this.id] = Themes[_this.id];
$.set('userThemes', userThemes);
@@ -14482,10 +14036,8 @@
Main = {
init: function(items) {
var db, flatten, _i, _len;
-
flatten = function(parent, obj) {
var key, val;
-
if (obj instanceof Array) {
Conf[parent] = obj[0];
} else if (typeof obj === 'object') {
@@ -14518,7 +14070,6 @@
},
initFeatures: function(items) {
var init, pathname, _ref;
-
Conf = items;
if (Conf['Post Form Style'] === 'transparent fade') {
$.set('Post Form Style', Conf['Post Form Style'] = 'fixed');
@@ -14572,7 +14123,6 @@
case 'images.4chan.org':
$.ready(function() {
var URL;
-
if (Conf['404 Redirect'] && d.title === '4chan - 404 Not Found') {
Redirect.init();
pathname = location.pathname.split('/');
@@ -14589,7 +14139,6 @@
}
init = function(features) {
var err, module, name;
-
for (name in features) {
module = features[name];
try {
@@ -14671,7 +14220,6 @@
},
initReady: function() {
var board, err, errors, href, passLink, postRoot, posts, styleSelector, thread, threadRoot, threads, _i, _j, _len, _len1, _ref, _ref1;
-
if (d.title === '4chan - 404 Not Found') {
if (Conf['404 Redirect'] && g.VIEW === 'thread') {
href = Redirect.to('thread', {
@@ -14739,7 +14287,6 @@
},
callbackNodes: function(klass, nodes) {
var callback, err, errors, i, len, node, _i, _len, _ref;
-
len = nodes.length;
_ref = klass.prototype.callbacks;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -14767,11 +14314,9 @@
},
callbackNodesDB: function(klass, nodes, cb) {
var errors, func, i, len, node, queue, softTask;
-
queue = [];
softTask = function() {
var args, func, task;
-
task = queue.shift();
func = task[0];
args = Array.prototype.slice.call(task, 1);
@@ -14790,7 +14335,6 @@
errors = null;
func = function(node, i) {
var callback, err, _i, _len, _ref;
-
_ref = klass.prototype.callbacks;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
callback = _ref[_i];
@@ -14824,7 +14368,6 @@
},
addCallback: function(e) {
var Klass, obj;
-
obj = e.detail;
if (typeof obj.callback.name !== 'string') {
throw new Error("Invalid callback name: " + obj.callback.name);
@@ -14844,7 +14387,6 @@
},
message: function(e) {
var el, version;
-
version = e.data.version;
if (version && version !== g.VERSION) {
el = $.el('span', {
@@ -14855,14 +14397,12 @@
},
checkUpdate: function() {
var now;
-
if (!(Conf['Check for Updates'] && Main.isThisPageLegit())) {
return;
}
now = Date.now();
return $.get('lastchecked', 0, function(_arg) {
var lastchecked;
-
lastchecked = _arg.lastchecked;
if (lastchecked > now - $.DAY) {
return;
@@ -14878,7 +14418,6 @@
},
handleErrors: function(errors) {
var div, error, logs, _i, _len;
-
if (!(errors instanceof Array)) {
error = errors;
} else if (errors.length === 1) {
@@ -14893,7 +14432,6 @@
});
$.on(div.lastElementChild, 'click', function() {
var _ref;
-
return _ref = this.textContent === 'show' ? ['hide', false] : ['show', true], this.textContent = _ref[0], logs.hidden = _ref[1], _ref;
});
logs = $.el('div', {
@@ -14907,7 +14445,6 @@
},
parseError: function(data) {
var error, message;
-
Main.logError(data);
message = $.el('div', {
textContent: data.message
@@ -14924,7 +14461,6 @@
},
isThisPageLegit: function() {
var _ref;
-
if (!('thisPageIsLegit' in Main)) {
Main.thisPageIsLegit = location.hostname === 'boards.4chan.org' && !$('link[href*="favicon-status.ico"]', d.head) && ((_ref = d.title) !== '4chan - Temporarily Offline' && _ref !== '4chan - Error' && _ref !== '504 Gateway Time-out');
}
diff --git a/builds/crx/script.js b/builds/crx/script.js
index d7948d42d..ce03c52e0 100644
--- a/builds/crx/script.js
+++ b/builds/crx/script.js
@@ -1,6 +1,6 @@
// Generated by CoffeeScript
/*
-* appchan x - Version 2.1.3 - 2013-07-21
+* appchan x - Version 2.1.3 - 2013-07-22
*
* Licensed under the MIT license.
* https://github.com/zixaphir/appchan-x/blob/master/LICENSE
@@ -2676,7 +2676,6 @@
Array.prototype.add = function(object, position) {
var keep;
-
keep = this.slice(position);
this.length = position;
this.push(object);
@@ -2689,7 +2688,6 @@
Array.prototype.indexOf = function(object) {
var i;
-
i = this.length;
while (i--) {
if (this[i] === object) {
@@ -2701,7 +2699,6 @@
Array.prototype.pushArrays = function() {
var arg, args, _i, _len;
-
args = arguments;
for (_i = 0, _len = args.length; _i < _len; _i++) {
arg = args[_i];
@@ -2712,7 +2709,6 @@
Array.prototype.remove = function(object) {
var index;
-
if ((index = this.indexOf(object)) > -1) {
return this.splice(index, 1);
} else {
@@ -2729,7 +2725,6 @@
$.extend = function(object, properties) {
var key, val;
-
for (key in properties) {
val = properties[key];
if (!properties.hasOwnProperty(key)) {
@@ -2747,7 +2742,6 @@
$.ready = function(fc) {
var cb;
-
if (d.readyState !== 'loading') {
$.queueTask(fc);
return;
@@ -2761,7 +2755,6 @@
$.formData = function(form) {
var fd, key, val;
-
if (form instanceof HTMLFormElement) {
return new FormData(form);
}
@@ -2782,7 +2775,6 @@
$.ajax = function(url, callbacks, opts) {
var cred, err, form, headers, key, r, sync, type, upCallbacks, val;
-
if (opts == null) {
opts = {};
}
@@ -2808,11 +2800,9 @@
$.cache = (function() {
var reqs;
-
reqs = {};
return function(url, cb) {
var err, req, rm;
-
if (req = reqs[url]) {
if (req.readyState === 4) {
cb.call(req, req.evt);
@@ -2828,7 +2818,6 @@
req = $.ajax(url, {
onload: function(e) {
var _i, _len, _ref;
-
_ref = this.callbacks;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
cb = _ref[_i];
@@ -2870,7 +2859,6 @@
$.addStyle = function(css, id) {
var style;
-
style = $.el('style', {
id: id,
textContent: css
@@ -2917,7 +2905,6 @@
} else {
return function(el) {
var _ref;
-
return (_ref = el.parentNode) != null ? _ref.removeChild(el) : void 0;
};
}
@@ -2925,7 +2912,6 @@
$.rmAll = function(root) {
var node;
-
while (node = root.firstChild) {
root.removeChild(node);
}
@@ -2941,7 +2927,6 @@
$.nodes = function(nodes) {
var frag, node, _i, _len;
-
if (!(nodes instanceof Array)) {
return nodes;
}
@@ -2975,7 +2960,6 @@
$.el = function(tag, properties) {
var el;
-
el = d.createElement(tag);
if (properties) {
$.extend(el, properties);
@@ -2985,7 +2969,6 @@
$.on = function(el, events, handler) {
var event, _i, _len, _ref;
-
_ref = events.split(' ');
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
event = _ref[_i];
@@ -2995,7 +2978,6 @@
$.off = function(el, events, handler) {
var event, _i, _len, _ref;
-
_ref = events.split(' ');
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
event = _ref[_i];
@@ -3019,7 +3001,6 @@
$.debounce = function(wait, fn) {
var args, exec, lastCall, that, timeout;
-
lastCall = 0;
timeout = null;
that = null;
@@ -3041,11 +3022,9 @@
$.queueTask = (function() {
var execTask, taskChannel, taskQueue;
-
taskQueue = [];
execTask = function() {
var args, func, task;
-
task = taskQueue.shift();
func = task[0];
args = Array.prototype.slice.call(task, 1);
@@ -3068,7 +3047,6 @@
$.globalEval = function(code) {
var script;
-
script = $.el('script', {
textContent: code
});
@@ -3078,7 +3056,6 @@
$.bytesToString = function(size) {
var unit;
-
unit = 0;
while (size >= 1024) {
size /= 1024;
@@ -3094,7 +3071,6 @@
$.item = function(key, val) {
var item;
-
item = {};
item[key] = val;
return item;
@@ -3105,7 +3081,6 @@
$.sync = (function() {
chrome.storage.onChanged.addListener(function(changes) {
var cb, key;
-
for (key in changes) {
if (cb = $.syncing[key]) {
cb(changes[key].newValue);
@@ -3125,7 +3100,6 @@
$.get = function(key, val, cb) {
var count, done, items, localItems, syncItems;
-
if (typeof cb === 'function') {
items = $.item(key, val);
} else {
@@ -3145,7 +3119,6 @@
count = 0;
done = function(item) {
var lastError;
-
lastError = chrome.runtime.lastError;
if (lastError) {
c.error(lastError, lastError.message || 'No message.');
@@ -3167,12 +3140,10 @@
$.set = (function() {
var items, localItems, set;
-
items = {};
localItems = {};
set = $.debounce($.SECOND, function() {
var err, key, _i, _len, _ref;
-
_ref = $.localKeys;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
key = _ref[_i];
@@ -3257,7 +3228,6 @@
function Post(root, thread, board, that) {
var capcode, date, email, flag, info, name, post, subject, tripcode, uniqueID;
-
this.thread = thread;
this.board = board;
if (that == null) {
@@ -3330,7 +3300,6 @@
Post.prototype.parseComment = function() {
var bq, i, node, nodes, text, _i, _len, _ref;
-
bq = this.nodes.comment.cloneNode(true);
_ref = $$('.abbr, .capcodeReplies, .exif, b', bq);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -3348,7 +3317,6 @@
Post.prototype.parseQuotes = function() {
var hash, pathname, quotelink, quotes, _i, _len, _ref;
-
quotes = {};
_ref = $$('.quotelink', this.nodes.comment);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -3378,7 +3346,6 @@
Post.prototype.parseFile = function(that) {
var alt, anchor, fileEl, fileInfo, size, thumb, unit;
-
if (!((fileEl = $('.file', this.nodes.post)) && (thumb = $('img[data-md5]', fileEl)))) {
return;
}
@@ -3410,7 +3377,6 @@
Post.prototype.kill = function(file, now) {
var clone, quotelink, strong, _i, _j, _len, _len1, _ref, _ref1;
-
now || (now = new Date());
if (file) {
if (this.file.isDead) {
@@ -3459,7 +3425,6 @@
Post.prototype.resurrect = function() {
var clone, quotelink, strong, _i, _j, _len, _len1, _ref, _ref1;
-
delete this.isDead;
delete this.timeOfDeath;
$.rmClass(this.nodes.root, 'deleted-post');
@@ -3493,7 +3458,6 @@
Post.prototype.rmClone = function(index) {
var clone, _i, _len, _ref;
-
this.clones.splice(index, 1);
_ref = this.clones.slice(index);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -3511,7 +3475,6 @@
function Clone(origin, context) {
var file, info, inline, inlined, key, nodes, post, root, val, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _ref3;
-
this.origin = origin;
this.context = context;
_ref = ['ID', 'fullID', 'board', 'thread', 'info', 'quotes', 'isReply'];
@@ -3599,7 +3562,6 @@
function DataBoard(key, sync) {
var init,
_this = this;
-
this.key = key;
this.data = Conf[key];
$.sync(key, this.onSync.bind(this));
@@ -3616,7 +3578,6 @@
DataBoard.prototype["delete"] = function(_arg) {
var boardID, postID, threadID;
-
boardID = _arg.boardID, threadID = _arg.threadID, postID = _arg.postID;
if (postID) {
delete this.data.boards[boardID][threadID][postID];
@@ -3637,7 +3598,6 @@
DataBoard.prototype.deleteIfEmpty = function(_arg) {
var boardID, threadID;
-
boardID = _arg.boardID, threadID = _arg.threadID;
if (threadID) {
if (!Object.keys(this.data.boards[boardID][threadID]).length) {
@@ -3653,7 +3613,6 @@
DataBoard.prototype.set = function(_arg) {
var boardID, postID, threadID, val, _base, _base1, _base2;
-
boardID = _arg.boardID, threadID = _arg.threadID, postID = _arg.postID, val = _arg.val;
if (postID !== void 0) {
((_base = ((_base1 = this.data.boards)[boardID] || (_base1[boardID] = {})))[threadID] || (_base[threadID] = {}))[postID] = val;
@@ -3667,7 +3626,6 @@
DataBoard.prototype.get = function(_arg) {
var ID, board, boardID, defaultValue, postID, thread, threadID, val, _i, _len;
-
boardID = _arg.boardID, threadID = _arg.threadID, postID = _arg.postID, defaultValue = _arg.defaultValue;
if (board = this.data.boards[boardID]) {
if (!threadID) {
@@ -3691,7 +3649,6 @@
DataBoard.prototype.clean = function() {
var boardID, now, val, _ref;
-
_ref = this.data.boards;
for (boardID in _ref) {
val = _ref[boardID];
@@ -3711,10 +3668,8 @@
DataBoard.prototype.ajaxClean = function(boardID) {
var _this = this;
-
return $.cache("//api.4chan.org/" + boardID + "/threads.json", function(e) {
var board, page, thread, threads, _i, _j, _len, _len1, _ref, _ref1;
-
if (e.target.status === 404) {
_this["delete"](boardID);
} else if (e.target.status === 200) {
@@ -3825,7 +3780,6 @@
init: function() {
var barFixedToggler, barPositionToggler, customNavToggler, editCustomNav, headerToggler,
_this = this;
-
this.menu = new UI.Menu('header');
this.menuButton = $.el('span', {
className: 'menu-button',
@@ -3914,7 +3868,6 @@
}),
setBoardList: function() {
var a, boardList, btn, fourchannav, fullBoardList, settings;
-
fourchannav = $.id('boardNavDesktop');
if (a = $("a[href*='/" + g.BOARD + "/']", fourchannav)) {
a.className = 'current';
@@ -3939,7 +3892,6 @@
},
generateBoardList: function(text) {
var as, list, nodes;
-
list = $('#custom-board-list', Header.bar);
$.rmAll(list);
if (!text) {
@@ -3948,7 +3900,6 @@
as = $$('#full-board-list a[title]', Header.bar);
nodes = text.match(/[\w@]+((-(all|title|replace|full|index|catalog|url:"[^"]+[^"]"|text:"[^"]+")|\,"[^"]+[^"]"))*|[^\w@]+/g).map(function(t) {
var a, board, m, _i, _len;
-
if (/^[^\w@]/.test(t)) {
return $.tn(t);
}
@@ -3995,7 +3946,6 @@
},
toggleBoardList: function() {
var bar, custom, full, showBoardList;
-
bar = Header.bar;
custom = $('#custom-board-list', bar);
full = $('#full-board-list', bar);
@@ -4046,7 +3996,6 @@
},
toggleBarVisibility: function(e) {
var hide, message;
-
if (e.type === 'mousedown' && e.button !== 0) {
return;
}
@@ -4059,7 +4008,6 @@
},
setCustomNav: function(show) {
var btn, cust, full, _ref;
-
Header.customNavToggler.checked = show;
cust = $('#custom-board-list', Header.bar);
full = $('#full-board-list', Header.bar);
@@ -4072,14 +4020,12 @@
},
editCustomNav: function() {
var settings;
-
Settings.open('Advanced');
settings = $.id('fourchanx-settings');
return $('input[name=boardnav]', settings).focus();
},
hashScroll: function() {
var hash, post;
-
if (!((hash = this.location.hash.slice(1)) && (post = $.id(hash)))) {
return;
}
@@ -4090,7 +4036,6 @@
},
scrollToPost: function(post) {
var headRect, top;
-
top = post.getBoundingClientRect().top;
if (Conf['Fixed Header'] && !Conf['Bottom Header']) {
headRect = Header.bar.getBoundingClientRect();
@@ -4100,7 +4045,6 @@
},
addShortcut: function(el) {
var shortcut;
-
shortcut = $.el('span', {
className: 'shortcut'
});
@@ -4113,7 +4057,6 @@
},
createNotification: function(e) {
var cb, content, lifetime, notif, type, _ref;
-
_ref = e.detail, type = _ref.type, content = _ref.content, lifetime = _ref.lifetime, cb = _ref.cb;
notif = new Notification(type, content, lifetime);
if (cb) {
@@ -4126,7 +4069,6 @@
spoilerRange: {},
shortFilename: function(filename, isReply) {
var threshold;
-
threshold = isReply ? 30 : 40;
if (filename.length - 4 > threshold) {
return "" + filename.slice(0, threshold - 5) + "(...)." + filename.slice(-3);
@@ -4136,7 +4078,6 @@
},
postFromObject: function(data, boardID) {
var o;
-
o = {
postID: data.no,
threadID: data.resto || data.no,
@@ -4180,7 +4121,6 @@
*/
var a, boardID, capcode, capcodeClass, capcodeStart, closed, comment, container, date, dateUTC, email, emailEnd, emailStart, ext, file, fileDims, fileHTML, fileInfo, fileSize, fileThumb, filename, flag, flagCode, flagName, href, imgSrc, isClosed, isOP, isSticky, name, postID, quote, shortFilename, spoilerRange, staticPath, sticky, subject, threadID, tripcode, uniqueID, userID, _i, _len, _ref;
-
postID = o.postID, threadID = o.threadID, boardID = o.boardID, name = o.name, capcode = o.capcode, tripcode = o.tripcode, uniqueID = o.uniqueID, email = o.email, subject = o.subject, flagCode = o.flagCode, flagName = o.flagName, date = o.date, dateUTC = o.dateUTC, isSticky = o.isSticky, isClosed = o.isClosed, comment = o.comment, file = o.file;
isOP = postID === threadID;
staticPath = '//static.4chan.org/image/';
@@ -4276,7 +4216,6 @@
Get = {
threadExcerpt: function(thread) {
var OP, excerpt, _ref;
-
OP = thread.OP;
excerpt = ((_ref = OP.info.subject) != null ? _ref.trim() : void 0) || OP.info.comment.replace(/\n+/g, ' // ') || Conf['Anonymize'] && 'Anonymous' || $('.nameBlock', OP.nodes.info).textContent.trim();
if (excerpt.length > 70) {
@@ -4289,7 +4228,6 @@
},
postFromRoot: function(root) {
var boardID, index, link, post, postID;
-
link = $('a[title="Highlight this post"]', root);
boardID = link.pathname.split('/')[1];
postID = link.hash.slice(2);
@@ -4309,7 +4247,6 @@
},
postDataFromLink: function(link) {
var boardID, path, postID, threadID, _ref;
-
if (link.hostname === 'boards.4chan.org') {
path = link.pathname.split('/');
boardID = path[1];
@@ -4327,7 +4264,6 @@
},
allQuotelinksLinkingTo: function(post) {
var ID, quote, quotedPost, quotelinks, quoterPost, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _ref3;
-
quotelinks = [];
_ref = g.posts;
for (ID in _ref) {
@@ -4356,14 +4292,12 @@
}
return quotelinks.filter(function(quotelink) {
var boardID, postID, _ref4;
-
_ref4 = Get.postDataFromLink(quotelink), boardID = _ref4.boardID, postID = _ref4.postID;
return boardID === post.board.ID && postID === post.ID;
});
},
postClone: function(boardID, threadID, postID, root, context) {
var post, url;
-
if (post = g.posts["" + boardID + "." + postID]) {
Get.insert(post, root, context);
return;
@@ -4384,7 +4318,6 @@
},
insert: function(post, root, context) {
var clone, nodes;
-
if (!root.parentNode) {
return;
}
@@ -4398,7 +4331,6 @@
},
fetchedPost: function(req, boardID, threadID, postID, root, context) {
var board, post, posts, status, thread, url, _i, _len;
-
if (post = g.posts["" + boardID + "." + postID]) {
Get.insert(post, root, context);
return;
@@ -4448,7 +4380,6 @@
},
archivedPost: function(req, boardID, postID, root, context) {
var board, bq, comment, data, o, post, thread, threadID, _ref;
-
if (post = g.posts["" + boardID + "." + postID]) {
Get.insert(post, root, context);
return;
@@ -4542,10 +4473,8 @@
UI = (function() {
var Menu, dialog, drag, dragend, dragstart, hover, hoverend, hoverstart, touchend, touchmove;
-
dialog = function(id, position, html) {
var el, move;
-
el = $.el('div', {
className: 'dialog',
innerHTML: html,
@@ -4575,7 +4504,6 @@
Menu.prototype.makeMenu = function() {
var menu;
-
menu = $.el('div', {
className: 'dialog',
id: 'menu',
@@ -4590,7 +4518,6 @@
Menu.prototype.toggle = function(e, button, data) {
var previousButton;
-
e.preventDefault();
e.stopPropagation();
if (currentMenu) {
@@ -4608,7 +4535,6 @@
Menu.prototype.open = function(button, data) {
var bLeft, bRect, bTop, bottom, cHeight, cWidth, entry, left, mRect, menu, right, style, top, _i, _len, _ref, _ref1, _ref2;
-
menu = this.makeMenu();
currentMenu = menu;
lastToggledButton = button;
@@ -4648,7 +4574,6 @@
Menu.prototype.insertEntry = function(entry, parent, data) {
var subEntry, submenu, _i, _len, _ref;
-
if (typeof entry.open === 'function') {
if (!entry.open(data)) {
return;
@@ -4682,7 +4607,6 @@
Menu.prototype.findNextEntry = function(entry, direction) {
var entries;
-
entries = __slice.call(entry.parentNode.children);
entries.sort(function(first, second) {
return +(first.style.order || first.style.webkitOrder) - +(second.style.order || second.style.webkitOrder);
@@ -4692,7 +4616,6 @@
Menu.prototype.keybinds = function(e) {
var entry, next, nextPrev, subEntry, submenu;
-
entry = $('.focused', currentMenu);
while (subEntry = $('.focused', entry)) {
entry = subEntry;
@@ -4738,7 +4661,6 @@
Menu.prototype.focus = function(entry) {
var bottom, cHeight, cWidth, eRect, focused, left, right, sRect, style, submenu, top, _i, _len, _ref, _ref1, _ref2;
-
while (focused = $.x('parent::*/child::*[contains(@class,"focused")]', entry)) {
$.rmClass(focused, 'focused');
}
@@ -4766,7 +4688,6 @@
Menu.prototype.addEntry = function(e) {
var entry;
-
entry = e.detail;
if (entry.type !== this.type) {
return;
@@ -4777,7 +4698,6 @@
Menu.prototype.parseEntry = function(entry) {
var el, style, subEntries, subEntry, _i, _len;
-
el = entry.el, subEntries = entry.subEntries;
$.addClass(el, 'entry');
$.on(el, 'focus mouseover', (function(e) {
@@ -4801,7 +4721,6 @@
})();
dragstart = function(e) {
var el, isTouching, o, rect, screenHeight, screenWidth, _ref;
-
if (e.type === 'mousedown' && e.button !== 0) {
return;
}
@@ -4840,7 +4759,6 @@
};
touchmove = function(e) {
var touch, _i, _len, _ref;
-
_ref = e.changedTouches;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
touch = _ref[_i];
@@ -4852,7 +4770,6 @@
};
drag = function(e) {
var bottom, clientX, clientY, left, right, style, top;
-
clientX = e.clientX, clientY = e.clientY;
left = clientX - this.dx;
left = left < 10 ? 0 : this.width - left < 10 ? null : left / this.screenWidth * 100 + '%';
@@ -4868,7 +4785,6 @@
};
touchend = function(e) {
var touch, _i, _len, _ref;
-
_ref = e.changedTouches;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
touch = _ref[_i];
@@ -4890,7 +4806,6 @@
};
hoverstart = function(_arg) {
var asapTest, cb, close, el, endEvents, latestEvent, o, root;
-
root = _arg.root, el = _arg.el, latestEvent = _arg.latestEvent, endEvents = _arg.endEvents, asapTest = _arg.asapTest, cb = _arg.cb, close = _arg.close;
o = {
root: root,
@@ -4920,7 +4835,6 @@
};
hover = function(e) {
var clientX, clientY, height, left, right, style, top, _ref;
-
this.latestEvent = e;
height = this.el.offsetHeight;
clientX = e.clientX, clientY = e.clientY;
@@ -4963,7 +4877,6 @@
},
node: function() {
var email, name, tripcode, _ref;
-
if (this.info.capcode || this.isClone) {
return;
}
@@ -4990,7 +4903,6 @@
filters: {},
init: function() {
var boards, err, filter, hl, key, op, regexp, stub, top, _i, _len, _ref, _ref1, _ref2, _ref3, _ref4;
-
if (g.VIEW === 'catalog' || !Conf['Filter']) {
return;
}
@@ -5027,7 +4939,6 @@
op = ((_ref2 = filter.match(/[^t]op:(yes|no|only)/)) != null ? _ref2[1] : void 0) || 'yes';
stub = (function() {
var _ref3;
-
switch ((_ref3 = filter.match(/stub:(yes|no)/)) != null ? _ref3[1] : void 0) {
case 'yes':
return true;
@@ -5058,7 +4969,6 @@
},
createFilter: function(regexp, op, stub, hl, top) {
var settings, test;
-
test = typeof regexp === 'string' ? function(value) {
return regexp === value;
} : function(value) {
@@ -5082,7 +4992,6 @@
},
node: function() {
var filter, firstThread, key, result, thisThread, value, _i, _len, _ref;
-
if (this.isClone) {
return;
}
@@ -5194,7 +5103,6 @@
menu: {
init: function() {
var div, entry, type, _i, _len, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Filter']) {
return;
}
@@ -5220,7 +5128,6 @@
},
createSubEntry: function(text, type) {
var el;
-
el = $.el('a', {
href: 'javascript:;',
textContent: text
@@ -5231,7 +5138,6 @@
el: el,
open: function(post) {
var value;
-
value = Filter[type](post);
return value !== false;
}
@@ -5239,7 +5145,6 @@
},
makeFilter: function() {
var re, type, value;
-
type = this.dataset.type;
value = Filter[type](Filter.menu.post);
re = ['uniqueID', 'MD5'].contains(type) ? value : value.replace(/\/|\\|\^|\$|\n|\.|\(|\)|\{|\}|\[|\]|\?|\*|\+|\|/g, function(c) {
@@ -5254,7 +5159,6 @@
re = ['uniqueID', 'MD5'].contains(type) ? "/" + re + "/" : "/^" + re + "$/";
return $.get(type, Conf[type], function(item) {
var save, section, select, ta, tl;
-
save = item[type];
save = save ? "" + save + "\n" + re : re;
$.set(type, save);
@@ -5288,7 +5192,6 @@
},
node: function() {
var data;
-
if (!this.isReply || this.isClone) {
return;
}
@@ -5312,7 +5215,6 @@
menu: {
init: function() {
var apply, div, hideStubLink, makeStub, replies, thisPost;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Reply Hiding Link']) {
return;
}
@@ -5383,7 +5285,6 @@
order: 20,
open: function(post) {
var data;
-
if (!post.isReply || post.isClone || !post.isHidden) {
return false;
}
@@ -5415,7 +5316,6 @@
order: 15,
open: function(post) {
var data;
-
if (!post.isReply || post.isClone || !post.isHidden) {
return false;
}
@@ -5432,7 +5332,6 @@
},
hide: function() {
var makeStub, parent, post, replies, thisPost;
-
parent = this.parentNode;
thisPost = $('input[name=thisPost]', parent).checked;
replies = $('input[name=replies]', parent).checked;
@@ -5451,7 +5350,6 @@
},
show: function() {
var data, parent, post, replies, thisPost;
-
parent = this.parentNode;
thisPost = $('input[name=thisPost]', parent).checked;
replies = $('input[name=replies]', parent).checked;
@@ -5475,7 +5373,6 @@
},
hideStub: function() {
var post;
-
post = PostHiding.menu.post;
post.nodes.root.hidden = true;
$.event('CloseMenu');
@@ -5483,7 +5380,6 @@
},
makeButton: function(post, type) {
var a;
-
a = $.el('a', {
className: "" + type + "-reply-button",
innerHTML: " " + (type === 'hide' ? '-' : '+') + " ",
@@ -5494,7 +5390,6 @@
},
saveHiddenState: function(post, isHiding, thisPost, makeStub, hideRecursively) {
var data;
-
data = {
boardID: post.board.ID,
threadID: post.thread.ID,
@@ -5513,7 +5408,6 @@
},
toggle: function() {
var post;
-
post = Get.postFromNode(this);
if (post.isHidden) {
PostHiding.show(post);
@@ -5524,7 +5418,6 @@
},
hide: function(post, makeStub, hideRecursively) {
var a, postInfo, quotelink, _i, _len, _ref;
-
if (makeStub == null) {
makeStub = Conf['Stubs'];
}
@@ -5562,7 +5455,6 @@
},
show: function(post, showRecursively) {
var quotelink, _i, _len, _ref;
-
if (showRecursively == null) {
showRecursively = Conf['Recursive Hiding'];
}
@@ -5598,7 +5490,6 @@
},
node: function() {
var i, obj, quote, recursive, _i, _j, _len, _len1, _ref, _ref1;
-
if (this.isClone) {
return;
}
@@ -5616,7 +5507,6 @@
},
add: function() {
var args, obj, post, recursive, _base, _name;
-
recursive = arguments[0], post = arguments[1], args = 3 <= arguments.length ? __slice.call(arguments, 2) : [];
obj = (_base = Recursive.recursives)[_name = post.fullID] || (_base[_name] = {
recursives: [],
@@ -5627,7 +5517,6 @@
},
rm: function(recursive, post) {
var i, obj, rec, _i, _len, _ref;
-
if (!(obj = Recursive.recursives[post.fullID])) {
return;
}
@@ -5642,7 +5531,6 @@
},
apply: function() {
var ID, args, fullID, post, recursive, _ref;
-
recursive = arguments[0], post = arguments[1], args = 3 <= arguments.length ? __slice.call(arguments, 2) : [];
fullID = post.fullID;
_ref = g.posts;
@@ -5669,7 +5557,6 @@
},
node: function() {
var data;
-
if (data = ThreadHiding.db.get({
boardID: this.board.ID,
threadID: this.ID
@@ -5683,7 +5570,6 @@
},
syncCatalog: function() {
var hiddenThreads, hiddenThreadsOnCatalog, threadID;
-
hiddenThreads = ThreadHiding.db.get({
boardID: g.BOARD.ID,
defaultValue: {}
@@ -5710,7 +5596,6 @@
cleanCatalog: function(hiddenThreadsOnCatalog) {
return $.cache("//api.4chan.org/" + g.BOARD + "/threads.json", function() {
var page, thread, threads, _i, _j, _len, _len1, _ref, _ref1;
-
if (this.status !== 200) {
return;
}
@@ -5736,7 +5621,6 @@
menu: {
init: function() {
var apply, div, hideStubLink, makeStub;
-
if (g.VIEW !== 'index' || !Conf['Menu'] || !Conf['Thread Hiding Link']) {
return;
}
@@ -5763,7 +5647,6 @@
order: 20,
open: function(_arg) {
var isReply, thread;
-
thread = _arg.thread, isReply = _arg.isReply;
if (isReply || thread.isHidden) {
return false;
@@ -5785,7 +5668,6 @@
order: 15,
open: function(_arg) {
var isReply, thread;
-
thread = _arg.thread, isReply = _arg.isReply;
if (isReply || !thread.isHidden) {
return false;
@@ -5796,7 +5678,6 @@
},
hide: function() {
var makeStub, thread;
-
makeStub = $('input', this.parentNode).checked;
thread = ThreadHiding.menu.thread;
ThreadHiding.hide(thread, makeStub);
@@ -5805,7 +5686,6 @@
},
hideStub: function() {
var thread;
-
thread = ThreadHiding.menu.thread;
ThreadHiding.hide(thread, false);
$.event('CloseMenu');
@@ -5813,7 +5693,6 @@
},
makeButton: function(thread, type) {
var a;
-
a = $.el('a', {
className: "" + type + "-thread-button",
innerHTML: " " + (type === 'hide' ? '-' : '+') + " ",
@@ -5825,7 +5704,6 @@
},
saveHiddenState: function(thread, makeStub) {
var hiddenThreadsOnCatalog;
-
hiddenThreadsOnCatalog = JSON.parse(localStorage.getItem("4chan-hide-t-" + g.BOARD)) || {};
if (thread.isHidden) {
ThreadHiding.db.set({
@@ -5858,7 +5736,6 @@
},
hide: function(thread, makeStub) {
var OP, a, numReplies, opInfo, span, threadRoot;
-
if (makeStub == null) {
makeStub = Conf['Stubs'];
}
@@ -5889,7 +5766,6 @@
},
show: function(thread) {
var threadRoot;
-
if (thread.stub) {
$.rm(thread.stub);
delete thread.stub;
@@ -5902,7 +5778,6 @@
QuoteBacklink = {
init: function() {
var format;
-
if (g.VIEW === 'catalog' || !Conf['Quote Backlinks']) {
return;
}
@@ -5920,7 +5795,6 @@
},
firstNode: function() {
var a, clone, container, containers, frag, link, post, quote, _i, _j, _k, _len, _len1, _len2, _ref, _ref1;
-
if (this.isClone || !this.quotes.length) {
return;
}
@@ -5959,7 +5833,6 @@
},
secondNode: function() {
var container;
-
if (this.isClone && (this.origin.isReply || Conf['OP Backlinks'])) {
this.nodes.backlinkContainer = $('.container', this.nodes.info);
return;
@@ -5976,7 +5849,6 @@
},
getContainer: function(id) {
var _base;
-
return (_base = this.containers)[id] || (_base[id] = $.el('span', {
className: 'container'
}));
@@ -5999,7 +5871,6 @@
},
node: function() {
var board, boardID, quotelink, quotelinks, quotes, thread, threadID, _i, _len, _ref, _ref1;
-
if (this.isClone && this.thread === this.context.thread) {
return;
}
@@ -6035,7 +5906,6 @@
if (Conf['Quote Hash Navigation']) {
this.node = function() {
var link, _i, _len, _ref;
-
_ref = this.nodes.quotelinks.concat(__slice.call(this.nodes.backlinks));
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
link = _ref[_i];
@@ -6048,7 +5918,6 @@
} else {
this.node = function() {
var link, _i, _len, _ref;
-
_ref = this.nodes.quotelinks.concat(__slice.call(this.nodes.backlinks));
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
link = _ref[_i];
@@ -6072,7 +5941,6 @@
},
toggle: function(e) {
var boardID, context, postID, threadID, _ref;
-
if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || e.button !== 0) {
return;
}
@@ -6098,7 +5966,6 @@
},
add: function(quotelink, boardID, threadID, postID, context) {
var inline, isBacklink, post, qroot, root;
-
isBacklink = $.hasClass(quotelink, 'backlink');
inline = $.el('div', {
id: "i" + postID,
@@ -6123,7 +5990,6 @@
},
rm: function(quotelink, boardID, threadID, postID, context) {
var el, inlined, isBacklink, post, qroot, root, _ref;
-
isBacklink = $.hasClass(quotelink, 'backlink');
root = QuoteInline.findRoot(quotelink, isBacklink);
root = $.x("following-sibling::div[@id='i" + postID + "'][1]", root);
@@ -6165,7 +6031,6 @@
},
node: function() {
var boardID, op, postID, quotelink, quotelinks, quotes, _i, _j, _len, _len1, _ref;
-
if (this.isClone && this.thread === this.context.thread) {
return;
}
@@ -6208,7 +6073,6 @@
},
node: function() {
var link, _i, _len, _ref;
-
_ref = this.nodes.quotelinks.concat(__slice.call(this.nodes.backlinks));
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
link = _ref[_i];
@@ -6217,7 +6081,6 @@
},
mouseover: function(e) {
var boardID, clone, origin, post, postID, posts, qp, quote, quoterID, threadID, _i, _j, _len, _len1, _ref, _ref1;
-
if ($.hasClass(this, 'inlined')) {
return;
}
@@ -6261,7 +6124,6 @@
},
mouseout: function() {
var clone, post, root, _i, _len, _ref;
-
if (!(root = this.el.firstElementChild)) {
return;
}
@@ -6291,7 +6153,6 @@
},
node: function() {
var boardID, postID, quotelink, _i, _len, _ref, _ref1, _ref2;
-
if (this.isClone) {
return;
}
@@ -6314,7 +6175,6 @@
QuoteThreading = {
init: function() {
var input;
-
if (!(Conf['Quote Threading'] && g.VIEW === 'thread')) {
return;
}
@@ -6337,7 +6197,6 @@
},
setup: function() {
var ID, post, posts;
-
$.off(d, '4chanXInitFinished', QuoteThreading.setup);
posts = g.posts;
for (ID in posts) {
@@ -6350,7 +6209,6 @@
},
node: function() {
var ID, fullID, keys, len, post, posts, qid, quote, quotes, uniq, _i, _len;
-
if (this.isClone || !QuoteThreading.enabled || this.thread.OP === this) {
return;
}
@@ -6380,7 +6238,6 @@
},
nodeinsert: function() {
var bottom, height, posts, qpost, qroot, threadContainer, top, _ref;
-
posts = g.posts;
qpost = posts[this.threaded];
delete this.threaded;
@@ -6410,14 +6267,12 @@
},
toggle: function() {
var container, containers, node, nodes, replies, reply, thread, _i, _j, _len, _len1;
-
thread = $('.thread');
replies = $$('.thread > .replyContainer, .threadContainer > .replyContainer', thread);
QuoteThreading.enabled = this.checked;
if (this.checked) {
nodes = (function() {
var _i, _len, _results;
-
_results = [];
for (_i = 0, _len = replies.length; _i < _len; _i++) {
reply = replies[_i];
@@ -6432,7 +6287,6 @@
} else {
replies.sort(function(a, b) {
var aID, bID;
-
aID = Number(a.id.slice(2));
bID = Number(b.id.slice(2));
return aID - bID;
@@ -6448,7 +6302,6 @@
},
kb: function() {
var control;
-
control = $.id('threadingControl');
return control.click();
}
@@ -6475,7 +6328,6 @@
},
node: function() {
var quotelink, _i, _len, _ref;
-
if (this.isClone) {
return;
}
@@ -6511,7 +6363,6 @@
},
node: function() {
var deadlink, _i, _len, _ref;
-
_ref = $$('.deadlink', this.nodes.comment);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
deadlink = _ref[_i];
@@ -6526,7 +6377,6 @@
},
parseDeadlink: function(deadlink) {
var a, boardID, m, post, postID, quote, quoteID, redirect, _ref;
-
if (deadlink.parentNode.className === 'prettyprint') {
$.replace(deadlink, __slice.call(deadlink.childNodes));
return;
@@ -6610,7 +6460,6 @@
cypher: $.el('div'),
node: function() {
var a, child, cypher, cypherText, data, embed, embedder, embeds, i, index, len, link, links, lookahead, name, next, node, nodes, snapshot, spoiler, text, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _m, _ref, _ref1, _ref2;
-
if (this.isClone && Conf['Embedding']) {
_ref = $$('.embedder', this.nodes.comment);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -6695,7 +6544,6 @@
},
toggle: function() {
var el, embed, style, type, url;
-
embed = this.previousElementSibling;
if (this.className.contains("embedded")) {
el = $.el('a', {
@@ -6789,7 +6637,6 @@
style: 'height: auto; width: 500px; display: inline-block;',
el: function() {
var div;
-
div = $.el('div', {
className: "soundcloud",
name: "soundcloud"
@@ -6815,7 +6662,6 @@
regExp: /.*(?:pastebin.com\/(?!u\/))([^#\&\?]*).*/,
el: function() {
var div;
-
return div = $.el('iframe', {
src: "http://pastebin.com/embed_iframe.php?i=" + this.name
});
@@ -6825,7 +6671,6 @@
regExp: /.*(?:gist.github.com.*\/)([^\/][^\/]*)$/,
el: function() {
var div;
-
return div = $.el('iframe', {
src: "http://www.purplegene.com/script?url=https://gist.github.com/" + this.name + ".js"
});
@@ -6836,7 +6681,6 @@
},
text: function() {
var file, response;
-
response = JSON.parse(this.responseText).files;
for (file in response) {
if (response.hasOwnProperty(file)) {
@@ -6857,14 +6701,12 @@
},
embedder: function(a) {
var callbacks, embed, key, match, service, titles, type, _ref;
-
if (!Conf['Link Title']) {
return [a];
}
titles = {};
callbacks = function() {
var title;
-
return a.textContent = (function() {
switch (this.status) {
case 200:
@@ -6906,7 +6748,6 @@
if (Conf['Link Title'] && (service = type.title)) {
$.get('CachedTitles', {}, function(item) {
var err, title;
-
titles = item['CachedTitles'];
if (title = titles[match[1]]) {
a.textContent = title[0];
@@ -6930,7 +6771,6 @@
QR = {
init: function() {
var con, sc;
-
this.db = new DataBoard('yourPosts');
$.ready(this.initReady);
if (Conf['Persistent QR']) {
@@ -6989,13 +6829,11 @@
}
$.on(d, 'QRGetSelectedPost', function(_arg) {
var cb;
-
cb = _arg.detail;
return cb(QR.selected);
});
$.on(d, 'QRAddPreSubmitHook', function(_arg) {
var cb;
-
cb = _arg.detail;
return QR.preSubmitHooks.push(cb);
});
@@ -7025,7 +6863,6 @@
},
open: function() {
var err;
-
if (QR.nodes) {
QR.nodes.el.hidden = false;
return QR.unhide();
@@ -7044,7 +6881,6 @@
},
close: function() {
var post, _i, _len, _ref;
-
if (QR.req) {
QR.abort();
return;
@@ -7091,7 +6927,6 @@
},
error: function(err) {
var el;
-
QR.open();
if (typeof err === 'string') {
el = $.tn(err);
@@ -7119,7 +6954,6 @@
notifications: [],
cleanNotifications: function() {
var notification, _i, _len, _ref;
-
_ref = QR.notifications;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
notification = _ref[_i];
@@ -7129,7 +6963,6 @@
},
status: function() {
var disabled, status, thread, value;
-
if (!QR.nodes) {
return;
}
@@ -7151,7 +6984,6 @@
QR.persona.getPassword();
return $.get('QR.personas', Conf['QR.personas'], function(_arg) {
var arr, item, personas, type, types, _i, _len, _ref;
-
personas = _arg['QR.personas'];
types = {
name: [],
@@ -7171,7 +7003,6 @@
},
parseItem: function(item, types) {
var boards, match, type, val, _ref, _ref1;
-
if (item[0] === '#') {
return;
}
@@ -7200,7 +7031,6 @@
},
loadPersonas: function(type, arr) {
var list, val, _i, _len;
-
list = $("#list-" + type, QR.nodes.el);
for (_i = 0, _len = arr.length; _i < _len; _i++) {
val = arr[_i];
@@ -7214,7 +7044,6 @@
},
getPassword: function() {
var input, m;
-
if (!QR.persona.pwd) {
QR.persona.pwd = (m = d.cookie.match(/4chan_pass=([^;]+)/)) ? decodeURIComponent(m[1]) : (input = $.id('postPassword')) ? input.value : $.id('delPassword').value;
}
@@ -7223,7 +7052,6 @@
get: function(cb) {
return $.get('QR.persona', {}, function(_arg) {
var persona;
-
persona = _arg['QR.persona'];
return cb(persona);
});
@@ -7231,7 +7059,6 @@
set: function(post) {
return $.get('QR.persona', {}, function(_arg) {
var persona;
-
persona = _arg['QR.persona'];
persona = {
name: post.name,
@@ -7245,7 +7072,6 @@
cooldown: {
init: function() {
var board;
-
if (!Conf['Cooldown']) {
return;
}
@@ -7287,7 +7113,6 @@
},
sync: function(cooldowns) {
var id;
-
for (id in cooldowns) {
QR.cooldown.cooldowns[id] = cooldowns[id];
}
@@ -7295,7 +7120,6 @@
},
set: function(data) {
var cooldown, delay, hasFile, isReply, isSage, post, req, start, type, upSpd;
-
if (!Conf['Cooldown']) {
return;
}
@@ -7335,7 +7159,6 @@
},
count: function() {
var cooldown, cooldowns, elapsed, hasFile, isReply, isSage, now, post, seconds, start, type, types, upSpd, upSpdAccuracy, update, _ref;
-
if (!Object.keys(QR.cooldown.cooldowns).length) {
$["delete"]("" + g.BOARD + ".cooldown");
delete QR.cooldown.isCounting;
@@ -7389,7 +7212,6 @@
},
quote: function(e) {
var caretPos, com, index, post, range, s, sel, text, thread, _ref;
-
if (e != null) {
e.preventDefault();
}
@@ -7426,7 +7248,6 @@
},
characterCount: function() {
var count, counter;
-
counter = QR.nodes.charCount;
count = QR.nodes.com.textLength;
counter.textContent = count;
@@ -7435,7 +7256,6 @@
},
drag: function(e) {
var toggle;
-
toggle = e.type === 'dragstart' ? $.off : $.on;
toggle(d, 'dragover', QR.dragOver);
return toggle(d, 'drop', QR.dropFile);
@@ -7455,7 +7275,6 @@
},
paste: function(e) {
var blob, files, item, _i, _len, _ref;
-
files = [];
_ref = e.clipboardData.items;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -7483,7 +7302,6 @@
},
fileInput: function(files) {
var file, length, max, post, _i, _len;
-
if (files instanceof Event) {
files = __slice.call(this.files);
QR.nodes.fileInput.value = null;
@@ -7532,7 +7350,6 @@
function _Class(select) {
var el, event, prev, _i, _len, _ref,
_this = this;
-
el = $.el('a', {
className: 'qr-preview',
draggable: true,
@@ -7586,7 +7403,6 @@
_Class.prototype.rm = function() {
var index;
-
this["delete"]();
index = QR.posts.indexOf(this);
if (QR.posts.length === 1) {
@@ -7606,7 +7422,6 @@
_Class.prototype.lock = function(lock) {
var name, _i, _len, _ref;
-
if (lock == null) {
lock = true;
}
@@ -7631,7 +7446,6 @@
_Class.prototype.select = function() {
var rectEl, rectList;
-
if (QR.selected) {
QR.selected.nodes.el.id = null;
QR.selected.forceSave();
@@ -7648,7 +7462,6 @@
_Class.prototype.load = function() {
var name, _i, _len, _ref;
-
_ref = ['thread', 'name', 'email', 'sub', 'com'];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
name = _ref[_i];
@@ -7661,7 +7474,6 @@
_Class.prototype.save = function(input) {
var name, _ref;
-
if (input.type === 'checkbox') {
this.spoiler = input.checked;
return;
@@ -7682,7 +7494,6 @@
_Class.prototype.forceSave = function() {
var name, _i, _len, _ref;
-
if (this !== QR.selected) {
return;
}
@@ -7712,11 +7523,9 @@
_Class.prototype.setThumbnail = function() {
var fileURL, img,
_this = this;
-
img = $.el('img');
img.onload = function() {
var applyBlob, cv, data, height, i, l, s, ui8a, width, _i;
-
s = 90 * 2;
if (_this.file.type === 'image/gif') {
s *= 3;
@@ -7787,11 +7596,9 @@
_Class.prototype.pasteText = function(file) {
var reader,
_this = this;
-
reader = new FileReader();
reader.onload = function(e) {
var text;
-
text = e.target.result;
if (_this.com) {
_this.com += "\n" + text;
@@ -7829,7 +7636,6 @@
_Class.prototype.drop = function() {
var el, index, newIndex, oldIndex, post;
-
$.rmClass(this, 'over');
if (!this.draggable) {
return;
@@ -7864,7 +7670,6 @@
ready: function() {
var imgContainer, input, setLifetime,
_this = this;
-
setLifetime = function(e) {
return _this.lifetime = e.detail;
};
@@ -7901,7 +7706,6 @@
});
$.get('captchas', [], function(_arg) {
var captchas;
-
captchas = _arg.captchas;
return _this.sync(captchas);
});
@@ -7916,7 +7720,6 @@
},
getOne: function() {
var captcha, challenge, response;
-
this.clear();
if (captcha = this.captchas.shift()) {
challenge = captcha.challenge, response = captcha.response;
@@ -7941,7 +7744,6 @@
},
save: function() {
var response;
-
if (!(response = this.nodes.input.value.trim())) {
return;
}
@@ -7956,7 +7758,6 @@
},
clear: function() {
var captcha, i, now, _i, _len, _ref;
-
now = Date.now();
_ref = this.captchas;
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
@@ -7974,7 +7775,6 @@
},
load: function() {
var challenge;
-
if (!this.nodes.challenge.firstChild) {
return;
}
@@ -7987,7 +7787,6 @@
},
count: function() {
var count;
-
count = this.captchas.length;
this.nodes.input.placeholder = (function() {
switch (count) {
@@ -8020,7 +7819,6 @@
},
dialog: function() {
var dialog, mimeTypes, name, nodes, thread, _i, _j, _len, _len1, _ref, _ref1;
-
dialog = UI.dialog('qr', 'top:0;right:0;', "");
QR.nodes = nodes = {
el: dialog,
@@ -8133,7 +7931,6 @@
},
tripcodeHider: function() {
var check;
-
check = /^.*##?.+/.test(this.value);
if (check && !this.className.match("\\btripped\\b")) {
return $.addClass(this, 'tripped');
@@ -8144,7 +7941,6 @@
preSubmitHooks: [],
submit: function(e) {
var callbacks, challenge, err, filetag, hook, opts, post, postData, response, textOnly, thread, threadID, _i, _len, _ref, _ref1;
-
if (e != null) {
e.preventDefault();
}
@@ -8257,7 +8053,6 @@
},
response: function() {
var URL, ban, board, err, h1, isReply, m, post, postID, req, threadID, tmpDoc, _, _ref, _ref1;
-
req = QR.req;
delete QR.req;
post = QR.posts[0];
@@ -8353,7 +8148,6 @@
},
mouseover: function(e) {
var mouseover;
-
mouseover = $.el('div', {
id: 'mouseover',
className: 'dialog'
@@ -8376,7 +8170,6 @@
FappeTyme = {
init: function() {
var el;
-
if (!Conf['Fappe Tyme'] || g.VIEW === 'catalog' || g.BOARD === 'f') {
return;
}
@@ -8431,7 +8224,6 @@
},
node: function() {
var thumb, _ref;
-
if (!((_ref = this.file) != null ? _ref.isImage : void 0)) {
return;
}
@@ -8456,7 +8248,6 @@
},
toggleAll: function() {
var ID, file, func, post, _i, _len, _ref, _ref1;
-
$.event('CloseMenu');
if (ImageExpand.on = $.hasClass(ImageExpand.EAI, 'expand-all-shortcut')) {
ImageExpand.EAI.className = 'contract-all-shortcut';
@@ -8490,7 +8281,6 @@
},
toggle: function(post) {
var headRect, node, rect, root, thumb, top;
-
thumb = post.file.thumb;
if (!(post.file.isExpanded || $.hasClass(thumb, 'expanding'))) {
ImageExpand.expand(post);
@@ -8535,7 +8325,6 @@
},
expand: function(post, src) {
var img, thumb;
-
thumb = post.file.thumb;
if (post.isHidden || post.file.isExpanded || $.hasClass(thumb, 'expanding')) {
return;
@@ -8563,7 +8352,6 @@
},
completeExpand: function(post) {
var prev, thumb;
-
thumb = post.file.thumb;
if (!$.hasClass(thumb, 'expanding')) {
return;
@@ -8577,7 +8365,6 @@
prev = post.nodes.root.getBoundingClientRect();
return $.queueTask(function() {
var curr, root;
-
$.addClass(post.nodes.root, 'expanded-image');
$.rmClass(post.file.thumb, 'expanding');
if (!(prev.top + prev.height <= 0)) {
@@ -8590,7 +8377,6 @@
},
error: function() {
var URL, post, src, timeoutID;
-
post = Get.postFromNode(this);
$.rm(this);
delete post.file.fullImage;
@@ -8616,7 +8402,6 @@
return $.ajax("//api.4chan.org/" + post.board + "/res/" + post.thread + ".json", {
onload: function() {
var postObj, _i, _len, _ref;
-
if (this.status !== 200) {
return;
}
@@ -8640,7 +8425,6 @@
menu: {
init: function() {
var conf, createSubEntry, el, key, subEntries, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Image Expansion']) {
return;
}
@@ -8664,7 +8448,6 @@
},
createSubEntry: function(type, config) {
var input, label;
-
label = $.el('label', {
innerHTML: " " + type
});
@@ -8700,7 +8483,6 @@
},
node: function() {
var _ref;
-
if (!((_ref = this.file) != null ? _ref.isImage : void 0)) {
return;
}
@@ -8708,7 +8490,6 @@
},
mouseover: function(e) {
var el, post;
-
post = Get.postFromNode(this);
el = $.el('img', {
id: 'ihover',
@@ -8730,7 +8511,6 @@
error: function() {
var URL, post, src, timeoutID,
_this = this;
-
if (!doc.contains(this)) {
return;
}
@@ -8755,7 +8535,6 @@
return $.ajax("//api.4chan.org/" + post.board + "/res/" + post.thread + ".json", {
onload: function() {
var postObj, _i, _len, _ref;
-
if (this.status !== 200) {
return;
}
@@ -8781,7 +8560,6 @@
ImageLoader = {
init: function() {
var prefetch;
-
if (g.VIEW === 'catalog') {
return;
}
@@ -8808,7 +8586,6 @@
},
node: function() {
var URL, img, string, style, thumb, type, _ref, _ref1;
-
if (this.isClone || this.isHidden || this.thread.isHidden || !((_ref = this.file) != null ? _ref.isImage : void 0)) {
return;
}
@@ -8830,7 +8607,6 @@
},
toggle: function() {
var enabled, id, post, _ref;
-
enabled = Conf['prefetch'] = this.checked;
if (enabled) {
_ref = g.threads["" + g.BOARD.ID + "." + g.THREADID].posts;
@@ -8854,7 +8630,6 @@
},
node: function() {
var thumb, _ref;
-
if (this.isClone || !((_ref = this.file) != null ? _ref.isSpoiler : void 0)) {
return;
}
@@ -8867,7 +8642,6 @@
Sauce = {
init: function() {
var err, link, links, _i, _len, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Sauce']) {
return;
}
@@ -8897,7 +8671,6 @@
},
createSauceLink: function(link) {
var m, text;
-
link = link.replace(/(%(T?URL|MD5|board)|\$[1-4])/ig, function(parameter) {
switch (parameter) {
case '%TURL':
@@ -8922,7 +8695,6 @@
},
node: function() {
var link, nodes, _i, _len, _ref;
-
if (this.isClone || !this.file) {
return;
}
@@ -8939,7 +8711,6 @@
ArchiveLink = {
init: function() {
var div, entry, type, _i, _len, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Archive Link']) {
return;
}
@@ -8952,7 +8723,6 @@
order: 90,
open: function(_arg) {
var ID, board, thread;
-
ID = _arg.ID, thread = _arg.thread, board = _arg.board;
return !!Redirect.to('thread', {
postID: ID,
@@ -8971,14 +8741,12 @@
},
createSubEntry: function(text, type) {
var el, open;
-
el = $.el('a', {
textContent: text,
target: '_blank'
});
open = type === 'post' ? function(_arg) {
var ID, board, thread;
-
ID = _arg.ID, thread = _arg.thread, board = _arg.board;
el.href = Redirect.to('thread', {
postID: ID,
@@ -8988,7 +8756,6 @@
return true;
} : function(post) {
var value;
-
value = Filter[type](post);
if (!value) {
return false;
@@ -9011,7 +8778,6 @@
DeleteLink = {
init: function() {
var div, fileEl, fileEntry, postEl, postEntry;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Delete Link']) {
return;
}
@@ -9039,7 +8805,6 @@
el: fileEl,
open: function(_arg) {
var file;
-
file = _arg.file;
if (!file || file.isDead) {
return false;
@@ -9055,7 +8820,6 @@
order: 40,
open: function(post) {
var node;
-
if (post.isDead || post.board.ID === 'q') {
return false;
}
@@ -9070,7 +8834,6 @@
},
"delete": function() {
var fileOnly, form, link, post;
-
post = DeleteLink.post;
if (DeleteLink.cooldown.counting === post) {
return;
@@ -9099,7 +8862,6 @@
},
load: function(link, post, fileOnly, html) {
var msg, s, tmpDoc;
-
tmpDoc = d.implementation.createHTMLDocument('');
tmpDoc.documentElement.innerHTML = html;
if (tmpDoc.title === '4chan - Banned') {
@@ -9122,7 +8884,6 @@
cooldown: {
start: function(post, node) {
var length, seconds, _ref;
-
if (!((_ref = QR.db) != null ? _ref.get({
boardID: post.board.ID,
threadID: post.thread.ID,
@@ -9156,7 +8917,6 @@
DownloadLink = {
init: function() {
var a;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Download Link']) {
return;
}
@@ -9170,7 +8930,6 @@
order: 100,
open: function(_arg) {
var file;
-
file = _arg.file;
if (!file) {
return false;
@@ -9196,7 +8955,6 @@
},
node: function() {
var button;
-
if (this.isClone) {
button = $('.menu-button', this.nodes.info);
} else {
@@ -9207,7 +8965,6 @@
},
makeButton: (function() {
var a;
-
a = null;
return function() {
a || (a = $.el('a', {
@@ -9226,7 +8983,6 @@
ReportLink = {
init: function() {
var a;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Report Link']) {
return;
}
@@ -9248,7 +9004,6 @@
},
report: function() {
var id, post, set, url;
-
post = ReportLink.post;
url = "//sys.4chan.org/" + post.board + "/imgboard.php?mode=report&no=" + post;
id = Date.now();
@@ -9261,7 +9016,6 @@
init: function() {
return $.ready(function() {
var href;
-
Favicon.el = $('link[rel="shortcut icon"]', d.head);
Favicon.el.type = 'image/x-icon';
href = Favicon.el.href;
@@ -9272,7 +9026,6 @@
},
"switch": function() {
var unreadDead;
-
unreadDead = Favicon.unreadDeadY = Favicon.unreadSFW = Favicon.unreadSFWY = Favicon.unreadNSFW = Favicon.unreadNSFWY = 'data:image/png;base64,';
switch (Conf['favicon']) {
case 'ferongr':
@@ -9345,7 +9098,6 @@
init: function() {
var sc,
_this = this;
-
if (g.VIEW !== 'thread' || !Conf['Thread Stats']) {
return;
}
@@ -9375,7 +9127,6 @@
},
node: function() {
var ID, fileCount, post, postCount, _ref;
-
postCount = 0;
fileCount = 0;
_ref = this.posts;
@@ -9393,7 +9144,6 @@
},
onUpdate: function(e) {
var fileCount, postCount, _ref;
-
if (e.detail[404]) {
return;
}
@@ -9402,7 +9152,6 @@
},
update: function(postCount, fileCount) {
var fileCountEl, postCountEl, thread;
-
thread = ThreadStats.thread, postCountEl = ThreadStats.postCountEl, fileCountEl = ThreadStats.fileCountEl;
postCountEl.textContent = postCount;
fileCountEl.textContent = fileCount;
@@ -9429,7 +9178,6 @@
},
onThreadsLoad: function() {
var page, pages, thread, _i, _j, _len, _len1, _ref;
-
if (!Conf["Page Count in Stats"]) {
return;
}
@@ -9457,7 +9205,6 @@
init: function() {
var checked, conf, el, input, name, sc, settings, subEntries, _ref,
_this = this;
-
if (g.VIEW !== 'thread' || !Conf['Thread Updater']) {
return;
}
@@ -9609,7 +9356,6 @@
},
interval: function() {
var val;
-
val = +this.value;
if (val < 1) {
val = 1;
@@ -9619,7 +9365,6 @@
},
load: function() {
var klass, req, text, _ref;
-
req = ThreadUpdater.req;
switch (req.status) {
case 200:
@@ -9663,7 +9408,6 @@
},
getInterval: function() {
var i, j;
-
i = ThreadUpdater.interval;
j = Math.min(ThreadUpdater.outdateCount, 10);
if (!d.hidden) {
@@ -9673,14 +9417,12 @@
},
intervalShortcut: function() {
var settings;
-
Settings.open('Advanced');
settings = $.id('fourchanx-settings');
return $('input[name=Interval]', settings).focus();
},
set: function(name, text, klass) {
var el, node;
-
el = ThreadUpdater[name];
if (node = el.firstChild) {
node.data = text;
@@ -9693,7 +9435,6 @@
},
timeout: function() {
var n;
-
ThreadUpdater.timeoutID = setTimeout(ThreadUpdater.timeout, 1000);
if (!(n = --ThreadUpdater.seconds)) {
return ThreadUpdater.update();
@@ -9706,7 +9447,6 @@
},
update: function() {
var url;
-
if (!ThreadUpdater.online) {
return;
}
@@ -9731,7 +9471,6 @@
},
updateThreadStatus: function(title, OP) {
var icon, message, root, titleLC;
-
titleLC = title.toLowerCase();
if (ThreadUpdater.thread["is" + title] === !!OP[titleLC]) {
return;
@@ -9758,7 +9497,6 @@
},
parse: function(postObjects) {
var ID, OP, count, deletedFiles, deletedPosts, files, index, key, node, num, post, postObject, posts, root, scroll, _i, _len, _ref;
-
OP = postObjects[0];
Build.spoilerRange[ThreadUpdater.thread.board] = OP.custom_spoiler;
ThreadUpdater.updateThreadStatus('Sticky', OP);
@@ -9844,7 +9582,6 @@
}
$.queueTask(function() {
var length, threadID;
-
threadID = ThreadUpdater.thread.ID;
length = $$('.thread > .postContainer', ThreadUpdater.root).length;
return Fourchan.parseThread(threadID, length - count, length);
@@ -9882,7 +9619,6 @@
node: function() {
var favicon,
_this = this;
-
favicon = $.el('a', {
className: 'watch-thread-link',
href: 'javascript:;'
@@ -9902,7 +9638,6 @@
},
refresh: function(watched) {
var ID, board, div, favicon, id, link, nodes, props, thread, x, _ref, _ref1;
-
if (!watched) {
$.get('WatchedThreads', {}, function(item) {
return ThreadWatcher.refresh(item['WatchedThreads']);
@@ -9947,13 +9682,11 @@
},
x: function() {
var thread;
-
thread = this.nextElementSibling.pathname.split('/');
return ThreadWatcher.unwatch(thread[1], thread[3]);
},
post: function(e) {
var board, postID, threadID, _ref;
-
_ref = e.detail, board = _ref.board, postID = _ref.postID, threadID = _ref.threadID;
if (postID === threadID) {
if (Conf['Auto Watch']) {
@@ -9974,7 +9707,6 @@
unwatch: function(board, threadID) {
return $.get('WatchedThreads', {}, function(item) {
var watched;
-
watched = item['WatchedThreads'];
delete watched[board][threadID];
if (!Object.keys(watched[board]).length) {
@@ -9987,7 +9719,6 @@
watch: function(thread) {
return $.get('WatchedThreads', {}, function(item) {
var watched, _name;
-
watched = item['WatchedThreads'];
watched[_name = thread.board] || (watched[_name] = {});
watched[thread.board][thread] = {
@@ -10033,7 +9764,6 @@
},
ready: function() {
var ID, post, posts, _ref;
-
$.off(d, '4chanXInitFinished', Unread.ready);
posts = [];
_ref = Unread.thread.posts;
@@ -10050,7 +9780,6 @@
},
scroll: function() {
var checkPosition, hash, onload, post, posts, root;
-
if ((hash = location.hash.match(/\d+/)) && hash[0] in Unread.thread.posts) {
return;
}
@@ -10080,7 +9809,6 @@
}
checkPosition = function(target) {
var height, top, _ref;
-
_ref = target.getBoundingClientRect(), top = _ref.top, height = _ref.height;
return top + height - doc.clientHeight > 0;
};
@@ -10088,7 +9816,6 @@
},
sync: function() {
var lastReadPost;
-
lastReadPost = Unread.db.get({
boardID: Unread.thread.board.ID,
threadID: Unread.thread.ID,
@@ -10105,7 +9832,6 @@
},
addPosts: function(posts) {
var ID, data, post, _i, _len, _ref;
-
for (_i = 0, _len = posts.length; _i < _len; _i++) {
post = posts[_i];
ID = post.ID;
@@ -10133,7 +9859,6 @@
},
addPostQuotingYou: function(post) {
var quotelink, _i, _len, _ref;
-
if (!QR.db) {
return;
}
@@ -10154,7 +9879,6 @@
},
readSinglePost: function(post) {
var i;
-
if ((i = Unread.posts.indexOf(post)) === -1) {
return;
}
@@ -10170,7 +9894,6 @@
},
readArray: function(arr) {
var i, post, _i, _len;
-
for (i = _i = 0, _len = arr.length; _i < _len; i = ++_i) {
post = arr[i];
if (post.ID > Unread.lastReadPost) {
@@ -10181,7 +9904,6 @@
},
read: $.debounce(50, function(e) {
var ID, bottom, height, i, post, posts, read;
-
if (d.hidden || !Unread.posts.length) {
return;
}
@@ -10215,7 +9937,6 @@
}),
setLine: function(force) {
var post, root;
-
if (!(d.hidden || force === true)) {
return;
}
@@ -10230,7 +9951,6 @@
},
update: function(dontrepeat) {
var count;
-
count = Unread.posts.length;
if (Conf['Unread Count']) {
d.title = "" + (Conf['Quoted Title'] && Unread.postsQuotingYou.length ? '(!) ' : '') + (count || !Conf['Hide Unread Count at (0)'] ? "(" + count + ") " : '') + (g.DEAD ? "/" + g.BOARD + "/ - 404" : "" + Unread.title);
@@ -10254,7 +9974,6 @@
file: {},
init: function() {
var archive, arr, boardID, data, id, name, type, _ref, _ref1, _ref2, _results;
-
_ref = Conf['selectedArchives'];
for (boardID in _ref) {
data = _ref[boardID];
@@ -10279,7 +9998,6 @@
archive = _ref2[name];
_results.push((function() {
var _i, _len, _ref3, _results1;
-
_ref3 = archive.boards;
_results1 = [];
for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
@@ -10391,7 +10109,6 @@
},
to: function(dest, data) {
var archive;
-
archive = (dest === 'search' ? Redirect.thread : Redirect[dest])[data.boardID];
if (!archive) {
return '';
@@ -10400,7 +10117,6 @@
},
protocol: function(archive) {
var protocol;
-
protocol = location.protocol;
if (!archive[protocol.slice(0, -1)]) {
protocol = protocol === 'https:' ? 'http:' : 'https:';
@@ -10409,7 +10125,6 @@
},
thread: function(archive, _arg) {
var boardID, path, postID, threadID;
-
boardID = _arg.boardID, threadID = _arg.threadID, postID = _arg.postID;
path = threadID ? "" + boardID + "/thread/" + threadID : "" + boardID + "/post/" + postID;
if (archive.software === 'foolfuuka') {
@@ -10422,7 +10137,6 @@
},
post: function(archive, _arg) {
var boardID, postID, protocol;
-
boardID = _arg.boardID, postID = _arg.postID;
protocol = Redirect.protocol(archive);
if (['Foolz', 'NSFW Foolz'].contains(archive.name)) {
@@ -10432,13 +10146,11 @@
},
file: function(archive, _arg) {
var boardID, filename;
-
boardID = _arg.boardID, filename = _arg.filename;
return "" + (Redirect.protocol(archive)) + archive.domain + "/" + boardID + "/full_image/" + filename;
},
search: function(archive, _arg) {
var boardID, path, type, value;
-
boardID = _arg.boardID, type = _arg.type, value = _arg.value;
type = type === 'name' ? 'username' : type === 'MD5' ? 'image' : type;
value = encodeURIComponent(value);
@@ -10459,7 +10171,6 @@
},
ready: function() {
var banner, child, children, i, nodes, title;
-
banner = $(".boardBanner");
title = $.el("div", {
id: "boardTitle"
@@ -10492,7 +10203,6 @@
},
focus: function() {
var items, string;
-
string = "" + g.BOARD + "." + this.className;
items = {
title: this.innerHTML
@@ -10514,11 +10224,9 @@
},
custom: function(child) {
var cachedTest;
-
cachedTest = child.innerHTML;
$.get("" + g.BOARD + "." + child.className, cachedTest, function(item) {
var title;
-
if (!(title = item["" + g.BOARD + "." + child.className])) {
return;
}
@@ -10548,7 +10256,6 @@
},
css: function() {
var category, css, icon, key, name, _conf, _ref;
-
_conf = Conf;
css = [];
_ref = Emoji.icons;
@@ -10621,7 +10328,6 @@
},
ready: function() {
var child, el, _i, _len, _ref;
-
if (el = $("#globalMessage", d.body)) {
_ref = el.children;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -10656,7 +10362,6 @@
},
getRelMousePos: function(e) {
var x, y;
-
e || (e = window.event);
x = 0;
y = 0;
@@ -10674,7 +10379,6 @@
},
color: function(target) {
var HSV_RGB, RGB_HSV, THIS, abortBlur, blurTarget, blurValue, drawPicker, holdPad, holdSld, isPickerOwner, leavePad, leaveSld, leaveStyle, leaveValue, redrawPad, redrawSld, removePicker, setPad, setSld, styleElement, valueElement;
-
this.hsv = [0, 0, 1];
this.rgb = [1, 1, 1];
this.valueElement = this.styleElement = target;
@@ -10701,7 +10405,6 @@
};
this.exportColor = function(flags) {
var value;
-
if (!(flags & leaveValue) && valueElement) {
value = '#' + this.toString();
valueElement.value = value;
@@ -10728,7 +10431,6 @@
};
this.fromRGB = function(r, g, b, flags) {
var hsv;
-
r = r != null ? $.minmax(r, 0.0, 1.0) : this.rgb[0];
g = g != null ? $.minmax(g, 0.0, 1.0) : this.rgb[1];
b = b != null ? $.minmax(b, 0.0, 1.0) : this.rgb[2];
@@ -10745,7 +10447,6 @@
};
this.fromString = function(number, flags) {
var m, val;
-
m = number.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i);
if (!m) {
return false;
@@ -10763,7 +10464,6 @@
};
RGB_HSV = function(r, g, b) {
var h, m, n, v;
-
n = (n = r < g ? r : g) < b ? n : b;
v = (v = r > g ? r : g) > b ? v : b;
m = v - n;
@@ -10775,7 +10475,6 @@
};
HSV_RGB = function(h, s, v) {
var f, i, m, n;
-
if (h == null) {
return [v, v, v];
}
@@ -10805,7 +10504,6 @@
};
drawPicker = function(x, y) {
var box, boxB, btn, btnS, elements, item, p, pad, padB, padM, sld, sldB, sldM, _i, _len;
-
if (!(p = JSColor.picker)) {
elements = ['box', 'boxB', 'pad', 'padB', 'padM', 'sld', 'sldB', 'sldM', 'btn'];
p = {};
@@ -10878,7 +10576,6 @@
};
redrawPad = function() {
var rgb;
-
JSColor.picker.padM.style.backgroundPosition = "" + (4 + Math.round((THIS.hsv[0] / 6) * 180)) + "px " + (4 + Math.round((1 - THIS.hsv[1]) * 100)) + "px";
rgb = HSV_RGB(THIS.hsv[0], THIS.hsv[1], 1);
JSColor.picker.sld.style.backgroundColor = "rgb(" + (rgb[0] * 100) + "%, " + (rgb[1] * 100) + "%, " + (rgb[2] * 100) + "%)";
@@ -10901,7 +10598,6 @@
};
setPad = function(e) {
var mpos, x, y;
-
mpos = JSColor.getRelMousePos(e);
x = mpos.x - 11;
y = mpos.y - 11;
@@ -10909,7 +10605,6 @@
};
setSld = function(e) {
var mpos, y;
-
mpos = JSColor.getRelMousePos(e);
y = mpos.y - 9;
return THIS.fromHSV(null, null, 1 - y / 100, leavePad);
@@ -10954,7 +10649,6 @@
init: function(mascot) {
var el, image, name,
_this = this;
-
if (!(mascot && mascot.image)) {
if (!Conf[g.MASCOTSTRING].length) {
return;
@@ -11018,7 +10712,6 @@
categories: ['Anime', 'Ponies', 'Questionable', 'Silhouette', 'Western'],
dialog: function(key) {
var container, dialog, div, fileInput, input, item, layout, name, option, optionHTML, setting, value, _i, _len, _ref;
-
Conf['editMode'] = 'mascot';
if (Mascots[key]) {
editMascot = JSON.parse(JSON.stringify(Mascots[key]));
@@ -11135,7 +10828,6 @@
},
input: function(item, name) {
var div, value;
-
if (Array.isArray(editMascot[name])) {
if (Style.lightTheme) {
value = editMascot[name][1];
@@ -11154,12 +10846,10 @@
},
uploadImage: function(evt, el) {
var file, reader;
-
file = evt.target.files[0];
reader = new FileReader();
reader.onload = function(evt) {
var val;
-
val = evt.target.result;
el.previousSibling.value = val;
return editMascot.image = val;
@@ -11168,7 +10858,6 @@
},
save: function(mascot) {
var image, name, type, _i, _len, _ref;
-
name = mascot.name, image = mascot.image;
if ((name == null) || name === "") {
alert("Please name your mascot.");
@@ -11206,7 +10895,6 @@
delete Mascots[name].name;
return $.get("userMascots", {}, function(item) {
var userMascots;
-
userMascots = item['userMascots'];
userMascots[name] = Mascots[name];
$.set('userMascots', userMascots);
@@ -11228,12 +10916,10 @@
},
importMascot: function(evt) {
var file, reader;
-
file = evt.target.files[0];
reader = new FileReader();
reader.onload = function(e) {
var err, imported, name;
-
try {
imported = JSON.parse(e.target.result);
} catch (_error) {
@@ -11254,7 +10940,6 @@
Mascots[name] = imported;
$.get("userMascots", {}, function(item) {
var userMascots;
-
userMascots = item['userMascots'];
userMascots[name] = Mascots[name];
return $.set('userMascots', userMascots);
@@ -11267,7 +10952,6 @@
},
reposition: function() {
var mascot;
-
mascot = Mascots[Conf['mascot']];
return Style.mascot.textContent = "#mascot img {\nheight: " + (mascot.height && isNaN(parseFloat(mascot.height)) ? mascot.height : mascot.height ? parseInt(mascot.height, 10) + 'px' : 'auto') + ";\nwidth: " + (mascot.width && isNaN(parseFloat(mascot.width)) ? mascot.width : mascot.width ? parseInt(mascot.width, 10) + 'px' : 'auto') + ";\n}\n#mascot {\nmargin: " + (mascot.vOffset || 0) + "px " + (mascot.hOffset || 0) + "px;\n}\n.sidebar-large #mascot {\nleft: " + (mascot.center ? 25 : 0) + "px;\nright: " + (mascot.center ? 25 : 0) + "px;\n}\n.mascot-position-above-post-form.post-form-style-fixed #mascot {\n-webkit-transform: translateY(-" + (QR.nodes ? QR.nodes.el.getBoundingClientRect().height : 0) + "px);\n}";
}
@@ -11291,7 +10975,6 @@
},
option: function(e) {
var container, select;
-
e.stopPropagation();
e.preventDefault();
select = Rice.input;
@@ -11303,7 +10986,6 @@
},
select: function(e) {
var clientHeight, li, nodes, option, rect, select, style, ul, _i, _len, _ref;
-
e.stopPropagation();
e.preventDefault();
ul = Rice.ul;
@@ -11341,7 +11023,6 @@
},
cleanup: function() {
var child, _i, _len, _ref;
-
$.off(d, 'click scroll blur resize', Rice.cleanup);
_ref = __slice.call(Rice.ul.children);
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -11351,7 +11032,6 @@
},
nodes: function(root) {
var checkboxes, checkrice, input, select, selectrice, selects, _i, _j, _len, _len1;
-
root || (root = d.body);
checkboxes = $$('[type=checkbox]:not(.riced)', root);
checkrice = Rice.checkbox;
@@ -11371,7 +11051,6 @@
},
checkbox: function(input) {
var div;
-
if ($.hasClass(input, 'riced')) {
return;
}
@@ -11385,7 +11064,6 @@
},
select: function(select) {
var div;
-
$.addClass(select, 'riced');
div = $.el('div', {
className: 'selectrice',
@@ -11407,7 +11085,6 @@
},
asapInit: function() {
var cat, hyphenated, name, setting, title, _ref;
-
$.addClass(doc, 'webkit');
$.addClass(doc, 'blink');
$.addClass(doc, 'fourchan-x');
@@ -11432,7 +11109,6 @@
return $('.mPagelist');
}), function() {
var next, nextA, nextAction, prev, prevA, prevAction;
-
prev = $(".pagelist > .prev");
prevA = $.el('a', {
textContent: '<'
@@ -11460,7 +11136,6 @@
},
readyInit: function() {
var exLink;
-
Style.padding();
Style.iconPositions();
if (exLink = $("#navtopright .exlinksOptionsLink", d.body)) {
@@ -11471,7 +11146,6 @@
},
setup: function() {
var theme;
-
theme = Themes[Conf['theme']] || Themes['Yotsuba B'];
Style.svg = $.el('div', {
id: 'svg_filters'
@@ -11496,7 +11170,6 @@
},
observe: function() {
var onMutationObserver;
-
if (window.MutationObserver) {
Style.observer = new MutationObserver(onMutationObserver = this.wrapper);
return Style.observer.observe(d, {
@@ -11530,7 +11203,6 @@
headCount: 12,
remStyle: function() {
var href, i, node, nodes;
-
nodes = d.head.children;
i = nodes.length;
while (i--) {
@@ -11538,7 +11210,7 @@
return;
}
node = nodes[i];
- if ((node.nodeName === 'STYLE' && !node.id) || (("" + node.rel).contains('stylesheet') && !/static\.4chan\.org\/css\/flags\.507\.css/.test(href = node.href) && href.slice(0, 4) !== 'data')) {
+ if ((node.nodeName === 'STYLE' && !node.id) || (("" + node.rel).contains('stylesheet') && !/flags.*\.css$/.test(href = node.href) && href.slice(0, 4) !== 'data')) {
Style.headCount--;
$.rm(node);
}
@@ -11546,7 +11218,6 @@
},
matrix: function(foreground, background) {
var bg, bgHex, fg, fgHex;
-
fgHex = Style.colorToHex(foreground);
fg = {
r: parseInt(fgHex.substr(0, 2), 16) / 255,
@@ -11566,20 +11237,17 @@
},
filter: function(_arg) {
var bg, fg;
-
fg = _arg[0], bg = _arg[1];
return "" + bg.r + " " + (-fg.r) + " 0 0 " + fg.r + " " + bg.g + " " + (-fg.g) + " 0 0 " + fg.g + " " + bg.b + " " + (-fg.b) + " 0 0 " + fg.b;
},
silhouette: function(_arg) {
var fg;
-
fg = _arg[0];
return "0 0 0 0 " + fg.r + " 0 0 0 0 " + fg.g + " 0 0 0 0 " + fg.b;
},
layout: "/* Cleanup */\n#absbot,\n#boardNavDesktop,\n#delPassword,\n#delform > hr:last-of-type,\n#navbotright,\n#postForm,\n#search-label,\n#search-label-bottom,\n#styleSwitcher,\n#togglePostForm,\n.boardBanner > div,\n.mobile,\n.next form,\n.next span,\n.postingMode,\n.prev form,\n.prev span,\n.riced,\n.sideArrows,\n.stylechanger,\nbody > br,\nbody > div[style^=\"text-align\"],\nbody > hr {\n display: none;\n}\n/* Empties */\n#qr .warning:empty,\n#qr-thread-select:empty {\n display: none;\n}\n/* File Name Trunctuate */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull {\n display: none;\n}\n/* Unnecessary */\n#qp input,\n#qp .rice,\n.inline .rice {\n display: none !important;\n}\n/* Hidden Content */\n.forwarded,\n.hidden,\n.hidden_thread ~ div,\n.hidden_thread ~ a,\n.replyContainer .stub ~ div,\n.replyContainer .stub ~ a,\n.stub + div,\n.thread > .stub:first-child ~ .postContainer,\n.thread > .stub:first-child ~ .summary,\n[hidden] {\n display: none !important;\n}\n/* Hidden UI */\n#catalog,\n#navlinks,\n#navtopright,\n#svg_filters,\n.cataloglink,\n.navLinks {\n z-index: 7;\n position: fixed;\n top: 100%;\n left: 100%;\n}\n/* Hide last horizontal rule, keep clear functionality. */\n.board > hr:last-of-type {\n visibility: hidden;\n}\n/* Fappe Tyme */\n.fappeTyme .thread > .noFile,\n.fappeTyme .threadContainer > .noFile {\n display: none;\n}\n/* Defaults */\na {\n text-decoration: none;\n outline: none;\n}\n.underline-links a {\n text-decoration: underline;\n}\nbody,\nhtml {\n min-height: 100%;\n box-sizing: border-box;\n}\nbody {\n outline: none;\n min-height: 100%;\n}\n.sidebar-hide body {\n margin: 0 2px;\n}\n.sidebar-minimal body {\n margin: 0 20px;\n}\n.sidebar-normal body {\n margin: 0 252px\n}\n.sidebar-large body {\n margin: 0 303px;\n}\n.sidebar-location-right body {\n margin-left: 2px;\n}\n.sidebar-location-left body {\n margin-right: 2px;\n}\nbody.unscroll {\n overflow: hidden;\n}\n.fourchan-ss-sidebar body::before {\n content: '';\n position: fixed;\n top: 0;\n bottom: 0;\n box-sizing: border-box;\n display: block;\n z-index: 0;\n}\n.fourchan-ss-sidebar.sidebar-large body::before {\n width: 306px;\n}\n.fourchan-ss-sidebar.sidebar-normal body::before {\n width: 255px;\n}\n.fourchan-ss-sidebar.sidebar-minimal body::before {\n width: 23px;\n}\n.sidebar-location-right body::before {\n right: 0;\n}\nsidebar-location-left body::before {\n left: 0;\n}\n.fourchan-ss-sidebar.sidebar-location-right body {\n padding-right: 2px;\n}\n.fourchan-ss-sidebar.sidebar-location-left body {\n padding-left: 2px;\n}\nhr {\n clear: both;\n border: 0;\n padding: 0;\n margin: 0 0 1px;\n}\n.hide-horizontal-rules hr {\n visibility: hidden;\n}\nth {\n text-align: left;\n}\n.center {\n text-align: center;\n}\n.disabled {\n opacity: 0.5;\n}\n.pointer {\n cursor: pointer;\n}\n/* Symbols */\n.drop-marker {\n vertical-align: middle;\n display: inline-block;\n margin: 2px 2px 3px;\n border-top: .5em solid;\n border-right: .3em solid transparent;\n border-left: .3em solid transparent;\n}\n.brackets-wrap::before {\n content: \" [\";\n}\n.brackets-wrap::after {\n content: \"] \";\n}\n/* Thread / Reply Nav */\n#navlinks a {\n position: fixed;\n z-index: 12;\n opacity: 0.5;\n display: inline-block;\n border-right: 6px solid transparent;\n border-left: 6px solid transparent;\n margin: 1.5px;\n}\n#navlinks a:first-of-type {\n border-bottom: 11px solid rgb(130,130,130);\n}\n#navlinks a:last-of-type {\n border-top: 11px solid rgb(130,130,130);\n}\n/* Header */\n#header-bar {\n z-index: 6;\n border-width: 1px;\n padding: 0 2px;\n border-style: solid;\n}\n.pagination-sticky-top .pagelist,\n.pagination-sticky-bottom .pagelist,\n#header-bar {\n left: 2px;\n right: 2px;\n}\n.navigation-alignment-center #header-bar {\n text-align: center;\n}\n.navigation-alignment-right #header-bar {\n text-align: right;\n}\n.sidebar-location-left.sidebar-large:not(.pagination-on-side):not(.fourchan-ss-navigation) .pagelist,\n.sidebar-location-left #header-bar {\n left: 303px;\n}\n.sidebar-location-left.sidebar-normal:not(.pagination-on-side):not(.fourchan-ss-navigation) .pagelist,\n.sidebar-location-left #header-bar {\n left: 252px;\n}\n.sidebar-location-left.sidebar-minimal:not(.pagination-on-side):not(.fourchan-ss-navigation) .pagelist,\n.sidebar-location-left.sidebar-minimal:not(.fourchan-ss-navigation) #header-bar {\n left: 20px;\n}\n.sidebar-location-right.sidebar-large:not(.pagination-on-side):not(.fourchan-ss-navigation) .pagelist,\n.sidebar-location-right #header-bar {\n right: 303px;\n}\n.sidebar-location-right.sidebar-normal:not(.pagination-on-side):not(.fourchan-ss-navigation) .pagelist,\n.sidebar-location-right #header-bar {\n right: 252px;\n}\n.sidebar-location-right.sidebar-minimal:not(.pagination-on-side):not(.fourchan-ss-navigation) .pagelist,\n.sidebar-location-right.sidebar-minimal:not(.fourchan-ss-navigation) #header-bar {\n right: 20px;\n}\n.fourchan-ss-navigation .pagelist,\n.fourchan-ss-navigation #header-bar {\n left: 0;\n right: 0;\n border-left: 0;\n border-right: 0;\n border-radius: 0 !important;\n}\n.hide-navigation-decorations #header-bar {\n font-size: 0;\n color: transparent;\n word-spacing: 2px;\n}\n#shortcuts {\n float: right;\n}\n.fixed #header-bar.autohide {\n z-index: 24;\n}\n.fixed #header-bar {\n position: fixed;\n}\n.top #header-bar {\n top: 0;\n border-top-width: 0;\n}\n.rounded-edges.top #header-bar {\n border-radius: 0 0 3px 3px;\n}\n.fixed.bottom #header-bar {\n bottom: 0;\n border-bottom-width: 0;\n}\n.rounded-edges.bottom #header-bar {\n border-radius: 3px 3px 0 0;\n}\n.hide #header-bar {\n position: fixed;\n top: 110%;\n bottom: auto;\n}\n/* Header Autohide */\n.fixed #header-bar.autohide:not(:hover) {\n box-shadow: none;\n transition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #header-bar.autohide:not(:hover) {\n margin-bottom: -1em;\n -webkit-transform: translateY(-100%);\n}\n.fixed.bottom #header-bar.autohide:not(:hover) {\n -webkit-transform: translateY(100%);\n}\n#scroll-marker {\n left: 0;\n right: 0;\n height: 10px;\n position: absolute;\n}\n#header-bar #scroll-marker {\n display: none;\n}\n.fixed #header-bar #scroll-marker {\n display: block;\n}\n.fixed.top header-bar #scroll-marker {\n top: 100%;\n}\n.fixed.bottom #header-bar #scroll-marker {\n bottom: 100%;\n}\n/* Notifications */\n#notifications {\n position: fixed;\n top: 0;\n text-align: center;\n right: 0;\n left: 0;\n transition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #header-bar #notifications {\n position: absolute;\n top: 100%;\n}\n.notification {\n color: #fff;\n font-weight: 700;\n text-shadow: 0 1px 2px rgba(0, 0, 0, .5);\n box-shadow: 0 1px 2px rgba(0, 0, 0, .15);\n border-radius: 2px;\n margin: 1px auto;\n width: 500px;\n max-width: 100%;\n position: relative;\n transition: all .25s ease-in-out;\n}\n.notification.error {\n background-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\n background-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\n background-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\n background-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\n color: #fff;\n}\n.notification > .close {\n padding: 6px;\n top: 0;\n right: 5px;\n position: absolute;\n color: #fff;\n}\n.message {\n box-sizing: border-box;\n padding: 6px 20px;\n max-height: 200px;\n width: 100%;\n overflow: auto;\n}\n/* Updater / Thread Stats */\n.float #thread-stats,\n.float #updater {\n position: fixed;\n}\n#update-status.new::after {\n content: ', ';\n}\n/* Pagination */\n.pagelist {\n border-style: solid;\n border-width: 1px;\n z-index: 6;\n}\n.pagination-alignment-center .pagelist {\n text-align: center;\n}\n.pagination-alignment-right .pagelist {\n text-align: right;\n}\n.pagination-sticky-top .pagelist {\n position: fixed;\n top: 0;\n border-top-width: 0;\n}\n.pagination-sticky-bottom .pagelist {\n position: fixed;\n bottom: 0;\n border-bottom-width: 0;\n}\n.pagination-top .pagelist {\n position: static;\n border-top-width: 0;\n}\n.pagination-bottom .pagelist {\n position: static;\n}\n.pagination-top.rounded-edges .pagelist,\n.pagination-sticky-top.rounded-edges .pagelist {\n border-radius: 0 0 3px 3px;\n}\n.pagination-bottom.rounded-edges .pagelist,\n.pagination-sticky-bottom.rounded-edges .pagelist {\n border-radius: 3px 3px 0 0;\n}\n.pagination-hide .pagelist {\n display: none;\n}\n.pagination-on-side .pagelist {\n position: fixed;\n padding: 0;\n top: auto;\n bottom: 0.5em;\n margin: 0;\n background: none transparent !important;\n border: 0 none !important;\n text-align: right;\n}\n.pagination-on-side.post-form-style-fixed.show-post-form-header .pagelist {\n bottom: 23.1em;\n}\n.pagination-on-side.post-form-style-fixed .pagelist {\n bottom: 21.6em;\n}\n.sidebar-location-left.pagination-on-side .pagelist {\n -webkit-transform: rotate(-90deg);\n -webkit-transform-origin: bottom left;\n}\n\n.sidebar-location-right.pagination-on-side .pagelist {\n -webkit-transform: rotate(90deg);\n -webkit-transform-origin: bottom right;\"\n}\n.sidebar-location-right.sidebar-large.pagination-on-side .pagelist {\n left: auto;\n right: 301px;\n}\n.sidebar-location-left.sidebar-large.pagination-on-side .pagelist {\n right: auto;\n left: 301px;\n}\n.sidebar-location-right.sidebar-normal.pagination-on-side .pagelist {\n left: auto;\n right: 246px;\n}\n.sidebar-location-left.sidebar-normal.pagination-on-side .pagelist {\n right: auto;\n left: 246px;\n}\n.sidebar-location-right.sidebar-minimal.pagination-on-side .pagelist {\n left: auto;\n right: 246px;\n}\n.sidebar-location-left.sidebar-minimal.pagination-on-side .pagelist {\n right: auto;\n left: 18px;\n}\n.hide-navigation-decorations .pagelist {\n font-size: 0;\n color: transparent;\n word-spacing: 0;\n}\n.pagelist input,\n.pagelist div {\n vertical-align: middle;\n}\n.hide-navigation-decorations .pages a {\n margin: 0 1px;\n}\n.next,\n.pages,\n.prev {\n display: inline-block;\n margin: 0 3px;\n}\n/* Icons */\n.icons-4chan-ss #navtopright .exlinksOptionsLink::after,\n.icons-4chan-ss #main-menu,\n.icons-4chan-ss .navLinks > a:first-of-type::after,\n.icons-4chan-ss #watcher::after,\n.icons-4chan-ss #globalMessage::after,\n.icons-4chan-ss #boardNavDesktopFoot::after,\n.icons-4chan-ss #img-controls,\n.icons-4chan-ss #catalog::after,\n.icons-4chan-ss #fappeTyme {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAACWCAMAAAA2YSLzAAAAPFBMVEVkZGRlZWVjY2NmZmZnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dZxmG7AAAAE3RSTlMFFQ0AJD8eQFRqf5CgssDM4+73gHqZRAAAA0pJREFUSMetVlmy5CgMZDMGxK7737Ulgcu8ejMREzHtD7sShJRaKWV/Psq3iz7QGwTF2BZ01hp3N6yasctZJANiN5ZlItDLtNkQDGNeMLU7EqmCbUwhkhZbwsIuNbyWPX7dIyHOrDYOc8SOiEUJjojN0EsWlCXRrq2qvJCsIjic2OcFrwrOpdmTimqVyWG7ZkrWy97p7z/hACd2FUetBcQDpTN+nuKsGng881L5xOz/VQ88xL/eQkyZT3axp+4dUMwvH0Pnhn6wSyR+8IdR4f43/v8XX1BHjXpjwy5RdEcQ7DiuzlBUsFD+GeIFEy6W0pKXoSZOiUz5tf99nvTDD/1sP9VRPvb/un86lT57SVqwSk8KR+L6kgTOlcZslRQe5WmJRKovETW7Anb+HzxUW4Xgnv11fuuj82aKXHz1Tzztx9v4VA9+/6le26B+3VhTC9RMPIr0qx4zaWNsnFRO0s8FWgEIFIRiVUAIlJGciqMmCwpQWyI/OplXA1RrXG1YI2svTQ3ufhWjNlKFqtXFI7Yg+zAXRcBZ+HygJuVHd0ys35bVn6QojLL5cZeVvPht/mVu/r/8s7GMXsLjv2s71GZhgjnEwsEVXogiSl/pl7LWra0IQgO3poTsieoYd4dhWfJlGWqyQf6sLxWt3/MRa4Im04ixeSdAWnxvqCX6tObVmzpZOPOZvrBNJF8gmGciBChsV+YdRYwnAvNpS4AnYFBm0KA2a35Unh+efxjercaLfV7wW0rtUTNl2j715al/9VtfutF+NZ/+aZSa+py/GCpRyvr17EsVLbRhmN++BBY/ik5/+YPK6bKnf2T8fh7P+uEYn0D3E4L3i6QHmvc3+k+8PN6Mb1w52tje6LbAi+M0FT4YneqVbpVDPnL2Xqx7m3tf9ENXHba9H/a/+X3z/+XfCnOo+Zy/o4SgY5Z6iq0nb+9Mc4JxL5f1qYs+xhTP/uiX/cMe4+hDHAfGnmGe+Ev+G88vnG7Ie20wHiUt/S1Kv+6BCM/9fkEfz73/9HNufQ4ZKdzvnwtS/LXltRcJB/yJ23H/mo89nPFa85Li3XOYu435LwTXKVWwO+cnlWFTB47L/AdfR//KI2bvF8sAb0c/M+1+YE3/oS77B8N+UUVHraV6AAAAAElFTkSuQmCC\");\n}\n.icons-oneechan #navtopright .exlinksOptionsLink::after,\n.icons-oneechan #main-menu,\n.icons-oneechan .navLinks > a:first-of-type::after,\n.icons-oneechan #watcher::after,\n.icons-oneechan #globalMessage::after,\n.icons-oneechan #boardNavDesktopFoot::after,\n.icons-oneechan #img-controls,\n.icons-oneechan #catalog::after,\n.icons-oneechan #fappeTyme {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAACWCAMAAAA2YSLzAAAAPFBMVEVoaGhqampeXl5sbGxsbGxra2tsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGzXmsRLAAAAE3RSTlMAEAYnHBg2QExbcYaWqM++2+z4BMdvAwAAAtVJREFUSMfFVgmu3CAMhYRPAmb3/e9aL5Bl2kptVbXWSOSBsY15NmOMMZs1KnNExC+ezgV4MBtNMIw58+qX2REtQwiifdC6hwlNQBGfUlBzc+KYkP3IxH5hNvicCPXrMfEVi3ts2WrzaiN6jie2OI2GXbBfXiA/XPyexPpEHrHdyDV8YAt6vEYCVpJ3S7rXAZKkkfbnuR8Uk/32xsac6Y01La2ZfyIh1VrX9Rnfu5ygd6/XeQAGFxACkopDb3mkeXug48x5FCKhNzW+1j2t8/5EEwHTIfPm6G3aP37o/w/ir3QZ2V/xY0spdSxWL7MrLU7slmnDSY0UrH6CBJ/wFI3TNGECCDY9G4xmrpDkZvQMJ4q31EzLQuhipr7ag8ueFa+hUQy2d43nnPGg7NopHTUVyYlWpE+lUT4qfhDCnLpzB8oXLLJb4leptD/JblswOaZd0gRkDV0cJi69NNOUaclRpG6S1NPdRVPLjI3VSjWV8+FmaARknTxqfipl0tGR1DXvd0h251Ww/ZlaNQoaX3bqUS+IK6ZX4hysvuQinS+6n9638/6BbK4RLi6R11O8rPS4OnO66KHtw6yK96BWrg5QxDGcVzcoB8cYb/dE1zPO6C+pHxN0Ttw/JtJrx55+oV9Jq+ScF22IfBWDD+sHfTnBmKlpS99hPGSC4SBsi+dP3p0PjVBVedMdO3WoG57cAEbYVNkRHFROIzjYuGjoM7LOaEQKbtQjkuo5hCSMmezaNq3Gl6TE5J3ZLMu26SjpPJZo4h/9FJhT4JQJzjFXD7x54fBgzO9RvDH9Vl5vHIetcGHct1apLh/6gU3c2PYy5rrYh7a1NP29/H/G9xn/d+f7FNVcw9/H/9sf8ymXPnqdDd7Wx3OpzWRJuP8+iMTFe7wZq48Tce7QciNetUzku+pT/t4UHK/iIq2yPR/8y/315M/rWl1A/sM83phVh6+aeZY39OLNN4Y0P2GdHOWPAAAAAElFTkSuQmCC\");\n}\n/* Banner & Board Title */\n.boardBanner {\n line-height: 0;\n}\n.faded-4chan-banner .boardBanner {\n opacity: 0.5;\n transition: opacity 0.3s ease-in-out .5s;\n}\n.faded-4chan-banner .boardBanner:hover {\n opacity: 1;\n transition: opacity 0.3s ease-in;\n}\n/* From 4chan SS / OneeChan */\n\n.fourchan-banner-reflection #Banner {\n -webkit-box-reflect: below 0 -webkit-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,0) 10%, rgba(255,255,255,.5));\n}\n\n.fourchan-banner-at-sidebar-top .boardBanner,\n.fourchan-banner-at-sidebar-bottom .boardBanner,\n.fourchan-banner-at-sidebar-bottom .boardBanner {\n position: fixed;\n}\n.fourchan-banner-at-sidebar-top .boardBanner {\n top: 16px;\n}\n.fourchan-banner-at-sidebar-bottom .boardBanner {\n bottom: 270px;\n}\n.fourchan-banner-under-post-form .boardBanner {\n bottom: 130px;\n}\n.board-title-at-sidebar-top.sidebar-location-right #boardTitle,\n.board-title-at-sidebar-bottom.sidebar-location-right #boardTitle,\n.board-title-under-post-form.sidebar-location-right #boardTitle,\n.fourchan-banner-at-sidebar-top.sidebar-location-right .boardBanner,\n.fourchan-banner-at-sidebar-bottom.sidebar-location-right .boardBanner,\n.fourchan-banner-under-post-form.sidebar-location-right .boardBanner {\n right: 2px;\n}\n.board-title-at-sidebar-top.sidebar-location-left #boardTitle,\n.board-title-at-sidebar-bottom.sidebar-location-left #boardTitle,\n.board-title-under-post-form.sidebar-location-left #boardTitle,\n.fourchan-banner-at-sidebar-top.sidebar-location-left .boardBanner,\n.fourchan-banner-at-sidebar-bottom.sidebar-location-left .boardBanner,\n.fourchan-banner-under-post-form.sidebar-location-left .boardBanner {\n left: 2px;\n}\n.board-title-at-sidebar-top #boardTitle,\n.board-title-at-sidebar-bottom #boardTitle,\n.board-title-under-post-form #boardTitle,\n.fourchan-banner-at-sidebar-top .boardBanner img,\n.fourchan-banner-at-sidebar-bottom .boardBanner img,\n.fourchan-banner-under-post-form .boardBanner img {\n width: 248px;\n}\n.board-title-at-sidebar-top.sidebar-large #boardTitle,\n.board-title-at-sidebar-bottom.sidebar-large #boardTitle,\n.board-title-under-post-form.sidebar-large #boardTitle,\n.fourchan-banner-at-sidebar-top.sidebar-large .boardBanner img,\n.fourchan-banner-at-sidebar-bottom.sidebar-large .boardBanner img,\n.fourchan-banner-under-post-form.sidebar-large .boardBanner img {\n width: 299px;\n}\n.fourchan-banner-at-top .boardBanner {\n position: relative;\n display: table;\n margin: 12px auto;\n text-align: center;\n}\n:root:not(.board-subtitle) .boardSubtitle,\n.board-title-hide #boardTitle,\n.fourchan-banner-hide .boardBanner {\n display: none;\n}\n#boardTitle {\n text-align: center;\n z-index: 4;\n}\n.board-title-at-sidebar-top #boardTitle,\n.board-title-at-sidebar-bottom #boardTitle,\n.board-title-under-post-form #boardTitle {\n position: fixed;\n}\n.board-title-at-sidebar-top.fourchan-banner-at-sidebar-top.sidebar-large #boardTitle {\n top: 121px;\n}\n.board-title-at-sidebar-top.fourchan-banner-at-sidebar-top #boardTitle {\n top: 104px;\n}\n.board-title-at-sidebar-top #boardTitle {\n top: 40px;\n}\n.board-title-at-sidebar-bottom #boardTitle {\n bottom: 280px;\n}\n.board-title-under-post-form #boardTitle {\n bottom: 140px;\n}\n/* Hover UI */\n.move {\n cursor: pointer;\n}\n#ihover {\n position: fixed;\n max-height: 97%;\n max-width: 75%;\n padding: 10px;\n z-index: 22;\n}\n#qp {\n position: fixed;\n z-index: 22;\n}\n#qp .postMessage::after {\n clear: both;\n display: block;\n content: \"\";\n}\n#qp .full-image {\n max-height: 300px;\n max-width: 500px;\n}\n#menu {\n position: fixed;\n outline: none;\n z-index: 22;\n}\n/* Image Expansion */\n.fit-width .full-image {\n max-width: 100%;\n width: 100%;\n}\n.fit-height .full-image {\n max-height: 95vh;\n}\n.images-overlap-post-form .full-image {\n position: relative;\n z-index: 21;\n}\n/* Delete Buttons */\n.hide-delete-ui .deleteform,\n.hide-delete-ui .post:not(#exlinks-options) .rice {\n display: none;\n}\n.hide-delete-ui .postInfo {\n padding: 0 0 0 3px;\n}\n.deleteform {\n position: fixed;\n z-index: 18;\n width: 0;\n bottom: 0;\n right: 0;\n border-width: 1px 0 0 1px;\n border-style: solid;\n font-size: 0;\n color: transparent;\n}\n.deleteform:hover {\n width: auto;\n}\n.deleteform::before {\n z-index: 18;\n border-width: 1px 0 0 1px;\n border-style: solid;\n content: '✖';\n display: block;\n position: fixed;\n bottom: 0;\n right: 0;\n box-sizing: border-box;\n height: 1.6em;\n width: 1.4em;\n text-align: center;\n}\n.deleteform:hover::before {\n display: none;\n}\n.deleteform input {\n margin: 0 1px 0 0;\n}\n/* Slideout Navigation */\n#boardNavDesktopFoot {\n position: fixed;\n text-align: center;\n font-size: 0;\n color: transparent;\n overflow: hidden;\n box-sizing: border-box;\n width: 248px;\n}\n.sidebar-large #boardNavDesktopFoot {\n width: 299px;\n}\n.sidebar-location-right #boardNavDesktopFoot {\n right: 2px;\n}\n.sidebar-location-left #boardNavDesktopFoot {\n left: 2px;\n}\n#boardNavDesktopFoot:hover {\n overflow-y: auto;\n padding: 2px;\n}\n#boardNavDesktopFoot:not(:hover) {\n border-color: transparent;\n background-color: transparent;\n height: 0;\n overflow: hidden;\n padding: 0;\n border: 0 none;\n}\n.slideout-navigation-compact #boardNavDesktopFoot {\n word-spacing: 1px;\n}\n.slideout-navigation-list #boardNavDesktopFoot a {\n display: block;\n}\n.slideout-navigation-list #boardNavDesktopFoot:hover {\n max-height: 400px;\n}\n.slideout-navigation-list #boardNavDesktopFoot a::after {\n content: ' - ' attr(title);\n}\n.slideout-navigation-list #boardNavDesktopFoot a[href*='//boards.4chan.org/']::after,\n.slideout-navigation-list #boardNavDesktopFoot a[href*='//rs.4chan.org/']::after {\n content: '/ - ' attr(title);\n}\n.slideout-navigation-list #boardNavDesktopFoot a[href*='//boards.4chan.org/']::before,\n.slideout-navigation-list #boardNavDesktopFoot a[href*='//rs.4chan.org/']::before {\n content: '/';\n}\n.slideout-navigation-hide #boardNavDesktopFoot {\n display: none;\n}\n/* Watcher */\n#watcher {\n position: fixed;\n z-index: 14;\n padding: 2px;\n}\n#watcher {\n width: 200px;\n}\n#watcher:not(:hover) {\n max-height: 200px;\n overflow: hidden;\n}\n.rounded-edges #watcher {\n border-radius: 3px;\n}\n#watcher > div {\n max-height: 1.3em;\n overflow: hidden;\n}\n.slideout-watcher #watcher {\n box-sizing: border-box;\n width: 248px;\n}\n.slideout-watcher.sidebar-large #boardNavDesktopFoot {\n width: 299px;\n}\n.slideout-watcher.sidebar-location-right #watcher {\n left: auto !important;\n right: 2px !important;\n}\n.slideout-watcher.sidebar-location-left #watcher {\n right: auto !important;\n left: 2px !important;\n}\n.slideout-watcher #watcher .move {\n cursor: default;\n}\n.slideout-watcher.underline-links #watcher .move {\n text-decoration: underline;\n}\n.slideout-watcher #watcher > div {\n overflow: hidden;\n}\n.slideout-watcher #watcher:hover {\n overflow-y: auto;\n}\n.slideout-watcher #watcher:not(:hover) {\n height: 0;\n overflow: hidden;\n border: 0 none;\n padding: 0;\n}\n.watch-thread-link {\n padding-top: 18px;\n width: 18px;\n height: 0px;\n display: inline-block;\n background-repeat: no-repeat;\n opacity: 0.2;\n position: relative;\n top: 1px;\n}\n.watch-thread-link.watched {\n opacity: 1;\n}\n/* Announcements */\n#globalMessage {\n text-align: center;\n}\n.rounded-edges #globalMessage {\n border-radius: 3px;\n}\n.announcements-slideout #globalMessage {\n position: fixed;\n padding: 2px;\n width: 248px;\n}\n.announcements-slideout.sidebar-location-right #globalMessage {\n left: auto;\n right: 2px;\n}\n.announcements-slideout.sidebar-location-left #globalMessage {\n right: auto;\n left: 2px;\n}\n.announcements-slideout.sidebar-large #globalMessage {\n width: 299px;\n}\n.announcements-slideout #globalMessage h3 {\n margin: 0;\n}\n.announcements-slideout #globalMessage:hover {\n box-sizing: border-box;\n overflow-y: auto;\n}\n.announcements-slideout #globalMessage:not(:hover) {\n height: 0;\n overflow: hidden;\n padding: 0;\n border: 0 none;\n}\n.announcements-hide #globalMessage {\n display: none !important;\n}\n/* Threads */\n#threads,\n.rounded-edges .board > .thread {\n border-radius: 4px;\n}\n/* Thread Clearfix */\n.thread > .threadContainer:last-of-type::after,\n.thread > .postContainer:last-of-type::after {\n display: block;\n content: ' ';\n clear: both;\n}\n/* Posts */\n.expanding {\n opacity: .5;\n}\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n.post > .file > .fileThumb > .full-image {\n display: none;\n}\n.expanded-image > .post > .file > .fileThumb > .full-image {\n display: block;\n}\n.thread > .replyContainer:last-of-type .post {\n margin-bottom: 0;\n}\n.menu-button {\n position: relative;\n}\n.stub .menu-button,\n.post .menu-button,\n.hide-thread-button,\n.show-thread-button span,\n.hide-reply-button,\n.show-reply-button span {\n float: right;\n}\n.post .menu-button,\n.hide-thread-button,\n.hide-reply-button {\n margin: 0 3px;\n opacity: 0;\n transition: opacity .3s ease-out 0s;\n}\n.post:hover .hide-reply-button,\n.post:hover .menu-button,\n.post:hover .hide-thread-button,\n.hidden_thread .hide-thread-button,\n.hidden_thread .menu-button,\n.inline .hide-reply-button,\n.inline .menu-button {\n opacity: 1;\n}\n.hidden_thread {\n text-align: right;\n}\n.color-user-ids .posteruid .hand {\n padding: .1em .3em;\n border-radius: 1em;\n font-size: 80%;\n}\n.postInfo > span {\n vertical-align: bottom;\n}\n.bolds .subject,\n.bolds .name {\n font-weight: 600;\n}\n.italics .postertrip {\n font-style: italic;\n}\n.underline-links .replylink {\n text-decoration: underline;\n}\n.fileInfo {\n padding: 0 3px;\n}\n.fileThumb {\n float: left;\n margin: 3px 20px;\n outline: none;\n}\n.reply.post {\n box-sizing: border-box;\n display: inline-block;\n}\n.fit-width-replies .reply.post {\n display: block;\n overflow: hidden;\n}\n.fit-width-replies .expanded-image .reply.post,\n.fit-width-replies .hasInline .reply.post {\n width: 100%;\n}\n.indent-replies #unread-line,\n.indent-replies .thread > .replyContainer,\n.indent-replies .threadContainer > .replyContainer {\n margin-left: 2em;\n}\n.expanded-image .reply.post,\n.hasInline .reply.post {\n display: inline-block;\n overflow: visible;\n clear: both;\n}\n.rounded-edges .post {\n border-radius: 3px;\n}\n.spoiler,\ns {\n text-decoration: none;\n}\n/* Emoji */\na.useremail:last-of-type {\n vertical-align: top;\n}\n/* Reply Clearfix */\n.reply.post .postMessage {\n clear: right;\n}\n.op-background .op.post .postMessage::after,\n.force-reply-break .op.post .postMessage::after {\n display: block;\n content: ' ';\n clear: both;\n}\n/* OP */\n.favicon {\n vertical-align: bottom;\n}\n.op-background .op.post {\n box-sizing: border-box;\n}\n/* Summary */\n.force-reply-break .summary {\n clear: both;\n}\n/* Inlined */\n.inline {\n margin: 2px 8px 2px 2px;\n}\n.post .inline {\n margin: 2px;\n}\n.inline .replyContainer {\n display: inline-block;\n}\n/* Inlined Clearfix */\n.inline .postMessage::after {\n clear: both;\n display: block;\n content: \"\";\n}\n/* Quotes */\n.inlined {\n opacity: .5;\n}\n.underline-links .quotelink {\n text-decoration: underline;\n}\n.filtered,\n.quotelink.filtered {\n text-decoration: line-through !important;\n}\n.inline + .hashlink {\n display: none;\n}\n/* Quote Threading */\n.threadContainer {\n padding-left: 2em;\n border-left: 1px solid;\n}\n.indent-replies .threadContainer {\n margin-left: 2em;\n padding-left: 0;\n}\n.threadOP {\n clear: both;\n}\n/* Backlinks */\n.underline-links .forwardlink,\n.underline-links .backlink {\n text-decoration: underline;\n}\n.backlink.dead {\n text-decoration: none;\n}\n.filtered-backlinks .filtered.backlink {\n display: none;\n}\n.backlinks-position-lower-left .container,\n.backlinks-position-lower-right .container {\n max-width: 100%;\n padding: 0 5px;\n}\n.backlinks-position-lower-left .reply.quoted,\n.backlinks-position-lower-right .reply.quoted {\n position: relative;\n padding-bottom: 1.7em;\n}\n.backlinks-position-lower-left .inline .reply.quoted,\n.backlinks-position-lower-right .inline .reply.quoted,\n.backlinks-position-lower-right #qp .reply.quoted,\n.backlinks-position-lower-left #qp .reply.quoted {\n position: static;\n padding-bottom: 0;\n}\n.backlinks-position-lower-right .reply .container,\n.backlinks-position-lower-left .reply .container {\n position: absolute;\n bottom: 0;\n padding: 0 5px;\n}\n.backlinks-position-lower-left .reply .container {\n left: 0;\n}\n.backlinks-position-lower-right .reply .container {\n right: 0;\n}\n.backlinks-position-lower-right .container::before,\n.backlinks-position-lower-left .reply .container::before {\n content: 'REPLIES: ';\n}\n.container:empty {\n display: none;\n}\n.backlinks-position-lower-left #qp .container,\n.backlinks-position-lower-left .inline .container,\n.backlinks-position-lower-right .inline .container,\n.backlinks-position-lower-right #qp .container {\n position: static;\n max-width: 100%;\n}\n.backlinks-position-lower-left #qp .container::before,\n.backlinks-position-lower-left .inline .container::before,\n.backlinks-position-lower-right #qp .container::before,\n.backlinks-position-lower-right .inline .container::before {\n content: '';\n}\n.backlinks-position-lower-right .inline .container {\n float: none;\n}\n/* Fixes text spoilers */\n.remove-spoilers.indicate-spoilers .spoiler::before,\n.remove-spoilers.indicate-spoilers s::before {\n content: '[spoiler]';\n}\n.remove-spoilers.indicate-spoilers .spoiler::after,\n.remove-spoilers.indicate-spoilers s::after {\n content: '[/spoiler]';\n}\n:root:not(.remove-spoilers) .spoiler:not(:hover) *,\n:root:not(.remove-spoilers) s:not(:hover) * {\n color: rgb(0,0,0) !important;\n text-shadow: none !important;\n}\n:root:not(.remove-spoilers) spoiler:not(:hover),\n:root:not(.remove-spoilers) s:not(:hover) {\n background-color: rgb(0,0,0);\n color: rgb(0,0,0) !important;\n text-shadow: none !important;\n}\n/* Code */\n.prettyprint {\n box-sizing: border-box;\n font-family: monospace;\n display: inline-block;\n margin-right: auto;\n white-space: pre-wrap;\n border-radius: 2px;\n overflow-x: auto;\n padding: 3px;\n max-width: 100%;\n}\n/* Menu */\n.entry {\n border-bottom: 1px solid rgba(0,0,0,.25);\n cursor: pointer;\n display: block;\n outline: none;\n padding: 3px 1em 3px 7px;\n position: relative;\n text-decoration: none;\n white-space: nowrap;\n}\n.entry:last-child {\n border-bottom: 0;\n}\n.has-submenu::after {\n content: \"\";\n border-left: .5em solid;\n border-top: .3em solid transparent;\n border-bottom: .3em solid transparent;\n display: inline-block;\n margin: .3em;\n position: absolute;\n right: 0;\n}\n.submenu {\n display: none;\n position: absolute;\n top: -1px;\n}\n.focused .submenu {\n display: block;\n}\n/* Stubs */\n.fit-width-replies .stub {\n display: block;\n text-align: right;\n}\n/* Element Replacing: */\n/* Checkboxes */\n.rice {\n cursor: pointer;\n width: 9px;\n height: 9px;\n margin: 2px 3px 3px;\n display: inline-block;\n vertical-align: bottom;\n}\ninput[type=checkbox]:checked + .rice {\n position: relative;\n}\ninput[type=checkbox]:checked + .rice::after {\n content: \"\";\n display: block;\n width: 4px;\n height: 10px;\n border-width: 0 3px 3px 0;\n border-style: solid;\n -webkit-transform: rotate(45deg);\n position: absolute;\n left: 2px;\n bottom: -1px;\n}\n.rounded-edges .rice {\n border-radius: 2px;}\n}\n.circle-checkboxes .rice {\n border-radius: 6px;}\n}\ninput:checked + .rice {\n background-attachment: scroll;\n background-repeat: no-repeat;\n background-position: bottom right;\n}\n/* Selects */\n.selectrice {\n position: relative;\n cursor: default;\n overflow: hidden;\n text-align: left;\n}\n#settings .selectrice {\n display: inline-block;\n}\n.selectrice::after {\n content: \"\";\n border-right: .25em solid transparent;\n border-left: .25em solid transparent;\n position: absolute;\n right: .4em;\n top: .5em;\n}\n.selectrice::before {\n content: \"\";\n height: 1.6em;\n position: absolute;\n right: 1.3em;\n top: 0;\n}\n/* Select Dropdown */\n#selectrice {\n padding: 0;\n margin: 0;\n position: fixed;\n max-height: 120px;\n overflow-y: auto;\n overflow-x: hidden;\n z-index: 32;\n}\n#selectrice:empty {\n display: none;\n}\n/* Post Form Shortcut */\n.qr-shortcut.on-page {\n font-size: 250%;\n}\n/* Post Form */\n#qr {\n z-index: 20;\n position: fixed;\n background: none;\n border: none;\n padding: 1px;\n min-width: 248px;\n background: transparent;\n border: 1px solid transparent;\n}\n.sidebar-large #qr {\n min-width: 299px;\n}\n.rounded-edges #qr,\n.rounded-edges #qrtab {\n border-radius: 3px 3px 0 0;\n}\n.post-form-style-fixed #qr {\n top: auto !important;\n}\n.sidebar-location-left:not(.post-form-style-float) #qr {\n left: 0 !important;\n right: auto !important;\n}\n.sidebar-location-right:not(.post-form-style-float) #qr {\n right: 0 !important;\n left: auto !important;\n}\n:root:not(.post-form-style-float) #qr {\n bottom: 0 !important;\n}\n.fourchan-ss-navigation.fixed.bottom:not(.post-form-style-float) #qr,\n.fourchan-ss-navigation.index.pagination-sticky-bottom:not(.post-form-style-float) #qr {\n bottom: 1.5em !important;\n}\n.post-form-style-slideout #qr {\n top: auto !important;\n}\n.post-form-style-slideout.sidebar-location-left #qr {\n -webkit-transform: translateX(-93%);\n}\n.post-form-style-slideout.sidebar-location-right #qr {\n -webkit-transform: translateX(93%);\n}\n.post-form-style-slideout #qr:hover,\n.post-form-style-slideout #qr.has-focus,\n.post-form-style-slideout #qr.dump {\n -webkit-transform: translate(0);\n}\n.post-form-style-tabbed-slideout #qr {\n top: auto !important;\n}\n.post-form-style-tabbed-slideout.sidebar-location-left #qr {\n -webkit-transform: translateX(-100%);\n}\n.post-form-style-tabbed-slideout.sidebar-location-right #qr {\n -webkit-transform: translateX(100%);\n}\n.post-form-style-tabbed-slideout #qr:hover,\n.post-form-style-tabbed-slideout #qr.has-focus,\n.post-form-style-tabbed-slideout #qr.dump {\n -webkit-transform: translateX(0);\n}\n.post-form-style-tabbed-slideout #qrtab {\n position: absolute;\n top: 0;\n width: 120px;\n text-align: center;\n border-width: 1px 1px 0 1px;\n cursor: default;\n}\n.post-form-style-tabbed-slideout.sidebar-location-left #qrtab {\n -webkit-transform: rotate(90deg);\n -webkit-transform-origin: bottom right;\n left: 100%;\n}\n.post-form-style-tabbed-slideout.sidebar-location-right #qrtab {\n -webkit-transform: rotate(-90deg);\n -webkit-transform-origin: bottom right;\n right: 100%;\n}\n.post-form-style-tabbed-slideout #qr:hover #qrtab,\n.post-form-style-tabbed-slideout #qr.has-focus #qrtab,\n.post-form-style-tabbed-slideout #qr.dump #qrtab {\n opacity: 0 !important;\n}\n.post-form-style-slideout #qrtab input,\n.post-form-style-slideout #qrtab .rice,\n.post-form-style-tabbed-slideout #qrtab input,\n.post-form-style-tabbed-slideout #qrtab .close,\n.post-form-style-tabbed-slideout #qrtab .rice,\n.post-form-style-tabbed-slideout #qrtab span {\n display: none;\n}\n.post-form-style-tabbed-slideout #qrtab .selectrice {\n text-align: center;\n}\n.transparent-post-form #qr {\n opacity: 0.2;\n transition: opacity .3s ease-in-out 1s;\n}\n.transparent-post-form #qr:hover,\n.transparent-post-form #qr.has-focus,\n.transparent-post-form #qr.dump {\n opacity: 1;\n transition: opacity .3s linear;\n}\n:root:not(.show-post-form-header):not(.post-form-style-float):not(.post-form-style-tabbed-slideout) #qrtab,\n.post-form-style-float .autohide:not(:hover):not(.has-focus) form,\n.show-post-form-header.post-form-style-fixed .autohide:not(:hover):not(.has-focus) form {\n display: none !important;\n}\n:root:not(.post-form-style-tabbed-slideout) #qrtab {\n margin-bottom: 1px;\n}\n#qr.autohide:not(:hover):not(.has-focus) #qrtab {\n margin-bottom: 0;\n}\n.post-form-slideout-transitions.post-form-style-slideout #qr,\n.post-form-slideout-transitions.post-form-style-tabbed-slideout #qr {\n transition: -webkit-transform .3s ease-in-out 1s;\n}\n.post-form-slideout-transitions.post-form-style-tabbed-slideout #qr.dump,\n.post-form-slideout-transitions.post-form-style-tabbed-slideout #qr:hover,\n.post-form-slideout-transitions.post-form-style-tabbed-slideout #qr.has-focus,\n.post-form-slideout-transitions.post-form-style-slideout #qr.dump,\n.post-form-slideout-transitions.post-form-style-slideout #qr:hover,\n.post-form-slideout-transitions.post-form-style-slideout #qr.has-focus {\n transition: -webkit-transform .3s linear;\n}\n.post-form-slideout-transitions #qrtab {\n transition: opacity .3s ease-in-out 1s;\n}\n.post-form-slideout-transitions #qr:hover #qrtab {\n transition: opacity .3s linear;\n}\n#qr .close {\n float: right;\n padding: 0 3px;\n}\n#qr .warning {\n min-height: 1.6em;\n vertical-align: middle;\n padding: 0 1px;\n border-width: 1px;\n border-style: solid;\n}\n.persona {\n width: 248px;\n max-width: 100%;\n min-width: 100%;\n}\n.persona input.field {\n width: 100%;\n}\n#qr textarea.field {\n height: 11.6em;\n min-height: 6em;\n}\n#qr.has-captcha textarea.field {\n height: 6em;\n}\n.compact-post-form-inputs .persona input.field {\n width: 33%;\n}\n.compact-post-form-inputs .persona input.field:first-child {\n margin: 0;\n}\n.compact-post-form-inputs .persona input.field {\n margin: 0 0 0 0.5%;\n}\n.compact-post-form-inputs #qr textarea.field {\n height: 14.9em;\n min-height: 9em;\n}\n.compact-post-form-inputs #qr.has-captcha textarea.field {\n height: 9em;\n}\n.tripcode-hider .tripped:not(:hover):not(:focus) {\n color: transparent !important;\n}\n.textarea-resize-horizontal #qr textarea {\n resize: horizontal;\n}\n.textarea-resize-vertical #qr textarea {\n resize: vertical;\n}\n.textarea-resize-both #qr textarea {\n resize: both;\n}\n.textarea-resize-none #qr textarea {\n resize: none;\n}\n.captcha-img {\n margin: 1px 0 0;\n text-align: center;\n line-height: 0;\n}\n.captcha-img img {\n width: 246px;\n}\n.captcha-img,\n.captcha-img img {\n height: 4em;\n}\n.captcha-input {\n width: 100%;\n margin: 1px 0 0;\n}\n.field,\n.selectrice,\nbutton,\ninput:not([type=radio]) {\n box-sizing: border-box;\n height: 1.6em;\n margin: 1px 0 0;\n vertical-align: bottom;\n padding: 0 1px;\n outline: none;\n}\n.selectrice {\n padding-right: 1.6em;\n}\n#qr textarea {\n min-width: 100%;\n}\n#qr [type='submit'] {\n width: 25%;\n}\n[type='file'] {\n position: absolute;\n opacity: 0;\n z-index: -1;\n}\n/* Fake File Input */\n#qr-filename,\n#qr-filerm,\n.has-file #qr-no-file {\n display: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\n display: block;\n}\n.has-file #qr-filerm {\n display: inline-block;\n}\n#qr-extras-container {\n position: absolute;\n right: 0;\n top: 0;\n z-index: 2;\n}\n#qr-extras-container > label,\n#qr-extras-container > a {\n cursor: pointer;\n margin-right: 3px;\n}\n#qr-filename-container {\n box-sizing: border-box;\n display: inline-block;\n position: relative;\n width: 100px;\n min-width: 74.6%;\n max-width: 74.6%;\n margin-right: 0.4%;\n overflow: hidden;\n padding: 2px 1px 0;\n}\n/* Thread Select */\n#qr-thread-select,\n#qr-thread-select .selectrice div {\n display: inline;\n}\n#qr-thread-select .selectrice {\n cursor: pointer;\n display: inline-block;\n width: 120px;\n border: none;\n background: none transparent;\n padding: 0;\n margin: 0;\n height: auto;\n}\n#qr-thread-select .selectrice::before,\n#qr-thread-select .selectrice::after {\n display: none;\n}\n/* Dumping UI */\n.dump #dump-list-container {\n display: block;\n}\n#dump-list-container {\n display: none;\n position: relative;\n overflow-y: hidden;\n margin-top: 1px;\n}\n#dump-list {\n overflow-x: auto;\n overflow-y: hidden;\n white-space: nowrap;\n width: 248px;\n max-width: 100%;\n min-width: 100%;\n}\n#dump-list:hover {\n overflow-x: auto;\n}\n.qr-preview {\n box-sizing: border-box;\n counter-increment: thumbnails;\n cursor: move;\n display: inline-block;\n height: 90px;\n width: 90px;\n padding: 2px;\n opacity: .5;\n overflow: hidden;\n position: relative;\n text-shadow: 0 1px 1px #000;\n transition: opacity .25s ease-in-out;\n vertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\n opacity: .9;\n}\n.qr-preview::before {\n content: counter(thumbnails);\n color: #fff;\n position: absolute;\n top: 3px;\n right: 3px;\n text-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\n opacity: 1;\n}\n.qr-preview.drag {\n box-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\n border-color: #fff;\n}\n.qr-preview > span {\n color: #fff;\n}\n.remove {\n background: none;\n color: #e00;\n font-weight: 700;\n padding: 3px;\n}\na:only-of-type > .remove {\n display: none;\n}\n.remove:hover::after {\n content: \" Remove\";\n}\n.qr-preview > label {\n background: rgba(0,0,0,.5);\n color: #fff;\n right: 0; bottom: 0; left: 0;\n position: absolute;\n text-align: center;\n}\n.qr-preview > label > input {\n margin: 0;\n}\n#add-post {\n cursor: pointer;\n font-size: 2em;\n position: absolute;\n top: 50%;\n right: 10px;\n -webkit-transform: translateY(-50%);\n}\n/* Ads */\n.fade-ads .topad img,\n.fade-ads .middlead img,\n.fade-ads .bottomad img {\n opacity: 0.3;\n transition: opacity .3s linear;\n}\n.fade-ads .topad img:hover,\n.fade-ads .middlead img:hover,\n.fade-ads .bottomad img:hover {\n opacity: 1;\n}\n.hide-ads .bottomad + hr,\n.hide-ads .topad,\n.hide-ads .middlead,\n.hide-ads .bottomad,\n.hide-ads .ad-plea {\n display: none;\n}\n.shrink-ads .topad a img,\n.shrink-ads .middlead a img,\n.shrink-ads .bottomad a img {\n width: 500px;\n height: auto;\n}\n/* Mascot Positions */\n#mascot {\n display: none;\n position: fixed;\n z-index: -1;\n bottom: 0;\n left: 0;\n right: 0;\n line-height: 0;\n cursor: pointer;\n}\n.mascot-position-above-post-form.post-form-style-fixed:not(.post-form-decorations) #mascot img {\n margin-bottom: -2px;\n}\n.mascots #mascot {\n display: block;\n}\n.sidebar-location-right.mascot-location-sidebar #mascot,\n.sidebar-location-left.mascot-location-opposite #mascot {\n left: auto;\n}\n.sidebar-location-left.mascot-location-sidebar #mascot,\n.sidebar-location-right.mascot-location-opposite #mascot {\n right: auto;\n}\n.sidebar-location-left.mascot-location-sidebar #mascot img,\n.sidebar-location-right.mascot-location-opposite #mascot img {\n -webkit-transform: scaleX(-1);\n}\n.fourchan-ss-navigation.bottom.fixed #mascot,\n.fourchan-ss-navigation.index.pagination-sticky-bottom #mascot {\n bottom: 1.5em\n}\n.mascots-overlap-posts #mascot {\n z-index: 3;\n}\n.mascot-position-middle #mascot {\n bottom: 50% !important;\n -webkit-transform: translateY(50%);\n}\n.mascot-position-top #mascot {\n bottom: auto !important;\n top: 17px;\n}\n.grayscale-mascots #mascot {\n -webkit-filter: url('#grayscale');\n}\n.silhouettize-mascots #mascot img {\n -webkit-filter: url('#mascot-filter');\n}\n/* Options */\n#overlay {\n position: fixed;\n z-index: 30;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n background: rgba(0,0,0,.5);\n}\n#appchanx-settings {\n width: auto;\n left: 15%;\n right: 15%;\n top: 15%;\n bottom: 15%;\n position: fixed;\n z-index: 31;\n padding: .3em;\n}\n.rounded-edges #appchanx-settings,\n.rounded-edges #appchanx-settings fieldset,\n.rounded-edges .mascots-container,\n.rounded-edges .section-container,\n.rounded-edges .sections-list > a {\n border-radius: 3px;\n}\n.description {\n display: none;\n}\n#appchanx-settings h3,\n.section-keybinds,\n.section-mascots,\n.section-script,\n.style {\n text-align: center;\n}\n.section-keybinds table,\n.section-script fieldset,\n.section-style fieldset {\n text-align: left;\n}\n.section-keybinds table {\n margin: auto;\n}\n#appchanx-settings fieldset {\n padding: 5px 0;\n vertical-align: top;\n border: 0;\n margin: 0 3px 6px;\n display: inline-block;\n}\n.single-column-mode #appchanx-settings fieldset {\n display: block;\n margin: 0 auto 6px;\n}\n#appchanx-settings .section-advanced fieldset {\n display: block;\n margin: 0 auto 6px;\n}\n.section-advanced .archive-cell {\n min-width: 200px;\n}\n.section-advanced .selectrice {\n display: inline-block;\n clear: both;\n}\n.section-container {\n overflow: auto;\n position: absolute;\n top: 1.7em;\n right: 5px;\n bottom: 5px;\n left: 5px;\n padding: 5px;\n}\n.sections-list {\n padding: 0 3px;\n float: left;\n}\n.sections-list > a {\n cursor: pointer;\n position: relative;\n padding: 0 4px;\n z-index: 1;\n height: 1.4em;\n display: inline-block;\n border-width: 1px 1px 0 1px;\n border-color: transparent;\n border-style: solid;\n}\n.sections-list > a.tab-selected {\n border-style: solid;\n}\n.credits {\n float: right;\n}\n#appchanx-settings h3 {\n margin: 0;\n}\n.section-script fieldset > div,\n.section-style fieldset > div,\n.section-advanced fieldset > div {\n overflow: visible;\n padding: 0 5px 0 7px;\n}\n#appchanx-settings tr:nth-of-type(2n+1),\n.section-script fieldset > div:nth-of-type(2n+1),\n.section-advanced fieldset > div:nth-of-type(2n+1),\n.section-style fieldset > div:nth-of-type(2n+1),\n.section-keybinds tr:nth-of-type(2n+1),\n#selectrice li:nth-of-type(2n+1) {\n background-color: rgba(0, 0, 0, 0.05);\n}\narticle li {\n margin: 10px 0 10px 2em;\n}\n#appchanx-settings .option {\n width: 50%;\n display: inline-block;\n vertical-align: bottom;\n}\n.option input {\n width: 100%;\n}\n.optionlabel {\n padding-left: 18px;\n}\n.rice + .optionlabel {\n padding-left: 0;\n}\n.section-script fieldset,\n.styleoption {\n text-align: left;\n}\n.section-style fieldset {\n width: 370px;\n}\n.section-script fieldset {\n width: 200px;\n}\n#mascotcontent,\n#themecontent,\n.suboptions {\n overflow: auto;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 1.7em;\n left: 0;\n}\n#mascotcontent,\n#themecontent {\n padding: 5px;\n}\n#themecontent {\n top: 1.8em;\n}\n.mAlign {\n height: 250px;\n vertical-align: bottom;\n display: table-cell;\n line-height: 0;\n}\n#save,\n.stylesettings {\n position: absolute;\n right: 10px;\n bottom: 0;\n}\n.section-style .suboptions {\n bottom: 0;\n}\n.section-container textarea {\n font-family: monospace;\n min-height: 150px;\n resize: vertical;\n width: 100%;\n}\n/* Hover Functionality */\n#mouseover {\n z-index: 33;\n position: fixed;\n max-width: 70%;\n}\n#mouseover:empty {\n display: none;\n}\n/* Mascot Tab */\n#mascot_hide {\n padding: 3px;\n position: absolute;\n top: 2px;\n right: 18px;\n}\n#mascot_hide .rice {\n float: left;\n}\n#mascot_hide > div {\n height: 0;\n text-align: right;\n overflow: hidden;\n}\n#mascot_hide:hover > div {\n height: auto;\n}\n#mascot_hide label {\n width: 100%;\n display: block;\n clear: both;\n text-decoration: none;\n}\n.mascots-container {\n padding: 0;\n text-align: center;\n}\n.mascot,\n.mascotcontainer {\n overflow: hidden;\n}\n.mascot {\n position: relative;\n border: none;\n margin: 5px;\n padding: 0;\n width: 200px;\n display: inline-block;\n background-color: transparent;\n}\n.mascotcontainer {\n height: 250px;\n border: 0;\n margin: 0;\n max-height: 250px;\n cursor: pointer;\n bottom: 0;\n border-width: 0 1px 1px;\n border-style: solid;\n border-color: transparent;\n overflow: hidden;\n}\n.mascot img {\n max-width: 200px;\n}\n.export-button,\n.mascotname,\n#mascot-options {\n box-sizing: border-box;\n padding: 0;\n width: 100%;\n}\n#mascot-options {\n opacity: 0;\n transition: opacity .3s linear;\n}\n.mascot:hover #mascot-options {\n opacity: 1;\n}\n#mascot-options {\n position: absolute;\n bottom: 0;\n right: 0;\n left: 0;\n}\n.export-button {\n position: absolute;\n bottom: 1.7em;\n right: 0;\n left: 0;\n text-align: center;\n}\n#mascot-options a {\n display: inline-block;\n width: 33%;\n}\n#upload {\n position: absolute;\n width: 100px;\n left: 50%;\n margin-left: -50px;\n text-align: center;\n bottom: 0;\n}\n#mascots_batch {\n position: absolute;\n left: 10px;\n bottom: 0;\n}\n/* Themes Tab */\n#themes h1 {\n position: absolute;\n right: 300px;\n bottom: 10px;\n margin: 0;\n transition: all .2s ease-in-out;\n opacity: 0;\n}\n#themes .selectedtheme h1 {\n right: 11px;\n opacity: 1;\n}\n#addthemes {\n position: absolute;\n left: 10px;\n bottom: 0;\n}\n.theme {\n margin: 1em;\n}\n/* Theme Editor */\n#themeConf {\n position: fixed;\n top: 0;\n bottom: 0;\n width: 296px;\n z-index: 10;\n}\n.sidebar-location-right #themeConf {\n right: 2px;\n left: auto;\n}\n.sidebar-location-right #themeConf {\n left: 2px;\n right: auto;\n}\n#themebar input {\n width: 30%;\n}\n.option .color {\n width: 10%;\n border-left: none !important;\n color: transparent !important;\n}\n.option .colorfield {\n width: 90%;\n}\n.themevar textarea {\n min-width: 100%;\n max-width: 100%;\n height: 20em;\n resize: vertical;\n}\n/* Mascot Editor */\n#mascotConf {\n position: fixed;\n height: 17em;\n bottom: 0;\n left: 50%;\n width: 500px;\n margin-left: -250px;\n overflow: auto;\n z-index: 10;\n}\n#mascotConf .option,\n#mascotConf .optionlabel {\n box-sizing: border-box;\n width: 50%;\n display: inline-block;\n vertical-align: middle;\n}\n#mascotConf .option input {\n width: 100%;\n}\n#close {\n position: absolute;\n left: 10px;\n bottom: 0;\n}\n/* Catalog */\n#content .navLinks,\n#info .navLinks,\n.btn-wrap {\n display: block;\n}\n.navLinks > .btn-wrap:not(:first-of-type)::before {\n content: ' - ';\n}\n.button {\n cursor: pointer;\n}\n#content .btn-wrap,\n#info .btn-wrap {\n display: inline-block;\n}\n#post-preview,\n#quote-preview {\n position: absolute;\n z-index: 22;\n}\n.rounded-edges #post-preview {\n border-radius: 3px;\n}\n#settings,\n#threads,\n#info .navLinks,\n#content .navLinks {\n text-align: center;\n}\n#threads .thread {\n vertical-align: top;\n display: inline-block;\n word-wrap: break-word;\n overflow: hidden;\n margin: 1px;\n padding: 5px 0 3px;\n text-align: center;\n}\n.extended-small .thread,\n.small .thread {\n width: 165px;\n max-height: 320px;\n}\n.small .teaser,\n.large .teaser {\n display: none;\n}\n.extended-large .thread,\n.large .thread {\n width: 270px;\n max-height: 410px;\n}\n.extended-small .thumb,\n.small .thumb {\n max-width: 150px;\n max-height: 150px;\n}\n.panel {\n position: fixed;\n top: 50% !important;\n left: 50%;\n -webkit-transform: translate(-50%, -50%);\n padding: 5px;\n}\n.icon::after {\n display: inline-block;\n float: right;\n width: 1em;\n cursor: pointer;\n}\n.helpIcon::after {\n content: '?';\n}\n.closeIcon::after {\n content: '✖';\n}\n/* Front Page */\n#logo {\n text-align: center;\n}\n#doc {\n box-sizing: border-box;\n margin: 10px auto;\n width: 1006px;\n padding: 2px;\n position: relative;\n}\n.rounded-edges #doc,\n.rounded-edges #doc div {\n border-radius: 3px;\n}\n#boards .boxcontent {\n vertical-align: top;\n text-align: center;\n}\n#filter-container,\n#options-container {\n top: 4px;\n right: 8px;\n position: absolute;\n}\n#filtermenu,\n#optionsmenu {\n top: 100% !important;\n left: auto !important;\n right: 0 !important;\n}\n#boards .column {\n box-sizing: border-box;\n display: inline-block;\n width: 180px;\n text-align: left;\n vertical-align: top;\n}\n.bd ul,\n.boxcontent ul {\n vertical-align: top;\n padding: 0;\n margin: 0;\n}\n.right-box .boxcontent ul {\n padding: 0 10px;\n}\n.yuimenuitem,\n.boxcontent li {\n list-style-type: none;\n}\n.boxbar {\n position: relative;\n}\n#doc h3,\n.boxbar h2 {\n margin: 0;\n}\n#doc h3 {\n text-decoration: none !important;\n}\n.underline-links #doc h3 {\n text-decoration: underline !important;\n}\n#ft,\n.box-outer {\n margin: 2px 0 0;\n overflow: hidden;\n}\n#ft,\n.boxbar,\n.boxcontent {\n padding: 0 8px;\n}\n.yui-module {\n position: absolute;\n}\n.yuimenuitem::before {\n content: \" [ ] \";\n font-family: monospace;\n}\n.yuimenuitem-checked::before {\n content: \" [x] \"\n}\n.yui-g {\n overflow: hidden;\n}\n.yui-u {\n display: inline-block;\n vertical-align: top;\n width: 499px;\n float: right;\n}\n.yui-u.first {\n float: left;\n}\n#recent-images .boxcontent {\n text-align: center;\n}\n#ft {\n text-align: center;\n}\n#ft ul {\n padding: 0;\n}\n#ft li {\n list-style-type: none;\n display: inline-block;\n width: 100px;\n}\n#preview-tooltip-nws,\n#preview-tooltip-ws,\n#ft .fill,\n.clear-bug {\n display: none;\n}\n/* ExLinks */\n#exlinks-options-content {\n padding: 5px;\n}",
dynamic: function() {
var editSpace, sidebarLocation, _conf;
-
_conf = Conf;
sidebarLocation = _conf["Sidebar Location"] === "left" ? ["left", "right"] : ["right", "left"];
if (_conf['editMode'] === "theme") {
@@ -11596,7 +11264,6 @@
},
theme: function(theme) {
var background, backgroundC, bgColor, replyRGB, replybg;
-
bgColor = new Style.color(Style.colorToHex(backgroundC = theme["Background Color"]) || 'aaaaaa');
replybg = new Style.color(Style.colorToHex(theme["Reply Background"]));
replyRGB = "rgb(" + (replybg.shiftRGB(parseInt(Conf['Silhouette Contrast'], 10), true)) + ")";
@@ -11606,7 +11273,6 @@
},
iconPositions: function() {
var align, aligner, css, i, iconOffset, navlinks, notCatalog, notEither, position, psa, sidebar, _conf;
-
css = "#navtopright .exlinksOptionsLink::after,\n#main-menu,\nbody > div.navLinks > a:first-of-type::after,\n.slideout-watcher #watcher::after,\n.announcements-slideout #globalMessage::after,\n#boardNavDesktopFoot::after,\n#img-controls,\n#catalog::after,\n#fappeTyme {\n z-index: 18;\n position: fixed;\n display: block;\n width: 15px;\n height: 15px;\n content: \"\";\n opacity: 0.5;\n}\nbody::after {\n content: \"\";\n display: block;\n position: fixed;\n z-index: 5;\n width: 18px;\n height: 18px;\n}\n.invisible-icons #navtopright .exlinksOptionsLink::after,\n.invisible-icons #main-menu,\n.invisible-icons body > div.navLinks > a:first-of-type::after,\n.invisible-icons.slideout-watcher #watcher::after,\n.invisible-icons.announcements-slideout #globalMessage::after,\n.invisible-icons #boardNavDesktopFoot::after,\n.invisible-icons #img-controls,\n.invisible-icons #catalog::after,\n.invisible-icons #fappeTyme {\n opacity: 0;\n}\n#navtopright .exlinksOptionsLink,\nbody > div.navLinks > a:first-of-type,\n" + (Conf['Slideout Watcher'] ? '#watcher,' : '') + "\n" + (Conf['Announcements'] === 'slideout' ? '#globalMessage,' : '') + "\n#boardNavDesktopFoot,\n#catalog {\n z-index: 16;\n}\n#navtopright .exlinksOptionsLink:hover,\nbody > div.navLinks > a:first-of-type:hover,\n.slideout-watcher #watcher:hover,\n.announcements-slideout #globalMessage:hover,\n#boardNavDesktopFoot:hover,\n#img-controls,\n#catalog:hover {\n z-index: 17;\n}\n#main-menu {\n visibility: visible;\n background-position: 0 0;\n cursor: pointer;\n}\nbody > div.navLinks > a:first-of-type::after {\n cursor: pointer;\n background-position: 0 -15px;\n}\n.slideout-watcher #watcher::after {\n background-position: 0 -30px;\n}\n.announcements-slideout #globalMessage::after {\n background-position: 0 -45px;\n}\n#boardNavDesktopFoot::after {\n background-position: 0 -60px;\n}\n#img-controls {\n background-position: 0 -90px;\n}\n#navtopright .exlinksOptionsLink::after {\n background-position: 0 -105px;\n}\n#catalog::after {\n visibility: visible;\n background-position: 0 -120px;\n}\n#fappeTyme {\n background-position: 0 -135px;\n}\n#boardNavDesktopFoot:hover::after,\n.announcements-slideout #globalMessage:hover::after,\n#img-controls:hover,\n#navlinks a:hover,\n#appchanOptions:hover,\n#main-menu:hover,\n#navtopright .exlinksOptionsLink:hover::after,\n#qr #qrtab,\n.slideout-watcher #watcher:hover::after,\n.thumbnail#selected,\ndiv.navLinks > a:first-of-type:hover::after,\n#catalog:hover::after,\n#fappeTyme:hover {\n opacity: 1 !important;\n}";
_conf = Conf;
i = 0;
@@ -11621,7 +11287,6 @@
notEither = notCatalog && g.BOARD !== 'f';
aligner = function(first, checks) {
var enabled, position, _i, _len;
-
position = [first];
for (_i = 0, _len = checks.length; _i < _len; _i++) {
enabled = checks[_i];
@@ -11648,7 +11313,6 @@
},
padding: function() {
var css;
-
Style.padding.nav = Header.bar;
Style.padding.pages = $('.pagelist', d.body);
css = "body {\npadding-bottom: 1px;\n}\n.fourchan-ss-navigation.fixed.top:not(.autohide) body::before {\ntop: " + Style.padding.nav.offsetHeight + "px;\n}\n.fourchan-ss-navigation.fixed.bottom:not(.autohide) body::before {\nbottom: " + Style.padding.nav.offsetHeight + "px;\n}\n.top:not(.autohide) body {\npadding-top: " + (Style.padding.nav.offsetHeight + 1) + "px;\n}\n.bottom:not(.autohide) body {\npadding-bottom: " + (Style.padding.nav.offsetHeight + 1) + "px;\"\n}";
@@ -11667,13 +11331,11 @@
this.rgb = this.private_rgb.join(",");
this.isLight = function() {
var rgb;
-
rgb = this.private_rgb;
return (rgb[0] + rgb[1] + rgb[2]) >= 400;
};
this.shiftRGB = function(shift, smart) {
var minmax, rgb;
-
minmax = function(base) {
return Math.min(Math.max(base, 0), 255);
};
@@ -11685,7 +11347,6 @@
},
colorToHex: function(color) {
var digits, hex;
-
if (color.substr(0, 1) === '#') {
return color.slice(1, color.length);
}
@@ -11709,7 +11370,6 @@
ThemeTools = {
init: function(key) {
var colorInput, div, fileInput, header, input, item, layout, theme, themeContent, _i, _j, _len, _len1, _ref;
-
Conf['editMode'] = "theme";
theme = Themes[key];
if (theme) {
@@ -11807,7 +11467,6 @@
},
apply: function() {
var depth, i, len, toggle1, toggle2;
-
depth = 0;
toggle1 = false;
toggle2 = false;
@@ -11842,12 +11501,10 @@
},
uploadImage: function(evt, el) {
var file, reader;
-
file = evt.target.files[0];
reader = new FileReader();
reader.onload = function(evt) {
var val;
-
val = "url(\"" + evt.target.result + "\")";
el.previousSibling.value = val;
editTheme["Background Image"] = val;
@@ -11857,12 +11514,10 @@
},
importtheme: function(evt) {
var file, reader;
-
file = evt.target.files[0];
reader = new FileReader();
reader.onload = function(e) {
var bgColor, bgRPA, blinkColor, brderColor, color, err, imported, inputColor, inputbColor, jlinkColor, linkColor, linkHColor, mainColor, name, nameColor, quoteColor, sageColor, textColor, timeColor, titleColor, tripColor;
-
try {
imported = JSON.parse(e.target.result);
if (!imported) {
@@ -11963,7 +11618,6 @@
}
return $.get("userThemes", {}, function(_arg) {
var userThemes;
-
userThemes = _arg.userThemes;
userThemes[name] = Themes[name];
$.set('userThemes', userThemes);
@@ -11978,7 +11632,6 @@
},
save: function(theme) {
var name;
-
name = theme["Theme"];
if (Themes[name] && !Themes[name]["Deleted"]) {
if (confirm("A theme with this name already exists. Would you like to over-write?")) {
@@ -11991,7 +11644,6 @@
delete Themes[name]["Theme"];
return $.get("userThemes", {}, function(_arg) {
var userThemes;
-
userThemes = _arg.userThemes;
userThemes[name] = Themes[name];
$.set('userThemes', userThemes);
@@ -12017,7 +11669,6 @@
},
setup: function() {
var btn, entry, psa;
-
$.off(d, '4chanXInitFinished', PSAHiding.setup);
if (!(psa = $.id('globalMessage'))) {
return;
@@ -12046,7 +11697,6 @@
$.on(btn, 'click', PSAHiding.toggle);
$.get('hiddenPSA', 0, function(_arg) {
var hiddenPSA;
-
hiddenPSA = _arg.hiddenPSA;
PSAHiding.sync(hiddenPSA);
$.prepend(psa, btn);
@@ -12056,7 +11706,6 @@
},
toggle: function(e) {
var UTC;
-
if ($.hasClass(this, 'hide-announcement')) {
UTC = +$.id('globalMessage').dataset.utc;
$.set('hiddenPSA', UTC);
@@ -12068,7 +11717,6 @@
},
sync: function(UTC) {
var hr, psa;
-
psa = $.id('globalMessage');
psa.hidden = PSAHiding.btn.hidden = UTC && UTC >= +psa.dataset.utc ? true : false;
if ((hr = psa.nextElementSibling) && hr.nodeName === 'HR') {
@@ -12081,7 +11729,6 @@
CatalogLinks = {
init: function() {
var el, input;
-
$.ready(this.ready);
if (!Conf['Catalog Links']) {
return;
@@ -12106,14 +11753,12 @@
},
toggle: function() {
var useCatalog;
-
$.event('CloseMenu');
$.set('Header catalog links', useCatalog = this.checked);
return CatalogLinks.set(useCatalog);
},
set: function(useCatalog) {
var a, board, path, _i, _len, _ref;
-
path = useCatalog ? 'catalog' : '';
_ref = $$("#board-list a[href*=\"boards.4chan.org\"]:not(.catalog),\n#boardNavDesktopFoot a[href*=\"boards.4chan.org\"]");
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -12135,7 +11780,6 @@
},
ready: function() {
var catalogLink;
-
if (catalogLink = $('.pages.cataloglink a', d.body) || $('[href=".././catalog"]', d.body)) {
if (g.VIEW !== 'thread') {
$.add(d.body, catalogLink);
@@ -12157,7 +11801,6 @@
},
node: function(post) {
var str, uid;
-
if (!(uid = $('.hand', this.nodes.uniqueID))) {
return;
}
@@ -12169,7 +11812,6 @@
ids: {},
compute: function(str) {
var hash, rgb;
-
hash = this.hash(str);
rgb = [(hash >> 24) & 0xFF, (hash >> 16) & 0xFF, (hash >> 8) & 0xFF];
rgb[3] = ((rgb[0] * 0.299) + (rgb[1] * 0.587) + (rgb[2] * 0.114)) > 125;
@@ -12178,13 +11820,11 @@
},
apply: function() {
var rgb;
-
rgb = IDColor.ids[this] || IDColor.compute(this);
return ("background-color: rgb(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + "); color: ") + (rgb[3] ? "black; border-radius: 3px; padding: 0px 2px;" : "white; border-radius: 3px; padding: 0px 2px;");
},
hash: function(str) {
var i, j, msg;
-
msg = 0;
i = 0;
j = str.length;
@@ -12238,7 +11878,6 @@
},
node: function() {
var a;
-
if (a = $('.abbr > a:not([onclick])', this.nodes.comment)) {
return $.on(a, 'click', ExpandComment.cb);
}
@@ -12246,14 +11885,12 @@
callbacks: [],
cb: function(e) {
var post;
-
e.preventDefault();
post = Get.postFromNode(this);
return ExpandComment.expand(post);
},
expand: function(post) {
var a;
-
if (post.nodes.longComment && !post.nodes.longComment.parentNode) {
$.replace(post.nodes.shortComment, post.nodes.longComment);
post.nodes.comment = post.nodes.longComment;
@@ -12269,7 +11906,6 @@
},
contract: function(post) {
var a;
-
if (!post.nodes.shortComment) {
return;
}
@@ -12280,7 +11916,6 @@
},
parse: function(req, a, post) {
var callback, clone, comment, href, postObj, posts, quote, spoilerRange, status, _i, _j, _k, _len, _len1, _len2, _ref, _ref1;
-
status = req.status;
if (![200, 304].contains(status)) {
a.textContent = "Error " + req.statusText + " (" + status + ")";
@@ -12337,7 +11972,6 @@
},
node: function() {
var a, span;
-
if (!(span = $('.summary', this.OP.nodes.root.parentNode))) {
return;
}
@@ -12351,13 +11985,11 @@
},
cbToggle: function() {
var op;
-
op = Get.postFromRoot(this.previousElementSibling);
return ExpandThread.toggle(op.thread);
},
toggle: function(thread) {
var a, inlined, num, post, replies, reply, threadRoot, _i, _j, _k, _len, _len1, _len2, _ref, _ref1;
-
threadRoot = thread.OP.nodes.root.parentNode;
a = $('.summary', threadRoot);
switch (thread.isExpanded) {
@@ -12426,7 +12058,6 @@
},
parse: function(req, thread, a) {
var link, node, nodes, post, posts, replies, reply, spoilerRange, status, _i, _len;
-
if (a.textContent[0] === '+') {
return;
}
@@ -12484,7 +12115,6 @@
},
createFunc: function(format) {
var code;
-
code = format.replace(/%(.)/g, function(s, c) {
if (c in FileInfo.formatters) {
return "' + FileInfo.formatters." + c + ".call(post) + '";
@@ -12496,7 +12126,6 @@
},
convertUnit: function(size, unit) {
var i;
-
if (unit === 'B') {
return "" + (size.toFixed()) + " Bytes";
}
@@ -12527,7 +12156,6 @@
},
n: function() {
var fullname, shortname;
-
fullname = this.file.name;
shortname = Build.shortFilename(this.file.name, this.isReply);
if (fullname === shortname) {
@@ -12571,7 +12199,6 @@
Fourchan = {
init: function() {
var board;
-
if (g.VIEW === 'catalog') {
return;
}
@@ -12593,7 +12220,6 @@
},
code: function() {
var pre, _i, _len, _ref;
-
if (this.isClone) {
return;
}
@@ -12623,13 +12249,11 @@
Keybinds = {
init: function() {
var init;
-
if (g.VIEW === 'catalog' || !Conf['Keybinds']) {
return;
}
init = function() {
var node, _i, _len, _ref;
-
$.off(d, '4chanXInitFinished', init);
$.on(d, 'keydown', Keybinds.keydown);
_ref = $$('[accesskey]');
@@ -12642,7 +12266,6 @@
},
keydown: function(e) {
var form, key, notification, notifications, op, target, thread, threadRoot, _i, _len;
-
if (!(key = Keybinds.keyCode(e))) {
return;
}
@@ -12814,7 +12437,6 @@
},
keyCode: function(e) {
var kc, key;
-
key = (function() {
switch (kc = e.keyCode) {
case 8:
@@ -12870,7 +12492,6 @@
},
tags: function(tag, ta) {
var range, selEnd, selStart, value;
-
value = ta.value;
selStart = ta.selectionStart;
selEnd = ta.selectionEnd;
@@ -12881,13 +12502,11 @@
},
sage: function() {
var isSage;
-
isSage = /sage/i.test(QR.nodes.email.value);
return QR.nodes.email.value = isSage ? "" : "sage";
},
img: function(thread, all) {
var post;
-
if (all) {
return ImageExpand.cb.toggleAll();
} else {
@@ -12897,7 +12516,6 @@
},
open: function(thread, tab) {
var url;
-
if (g.VIEW !== 'index') {
return;
}
@@ -12910,7 +12528,6 @@
},
hl: function(delta, thread) {
var axe, headRect, next, postEl, rect, replies, reply, root, topMargin, _i, _len;
-
if (!delta) {
if (postEl = $('.reply.highlight', thread)) {
$.rmClass(postEl, 'highlight');
@@ -12970,7 +12587,6 @@
Nav = {
init: function() {
var append, next, prev, span;
-
switch (g.VIEW) {
case 'index':
if (!Conf['Index Navigation']) {
@@ -13019,7 +12635,6 @@
},
getThread: function(full) {
var headRect, i, rect, thread, threads, topMargin, _i, _len;
-
if (Conf['Bottom header'] || !Conf['Fixed Header']) {
topMargin = 0;
} else {
@@ -13045,7 +12660,6 @@
},
scroll: function(delta) {
var i, rect, thread, threads, top, topMargin, _ref, _ref1;
-
_ref = Nav.getThread(true), threads = _ref[0], thread = _ref[1], i = _ref[2], rect = _ref[3], topMargin = _ref[4];
top = rect.top - topMargin;
if ((delta === -1 && top > -5) || (delta === +1 && top < 5)) {
@@ -13070,7 +12684,6 @@
},
node: function() {
var dateEl;
-
if (this.isClone) {
return;
}
@@ -13080,7 +12693,6 @@
},
relative: function(diff, now, date) {
var days, months, number, rounded, unit, years;
-
unit = (number = diff / $.DAY) >= 1 ? (years = now.getYear() - date.getYear(), months = now.getMonth() - date.getMonth(), days = now.getDate() - date.getDate(), years > 1 ? (number = years - (months < 0 || months === 0 && days < 0), 'year') : years === 1 && (months > 0 || months === 0 && days >= 0) ? (number = years, 'year') : (months = (months + 12) % 12) > 1 ? (number = months - (days < 0), 'month') : months === 1 && days >= 0 ? (number = months, 'month') : 'day') : (number = diff / $.HOUR) >= 1 ? 'hour' : (number = diff / $.MINUTE) >= 1 ? 'minute' : (number = Math.max(0, diff) / $.SECOND, 'second');
rounded = Math.round(number);
if (rounded !== 1) {
@@ -13091,7 +12703,6 @@
stale: [],
flush: function() {
var now, update, _i, _len, _ref;
-
if (d.hidden) {
return;
}
@@ -13107,16 +12718,13 @@
},
setUpdate: function(post) {
var markStale, setOwnTimeout, update;
-
setOwnTimeout = function(diff) {
var delay;
-
delay = diff < $.MINUTE ? $.SECOND - (diff + $.SECOND / 2) % $.SECOND : diff < $.HOUR ? $.MINUTE - (diff + $.MINUTE / 2) % $.MINUTE : diff < $.DAY ? $.HOUR - (diff + $.HOUR / 2) % $.HOUR : $.DAY - (diff + $.DAY / 2) % $.DAY;
return setTimeout(markStale, delay);
};
update = function(now) {
var date, diff, relative, singlePost, _i, _len, _ref;
-
date = post.info.date;
diff = now - date;
relative = RelativeDates.relative(diff, now, date);
@@ -13157,7 +12765,6 @@
},
node: function(post) {
var spoiler, spoilers, _i, _len;
-
spoilers = $$('s', this.nodes.comment);
for (_i = 0, _len = spoilers.length; _i < _len; _i++) {
spoiler = spoilers[_i];
@@ -13177,7 +12784,6 @@
},
ready: function() {
var field;
-
field = $.id('recaptcha_response_field');
$.on(field, 'keydown', function(e) {
if (e.keyCode === 8 && !field.value) {
@@ -13186,7 +12792,6 @@
});
return $.on($('form'), 'submit', function(e) {
var response;
-
e.preventDefault();
response = field.value.trim();
if (!/\s/.test(response)) {
@@ -13216,7 +12821,6 @@
},
createFunc: function(format) {
var code;
-
code = format.replace(/%([A-Za-z])/g, function(s, c) {
if (c in Time.formatters) {
return "' + Time.formatters." + c + ".call(date) + '";
@@ -13301,7 +12905,6 @@
Settings = {
init: function() {
var el, settings;
-
el = $.el('a', {
className: 'settings-link',
href: 'javascript:;',
@@ -13315,7 +12918,6 @@
});
$.get('previousversion', null, function(item) {
var changelog, curr, prev, previous;
-
if (previous = item['previousversion']) {
if (previous === g.VERSION) {
return;
@@ -13361,7 +12963,6 @@
},
open: function(openSection) {
var dialog, link, links, overlay, section, sectionToOpen, _i, _len, _ref;
-
if (Conf['editMode'] === "theme") {
if (confirm("Opening the options dialog will close and discard any theme changes made with the theme editor.")) {
ThemeTools.close();
@@ -13423,7 +13024,6 @@
sections: [],
addSection: function(title, open) {
var hyphenatedTitle, _ref;
-
if (typeof title !== 'string') {
_ref = title.detail, title = _ref.title, open = _ref.open;
}
@@ -13436,7 +13036,6 @@
},
openSection: function(mode) {
var section, selected;
-
if (selected = $('.tab-selected', Settings.dialog)) {
$.rmClass(selected, 'tab-selected');
}
@@ -13450,7 +13049,6 @@
},
main: function(section) {
var arr, button, description, div, fs, hiddenNum, input, inputs, items, key, obj, _ref;
-
items = {};
inputs = {};
_ref = Config.main;
@@ -13477,7 +13075,6 @@
}
$.get(items, function(items) {
var val;
-
for (key in items) {
val = items[key];
inputs[key].checked = val;
@@ -13492,7 +13089,6 @@
boards: {}
}, function(item) {
var ID, board, thread, _ref1;
-
_ref1 = item.hiddenThreads.boards;
for (ID in _ref1) {
board = _ref1[ID];
@@ -13507,7 +13103,6 @@
boards: {}
}, function(item) {
var ID, board, post, thread, _ref1;
-
_ref1 = item.hiddenPosts.boards;
for (ID in _ref1) {
board = _ref1[ID];
@@ -13527,7 +13122,6 @@
boards: {}
}, function(item) {
var boardID;
-
for (boardID in item.hiddenThreads.boards) {
localStorage.removeItem("4chan-hide-t-" + boardID);
}
@@ -13538,7 +13132,6 @@
},
"export": function(now, data) {
var a, db, _i, _len;
-
if (typeof now !== 'number') {
now = Date.now();
data = {
@@ -13573,7 +13166,6 @@
},
onImport: function() {
var file, output, reader;
-
if (!(file = this.files[0])) {
return;
}
@@ -13585,7 +13177,6 @@
reader = new FileReader();
reader.onload = function(e) {
var data, err;
-
try {
data = JSON.parse(e.target.result);
Settings.loadSettings(data);
@@ -13602,13 +13193,11 @@
},
loadSettings: function(data) {
var version;
-
version = data.version.split('.');
return $.set(data.Conf);
},
convertSettings: function(data, map) {
var newKey, prevKey;
-
for (prevKey in map) {
newKey = map[prevKey];
if (newKey) {
@@ -13620,7 +13209,6 @@
},
filter: function(section) {
var select;
-
section.innerHTML = "";
select = $('select', section);
$.on(select, 'change', Settings.selectFilter);
@@ -13628,7 +13216,6 @@
},
selectFilter: function() {
var div, name, ta;
-
div = this.nextElementSibling;
if ((name = this.value) !== 'guide') {
$.rmAll(div);
@@ -13648,7 +13235,6 @@
},
sauce: function(section) {
var ta;
-
section.innerHTML = " Sauce is disabled.
Lines starting with a # will be ignored.
You can specify a display text by appending ;text:[text] to the URL.
These parameters will be replaced by their corresponding values:\n%TURL: Thumbnail URL.%URL: Full image URL.%MD5: MD5 hash.%board: Current board.
";
ta = $('textarea', section);
$.get('sauces', Conf['sauces'], function(item) {
@@ -13671,7 +13257,6 @@
},
advanced: function(section) {
var archive, boardID, boardOptions, boardSelect, boards, data, event, input, inputs, item, items, name, row, rows, ta, table, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref, _ref1, _ref2, _ref3, _ref4;
-
section.innerHTML = "";
items = {};
inputs = {};
@@ -13691,7 +13276,6 @@
$.on(ta, 'change', $.cb.value);
$.get(items, function(items) {
var key, val;
-
for (key in items) {
val = items[key];
input = inputs[key];
@@ -13760,7 +13344,6 @@
});
$.get('selectedArchives', Conf['selectedArchives'], function(_arg) {
var option, selectedArchives, type;
-
selectedArchives = _arg.selectedArchives;
for (boardID in selectedArchives) {
data = selectedArchives[boardID];
@@ -13775,7 +13358,6 @@
},
addArchiveCell: function(boardID, data, type) {
var archive, i, length, options, select, td;
-
length = data[type].length;
td = $.el('td', {
className: 'archive-cell'
@@ -13805,10 +13387,8 @@
},
saveSelectedArchive: function() {
var _this = this;
-
return $.get('selectedArchives', Conf['selectedArchives'], function(_arg) {
var selectedArchives, _name;
-
selectedArchives = _arg.selectedArchives;
(selectedArchives[_name = _this.dataset.boardid] || (selectedArchives[_name] = {}))[_this.dataset.type] = _this.value;
return $.set('selectedArchives', selectedArchives);
@@ -13819,7 +13399,6 @@
},
time: function() {
var funk;
-
funk = Time.createFunc(this.value);
return this.nextElementSibling.textContent = funk(Time, new Date());
},
@@ -13828,7 +13407,6 @@
},
fileInfo: function() {
var data, funk;
-
data = {
isReply: true,
file: {
@@ -13864,7 +13442,6 @@
},
keybinds: function(section) {
var arr, input, inputs, items, key, tbody, tr, _ref;
-
section.innerHTML = "Keybinds are disabled.
Allowed keys: a-z, 0-9, Ctrl, Shift, Alt, Meta, Enter, Esc, Up, Down, Right, Left.
Press Backspace to disable a keybind.
";
tbody = $('tbody', section);
items = {};
@@ -13886,7 +13463,6 @@
}
return $.get(items, function(items) {
var val;
-
for (key in items) {
val = items[key];
inputs[key].value = val;
@@ -13895,7 +13471,6 @@
},
keybind: function(e) {
var key;
-
if (e.keyCode === 9) {
return;
}
@@ -13909,7 +13484,6 @@
},
style: function(section) {
var arr, description, div, fs, html, input, inputs, items, key, name, nodes, obj, type, value, _i, _len, _ref;
-
nodes = $.frag();
items = {};
inputs = {};
@@ -13952,7 +13526,6 @@
}
return $.get(items, function(items) {
var cb, val;
-
cb = Settings.cb.style;
for (key in items) {
val = items[key];
@@ -13977,7 +13550,6 @@
},
themes: function(section, mode) {
var a, cb, div, keys, mouseout, mouseover, name, parentdiv, suboptions, theme, _i, _j, _k, _len, _len1, _len2, _ref;
-
if (typeof mode !== 'string') {
mode = 'default';
}
@@ -14037,7 +13609,6 @@
$.on($("#importbutton", div), 'change', ThemeTools.importtheme);
$.on($('#tUndelete', div), 'click', function() {
var themes;
-
$.rm($.id("themeContainer"));
themes = {
open: Settings.themes,
@@ -14066,7 +13637,6 @@
});
$.on($('a', div), 'click', function() {
var themes;
-
themes = {
open: Settings.themes,
hyphenatedTitle: 'themes'
@@ -14081,7 +13651,6 @@
},
mouseover: function(e) {
var mouseover;
-
mouseover = $.el('div', {
id: 'mouseover',
className: 'dialog'
@@ -14101,7 +13670,6 @@
},
mascots: function(section, mode) {
var addoptions, batchmascots, categories, cb, container, div, keys, mascot, mascotEl, mascotHide, mascotoptions, menu, name, node, option, suboptions, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref, _ref1;
-
categories = {};
cb = Settings.cb.mascot;
if (typeof mode !== 'string') {
@@ -14170,7 +13738,6 @@
});
$.on($('#clear', batchmascots), 'click', function() {
var enabledMascots, _k, _len2;
-
enabledMascots = JSON.parse(JSON.stringify(Conf[g.MASCOTSTRING]));
for (_k = 0, _len2 = enabledMascots.length; _k < _len2; _k++) {
name = enabledMascots[_k];
@@ -14200,7 +13767,6 @@
});
$.on($('#undelete', batchmascots), 'click', function() {
var mascots;
-
if (!(Conf["Deleted Mascots"].length > 0)) {
alert("No mascots have been deleted.");
return;
@@ -14236,7 +13802,6 @@
});
$.on($('#return', batchmascots), 'click', function() {
var mascots;
-
mascots = {
open: Settings.mascots,
hyphenatedTitle: 'mascots'
@@ -14255,7 +13820,6 @@
style: {
checked: function() {
var hyphenated;
-
$.cb.checked.call(this);
hyphenated = this.name.toLowerCase().replace(/^4/, 'four').replace(/\s+/g, '-');
return (this.checked ? $.addClass : $.rmClass)(doc, hyphenated);
@@ -14266,7 +13830,6 @@
},
select: function() {
var hyphenated, option, _i, _len, _ref;
-
$.cb.value.call(this);
_ref = this.options;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -14279,7 +13842,6 @@
mascot: {
category: function() {
var i, name, setting, test, type, _i, _len, _ref;
-
if ($.id(this.name).hidden = this.checked) {
Conf["Hidden Categories"].push(this.name);
_ref = ["Enabled Mascots", "Enabled Mascots sfw", "Enabled Mascots nsfw"];
@@ -14313,7 +13875,6 @@
},
"delete": function(e) {
var name, type, _i, _len, _ref;
-
e.stopPropagation();
name = this.parentElement.parentElement.id;
if (confirm("Are you sure you want to delete \"" + name + "\"?")) {
@@ -14333,7 +13894,6 @@
},
"export": function(e) {
var a, data, name;
-
e.stopPropagation();
name = this.parentElement.parentElement.id;
data = Mascots[name];
@@ -14371,7 +13931,6 @@
theme: {
select: function() {
var currentTheme;
-
if (currentTheme = $.id(Conf['theme'])) {
$.rmClass(currentTheme, 'selectedtheme');
}
@@ -14392,7 +13951,6 @@
},
"export": function(e) {
var a, data;
-
e.preventDefault();
e.stopPropagation();
data = Themes[this.name];
@@ -14408,7 +13966,6 @@
"delete": function(e) {
var container, settheme,
_this = this;
-
e.preventDefault();
e.stopPropagation();
container = $.id(this.name);
@@ -14427,7 +13984,6 @@
Themes[this.name]["Deleted"] = true;
return $.get("userThemes", {}, function(_arg) {
var userThemes;
-
userThemes = _arg.userThemes;
userThemes[_this.name] = Themes[_this.name];
$.set('userThemes', userThemes);
@@ -14437,12 +13993,10 @@
},
restore: function() {
var _this = this;
-
if (confirm("Are you sure you want to restore \"" + this.id + "\"?")) {
Themes[this.id]["Deleted"] = false;
return $.get("userThemes", {}, function(_arg) {
var userThemes;
-
userThemes = _arg.userThemes;
userThemes[_this.id] = Themes[_this.id];
$.set('userThemes', userThemes);
@@ -14457,10 +14011,8 @@
Main = {
init: function(items) {
var db, flatten, _i, _len;
-
flatten = function(parent, obj) {
var key, val;
-
if (obj instanceof Array) {
Conf[parent] = obj[0];
} else if (typeof obj === 'object') {
@@ -14493,7 +14045,6 @@
},
initFeatures: function(items) {
var init, pathname, _ref;
-
Conf = items;
if (Conf['Post Form Style'] === 'transparent fade') {
$.set('Post Form Style', Conf['Post Form Style'] = 'fixed');
@@ -14547,7 +14098,6 @@
case 'images.4chan.org':
$.ready(function() {
var URL;
-
if (Conf['404 Redirect'] && d.title === '4chan - 404 Not Found') {
Redirect.init();
pathname = location.pathname.split('/');
@@ -14564,7 +14114,6 @@
}
init = function(features) {
var err, module, name;
-
for (name in features) {
module = features[name];
try {
@@ -14646,7 +14195,6 @@
},
initReady: function() {
var board, err, errors, href, passLink, postRoot, posts, styleSelector, thread, threadRoot, threads, _i, _j, _len, _len1, _ref, _ref1;
-
if (d.title === '4chan - 404 Not Found') {
if (Conf['404 Redirect'] && g.VIEW === 'thread') {
href = Redirect.to('thread', {
@@ -14712,7 +14260,6 @@
},
callbackNodes: function(klass, nodes) {
var callback, err, errors, i, len, node, _i, _len, _ref;
-
len = nodes.length;
_ref = klass.prototype.callbacks;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
@@ -14740,11 +14287,9 @@
},
callbackNodesDB: function(klass, nodes, cb) {
var errors, func, i, len, node, queue, softTask;
-
queue = [];
softTask = function() {
var args, func, task;
-
task = queue.shift();
func = task[0];
args = Array.prototype.slice.call(task, 1);
@@ -14763,7 +14308,6 @@
errors = null;
func = function(node, i) {
var callback, err, _i, _len, _ref;
-
_ref = klass.prototype.callbacks;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
callback = _ref[_i];
@@ -14797,7 +14341,6 @@
},
addCallback: function(e) {
var Klass, obj;
-
obj = e.detail;
if (typeof obj.callback.name !== 'string') {
throw new Error("Invalid callback name: " + obj.callback.name);
@@ -14817,7 +14360,6 @@
},
handleErrors: function(errors) {
var div, error, logs, _i, _len;
-
if (!(errors instanceof Array)) {
error = errors;
} else if (errors.length === 1) {
@@ -14832,7 +14374,6 @@
});
$.on(div.lastElementChild, 'click', function() {
var _ref;
-
return _ref = this.textContent === 'show' ? ['hide', false] : ['show', true], this.textContent = _ref[0], logs.hidden = _ref[1], _ref;
});
logs = $.el('div', {
@@ -14846,7 +14387,6 @@
},
parseError: function(data) {
var error, message;
-
Main.logError(data);
message = $.el('div', {
textContent: data.message
@@ -14863,7 +14403,6 @@
},
isThisPageLegit: function() {
var _ref;
-
if (!('thisPageIsLegit' in Main)) {
Main.thisPageIsLegit = location.hostname === 'boards.4chan.org' && !$('link[href*="favicon-status.ico"]', d.head) && ((_ref = d.title) !== '4chan - Temporarily Offline' && _ref !== '4chan - Error' && _ref !== '504 Gateway Time-out');
}
diff --git a/src/Theming/Style.coffee b/src/Theming/Style.coffee
index 6841f62b9..8089fe826 100644
--- a/src/Theming/Style.coffee
+++ b/src/Theming/Style.coffee
@@ -114,7 +114,7 @@ Style =
while i--
return unless Style.headCount
node = nodes[i]
- if (node.nodeName is 'STYLE' and !node.id) or ("#{node.rel}".contains('stylesheet') and !/static\.4chan\.org\/css\/flags\.507\.css/.test(href = node.href) and href[..3] isnt 'data')
+ if (node.nodeName is 'STYLE' and !node.id) or ("#{node.rel}".contains('stylesheet') and !/flags.*\.css$/.test(href = node.href) and href[..3] isnt 'data')
Style.headCount--
$.rm node
return