Release 4chan X v1.11.0.0.

This commit is contained in:
ccd0 2015-06-14 01:24:04 -07:00
parent 81712c5cd9
commit 5f8267748d
13 changed files with 186 additions and 210 deletions

View File

@ -2,6 +2,15 @@ Sometimes the changelog has notes (not comprehensive) acknowledging people's wor
The links to individual versions below are to copies of the script with the update URL removed. If you want automatic updates, install the script from the links on the [main page](https://github.com/ccd0/4chan-x).
## v1.11.0
**v1.11.0.0** *(2015-06-14)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.0.0/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.0.0/builds/4chan-X-noupdate.crx "Chromium version")]
- Based on v1.10.14.2.
- Gallery now preloads the next image in sequence.
- `Stretch to Fit` option added to gallery.
- Various bug fixes.
- Drop workarounds for old versions of Chromium (< v34).
### v1.10.14
**v1.10.14.2** *(2015-06-11)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.10.14.2/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.10.14.2/builds/4chan-X-noupdate.crx "Chromium version")]

Binary file not shown.

View File

@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X beta
// @version 1.10.14.2
// @version 1.11.0.0
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X

View File

@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X beta
// @version 1.10.14.2
// @version 1.11.0.0
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -267,6 +267,7 @@
'Hide Thumbnails': [false],
'Fit Width': [true],
'Fit Height': [true],
'Stretch to Fit': [false],
'Scroll to Post': [true],
'Slide Delay': [6.0]
},
@ -396,7 +397,7 @@
doc = d.documentElement;
g = {
VERSION: '1.10.14.2',
VERSION: '1.11.0.0',
NAMESPACE: '4chan X.',
boards: {}
};
@ -2365,26 +2366,7 @@
Polyfill = {
init: function() {
this.notificationPermission();
this.toBlob();
return this.visibility();
},
notificationPermission: function() {
if (!window.Notification || 'permission' in Notification || !window.webkitNotifications) {
return;
}
return Object.defineProperty(Notification, 'permission', {
get: function() {
switch (webkitNotifications.checkPermission()) {
case 0:
return 'granted';
case 1:
return 'default';
case 2:
return 'denied';
}
}
});
return this.toBlob();
},
toBlob: function() {
var base1;
@ -2400,26 +2382,6 @@
type: 'image/png'
}));
});
},
visibility: function() {
if ('visibilityState' in d) {
return;
}
Object.defineProperties(HTMLDocument.prototype, {
visibilityState: {
get: function() {
return this.webkitVisibilityState;
}
},
hidden: {
get: function() {
return this.webkitHidden;
}
}
});
return $.on(d, 'webkitvisibilitychange', function() {
return $.event('visibilitychange');
});
}
};
@ -7369,7 +7331,7 @@
event = node.nodeName === 'SELECT' ? 'change' : 'input';
$.on(nodes[name], event, save);
}
if (Conf['Remember QR Size']) {
if ((typeof chrome === "undefined" || chrome === null) && Conf['Remember QR Size']) {
$.get('QR Size', '', function(item) {
return nodes.com.style.cssText = item['QR Size'];
});
@ -9359,29 +9321,43 @@
Gallery.images.push(thumb);
return $.add(Gallery.nodes.thumbs, thumb);
},
load: function(thumb, errorCB) {
var elType, ext, file;
ext = thumb.href.match(/\w*$/);
elType = {
'webm': 'video',
'pdf': 'iframe'
}[ext] || 'img';
file = $.el(elType, {
title: thumb.title
});
$.extend(file.dataset, thumb.dataset);
$.on(file, 'error', errorCB);
file.src = thumb.href;
return file;
},
open: function(thumb) {
var el, elType, file, name, newID, nodes, oldID, post, slideshow;
var el, file, newID, nodes, oldID, post, ref;
nodes = Gallery.nodes;
name = nodes.name;
oldID = +nodes.current.dataset.id;
newID = +thumb.dataset.id;
slideshow = Gallery.slideshow && (newID > oldID || (oldID === Gallery.images.length - 1 && newID === 0));
if (el = $('.gal-highlight', nodes.thumbs)) {
if (el = Gallery.images[oldID]) {
$.rmClass(el, 'gal-highlight');
}
$.addClass(thumb, 'gal-highlight');
elType = /\.webm$/.test(thumb.href) ? 'video' : /\.pdf$/.test(thumb.href) ? 'iframe' : 'img';
$[elType === 'iframe' ? 'addClass' : 'rmClass'](doc, 'gal-pdf');
file = $.el(elType, {
title: name.download = name.textContent = thumb.title
});
$.extend(file.dataset, thumb.dataset);
$.on(file, 'error', Gallery.error);
file.src = name.href = thumb.href;
nodes.thumbs.scrollTop = thumb.offsetTop + thumb.offsetHeight / 2 - nodes.thumbs.clientHeight / 2;
if (((ref = Gallery.cache) != null ? ref.dataset.id : void 0) === '' + newID) {
file = Gallery.cache;
$.off(file, 'error', Gallery.cacheError);
$.on(file, 'error', Gallery.error);
} else {
file = Gallery.load(thumb, Gallery.error);
}
$.off(nodes.current, 'error', Gallery.error);
ImageCommon.pause(nodes.current);
$.replace(nodes.current, file);
if (elType === 'video') {
nodes.current = file;
if (file.nodeName === 'VIDEO') {
file.loop = true;
Volume.setup(file);
if (Conf['Autoplay']) {
@ -9391,11 +9367,14 @@
ImageCommon.addControls(file);
}
}
doc.classList.toggle('gal-pdf', file.nodeName === 'IFRAME');
Gallery.cb.setHeight();
nodes.count.textContent = +thumb.dataset.id + 1;
nodes.current = file;
nodes.name.download = nodes.name.textContent = thumb.title;
nodes.name.href = thumb.href;
nodes.frame.scrollTop = 0;
nodes.next.focus();
if (slideshow) {
if (Gallery.slideshow && (newID > oldID || (oldID === Gallery.images.length - 1 && newID === 0))) {
Gallery.setupTimer();
} else {
Gallery.cb.stop();
@ -9403,7 +9382,7 @@
if (Conf['Scroll to Post'] && (post = g.posts[file.dataset.post])) {
Header.scrollTo(post.nodes.root);
}
return nodes.thumbs.scrollTop = thumb.offsetTop + thumb.offsetHeight / 2 - nodes.thumbs.clientHeight / 2;
return Gallery.cache = Gallery.load(Gallery.images[(newID + 1) % Gallery.images.length], Gallery.cacheError);
},
error: function() {
var ref;
@ -9425,6 +9404,9 @@
};
})(this));
},
cacheError: function() {
return delete Gallery.cache;
},
cleanupTimer: function() {
var current;
clearTimeout(Gallery.timeoutID);
@ -9586,6 +9568,11 @@
setFitness: function() {
return (this.checked ? $.addClass : $.rmClass)(doc, "gal-" + (this.name.toLowerCase().replace(/\s+/g, '-')));
},
setHeight: function() {
var current, dim, frame, height, ref, ref1, ref2, width;
ref = Gallery.nodes, current = ref.current, frame = ref.frame;
return current.style.minHeight = Conf['Stretch to Fit'] && (dim = (ref1 = g.posts[current.dataset.post]) != null ? ref1.file.dimensions : void 0) ? ((ref2 = dim.split('x'), width = ref2[0], height = ref2[1], ref2), Math.min(doc.clientHeight - 25, height / width * frame.clientWidth) + 'px') : null;
},
setDelay: function() {
return Gallery.delay = +this.value;
}
@ -9610,11 +9597,14 @@
var input, label;
label = UI.checkbox(name, name);
input = label.firstElementChild;
if (name === 'Fit Width' || name === 'Fit Height' || name === 'Hide Thumbnails') {
if (name === 'Hide Thumbnails' || name === 'Fit Width' || name === 'Fit Height') {
$.on(input, 'change', Gallery.cb.setFitness);
}
$.event('change', null, input);
$.on(input, 'change', $.cb.checked);
if (name === 'Hide Thumbnails' || name === 'Fit Width' || name === 'Fit Height' || name === 'Stretch to Fit') {
$.on(input, 'change', Gallery.cb.setHeight);
}
return {
el: label
};
@ -9623,7 +9613,7 @@
var delayInput, delayLabel, item, subEntries;
subEntries = (function() {
var k, len1, ref, results;
ref = ['Hide Thumbnails', 'Fit Width', 'Fit Height', 'Scroll to Post'];
ref = ['Hide Thumbnails', 'Fit Width', 'Fit Height', 'Stretch to Fit', 'Scroll to Post'];
results = [];
for (k = 0, len1 = ref.length; k < len1; k++) {
item = ref[k];
@ -10798,6 +10788,9 @@
},
wheel: function(e) {
var el, volume;
if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
return;
}
if (!(el = $('video:not([data-md5])', this))) {
return;
}
@ -15769,6 +15762,9 @@
div = $.el('div', {
innerHTML: "<label><input type=\"checkbox\" name=\"" + E(key) + "\">" + E(key) + "</label><span class=\"description\">: " + E(description) + "</span>"
});
if ((typeof chrome !== "undefined" && chrome !== null) && key === 'Remember QR Size') {
div.hidden = true;
}
input = $('input', div);
$.on(input, 'change', function() {
this.parentNode.parentNode.dataset.checked = this.checked;
@ -19074,13 +19070,6 @@
"}\n" +
".gal-fit-height .gal-image img,\n" +
".gal-fit-height .gal-image video {\n" +
" /*\n" +
" Chrome doesn't support viewpoint units in calc()\n" +
" http://bugs.chromium.org/168840\n" +
" \"It looks like the original author of viewport units in WebKit is not coming back to fix this stuff.\"\n" +
" Well, fuck.\n" +
" */\n" +
" max-height: 95vh;\n" +
" max-height: calc(100vh - 25px);\n" +
"}\n" +
".gal-image iframe {\n" +

Binary file not shown.

View File

@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X
// @version 1.10.14.2
// @version 1.11.0.0
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -266,6 +266,7 @@
'Hide Thumbnails': [false],
'Fit Width': [true],
'Fit Height': [true],
'Stretch to Fit': [false],
'Scroll to Post': [true],
'Slide Delay': [6.0]
},
@ -395,7 +396,7 @@
doc = d.documentElement;
g = {
VERSION: '1.10.14.2',
VERSION: '1.11.0.0',
NAMESPACE: '4chan X.',
boards: {}
};
@ -2364,26 +2365,7 @@
Polyfill = {
init: function() {
this.notificationPermission();
this.toBlob();
return this.visibility();
},
notificationPermission: function() {
if (!window.Notification || 'permission' in Notification || !window.webkitNotifications) {
return;
}
return Object.defineProperty(Notification, 'permission', {
get: function() {
switch (webkitNotifications.checkPermission()) {
case 0:
return 'granted';
case 1:
return 'default';
case 2:
return 'denied';
}
}
});
return this.toBlob();
},
toBlob: function() {
var base1;
@ -2399,26 +2381,6 @@
type: 'image/png'
}));
});
},
visibility: function() {
if ('visibilityState' in d) {
return;
}
Object.defineProperties(HTMLDocument.prototype, {
visibilityState: {
get: function() {
return this.webkitVisibilityState;
}
},
hidden: {
get: function() {
return this.webkitHidden;
}
}
});
return $.on(d, 'webkitvisibilitychange', function() {
return $.event('visibilitychange');
});
}
};
@ -7368,7 +7330,7 @@
event = node.nodeName === 'SELECT' ? 'change' : 'input';
$.on(nodes[name], event, save);
}
if (Conf['Remember QR Size']) {
if ((typeof chrome === "undefined" || chrome === null) && Conf['Remember QR Size']) {
$.get('QR Size', '', function(item) {
return nodes.com.style.cssText = item['QR Size'];
});
@ -9358,29 +9320,43 @@
Gallery.images.push(thumb);
return $.add(Gallery.nodes.thumbs, thumb);
},
load: function(thumb, errorCB) {
var elType, ext, file;
ext = thumb.href.match(/\w*$/);
elType = {
'webm': 'video',
'pdf': 'iframe'
}[ext] || 'img';
file = $.el(elType, {
title: thumb.title
});
$.extend(file.dataset, thumb.dataset);
$.on(file, 'error', errorCB);
file.src = thumb.href;
return file;
},
open: function(thumb) {
var el, elType, file, name, newID, nodes, oldID, post, slideshow;
var el, file, newID, nodes, oldID, post, ref;
nodes = Gallery.nodes;
name = nodes.name;
oldID = +nodes.current.dataset.id;
newID = +thumb.dataset.id;
slideshow = Gallery.slideshow && (newID > oldID || (oldID === Gallery.images.length - 1 && newID === 0));
if (el = $('.gal-highlight', nodes.thumbs)) {
if (el = Gallery.images[oldID]) {
$.rmClass(el, 'gal-highlight');
}
$.addClass(thumb, 'gal-highlight');
elType = /\.webm$/.test(thumb.href) ? 'video' : /\.pdf$/.test(thumb.href) ? 'iframe' : 'img';
$[elType === 'iframe' ? 'addClass' : 'rmClass'](doc, 'gal-pdf');
file = $.el(elType, {
title: name.download = name.textContent = thumb.title
});
$.extend(file.dataset, thumb.dataset);
$.on(file, 'error', Gallery.error);
file.src = name.href = thumb.href;
nodes.thumbs.scrollTop = thumb.offsetTop + thumb.offsetHeight / 2 - nodes.thumbs.clientHeight / 2;
if (((ref = Gallery.cache) != null ? ref.dataset.id : void 0) === '' + newID) {
file = Gallery.cache;
$.off(file, 'error', Gallery.cacheError);
$.on(file, 'error', Gallery.error);
} else {
file = Gallery.load(thumb, Gallery.error);
}
$.off(nodes.current, 'error', Gallery.error);
ImageCommon.pause(nodes.current);
$.replace(nodes.current, file);
if (elType === 'video') {
nodes.current = file;
if (file.nodeName === 'VIDEO') {
file.loop = true;
Volume.setup(file);
if (Conf['Autoplay']) {
@ -9390,11 +9366,14 @@
ImageCommon.addControls(file);
}
}
doc.classList.toggle('gal-pdf', file.nodeName === 'IFRAME');
Gallery.cb.setHeight();
nodes.count.textContent = +thumb.dataset.id + 1;
nodes.current = file;
nodes.name.download = nodes.name.textContent = thumb.title;
nodes.name.href = thumb.href;
nodes.frame.scrollTop = 0;
nodes.next.focus();
if (slideshow) {
if (Gallery.slideshow && (newID > oldID || (oldID === Gallery.images.length - 1 && newID === 0))) {
Gallery.setupTimer();
} else {
Gallery.cb.stop();
@ -9402,7 +9381,7 @@
if (Conf['Scroll to Post'] && (post = g.posts[file.dataset.post])) {
Header.scrollTo(post.nodes.root);
}
return nodes.thumbs.scrollTop = thumb.offsetTop + thumb.offsetHeight / 2 - nodes.thumbs.clientHeight / 2;
return Gallery.cache = Gallery.load(Gallery.images[(newID + 1) % Gallery.images.length], Gallery.cacheError);
},
error: function() {
var ref;
@ -9424,6 +9403,9 @@
};
})(this));
},
cacheError: function() {
return delete Gallery.cache;
},
cleanupTimer: function() {
var current;
clearTimeout(Gallery.timeoutID);
@ -9585,6 +9567,11 @@
setFitness: function() {
return (this.checked ? $.addClass : $.rmClass)(doc, "gal-" + (this.name.toLowerCase().replace(/\s+/g, '-')));
},
setHeight: function() {
var current, dim, frame, height, ref, ref1, ref2, width;
ref = Gallery.nodes, current = ref.current, frame = ref.frame;
return current.style.minHeight = Conf['Stretch to Fit'] && (dim = (ref1 = g.posts[current.dataset.post]) != null ? ref1.file.dimensions : void 0) ? ((ref2 = dim.split('x'), width = ref2[0], height = ref2[1], ref2), Math.min(doc.clientHeight - 25, height / width * frame.clientWidth) + 'px') : null;
},
setDelay: function() {
return Gallery.delay = +this.value;
}
@ -9609,11 +9596,14 @@
var input, label;
label = UI.checkbox(name, name);
input = label.firstElementChild;
if (name === 'Fit Width' || name === 'Fit Height' || name === 'Hide Thumbnails') {
if (name === 'Hide Thumbnails' || name === 'Fit Width' || name === 'Fit Height') {
$.on(input, 'change', Gallery.cb.setFitness);
}
$.event('change', null, input);
$.on(input, 'change', $.cb.checked);
if (name === 'Hide Thumbnails' || name === 'Fit Width' || name === 'Fit Height' || name === 'Stretch to Fit') {
$.on(input, 'change', Gallery.cb.setHeight);
}
return {
el: label
};
@ -9622,7 +9612,7 @@
var delayInput, delayLabel, item, subEntries;
subEntries = (function() {
var k, len1, ref, results;
ref = ['Hide Thumbnails', 'Fit Width', 'Fit Height', 'Scroll to Post'];
ref = ['Hide Thumbnails', 'Fit Width', 'Fit Height', 'Stretch to Fit', 'Scroll to Post'];
results = [];
for (k = 0, len1 = ref.length; k < len1; k++) {
item = ref[k];
@ -10797,6 +10787,9 @@
},
wheel: function(e) {
var el, volume;
if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
return;
}
if (!(el = $('video:not([data-md5])', this))) {
return;
}
@ -15768,6 +15761,9 @@
div = $.el('div', {
innerHTML: "<label><input type=\"checkbox\" name=\"" + E(key) + "\">" + E(key) + "</label><span class=\"description\">: " + E(description) + "</span>"
});
if ((typeof chrome !== "undefined" && chrome !== null) && key === 'Remember QR Size') {
div.hidden = true;
}
input = $('input', div);
$.on(input, 'change', function() {
this.parentNode.parentNode.dataset.checked = this.checked;
@ -19073,13 +19069,6 @@
"}\n" +
".gal-fit-height .gal-image img,\n" +
".gal-fit-height .gal-image video {\n" +
" /*\n" +
" Chrome doesn't support viewpoint units in calc()\n" +
" http://bugs.chromium.org/168840\n" +
" \"It looks like the original author of viewport units in WebKit is not coming back to fix this stuff.\"\n" +
" Well, fuck.\n" +
" */\n" +
" max-height: 95vh;\n" +
" max-height: calc(100vh - 25px);\n" +
"}\n" +
".gal-image iframe {\n" +

Binary file not shown.

View File

@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X
// @version 1.10.14.2
// @version 1.11.0.0
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X

View File

@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X
// @version 1.10.14.2
// @version 1.11.0.0
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -267,6 +267,7 @@
'Hide Thumbnails': [false],
'Fit Width': [true],
'Fit Height': [true],
'Stretch to Fit': [false],
'Scroll to Post': [true],
'Slide Delay': [6.0]
},
@ -396,7 +397,7 @@
doc = d.documentElement;
g = {
VERSION: '1.10.14.2',
VERSION: '1.11.0.0',
NAMESPACE: '4chan X.',
boards: {}
};
@ -2365,26 +2366,7 @@
Polyfill = {
init: function() {
this.notificationPermission();
this.toBlob();
return this.visibility();
},
notificationPermission: function() {
if (!window.Notification || 'permission' in Notification || !window.webkitNotifications) {
return;
}
return Object.defineProperty(Notification, 'permission', {
get: function() {
switch (webkitNotifications.checkPermission()) {
case 0:
return 'granted';
case 1:
return 'default';
case 2:
return 'denied';
}
}
});
return this.toBlob();
},
toBlob: function() {
var base1;
@ -2400,26 +2382,6 @@
type: 'image/png'
}));
});
},
visibility: function() {
if ('visibilityState' in d) {
return;
}
Object.defineProperties(HTMLDocument.prototype, {
visibilityState: {
get: function() {
return this.webkitVisibilityState;
}
},
hidden: {
get: function() {
return this.webkitHidden;
}
}
});
return $.on(d, 'webkitvisibilitychange', function() {
return $.event('visibilitychange');
});
}
};
@ -7369,7 +7331,7 @@
event = node.nodeName === 'SELECT' ? 'change' : 'input';
$.on(nodes[name], event, save);
}
if (Conf['Remember QR Size']) {
if ((typeof chrome === "undefined" || chrome === null) && Conf['Remember QR Size']) {
$.get('QR Size', '', function(item) {
return nodes.com.style.cssText = item['QR Size'];
});
@ -9359,29 +9321,43 @@
Gallery.images.push(thumb);
return $.add(Gallery.nodes.thumbs, thumb);
},
load: function(thumb, errorCB) {
var elType, ext, file;
ext = thumb.href.match(/\w*$/);
elType = {
'webm': 'video',
'pdf': 'iframe'
}[ext] || 'img';
file = $.el(elType, {
title: thumb.title
});
$.extend(file.dataset, thumb.dataset);
$.on(file, 'error', errorCB);
file.src = thumb.href;
return file;
},
open: function(thumb) {
var el, elType, file, name, newID, nodes, oldID, post, slideshow;
var el, file, newID, nodes, oldID, post, ref;
nodes = Gallery.nodes;
name = nodes.name;
oldID = +nodes.current.dataset.id;
newID = +thumb.dataset.id;
slideshow = Gallery.slideshow && (newID > oldID || (oldID === Gallery.images.length - 1 && newID === 0));
if (el = $('.gal-highlight', nodes.thumbs)) {
if (el = Gallery.images[oldID]) {
$.rmClass(el, 'gal-highlight');
}
$.addClass(thumb, 'gal-highlight');
elType = /\.webm$/.test(thumb.href) ? 'video' : /\.pdf$/.test(thumb.href) ? 'iframe' : 'img';
$[elType === 'iframe' ? 'addClass' : 'rmClass'](doc, 'gal-pdf');
file = $.el(elType, {
title: name.download = name.textContent = thumb.title
});
$.extend(file.dataset, thumb.dataset);
$.on(file, 'error', Gallery.error);
file.src = name.href = thumb.href;
nodes.thumbs.scrollTop = thumb.offsetTop + thumb.offsetHeight / 2 - nodes.thumbs.clientHeight / 2;
if (((ref = Gallery.cache) != null ? ref.dataset.id : void 0) === '' + newID) {
file = Gallery.cache;
$.off(file, 'error', Gallery.cacheError);
$.on(file, 'error', Gallery.error);
} else {
file = Gallery.load(thumb, Gallery.error);
}
$.off(nodes.current, 'error', Gallery.error);
ImageCommon.pause(nodes.current);
$.replace(nodes.current, file);
if (elType === 'video') {
nodes.current = file;
if (file.nodeName === 'VIDEO') {
file.loop = true;
Volume.setup(file);
if (Conf['Autoplay']) {
@ -9391,11 +9367,14 @@
ImageCommon.addControls(file);
}
}
doc.classList.toggle('gal-pdf', file.nodeName === 'IFRAME');
Gallery.cb.setHeight();
nodes.count.textContent = +thumb.dataset.id + 1;
nodes.current = file;
nodes.name.download = nodes.name.textContent = thumb.title;
nodes.name.href = thumb.href;
nodes.frame.scrollTop = 0;
nodes.next.focus();
if (slideshow) {
if (Gallery.slideshow && (newID > oldID || (oldID === Gallery.images.length - 1 && newID === 0))) {
Gallery.setupTimer();
} else {
Gallery.cb.stop();
@ -9403,7 +9382,7 @@
if (Conf['Scroll to Post'] && (post = g.posts[file.dataset.post])) {
Header.scrollTo(post.nodes.root);
}
return nodes.thumbs.scrollTop = thumb.offsetTop + thumb.offsetHeight / 2 - nodes.thumbs.clientHeight / 2;
return Gallery.cache = Gallery.load(Gallery.images[(newID + 1) % Gallery.images.length], Gallery.cacheError);
},
error: function() {
var ref;
@ -9425,6 +9404,9 @@
};
})(this));
},
cacheError: function() {
return delete Gallery.cache;
},
cleanupTimer: function() {
var current;
clearTimeout(Gallery.timeoutID);
@ -9586,6 +9568,11 @@
setFitness: function() {
return (this.checked ? $.addClass : $.rmClass)(doc, "gal-" + (this.name.toLowerCase().replace(/\s+/g, '-')));
},
setHeight: function() {
var current, dim, frame, height, ref, ref1, ref2, width;
ref = Gallery.nodes, current = ref.current, frame = ref.frame;
return current.style.minHeight = Conf['Stretch to Fit'] && (dim = (ref1 = g.posts[current.dataset.post]) != null ? ref1.file.dimensions : void 0) ? ((ref2 = dim.split('x'), width = ref2[0], height = ref2[1], ref2), Math.min(doc.clientHeight - 25, height / width * frame.clientWidth) + 'px') : null;
},
setDelay: function() {
return Gallery.delay = +this.value;
}
@ -9610,11 +9597,14 @@
var input, label;
label = UI.checkbox(name, name);
input = label.firstElementChild;
if (name === 'Fit Width' || name === 'Fit Height' || name === 'Hide Thumbnails') {
if (name === 'Hide Thumbnails' || name === 'Fit Width' || name === 'Fit Height') {
$.on(input, 'change', Gallery.cb.setFitness);
}
$.event('change', null, input);
$.on(input, 'change', $.cb.checked);
if (name === 'Hide Thumbnails' || name === 'Fit Width' || name === 'Fit Height' || name === 'Stretch to Fit') {
$.on(input, 'change', Gallery.cb.setHeight);
}
return {
el: label
};
@ -9623,7 +9613,7 @@
var delayInput, delayLabel, item, subEntries;
subEntries = (function() {
var k, len1, ref, results;
ref = ['Hide Thumbnails', 'Fit Width', 'Fit Height', 'Scroll to Post'];
ref = ['Hide Thumbnails', 'Fit Width', 'Fit Height', 'Stretch to Fit', 'Scroll to Post'];
results = [];
for (k = 0, len1 = ref.length; k < len1; k++) {
item = ref[k];
@ -10798,6 +10788,9 @@
},
wheel: function(e) {
var el, volume;
if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
return;
}
if (!(el = $('video:not([data-md5])', this))) {
return;
}
@ -15769,6 +15762,9 @@
div = $.el('div', {
innerHTML: "<label><input type=\"checkbox\" name=\"" + E(key) + "\">" + E(key) + "</label><span class=\"description\">: " + E(description) + "</span>"
});
if ((typeof chrome !== "undefined" && chrome !== null) && key === 'Remember QR Size') {
div.hidden = true;
}
input = $('input', div);
$.on(input, 'change', function() {
this.parentNode.parentNode.dataset.checked = this.checked;
@ -19074,13 +19070,6 @@
"}\n" +
".gal-fit-height .gal-image img,\n" +
".gal-fit-height .gal-image video {\n" +
" /*\n" +
" Chrome doesn't support viewpoint units in calc()\n" +
" http://bugs.chromium.org/168840\n" +
" \"It looks like the original author of viewport units in WebKit is not coming back to fix this stuff.\"\n" +
" Well, fuck.\n" +
" */\n" +
" max-height: 95vh;\n" +
" max-height: calc(100vh - 25px);\n" +
"}\n" +
".gal-image iframe {\n" +

Binary file not shown.

View File

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X-beta.crx' version='1.10.14.2' />
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X-beta.crx' version='1.11.0.0' />
</app>
</gupdate>

View File

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X.crx' version='1.10.14.2' />
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X.crx' version='1.11.0.0' />
</app>
</gupdate>

View File

@ -3,8 +3,8 @@
"description": "Cross-browser userscript for maximum lurking on 4chan.",
"meta": {
"name": "4chan X",
"version": "1.10.14.2",
"date": "2015-06-12T03:09:08.773Z",
"version": "1.11.0.0",
"date": "2015-06-14T08:23:24.605Z",
"repo": "https://github.com/ccd0/4chan-x/",
"page": "https://github.com/ccd0/4chan-x",
"downloads": "https://ccd0.github.io/4chan-x/builds/",