Merge branch 'v3'
Conflicts: CHANGELOG.md LICENSE builds/4chan-X.js builds/4chan-X.meta.js builds/appchan-x.user.js builds/crx/manifest.json builds/crx/script.js latest.js package.json
This commit is contained in:
commit
a86b1da74f
15
CHANGELOG.md
15
CHANGELOG.md
@ -1,3 +1,18 @@
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
### v1.2.12
|
||||
*2013-05-27*
|
||||
|
||||
**MayhemYDG**:
|
||||
- Fix `Jump to Next Reply` keybind not accounting for posts after unread line
|
||||
|
||||
**seaweedchan**:
|
||||
- Added `.hasInline` (if replyContainer contains .inline) for userstyle/script maintainers
|
||||
|
||||
### v1.2.11
|
||||
*2013-05-27*
|
||||
|
||||
>>>>>>> v3
|
||||
**MayhemYDG**:
|
||||
- Tiny fixes
|
||||
- Add page count to thread stats
|
||||
|
||||
@ -3747,18 +3747,22 @@
|
||||
return Polyfill.visibility();
|
||||
},
|
||||
visibility: function() {
|
||||
var event, prefix, property;
|
||||
|
||||
if ('visibilityState' in document || !(prefix = ('webkitVisibilityState' in document ? 'webkit' : 'mozVisibilityState' in document ? 'moz' : void 0))) {
|
||||
if (!('webkitHidden' in document)) {
|
||||
return;
|
||||
}
|
||||
property = prefix + 'VisibilityState';
|
||||
event = prefix + 'visibilitychange';
|
||||
d.visibilityState = d[property];
|
||||
d.hidden = d.visibilityState === 'hidden';
|
||||
return $.on(d, event, function() {
|
||||
d.visibilityState = d[property];
|
||||
d.hidden = d.visibilityState === 'hidden';
|
||||
Object.defineProperties(HTMLDocument.prototype, {
|
||||
visibilityState: {
|
||||
get: function() {
|
||||
return this.webkitVisibilityState;
|
||||
}
|
||||
},
|
||||
hidden: {
|
||||
get: function() {
|
||||
return this.webkitHidden;
|
||||
}
|
||||
}
|
||||
});
|
||||
return $.on(d, 'webkitvisibilitychange', function() {
|
||||
return $.event('visibilitychange');
|
||||
});
|
||||
}
|
||||
@ -12902,7 +12906,7 @@
|
||||
}
|
||||
},
|
||||
hl: function(delta, thread) {
|
||||
var headRect, next, postEl, rect, replies, reply, root, topMargin, _i, _len;
|
||||
var axe, headRect, next, postEl, rect, replies, reply, root, topMargin, _i, _len;
|
||||
|
||||
if (Conf['Fixed Header'] && Conf['Bottom header']) {
|
||||
topMargin = 0;
|
||||
@ -12915,7 +12919,8 @@
|
||||
rect = postEl.getBoundingClientRect();
|
||||
if (rect.bottom >= topMargin && rect.top <= doc.clientHeight) {
|
||||
root = postEl.parentNode;
|
||||
next = $.x('child::div[contains(@class,"post reply")]', delta === +1 ? root.nextElementSibling : root.previousElementSibling);
|
||||
axe = delta === +1 ? 'following' : 'preceding';
|
||||
next = $.x("" + axe + "-sibling::div[contains(@class,'replyContainer')][1]/child::div[contains(@class,'reply')]", root);
|
||||
if (!next) {
|
||||
this.focus(postEl);
|
||||
return;
|
||||
|
||||
@ -3743,18 +3743,22 @@
|
||||
return Polyfill.visibility();
|
||||
},
|
||||
visibility: function() {
|
||||
var event, prefix, property;
|
||||
|
||||
if ('visibilityState' in document || !(prefix = ('webkitVisibilityState' in document ? 'webkit' : 'mozVisibilityState' in document ? 'moz' : void 0))) {
|
||||
if (!('webkitHidden' in document)) {
|
||||
return;
|
||||
}
|
||||
property = prefix + 'VisibilityState';
|
||||
event = prefix + 'visibilitychange';
|
||||
d.visibilityState = d[property];
|
||||
d.hidden = d.visibilityState === 'hidden';
|
||||
return $.on(d, event, function() {
|
||||
d.visibilityState = d[property];
|
||||
d.hidden = d.visibilityState === 'hidden';
|
||||
Object.defineProperties(HTMLDocument.prototype, {
|
||||
visibilityState: {
|
||||
get: function() {
|
||||
return this.webkitVisibilityState;
|
||||
}
|
||||
},
|
||||
hidden: {
|
||||
get: function() {
|
||||
return this.webkitHidden;
|
||||
}
|
||||
}
|
||||
});
|
||||
return $.on(d, 'webkitvisibilitychange', function() {
|
||||
return $.event('visibilitychange');
|
||||
});
|
||||
}
|
||||
@ -12896,7 +12900,7 @@
|
||||
}
|
||||
},
|
||||
hl: function(delta, thread) {
|
||||
var headRect, next, postEl, rect, replies, reply, root, topMargin, _i, _len;
|
||||
var axe, headRect, next, postEl, rect, replies, reply, root, topMargin, _i, _len;
|
||||
|
||||
if (Conf['Fixed Header'] && Conf['Bottom header']) {
|
||||
topMargin = 0;
|
||||
@ -12909,7 +12913,8 @@
|
||||
rect = postEl.getBoundingClientRect();
|
||||
if (rect.bottom >= topMargin && rect.top <= doc.clientHeight) {
|
||||
root = postEl.parentNode;
|
||||
next = $.x('child::div[contains(@class,"post reply")]', delta === +1 ? root.nextElementSibling : root.previousElementSibling);
|
||||
axe = delta === +1 ? 'following' : 'preceding';
|
||||
next = $.x("" + axe + "-sibling::div[contains(@class,'replyContainer')][1]/child::div[contains(@class,'reply')]", root);
|
||||
if (!next) {
|
||||
this.focus(postEl);
|
||||
return;
|
||||
|
||||
@ -3744,18 +3744,22 @@
|
||||
return Polyfill.visibility();
|
||||
},
|
||||
visibility: function() {
|
||||
var event, prefix, property;
|
||||
|
||||
if ('visibilityState' in document || !(prefix = ('webkitVisibilityState' in document ? 'webkit' : 'mozVisibilityState' in document ? 'moz' : void 0))) {
|
||||
if (!('webkitHidden' in document)) {
|
||||
return;
|
||||
}
|
||||
property = prefix + 'VisibilityState';
|
||||
event = prefix + 'visibilitychange';
|
||||
d.visibilityState = d[property];
|
||||
d.hidden = d.visibilityState === 'hidden';
|
||||
return $.on(d, event, function() {
|
||||
d.visibilityState = d[property];
|
||||
d.hidden = d.visibilityState === 'hidden';
|
||||
Object.defineProperties(HTMLDocument.prototype, {
|
||||
visibilityState: {
|
||||
get: function() {
|
||||
return this.webkitVisibilityState;
|
||||
}
|
||||
},
|
||||
hidden: {
|
||||
get: function() {
|
||||
return this.webkitHidden;
|
||||
}
|
||||
}
|
||||
});
|
||||
return $.on(d, 'webkitvisibilitychange', function() {
|
||||
return $.event('visibilitychange');
|
||||
});
|
||||
}
|
||||
@ -12879,7 +12883,7 @@
|
||||
}
|
||||
},
|
||||
hl: function(delta, thread) {
|
||||
var headRect, next, postEl, rect, replies, reply, root, topMargin, _i, _len;
|
||||
var axe, headRect, next, postEl, rect, replies, reply, root, topMargin, _i, _len;
|
||||
|
||||
if (Conf['Fixed Header'] && Conf['Bottom header']) {
|
||||
topMargin = 0;
|
||||
@ -12892,7 +12896,8 @@
|
||||
rect = postEl.getBoundingClientRect();
|
||||
if (rect.bottom >= topMargin && rect.top <= doc.clientHeight) {
|
||||
root = postEl.parentNode;
|
||||
next = $.x('child::div[contains(@class,"post reply")]', delta === +1 ? root.nextElementSibling : root.previousElementSibling);
|
||||
axe = delta === +1 ? 'following' : 'preceding';
|
||||
next = $.x("" + axe + "-sibling::div[contains(@class,'replyContainer')][1]/child::div[contains(@class,'reply')]", root);
|
||||
if (!next) {
|
||||
this.focus(postEl);
|
||||
return;
|
||||
|
||||
@ -1,58 +0,0 @@
|
||||
/* General */
|
||||
:root.burichan .dialog {
|
||||
background-color: #D6DAF0;
|
||||
border-color: #B7C5D9;
|
||||
}
|
||||
:root.burichan .field:focus {
|
||||
border-color: #98E;
|
||||
}
|
||||
|
||||
/* Header */
|
||||
:root.burichan #header-bar, :root.burichan #header-bar #notifications {
|
||||
font-size: 11pt;
|
||||
color: #89A;
|
||||
}
|
||||
:root.burichan #header-bar a, :root.burichan #header-bar #notifications a {
|
||||
color: #34345C;
|
||||
}
|
||||
|
||||
/* Settings */
|
||||
:root.burichan #fourchanx-settings fieldset {
|
||||
border-color: #B7C5D9;
|
||||
}
|
||||
|
||||
/* Quote */
|
||||
:root.burichan .backlink.deadlink {
|
||||
color: #34345C !important;
|
||||
}
|
||||
:root.burichan .inline {
|
||||
border-color: #B7C5D9;
|
||||
background-color: rgba(255, 255, 255, .14);
|
||||
}
|
||||
|
||||
/* QR */
|
||||
.burichan #dump-list::-webkit-scrollbar-thumb {
|
||||
background-color: #D6DAF0;
|
||||
border-color: #B7C5D9;
|
||||
}
|
||||
:root.burichan .qr-preview {
|
||||
background-color: rgba(0, 0, 0, .15);
|
||||
}
|
||||
|
||||
/* Menu */
|
||||
:root.burichan #menu {
|
||||
color: #000000;
|
||||
}
|
||||
:root.burichan .entry {
|
||||
border-bottom: 1px solid #B7C5D9;
|
||||
font-size: 12pt;
|
||||
}
|
||||
:root.burichan .focused.entry {
|
||||
background: rgba(255, 255, 255, .33);
|
||||
}
|
||||
|
||||
/* Watcher Favicon */
|
||||
:root.burichan .watch-thread-link
|
||||
{
|
||||
background-image: url("data:image/svg+xml,<svg viewBox='0 0 26 26' preserveAspectRatio='true' xmlns='http://www.w3.org/2000/svg'><path fill='rgb(0,0,0)' d='M24.132,7.971c-2.203-2.205-5.916-2.098-8.25,0.235L15.5,8.588l-0.382-0.382c-2.334-2.333-6.047-2.44-8.25-0.235c-2.204,2.203-2.098,5.916,0.235,8.249l8.396,8.396l8.396-8.396C26.229,13.887,26.336,10.174,24.132,7.971z'/></svg>");
|
||||
}
|
||||
@ -1,58 +0,0 @@
|
||||
/* General */
|
||||
:root.futaba .dialog {
|
||||
background-color: #F0E0D6;
|
||||
border-color: #D9BFB7;
|
||||
}
|
||||
:root.futaba .field:focus {
|
||||
border-color: #EA8;
|
||||
}
|
||||
|
||||
/* Header */
|
||||
:root.futaba #header-bar, :root.futaba #notifications {
|
||||
font-size: 11pt;
|
||||
color: #B86;
|
||||
}
|
||||
:root.futaba #header-bar a, :root.futaba #notifications a {
|
||||
color: #800000;
|
||||
}
|
||||
|
||||
/* Settings */
|
||||
:root.futaba #fourchanx-settings fieldset {
|
||||
border-color: #D9BFB7;
|
||||
}
|
||||
|
||||
/* Quote */
|
||||
:root.futaba .backlink.deadlink {
|
||||
color: #00E !important;
|
||||
}
|
||||
:root.futaba .inline {
|
||||
border-color: #D9BFB7;
|
||||
background-color: rgba(255, 255, 255, .14);
|
||||
}
|
||||
|
||||
/* QR */
|
||||
.futaba #dump-list::-webkit-scrollbar-thumb {
|
||||
background-color: #F0E0D6;
|
||||
border-color: #D9BFB7;
|
||||
}
|
||||
:root.futaba .qr-preview {
|
||||
background-color: rgba(0, 0, 0, .15);
|
||||
}
|
||||
|
||||
/* Menu */
|
||||
:root.futaba #menu {
|
||||
color: #800000;
|
||||
}
|
||||
:root.futaba .entry {
|
||||
border-bottom: 1px solid #D9BFB7;
|
||||
font-size: 12pt;
|
||||
}
|
||||
:root.futaba .focused.entry {
|
||||
background: rgba(255, 255, 255, .33);
|
||||
}
|
||||
|
||||
/* Watcher Favicon */
|
||||
:root.futaba .watch-thread-link
|
||||
{
|
||||
background-image: url("data:image/svg+xml,<svg viewBox='0 0 26 26' preserveAspectRatio='true' xmlns='http://www.w3.org/2000/svg'><path fill='rgb(128,0,0)' d='M24.132,7.971c-2.203-2.205-5.916-2.098-8.25,0.235L15.5,8.588l-0.382-0.382c-2.334-2.333-6.047-2.44-8.25-0.235c-2.204,2.203-2.098,5.916,0.235,8.249l8.396,8.396l8.396-8.396C26.229,13.887,26.336,10.174,24.132,7.971z'/></svg>");
|
||||
}
|
||||
@ -1,58 +0,0 @@
|
||||
/* General */
|
||||
:root.photon .dialog {
|
||||
background-color: #DDD;
|
||||
border-color: #CCC;
|
||||
}
|
||||
:root.photon .field:focus {
|
||||
border-color: #EA8;
|
||||
}
|
||||
|
||||
/* Header */
|
||||
:root.photon #header-bar, :root.photon #notifications {
|
||||
font-size: 9pt;
|
||||
color: #333;
|
||||
}
|
||||
:root.photon #header-bar a, :root.photon #notifications a {
|
||||
color: #FF6600;
|
||||
}
|
||||
|
||||
/* Settings */
|
||||
:root.photon #fourchanx-settings fieldset {
|
||||
border-color: #CCC;
|
||||
}
|
||||
|
||||
/* Quote */
|
||||
:root.photon .backlink.deadlink {
|
||||
color: #F60 !important;
|
||||
}
|
||||
:root.photon .inline {
|
||||
border-color: #CCC;
|
||||
background-color: rgba(255, 255, 255, .14);
|
||||
}
|
||||
|
||||
/* QR */
|
||||
.photon #dump-list::-webkit-scrollbar-thumb {
|
||||
background-color: #DDD;
|
||||
border-color: #CCC;
|
||||
}
|
||||
:root.photon .qr-preview {
|
||||
background-color: rgba(0, 0, 0, .15);
|
||||
}
|
||||
|
||||
/* Menu */
|
||||
:root.photon #menu {
|
||||
color: #333;
|
||||
}
|
||||
:root.photon .entry {
|
||||
border-bottom: 1px solid #CCC;
|
||||
font-size: 10pt;
|
||||
}
|
||||
:root.photon .focused.entry {
|
||||
background: rgba(255, 255, 255, .33);
|
||||
}
|
||||
|
||||
/* Watcher Favicon */
|
||||
:root.photon .watch-thread-link
|
||||
{
|
||||
background-image: url("data:image/svg+xml,<svg viewBox='0 0 26 26' preserveAspectRatio='true' xmlns='http://www.w3.org/2000/svg'><path fill='rgb(51,51,51)' d='M24.132,7.971c-2.203-2.205-5.916-2.098-8.25,0.235L15.5,8.588l-0.382-0.382c-2.334-2.333-6.047-2.44-8.25-0.235c-2.204,2.203-2.098,5.916,0.235,8.249l8.396,8.396l8.396-8.396C26.229,13.887,26.336,10.174,24.132,7.971z'/></svg>");
|
||||
}
|
||||
@ -1,58 +0,0 @@
|
||||
/* General */
|
||||
:root.yotsuba-b .dialog {
|
||||
background-color: #D6DAF0;
|
||||
border-color: #B7C5D9;
|
||||
}
|
||||
:root.yotsuba-b .field:focus {
|
||||
border-color: #98E;
|
||||
}
|
||||
|
||||
/* Header */
|
||||
:root.yotsuba-b #header-bar, :root.yotsuba-b #notifications {
|
||||
font-size: 9pt;
|
||||
color: #89A;
|
||||
}
|
||||
:root.yotsuba-b #header-bar a, :root.yotsuba-b #notifications a {
|
||||
color: #34345C;
|
||||
}
|
||||
|
||||
/* Settings */
|
||||
:root.yotsuba-b #fourchanx-settings fieldset {
|
||||
border-color: #B7C5D9;
|
||||
}
|
||||
|
||||
/* Quote */
|
||||
:root.yotsuba-b .backlink.deadlink {
|
||||
color: #34345C !important;
|
||||
}
|
||||
:root.yotsuba-b .inline {
|
||||
border-color: #B7C5D9;
|
||||
background-color: rgba(255, 255, 255, .14);
|
||||
}
|
||||
|
||||
/* QR */
|
||||
.yotsuba-b #dump-list::-webkit-scrollbar-thumb {
|
||||
background-color: #D6DAF0;
|
||||
border-color: #B7C5D9;
|
||||
}
|
||||
:root.yotsuba-b .qr-preview {
|
||||
background-color: rgba(0, 0, 0, .15);
|
||||
}
|
||||
|
||||
/* Menu */
|
||||
:root.yotsuba-b #menu {
|
||||
color: #000;
|
||||
}
|
||||
:root.yotsuba-b .entry {
|
||||
border-bottom: 1px solid #B7C5D9;
|
||||
font-size: 10pt;
|
||||
}
|
||||
:root.yotsuba-b .focused.entry {
|
||||
background: rgba(255, 255, 255, .33);
|
||||
}
|
||||
|
||||
/* Watcher Favicon */
|
||||
:root.yotsuba-b .watch-thread-link
|
||||
{
|
||||
background-image: url("data:image/svg+xml,<svg viewBox='0 0 26 26' preserveAspectRatio='true' xmlns='http://www.w3.org/2000/svg'><path fill='rgb(0,0,0)' d='M24.132,7.971c-2.203-2.205-5.916-2.098-8.25,0.235L15.5,8.588l-0.382-0.382c-2.334-2.333-6.047-2.44-8.25-0.235c-2.204,2.203-2.098,5.916,0.235,8.249l8.396,8.396l8.396-8.396C26.229,13.887,26.336,10.174,24.132,7.971z'/></svg>");
|
||||
}
|
||||
@ -1,58 +0,0 @@
|
||||
/* General */
|
||||
:root.yotsuba .dialog {
|
||||
background-color: #F0E0D6;
|
||||
border-color: #D9BFB7;
|
||||
}
|
||||
:root.yotsuba .field:focus {
|
||||
border-color: #EA8;
|
||||
}
|
||||
|
||||
/* Header */
|
||||
:root.yotsuba #header-bar, :root.yotsuba #notifications {
|
||||
font-size: 9pt;
|
||||
color: #B86;
|
||||
}
|
||||
:root.yotsuba #header-bar a, :root.yotsuba #notifications a {
|
||||
color: #800000;
|
||||
}
|
||||
|
||||
/* Settings */
|
||||
:root.yotsuba #fourchanx-settings fieldset {
|
||||
border-color: #D9BFB7;
|
||||
}
|
||||
|
||||
/* Quote */
|
||||
:root.yotsuba .backlink.deadlink {
|
||||
color: #00E !important;
|
||||
}
|
||||
:root.yotsuba .inline {
|
||||
border-color: #D9BFB7;
|
||||
background-color: rgba(255, 255, 255, .14);
|
||||
}
|
||||
|
||||
/* QR */
|
||||
.yotsuba #dump-list::-webkit-scrollbar-thumb {
|
||||
background-color: #F0E0D6;
|
||||
border-color: #D9BFB7;
|
||||
}
|
||||
:root.yotsuba .qr-preview {
|
||||
background-color: rgba(0, 0, 0, .15);
|
||||
}
|
||||
|
||||
/* Menu */
|
||||
:root.yotsuba #menu {
|
||||
color: #800000;
|
||||
}
|
||||
:root.yotsuba .entry {
|
||||
border-bottom: 1px solid #D9BFB7;
|
||||
font-size: 10pt;
|
||||
}
|
||||
:root.yotsuba .focused.entry {
|
||||
background: rgba(255, 255, 255, .33);
|
||||
}
|
||||
|
||||
/* Watcher Favicon */
|
||||
:root.yotsuba .watch-thread-link
|
||||
{
|
||||
background-image: url("data:image/svg+xml,<svg viewBox='0 0 26 26' preserveAspectRatio='true' xmlns='http://www.w3.org/2000/svg'><path fill='rgb(128,0,0)' d='M24.132,7.971c-2.203-2.205-5.916-2.098-8.25,0.235L15.5,8.588l-0.382-0.382c-2.334-2.333-6.047-2.44-8.25-0.235c-2.204,2.203-2.098,5.916,0.235,8.249l8.396,8.396l8.396-8.396C26.229,13.887,26.336,10.174,24.132,7.971z'/></svg>");
|
||||
}
|
||||
@ -3,21 +3,10 @@ Polyfill =
|
||||
Polyfill.visibility()
|
||||
visibility: ->
|
||||
# page visibility API
|
||||
return if 'visibilityState' of document or not (
|
||||
prefix = (
|
||||
if 'webkitVisibilityState' of document
|
||||
'webkit'
|
||||
else if 'mozVisibilityState' of document
|
||||
'moz'
|
||||
)
|
||||
)
|
||||
|
||||
property = prefix + 'VisibilityState'
|
||||
event = prefix + 'visibilitychange'
|
||||
|
||||
d.visibilityState = d[property]
|
||||
d.hidden = d.visibilityState is 'hidden'
|
||||
$.on d, event, ->
|
||||
d.visibilityState = d[property]
|
||||
d.hidden = d.visibilityState is 'hidden'
|
||||
$.event 'visibilitychange'
|
||||
return unless 'webkitHidden' of document
|
||||
Object.defineProperties HTMLDocument.prototype,
|
||||
visibilityState:
|
||||
get: -> @webkitVisibilityState
|
||||
hidden:
|
||||
get: -> @webkitHidden
|
||||
$.on d, 'webkitvisibilitychange', -> $.event 'visibilitychange'
|
||||
|
||||
@ -203,8 +203,11 @@ Keybinds =
|
||||
rect = postEl.getBoundingClientRect()
|
||||
if rect.bottom >= topMargin and rect.top <= doc.clientHeight # We're at least partially visible
|
||||
root = postEl.parentNode
|
||||
next = $.x 'child::div[contains(@class,"post reply")]',
|
||||
if delta is +1 then root.nextElementSibling else root.previousElementSibling
|
||||
axe = if delta is +1
|
||||
'following'
|
||||
else
|
||||
'preceding'
|
||||
next = $.x "#{axe}-sibling::div[contains(@class,'replyContainer')][1]/child::div[contains(@class,'reply')]", root
|
||||
unless next
|
||||
@focus postEl
|
||||
return
|
||||
@ -227,4 +230,4 @@ Keybinds =
|
||||
return
|
||||
|
||||
focus: (post) ->
|
||||
$.addClass post, 'highlight'
|
||||
$.addClass post, 'highlight'
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user