mirror of
https://github.com/linuxserver/core.git
synced 2026-02-20 05:07:19 +08:00
135 lines
3.7 KiB
JavaScript
135 lines
3.7 KiB
JavaScript
define(function(require, exports, module) {
|
|
main.consumes = [
|
|
"Plugin", "remote"
|
|
];
|
|
main.provides = ["JSDocument"];
|
|
return main;
|
|
|
|
function main(options, imports, register) {
|
|
var Plugin = imports.Plugin;
|
|
var remote = imports.remote;
|
|
|
|
function JSDocument(path) {
|
|
var exists = remote.findDocument(path);
|
|
if (exists) return exists;
|
|
|
|
/***** Initialization *****/
|
|
|
|
var plugin = new Plugin("Ajax.org", main.consumes);
|
|
// var emit = plugin.getEmitter();
|
|
|
|
var transports = [];
|
|
var tab;
|
|
|
|
var loaded = false;
|
|
function load() {
|
|
if (loaded) return false;
|
|
loaded = true;
|
|
|
|
remote.register(plugin);
|
|
}
|
|
|
|
/***** Methods *****/
|
|
|
|
function addTransport(transport) {
|
|
if (transports.indexOf(transport) == -1) {
|
|
transports.push(transport);
|
|
|
|
transport.addOther(function() {
|
|
var idx = transports.indexOf(transport);
|
|
if (~idx) {
|
|
transports.splice(idx, 1);
|
|
|
|
if (transports.length === 0)
|
|
plugin.unload();
|
|
}
|
|
});
|
|
}
|
|
|
|
return plugin;
|
|
}
|
|
|
|
function initTab(t) {
|
|
tab = t;
|
|
if (!tab) return;
|
|
|
|
var undo = t.document.undoManager;
|
|
undo.on("change", function() {
|
|
if (undo.isAtBookmark()) {
|
|
transports.forEach(function(transport) {
|
|
transport.reload();
|
|
});
|
|
}
|
|
}, tab);
|
|
}
|
|
|
|
function remove() {
|
|
transports.forEach(function(transport) {
|
|
transport.deleteStyleSheet(path);
|
|
});
|
|
}
|
|
|
|
/***** Lifecycle *****/
|
|
|
|
plugin.on("load", function() {
|
|
load();
|
|
});
|
|
plugin.on("enable", function() {
|
|
|
|
});
|
|
plugin.on("disable", function() {
|
|
|
|
});
|
|
plugin.on("unload", function() {
|
|
loaded = false;
|
|
});
|
|
|
|
/***** Register and define API *****/
|
|
|
|
/**
|
|
*
|
|
**/
|
|
plugin.freezePublicAPI({
|
|
/**
|
|
*
|
|
*/
|
|
get path() { return path; },
|
|
|
|
/**
|
|
*
|
|
*/
|
|
get tab() { return tab; },
|
|
|
|
/**
|
|
*
|
|
*/
|
|
set tab(tab) { initTab(tab); },
|
|
|
|
_events: [
|
|
/**
|
|
* @event draw
|
|
*/
|
|
"draw"
|
|
],
|
|
|
|
/**
|
|
*
|
|
*/
|
|
addTransport: addTransport,
|
|
|
|
/**
|
|
*
|
|
*/
|
|
remove: remove
|
|
});
|
|
|
|
plugin.load(null, "jsdocument");
|
|
|
|
return plugin;
|
|
}
|
|
|
|
register(null, {
|
|
JSDocument: JSDocument
|
|
});
|
|
}
|
|
}); |