anekos
New BSD License
Mappings for Google+
require: feedSomeKeys_3.js and x-hint.js
>;
// }}}
(function () {
function A (list)
Array.slice(list);
function click (elem)
buffer.followLink(elem, liberator.CURRENT_TAB);
const Conf = (function () {
let gv = liberator.globalVariables;
let conf = {};
'label_shortcut'.split(/\s/).forEach(function (n) {
conf.__defineGetter__(
n.replace(/_./g, function (m) m.slice(1).toUpperCase()),
function () gv['gmail_commando_' + n]
);
});
return conf;
})();
const Names = {
currentEntry: 'a-f-oi-Ai'
};
const Elements = {
get doc() content.document,
get currentEntry () Entry(Elements.doc.querySelector('.' + Names.currentEntry)),
get postForm () Elements.doc.querySelector('#contentPane > div > div').nextSibling,
//get postEditor () Elements.postForm.querySelector('.editable').parentNode,
get postEditor () (
Elements.doc.querySelector('.n-Ob')
||
Elements.postForm.querySelector('.editable').parentNode
),
get submitButton () Elements.postForm.querySelector('[role="button"]'),
get notification () Elements.doc.querySelector('#gbi1')
};
function Entry (root) {
let self = {
click: function (name) {
if (!root)
return;
click(self[name]);
},
get permlink () [
e
for ([, e] in Iterator(A(root.querySelectorAll('a'))))
if (!e.getAttribute('oid'))
][0],
get buttons () A(root.querySelectorAll('[role="button"]')),
get commentButton () self.buttons[2],
get commentEditor () let (e = root.querySelector('.editable')) (e && e.parentNode),
get comment() (self.commentEditor || self.commentButton),
get plusone () root.querySelector('[g\\:type="plusone"]'),
get share () self.buttons[3],
get menu () root.querySelector('[role="menu"]')
};
return self;
}
const Commando = {
};
const Commands = {
next: function () {
let menus = A(Elements.doc.querySelectorAll('[tabindex="0"][role="menu"]'));
plugins.feedSomeKeys_3.API.feed.apply(
null,
menus.length === 1 ? ['