Files
murom/модули/муром.база_1.0.0.js

167 lines
3.4 KiB
JavaScript

/*
*
* Скачиваемый файл / Downloaded file
*
*/
муром.файл = {};
муром.файл.начало =
`
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<body>
<script>
var муром = {};
var murom = муром;
муром.модули = [
`;
муром.файл.конец =
`
];
Object.defineProperty(murom, "modules", {
get: function()
{
return муром.модули;
},
set: function(значения)
{
муром.модули = значения;
}
});
var загрузочныйМодуль = муром.модули[0];
var код = atob(загрузочныйМодуль[1]);
eval(код);
</script>
</body>
</html>
`;
/*
*
* UUID
*
*/
// Create GUID / UUID in JavaScript?
// https://stackoverflow.com/a/2117523
муром.uuid = function()
{
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(
/[xy]/g,
function(c)
{
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
}
);
};
/*
*
* Уведомитель / Reporter
*
*/
// ReporterSubscription class.
function ReporterSubscription(id, callback, reporter)
{
this.id = id;
this.callback = callback;
this.reporter = reporter;
}
// Reporter class.
function Reporter(name)
{
this.name =
(typeof name !== "undefined") ?
name :
"";
this.subscriptions = [];
}
Reporter.prototype.report = function()
{
for (var id in this.subscriptions)
{
var subscription = this.subscriptions[id];
subscription.callback();
}
}
Reporter.prototype.subscribe = function(callback)
{
var id = murom.uuid();
var subscription = new ReporterSubscription(id, callback, this);
this.subscriptions.push(subscription);
return subscription;
}
Reporter.prototype.subscribeMany = function(funcs)
{
for (var i = 0; i < funcs.length; ++i)
{
var func = funcs[i];
this.subscribe(func);
}
}
var Уведомитель = Reporter;
Reporter.prototype.уведомить = function()
{
this.report();
};
Reporter.prototype.подписать = function(функция)
{
this.subscribe(функция);
};
Reporter.prototype.подписатьМного = function(funcs)
{
this.subscribeMany(funcs);
};
/*
*
* Пуск / Start
*
*/
муром.пуск = new Уведомитель();
// Can also be accessed as 'murom.run'.
Object.defineProperty(murom, "run", {
get: function()
{
return муром.пуск;
}
});
murom.start = function()
{
муром.пуск.уведомить();
};
/*
*
* Левая и правая области / Left and right regions
*
*/
муром.создатьЛевуюПравуюОбласти = function()
{
// Левая область.
var ло = document.createElement("div");
ло.id="левая-область";
ло.style.cssText =
"position: fixed; left: 0; top: 0; bottom: 0; width: 50%;";
document.body.appendChild(ло);
// Правая область.
var по = document.createElement("div");
по.id="правая-область";
по.style.cssText =
"position: fixed; right: 0; top: 0; bottom: 0; width: 50%;";
document.body.appendChild(по);
return [ло, по];
};