diff --git a/LICENSE b/LICENSE
index dd8831faf..d2ae960d0 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,5 +1,5 @@
/*
-* 4chan X - Version 1.2.25 - 2013-08-04
+* 4chan X - Version 1.2.25 - 2013-08-11
*
* Licensed under the MIT license.
* https://github.com/seaweedchan/4chan-x/blob/master/LICENSE
diff --git a/builds/4chan-X.js b/builds/4chan-X.js
index dd5c3e4fe..b5ea4362f 100644
--- a/builds/4chan-X.js
+++ b/builds/4chan-X.js
@@ -19,7 +19,7 @@
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAACVBMVEUAAGcAAABmzDNZt9VtAAAAAXRSTlMAQObYZgAAAHFJREFUKFOt0LENACEIBdBv4Qju4wgWanEj3D6OcIVMKaitYHEU/jwTCQj8W75kiVCSBvdQ5/AvfVHBin11BgdRq3ysBgfwBDRrj3MCIA+oAQaku/Q1cNctrAmyDl577tOThYt/Y1RBM4DgOHzM0HFTAyLukH/cmRnqAAAAAElFTkSuQmCC
// ==/UserScript==
/*
-* 4chan X - Version 1.2.25 - 2013-08-04
+* 4chan X - Version 1.2.25 - 2013-08-11
*
* Licensed under the MIT license.
* https://github.com/seaweedchan/4chan-x/blob/master/LICENSE
@@ -340,7 +340,6 @@
Array.prototype.add = function(object, position) {
var keep;
-
keep = this.slice(position);
this.length = position;
this.push(object);
@@ -353,7 +352,6 @@
Array.prototype.indexOf = function(object) {
var i;
-
i = this.length;
while (i--) {
if (this[i] === object) {
@@ -365,7 +363,6 @@
Array.prototype.pushArrays = function() {
var arg, args, _i, _len;
-
args = arguments;
for (_i = 0, _len = args.length; _i < _len; _i++) {
arg = args[_i];
@@ -376,7 +373,6 @@
Array.prototype.remove = function(object) {
var index;
-
if ((index = this.indexOf(object)) > -1) {
return this.splice(index, 1);
} else {
@@ -393,7 +389,6 @@
$.extend = function(object, properties) {
var key, val;
-
for (key in properties) {
val = properties[key];
if (!properties.hasOwnProperty(key)) {
@@ -411,7 +406,6 @@
$.ready = function(fc) {
var cb, _ref;
-
if ((_ref = d.readyState) === 'interactive' || _ref === 'complete') {
$.queueTask(fc);
return;
@@ -425,7 +419,6 @@
$.formData = function(form) {
var fd, key, val;
-
if (form instanceof HTMLFormElement) {
return new FormData(form);
}
@@ -446,7 +439,6 @@
$.ajax = function(url, callbacks, opts) {
var cred, err, form, headers, key, r, sync, type, upCallbacks, val;
-
if (opts == null) {
opts = {};
}
@@ -472,11 +464,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);
@@ -492,7 +482,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];
@@ -534,7 +523,6 @@
$.addStyle = function(css, id) {
var style;
-
style = $.el('style', {
id: id,
textContent: css
@@ -581,7 +569,6 @@
} else {
return function(el) {
var _ref;
-
return (_ref = el.parentNode) != null ? _ref.removeChild(el) : void 0;
};
}
@@ -589,7 +576,6 @@
$.rmAll = function(root) {
var node;
-
while (node = root.firstChild) {
root.removeChild(node);
}
@@ -605,7 +591,6 @@
$.nodes = function(nodes) {
var frag, node, _i, _len;
-
if (!(nodes instanceof Array)) {
return nodes;
}
@@ -639,7 +624,6 @@
$.el = function(tag, properties) {
var el;
-
el = d.createElement(tag);
if (properties) {
$.extend(el, properties);
@@ -649,7 +633,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];
@@ -659,7 +642,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];
@@ -683,7 +665,6 @@
$.debounce = function(wait, fn) {
var args, exec, lastCall, that, timeout;
-
lastCall = 0;
timeout = null;
that = null;
@@ -705,11 +686,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);
@@ -732,7 +711,6 @@
$.globalEval = function(code) {
var script;
-
script = $.el('script', {
textContent: code
});
@@ -742,7 +720,6 @@
$.bytesToString = function(size) {
var unit;
-
unit = 0;
while (size >= 1024) {
size /= 1024;
@@ -761,7 +738,6 @@
$.sync = (function() {
window.addEventListener('storage', function(e) {
var cb;
-
if (cb = $.syncing[e.key]) {
return cb(JSON.parse(e.newValue));
}
@@ -773,7 +749,6 @@
$.item = function(key, val) {
var item;
-
item = {};
item[key] = val;
return item;
@@ -781,11 +756,9 @@
(function() {
var scriptStorage;
-
scriptStorage = opera.scriptStorage;
$["delete"] = function(keys) {
var key, _i, _len;
-
if (!(keys instanceof Array)) {
keys = [keys];
}
@@ -798,7 +771,6 @@
};
$.get = function(key, val, cb) {
var items;
-
if (typeof cb === 'function') {
items = $.item(key, val);
} else {
@@ -816,7 +788,6 @@
};
$.set = (function() {
var set;
-
set = function(key, val) {
key = g.NAMESPACE + key;
val = JSON.stringify(val);
@@ -827,7 +798,6 @@
};
return function(keys, val) {
var key;
-
if (typeof keys === 'string') {
set(keys, val);
return;
@@ -896,7 +866,6 @@
function Post(root, thread, board, that) {
var alt, anchor, capcode, date, email, file, fileInfo, flag, info, name, post, size, subject, thumb, tripcode, uniqueID, unit;
-
this.thread = thread;
this.board = board;
if (that == null) {
@@ -995,7 +964,6 @@
Post.prototype.parseComment = function() {
var bq, data, 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++) {
@@ -1013,7 +981,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++) {
@@ -1043,7 +1010,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) {
@@ -1092,7 +1058,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');
@@ -1126,7 +1091,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++) {
@@ -1144,7 +1108,6 @@
function Clone(origin, context) {
var file, index, 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'];
@@ -1233,7 +1196,6 @@
function DataBoard(key, sync) {
var init,
_this = this;
-
this.key = key;
this.data = Conf[key];
$.sync(key, this.onSync.bind(this));
@@ -1250,7 +1212,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];
@@ -1271,7 +1232,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) {
@@ -1287,7 +1247,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;
@@ -1301,7 +1260,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) {
@@ -1325,7 +1283,6 @@
DataBoard.prototype.clean = function() {
var boardID, now, val, _ref;
-
_ref = this.data.boards;
for (boardID in _ref) {
val = _ref[boardID];
@@ -1345,10 +1302,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) {
@@ -1459,7 +1414,6 @@
init: function() {
var barFixedToggler, barPositionToggler, customNavToggler, editCustomNav, footerToggler, headerToggler, linkJustifyToggler,
_this = this;
-
this.menu = new UI.Menu('header');
this.menuButton = $.el('span', {
className: 'menu-button',
@@ -1543,7 +1497,6 @@
}
$.asap((function() {
var _ref;
-
return $.id('boardNavMobile') || ((_ref = d.readyState) === 'interactive' || _ref === 'complete');
}), Header.setBoardList);
$.prepend(d.body, _this.bar);
@@ -1552,7 +1505,6 @@
});
return $.ready(function() {
var a, cs;
-
_this.footer = $.id('boardNavDesktopFoot');
if (a = $("a[href*='/" + g.BOARD + "/']", $.id('boardNavDesktopFoot'))) {
a.className = 'current';
@@ -1586,7 +1538,6 @@
}),
setBoardList: function() {
var a, boardList, btn, fourchannav, fullBoardList;
-
fourchannav = $.id('boardNavDesktop');
if (a = $("a[href*='/" + g.BOARD + "/']", fourchannav)) {
a.className = 'current';
@@ -1608,7 +1559,6 @@
},
generateBoardList: function(text) {
var as, list, nodes;
-
list = $('#custom-board-list', Header.bar);
$.rmAll(list);
if (!text) {
@@ -1617,7 +1567,6 @@
as = $$('#full-board-list a', 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);
}
@@ -1664,7 +1613,6 @@
},
toggleBoardList: function() {
var bar, custom, full, showBoardList;
-
bar = Header.bar;
custom = $('#custom-board-list', bar);
full = $('#full-board-list', bar);
@@ -1700,7 +1648,6 @@
},
toggleLinkJustify: function() {
var centered;
-
$.event('CloseMenu');
centered = this.nodeName === 'INPUT' ? this.checked : void 0;
Header.setLinkJustify(centered);
@@ -1730,7 +1677,6 @@
},
toggleBarVisibility: function(e) {
var hide, message;
-
if (e.type === 'mousedown' && e.button !== 0) {
return;
}
@@ -1747,7 +1693,6 @@
},
toggleFooterVisibility: function() {
var hide, message;
-
$.event('CloseMenu');
hide = this.nodeName === 'INPUT' ? this.checked : !!Header.footer.hidden;
Header.setFooterVisibility(hide);
@@ -1757,7 +1702,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);
@@ -1770,14 +1714,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;
}
@@ -1788,7 +1730,6 @@
},
scrollToPost: function(post) {
var headRect, top;
-
top = post.getBoundingClientRect().top;
if (Conf['Fixed Header'] && !Conf['Bottom Header']) {
headRect = Header.bar.getBoundingClientRect();
@@ -1798,7 +1739,6 @@
},
addShortcut: function(el) {
var shortcut;
-
shortcut = $.el('span', {
className: 'shortcut fourchanx-link'
});
@@ -1810,7 +1750,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) {
@@ -1823,7 +1762,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);
@@ -1833,7 +1771,6 @@
},
postFromObject: function(data, boardID) {
var o;
-
o = {
postID: data.no,
threadID: data.resto || data.no,
@@ -1877,7 +1814,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/';
@@ -1973,7 +1909,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) {
@@ -1986,7 +1921,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);
@@ -2006,7 +1940,6 @@
},
postDataFromLink: function(link) {
var boardID, path, postID, threadID;
-
if (link.hostname === 'boards.4chan.org') {
path = link.pathname.split('/');
boardID = path[1];
@@ -2025,7 +1958,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) {
@@ -2054,14 +1986,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;
@@ -2082,7 +2012,6 @@
},
insert: function(post, root, context) {
var clone, nodes;
-
if (!root.parentNode) {
return;
}
@@ -2096,7 +2025,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;
@@ -2146,7 +2074,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;
@@ -2240,10 +2167,8 @@
UI = (function() {
var Menu, dialog, drag, dragend, dragstart, hover, hoverend, hoverstart, touchend, touchmove;
-
dialog = function(id, position, html) {
var child, el, move, _i, _len, _ref;
-
el = $.el('div', {
className: 'dialog',
innerHTML: html,
@@ -2283,7 +2208,6 @@
Menu.prototype.makeMenu = function() {
var menu;
-
menu = $.el('div', {
className: 'dialog',
id: 'menu',
@@ -2298,7 +2222,6 @@
Menu.prototype.toggle = function(e, button, data) {
var previousButton;
-
e.preventDefault();
e.stopPropagation();
if (currentMenu) {
@@ -2316,7 +2239,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;
@@ -2355,7 +2277,6 @@
Menu.prototype.insertEntry = function(entry, parent, data) {
var subEntry, submenu, _i, _len, _ref;
-
if (typeof entry.open === 'function') {
if (!entry.open(data)) {
return;
@@ -2389,7 +2310,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);
@@ -2399,7 +2319,6 @@
Menu.prototype.keybinds = function(e) {
var entry, next, nextPrev, subEntry, submenu;
-
entry = $('.focused', currentMenu);
while (subEntry = $('.focused', entry)) {
entry = subEntry;
@@ -2445,7 +2364,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');
}
@@ -2473,7 +2391,6 @@
Menu.prototype.addEntry = function(e) {
var entry;
-
entry = e.detail;
if (entry.type !== this.type) {
return;
@@ -2484,7 +2401,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) {
@@ -2508,7 +2424,6 @@
})();
dragstart = function(e) {
var el, isTouching, o, rect, screenHeight, screenWidth, _ref;
-
if (e.type === 'mousedown' && e.button !== 0) {
return;
}
@@ -2547,7 +2462,6 @@
};
touchmove = function(e) {
var touch, _i, _len, _ref;
-
_ref = e.changedTouches;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
touch = _ref[_i];
@@ -2559,7 +2473,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 + '%';
@@ -2575,7 +2488,6 @@
};
touchend = function(e) {
var touch, _i, _len, _ref;
-
_ref = e.changedTouches;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
touch = _ref[_i];
@@ -2597,7 +2509,6 @@
};
hoverstart = function(_arg) {
var asapTest, cb, el, endEvents, latestEvent, o, root;
-
root = _arg.root, el = _arg.el, latestEvent = _arg.latestEvent, endEvents = _arg.endEvents, asapTest = _arg.asapTest, cb = _arg.cb;
o = {
root: root,
@@ -2626,7 +2537,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;
@@ -2669,7 +2579,6 @@
},
node: function() {
var email, name, tripcode, _ref;
-
if (this.info.capcode || this.isClone) {
return;
}
@@ -2696,7 +2605,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;
}
@@ -2733,7 +2641,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;
@@ -2764,7 +2671,6 @@
},
createFilter: function(regexp, op, stub, hl, top) {
var settings, test;
-
test = typeof regexp === 'string' ? function(value) {
return regexp === value;
} : function(value) {
@@ -2788,7 +2694,6 @@
},
node: function() {
var filter, firstThread, key, result, thisThread, value, _i, _len, _ref;
-
if (this.isClone) {
return;
}
@@ -2900,7 +2805,6 @@
menu: {
init: function() {
var div, entry, type, _i, _len, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Filter']) {
return;
}
@@ -2926,7 +2830,6 @@
},
createSubEntry: function(text, type) {
var el;
-
el = $.el('a', {
href: 'javascript:;',
textContent: text
@@ -2937,7 +2840,6 @@
el: el,
open: function(post) {
var value;
-
value = Filter[type](post);
return value !== false;
}
@@ -2945,7 +2847,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) {
@@ -2960,7 +2861,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);
@@ -2994,7 +2894,6 @@
},
node: function() {
var data;
-
if (!this.isReply || this.isClone) {
return;
}
@@ -3018,7 +2917,6 @@
menu: {
init: function() {
var apply, div, hideStubLink, makeStub, replies, thisPost;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Reply Hiding Link']) {
return;
}
@@ -3089,7 +2987,6 @@
order: 20,
open: function(post) {
var data;
-
if (!post.isReply || post.isClone || !post.isHidden) {
return false;
}
@@ -3121,7 +3018,6 @@
order: 15,
open: function(post) {
var data;
-
if (!post.isReply || post.isClone || !post.isHidden) {
return false;
}
@@ -3138,7 +3034,6 @@
},
hide: function() {
var makeStub, parent, post, replies, thisPost;
-
parent = this.parentNode;
thisPost = $('input[name=thisPost]', parent).checked;
replies = $('input[name=replies]', parent).checked;
@@ -3157,7 +3052,6 @@
},
show: function() {
var data, parent, post, replies, thisPost;
-
parent = this.parentNode;
thisPost = $('input[name=thisPost]', parent).checked;
replies = $('input[name=replies]', parent).checked;
@@ -3181,7 +3075,6 @@
},
hideStub: function() {
var post;
-
post = PostHiding.menu.post;
post.nodes.root.hidden = true;
$.event('CloseMenu');
@@ -3189,7 +3082,6 @@
},
makeButton: function(post, type) {
var a;
-
a = $.el('a', {
className: "" + type + "-reply-button",
innerHTML: " " + (type === 'hide' ? '-' : '+') + " ",
@@ -3200,7 +3092,6 @@
},
saveHiddenState: function(post, isHiding, thisPost, makeStub, hideRecursively) {
var data;
-
data = {
boardID: post.board.ID,
threadID: post.thread.ID,
@@ -3219,7 +3110,6 @@
},
toggle: function() {
var post;
-
post = Get.postFromNode(this);
if (post.isHidden) {
PostHiding.show(post);
@@ -3230,7 +3120,6 @@
},
hide: function(post, makeStub, hideRecursively) {
var a, postInfo, quotelink, _i, _len, _ref;
-
if (makeStub == null) {
makeStub = Conf['Stubs'];
}
@@ -3268,7 +3157,6 @@
},
show: function(post, showRecursively) {
var quotelink, _i, _len, _ref;
-
if (showRecursively == null) {
showRecursively = Conf['Recursive Hiding'];
}
@@ -3304,7 +3192,6 @@
},
node: function() {
var i, obj, quote, recursive, _i, _j, _len, _len1, _ref, _ref1;
-
if (this.isClone) {
return;
}
@@ -3322,7 +3209,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: [],
@@ -3333,7 +3219,6 @@
},
rm: function(recursive, post) {
var i, obj, rec, _i, _len, _ref;
-
if (!(obj = Recursive.recursives[post.fullID])) {
return;
}
@@ -3348,7 +3233,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;
@@ -3375,7 +3259,6 @@
},
node: function() {
var data;
-
if (data = ThreadHiding.db.get({
boardID: this.board.ID,
threadID: this.ID
@@ -3389,7 +3272,6 @@
},
syncCatalog: function() {
var hiddenThreads, hiddenThreadsOnCatalog, threadID;
-
hiddenThreads = ThreadHiding.db.get({
boardID: g.BOARD.ID,
defaultValue: {}
@@ -3416,7 +3298,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;
}
@@ -3442,7 +3323,6 @@
menu: {
init: function() {
var apply, div, hideStubLink, makeStub;
-
if (g.VIEW !== 'index' || !Conf['Menu'] || !Conf['Thread Hiding Link']) {
return;
}
@@ -3469,7 +3349,6 @@
order: 20,
open: function(_arg) {
var isReply, thread;
-
thread = _arg.thread, isReply = _arg.isReply;
if (isReply || thread.isHidden) {
return false;
@@ -3491,7 +3370,6 @@
order: 15,
open: function(_arg) {
var isReply, thread;
-
thread = _arg.thread, isReply = _arg.isReply;
if (isReply || !thread.isHidden) {
return false;
@@ -3502,7 +3380,6 @@
},
hide: function() {
var makeStub, thread;
-
makeStub = $('input', this.parentNode).checked;
thread = ThreadHiding.menu.thread;
ThreadHiding.hide(thread, makeStub);
@@ -3511,7 +3388,6 @@
},
hideStub: function() {
var thread;
-
thread = ThreadHiding.menu.thread;
ThreadHiding.hide(thread, false);
$.event('CloseMenu');
@@ -3519,7 +3395,6 @@
},
makeButton: function(thread, type) {
var a;
-
a = $.el('a', {
className: "" + type + "-thread-button",
innerHTML: " " + (type === 'hide' ? '-' : '+') + " ",
@@ -3531,7 +3406,6 @@
},
saveHiddenState: function(thread, makeStub) {
var hiddenThreadsOnCatalog;
-
hiddenThreadsOnCatalog = JSON.parse(localStorage.getItem("4chan-hide-t-" + g.BOARD)) || {};
if (thread.isHidden) {
ThreadHiding.db.set({
@@ -3564,7 +3438,6 @@
},
hide: function(thread, makeStub) {
var OP, a, numReplies, opInfo, span, threadRoot;
-
if (makeStub == null) {
makeStub = Conf['Stubs'];
}
@@ -3595,7 +3468,6 @@
},
show: function(thread) {
var threadRoot;
-
if (thread.stub) {
$.rm(thread.stub);
delete thread.stub;
@@ -3608,7 +3480,6 @@
QuoteBacklink = {
init: function() {
var format;
-
if (g.VIEW === 'catalog' || !Conf['Quote Backlinks']) {
return;
}
@@ -3626,7 +3497,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;
}
@@ -3664,7 +3534,6 @@
},
secondNode: function() {
var container;
-
if (this.isClone && (this.origin.isReply || Conf['OP Backlinks'])) {
this.nodes.backlinkContainer = $('.container', this.nodes.info);
return;
@@ -3678,7 +3547,6 @@
},
getContainer: function(id) {
var _base;
-
return (_base = this.containers)[id] || (_base[id] = $.el('span', {
className: 'container'
}));
@@ -3701,7 +3569,6 @@
},
node: function() {
var board, boardID, quotelink, quotelinks, quotes, thread, threadID, _i, _len, _ref, _ref1;
-
if (this.isClone && this.thread === this.context.thread) {
return;
}
@@ -3737,7 +3604,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];
@@ -3750,7 +3616,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];
@@ -3774,7 +3639,6 @@
},
toggle: function(e) {
var boardID, context, postID, threadID, _ref;
-
if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || e.button !== 0) {
return;
}
@@ -3800,7 +3664,6 @@
},
add: function(quotelink, boardID, threadID, postID, context) {
var inline, isBacklink, post, qroot, root;
-
isBacklink = $.hasClass(quotelink, 'backlink');
inline = $.el('div', {
id: "i" + postID,
@@ -3825,7 +3688,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);
@@ -3867,7 +3729,6 @@
},
node: function() {
var boardID, op, postID, quotelink, quotelinks, quotes, _i, _j, _len, _len1, _ref;
-
if (this.isClone && this.thread === this.context.thread) {
return;
}
@@ -3910,7 +3771,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];
@@ -3919,7 +3779,6 @@
},
mouseover: function(e) {
var boardID, clone, origin, post, postID, posts, qp, quote, quoterID, root, threadID, workaround, _i, _j, _len, _len1, _ref, _ref1;
-
if ($.hasClass(this, 'inlined')) {
return;
}
@@ -3975,7 +3834,6 @@
},
mouseout: function() {
var clone, post, root, _i, _len, _ref;
-
if (!(root = this.el.firstElementChild)) {
return;
}
@@ -4005,7 +3863,6 @@
},
node: function() {
var boardID, postID, quotelink, _i, _len, _ref, _ref1, _ref2;
-
if (this.isClone) {
return;
}
@@ -4028,7 +3885,6 @@
QuoteThreading = {
init: function() {
var input;
-
if (!(Conf['Quote Threading'] && g.VIEW === 'thread')) {
return;
}
@@ -4051,7 +3907,6 @@
},
setup: function() {
var ID, post, posts;
-
$.off(d, '4chanXInitFinished', QuoteThreading.setup);
posts = g.posts;
for (ID in posts) {
@@ -4064,7 +3919,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;
}
@@ -4094,7 +3948,6 @@
},
nodeinsert: function() {
var bottom, height, posts, qpost, qroot, threadContainer, top, _ref;
-
posts = g.posts;
qpost = posts[this.threaded];
delete this.threaded;
@@ -4124,14 +3977,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];
@@ -4146,7 +3997,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;
@@ -4162,7 +4012,6 @@
},
kb: function() {
var control;
-
control = $.id('threadingControl');
return control.click();
}
@@ -4189,7 +4038,6 @@
},
node: function() {
var quotelink, _i, _len, _ref;
-
if (this.isClone) {
return;
}
@@ -4225,7 +4073,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];
@@ -4240,7 +4087,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;
@@ -4320,7 +4166,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++) {
@@ -4405,7 +4250,6 @@
},
toggle: function() {
var el, embed, style, type, url;
-
embed = this.previousElementSibling;
if (this.className.contains("embedded")) {
el = $.el('a', {
@@ -4499,7 +4343,6 @@
style: 'height: auto; width: 500px; display: inline-block;',
el: function() {
var div;
-
div = $.el('div', {
className: "soundcloud",
name: "soundcloud"
@@ -4525,7 +4368,6 @@
regExp: /.*(?:pastebin.com\/(?!u\/))([^#\&\?]*).*/,
el: function() {
var div;
-
return div = $.el('iframe', {
src: "http://pastebin.com/embed_iframe.php?i=" + this.name
});
@@ -4535,7 +4377,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"
});
@@ -4546,7 +4387,6 @@
},
text: function() {
var file, response;
-
response = JSON.parse(this.responseText).files;
for (file in response) {
if (response.hasOwnProperty(file)) {
@@ -4567,14 +4407,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:
@@ -4616,7 +4454,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];
@@ -4640,7 +4477,6 @@
QR = {
init: function() {
var sc;
-
if (!Conf['Quick Reply']) {
return;
}
@@ -4687,7 +4523,6 @@
},
initReady: function() {
var link;
-
QR.postingIsEnabled = !!$.id('postForm');
if (!QR.postingIsEnabled) {
return;
@@ -4707,13 +4542,11 @@
$.before($.id('postForm'), link);
$.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);
});
@@ -4742,7 +4575,6 @@
},
open: function() {
var err;
-
if (QR.nodes) {
QR.nodes.el.hidden = false;
QR.unhide();
@@ -4761,7 +4593,6 @@
},
close: function() {
var i, _i, _len, _ref;
-
if (QR.req) {
QR.abort();
return;
@@ -4808,7 +4639,6 @@
},
error: function(err) {
var el;
-
QR.open();
if (typeof err === 'string') {
el = $.tn(err);
@@ -4836,7 +4666,6 @@
notifications: [],
cleanNotifications: function() {
var notification, _i, _len, _ref;
-
_ref = QR.notifications;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
notification = _ref[_i];
@@ -4846,7 +4675,6 @@
},
status: function() {
var disabled, status, value;
-
if (!QR.nodes) {
return;
}
@@ -4867,7 +4695,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: [],
@@ -4887,7 +4714,6 @@
},
parseItem: function(item, types) {
var boards, match, type, val, _ref, _ref1;
-
if (item[0] === '#') {
return;
}
@@ -4916,7 +4742,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];
@@ -4930,7 +4755,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;
}
@@ -4939,7 +4763,6 @@
get: function(cb) {
return $.get('QR.persona', {}, function(_arg) {
var persona;
-
persona = _arg['QR.persona'];
return cb(persona);
});
@@ -4947,7 +4770,6 @@
set: function(post) {
return $.get('QR.persona', {}, function(_arg) {
var persona;
-
persona = _arg['QR.persona'];
persona = {
name: post.name,
@@ -4961,7 +4783,6 @@
cooldown: {
init: function() {
var board;
-
if (!Conf['Cooldown']) {
return;
}
@@ -5003,7 +4824,6 @@
},
sync: function(cooldowns) {
var id;
-
for (id in cooldowns) {
QR.cooldown.cooldowns[id] = cooldowns[id];
}
@@ -5011,7 +4831,6 @@
},
set: function(data) {
var cooldown, delay, hasFile, isReply, isSage, post, req, start, type, upSpd;
-
if (!Conf['Cooldown']) {
return;
}
@@ -5051,7 +4870,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;
@@ -5105,7 +4923,6 @@
},
quote: function(e) {
var OP, caretPos, com, index, post, range, s, sel, selectionRoot, text, thread, _ref;
-
if (e != null) {
e.preventDefault();
}
@@ -5145,7 +4962,6 @@
},
characterCount: function() {
var count, counter;
-
counter = QR.nodes.charCount;
count = QR.nodes.com.textLength;
counter.textContent = count;
@@ -5154,7 +4970,6 @@
},
drag: function(e) {
var toggle;
-
toggle = e.type === 'dragstart' ? $.off : $.on;
toggle(d, 'dragover', QR.dragOver);
return toggle(d, 'drop', QR.dropFile);
@@ -5174,7 +4989,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++) {
@@ -5202,7 +5016,6 @@
},
fileInput: function(files) {
var file, length, max, post, _i, _len;
-
if (this instanceof Element) {
files = __slice.call(this.files);
QR.nodes.fileInput.value = null;
@@ -5251,7 +5064,6 @@
function _Class(select) {
var el, event, prev, _i, _len, _ref,
_this = this;
-
el = $.el('a', {
className: 'qr-preview',
draggable: true,
@@ -5305,7 +5117,6 @@
_Class.prototype.rm = function() {
var index;
-
$.rm(this.nodes.el);
index = QR.posts.indexOf(this);
if (QR.posts.length === 1) {
@@ -5323,7 +5134,6 @@
_Class.prototype.lock = function(lock) {
var name, _i, _len, _ref;
-
if (lock == null) {
lock = true;
}
@@ -5348,7 +5158,6 @@
_Class.prototype.select = function() {
var rectEl, rectList;
-
if (QR.selected) {
QR.selected.nodes.el.id = null;
QR.selected.forceSave();
@@ -5365,7 +5174,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];
@@ -5377,7 +5185,6 @@
_Class.prototype.save = function(input) {
var value, _ref;
-
if (input.type === 'checkbox') {
this.spoiler = input.checked;
return;
@@ -5396,7 +5203,6 @@
_Class.prototype.forceSave = function() {
var name, _i, _len, _ref;
-
if (this !== QR.selected) {
return;
}
@@ -5428,7 +5234,6 @@
_Class.prototype.setThumbnail = function(fileURL) {
var img, reader,
_this = this;
-
if (!window.URL) {
if (!fileURL) {
reader = new FileReader();
@@ -5444,7 +5249,6 @@
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;
@@ -5524,11 +5328,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;
@@ -5566,7 +5368,6 @@
_Class.prototype.drop = function() {
var el, index, newIndex, oldIndex, post;
-
el = $('.drag', this.parentNode);
$.rmClass(el, 'drag');
$.rmClass(this, 'over');
@@ -5601,7 +5402,6 @@
ready: function() {
var imgContainer, input, observer, setLifetime,
_this = this;
-
setLifetime = function(e) {
return _this.lifetime = e.detail;
};
@@ -5643,7 +5443,6 @@
});
$.get('captchas', [], function(_arg) {
var captchas;
-
captchas = _arg.captchas;
return _this.sync(captchas);
});
@@ -5658,7 +5457,6 @@
},
getOne: function() {
var captcha, challenge, response;
-
this.clear();
if (captcha = this.captchas.shift()) {
challenge = captcha.challenge, response = captcha.response;
@@ -5683,7 +5481,6 @@
},
save: function() {
var response;
-
if (!(response = this.nodes.input.value.trim())) {
return;
}
@@ -5698,7 +5495,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) {
@@ -5716,7 +5512,6 @@
},
load: function() {
var challenge;
-
if (!this.nodes.challenge.firstChild) {
return;
}
@@ -5729,7 +5524,6 @@
},
count: function() {
var count;
-
count = this.captchas.length;
this.nodes.input.placeholder = (function() {
switch (count) {
@@ -5762,7 +5556,6 @@
},
dialog: function() {
var dialog, mimeTypes, name, nodes, thread, _i, _len, _ref;
-
dialog = UI.dialog('qr', 'top:0;right:0;', "
");
QR.nodes = nodes = {
el: dialog,
@@ -5864,7 +5657,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();
}
@@ -5950,7 +5742,7 @@
QR.cooldown.auto = false;
QR.status();
return QR.error($.el('span', {
- innerHTML: "4chan X encountered an error while posting. Please try again. \n[?]"
+ innerHTML: "4chan X encountered an error while posting. \n[Banned?] [More info]"
}));
}
};
@@ -5977,7 +5769,6 @@
},
response: function() {
var URL, ban, board, err, h1, isReply, m, post, postID, req, threadID, tmpDoc, _, _ref, _ref1;
-
QR.req.upload.onload();
req = QR.req;
delete QR.req;
@@ -6081,7 +5872,6 @@
FappeTyme = {
init: function() {
var el, input;
-
if (!Conf['Fappe Tyme'] || g.VIEW === 'catalog' || g.BOARD === 'f') {
return;
}
@@ -6133,7 +5923,6 @@
},
node: function() {
var thumb, _ref;
-
if (!((_ref = this.file) != null ? _ref.isImage : void 0)) {
return;
}
@@ -6158,7 +5947,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';
@@ -6207,7 +5995,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);
@@ -6252,7 +6039,6 @@
},
expand: function(post, src) {
var img, thumb;
-
thumb = post.file.thumb;
if (post.isHidden || post.file.isExpanded || $.hasClass(thumb, 'expanding')) {
return;
@@ -6280,7 +6066,6 @@
},
completeExpand: function(post) {
var prev, thumb;
-
thumb = post.file.thumb;
if (!$.hasClass(thumb, 'expanding')) {
return;
@@ -6294,7 +6079,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)) {
@@ -6307,7 +6091,6 @@
},
error: function() {
var URL, post, src, timeoutID;
-
post = Get.postFromNode(this);
$.rm(this);
delete post.file.fullImage;
@@ -6333,7 +6116,6 @@
return $.ajax("//api.4chan.org/" + post.board + "/res/" + post.thread + ".json", {
onload: function() {
var postObj, _i, _len, _ref;
-
if (this.status !== 200) {
return;
}
@@ -6357,7 +6139,6 @@
menu: {
init: function() {
var conf, createSubEntry, el, key, subEntries, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Image Expansion']) {
return;
}
@@ -6381,7 +6162,6 @@
},
createSubEntry: function(type, config) {
var input, label;
-
label = $.el('label', {
innerHTML: " " + type
});
@@ -6417,7 +6197,6 @@
},
node: function() {
var _ref;
-
if (!((_ref = this.file) != null ? _ref.isImage : void 0)) {
return;
}
@@ -6425,7 +6204,6 @@
},
mouseover: function(e) {
var el, post;
-
post = Get.postFromNode(this);
el = $.el('img', {
id: 'ihover',
@@ -6447,7 +6225,6 @@
error: function() {
var URL, post, src, timeoutID,
_this = this;
-
if (!doc.contains(this)) {
return;
}
@@ -6472,7 +6249,6 @@
return $.ajax("//api.4chan.org/" + post.board + "/res/" + post.thread + ".json", {
onload: function() {
var postObj, _i, _len, _ref;
-
if (this.status !== 200) {
return;
}
@@ -6498,7 +6274,6 @@
ImageLoader = {
init: function() {
var prefetch;
-
if (g.VIEW === 'catalog') {
return;
}
@@ -6525,7 +6300,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;
}
@@ -6547,7 +6321,6 @@
},
toggle: function() {
var enabled, id, post, _ref;
-
enabled = Conf['prefetch'] = this.checked;
if (enabled) {
_ref = g.threads["" + g.BOARD.ID + "." + g.THREADID].posts;
@@ -6571,7 +6344,6 @@
},
node: function() {
var thumb, _ref;
-
if (this.isClone || !((_ref = this.file) != null ? _ref.isSpoiler : void 0)) {
return;
}
@@ -6584,7 +6356,6 @@
ArchiveLink = {
init: function() {
var div, entry, type, _i, _len, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Archive Link']) {
return;
}
@@ -6597,7 +6368,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,
@@ -6616,14 +6386,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,
@@ -6633,7 +6401,6 @@
return true;
} : function(post) {
var value;
-
value = Filter[type](post);
if (!value) {
return false;
@@ -6656,7 +6423,6 @@
DeleteLink = {
init: function() {
var div, fileEl, fileEntry, postEl, postEntry;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Delete Link']) {
return;
}
@@ -6684,7 +6450,6 @@
el: fileEl,
open: function(_arg) {
var file;
-
file = _arg.file;
if (!file || file.isDead) {
return false;
@@ -6700,7 +6465,6 @@
order: 40,
open: function(post) {
var node;
-
if (post.isDead || post.board.ID === 'q') {
return false;
}
@@ -6715,7 +6479,6 @@
},
"delete": function() {
var fileOnly, form, link, post;
-
post = DeleteLink.post;
if (DeleteLink.cooldown.counting === post) {
return;
@@ -6744,7 +6507,6 @@
},
load: function(link, post, fileOnly, html) {
var msg, s, tmpDoc;
-
tmpDoc = d.implementation.createHTMLDocument('');
tmpDoc.documentElement.innerHTML = html;
if (tmpDoc.title === '4chan - Banned') {
@@ -6767,7 +6529,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,
@@ -6801,7 +6562,6 @@
DownloadLink = {
init: function() {
var a;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Download Link']) {
return;
}
@@ -6815,7 +6575,6 @@
order: 100,
open: function(_arg) {
var file;
-
file = _arg.file;
if (!file) {
return false;
@@ -6841,7 +6600,6 @@
},
node: function() {
var button;
-
button = Menu.makeButton(this);
if (this.isClone) {
$.replace($('.menu-button', this.nodes.info), button);
@@ -6851,11 +6609,9 @@
},
makeButton: (function() {
var a;
-
a = null;
return function(post) {
var clone;
-
a || (a = $.el('a', {
className: 'menu-button fourchanx-link',
innerHTML: '',
@@ -6872,7 +6628,6 @@
})(),
toggle: function(e) {
var post;
-
post = this.dataset.clone ? Get.postFromNode(this) : g.posts[this.dataset.postid];
return Menu.menu.toggle(e, this, post);
}
@@ -6881,7 +6636,6 @@
ReportLink = {
init: function() {
var a;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Report Link']) {
return;
}
@@ -6903,7 +6657,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();
@@ -6916,7 +6669,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;
@@ -6989,7 +6741,6 @@
init: function() {
var sc,
_this = this;
-
if (g.VIEW !== 'thread' || !Conf['Thread Stats']) {
return;
}
@@ -7019,7 +6770,6 @@
},
node: function() {
var ID, fileCount, post, postCount, _ref;
-
postCount = 0;
fileCount = 0;
_ref = this.posts;
@@ -7037,7 +6787,6 @@
},
onUpdate: function(e) {
var fileCount, postCount, _ref;
-
if (e.detail[404]) {
return;
}
@@ -7046,7 +6795,6 @@
},
update: function(postCount, fileCount) {
var fileCountEl, postCountEl, thread;
-
thread = ThreadStats.thread, postCountEl = ThreadStats.postCountEl, fileCountEl = ThreadStats.fileCountEl;
postCountEl.textContent = postCount;
fileCountEl.textContent = fileCount;
@@ -7073,7 +6821,6 @@
},
onThreadsLoad: function() {
var page, pages, thread, _i, _j, _len, _len1, _ref;
-
if (!Conf["Page Count in Stats"]) {
return;
}
@@ -7101,7 +6848,6 @@
init: function() {
var checked, conf, el, input, name, sc, settings, subEntries, _ref,
_this = this;
-
if (g.VIEW !== 'thread' || !Conf['Thread Updater']) {
return;
}
@@ -7252,7 +6998,6 @@
},
interval: function() {
var val;
-
val = +this.value;
if (val < 1) {
val = 1;
@@ -7262,7 +7007,6 @@
},
load: function() {
var klass, req, text, _ref;
-
req = ThreadUpdater.req;
switch (req.status) {
case 200:
@@ -7306,7 +7050,6 @@
},
getInterval: function() {
var i, j;
-
i = ThreadUpdater.interval;
j = Math.min(ThreadUpdater.outdateCount, 10);
if (!d.hidden) {
@@ -7316,14 +7059,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;
@@ -7336,7 +7077,6 @@
},
timeout: function() {
var n;
-
ThreadUpdater.timeoutID = setTimeout(ThreadUpdater.timeout, 1000);
if (!(n = --ThreadUpdater.seconds)) {
return ThreadUpdater.update();
@@ -7349,7 +7089,6 @@
},
update: function() {
var url;
-
if (!ThreadUpdater.online) {
return;
}
@@ -7374,7 +7113,6 @@
},
updateThreadStatus: function(title, OP) {
var icon, message, root, titleLC;
-
titleLC = title.toLowerCase();
if (ThreadUpdater.thread["is" + title] === !!OP[titleLC]) {
return;
@@ -7401,7 +7139,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);
@@ -7487,7 +7224,6 @@
}
$.queueTask(function() {
var length, threadID;
-
threadID = ThreadUpdater.thread.ID;
length = $$('.thread > .postContainer', ThreadUpdater.root).length;
return Fourchan.parseThread(threadID, length - count, length);
@@ -7508,7 +7244,6 @@
ThreadWatcher = {
init: function() {
var sc;
-
if (!Conf['Thread Watcher']) {
return;
}
@@ -7542,7 +7277,6 @@
node: function() {
var favicon,
_this = this;
-
favicon = $.el('a', {
className: 'watch-thread-link',
href: 'javascript:;'
@@ -7562,7 +7296,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']);
@@ -7611,13 +7344,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']) {
@@ -7638,7 +7369,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) {
@@ -7651,7 +7381,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] = {
@@ -7697,7 +7426,6 @@
},
ready: function() {
var ID, post, posts, _ref;
-
$.off(d, '4chanXInitFinished', Unread.ready);
posts = [];
_ref = Unread.thread.posts;
@@ -7714,7 +7442,6 @@
},
scroll: function() {
var checkPosition, hash, onload, post, posts, prevID, root;
-
if ((hash = location.hash.match(/\d+/)) && hash[0] in Unread.thread.posts) {
return;
}
@@ -7746,7 +7473,6 @@
}
checkPosition = function(target) {
var height, top, _ref;
-
_ref = target.getBoundingClientRect(), top = _ref.top, height = _ref.height;
return top + height - doc.clientHeight > 0;
};
@@ -7754,7 +7480,6 @@
},
sync: function() {
var lastReadPost;
-
lastReadPost = Unread.db.get({
boardID: Unread.thread.board.ID,
threadID: Unread.thread.ID,
@@ -7771,7 +7496,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;
@@ -7799,7 +7523,6 @@
},
addPostQuotingYou: function(post) {
var quotelink, _i, _len, _ref;
-
if (!QR.db) {
return;
}
@@ -7820,7 +7543,6 @@
},
readSinglePost: function(post) {
var i;
-
if ((i = Unread.posts.indexOf(post)) === -1) {
return;
}
@@ -7836,7 +7558,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) {
@@ -7847,7 +7568,6 @@
},
read: $.debounce(50, function(e) {
var ID, bottom, height, i, post, posts, read;
-
if (d.hidden || !Unread.posts.length) {
return;
}
@@ -7881,7 +7601,6 @@
}),
setLine: function(force) {
var post, root;
-
if (!(d.hidden || force === true)) {
return;
}
@@ -7896,7 +7615,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);
@@ -7915,7 +7633,6 @@
file: {},
init: function() {
var archive, arr, boardID, data, id, name, type, _i, _len, _ref, _ref1, _ref2, _ref3;
-
_ref = Conf['selectedArchives'];
for (boardID in _ref) {
data = _ref[boardID];
@@ -8042,7 +7759,6 @@
},
to: function(dest, data) {
var archive;
-
archive = (dest === 'search' ? Redirect.thread : Redirect[dest])[data.boardID];
if (!archive) {
return '';
@@ -8051,7 +7767,6 @@
},
protocol: function(archive) {
var protocol;
-
protocol = location.protocol;
if (!archive[protocol.slice(0, -1)]) {
protocol = protocol === 'https:' ? 'http:' : 'https:';
@@ -8060,7 +7775,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') {
@@ -8073,7 +7787,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)) {
@@ -8083,13 +7796,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);
@@ -8108,7 +7819,6 @@
},
setup: function() {
var btn, entry, psa;
-
$.off(d, '4chanXInitFinished', PSAHiding.setup);
if (!(psa = $.id('globalMessage'))) {
$.rmClass(doc, 'hide-announcement');
@@ -8137,7 +7847,6 @@
$.on(btn, 'click', PSAHiding.toggle);
$.get('hiddenPSA', 0, function(_arg) {
var hiddenPSA;
-
hiddenPSA = _arg.hiddenPSA;
PSAHiding.sync(hiddenPSA);
$.before(psa, btn);
@@ -8147,7 +7856,6 @@
},
toggle: function(e) {
var UTC;
-
if ($.hasClass(this, 'hide-announcement')) {
UTC = +$.id('globalMessage').dataset.utc;
$.set('hiddenPSA', UTC);
@@ -8159,7 +7867,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') {
@@ -8171,7 +7878,6 @@
CatalogLinks = {
init: function() {
var el, input;
-
if (!Conf['Catalog Links']) {
return;
}
@@ -8195,14 +7901,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++) {
@@ -8236,7 +7940,6 @@
},
node: function(post) {
var str, uid;
-
if (!(uid = $('.hand', this.nodes.uniqueID))) {
return;
}
@@ -8248,7 +7951,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;
@@ -8257,13 +7959,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;
@@ -8302,7 +8002,6 @@
Emoji = {
init: function() {
var css, icon, name, pos, _ref;
-
if (!Conf['Emoji']) {
return;
}
@@ -8372,7 +8071,6 @@
},
node: function() {
var a;
-
if (a = $('.abbr > a:not([onclick])', this.nodes.comment)) {
return $.on(a, 'click', ExpandComment.cb);
}
@@ -8380,14 +8078,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;
@@ -8403,7 +8099,6 @@
},
contract: function(post) {
var a;
-
if (!post.nodes.shortComment) {
return;
}
@@ -8414,7 +8109,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 + ")";
@@ -8471,7 +8165,6 @@
},
node: function() {
var a, span;
-
if (!(span = $('.summary', this.OP.nodes.root.parentNode))) {
return;
}
@@ -8485,13 +8178,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) {
@@ -8560,7 +8251,6 @@
},
parse: function(req, thread, a) {
var link, node, nodes, post, posts, replies, reply, spoilerRange, status, _i, _len;
-
if (a.textContent[0] === '+') {
return;
}
@@ -8618,7 +8308,6 @@
},
createFunc: function(format) {
var code;
-
code = format.replace(/%(.)/g, function(s, c) {
if (c in FileInfo.formatters) {
return "' + FileInfo.formatters." + c + ".call(post) + '";
@@ -8630,7 +8319,6 @@
},
convertUnit: function(size, unit) {
var i;
-
if (unit === 'B') {
return "" + (size.toFixed()) + " Bytes";
}
@@ -8661,7 +8349,6 @@
},
n: function() {
var fullname, shortname;
-
fullname = this.file.name;
shortname = Build.shortFilename(this.file.name, this.isReply);
if (fullname === shortname) {
@@ -8705,7 +8392,6 @@
Fourchan = {
init: function() {
var board;
-
if (g.VIEW === 'catalog') {
return;
}
@@ -8727,7 +8413,6 @@
},
code: function() {
var pre, _i, _len, _ref;
-
if (this.isClone) {
return;
}
@@ -8757,13 +8442,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]');
@@ -8776,7 +8459,6 @@
},
keydown: function(e) {
var form, key, notification, notifications, op, target, thread, threadRoot, _i, _len;
-
if (!(key = Keybinds.keyCode(e))) {
return;
}
@@ -8951,7 +8633,6 @@
},
keyCode: function(e) {
var kc, key;
-
key = (function() {
switch (kc = e.keyCode) {
case 8:
@@ -9007,7 +8688,6 @@
},
tags: function(tag, ta) {
var range, selEnd, selStart, value;
-
value = ta.value;
selStart = ta.selectionStart;
selEnd = ta.selectionEnd;
@@ -9018,13 +8698,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 {
@@ -9034,7 +8712,6 @@
},
open: function(thread, tab) {
var url;
-
if (g.VIEW !== 'index') {
return;
}
@@ -9047,7 +8724,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');
@@ -9107,7 +8783,6 @@
Nav = {
init: function() {
var append, next, prev, span;
-
switch (g.VIEW) {
case 'index':
if (!Conf['Index Navigation']) {
@@ -9158,7 +8833,6 @@
},
getThread: function(full) {
var headRect, i, rect, thread, threads, topMargin, _i, _len;
-
if (Conf['Bottom header'] || !Conf['Fixed Header']) {
topMargin = 0;
} else {
@@ -9184,7 +8858,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 && Math.ceil(top) < 0) || (delta === +1 && top > 1))) {
@@ -9210,7 +8883,6 @@
},
node: function() {
var dateEl;
-
if (this.isClone) {
return;
}
@@ -9220,7 +8892,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) {
@@ -9231,7 +8902,6 @@
stale: [],
flush: function() {
var now, update, _i, _len, _ref;
-
if (d.hidden) {
return;
}
@@ -9247,16 +8917,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);
@@ -9297,7 +8964,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];
@@ -9317,7 +8983,6 @@
},
ready: function() {
var field;
-
field = $.id('recaptcha_response_field');
$.on(field, 'keydown', function(e) {
if (e.keyCode === 8 && !field.value) {
@@ -9326,7 +8991,6 @@
});
return $.on($('form'), 'submit', function(e) {
var response;
-
e.preventDefault();
response = field.value.trim();
if (!/\s/.test(response)) {
@@ -9340,7 +9004,6 @@
Sauce = {
init: function() {
var err, link, links, _i, _len, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Sauce']) {
return;
}
@@ -9372,7 +9035,6 @@
},
createSauceLink: function(link) {
var m, text;
-
link = link.replace(/%(T?URL|MD5|board)/ig, function(parameter) {
switch (parameter) {
case '%TURL':
@@ -9393,7 +9055,6 @@
},
node: function() {
var link, nodes, _i, _len, _ref;
-
if (this.isClone || !this.file) {
return;
}
@@ -9426,7 +9087,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) + '";
@@ -9511,7 +9171,6 @@
Settings = {
init: function() {
var link, settings;
-
link = $.el('a', {
className: 'settings-link',
textContent: 'Settings',
@@ -9521,7 +9180,6 @@
Header.addShortcut(link);
$.get('previousversion', null, function(item) {
var changelog, el, previous;
-
if (previous = item['previousversion']) {
if (previous === g.VERSION) {
return;
@@ -9559,7 +9217,6 @@
},
open: function(openSection) {
var dialog, html, link, links, overlay, section, sectionToOpen, _i, _len, _ref;
-
$.off(d, '4chanXInitFinished', Settings.open);
if (Settings.dialog) {
return;
@@ -9612,7 +9269,6 @@
sections: [],
addSection: function(title, open) {
var hyphenatedTitle, _ref;
-
if (typeof title !== 'string') {
_ref = title.detail, title = _ref.title, open = _ref.open;
}
@@ -9625,7 +9281,6 @@
},
openSection: function() {
var section, selected;
-
if (selected = $('.tab-selected', Settings.dialog)) {
$.rmClass(selected, 'tab-selected');
}
@@ -9639,7 +9294,6 @@
},
main: function(section) {
var arr, button, description, div, fs, hiddenNum, input, inputs, items, key, obj, _ref;
-
items = {};
inputs = {};
_ref = Config.main;
@@ -9664,7 +9318,6 @@
}
$.get(items, function(items) {
var val;
-
for (key in items) {
val = items[key];
inputs[key].checked = val;
@@ -9679,7 +9332,6 @@
boards: {}
}, function(item) {
var ID, board, thread, _ref1;
-
_ref1 = item.hiddenThreads.boards;
for (ID in _ref1) {
board = _ref1[ID];
@@ -9694,7 +9346,6 @@
boards: {}
}, function(item) {
var ID, board, post, thread, _ref1;
-
_ref1 = item.hiddenPosts.boards;
for (ID in _ref1) {
board = _ref1[ID];
@@ -9714,7 +9365,6 @@
boards: {}
}, function(item) {
var boardID;
-
for (boardID in item.hiddenThreads.boards) {
localStorage.removeItem("4chan-hide-t-" + boardID);
}
@@ -9725,7 +9375,6 @@
},
"export": function(now, data) {
var a, db, _i, _len;
-
if (typeof now !== 'number') {
now = Date.now();
data = {
@@ -9760,7 +9409,6 @@
},
onImport: function() {
var file, output, reader;
-
if (!(file = this.files[0])) {
return;
}
@@ -9772,7 +9420,6 @@
reader = new FileReader();
reader.onload = function(e) {
var data, err;
-
try {
data = JSON.parse(e.target.result);
Settings.loadSettings(data);
@@ -9789,7 +9436,6 @@
},
loadSettings: function(data) {
var key, val, version, _ref;
-
version = data.version.split('.');
if (version[0] === '2') {
data = Settings.convertSettings(data, {
@@ -9879,7 +9525,6 @@
},
convertSettings: function(data, map) {
var newKey, prevKey;
-
for (prevKey in map) {
newKey = map[prevKey];
if (newKey) {
@@ -9891,7 +9536,6 @@
},
filter: function(section) {
var select;
-
section.innerHTML = "";
select = $('select', section);
$.on(select, 'change', Settings.selectFilter);
@@ -9899,7 +9543,6 @@
},
selectFilter: function() {
var div, name, ta;
-
div = this.nextElementSibling;
if ((name = this.value) !== 'guide') {
$.rmAll(div);
@@ -9919,7 +9562,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) {
@@ -9929,7 +9571,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 = {};
@@ -9949,7 +9590,6 @@
$.on(ta, 'change', $.cb.value);
$.get(items, function(items) {
var key, val;
-
for (key in items) {
val = items[key];
if (['emojiPos'].contains(key)) {
@@ -10020,7 +9660,6 @@
});
$.get('selectedArchives', Conf['selectedArchives'], function(_arg) {
var option, selectedArchives, type;
-
selectedArchives = _arg.selectedArchives;
for (boardID in selectedArchives) {
data = selectedArchives[boardID];
@@ -10035,7 +9674,6 @@
},
addArchiveCell: function(boardID, data, type) {
var archive, i, length, options, select, td;
-
length = data[type].length;
td = $.el('td', {
className: 'archive-cell'
@@ -10065,10 +9703,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);
@@ -10079,7 +9715,6 @@
},
time: function() {
var funk;
-
funk = Time.createFunc(this.value);
return this.nextElementSibling.textContent = funk(Time, new Date());
},
@@ -10088,7 +9723,6 @@
},
fileInfo: function() {
var data, funk;
-
data = {
isReply: true,
file: {
@@ -10127,7 +9761,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 = {};
@@ -10148,7 +9781,6 @@
}
return $.get(items, function(items) {
var val;
-
for (key in items) {
val = items[key];
inputs[key].value = val;
@@ -10157,7 +9789,6 @@
},
keybind: function(e) {
var key;
-
if (e.keyCode === 9) {
return;
}
@@ -10174,10 +9805,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') {
@@ -10201,13 +9830,11 @@
$.on(d, '4chanMainInit', Main.initStyle);
return $.asap((function() {
var _ref;
-
return d.head && $('link[rel="shortcut icon"]', d.head) || ((_ref = d.readyState) === 'interactive' || _ref === 'complete');
}), Main.initStyle);
},
initFeatures: function(items) {
var init, pathname, _ref;
-
Conf = items;
pathname = location.pathname.split('/');
g.BOARD = new Board(pathname[1]);
@@ -10236,7 +9863,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('/');
@@ -10253,7 +9879,6 @@
}
init = function(features) {
var err, module, name;
-
for (name in features) {
module = features[name];
try {
@@ -10329,7 +9954,6 @@
},
initStyle: function() {
var mainStyleSheet, observer, setStyle, style, styleSheets, _ref;
-
$.off(d, '4chanMainInit', Main.initStyle);
if (!Main.isThisPageLegit() || $.hasClass(doc, 'fourchan-x')) {
return;
@@ -10350,7 +9974,6 @@
styleSheets = $$('link[rel="alternate stylesheet"]', d.head);
setStyle = function() {
var styleSheet, _i, _len;
-
$.rmClass(doc, style);
for (_i = 0, _len = styleSheets.length; _i < _len; _i++) {
styleSheet = styleSheets[_i];
@@ -10377,7 +10000,6 @@
},
initReady: function() {
var board, boardChild, err, errors, href, passLink, posts, styleSelector, thread, threadChild, 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', {
@@ -10454,7 +10076,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++) {
@@ -10482,11 +10103,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);
@@ -10505,7 +10124,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];
@@ -10539,7 +10157,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);
@@ -10559,7 +10176,6 @@
},
message: function(e) {
var el, version;
-
version = e.data.version;
if (version && version !== g.VERSION) {
el = $.el('span', {
@@ -10570,14 +10186,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;
@@ -10593,7 +10207,6 @@
},
handleErrors: function(errors) {
var div, error, logs, _i, _len;
-
if (!(errors instanceof Array)) {
error = errors;
} else if (errors.length === 1) {
@@ -10608,7 +10221,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', {
@@ -10622,7 +10234,6 @@
},
parseError: function(data) {
var error, message;
-
Main.logError(data);
message = $.el('div', {
textContent: data.message
@@ -10639,7 +10250,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');
}
diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js
index 1580b7d54..e337b38be 100644
--- a/builds/4chan-X.user.js
+++ b/builds/4chan-X.user.js
@@ -19,7 +19,7 @@
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAACVBMVEUAAGcAAABmzDNZt9VtAAAAAXRSTlMAQObYZgAAAHFJREFUKFOt0LENACEIBdBv4Qju4wgWanEj3D6OcIVMKaitYHEU/jwTCQj8W75kiVCSBvdQ5/AvfVHBin11BgdRq3ysBgfwBDRrj3MCIA+oAQaku/Q1cNctrAmyDl577tOThYt/Y1RBM4DgOHzM0HFTAyLukH/cmRnqAAAAAElFTkSuQmCC
// ==/UserScript==
/*
-* 4chan X - Version 1.2.25 - 2013-08-04
+* 4chan X - Version 1.2.25 - 2013-08-11
*
* Licensed under the MIT license.
* https://github.com/seaweedchan/4chan-x/blob/master/LICENSE
@@ -337,7 +337,6 @@
Array.prototype.add = function(object, position) {
var keep;
-
keep = this.slice(position);
this.length = position;
this.push(object);
@@ -350,7 +349,6 @@
Array.prototype.indexOf = function(object) {
var i;
-
i = this.length;
while (i--) {
if (this[i] === object) {
@@ -362,7 +360,6 @@
Array.prototype.pushArrays = function() {
var arg, args, _i, _len;
-
args = arguments;
for (_i = 0, _len = args.length; _i < _len; _i++) {
arg = args[_i];
@@ -373,7 +370,6 @@
Array.prototype.remove = function(object) {
var index;
-
if ((index = this.indexOf(object)) > -1) {
return this.splice(index, 1);
} else {
@@ -390,7 +386,6 @@
$.extend = function(object, properties) {
var key, val;
-
for (key in properties) {
val = properties[key];
if (!properties.hasOwnProperty(key)) {
@@ -408,7 +403,6 @@
$.ready = function(fc) {
var cb, _ref;
-
if ((_ref = d.readyState) === 'interactive' || _ref === 'complete') {
$.queueTask(fc);
return;
@@ -422,7 +416,6 @@
$.formData = function(form) {
var fd, key, val;
-
if (form instanceof HTMLFormElement) {
return new FormData(form);
}
@@ -443,7 +436,6 @@
$.ajax = function(url, callbacks, opts) {
var cred, err, form, headers, key, r, sync, type, upCallbacks, val;
-
if (opts == null) {
opts = {};
}
@@ -469,11 +461,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);
@@ -489,7 +479,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];
@@ -531,7 +520,6 @@
$.addStyle = function(css, id) {
var style;
-
style = $.el('style', {
id: id,
textContent: css
@@ -578,7 +566,6 @@
} else {
return function(el) {
var _ref;
-
return (_ref = el.parentNode) != null ? _ref.removeChild(el) : void 0;
};
}
@@ -586,7 +573,6 @@
$.rmAll = function(root) {
var node;
-
while (node = root.firstChild) {
root.removeChild(node);
}
@@ -602,7 +588,6 @@
$.nodes = function(nodes) {
var frag, node, _i, _len;
-
if (!(nodes instanceof Array)) {
return nodes;
}
@@ -636,7 +621,6 @@
$.el = function(tag, properties) {
var el;
-
el = d.createElement(tag);
if (properties) {
$.extend(el, properties);
@@ -646,7 +630,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];
@@ -656,7 +639,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];
@@ -682,7 +664,6 @@
$.debounce = function(wait, fn) {
var args, exec, lastCall, that, timeout;
-
lastCall = 0;
timeout = null;
that = null;
@@ -704,11 +685,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);
@@ -731,7 +710,6 @@
$.globalEval = function(code) {
var script;
-
script = $.el('script', {
textContent: code
});
@@ -741,7 +719,6 @@
$.bytesToString = function(size) {
var unit;
-
unit = 0;
while (size >= 1024) {
size /= 1024;
@@ -760,7 +737,6 @@
$.sync = (function() {
window.addEventListener('storage', function(e) {
var cb;
-
if (cb = $.syncing[e.key]) {
return cb(JSON.parse(e.newValue));
}
@@ -772,7 +748,6 @@
$.item = function(key, val) {
var item;
-
item = {};
item[key] = val;
return item;
@@ -780,7 +755,6 @@
$["delete"] = function(keys) {
var key, _i, _len;
-
if (!(keys instanceof Array)) {
keys = [keys];
}
@@ -794,7 +768,6 @@
$.get = function(key, val, cb) {
var items;
-
if (typeof cb === 'function') {
items = $.item(key, val);
} else {
@@ -813,7 +786,6 @@
$.set = (function() {
var set;
-
set = function(key, val) {
key = g.NAMESPACE + key;
val = JSON.stringify(val);
@@ -824,7 +796,6 @@
};
return function(keys, val) {
var key;
-
if (typeof keys === 'string') {
set(keys, val);
return;
@@ -892,7 +863,6 @@
function Post(root, thread, board, that) {
var alt, anchor, capcode, date, email, file, fileInfo, flag, info, name, post, size, subject, thumb, tripcode, uniqueID, unit;
-
this.thread = thread;
this.board = board;
if (that == null) {
@@ -991,7 +961,6 @@
Post.prototype.parseComment = function() {
var bq, data, 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++) {
@@ -1009,7 +978,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++) {
@@ -1039,7 +1007,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) {
@@ -1088,7 +1055,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');
@@ -1122,7 +1088,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++) {
@@ -1140,7 +1105,6 @@
function Clone(origin, context) {
var file, index, 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'];
@@ -1229,7 +1193,6 @@
function DataBoard(key, sync) {
var init,
_this = this;
-
this.key = key;
this.data = Conf[key];
$.sync(key, this.onSync.bind(this));
@@ -1246,7 +1209,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];
@@ -1267,7 +1229,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) {
@@ -1283,7 +1244,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;
@@ -1297,7 +1257,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) {
@@ -1321,7 +1280,6 @@
DataBoard.prototype.clean = function() {
var boardID, now, val, _ref;
-
_ref = this.data.boards;
for (boardID in _ref) {
val = _ref[boardID];
@@ -1341,10 +1299,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) {
@@ -1455,7 +1411,6 @@
init: function() {
var barFixedToggler, barPositionToggler, customNavToggler, editCustomNav, footerToggler, headerToggler, linkJustifyToggler,
_this = this;
-
this.menu = new UI.Menu('header');
this.menuButton = $.el('span', {
className: 'menu-button',
@@ -1539,7 +1494,6 @@
}
$.asap((function() {
var _ref;
-
return $.id('boardNavMobile') || ((_ref = d.readyState) === 'interactive' || _ref === 'complete');
}), Header.setBoardList);
$.prepend(d.body, _this.bar);
@@ -1548,7 +1502,6 @@
});
return $.ready(function() {
var a, cs;
-
_this.footer = $.id('boardNavDesktopFoot');
if (a = $("a[href*='/" + g.BOARD + "/']", $.id('boardNavDesktopFoot'))) {
a.className = 'current';
@@ -1582,7 +1535,6 @@
}),
setBoardList: function() {
var a, boardList, btn, fourchannav, fullBoardList;
-
fourchannav = $.id('boardNavDesktop');
if (a = $("a[href*='/" + g.BOARD + "/']", fourchannav)) {
a.className = 'current';
@@ -1604,7 +1556,6 @@
},
generateBoardList: function(text) {
var as, list, nodes;
-
list = $('#custom-board-list', Header.bar);
$.rmAll(list);
if (!text) {
@@ -1613,7 +1564,6 @@
as = $$('#full-board-list a', 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);
}
@@ -1660,7 +1610,6 @@
},
toggleBoardList: function() {
var bar, custom, full, showBoardList;
-
bar = Header.bar;
custom = $('#custom-board-list', bar);
full = $('#full-board-list', bar);
@@ -1696,7 +1645,6 @@
},
toggleLinkJustify: function() {
var centered;
-
$.event('CloseMenu');
centered = this.nodeName === 'INPUT' ? this.checked : void 0;
Header.setLinkJustify(centered);
@@ -1726,7 +1674,6 @@
},
toggleBarVisibility: function(e) {
var hide, message;
-
if (e.type === 'mousedown' && e.button !== 0) {
return;
}
@@ -1743,7 +1690,6 @@
},
toggleFooterVisibility: function() {
var hide, message;
-
$.event('CloseMenu');
hide = this.nodeName === 'INPUT' ? this.checked : !!Header.footer.hidden;
Header.setFooterVisibility(hide);
@@ -1753,7 +1699,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);
@@ -1766,14 +1711,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;
}
@@ -1784,7 +1727,6 @@
},
scrollToPost: function(post) {
var headRect, top;
-
top = post.getBoundingClientRect().top;
if (Conf['Fixed Header'] && !Conf['Bottom Header']) {
headRect = Header.bar.getBoundingClientRect();
@@ -1794,7 +1736,6 @@
},
addShortcut: function(el) {
var shortcut;
-
shortcut = $.el('span', {
className: 'shortcut fourchanx-link'
});
@@ -1806,7 +1747,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) {
@@ -1819,7 +1759,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);
@@ -1829,7 +1768,6 @@
},
postFromObject: function(data, boardID) {
var o;
-
o = {
postID: data.no,
threadID: data.resto || data.no,
@@ -1873,7 +1811,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/';
@@ -1969,7 +1906,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) {
@@ -1982,7 +1918,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);
@@ -2002,7 +1937,6 @@
},
postDataFromLink: function(link) {
var boardID, path, postID, threadID;
-
if (link.hostname === 'boards.4chan.org') {
path = link.pathname.split('/');
boardID = path[1];
@@ -2021,7 +1955,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) {
@@ -2050,14 +1983,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;
@@ -2078,7 +2009,6 @@
},
insert: function(post, root, context) {
var clone, nodes;
-
if (!root.parentNode) {
return;
}
@@ -2092,7 +2022,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;
@@ -2142,7 +2071,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;
@@ -2236,10 +2164,8 @@
UI = (function() {
var Menu, dialog, drag, dragend, dragstart, hover, hoverend, hoverstart, touchend, touchmove;
-
dialog = function(id, position, html) {
var child, el, move, _i, _len, _ref;
-
el = $.el('div', {
className: 'dialog',
innerHTML: html,
@@ -2279,7 +2205,6 @@
Menu.prototype.makeMenu = function() {
var menu;
-
menu = $.el('div', {
className: 'dialog',
id: 'menu',
@@ -2294,7 +2219,6 @@
Menu.prototype.toggle = function(e, button, data) {
var previousButton;
-
e.preventDefault();
e.stopPropagation();
if (currentMenu) {
@@ -2312,7 +2236,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;
@@ -2351,7 +2274,6 @@
Menu.prototype.insertEntry = function(entry, parent, data) {
var subEntry, submenu, _i, _len, _ref;
-
if (typeof entry.open === 'function') {
if (!entry.open(data)) {
return;
@@ -2385,7 +2307,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);
@@ -2395,7 +2316,6 @@
Menu.prototype.keybinds = function(e) {
var entry, next, nextPrev, subEntry, submenu;
-
entry = $('.focused', currentMenu);
while (subEntry = $('.focused', entry)) {
entry = subEntry;
@@ -2441,7 +2361,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');
}
@@ -2469,7 +2388,6 @@
Menu.prototype.addEntry = function(e) {
var entry;
-
entry = e.detail;
if (entry.type !== this.type) {
return;
@@ -2480,7 +2398,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) {
@@ -2504,7 +2421,6 @@
})();
dragstart = function(e) {
var el, isTouching, o, rect, screenHeight, screenWidth, _ref;
-
if (e.type === 'mousedown' && e.button !== 0) {
return;
}
@@ -2543,7 +2459,6 @@
};
touchmove = function(e) {
var touch, _i, _len, _ref;
-
_ref = e.changedTouches;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
touch = _ref[_i];
@@ -2555,7 +2470,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 + '%';
@@ -2571,7 +2485,6 @@
};
touchend = function(e) {
var touch, _i, _len, _ref;
-
_ref = e.changedTouches;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
touch = _ref[_i];
@@ -2593,7 +2506,6 @@
};
hoverstart = function(_arg) {
var asapTest, cb, el, endEvents, latestEvent, o, root;
-
root = _arg.root, el = _arg.el, latestEvent = _arg.latestEvent, endEvents = _arg.endEvents, asapTest = _arg.asapTest, cb = _arg.cb;
o = {
root: root,
@@ -2622,7 +2534,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;
@@ -2665,7 +2576,6 @@
},
node: function() {
var email, name, tripcode, _ref;
-
if (this.info.capcode || this.isClone) {
return;
}
@@ -2692,7 +2602,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;
}
@@ -2729,7 +2638,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;
@@ -2760,7 +2668,6 @@
},
createFilter: function(regexp, op, stub, hl, top) {
var settings, test;
-
test = typeof regexp === 'string' ? function(value) {
return regexp === value;
} : function(value) {
@@ -2784,7 +2691,6 @@
},
node: function() {
var filter, firstThread, key, result, thisThread, value, _i, _len, _ref;
-
if (this.isClone) {
return;
}
@@ -2896,7 +2802,6 @@
menu: {
init: function() {
var div, entry, type, _i, _len, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Filter']) {
return;
}
@@ -2922,7 +2827,6 @@
},
createSubEntry: function(text, type) {
var el;
-
el = $.el('a', {
href: 'javascript:;',
textContent: text
@@ -2933,7 +2837,6 @@
el: el,
open: function(post) {
var value;
-
value = Filter[type](post);
return value !== false;
}
@@ -2941,7 +2844,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) {
@@ -2956,7 +2858,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);
@@ -2990,7 +2891,6 @@
},
node: function() {
var data;
-
if (!this.isReply || this.isClone) {
return;
}
@@ -3014,7 +2914,6 @@
menu: {
init: function() {
var apply, div, hideStubLink, makeStub, replies, thisPost;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Reply Hiding Link']) {
return;
}
@@ -3085,7 +2984,6 @@
order: 20,
open: function(post) {
var data;
-
if (!post.isReply || post.isClone || !post.isHidden) {
return false;
}
@@ -3117,7 +3015,6 @@
order: 15,
open: function(post) {
var data;
-
if (!post.isReply || post.isClone || !post.isHidden) {
return false;
}
@@ -3134,7 +3031,6 @@
},
hide: function() {
var makeStub, parent, post, replies, thisPost;
-
parent = this.parentNode;
thisPost = $('input[name=thisPost]', parent).checked;
replies = $('input[name=replies]', parent).checked;
@@ -3153,7 +3049,6 @@
},
show: function() {
var data, parent, post, replies, thisPost;
-
parent = this.parentNode;
thisPost = $('input[name=thisPost]', parent).checked;
replies = $('input[name=replies]', parent).checked;
@@ -3177,7 +3072,6 @@
},
hideStub: function() {
var post;
-
post = PostHiding.menu.post;
post.nodes.root.hidden = true;
$.event('CloseMenu');
@@ -3185,7 +3079,6 @@
},
makeButton: function(post, type) {
var a;
-
a = $.el('a', {
className: "" + type + "-reply-button",
innerHTML: " " + (type === 'hide' ? '-' : '+') + " ",
@@ -3196,7 +3089,6 @@
},
saveHiddenState: function(post, isHiding, thisPost, makeStub, hideRecursively) {
var data;
-
data = {
boardID: post.board.ID,
threadID: post.thread.ID,
@@ -3215,7 +3107,6 @@
},
toggle: function() {
var post;
-
post = Get.postFromNode(this);
if (post.isHidden) {
PostHiding.show(post);
@@ -3226,7 +3117,6 @@
},
hide: function(post, makeStub, hideRecursively) {
var a, postInfo, quotelink, _i, _len, _ref;
-
if (makeStub == null) {
makeStub = Conf['Stubs'];
}
@@ -3264,7 +3154,6 @@
},
show: function(post, showRecursively) {
var quotelink, _i, _len, _ref;
-
if (showRecursively == null) {
showRecursively = Conf['Recursive Hiding'];
}
@@ -3300,7 +3189,6 @@
},
node: function() {
var i, obj, quote, recursive, _i, _j, _len, _len1, _ref, _ref1;
-
if (this.isClone) {
return;
}
@@ -3318,7 +3206,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: [],
@@ -3329,7 +3216,6 @@
},
rm: function(recursive, post) {
var i, obj, rec, _i, _len, _ref;
-
if (!(obj = Recursive.recursives[post.fullID])) {
return;
}
@@ -3344,7 +3230,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;
@@ -3371,7 +3256,6 @@
},
node: function() {
var data;
-
if (data = ThreadHiding.db.get({
boardID: this.board.ID,
threadID: this.ID
@@ -3385,7 +3269,6 @@
},
syncCatalog: function() {
var hiddenThreads, hiddenThreadsOnCatalog, threadID;
-
hiddenThreads = ThreadHiding.db.get({
boardID: g.BOARD.ID,
defaultValue: {}
@@ -3412,7 +3295,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;
}
@@ -3438,7 +3320,6 @@
menu: {
init: function() {
var apply, div, hideStubLink, makeStub;
-
if (g.VIEW !== 'index' || !Conf['Menu'] || !Conf['Thread Hiding Link']) {
return;
}
@@ -3465,7 +3346,6 @@
order: 20,
open: function(_arg) {
var isReply, thread;
-
thread = _arg.thread, isReply = _arg.isReply;
if (isReply || thread.isHidden) {
return false;
@@ -3487,7 +3367,6 @@
order: 15,
open: function(_arg) {
var isReply, thread;
-
thread = _arg.thread, isReply = _arg.isReply;
if (isReply || !thread.isHidden) {
return false;
@@ -3498,7 +3377,6 @@
},
hide: function() {
var makeStub, thread;
-
makeStub = $('input', this.parentNode).checked;
thread = ThreadHiding.menu.thread;
ThreadHiding.hide(thread, makeStub);
@@ -3507,7 +3385,6 @@
},
hideStub: function() {
var thread;
-
thread = ThreadHiding.menu.thread;
ThreadHiding.hide(thread, false);
$.event('CloseMenu');
@@ -3515,7 +3392,6 @@
},
makeButton: function(thread, type) {
var a;
-
a = $.el('a', {
className: "" + type + "-thread-button",
innerHTML: " " + (type === 'hide' ? '-' : '+') + " ",
@@ -3527,7 +3403,6 @@
},
saveHiddenState: function(thread, makeStub) {
var hiddenThreadsOnCatalog;
-
hiddenThreadsOnCatalog = JSON.parse(localStorage.getItem("4chan-hide-t-" + g.BOARD)) || {};
if (thread.isHidden) {
ThreadHiding.db.set({
@@ -3560,7 +3435,6 @@
},
hide: function(thread, makeStub) {
var OP, a, numReplies, opInfo, span, threadRoot;
-
if (makeStub == null) {
makeStub = Conf['Stubs'];
}
@@ -3591,7 +3465,6 @@
},
show: function(thread) {
var threadRoot;
-
if (thread.stub) {
$.rm(thread.stub);
delete thread.stub;
@@ -3604,7 +3477,6 @@
QuoteBacklink = {
init: function() {
var format;
-
if (g.VIEW === 'catalog' || !Conf['Quote Backlinks']) {
return;
}
@@ -3622,7 +3494,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;
}
@@ -3660,7 +3531,6 @@
},
secondNode: function() {
var container;
-
if (this.isClone && (this.origin.isReply || Conf['OP Backlinks'])) {
this.nodes.backlinkContainer = $('.container', this.nodes.info);
return;
@@ -3674,7 +3544,6 @@
},
getContainer: function(id) {
var _base;
-
return (_base = this.containers)[id] || (_base[id] = $.el('span', {
className: 'container'
}));
@@ -3697,7 +3566,6 @@
},
node: function() {
var board, boardID, quotelink, quotelinks, quotes, thread, threadID, _i, _len, _ref, _ref1;
-
if (this.isClone && this.thread === this.context.thread) {
return;
}
@@ -3733,7 +3601,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];
@@ -3746,7 +3613,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];
@@ -3770,7 +3636,6 @@
},
toggle: function(e) {
var boardID, context, postID, threadID, _ref;
-
if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || e.button !== 0) {
return;
}
@@ -3796,7 +3661,6 @@
},
add: function(quotelink, boardID, threadID, postID, context) {
var inline, isBacklink, post, qroot, root;
-
isBacklink = $.hasClass(quotelink, 'backlink');
inline = $.el('div', {
id: "i" + postID,
@@ -3821,7 +3685,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);
@@ -3863,7 +3726,6 @@
},
node: function() {
var boardID, op, postID, quotelink, quotelinks, quotes, _i, _j, _len, _len1, _ref;
-
if (this.isClone && this.thread === this.context.thread) {
return;
}
@@ -3906,7 +3768,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];
@@ -3915,7 +3776,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;
}
@@ -3959,7 +3819,6 @@
},
mouseout: function() {
var clone, post, root, _i, _len, _ref;
-
if (!(root = this.el.firstElementChild)) {
return;
}
@@ -3989,7 +3848,6 @@
},
node: function() {
var boardID, postID, quotelink, _i, _len, _ref, _ref1, _ref2;
-
if (this.isClone) {
return;
}
@@ -4012,7 +3870,6 @@
QuoteThreading = {
init: function() {
var input;
-
if (!(Conf['Quote Threading'] && g.VIEW === 'thread')) {
return;
}
@@ -4035,7 +3892,6 @@
},
setup: function() {
var ID, post, posts;
-
$.off(d, '4chanXInitFinished', QuoteThreading.setup);
posts = g.posts;
for (ID in posts) {
@@ -4048,7 +3904,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;
}
@@ -4078,7 +3933,6 @@
},
nodeinsert: function() {
var bottom, height, posts, qpost, qroot, threadContainer, top, _ref;
-
posts = g.posts;
qpost = posts[this.threaded];
delete this.threaded;
@@ -4108,14 +3962,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];
@@ -4130,7 +3982,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;
@@ -4146,7 +3997,6 @@
},
kb: function() {
var control;
-
control = $.id('threadingControl');
return control.click();
}
@@ -4173,7 +4023,6 @@
},
node: function() {
var quotelink, _i, _len, _ref;
-
if (this.isClone) {
return;
}
@@ -4209,7 +4058,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];
@@ -4224,7 +4072,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;
@@ -4304,7 +4151,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++) {
@@ -4389,7 +4235,6 @@
},
toggle: function() {
var el, embed, style, type, url;
-
embed = this.previousElementSibling;
if (this.className.contains("embedded")) {
el = $.el('a', {
@@ -4483,7 +4328,6 @@
style: 'height: auto; width: 500px; display: inline-block;',
el: function() {
var div;
-
div = $.el('div', {
className: "soundcloud",
name: "soundcloud"
@@ -4509,7 +4353,6 @@
regExp: /.*(?:pastebin.com\/(?!u\/))([^#\&\?]*).*/,
el: function() {
var div;
-
return div = $.el('iframe', {
src: "http://pastebin.com/embed_iframe.php?i=" + this.name
});
@@ -4519,7 +4362,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"
});
@@ -4530,7 +4372,6 @@
},
text: function() {
var file, response;
-
response = JSON.parse(this.responseText).files;
for (file in response) {
if (response.hasOwnProperty(file)) {
@@ -4551,14 +4392,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:
@@ -4600,7 +4439,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];
@@ -4624,7 +4462,6 @@
QR = {
init: function() {
var sc;
-
if (!Conf['Quick Reply']) {
return;
}
@@ -4671,7 +4508,6 @@
},
initReady: function() {
var link;
-
QR.postingIsEnabled = !!$.id('postForm');
if (!QR.postingIsEnabled) {
return;
@@ -4691,13 +4527,11 @@
$.before($.id('postForm'), link);
$.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);
});
@@ -4726,7 +4560,6 @@
},
open: function() {
var err;
-
if (QR.nodes) {
QR.nodes.el.hidden = false;
QR.unhide();
@@ -4745,7 +4578,6 @@
},
close: function() {
var i, _i, _len, _ref;
-
if (QR.req) {
QR.abort();
return;
@@ -4792,7 +4624,6 @@
},
error: function(err) {
var el;
-
QR.open();
if (typeof err === 'string') {
el = $.tn(err);
@@ -4820,7 +4651,6 @@
notifications: [],
cleanNotifications: function() {
var notification, _i, _len, _ref;
-
_ref = QR.notifications;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
notification = _ref[_i];
@@ -4830,7 +4660,6 @@
},
status: function() {
var disabled, status, value;
-
if (!QR.nodes) {
return;
}
@@ -4851,7 +4680,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: [],
@@ -4871,7 +4699,6 @@
},
parseItem: function(item, types) {
var boards, match, type, val, _ref, _ref1;
-
if (item[0] === '#') {
return;
}
@@ -4900,7 +4727,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];
@@ -4914,7 +4740,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;
}
@@ -4923,7 +4748,6 @@
get: function(cb) {
return $.get('QR.persona', {}, function(_arg) {
var persona;
-
persona = _arg['QR.persona'];
return cb(persona);
});
@@ -4931,7 +4755,6 @@
set: function(post) {
return $.get('QR.persona', {}, function(_arg) {
var persona;
-
persona = _arg['QR.persona'];
persona = {
name: post.name,
@@ -4945,7 +4768,6 @@
cooldown: {
init: function() {
var board;
-
if (!Conf['Cooldown']) {
return;
}
@@ -4987,7 +4809,6 @@
},
sync: function(cooldowns) {
var id;
-
for (id in cooldowns) {
QR.cooldown.cooldowns[id] = cooldowns[id];
}
@@ -4995,7 +4816,6 @@
},
set: function(data) {
var cooldown, delay, hasFile, isReply, isSage, post, req, start, type, upSpd;
-
if (!Conf['Cooldown']) {
return;
}
@@ -5035,7 +4855,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;
@@ -5089,7 +4908,6 @@
},
quote: function(e) {
var OP, caretPos, com, index, post, range, s, sel, selectionRoot, text, thread, _ref;
-
if (e != null) {
e.preventDefault();
}
@@ -5129,7 +4947,6 @@
},
characterCount: function() {
var count, counter;
-
counter = QR.nodes.charCount;
count = QR.nodes.com.textLength;
counter.textContent = count;
@@ -5138,7 +4955,6 @@
},
drag: function(e) {
var toggle;
-
toggle = e.type === 'dragstart' ? $.off : $.on;
toggle(d, 'dragover', QR.dragOver);
return toggle(d, 'drop', QR.dropFile);
@@ -5158,7 +4974,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++) {
@@ -5186,7 +5001,6 @@
},
fileInput: function(files) {
var file, length, max, post, _i, _len;
-
if (this instanceof Element) {
files = __slice.call(this.files);
QR.nodes.fileInput.value = null;
@@ -5235,7 +5049,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,
@@ -5295,7 +5108,6 @@
_Class.prototype.rm = function() {
var index;
-
$.rm(this.nodes.el);
index = QR.posts.indexOf(this);
if (QR.posts.length === 1) {
@@ -5313,7 +5125,6 @@
_Class.prototype.lock = function(lock) {
var name, _i, _len, _ref;
-
if (lock == null) {
lock = true;
}
@@ -5338,7 +5149,6 @@
_Class.prototype.select = function() {
var rectEl, rectList;
-
if (QR.selected) {
QR.selected.nodes.el.id = null;
QR.selected.forceSave();
@@ -5355,7 +5165,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];
@@ -5367,7 +5176,6 @@
_Class.prototype.save = function(input) {
var value, _ref;
-
if (input.type === 'checkbox') {
this.spoiler = input.checked;
return;
@@ -5386,7 +5194,6 @@
_Class.prototype.forceSave = function() {
var name, _i, _len, _ref;
-
if (this !== QR.selected) {
return;
}
@@ -5418,7 +5225,6 @@
_Class.prototype.setThumbnail = function(fileURL) {
var img, reader,
_this = this;
-
if (!window.URL) {
if (!fileURL) {
reader = new FileReader();
@@ -5434,7 +5240,6 @@
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;
@@ -5514,11 +5319,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;
@@ -5556,7 +5359,6 @@
_Class.prototype.drop = function() {
var el, index, newIndex, oldIndex, post;
-
el = $('.drag', this.parentNode);
$.rmClass(el, 'drag');
$.rmClass(this, 'over');
@@ -5591,7 +5393,6 @@
ready: function() {
var imgContainer, input, observer, setLifetime,
_this = this;
-
setLifetime = function(e) {
return _this.lifetime = e.detail;
};
@@ -5633,7 +5434,6 @@
});
$.get('captchas', [], function(_arg) {
var captchas;
-
captchas = _arg.captchas;
return _this.sync(captchas);
});
@@ -5650,7 +5450,6 @@
},
getOne: function() {
var captcha, challenge, response;
-
this.clear();
if (captcha = this.captchas.shift()) {
challenge = captcha.challenge, response = captcha.response;
@@ -5675,7 +5474,6 @@
},
save: function() {
var response;
-
if (!(response = this.nodes.input.value.trim())) {
return;
}
@@ -5690,7 +5488,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) {
@@ -5708,7 +5505,6 @@
},
load: function() {
var challenge;
-
if (!this.nodes.challenge.firstChild) {
return;
}
@@ -5721,7 +5517,6 @@
},
count: function() {
var count;
-
count = this.captchas.length;
this.nodes.input.placeholder = (function() {
switch (count) {
@@ -5754,7 +5549,6 @@
},
dialog: function() {
var dialog, elm, mimeTypes, name, nodes, thread, _i, _j, _len, _len1, _ref, _ref1;
-
dialog = UI.dialog('qr', 'top:0;right:0;', " ");
QR.nodes = nodes = {
el: dialog,
@@ -5874,7 +5668,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();
}
@@ -5960,7 +5753,7 @@
QR.cooldown.auto = false;
QR.status();
return QR.error($.el('span', {
- innerHTML: "4chan X encountered an error while posting. Please try again. \n[?]"
+ innerHTML: "4chan X encountered an error while posting. \n[Banned?] [More info]"
}));
}
};
@@ -5987,7 +5780,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];
@@ -6090,7 +5882,6 @@
FappeTyme = {
init: function() {
var el, input;
-
if (!Conf['Fappe Tyme'] || g.VIEW === 'catalog' || g.BOARD === 'f') {
return;
}
@@ -6142,7 +5933,6 @@
},
node: function() {
var thumb, _ref;
-
if (!((_ref = this.file) != null ? _ref.isImage : void 0)) {
return;
}
@@ -6167,7 +5957,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';
@@ -6201,7 +5990,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);
@@ -6246,7 +6034,6 @@
},
expand: function(post, src) {
var img, thumb;
-
thumb = post.file.thumb;
if (post.isHidden || post.file.isExpanded || $.hasClass(thumb, 'expanding')) {
return;
@@ -6274,7 +6061,6 @@
},
completeExpand: function(post) {
var prev, thumb;
-
thumb = post.file.thumb;
if (!$.hasClass(thumb, 'expanding')) {
return;
@@ -6288,7 +6074,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)) {
@@ -6301,7 +6086,6 @@
},
error: function() {
var URL, post, src, timeoutID;
-
post = Get.postFromNode(this);
$.rm(this);
delete post.file.fullImage;
@@ -6327,7 +6111,6 @@
return $.ajax("//api.4chan.org/" + post.board + "/res/" + post.thread + ".json", {
onload: function() {
var postObj, _i, _len, _ref;
-
if (this.status !== 200) {
return;
}
@@ -6351,7 +6134,6 @@
menu: {
init: function() {
var conf, createSubEntry, el, key, subEntries, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Image Expansion']) {
return;
}
@@ -6375,7 +6157,6 @@
},
createSubEntry: function(type, config) {
var input, label;
-
label = $.el('label', {
innerHTML: " " + type
});
@@ -6411,7 +6192,6 @@
},
node: function() {
var _ref;
-
if (!((_ref = this.file) != null ? _ref.isImage : void 0)) {
return;
}
@@ -6419,7 +6199,6 @@
},
mouseover: function(e) {
var el, post;
-
post = Get.postFromNode(this);
el = $.el('img', {
id: 'ihover',
@@ -6441,7 +6220,6 @@
error: function() {
var URL, post, src, timeoutID,
_this = this;
-
if (!doc.contains(this)) {
return;
}
@@ -6466,7 +6244,6 @@
return $.ajax("//api.4chan.org/" + post.board + "/res/" + post.thread + ".json", {
onload: function() {
var postObj, _i, _len, _ref;
-
if (this.status !== 200) {
return;
}
@@ -6492,7 +6269,6 @@
ImageLoader = {
init: function() {
var prefetch;
-
if (g.VIEW === 'catalog') {
return;
}
@@ -6519,7 +6295,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;
}
@@ -6541,7 +6316,6 @@
},
toggle: function() {
var enabled, id, post, _ref;
-
enabled = Conf['prefetch'] = this.checked;
if (enabled) {
_ref = g.threads["" + g.BOARD.ID + "." + g.THREADID].posts;
@@ -6565,7 +6339,6 @@
},
node: function() {
var thumb, _ref;
-
if (this.isClone || !((_ref = this.file) != null ? _ref.isSpoiler : void 0)) {
return;
}
@@ -6578,7 +6351,6 @@
ArchiveLink = {
init: function() {
var div, entry, type, _i, _len, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Archive Link']) {
return;
}
@@ -6591,7 +6363,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,
@@ -6610,14 +6381,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,
@@ -6627,7 +6396,6 @@
return true;
} : function(post) {
var value;
-
value = Filter[type](post);
if (!value) {
return false;
@@ -6650,7 +6418,6 @@
DeleteLink = {
init: function() {
var div, fileEl, fileEntry, postEl, postEntry;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Delete Link']) {
return;
}
@@ -6678,7 +6445,6 @@
el: fileEl,
open: function(_arg) {
var file;
-
file = _arg.file;
if (!file || file.isDead) {
return false;
@@ -6694,7 +6460,6 @@
order: 40,
open: function(post) {
var node;
-
if (post.isDead || post.board.ID === 'q') {
return false;
}
@@ -6709,7 +6474,6 @@
},
"delete": function() {
var fileOnly, form, link, post;
-
post = DeleteLink.post;
if (DeleteLink.cooldown.counting === post) {
return;
@@ -6738,7 +6502,6 @@
},
load: function(link, post, fileOnly, html) {
var msg, s, tmpDoc;
-
tmpDoc = d.implementation.createHTMLDocument('');
tmpDoc.documentElement.innerHTML = html;
if (tmpDoc.title === '4chan - Banned') {
@@ -6761,7 +6524,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,
@@ -6795,7 +6557,6 @@
DownloadLink = {
init: function() {
var a;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Download Link']) {
return;
}
@@ -6809,7 +6570,6 @@
order: 100,
open: function(_arg) {
var file;
-
file = _arg.file;
if (!file) {
return false;
@@ -6835,7 +6595,6 @@
},
node: function() {
var button;
-
button = Menu.makeButton(this);
if (this.isClone) {
$.replace($('.menu-button', this.nodes.info), button);
@@ -6845,11 +6604,9 @@
},
makeButton: (function() {
var a;
-
a = null;
return function(post) {
var clone;
-
a || (a = $.el('a', {
className: 'menu-button fourchanx-link',
innerHTML: '',
@@ -6866,7 +6623,6 @@
})(),
toggle: function(e) {
var post;
-
post = this.dataset.clone ? Get.postFromNode(this) : g.posts[this.dataset.postid];
return Menu.menu.toggle(e, this, post);
}
@@ -6875,7 +6631,6 @@
ReportLink = {
init: function() {
var a;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Report Link']) {
return;
}
@@ -6897,7 +6652,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();
@@ -6910,7 +6664,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;
@@ -6983,7 +6736,6 @@
init: function() {
var sc,
_this = this;
-
if (g.VIEW !== 'thread' || !Conf['Thread Stats']) {
return;
}
@@ -7013,7 +6765,6 @@
},
node: function() {
var ID, fileCount, post, postCount, _ref;
-
postCount = 0;
fileCount = 0;
_ref = this.posts;
@@ -7031,7 +6782,6 @@
},
onUpdate: function(e) {
var fileCount, postCount, _ref;
-
if (e.detail[404]) {
return;
}
@@ -7040,7 +6790,6 @@
},
update: function(postCount, fileCount) {
var fileCountEl, postCountEl, thread;
-
thread = ThreadStats.thread, postCountEl = ThreadStats.postCountEl, fileCountEl = ThreadStats.fileCountEl;
postCountEl.textContent = postCount;
fileCountEl.textContent = fileCount;
@@ -7067,7 +6816,6 @@
},
onThreadsLoad: function() {
var page, pages, thread, _i, _j, _len, _len1, _ref;
-
if (!Conf["Page Count in Stats"]) {
return;
}
@@ -7095,7 +6843,6 @@
init: function() {
var checked, conf, el, input, name, sc, settings, subEntries, _ref,
_this = this;
-
if (g.VIEW !== 'thread' || !Conf['Thread Updater']) {
return;
}
@@ -7246,7 +6993,6 @@
},
interval: function() {
var val;
-
val = +this.value;
if (val < 1) {
val = 1;
@@ -7256,7 +7002,6 @@
},
load: function() {
var klass, req, text, _ref;
-
req = ThreadUpdater.req;
switch (req.status) {
case 200:
@@ -7300,7 +7045,6 @@
},
getInterval: function() {
var i, j;
-
i = ThreadUpdater.interval;
j = Math.min(ThreadUpdater.outdateCount, 10);
if (!d.hidden) {
@@ -7310,14 +7054,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;
@@ -7330,7 +7072,6 @@
},
timeout: function() {
var n;
-
ThreadUpdater.timeoutID = setTimeout(ThreadUpdater.timeout, 1000);
if (!(n = --ThreadUpdater.seconds)) {
return ThreadUpdater.update();
@@ -7343,7 +7084,6 @@
},
update: function() {
var url;
-
if (!ThreadUpdater.online) {
return;
}
@@ -7368,7 +7108,6 @@
},
updateThreadStatus: function(title, OP) {
var icon, message, root, titleLC;
-
titleLC = title.toLowerCase();
if (ThreadUpdater.thread["is" + title] === !!OP[titleLC]) {
return;
@@ -7395,7 +7134,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);
@@ -7481,7 +7219,6 @@
}
$.queueTask(function() {
var length, threadID;
-
threadID = ThreadUpdater.thread.ID;
length = $$('.thread > .postContainer', ThreadUpdater.root).length;
return Fourchan.parseThread(threadID, length - count, length);
@@ -7502,7 +7239,6 @@
ThreadWatcher = {
init: function() {
var sc;
-
if (!Conf['Thread Watcher']) {
return;
}
@@ -7536,7 +7272,6 @@
node: function() {
var favicon,
_this = this;
-
favicon = $.el('a', {
className: 'watch-thread-link',
href: 'javascript:;'
@@ -7556,7 +7291,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']);
@@ -7605,13 +7339,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']) {
@@ -7632,7 +7364,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) {
@@ -7645,7 +7376,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] = {
@@ -7691,7 +7421,6 @@
},
ready: function() {
var ID, post, posts, _ref;
-
$.off(d, '4chanXInitFinished', Unread.ready);
posts = [];
_ref = Unread.thread.posts;
@@ -7708,7 +7437,6 @@
},
scroll: function() {
var checkPosition, hash, onload, post, posts, prevID, root;
-
if ((hash = location.hash.match(/\d+/)) && hash[0] in Unread.thread.posts) {
return;
}
@@ -7740,7 +7468,6 @@
}
checkPosition = function(target) {
var height, top, _ref;
-
_ref = target.getBoundingClientRect(), top = _ref.top, height = _ref.height;
return top + height - doc.clientHeight > 0;
};
@@ -7748,7 +7475,6 @@
},
sync: function() {
var lastReadPost;
-
lastReadPost = Unread.db.get({
boardID: Unread.thread.board.ID,
threadID: Unread.thread.ID,
@@ -7765,7 +7491,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;
@@ -7793,7 +7518,6 @@
},
addPostQuotingYou: function(post) {
var quotelink, _i, _len, _ref;
-
if (!QR.db) {
return;
}
@@ -7814,7 +7538,6 @@
},
readSinglePost: function(post) {
var i;
-
if ((i = Unread.posts.indexOf(post)) === -1) {
return;
}
@@ -7830,7 +7553,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) {
@@ -7841,7 +7563,6 @@
},
read: $.debounce(50, function(e) {
var ID, bottom, height, i, post, posts, read;
-
if (d.hidden || !Unread.posts.length) {
return;
}
@@ -7875,7 +7596,6 @@
}),
setLine: function(force) {
var post, root;
-
if (!(d.hidden || force === true)) {
return;
}
@@ -7890,7 +7610,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);
@@ -7909,7 +7628,6 @@
file: {},
init: function() {
var archive, arr, boardID, data, id, name, type, _i, _len, _ref, _ref1, _ref2, _ref3;
-
_ref = Conf['selectedArchives'];
for (boardID in _ref) {
data = _ref[boardID];
@@ -8036,7 +7754,6 @@
},
to: function(dest, data) {
var archive;
-
archive = (dest === 'search' ? Redirect.thread : Redirect[dest])[data.boardID];
if (!archive) {
return '';
@@ -8045,7 +7762,6 @@
},
protocol: function(archive) {
var protocol;
-
protocol = location.protocol;
if (!archive[protocol.slice(0, -1)]) {
protocol = protocol === 'https:' ? 'http:' : 'https:';
@@ -8054,7 +7770,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') {
@@ -8067,7 +7782,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)) {
@@ -8077,13 +7791,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);
@@ -8102,7 +7814,6 @@
},
setup: function() {
var btn, entry, psa;
-
$.off(d, '4chanXInitFinished', PSAHiding.setup);
if (!(psa = $.id('globalMessage'))) {
$.rmClass(doc, 'hide-announcement');
@@ -8131,7 +7842,6 @@
$.on(btn, 'click', PSAHiding.toggle);
$.get('hiddenPSA', 0, function(_arg) {
var hiddenPSA;
-
hiddenPSA = _arg.hiddenPSA;
PSAHiding.sync(hiddenPSA);
$.before(psa, btn);
@@ -8141,7 +7851,6 @@
},
toggle: function(e) {
var UTC;
-
if ($.hasClass(this, 'hide-announcement')) {
UTC = +$.id('globalMessage').dataset.utc;
$.set('hiddenPSA', UTC);
@@ -8153,7 +7862,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') {
@@ -8165,7 +7873,6 @@
CatalogLinks = {
init: function() {
var el, input;
-
if (!Conf['Catalog Links']) {
return;
}
@@ -8189,14 +7896,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++) {
@@ -8230,7 +7935,6 @@
},
node: function(post) {
var str, uid;
-
if (!(uid = $('.hand', this.nodes.uniqueID))) {
return;
}
@@ -8242,7 +7946,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;
@@ -8251,13 +7954,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;
@@ -8296,7 +7997,6 @@
Emoji = {
init: function() {
var css, icon, name, pos, _ref;
-
if (!Conf['Emoji']) {
return;
}
@@ -8366,7 +8066,6 @@
},
node: function() {
var a;
-
if (a = $('.abbr > a:not([onclick])', this.nodes.comment)) {
return $.on(a, 'click', ExpandComment.cb);
}
@@ -8374,14 +8073,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;
@@ -8397,7 +8094,6 @@
},
contract: function(post) {
var a;
-
if (!post.nodes.shortComment) {
return;
}
@@ -8408,7 +8104,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 + ")";
@@ -8465,7 +8160,6 @@
},
node: function() {
var a, span;
-
if (!(span = $('.summary', this.OP.nodes.root.parentNode))) {
return;
}
@@ -8479,13 +8173,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) {
@@ -8554,7 +8246,6 @@
},
parse: function(req, thread, a) {
var link, node, nodes, post, posts, replies, reply, spoilerRange, status, _i, _len;
-
if (a.textContent[0] === '+') {
return;
}
@@ -8612,7 +8303,6 @@
},
createFunc: function(format) {
var code;
-
code = format.replace(/%(.)/g, function(s, c) {
if (c in FileInfo.formatters) {
return "' + FileInfo.formatters." + c + ".call(post) + '";
@@ -8624,7 +8314,6 @@
},
convertUnit: function(size, unit) {
var i;
-
if (unit === 'B') {
return "" + (size.toFixed()) + " Bytes";
}
@@ -8655,7 +8344,6 @@
},
n: function() {
var fullname, shortname;
-
fullname = this.file.name;
shortname = Build.shortFilename(this.file.name, this.isReply);
if (fullname === shortname) {
@@ -8699,7 +8387,6 @@
Fourchan = {
init: function() {
var board;
-
if (g.VIEW === 'catalog') {
return;
}
@@ -8721,7 +8408,6 @@
},
code: function() {
var pre, _i, _len, _ref;
-
if (this.isClone) {
return;
}
@@ -8751,13 +8437,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]');
@@ -8770,7 +8454,6 @@
},
keydown: function(e) {
var form, key, notification, notifications, op, target, thread, threadRoot, _i, _len;
-
if (!(key = Keybinds.keyCode(e))) {
return;
}
@@ -8945,7 +8628,6 @@
},
keyCode: function(e) {
var kc, key;
-
key = (function() {
switch (kc = e.keyCode) {
case 8:
@@ -9001,7 +8683,6 @@
},
tags: function(tag, ta) {
var range, selEnd, selStart, value;
-
value = ta.value;
selStart = ta.selectionStart;
selEnd = ta.selectionEnd;
@@ -9012,13 +8693,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 {
@@ -9028,7 +8707,6 @@
},
open: function(thread, tab) {
var url;
-
if (g.VIEW !== 'index') {
return;
}
@@ -9041,7 +8719,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');
@@ -9101,7 +8778,6 @@
Nav = {
init: function() {
var append, next, prev, span;
-
switch (g.VIEW) {
case 'index':
if (!Conf['Index Navigation']) {
@@ -9152,7 +8828,6 @@
},
getThread: function(full) {
var headRect, i, rect, thread, threads, topMargin, _i, _len;
-
if (Conf['Bottom header'] || !Conf['Fixed Header']) {
topMargin = 0;
} else {
@@ -9178,7 +8853,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 && Math.ceil(top) < 0) || (delta === +1 && top > 1))) {
@@ -9204,7 +8878,6 @@
},
node: function() {
var dateEl;
-
if (this.isClone) {
return;
}
@@ -9214,7 +8887,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) {
@@ -9225,7 +8897,6 @@
stale: [],
flush: function() {
var now, update, _i, _len, _ref;
-
if (d.hidden) {
return;
}
@@ -9241,16 +8912,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);
@@ -9291,7 +8959,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];
@@ -9311,7 +8978,6 @@
},
ready: function() {
var field;
-
field = $.id('recaptcha_response_field');
$.on(field, 'keydown', function(e) {
if (e.keyCode === 8 && !field.value) {
@@ -9320,7 +8986,6 @@
});
return $.on($('form'), 'submit', function(e) {
var response;
-
e.preventDefault();
response = field.value.trim();
if (!/\s/.test(response)) {
@@ -9334,7 +8999,6 @@
Sauce = {
init: function() {
var err, link, links, _i, _len, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Sauce']) {
return;
}
@@ -9366,7 +9030,6 @@
},
createSauceLink: function(link) {
var m, text;
-
link = link.replace(/%(T?URL|MD5|board)/ig, function(parameter) {
switch (parameter) {
case '%TURL':
@@ -9387,7 +9050,6 @@
},
node: function() {
var link, nodes, _i, _len, _ref;
-
if (this.isClone || !this.file) {
return;
}
@@ -9420,7 +9082,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) + '";
@@ -9505,7 +9166,6 @@
Settings = {
init: function() {
var link, settings;
-
link = $.el('a', {
className: 'settings-link',
textContent: 'Settings',
@@ -9515,7 +9175,6 @@
Header.addShortcut(link);
$.get('previousversion', null, function(item) {
var changelog, el, previous;
-
if (previous = item['previousversion']) {
if (previous === g.VERSION) {
return;
@@ -9553,7 +9212,6 @@
},
open: function(openSection) {
var dialog, html, link, links, overlay, section, sectionToOpen, _i, _len, _ref;
-
$.off(d, '4chanXInitFinished', Settings.open);
if (Settings.dialog) {
return;
@@ -9606,7 +9264,6 @@
sections: [],
addSection: function(title, open) {
var hyphenatedTitle, _ref;
-
if (typeof title !== 'string') {
_ref = title.detail, title = _ref.title, open = _ref.open;
}
@@ -9619,7 +9276,6 @@
},
openSection: function() {
var section, selected;
-
if (selected = $('.tab-selected', Settings.dialog)) {
$.rmClass(selected, 'tab-selected');
}
@@ -9633,7 +9289,6 @@
},
main: function(section) {
var arr, button, description, div, fs, hiddenNum, input, inputs, items, key, obj, _ref;
-
items = {};
inputs = {};
_ref = Config.main;
@@ -9658,7 +9313,6 @@
}
$.get(items, function(items) {
var val;
-
for (key in items) {
val = items[key];
inputs[key].checked = val;
@@ -9673,7 +9327,6 @@
boards: {}
}, function(item) {
var ID, board, thread, _ref1;
-
_ref1 = item.hiddenThreads.boards;
for (ID in _ref1) {
board = _ref1[ID];
@@ -9688,7 +9341,6 @@
boards: {}
}, function(item) {
var ID, board, post, thread, _ref1;
-
_ref1 = item.hiddenPosts.boards;
for (ID in _ref1) {
board = _ref1[ID];
@@ -9708,7 +9360,6 @@
boards: {}
}, function(item) {
var boardID;
-
for (boardID in item.hiddenThreads.boards) {
localStorage.removeItem("4chan-hide-t-" + boardID);
}
@@ -9719,7 +9370,6 @@
},
"export": function(now, data) {
var a, db, p, _i, _len;
-
if (typeof now !== 'number') {
now = Date.now();
data = {
@@ -9756,7 +9406,6 @@
},
onImport: function() {
var file, output, reader;
-
if (!(file = this.files[0])) {
return;
}
@@ -9768,7 +9417,6 @@
reader = new FileReader();
reader.onload = function(e) {
var data, err;
-
try {
data = JSON.parse(e.target.result);
Settings.loadSettings(data);
@@ -9785,7 +9433,6 @@
},
loadSettings: function(data) {
var key, val, version, _ref;
-
version = data.version.split('.');
if (version[0] === '2') {
data = Settings.convertSettings(data, {
@@ -9875,7 +9522,6 @@
},
convertSettings: function(data, map) {
var newKey, prevKey;
-
for (prevKey in map) {
newKey = map[prevKey];
if (newKey) {
@@ -9887,7 +9533,6 @@
},
filter: function(section) {
var select;
-
section.innerHTML = "";
select = $('select', section);
$.on(select, 'change', Settings.selectFilter);
@@ -9895,7 +9540,6 @@
},
selectFilter: function() {
var div, name, ta;
-
div = this.nextElementSibling;
if ((name = this.value) !== 'guide') {
$.rmAll(div);
@@ -9915,7 +9559,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) {
@@ -9925,7 +9568,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 = {};
@@ -9945,7 +9587,6 @@
$.on(ta, 'change', $.cb.value);
$.get(items, function(items) {
var key, val;
-
for (key in items) {
val = items[key];
if (['emojiPos'].contains(key)) {
@@ -10016,7 +9657,6 @@
});
$.get('selectedArchives', Conf['selectedArchives'], function(_arg) {
var option, selectedArchives, type;
-
selectedArchives = _arg.selectedArchives;
for (boardID in selectedArchives) {
data = selectedArchives[boardID];
@@ -10031,7 +9671,6 @@
},
addArchiveCell: function(boardID, data, type) {
var archive, i, length, options, select, td;
-
length = data[type].length;
td = $.el('td', {
className: 'archive-cell'
@@ -10061,10 +9700,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);
@@ -10075,7 +9712,6 @@
},
time: function() {
var funk;
-
funk = Time.createFunc(this.value);
return this.nextElementSibling.textContent = funk(Time, new Date());
},
@@ -10084,7 +9720,6 @@
},
fileInfo: function() {
var data, funk;
-
data = {
isReply: true,
file: {
@@ -10123,7 +9758,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 = {};
@@ -10144,7 +9778,6 @@
}
return $.get(items, function(items) {
var val;
-
for (key in items) {
val = items[key];
inputs[key].value = val;
@@ -10153,7 +9786,6 @@
},
keybind: function(e) {
var key;
-
if (e.keyCode === 9) {
return;
}
@@ -10170,10 +9802,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') {
@@ -10197,13 +9827,11 @@
$.on(d, '4chanMainInit', Main.initStyle);
return $.asap((function() {
var _ref;
-
return d.head && $('link[rel="shortcut icon"]', d.head) || ((_ref = d.readyState) === 'interactive' || _ref === 'complete');
}), Main.initStyle);
},
initFeatures: function(items) {
var init, pathname, _ref;
-
Conf = items;
pathname = location.pathname.split('/');
g.BOARD = new Board(pathname[1]);
@@ -10232,7 +9860,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('/');
@@ -10249,7 +9876,6 @@
}
init = function(features) {
var err, module, name;
-
for (name in features) {
module = features[name];
try {
@@ -10325,7 +9951,6 @@
},
initStyle: function() {
var mainStyleSheet, observer, setStyle, style, styleSheets, _ref;
-
$.off(d, '4chanMainInit', Main.initStyle);
if (!Main.isThisPageLegit() || $.hasClass(doc, 'fourchan-x')) {
return;
@@ -10346,7 +9971,6 @@
styleSheets = $$('link[rel="alternate stylesheet"]', d.head);
setStyle = function() {
var styleSheet, _i, _len;
-
$.rmClass(doc, style);
for (_i = 0, _len = styleSheets.length; _i < _len; _i++) {
styleSheet = styleSheets[_i];
@@ -10373,7 +9997,6 @@
},
initReady: function() {
var board, boardChild, err, errors, href, passLink, posts, styleSelector, thread, threadChild, 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', {
@@ -10450,7 +10073,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++) {
@@ -10478,11 +10100,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);
@@ -10501,7 +10121,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];
@@ -10535,7 +10154,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);
@@ -10555,7 +10173,6 @@
},
message: function(e) {
var el, version;
-
version = e.data.version;
if (version && version !== g.VERSION) {
el = $.el('span', {
@@ -10566,14 +10183,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;
@@ -10589,7 +10204,6 @@
},
handleErrors: function(errors) {
var div, error, logs, _i, _len;
-
if (!(errors instanceof Array)) {
error = errors;
} else if (errors.length === 1) {
@@ -10604,7 +10218,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', {
@@ -10618,7 +10231,6 @@
},
parseError: function(data) {
var error, message;
-
Main.logError(data);
message = $.el('div', {
textContent: data.message
@@ -10635,7 +10247,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');
}
diff --git a/builds/crx/script.js b/builds/crx/script.js
index dfc0591c9..e8caffd32 100644
--- a/builds/crx/script.js
+++ b/builds/crx/script.js
@@ -1,6 +1,6 @@
// Generated by CoffeeScript
/*
-* 4chan X - Version 1.2.25 - 2013-08-04
+* 4chan X - Version 1.2.25 - 2013-08-11
*
* Licensed under the MIT license.
* https://github.com/seaweedchan/4chan-x/blob/master/LICENSE
@@ -317,7 +317,6 @@
Array.prototype.add = function(object, position) {
var keep;
-
keep = this.slice(position);
this.length = position;
this.push(object);
@@ -330,7 +329,6 @@
Array.prototype.indexOf = function(object) {
var i;
-
i = this.length;
while (i--) {
if (this[i] === object) {
@@ -342,7 +340,6 @@
Array.prototype.pushArrays = function() {
var arg, args, _i, _len;
-
args = arguments;
for (_i = 0, _len = args.length; _i < _len; _i++) {
arg = args[_i];
@@ -353,7 +350,6 @@
Array.prototype.remove = function(object) {
var index;
-
if ((index = this.indexOf(object)) > -1) {
return this.splice(index, 1);
} else {
@@ -370,7 +366,6 @@
$.extend = function(object, properties) {
var key, val;
-
for (key in properties) {
val = properties[key];
if (!properties.hasOwnProperty(key)) {
@@ -388,7 +383,6 @@
$.ready = function(fc) {
var cb, _ref;
-
if ((_ref = d.readyState) === 'interactive' || _ref === 'complete') {
$.queueTask(fc);
return;
@@ -402,7 +396,6 @@
$.formData = function(form) {
var fd, key, val;
-
if (form instanceof HTMLFormElement) {
return new FormData(form);
}
@@ -423,7 +416,6 @@
$.ajax = function(url, callbacks, opts) {
var cred, err, form, headers, key, r, sync, type, upCallbacks, val;
-
if (opts == null) {
opts = {};
}
@@ -449,11 +441,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);
@@ -469,7 +459,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];
@@ -511,7 +500,6 @@
$.addStyle = function(css, id) {
var style;
-
style = $.el('style', {
id: id,
textContent: css
@@ -558,7 +546,6 @@
} else {
return function(el) {
var _ref;
-
return (_ref = el.parentNode) != null ? _ref.removeChild(el) : void 0;
};
}
@@ -566,7 +553,6 @@
$.rmAll = function(root) {
var node;
-
while (node = root.firstChild) {
root.removeChild(node);
}
@@ -582,7 +568,6 @@
$.nodes = function(nodes) {
var frag, node, _i, _len;
-
if (!(nodes instanceof Array)) {
return nodes;
}
@@ -616,7 +601,6 @@
$.el = function(tag, properties) {
var el;
-
el = d.createElement(tag);
if (properties) {
$.extend(el, properties);
@@ -626,7 +610,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];
@@ -636,7 +619,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];
@@ -660,7 +642,6 @@
$.debounce = function(wait, fn) {
var args, exec, lastCall, that, timeout;
-
lastCall = 0;
timeout = null;
that = null;
@@ -682,11 +663,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);
@@ -709,7 +688,6 @@
$.globalEval = function(code) {
var script;
-
script = $.el('script', {
textContent: code
});
@@ -719,7 +697,6 @@
$.bytesToString = function(size) {
var unit;
-
unit = 0;
while (size >= 1024) {
size /= 1024;
@@ -738,7 +715,6 @@
$.sync = (function() {
chrome.storage.onChanged.addListener(function(changes) {
var cb, key;
-
for (key in changes) {
if (cb = $.syncing[key]) {
cb(changes[key].newValue);
@@ -752,7 +728,6 @@
$.item = function(key, val) {
var item;
-
item = {};
item[key] = val;
return item;
@@ -766,7 +741,6 @@
$.get = function(key, val, cb) {
var count, done, items, localItems, syncItems;
-
if (typeof cb === 'function') {
items = $.item(key, val);
} else {
@@ -786,7 +760,6 @@
count = 0;
done = function(item) {
var lastError;
-
lastError = chrome.runtime.lastError;
if (lastError) {
c.error(lastError, lastError.message || 'No message.');
@@ -808,12 +781,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];
@@ -898,7 +869,6 @@
function Post(root, thread, board, that) {
var alt, anchor, capcode, date, email, file, fileInfo, flag, info, name, post, size, subject, thumb, tripcode, uniqueID, unit;
-
this.thread = thread;
this.board = board;
if (that == null) {
@@ -997,7 +967,6 @@
Post.prototype.parseComment = function() {
var bq, data, 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++) {
@@ -1015,7 +984,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++) {
@@ -1045,7 +1013,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) {
@@ -1094,7 +1061,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');
@@ -1128,7 +1094,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++) {
@@ -1146,7 +1111,6 @@
function Clone(origin, context) {
var file, index, 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'];
@@ -1235,7 +1199,6 @@
function DataBoard(key, sync) {
var init,
_this = this;
-
this.key = key;
this.data = Conf[key];
$.sync(key, this.onSync.bind(this));
@@ -1252,7 +1215,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];
@@ -1273,7 +1235,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) {
@@ -1289,7 +1250,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;
@@ -1303,7 +1263,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) {
@@ -1327,7 +1286,6 @@
DataBoard.prototype.clean = function() {
var boardID, now, val, _ref;
-
_ref = this.data.boards;
for (boardID in _ref) {
val = _ref[boardID];
@@ -1347,10 +1305,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) {
@@ -1461,7 +1417,6 @@
init: function() {
var barFixedToggler, barPositionToggler, customNavToggler, editCustomNav, footerToggler, headerToggler, linkJustifyToggler,
_this = this;
-
this.menu = new UI.Menu('header');
this.menuButton = $.el('span', {
className: 'menu-button',
@@ -1545,7 +1500,6 @@
}
$.asap((function() {
var _ref;
-
return $.id('boardNavMobile') || ((_ref = d.readyState) === 'interactive' || _ref === 'complete');
}), Header.setBoardList);
$.prepend(d.body, _this.bar);
@@ -1554,7 +1508,6 @@
});
return $.ready(function() {
var a, cs;
-
_this.footer = $.id('boardNavDesktopFoot');
if (a = $("a[href*='/" + g.BOARD + "/']", $.id('boardNavDesktopFoot'))) {
a.className = 'current';
@@ -1588,7 +1541,6 @@
}),
setBoardList: function() {
var a, boardList, btn, fourchannav, fullBoardList;
-
fourchannav = $.id('boardNavDesktop');
if (a = $("a[href*='/" + g.BOARD + "/']", fourchannav)) {
a.className = 'current';
@@ -1610,7 +1562,6 @@
},
generateBoardList: function(text) {
var as, list, nodes;
-
list = $('#custom-board-list', Header.bar);
$.rmAll(list);
if (!text) {
@@ -1619,7 +1570,6 @@
as = $$('#full-board-list a', 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);
}
@@ -1666,7 +1616,6 @@
},
toggleBoardList: function() {
var bar, custom, full, showBoardList;
-
bar = Header.bar;
custom = $('#custom-board-list', bar);
full = $('#full-board-list', bar);
@@ -1702,7 +1651,6 @@
},
toggleLinkJustify: function() {
var centered;
-
$.event('CloseMenu');
centered = this.nodeName === 'INPUT' ? this.checked : void 0;
Header.setLinkJustify(centered);
@@ -1732,7 +1680,6 @@
},
toggleBarVisibility: function(e) {
var hide, message;
-
if (e.type === 'mousedown' && e.button !== 0) {
return;
}
@@ -1749,7 +1696,6 @@
},
toggleFooterVisibility: function() {
var hide, message;
-
$.event('CloseMenu');
hide = this.nodeName === 'INPUT' ? this.checked : !!Header.footer.hidden;
Header.setFooterVisibility(hide);
@@ -1759,7 +1705,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);
@@ -1772,14 +1717,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;
}
@@ -1790,7 +1733,6 @@
},
scrollToPost: function(post) {
var headRect, top;
-
top = post.getBoundingClientRect().top;
if (Conf['Fixed Header'] && !Conf['Bottom Header']) {
headRect = Header.bar.getBoundingClientRect();
@@ -1800,7 +1742,6 @@
},
addShortcut: function(el) {
var shortcut;
-
shortcut = $.el('span', {
className: 'shortcut fourchanx-link'
});
@@ -1812,7 +1753,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) {
@@ -1825,7 +1765,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);
@@ -1835,7 +1774,6 @@
},
postFromObject: function(data, boardID) {
var o;
-
o = {
postID: data.no,
threadID: data.resto || data.no,
@@ -1879,7 +1817,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/';
@@ -1975,7 +1912,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) {
@@ -1988,7 +1924,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);
@@ -2008,7 +1943,6 @@
},
postDataFromLink: function(link) {
var boardID, path, postID, threadID;
-
if (link.hostname === 'boards.4chan.org') {
path = link.pathname.split('/');
boardID = path[1];
@@ -2027,7 +1961,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) {
@@ -2056,14 +1989,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;
@@ -2084,7 +2015,6 @@
},
insert: function(post, root, context) {
var clone, nodes;
-
if (!root.parentNode) {
return;
}
@@ -2098,7 +2028,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;
@@ -2148,7 +2077,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;
@@ -2242,10 +2170,8 @@
UI = (function() {
var Menu, dialog, drag, dragend, dragstart, hover, hoverend, hoverstart, touchend, touchmove;
-
dialog = function(id, position, html) {
var child, el, move, _i, _len, _ref;
-
el = $.el('div', {
className: 'dialog',
innerHTML: html,
@@ -2285,7 +2211,6 @@
Menu.prototype.makeMenu = function() {
var menu;
-
menu = $.el('div', {
className: 'dialog',
id: 'menu',
@@ -2300,7 +2225,6 @@
Menu.prototype.toggle = function(e, button, data) {
var previousButton;
-
e.preventDefault();
e.stopPropagation();
if (currentMenu) {
@@ -2318,7 +2242,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;
@@ -2357,7 +2280,6 @@
Menu.prototype.insertEntry = function(entry, parent, data) {
var subEntry, submenu, _i, _len, _ref;
-
if (typeof entry.open === 'function') {
if (!entry.open(data)) {
return;
@@ -2391,7 +2313,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);
@@ -2401,7 +2322,6 @@
Menu.prototype.keybinds = function(e) {
var entry, next, nextPrev, subEntry, submenu;
-
entry = $('.focused', currentMenu);
while (subEntry = $('.focused', entry)) {
entry = subEntry;
@@ -2447,7 +2367,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');
}
@@ -2475,7 +2394,6 @@
Menu.prototype.addEntry = function(e) {
var entry;
-
entry = e.detail;
if (entry.type !== this.type) {
return;
@@ -2486,7 +2404,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) {
@@ -2510,7 +2427,6 @@
})();
dragstart = function(e) {
var el, isTouching, o, rect, screenHeight, screenWidth, _ref;
-
if (e.type === 'mousedown' && e.button !== 0) {
return;
}
@@ -2549,7 +2465,6 @@
};
touchmove = function(e) {
var touch, _i, _len, _ref;
-
_ref = e.changedTouches;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
touch = _ref[_i];
@@ -2561,7 +2476,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 + '%';
@@ -2577,7 +2491,6 @@
};
touchend = function(e) {
var touch, _i, _len, _ref;
-
_ref = e.changedTouches;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
touch = _ref[_i];
@@ -2599,7 +2512,6 @@
};
hoverstart = function(_arg) {
var asapTest, cb, el, endEvents, latestEvent, o, root;
-
root = _arg.root, el = _arg.el, latestEvent = _arg.latestEvent, endEvents = _arg.endEvents, asapTest = _arg.asapTest, cb = _arg.cb;
o = {
root: root,
@@ -2628,7 +2540,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;
@@ -2671,7 +2582,6 @@
},
node: function() {
var email, name, tripcode, _ref;
-
if (this.info.capcode || this.isClone) {
return;
}
@@ -2698,7 +2608,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;
}
@@ -2735,7 +2644,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;
@@ -2766,7 +2674,6 @@
},
createFilter: function(regexp, op, stub, hl, top) {
var settings, test;
-
test = typeof regexp === 'string' ? function(value) {
return regexp === value;
} : function(value) {
@@ -2790,7 +2697,6 @@
},
node: function() {
var filter, firstThread, key, result, thisThread, value, _i, _len, _ref;
-
if (this.isClone) {
return;
}
@@ -2902,7 +2808,6 @@
menu: {
init: function() {
var div, entry, type, _i, _len, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Filter']) {
return;
}
@@ -2928,7 +2833,6 @@
},
createSubEntry: function(text, type) {
var el;
-
el = $.el('a', {
href: 'javascript:;',
textContent: text
@@ -2939,7 +2843,6 @@
el: el,
open: function(post) {
var value;
-
value = Filter[type](post);
return value !== false;
}
@@ -2947,7 +2850,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) {
@@ -2962,7 +2864,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);
@@ -2996,7 +2897,6 @@
},
node: function() {
var data;
-
if (!this.isReply || this.isClone) {
return;
}
@@ -3020,7 +2920,6 @@
menu: {
init: function() {
var apply, div, hideStubLink, makeStub, replies, thisPost;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Reply Hiding Link']) {
return;
}
@@ -3091,7 +2990,6 @@
order: 20,
open: function(post) {
var data;
-
if (!post.isReply || post.isClone || !post.isHidden) {
return false;
}
@@ -3123,7 +3021,6 @@
order: 15,
open: function(post) {
var data;
-
if (!post.isReply || post.isClone || !post.isHidden) {
return false;
}
@@ -3140,7 +3037,6 @@
},
hide: function() {
var makeStub, parent, post, replies, thisPost;
-
parent = this.parentNode;
thisPost = $('input[name=thisPost]', parent).checked;
replies = $('input[name=replies]', parent).checked;
@@ -3159,7 +3055,6 @@
},
show: function() {
var data, parent, post, replies, thisPost;
-
parent = this.parentNode;
thisPost = $('input[name=thisPost]', parent).checked;
replies = $('input[name=replies]', parent).checked;
@@ -3183,7 +3078,6 @@
},
hideStub: function() {
var post;
-
post = PostHiding.menu.post;
post.nodes.root.hidden = true;
$.event('CloseMenu');
@@ -3191,7 +3085,6 @@
},
makeButton: function(post, type) {
var a;
-
a = $.el('a', {
className: "" + type + "-reply-button",
innerHTML: " " + (type === 'hide' ? '-' : '+') + " ",
@@ -3202,7 +3095,6 @@
},
saveHiddenState: function(post, isHiding, thisPost, makeStub, hideRecursively) {
var data;
-
data = {
boardID: post.board.ID,
threadID: post.thread.ID,
@@ -3221,7 +3113,6 @@
},
toggle: function() {
var post;
-
post = Get.postFromNode(this);
if (post.isHidden) {
PostHiding.show(post);
@@ -3232,7 +3123,6 @@
},
hide: function(post, makeStub, hideRecursively) {
var a, postInfo, quotelink, _i, _len, _ref;
-
if (makeStub == null) {
makeStub = Conf['Stubs'];
}
@@ -3270,7 +3160,6 @@
},
show: function(post, showRecursively) {
var quotelink, _i, _len, _ref;
-
if (showRecursively == null) {
showRecursively = Conf['Recursive Hiding'];
}
@@ -3306,7 +3195,6 @@
},
node: function() {
var i, obj, quote, recursive, _i, _j, _len, _len1, _ref, _ref1;
-
if (this.isClone) {
return;
}
@@ -3324,7 +3212,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: [],
@@ -3335,7 +3222,6 @@
},
rm: function(recursive, post) {
var i, obj, rec, _i, _len, _ref;
-
if (!(obj = Recursive.recursives[post.fullID])) {
return;
}
@@ -3350,7 +3236,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;
@@ -3377,7 +3262,6 @@
},
node: function() {
var data;
-
if (data = ThreadHiding.db.get({
boardID: this.board.ID,
threadID: this.ID
@@ -3391,7 +3275,6 @@
},
syncCatalog: function() {
var hiddenThreads, hiddenThreadsOnCatalog, threadID;
-
hiddenThreads = ThreadHiding.db.get({
boardID: g.BOARD.ID,
defaultValue: {}
@@ -3418,7 +3301,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;
}
@@ -3444,7 +3326,6 @@
menu: {
init: function() {
var apply, div, hideStubLink, makeStub;
-
if (g.VIEW !== 'index' || !Conf['Menu'] || !Conf['Thread Hiding Link']) {
return;
}
@@ -3471,7 +3352,6 @@
order: 20,
open: function(_arg) {
var isReply, thread;
-
thread = _arg.thread, isReply = _arg.isReply;
if (isReply || thread.isHidden) {
return false;
@@ -3493,7 +3373,6 @@
order: 15,
open: function(_arg) {
var isReply, thread;
-
thread = _arg.thread, isReply = _arg.isReply;
if (isReply || !thread.isHidden) {
return false;
@@ -3504,7 +3383,6 @@
},
hide: function() {
var makeStub, thread;
-
makeStub = $('input', this.parentNode).checked;
thread = ThreadHiding.menu.thread;
ThreadHiding.hide(thread, makeStub);
@@ -3513,7 +3391,6 @@
},
hideStub: function() {
var thread;
-
thread = ThreadHiding.menu.thread;
ThreadHiding.hide(thread, false);
$.event('CloseMenu');
@@ -3521,7 +3398,6 @@
},
makeButton: function(thread, type) {
var a;
-
a = $.el('a', {
className: "" + type + "-thread-button",
innerHTML: " " + (type === 'hide' ? '-' : '+') + " ",
@@ -3533,7 +3409,6 @@
},
saveHiddenState: function(thread, makeStub) {
var hiddenThreadsOnCatalog;
-
hiddenThreadsOnCatalog = JSON.parse(localStorage.getItem("4chan-hide-t-" + g.BOARD)) || {};
if (thread.isHidden) {
ThreadHiding.db.set({
@@ -3566,7 +3441,6 @@
},
hide: function(thread, makeStub) {
var OP, a, numReplies, opInfo, span, threadRoot;
-
if (makeStub == null) {
makeStub = Conf['Stubs'];
}
@@ -3597,7 +3471,6 @@
},
show: function(thread) {
var threadRoot;
-
if (thread.stub) {
$.rm(thread.stub);
delete thread.stub;
@@ -3610,7 +3483,6 @@
QuoteBacklink = {
init: function() {
var format;
-
if (g.VIEW === 'catalog' || !Conf['Quote Backlinks']) {
return;
}
@@ -3628,7 +3500,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;
}
@@ -3666,7 +3537,6 @@
},
secondNode: function() {
var container;
-
if (this.isClone && (this.origin.isReply || Conf['OP Backlinks'])) {
this.nodes.backlinkContainer = $('.container', this.nodes.info);
return;
@@ -3680,7 +3550,6 @@
},
getContainer: function(id) {
var _base;
-
return (_base = this.containers)[id] || (_base[id] = $.el('span', {
className: 'container'
}));
@@ -3703,7 +3572,6 @@
},
node: function() {
var board, boardID, quotelink, quotelinks, quotes, thread, threadID, _i, _len, _ref, _ref1;
-
if (this.isClone && this.thread === this.context.thread) {
return;
}
@@ -3739,7 +3607,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];
@@ -3752,7 +3619,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];
@@ -3776,7 +3642,6 @@
},
toggle: function(e) {
var boardID, context, postID, threadID, _ref;
-
if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || e.button !== 0) {
return;
}
@@ -3802,7 +3667,6 @@
},
add: function(quotelink, boardID, threadID, postID, context) {
var inline, isBacklink, post, qroot, root;
-
isBacklink = $.hasClass(quotelink, 'backlink');
inline = $.el('div', {
id: "i" + postID,
@@ -3827,7 +3691,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);
@@ -3869,7 +3732,6 @@
},
node: function() {
var boardID, op, postID, quotelink, quotelinks, quotes, _i, _j, _len, _len1, _ref;
-
if (this.isClone && this.thread === this.context.thread) {
return;
}
@@ -3912,7 +3774,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];
@@ -3921,7 +3782,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;
}
@@ -3965,7 +3825,6 @@
},
mouseout: function() {
var clone, post, root, _i, _len, _ref;
-
if (!(root = this.el.firstElementChild)) {
return;
}
@@ -3995,7 +3854,6 @@
},
node: function() {
var boardID, postID, quotelink, _i, _len, _ref, _ref1, _ref2;
-
if (this.isClone) {
return;
}
@@ -4018,7 +3876,6 @@
QuoteThreading = {
init: function() {
var input;
-
if (!(Conf['Quote Threading'] && g.VIEW === 'thread')) {
return;
}
@@ -4041,7 +3898,6 @@
},
setup: function() {
var ID, post, posts;
-
$.off(d, '4chanXInitFinished', QuoteThreading.setup);
posts = g.posts;
for (ID in posts) {
@@ -4054,7 +3910,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;
}
@@ -4084,7 +3939,6 @@
},
nodeinsert: function() {
var bottom, height, posts, qpost, qroot, threadContainer, top, _ref;
-
posts = g.posts;
qpost = posts[this.threaded];
delete this.threaded;
@@ -4114,14 +3968,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];
@@ -4136,7 +3988,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;
@@ -4152,7 +4003,6 @@
},
kb: function() {
var control;
-
control = $.id('threadingControl');
return control.click();
}
@@ -4179,7 +4029,6 @@
},
node: function() {
var quotelink, _i, _len, _ref;
-
if (this.isClone) {
return;
}
@@ -4215,7 +4064,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];
@@ -4230,7 +4078,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;
@@ -4310,7 +4157,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++) {
@@ -4395,7 +4241,6 @@
},
toggle: function() {
var el, embed, style, type, url;
-
embed = this.previousElementSibling;
if (this.className.contains("embedded")) {
el = $.el('a', {
@@ -4489,7 +4334,6 @@
style: 'height: auto; width: 500px; display: inline-block;',
el: function() {
var div;
-
div = $.el('div', {
className: "soundcloud",
name: "soundcloud"
@@ -4515,7 +4359,6 @@
regExp: /.*(?:pastebin.com\/(?!u\/))([^#\&\?]*).*/,
el: function() {
var div;
-
return div = $.el('iframe', {
src: "http://pastebin.com/embed_iframe.php?i=" + this.name
});
@@ -4525,7 +4368,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"
});
@@ -4536,7 +4378,6 @@
},
text: function() {
var file, response;
-
response = JSON.parse(this.responseText).files;
for (file in response) {
if (response.hasOwnProperty(file)) {
@@ -4557,14 +4398,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:
@@ -4606,7 +4445,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];
@@ -4630,7 +4468,6 @@
QR = {
init: function() {
var sc;
-
if (!Conf['Quick Reply']) {
return;
}
@@ -4677,7 +4514,6 @@
},
initReady: function() {
var link;
-
QR.postingIsEnabled = !!$.id('postForm');
if (!QR.postingIsEnabled) {
return;
@@ -4697,13 +4533,11 @@
$.before($.id('postForm'), link);
$.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);
});
@@ -4733,7 +4567,6 @@
},
open: function() {
var err;
-
if (QR.nodes) {
QR.nodes.el.hidden = false;
QR.unhide();
@@ -4752,7 +4585,6 @@
},
close: function() {
var i, _i, _len, _ref;
-
if (QR.req) {
QR.abort();
return;
@@ -4799,7 +4631,6 @@
},
error: function(err) {
var el;
-
QR.open();
if (typeof err === 'string') {
el = $.tn(err);
@@ -4827,7 +4658,6 @@
notifications: [],
cleanNotifications: function() {
var notification, _i, _len, _ref;
-
_ref = QR.notifications;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
notification = _ref[_i];
@@ -4837,7 +4667,6 @@
},
status: function() {
var disabled, status, value;
-
if (!QR.nodes) {
return;
}
@@ -4858,7 +4687,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: [],
@@ -4878,7 +4706,6 @@
},
parseItem: function(item, types) {
var boards, match, type, val, _ref, _ref1;
-
if (item[0] === '#') {
return;
}
@@ -4907,7 +4734,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];
@@ -4921,7 +4747,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;
}
@@ -4930,7 +4755,6 @@
get: function(cb) {
return $.get('QR.persona', {}, function(_arg) {
var persona;
-
persona = _arg['QR.persona'];
return cb(persona);
});
@@ -4938,7 +4762,6 @@
set: function(post) {
return $.get('QR.persona', {}, function(_arg) {
var persona;
-
persona = _arg['QR.persona'];
persona = {
name: post.name,
@@ -4952,7 +4775,6 @@
cooldown: {
init: function() {
var board;
-
if (!Conf['Cooldown']) {
return;
}
@@ -4994,7 +4816,6 @@
},
sync: function(cooldowns) {
var id;
-
for (id in cooldowns) {
QR.cooldown.cooldowns[id] = cooldowns[id];
}
@@ -5002,7 +4823,6 @@
},
set: function(data) {
var cooldown, delay, hasFile, isReply, isSage, post, req, start, type, upSpd;
-
if (!Conf['Cooldown']) {
return;
}
@@ -5042,7 +4862,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;
@@ -5096,7 +4915,6 @@
},
quote: function(e) {
var OP, caretPos, com, index, post, range, s, sel, selectionRoot, text, thread, _ref;
-
if (e != null) {
e.preventDefault();
}
@@ -5136,7 +4954,6 @@
},
characterCount: function() {
var count, counter;
-
counter = QR.nodes.charCount;
count = QR.nodes.com.textLength;
counter.textContent = count;
@@ -5145,7 +4962,6 @@
},
drag: function(e) {
var toggle;
-
toggle = e.type === 'dragstart' ? $.off : $.on;
toggle(d, 'dragover', QR.dragOver);
return toggle(d, 'drop', QR.dropFile);
@@ -5165,7 +4981,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++) {
@@ -5193,7 +5008,6 @@
},
fileInput: function(files) {
var file, length, max, post, _i, _len;
-
if (this instanceof Element) {
files = __slice.call(this.files);
QR.nodes.fileInput.value = null;
@@ -5242,7 +5056,6 @@
function _Class(select) {
var el, event, prev, _i, _len, _ref,
_this = this;
-
el = $.el('a', {
className: 'qr-preview',
draggable: true,
@@ -5296,7 +5109,6 @@
_Class.prototype.rm = function() {
var index;
-
$.rm(this.nodes.el);
index = QR.posts.indexOf(this);
if (QR.posts.length === 1) {
@@ -5314,7 +5126,6 @@
_Class.prototype.lock = function(lock) {
var name, _i, _len, _ref;
-
if (lock == null) {
lock = true;
}
@@ -5339,7 +5150,6 @@
_Class.prototype.select = function() {
var rectEl, rectList;
-
if (QR.selected) {
QR.selected.nodes.el.id = null;
QR.selected.forceSave();
@@ -5356,7 +5166,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];
@@ -5368,7 +5177,6 @@
_Class.prototype.save = function(input) {
var value, _ref;
-
if (input.type === 'checkbox') {
this.spoiler = input.checked;
return;
@@ -5387,7 +5195,6 @@
_Class.prototype.forceSave = function() {
var name, _i, _len, _ref;
-
if (this !== QR.selected) {
return;
}
@@ -5419,7 +5226,6 @@
_Class.prototype.setThumbnail = function(fileURL) {
var img, reader,
_this = this;
-
if (!window.URL) {
if (!fileURL) {
reader = new FileReader();
@@ -5435,7 +5241,6 @@
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;
@@ -5515,11 +5320,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;
@@ -5557,7 +5360,6 @@
_Class.prototype.drop = function() {
var el, index, newIndex, oldIndex, post;
-
el = $('.drag', this.parentNode);
$.rmClass(el, 'drag');
$.rmClass(this, 'over');
@@ -5592,7 +5394,6 @@
ready: function() {
var imgContainer, input, observer, setLifetime,
_this = this;
-
setLifetime = function(e) {
return _this.lifetime = e.detail;
};
@@ -5634,7 +5435,6 @@
});
$.get('captchas', [], function(_arg) {
var captchas;
-
captchas = _arg.captchas;
return _this.sync(captchas);
});
@@ -5649,7 +5449,6 @@
},
getOne: function() {
var captcha, challenge, response;
-
this.clear();
if (captcha = this.captchas.shift()) {
challenge = captcha.challenge, response = captcha.response;
@@ -5674,7 +5473,6 @@
},
save: function() {
var response;
-
if (!(response = this.nodes.input.value.trim())) {
return;
}
@@ -5689,7 +5487,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) {
@@ -5707,7 +5504,6 @@
},
load: function() {
var challenge;
-
if (!this.nodes.challenge.firstChild) {
return;
}
@@ -5720,7 +5516,6 @@
},
count: function() {
var count;
-
count = this.captchas.length;
this.nodes.input.placeholder = (function() {
switch (count) {
@@ -5753,7 +5548,6 @@
},
dialog: function() {
var dialog, mimeTypes, name, nodes, thread, _i, _len, _ref;
-
dialog = UI.dialog('qr', 'top:0;right:0;', " ");
QR.nodes = nodes = {
el: dialog,
@@ -5856,7 +5650,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();
}
@@ -5942,7 +5735,7 @@
QR.cooldown.auto = false;
QR.status();
return QR.error($.el('span', {
- innerHTML: "4chan X encountered an error while posting. Please try again. \n[?]"
+ innerHTML: "4chan X encountered an error while posting. \n[Banned?] [More info]"
}));
}
};
@@ -5969,7 +5762,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];
@@ -6072,7 +5864,6 @@
FappeTyme = {
init: function() {
var el, input;
-
if (!Conf['Fappe Tyme'] || g.VIEW === 'catalog' || g.BOARD === 'f') {
return;
}
@@ -6124,7 +5915,6 @@
},
node: function() {
var thumb, _ref;
-
if (!((_ref = this.file) != null ? _ref.isImage : void 0)) {
return;
}
@@ -6149,7 +5939,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';
@@ -6183,7 +5972,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);
@@ -6228,7 +6016,6 @@
},
expand: function(post, src) {
var img, thumb;
-
thumb = post.file.thumb;
if (post.isHidden || post.file.isExpanded || $.hasClass(thumb, 'expanding')) {
return;
@@ -6256,7 +6043,6 @@
},
completeExpand: function(post) {
var prev, thumb;
-
thumb = post.file.thumb;
if (!$.hasClass(thumb, 'expanding')) {
return;
@@ -6270,7 +6056,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)) {
@@ -6283,7 +6068,6 @@
},
error: function() {
var URL, post, src, timeoutID;
-
post = Get.postFromNode(this);
$.rm(this);
delete post.file.fullImage;
@@ -6309,7 +6093,6 @@
return $.ajax("//api.4chan.org/" + post.board + "/res/" + post.thread + ".json", {
onload: function() {
var postObj, _i, _len, _ref;
-
if (this.status !== 200) {
return;
}
@@ -6333,7 +6116,6 @@
menu: {
init: function() {
var conf, createSubEntry, el, key, subEntries, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Image Expansion']) {
return;
}
@@ -6357,7 +6139,6 @@
},
createSubEntry: function(type, config) {
var input, label;
-
label = $.el('label', {
innerHTML: " " + type
});
@@ -6393,7 +6174,6 @@
},
node: function() {
var _ref;
-
if (!((_ref = this.file) != null ? _ref.isImage : void 0)) {
return;
}
@@ -6401,7 +6181,6 @@
},
mouseover: function(e) {
var el, post;
-
post = Get.postFromNode(this);
el = $.el('img', {
id: 'ihover',
@@ -6423,7 +6202,6 @@
error: function() {
var URL, post, src, timeoutID,
_this = this;
-
if (!doc.contains(this)) {
return;
}
@@ -6448,7 +6226,6 @@
return $.ajax("//api.4chan.org/" + post.board + "/res/" + post.thread + ".json", {
onload: function() {
var postObj, _i, _len, _ref;
-
if (this.status !== 200) {
return;
}
@@ -6474,7 +6251,6 @@
ImageLoader = {
init: function() {
var prefetch;
-
if (g.VIEW === 'catalog') {
return;
}
@@ -6501,7 +6277,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;
}
@@ -6523,7 +6298,6 @@
},
toggle: function() {
var enabled, id, post, _ref;
-
enabled = Conf['prefetch'] = this.checked;
if (enabled) {
_ref = g.threads["" + g.BOARD.ID + "." + g.THREADID].posts;
@@ -6547,7 +6321,6 @@
},
node: function() {
var thumb, _ref;
-
if (this.isClone || !((_ref = this.file) != null ? _ref.isSpoiler : void 0)) {
return;
}
@@ -6560,7 +6333,6 @@
ArchiveLink = {
init: function() {
var div, entry, type, _i, _len, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Archive Link']) {
return;
}
@@ -6573,7 +6345,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,
@@ -6592,14 +6363,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,
@@ -6609,7 +6378,6 @@
return true;
} : function(post) {
var value;
-
value = Filter[type](post);
if (!value) {
return false;
@@ -6632,7 +6400,6 @@
DeleteLink = {
init: function() {
var div, fileEl, fileEntry, postEl, postEntry;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Delete Link']) {
return;
}
@@ -6660,7 +6427,6 @@
el: fileEl,
open: function(_arg) {
var file;
-
file = _arg.file;
if (!file || file.isDead) {
return false;
@@ -6676,7 +6442,6 @@
order: 40,
open: function(post) {
var node;
-
if (post.isDead || post.board.ID === 'q') {
return false;
}
@@ -6691,7 +6456,6 @@
},
"delete": function() {
var fileOnly, form, link, post;
-
post = DeleteLink.post;
if (DeleteLink.cooldown.counting === post) {
return;
@@ -6720,7 +6484,6 @@
},
load: function(link, post, fileOnly, html) {
var msg, s, tmpDoc;
-
tmpDoc = d.implementation.createHTMLDocument('');
tmpDoc.documentElement.innerHTML = html;
if (tmpDoc.title === '4chan - Banned') {
@@ -6743,7 +6506,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,
@@ -6777,7 +6539,6 @@
DownloadLink = {
init: function() {
var a;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Download Link']) {
return;
}
@@ -6791,7 +6552,6 @@
order: 100,
open: function(_arg) {
var file;
-
file = _arg.file;
if (!file) {
return false;
@@ -6817,7 +6577,6 @@
},
node: function() {
var button;
-
button = Menu.makeButton(this);
if (this.isClone) {
$.replace($('.menu-button', this.nodes.info), button);
@@ -6827,11 +6586,9 @@
},
makeButton: (function() {
var a;
-
a = null;
return function(post) {
var clone;
-
a || (a = $.el('a', {
className: 'menu-button fourchanx-link',
innerHTML: '',
@@ -6848,7 +6605,6 @@
})(),
toggle: function(e) {
var post;
-
post = this.dataset.clone ? Get.postFromNode(this) : g.posts[this.dataset.postid];
return Menu.menu.toggle(e, this, post);
}
@@ -6857,7 +6613,6 @@
ReportLink = {
init: function() {
var a;
-
if (g.VIEW === 'catalog' || !Conf['Menu'] || !Conf['Report Link']) {
return;
}
@@ -6879,7 +6634,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();
@@ -6892,7 +6646,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;
@@ -6965,7 +6718,6 @@
init: function() {
var sc,
_this = this;
-
if (g.VIEW !== 'thread' || !Conf['Thread Stats']) {
return;
}
@@ -6995,7 +6747,6 @@
},
node: function() {
var ID, fileCount, post, postCount, _ref;
-
postCount = 0;
fileCount = 0;
_ref = this.posts;
@@ -7013,7 +6764,6 @@
},
onUpdate: function(e) {
var fileCount, postCount, _ref;
-
if (e.detail[404]) {
return;
}
@@ -7022,7 +6772,6 @@
},
update: function(postCount, fileCount) {
var fileCountEl, postCountEl, thread;
-
thread = ThreadStats.thread, postCountEl = ThreadStats.postCountEl, fileCountEl = ThreadStats.fileCountEl;
postCountEl.textContent = postCount;
fileCountEl.textContent = fileCount;
@@ -7049,7 +6798,6 @@
},
onThreadsLoad: function() {
var page, pages, thread, _i, _j, _len, _len1, _ref;
-
if (!Conf["Page Count in Stats"]) {
return;
}
@@ -7077,7 +6825,6 @@
init: function() {
var checked, conf, el, input, name, sc, settings, subEntries, _ref,
_this = this;
-
if (g.VIEW !== 'thread' || !Conf['Thread Updater']) {
return;
}
@@ -7228,7 +6975,6 @@
},
interval: function() {
var val;
-
val = +this.value;
if (val < 1) {
val = 1;
@@ -7238,7 +6984,6 @@
},
load: function() {
var klass, req, text, _ref;
-
req = ThreadUpdater.req;
switch (req.status) {
case 200:
@@ -7282,7 +7027,6 @@
},
getInterval: function() {
var i, j;
-
i = ThreadUpdater.interval;
j = Math.min(ThreadUpdater.outdateCount, 10);
if (!d.hidden) {
@@ -7292,14 +7036,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;
@@ -7312,7 +7054,6 @@
},
timeout: function() {
var n;
-
ThreadUpdater.timeoutID = setTimeout(ThreadUpdater.timeout, 1000);
if (!(n = --ThreadUpdater.seconds)) {
return ThreadUpdater.update();
@@ -7325,7 +7066,6 @@
},
update: function() {
var url;
-
if (!ThreadUpdater.online) {
return;
}
@@ -7350,7 +7090,6 @@
},
updateThreadStatus: function(title, OP) {
var icon, message, root, titleLC;
-
titleLC = title.toLowerCase();
if (ThreadUpdater.thread["is" + title] === !!OP[titleLC]) {
return;
@@ -7377,7 +7116,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);
@@ -7463,7 +7201,6 @@
}
$.queueTask(function() {
var length, threadID;
-
threadID = ThreadUpdater.thread.ID;
length = $$('.thread > .postContainer', ThreadUpdater.root).length;
return Fourchan.parseThread(threadID, length - count, length);
@@ -7484,7 +7221,6 @@
ThreadWatcher = {
init: function() {
var sc;
-
if (!Conf['Thread Watcher']) {
return;
}
@@ -7518,7 +7254,6 @@
node: function() {
var favicon,
_this = this;
-
favicon = $.el('a', {
className: 'watch-thread-link',
href: 'javascript:;'
@@ -7538,7 +7273,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']);
@@ -7587,13 +7321,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']) {
@@ -7614,7 +7346,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) {
@@ -7627,7 +7358,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] = {
@@ -7673,7 +7403,6 @@
},
ready: function() {
var ID, post, posts, _ref;
-
$.off(d, '4chanXInitFinished', Unread.ready);
posts = [];
_ref = Unread.thread.posts;
@@ -7690,7 +7419,6 @@
},
scroll: function() {
var checkPosition, hash, onload, post, posts, prevID, root;
-
if ((hash = location.hash.match(/\d+/)) && hash[0] in Unread.thread.posts) {
return;
}
@@ -7722,7 +7450,6 @@
}
checkPosition = function(target) {
var height, top, _ref;
-
_ref = target.getBoundingClientRect(), top = _ref.top, height = _ref.height;
return top + height - doc.clientHeight > 0;
};
@@ -7730,7 +7457,6 @@
},
sync: function() {
var lastReadPost;
-
lastReadPost = Unread.db.get({
boardID: Unread.thread.board.ID,
threadID: Unread.thread.ID,
@@ -7747,7 +7473,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;
@@ -7775,7 +7500,6 @@
},
addPostQuotingYou: function(post) {
var quotelink, _i, _len, _ref;
-
if (!QR.db) {
return;
}
@@ -7796,7 +7520,6 @@
},
readSinglePost: function(post) {
var i;
-
if ((i = Unread.posts.indexOf(post)) === -1) {
return;
}
@@ -7812,7 +7535,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) {
@@ -7823,7 +7545,6 @@
},
read: $.debounce(50, function(e) {
var ID, bottom, height, i, post, posts, read;
-
if (d.hidden || !Unread.posts.length) {
return;
}
@@ -7857,7 +7578,6 @@
}),
setLine: function(force) {
var post, root;
-
if (!(d.hidden || force === true)) {
return;
}
@@ -7872,7 +7592,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);
@@ -7896,7 +7615,6 @@
file: {},
init: function() {
var archive, arr, boardID, data, id, name, type, _i, _len, _ref, _ref1, _ref2, _ref3;
-
_ref = Conf['selectedArchives'];
for (boardID in _ref) {
data = _ref[boardID];
@@ -8023,7 +7741,6 @@
},
to: function(dest, data) {
var archive;
-
archive = (dest === 'search' ? Redirect.thread : Redirect[dest])[data.boardID];
if (!archive) {
return '';
@@ -8032,7 +7749,6 @@
},
protocol: function(archive) {
var protocol;
-
protocol = location.protocol;
if (!archive[protocol.slice(0, -1)]) {
protocol = protocol === 'https:' ? 'http:' : 'https:';
@@ -8041,7 +7757,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') {
@@ -8054,7 +7769,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)) {
@@ -8064,13 +7778,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);
@@ -8089,7 +7801,6 @@
},
setup: function() {
var btn, entry, psa;
-
$.off(d, '4chanXInitFinished', PSAHiding.setup);
if (!(psa = $.id('globalMessage'))) {
$.rmClass(doc, 'hide-announcement');
@@ -8118,7 +7829,6 @@
$.on(btn, 'click', PSAHiding.toggle);
$.get('hiddenPSA', 0, function(_arg) {
var hiddenPSA;
-
hiddenPSA = _arg.hiddenPSA;
PSAHiding.sync(hiddenPSA);
$.before(psa, btn);
@@ -8128,7 +7838,6 @@
},
toggle: function(e) {
var UTC;
-
if ($.hasClass(this, 'hide-announcement')) {
UTC = +$.id('globalMessage').dataset.utc;
$.set('hiddenPSA', UTC);
@@ -8140,7 +7849,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') {
@@ -8152,7 +7860,6 @@
CatalogLinks = {
init: function() {
var el, input;
-
if (!Conf['Catalog Links']) {
return;
}
@@ -8176,14 +7883,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++) {
@@ -8217,7 +7922,6 @@
},
node: function(post) {
var str, uid;
-
if (!(uid = $('.hand', this.nodes.uniqueID))) {
return;
}
@@ -8229,7 +7933,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;
@@ -8238,13 +7941,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;
@@ -8283,7 +7984,6 @@
Emoji = {
init: function() {
var css, icon, name, pos, _ref;
-
if (!Conf['Emoji']) {
return;
}
@@ -8353,7 +8053,6 @@
},
node: function() {
var a;
-
if (a = $('.abbr > a:not([onclick])', this.nodes.comment)) {
return $.on(a, 'click', ExpandComment.cb);
}
@@ -8361,14 +8060,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;
@@ -8384,7 +8081,6 @@
},
contract: function(post) {
var a;
-
if (!post.nodes.shortComment) {
return;
}
@@ -8395,7 +8091,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 + ")";
@@ -8452,7 +8147,6 @@
},
node: function() {
var a, span;
-
if (!(span = $('.summary', this.OP.nodes.root.parentNode))) {
return;
}
@@ -8466,13 +8160,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) {
@@ -8541,7 +8233,6 @@
},
parse: function(req, thread, a) {
var link, node, nodes, post, posts, replies, reply, spoilerRange, status, _i, _len;
-
if (a.textContent[0] === '+') {
return;
}
@@ -8599,7 +8290,6 @@
},
createFunc: function(format) {
var code;
-
code = format.replace(/%(.)/g, function(s, c) {
if (c in FileInfo.formatters) {
return "' + FileInfo.formatters." + c + ".call(post) + '";
@@ -8611,7 +8301,6 @@
},
convertUnit: function(size, unit) {
var i;
-
if (unit === 'B') {
return "" + (size.toFixed()) + " Bytes";
}
@@ -8642,7 +8331,6 @@
},
n: function() {
var fullname, shortname;
-
fullname = this.file.name;
shortname = Build.shortFilename(this.file.name, this.isReply);
if (fullname === shortname) {
@@ -8686,7 +8374,6 @@
Fourchan = {
init: function() {
var board;
-
if (g.VIEW === 'catalog') {
return;
}
@@ -8708,7 +8395,6 @@
},
code: function() {
var pre, _i, _len, _ref;
-
if (this.isClone) {
return;
}
@@ -8738,13 +8424,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]');
@@ -8757,7 +8441,6 @@
},
keydown: function(e) {
var form, key, notification, notifications, op, target, thread, threadRoot, _i, _len;
-
if (!(key = Keybinds.keyCode(e))) {
return;
}
@@ -8932,7 +8615,6 @@
},
keyCode: function(e) {
var kc, key;
-
key = (function() {
switch (kc = e.keyCode) {
case 8:
@@ -8988,7 +8670,6 @@
},
tags: function(tag, ta) {
var range, selEnd, selStart, value;
-
value = ta.value;
selStart = ta.selectionStart;
selEnd = ta.selectionEnd;
@@ -8999,13 +8680,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 {
@@ -9015,7 +8694,6 @@
},
open: function(thread, tab) {
var url;
-
if (g.VIEW !== 'index') {
return;
}
@@ -9028,7 +8706,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');
@@ -9088,7 +8765,6 @@
Nav = {
init: function() {
var append, next, prev, span;
-
switch (g.VIEW) {
case 'index':
if (!Conf['Index Navigation']) {
@@ -9139,7 +8815,6 @@
},
getThread: function(full) {
var headRect, i, rect, thread, threads, topMargin, _i, _len;
-
if (Conf['Bottom header'] || !Conf['Fixed Header']) {
topMargin = 0;
} else {
@@ -9165,7 +8840,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 && Math.ceil(top) < 0) || (delta === +1 && top > 1))) {
@@ -9191,7 +8865,6 @@
},
node: function() {
var dateEl;
-
if (this.isClone) {
return;
}
@@ -9201,7 +8874,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) {
@@ -9212,7 +8884,6 @@
stale: [],
flush: function() {
var now, update, _i, _len, _ref;
-
if (d.hidden) {
return;
}
@@ -9228,16 +8899,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);
@@ -9278,7 +8946,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];
@@ -9298,7 +8965,6 @@
},
ready: function() {
var field;
-
field = $.id('recaptcha_response_field');
$.on(field, 'keydown', function(e) {
if (e.keyCode === 8 && !field.value) {
@@ -9307,7 +8973,6 @@
});
return $.on($('form'), 'submit', function(e) {
var response;
-
e.preventDefault();
response = field.value.trim();
if (!/\s/.test(response)) {
@@ -9321,7 +8986,6 @@
Sauce = {
init: function() {
var err, link, links, _i, _len, _ref;
-
if (g.VIEW === 'catalog' || !Conf['Sauce']) {
return;
}
@@ -9353,7 +9017,6 @@
},
createSauceLink: function(link) {
var m, text;
-
link = link.replace(/%(T?URL|MD5|board)/ig, function(parameter) {
switch (parameter) {
case '%TURL':
@@ -9374,7 +9037,6 @@
},
node: function() {
var link, nodes, _i, _len, _ref;
-
if (this.isClone || !this.file) {
return;
}
@@ -9407,7 +9069,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) + '";
@@ -9492,7 +9153,6 @@
Settings = {
init: function() {
var link, settings;
-
link = $.el('a', {
className: 'settings-link',
textContent: 'Settings',
@@ -9502,7 +9162,6 @@
Header.addShortcut(link);
$.get('previousversion', null, function(item) {
var changelog, el, previous;
-
if (previous = item['previousversion']) {
if (previous === g.VERSION) {
return;
@@ -9540,7 +9199,6 @@
},
open: function(openSection) {
var dialog, html, link, links, overlay, section, sectionToOpen, _i, _len, _ref;
-
$.off(d, '4chanXInitFinished', Settings.open);
if (Settings.dialog) {
return;
@@ -9593,7 +9251,6 @@
sections: [],
addSection: function(title, open) {
var hyphenatedTitle, _ref;
-
if (typeof title !== 'string') {
_ref = title.detail, title = _ref.title, open = _ref.open;
}
@@ -9606,7 +9263,6 @@
},
openSection: function() {
var section, selected;
-
if (selected = $('.tab-selected', Settings.dialog)) {
$.rmClass(selected, 'tab-selected');
}
@@ -9620,7 +9276,6 @@
},
main: function(section) {
var arr, button, description, div, fs, hiddenNum, input, inputs, items, key, obj, _ref;
-
items = {};
inputs = {};
_ref = Config.main;
@@ -9645,7 +9300,6 @@
}
$.get(items, function(items) {
var val;
-
for (key in items) {
val = items[key];
inputs[key].checked = val;
@@ -9660,7 +9314,6 @@
boards: {}
}, function(item) {
var ID, board, thread, _ref1;
-
_ref1 = item.hiddenThreads.boards;
for (ID in _ref1) {
board = _ref1[ID];
@@ -9675,7 +9328,6 @@
boards: {}
}, function(item) {
var ID, board, post, thread, _ref1;
-
_ref1 = item.hiddenPosts.boards;
for (ID in _ref1) {
board = _ref1[ID];
@@ -9695,7 +9347,6 @@
boards: {}
}, function(item) {
var boardID;
-
for (boardID in item.hiddenThreads.boards) {
localStorage.removeItem("4chan-hide-t-" + boardID);
}
@@ -9706,7 +9357,6 @@
},
"export": function(now, data) {
var a, db, _i, _len;
-
if (typeof now !== 'number') {
now = Date.now();
data = {
@@ -9741,7 +9391,6 @@
},
onImport: function() {
var file, output, reader;
-
if (!(file = this.files[0])) {
return;
}
@@ -9753,7 +9402,6 @@
reader = new FileReader();
reader.onload = function(e) {
var data, err;
-
try {
data = JSON.parse(e.target.result);
Settings.loadSettings(data);
@@ -9770,7 +9418,6 @@
},
loadSettings: function(data) {
var key, val, version, _ref;
-
version = data.version.split('.');
if (version[0] === '2') {
data = Settings.convertSettings(data, {
@@ -9860,7 +9507,6 @@
},
convertSettings: function(data, map) {
var newKey, prevKey;
-
for (prevKey in map) {
newKey = map[prevKey];
if (newKey) {
@@ -9872,7 +9518,6 @@
},
filter: function(section) {
var select;
-
section.innerHTML = "";
select = $('select', section);
$.on(select, 'change', Settings.selectFilter);
@@ -9880,7 +9525,6 @@
},
selectFilter: function() {
var div, name, ta;
-
div = this.nextElementSibling;
if ((name = this.value) !== 'guide') {
$.rmAll(div);
@@ -9900,7 +9544,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) {
@@ -9910,7 +9553,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 = {};
@@ -9930,7 +9572,6 @@
$.on(ta, 'change', $.cb.value);
$.get(items, function(items) {
var key, val;
-
for (key in items) {
val = items[key];
if (['emojiPos'].contains(key)) {
@@ -10001,7 +9642,6 @@
});
$.get('selectedArchives', Conf['selectedArchives'], function(_arg) {
var option, selectedArchives, type;
-
selectedArchives = _arg.selectedArchives;
for (boardID in selectedArchives) {
data = selectedArchives[boardID];
@@ -10016,7 +9656,6 @@
},
addArchiveCell: function(boardID, data, type) {
var archive, i, length, options, select, td;
-
length = data[type].length;
td = $.el('td', {
className: 'archive-cell'
@@ -10046,10 +9685,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);
@@ -10060,7 +9697,6 @@
},
time: function() {
var funk;
-
funk = Time.createFunc(this.value);
return this.nextElementSibling.textContent = funk(Time, new Date());
},
@@ -10069,7 +9705,6 @@
},
fileInfo: function() {
var data, funk;
-
data = {
isReply: true,
file: {
@@ -10108,7 +9743,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 = {};
@@ -10129,7 +9763,6 @@
}
return $.get(items, function(items) {
var val;
-
for (key in items) {
val = items[key];
inputs[key].value = val;
@@ -10138,7 +9771,6 @@
},
keybind: function(e) {
var key;
-
if (e.keyCode === 9) {
return;
}
@@ -10155,10 +9787,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') {
@@ -10182,13 +9812,11 @@
$.on(d, '4chanMainInit', Main.initStyle);
return $.asap((function() {
var _ref;
-
return d.head && $('link[rel="shortcut icon"]', d.head) || ((_ref = d.readyState) === 'interactive' || _ref === 'complete');
}), Main.initStyle);
},
initFeatures: function(items) {
var init, pathname, _ref;
-
Conf = items;
pathname = location.pathname.split('/');
g.BOARD = new Board(pathname[1]);
@@ -10217,7 +9845,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('/');
@@ -10234,7 +9861,6 @@
}
init = function(features) {
var err, module, name;
-
for (name in features) {
module = features[name];
try {
@@ -10310,7 +9936,6 @@
},
initStyle: function() {
var mainStyleSheet, observer, setStyle, style, styleSheets, _ref;
-
$.off(d, '4chanMainInit', Main.initStyle);
if (!Main.isThisPageLegit() || $.hasClass(doc, 'fourchan-x')) {
return;
@@ -10332,7 +9957,6 @@
styleSheets = $$('link[rel="alternate stylesheet"]', d.head);
setStyle = function() {
var styleSheet, _i, _len;
-
$.rmClass(doc, style);
for (_i = 0, _len = styleSheets.length; _i < _len; _i++) {
styleSheet = styleSheets[_i];
@@ -10359,7 +9983,6 @@
},
initReady: function() {
var board, boardChild, err, errors, href, passLink, posts, styleSelector, thread, threadChild, 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', {
@@ -10434,7 +10057,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++) {
@@ -10462,11 +10084,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);
@@ -10485,7 +10105,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];
@@ -10519,7 +10138,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);
@@ -10539,7 +10157,6 @@
},
handleErrors: function(errors) {
var div, error, logs, _i, _len;
-
if (!(errors instanceof Array)) {
error = errors;
} else if (errors.length === 1) {
@@ -10554,7 +10171,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', {
@@ -10568,7 +10184,6 @@
},
parseError: function(data) {
var error, message;
-
Main.logError(data);
message = $.el('div', {
textContent: data.message
@@ -10585,7 +10200,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');
}
diff --git a/src/Posting/QuickReply.coffee b/src/Posting/QuickReply.coffee
index 92860eb7c..59cfec1f0 100644
--- a/src/Posting/QuickReply.coffee
+++ b/src/Posting/QuickReply.coffee
@@ -1084,8 +1084,8 @@ QR =
QR.status()
QR.error $.el 'span',
innerHTML: """
- 4chan X encountered an error while posting. Please try again.
- [?]
+ 4chan X encountered an error while posting.
+ [Banned?] [More info]
"""
opts =
cred: true