139 lines
3.3 KiB
JavaScript
139 lines
3.3 KiB
JavaScript
export default {
|
|
api: `{
|
|
run: (action, host) => {
|
|
return new Promise((resolve) => {
|
|
const port = browser.runtime.connect({ name: 'action' });
|
|
port.onMessage.addListener(msg => {
|
|
resolve(msg);
|
|
});
|
|
|
|
port.postMessage({
|
|
type: 'run',
|
|
host: host,
|
|
action: action,
|
|
});
|
|
});
|
|
},
|
|
|
|
getURL: () => {
|
|
return new Promise((resolve) => {
|
|
const port = browser.runtime.connect({ name: 'url' });
|
|
port.onMessage.addListener(url => {
|
|
resolve(url);
|
|
});
|
|
|
|
port.postMessage({
|
|
type: 'get',
|
|
});
|
|
});
|
|
},
|
|
|
|
setURL: (url) => {
|
|
const port = browser.runtime.connect({ name: 'url' });
|
|
port.postMessage({
|
|
type: 'set',
|
|
url: url,
|
|
});
|
|
},
|
|
|
|
getClipboard: () => {
|
|
return new Promise((resolve, reject) => {
|
|
navigator.clipboard.readText().then(text => resolve(text), error => reject(error));
|
|
});
|
|
},
|
|
|
|
setClipboard: (text) => {
|
|
return new Promise((resolve, reject) => {
|
|
navigator.clipboard.writeText(text).then(() => resolve(), error => reject(error));
|
|
});
|
|
},
|
|
|
|
openTab: (url) => {
|
|
const port = browser.runtime.connect({ name: 'url' });
|
|
port.postMessage({
|
|
type: 'open',
|
|
url: url,
|
|
});
|
|
},
|
|
|
|
axios: ['get', 'post', 'put', 'delete', 'head', 'options', 'patch'].reduce((api, method) => {
|
|
api[method] = (url, ...args) => {
|
|
return new Promise((resolve) => {
|
|
const port = browser.runtime.connect({ name: 'axios' });
|
|
port.onMessage.addListener(response => {
|
|
resolve(response);
|
|
});
|
|
|
|
port.postMessage({
|
|
type: method,
|
|
url: url,
|
|
args: args,
|
|
});
|
|
});
|
|
};
|
|
|
|
return api;
|
|
}, {}),
|
|
|
|
mercury: {
|
|
parse: (url, html) => {
|
|
return new Promise((resolve) => {
|
|
const port = browser.runtime.connect({ name: 'mercury' });
|
|
port.onMessage.addListener(response => {
|
|
resolve(response);
|
|
});
|
|
|
|
port.postMessage({
|
|
type: 'parse',
|
|
url: url,
|
|
html: html,
|
|
});
|
|
});
|
|
},
|
|
},
|
|
|
|
getDOM: () => {
|
|
return new Promise((resolve) => {
|
|
const port = browser.runtime.connect({ name: 'dom' });
|
|
port.onMessage.addListener(dom => {
|
|
dom = (new DOMParser()).parseFromString(dom, 'text/html');
|
|
resolve(dom);
|
|
});
|
|
|
|
port.postMessage({
|
|
type: 'get',
|
|
});
|
|
});
|
|
},
|
|
|
|
setDOM: (html) => {
|
|
return new Promise((resolve) => {
|
|
const port = browser.runtime.connect({ name: 'dom' });
|
|
port.postMessage({
|
|
type: 'set',
|
|
html: html,
|
|
});
|
|
});
|
|
},
|
|
|
|
HTML2DOM: (html, isRoot = false) => {
|
|
const dom = new DOMParser().parseFromString(html, 'text/html').documentElement;
|
|
if (isRoot)
|
|
return dom;
|
|
return dom.getElementsByTagName('body')[0].firstChild;
|
|
},
|
|
|
|
notify: (msg, title = 'platypush', error = false) => {
|
|
const port = browser.runtime.connect({ name: 'notify' });
|
|
port.postMessage({
|
|
type: 'run',
|
|
message: msg,
|
|
title: title,
|
|
error: error,
|
|
});
|
|
},
|
|
}`,
|
|
};
|
|
|
|
// vim:sw=2:ts=2:et:
|