Files
MYPOM/3.0/редактор/100.редактор.js
2021-09-01 14:58:17 +03:00

95 lines
2.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

function Редактор(события, имяОбласти)
{
this.создать = function()
{
this.установитьAce();
this.улавливатьЗавершениеРедактирования();
события.подписать(this);
};
this.обработатьСобытие = function(событие)
{
if (событие == "завершили редактирование")
{
this.проверитьКорректностьКода();
}
else if (событие == "код корректен")
{
this.преобразоватьВBase64();
}
};
this.преобразоватьВBase64 = function()
{
var содержимое = this.ace.session.getValue();
/**/console.debug("ИГР 64:", this.в64(содержимое));
};
this.установитьAce = function()
{
var область = document.getElementById(имяОбласти);
this.ace = window.ace.edit(имяОбласти);
this.ace.session.setMode("ace/mode/javascript");
}
this.улавливатьЗавершениеРедактирования = function()
{
var тут = this;
this.ace.session.on("change", function(дельта) {
const билет = тут.uuid();
тут.билет = билет;
setTimeout(
function()
{
if (билет == тут.билет)
{
события.уведомить("завершили редактирование");
}
},
1000
);
});
};
this.проверитьКорректностьКода = function()
{
try
{
eval(this.ace.session.getValue());
события.уведомить("код корректен");
}
catch (ошибка)
{
события.уведомить("код некорректен");
}
};
this.в64 = function(строка)
{
var байты = new TextEncoder("utf-8").encode(строка);
return base64js.fromByteArray(байты);
};
this.из64 = function(строка)
{
var байты = base64js.toByteArray(строка);
return new TextDecoder("utf-8").decode(байты);
};
this.uuid = function()
{
// https://stackoverflow.com/a/2117523
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);
}
);
};
// Конструктор.
this.создать();
}