aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--editor/editor.d.ts7
-rw-r--r--editor/editor.js56
-rw-r--r--editor/editor.ts61
3 files changed, 96 insertions, 28 deletions
diff --git a/editor/editor.d.ts b/editor/editor.d.ts
index 2784506..14f3675 100644
--- a/editor/editor.d.ts
+++ b/editor/editor.d.ts
@@ -26,10 +26,12 @@ export declare class WuiEditor {
GetSelectionRange(): WuiEditorSelectionRangeInterface;
OnClickText(text: HTMLElement): void;
OnKeyup(x: number, text: HTMLElement, ev: KeyboardEvent): boolean | undefined;
- OnKeydown(x: number, el_text: HTMLElement, ev: KeyboardEvent): false | undefined;
+ OnKeydownOnLine(x: number, el_text: HTMLElement, ev: KeyboardEvent): false | undefined;
OnMouseDownAtLine(x: number): void;
OnMouseUpAtLine(x: number): void;
- OpenFile(path: string): Promise<WuiVfsResponseInterface>;
+ SetEditOff(): void;
+ SetEditOn(): void;
+ OpenFile(path: string): Promise<WuiResponseInterface>;
private clearSelection;
private initStyle;
private doJoin;
@@ -39,6 +41,7 @@ export declare class WuiEditor {
private doUndo;
private deleteLine;
private insertNewline;
+ private onKeyupDocument;
private render;
private setCaret;
}
diff --git a/editor/editor.js b/editor/editor.js
index d6f0f1f..15c5173 100644
--- a/editor/editor.js
+++ b/editor/editor.js
@@ -73,6 +73,9 @@ var WuiEditor = /** @class */ (function () {
}
this.sel = sel;
this.range = document.createRange();
+ document.onkeyup = function (ev) {
+ _this.onKeyupDocument(_this, ev);
+ };
}
// GetContent return content of file.
WuiEditor.prototype.GetContent = function () {
@@ -170,7 +173,7 @@ var WuiEditor = /** @class */ (function () {
}
return true;
};
- WuiEditor.prototype.OnKeydown = function (x, el_text, ev) {
+ WuiEditor.prototype.OnKeydownOnLine = function (x, el_text, ev) {
var text_before;
var text_after;
var off;
@@ -222,21 +225,17 @@ var WuiEditor = /** @class */ (function () {
this.lines[x].el_text.innerText = text_before;
this.raw_lines[x] = text_before;
this.insertNewline(x + 1, text_after);
- console.log("scroll", x, this.raw_lines.length);
if (x + 3 >= this.raw_lines.length) {
this.el.scrollTop = this.el.scrollHeight;
}
break;
- case "Escape":
- ev.preventDefault();
- this.clearSelection();
- break;
case "Tab":
ev.preventDefault();
el_text_1 = this.lines[x].el_text;
off_1 = this.sel.focusOffset;
text_before = el_text_1.innerText;
- text_after = text_before.slice(0, off_1) + "\t" + text_before.slice(off_1, text_before.length);
+ text_after =
+ text_before.slice(0, off_1) + "\t" + text_before.slice(off_1, text_before.length);
this.unre.DoUpdate(x, text_before, text_after);
el_text_1.innerText = text_after;
this.raw_lines[x] = text_after;
@@ -290,6 +289,22 @@ var WuiEditor = /** @class */ (function () {
this.opts.OnSelection(this.range_begin, this.range_end);
}
};
+ //
+ // SetEditOff make the content not editable.
+ //
+ WuiEditor.prototype.SetEditOff = function () {
+ for (var x = 0; x < this.lines.length; x++) {
+ this.lines[x].SetEditOff();
+ }
+ };
+ //
+ // SetEditOn make the content to be editable.
+ //
+ WuiEditor.prototype.SetEditOn = function () {
+ for (var x = 0; x < this.lines.length; x++) {
+ this.lines[x].SetEditOn();
+ }
+ };
WuiEditor.prototype.OpenFile = function (path) {
return __awaiter(this, void 0, void 0, function () {
var res, content, x, line;
@@ -323,7 +338,7 @@ var WuiEditor = /** @class */ (function () {
});
};
WuiEditor.prototype.clearSelection = function () {
- if (this.range_end == 0) {
+ if (this.range_begin < 0 || this.range_end == 0) {
return;
}
for (var x = this.range_begin; x <= this.range_end; x++) {
@@ -390,20 +405,29 @@ var WuiEditor = /** @class */ (function () {
this.raw_lines.splice(x, 1);
// Reset the line numbers.
for (; x < this.lines.length; x++) {
- this.lines[x].setNumber(x);
+ this.lines[x].SetNumber(x);
}
this.render();
};
WuiEditor.prototype.insertNewline = function (x, text) {
var newline = new WuiEditorLine(x, text, this);
for (var y = x; y < this.lines.length; y++) {
- this.lines[y].setNumber(y + 1);
+ this.lines[y].SetNumber(y + 1);
}
this.lines.splice(x, 0, newline);
this.raw_lines.splice(x, 0, text);
this.render();
this.setCaret(newline.el_text, 0);
};
+ WuiEditor.prototype.onKeyupDocument = function (ed, ev) {
+ switch (ev.key) {
+ case "Escape":
+ ev.preventDefault();
+ ed.clearSelection();
+ break;
+ }
+ return true;
+ };
WuiEditor.prototype.render = function () {
this.el.innerHTML = "";
for (var _i = 0, _a = this.lines; _i < _a.length; _i++) {
@@ -451,7 +475,7 @@ var WuiEditorLine = /** @class */ (function () {
ed.OnClickText(_this.el_text);
};
this.el_text.onkeydown = function (ev) {
- return ed.OnKeydown(_this.line_num, _this.el_text, ev);
+ return ed.OnKeydownOnLine(_this.line_num, _this.el_text, ev);
};
this.el_text.onkeyup = function (ev) {
return ed.OnKeyup(_this.line_num, _this.el_text, ev);
@@ -467,10 +491,16 @@ var WuiEditorLine = /** @class */ (function () {
this.el.appendChild(this.el_number);
this.el.appendChild(this.el_text);
}
- WuiEditorLine.prototype.setNumber = function (x) {
+ WuiEditorLine.prototype.SetNumber = function (x) {
this.line_num = x;
this.el_number.innerText = x + 1 + "";
};
+ WuiEditorLine.prototype.SetEditOn = function () {
+ this.el_text.contentEditable = "true";
+ };
+ WuiEditorLine.prototype.SetEditOff = function () {
+ this.el_text.contentEditable = "false";
+ };
return WuiEditorLine;
}());
//
@@ -565,4 +595,4 @@ var WuiEditorUndoRedo = /** @class */ (function () {
};
return WuiEditorUndoRedo;
}());
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxrRUFBa0U7QUFDbEUseUVBQXlFO0FBQ3pFLDZCQUE2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTdCLElBQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDO0FBQ3RDLElBQU0scUJBQXFCLEdBQUcsaUJBQWlCLENBQUM7QUFDaEQsSUFBTSw0QkFBNEIsR0FBRyx3QkFBd0IsQ0FBQztBQUM5RCxJQUFNLDBCQUEwQixHQUFHLHNCQUFzQixDQUFDO0FBaUIxRDtJQWVDLG1CQUFtQixJQUFzQjtRQUF0QixTQUFJLEdBQUosSUFBSSxDQUFrQjtRQVZqQyxnQkFBVyxHQUErQixJQUFJLENBQUE7UUFDOUMsZ0JBQVcsR0FBdUIsSUFBSSxDQUFBO1FBQ3RDLGdCQUFXLEdBQVcsQ0FBQyxDQUFDLENBQUE7UUFDeEIsY0FBUyxHQUFXLENBQUMsQ0FBQyxDQUFBO1FBQ3RCLGNBQVMsR0FBYSxFQUFFLENBQUE7UUFDeEIsVUFBSyxHQUFvQixFQUFFLENBQUE7UUFFM0IsbUJBQWMsR0FBWSxLQUFLLENBQUE7UUFDL0IsU0FBSSxHQUFzQixJQUFJLGlCQUFpQixFQUFFLENBQUE7UUFHeEQsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFBO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUVuQyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN6QyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDMUQsT0FBTTtTQUNOO1FBQ0QsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUE7UUFF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 \ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxrRUFBa0U7QUFDbEUseUVBQXlFO0FBQ3pFLDZCQUE2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTdCLElBQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFBO0FBQ3JDLElBQU0scUJBQXFCLEdBQUcsaUJBQWlCLENBQUE7QUFDL0MsSUFBTSw0QkFBNEIsR0FBRyx3QkFBd0IsQ0FBQTtBQUM3RCxJQUFNLDBCQUEwQixHQUFHLHNCQUFzQixDQUFBO0FBa0J6RDtJQWVDLG1CQUFtQixJQUFzQjtRQUF6QyxpQkEwQkM7UUExQmtCLFNBQUksR0FBSixJQUFJLENBQWtCO1FBVmpDLGdCQUFXLEdBQStCLElBQUksQ0FBQTtRQUM5QyxnQkFBVyxHQUF1QixJQUFJLENBQUE7UUFDdEMsZ0JBQVcsR0FBVyxDQUFDLENBQUMsQ0FBQTtRQUN4QixjQUFTLEdBQVcsQ0FBQyxDQUFDLENBQUE7UUFDdEIsY0FBUyxHQUFhLEVBQUUsQ0FBQTtRQUN4QixVQUFLLEdBQW9CLEVBQUUsQ0FBQTtRQUUzQixtQkFBYyxHQUFZLEtBQUssQ0FBQTtRQUMvQixTQUFJLEdBQXNCLElBQUksaUJBQWlCLEVBQUUsQ0FBQTtRQUd4RCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUE7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFBO1FBRW5DLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3pDLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUMxRCxPQUFNO1NBQ047UUFDRCxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUVaLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUVoQixJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUV2QyxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDL0IsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsd0NBQXdDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQ2hFLE9BQU07U0FDTjtRQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFBO1FBQ2QsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUE7UUFFbkMsUUFBUSxDQUFDLE9BQU8sR0FBRyxVQUFDLEVBQWlCO1lBQ3BDLEtBQUksQ0FBQyxlQUFlLENBQUMsS0FBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQy9CLENBQUMsQ0FBQTtJQUNGLENBQUM7SUFFRCxxQ0FBcUM7SUFDckMsOEJBQVUsR0FBVjtRQUNDLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQTtRQUNoQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNWLE9BQU8sSUFBSSxJQUFJLENBQUE7YUFDZjtZQUNELE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUE7U0FDMUM7UUFDRCxPQUFPLE9BQU8sQ0FBQTtJQUNmLENBQUM7SUFFRCxxQ0FBaUIsR0FBakI7UUFDQyxPQUFPO1lBQ04sUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzFCLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUztTQUNjLENBQUE7SUFDdEMsQ0FBQztJQUVELCtCQUFXLEdBQVgsVUFBWSxJQUFpQjtRQUM1QixJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDL0IsSUFBSSxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQTtTQUNkO0lBQ0YsQ0FBQztJQUVELDJCQUFPLEdBQVAsVUFBUSxDQUFTLEVBQUUsSUFBaUIsRUFBRSxFQUFpQjtRQUN0RCxJQUFJLFdBQW1CLENBQUE7UUFDdkIsSUFBSSxVQUFrQixDQUFBO1FBQ3RCLElBQUksR0FBVyxDQUFBO1FBRWYsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFO1lBQ2YsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLFdBQVcsQ0FBQztZQUNqQixLQUFLLFdBQVcsQ0FBQztZQUNqQixLQUFLLFlBQVksQ0FBQztZQUNsQixLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssYUFBYSxDQUFDO1lBQ25CLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLE1BQU0sQ0FBQztZQUNaLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxJQUFJLENBQUM7WUFDVixLQUFLLFVBQVUsQ0FBQztZQUNoQixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxhQUFhLENBQUM7WUFDbkIsS0FBSyxZQUFZLENBQUM7WUFDbEIsS0FBSyxPQUFPO2dCQUNYLE1BQUs7WUFFTixLQUFLLFdBQVc7Z0JBQ2YsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFBO2dCQUVuQixXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDL0IsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUE7Z0JBQ3hDLFVBQVUsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFBO2dCQUVuQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUE7Z0JBQzFCLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRTtvQkFDWixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFBO29CQUU5QyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQTtvQkFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUE7b0JBQ2hDLE9BQU8sS0FBSyxDQUFBO2lCQUNaO2dCQUVELG1DQUFtQztnQkFDbkMsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBO2dCQUU1QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFlBQVksQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFBO2dCQUV2RSxHQUFHLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUE7Z0JBQ25DLFlBQVksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFBO2dCQUN4RSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFBO2dCQUU5QywwQkFBMEI7Z0JBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFBO2dCQUNoQyxPQUFPLEtBQUssQ0FBQTtZQUViLEtBQUssU0FBUztnQkFDYixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQTtnQkFDM0IsTUFBSztZQUVOLEtBQUssT0FBTztnQkFDWCxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUE7Z0JBQ25CLE1BQUs7WUFFTixLQUFLLEdBQUc7Z0JBQ1AsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO29CQUN4QixFQUFFLENBQUMsY0FBYyxFQUFFLENBQUE7b0JBQ25CLE9BQU07aUJBQ047Z0JBQ0QsTUFBSztZQUVOLEtBQUssR0FBRztnQkFDUCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7b0JBQ3hCLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtvQkFDbkIsT0FBTTtpQkFDTjtnQkFDRCxNQUFLO1lBRU47Z0JBQ0MsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO29CQUN4QixNQUFLO2lCQUNMO2dCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO2dCQUN6RSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQTtTQUNwRDtRQUNELE9BQU8sSUFBSSxDQUFBO0lBQ1osQ0FBQztJQUVELG1DQUFlLEdBQWYsVUFBZ0IsQ0FBUyxFQUFFLE9BQW9CLEVBQUUsRUFBaUI7UUFDakUsSUFBSSxXQUFtQixDQUFBO1FBQ3ZCLElBQUksVUFBa0IsQ0FBQTtRQUN0QixJQUFJLEdBQVcsQ0FBQTtRQUVmLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRTtZQUNmLEtBQUssU0FBUztnQkFDYixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ1gsT0FBTyxLQUFLLENBQUE7aUJBQ1o7Z0JBQ0QsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFBO2dCQUVuQixJQUFJLFNBQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUE7Z0JBQ3ZDLElBQUksS0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFBO2dCQUM5QixJQUFJLEtBQUcsR0FBRyxTQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtvQkFDbkMsS0FBRyxHQUFHLFNBQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFBO2lCQUM5QjtnQkFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQU8sRUFBRSxLQUFHLENBQUMsQ0FBQTtnQkFFM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNYLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQTtpQkFDckI7cUJBQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFO29CQUN0QyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUE7aUJBQ3ZCO2dCQUNELE9BQU8sS0FBSyxDQUFBO1lBRWIsS0FBSyxXQUFXO2dCQUNmLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDL0IsT0FBTyxLQUFLLENBQUE7aUJBQ1o7Z0JBQ0QsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFBO2dCQUVuQixTQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBO2dCQUNuQyxLQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUE7Z0JBQzFCLElBQUksS0FBRyxHQUFHLFNBQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO29CQUNuQyxLQUFHLEdBQUcsU0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUE7aUJBQzlCO2dCQUNELElBQUksQ0FBQyxRQUFRLENBQUMsU0FBTyxFQUFFLEtBQUcsQ0FBQyxDQUFBO2dCQUUzQixDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUNOLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRTtvQkFDdkQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFBO2lCQUN2QjtnQkFDRCxPQUFPLEtBQUssQ0FBQTtZQUViLEtBQUssU0FBUztnQkFDYixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQTtnQkFDMUIsTUFBSztZQUVOLEtBQUssT0FBTztnQkFDWCxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUE7Z0JBRW5CLEtBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQTtnQkFDMUIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFBO2dCQUMxQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBRyxDQUFDLENBQUE7Z0JBQ2hDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7Z0JBRXpDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUE7Z0JBRTdDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUE7Z0JBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFBO2dCQUUvQixJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUE7Z0JBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtvQkFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUE7aUJBQ3hDO2dCQUNELE1BQUs7WUFFTixLQUFLLEtBQUs7Z0JBQ1QsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFBO2dCQUVuQixTQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUE7Z0JBQy9CLEtBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQTtnQkFDMUIsV0FBVyxHQUFHLFNBQU8sQ0FBQyxTQUFTLENBQUE7Z0JBQy9CLFVBQVU7b0JBQ1QsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBRyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFFOUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQTtnQkFDOUMsU0FBTyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUE7Z0JBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFBO2dCQUU5QixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQU8sRUFBRSxLQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUE7Z0JBQy9CLE1BQUs7WUFFTixLQUFLLEdBQUc7Z0JBQ1AsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO29CQUN4QixFQUFFLENBQUMsY0FBYyxFQUFFLENBQUE7b0JBQ25CLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtvQkFDYixPQUFNO2lCQUNOO2dCQUNELE1BQUs7WUFFTixLQUFLLEdBQUc7Z0JBQ1AsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO29CQUN4QixFQUFFLENBQUMsY0FBYyxFQUFFLENBQUE7b0JBQ25CLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQTtvQkFDcEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTt3QkFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUE7cUJBQ25DO29CQUNELE9BQU8sS0FBSyxDQUFBO2lCQUNaO2dCQUNELE1BQUs7WUFFTixLQUFLLEdBQUc7Z0JBQ1AsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO29CQUN4QixFQUFFLENBQUMsY0FBYyxFQUFFLENBQUE7b0JBQ25CLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtvQkFDYixPQUFNO2lCQUNOO2dCQUNELE1BQUs7U0FDTjtJQUNGLENBQUM7SUFFRCxxQ0FBaUIsR0FBakIsVUFBa0IsQ0FBUztRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQTtJQUNyQixDQUFDO0lBRUQsbUNBQWUsR0FBZixVQUFnQixDQUFTO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFBO1FBQ2xCLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3RDLE9BQU07U0FDTjtRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNULE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtTQUM3QztRQUNELE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSw4QkFBOEIsQ0FBQyxDQUFBO1NBQ3pFO1FBQ0QsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUE7U0FDN0M7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1NBQ3ZEO0lBQ0YsQ0FBQztJQUVELEVBQUU7SUFDRiw0Q0FBNEM7SUFDNUMsRUFBRTtJQUNGLDhCQUFVLEdBQVY7UUFDQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtTQUMxQjtJQUNGLENBQUM7SUFFRCxFQUFFO0lBQ0YsNkNBQTZDO0lBQzdDLEVBQUU7SUFDRiw2QkFBUyxHQUFUO1FBQ0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUE7U0FDekI7SUFDRixDQUFDO0lBRUssNEJBQVEsR0FBZCxVQUFlLElBQVk7Ozs7OzRCQUNoQixxQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBQTs7d0JBQXBDLEdBQUcsR0FBRyxTQUE4Qjt3QkFDeEMsSUFBSSxDQUFDLEdBQUcsRUFBRTs0QkFDVCxzQkFBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQTBCLEVBQUE7eUJBQzVDO3dCQUNELElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7NEJBQ3BCLHNCQUFPLEdBQUcsRUFBQTt5QkFDVjt3QkFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRTs0QkFDZCxzQkFBTyxHQUFHLEVBQUE7eUJBQ1Y7d0JBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsSUFBMkIsQ0FBQTt3QkFFOUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBaUIsQ0FBQTt3QkFDaEQsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO3dCQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7d0JBRXBDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFBO3dCQUNmLEtBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7NEJBQzNDLElBQUksR0FBRyxJQUFJLGFBQWEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTs0QkFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7eUJBQ3JCO3dCQUVELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTt3QkFFYixzQkFBTyxHQUFHLEVBQUE7Ozs7S0FDVjtJQUVPLGtDQUFjLEdBQXRCO1FBQ0MsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsRUFBRTtZQUNoRCxPQUFNO1NBQ047UUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDeEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtTQUM3QztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUNwQixDQUFDO0lBRU8sNkJBQVMsR0FBakI7UUFDQyxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzNDLEtBQUssQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFBO1FBQ3ZCLEtBQUssQ0FBQyxTQUFTLEdBQUcsMkZBSWQsZ0JBQWdCLG1KQU1oQixxQkFBcUIsMkVBSXJCLDRCQUE0QiwrUEFVNUIsNEJBQTRCLDBFQUc1QiwwQkFBMEIsNE9BUzdCLENBQUE7UUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNqQyxDQUFDO0lBRU8sMEJBQU0sR0FBZCxVQUFlLE9BQXdDO1FBQ3RELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQTtRQUNuRSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN4RCxDQUFDO0lBRU8sMkJBQU8sR0FBZixVQUFnQixPQUF3QztRQUN2RCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUE7UUFDbkUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUN6RCxDQUFDO0lBRU8sNEJBQVEsR0FBaEIsVUFBaUIsT0FBd0M7UUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFBO1FBQ25FLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3hELENBQUM7SUFFTywwQkFBTSxHQUFkO1FBQ0MsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUM1QixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1QsT0FBTTtTQUNOO1FBQ0QsUUFBUSxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQ2pCLEtBQUssTUFBTTtnQkFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFDdEIsTUFBSztZQUNOLEtBQUssT0FBTztnQkFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFDdkIsTUFBSztZQUNOLEtBQUssUUFBUTtnQkFDWixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFDeEIsTUFBSztTQUNOO0lBQ0YsQ0FBQztJQUVPLDBCQUFNLEdBQWQ7UUFDQyxJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQzVCLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDVCxPQUFNO1NBQ047UUFDRCxRQUFRLEdBQUcsQ0FBQyxJQUFJLEVBQUU7WUFDakIsS0FBSyxNQUFNO2dCQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUN4QixNQUFLO1lBQ04sS0FBSyxPQUFPO2dCQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUN2QixNQUFLO1lBQ04sS0FBSyxRQUFRO2dCQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUN6QixNQUFLO1NBQ047SUFDRixDQUFDO0lBRU8sOEJBQVUsR0FBbEIsVUFBbUIsQ0FBUztRQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBRTNCLDBCQUEwQjtRQUMxQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUMxQjtRQUNELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUNkLENBQUM7SUFFTyxpQ0FBYSxHQUFyQixVQUFzQixDQUFTLEVBQUUsSUFBWTtRQUM1QyxJQUFJLE9BQU8sR0FBRyxJQUFJLGFBQWEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzlDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7U0FDOUI7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFFakMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFTyxtQ0FBZSxHQUF2QixVQUF3QixFQUFhLEVBQUUsRUFBaUI7UUFDdkQsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFO1lBQ2YsS0FBSyxRQUFRO2dCQUNaLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtnQkFDbkIsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFBO2dCQUNuQixNQUFLO1NBQ047UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNaLENBQUM7SUFFTywwQkFBTSxHQUFkO1FBQ0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFBO1FBQ3RCLEtBQW1CLFVBQVUsRUFBVixLQUFBLElBQUksQ0FBQyxLQUFLLEVBQVYsY0FBVSxFQUFWLElBQVUsRUFBRTtZQUExQixJQUFNLElBQUksU0FBQTtZQUNkLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtTQUM1QjtJQUNGLENBQUM7SUFFTyw0QkFBUSxHQUFoQixVQUFpQixPQUFvQixFQUFFLEdBQVc7UUFDakQsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUE7U0FDNUM7YUFBTTtZQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQTtTQUNqQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUE7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFDRixnQkFBQztBQUFELENBQUMsQUFsZkQsSUFrZkM7QUFsZlksOEJBQVM7QUFvZnRCO0lBTUMsdUJBQW1CLENBQVMsRUFBUyxJQUFZLEVBQUUsRUFBYTtRQUFoRSxpQkEyQ0M7UUEzQ2tCLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBTHpDLGFBQVEsR0FBVyxDQUFDLENBQUE7UUFNM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUE7UUFDakIsSUFBSSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3ZDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1FBRTVDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQTtRQUMxRCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUE7UUFFakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsVUFBQyxFQUFjO1lBQzNDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDcEMsQ0FBQyxDQUFBO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBQyxFQUFjO1lBQ3pDLEVBQUUsQ0FBQyxlQUFlLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ2xDLENBQUMsQ0FBQTtRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtRQUN0RCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7UUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFBO1FBRXJDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLFVBQUMsRUFBYztZQUNyQyxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM3QixDQUFDLENBQUE7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxVQUFDLEVBQWlCO1lBQzFDLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQyxLQUFJLENBQUMsUUFBUSxFQUFFLEtBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDM0QsQ0FBQyxDQUFBO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsVUFBQyxFQUFpQjtZQUN4QyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSSxDQUFDLFFBQVEsRUFBRSxLQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ25ELENBQUMsQ0FBQTtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFVBQUMsRUFBa0I7WUFDekQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RCLE9BQU07YUFDTjtZQUNELEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtZQUNuQixJQUFNLElBQUksR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQTtZQUNuRCxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDaEQsQ0FBQyxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRCxpQ0FBUyxHQUFULFVBQVUsQ0FBUztRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQTtRQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsaUNBQVMsR0FBVDtRQUNDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQTtJQUN0QyxDQUFDO0lBRUQsa0NBQVUsR0FBVjtRQUNDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQTtJQUN2QyxDQUFDO0lBQ0Ysb0JBQUM7QUFBRCxDQUFDLEFBL0RELElBK0RDO0FBRUQsRUFBRTtBQUNGLGdEQUFnRDtBQUNoRCxFQUFFO0FBQ0Y7SUFBQTtRQUNTLFFBQUcsR0FBVyxDQUFDLENBQUE7UUFDZixZQUFPLEdBQStCLEVBQUUsQ0FBQTtJQXlGakQsQ0FBQztJQXZGQSxrQ0FBTSxHQUFOLFVBQU8sUUFBZ0IsRUFBRSxRQUFnQixFQUFFLFNBQWlCO1FBQzNELElBQUksU0FBUyxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUE7UUFDNUIsSUFBSSxNQUFNLEdBQTZCO1lBQ3RDLElBQUksRUFBRSxNQUFNO1lBQ1osTUFBTSxFQUFFO2dCQUNQLFNBQVMsRUFBRSxRQUFRO2dCQUNuQixTQUFTLEVBQUUsUUFBUTtnQkFDbkIsU0FBUyxFQUFFLFFBQVEsR0FBRyxDQUFDO2dCQUN2QixTQUFTLEVBQUUsU0FBUzthQUNwQjtZQUNELEtBQUssRUFBRTtnQkFDTixTQUFTLEVBQUUsUUFBUTtnQkFDbkIsU0FBUyxFQUFFLFFBQVEsR0FBRyxTQUFTO2dCQUMvQixTQUFTLEVBQUUsUUFBUSxHQUFHLENBQUM7Z0JBQ3ZCLFNBQVMsRUFBRSxFQUFFO2FBQ2I7U0FDRCxDQUFBO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQzlDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDekIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ1gsQ0FBQztJQUVELG1DQUFPLEdBQVAsVUFBUSxTQUFpQixFQUFFLFNBQWlCLEVBQUUsU0FBaUI7UUFDOUQsSUFBSSxNQUFNLEdBQUc7WUFDWixJQUFJLEVBQUUsT0FBTztZQUNiLE1BQU0sRUFBRTtnQkFDUCxTQUFTLEVBQUUsU0FBUztnQkFDcEIsU0FBUyxFQUFFLFNBQVMsR0FBRyxTQUFTO2dCQUNoQyxTQUFTLEVBQUUsU0FBUyxHQUFHLENBQUM7Z0JBQ3hCLFNBQVMsRUFBRSxFQUFFO2FBQ2I7WUFDRCxLQUFLLEVBQUU7Z0JBQ04sU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixTQUFTLEVBQUUsU0FBUyxHQUFHLENBQUM7Z0JBQ3hCLFNBQVMsRUFBRSxTQUFTO2FBQ3BCO1NBQ0QsQ0FBQTtRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtTQUM5QztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3pCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtJQUNYLENBQUM7SUFFRCxvQ0FBUSxHQUFSLFVBQVMsUUFBZ0IsRUFBRSxXQUFtQixFQUFFLFVBQWtCO1FBQ2pFLElBQU0sTUFBTSxHQUE2QjtZQUN4QyxJQUFJLEVBQUUsUUFBUTtZQUNkLE1BQU0sRUFBRTtnQkFDUCxTQUFTLEVBQUUsUUFBUTtnQkFDbkIsU0FBUyxFQUFFLFdBQVc7Z0JBQ3RCLFNBQVMsRUFBRSxDQUFDO2dCQUNaLFNBQVMsRUFBRSxFQUFFO2FBQ2I7WUFDRCxLQUFLLEVBQUU7Z0JBQ04sU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLFNBQVMsRUFBRSxVQUFVO2dCQUNyQixTQUFTLEVBQUUsQ0FBQztnQkFDWixTQUFTLEVBQUUsRUFBRTthQUNiO1NBQ0QsQ0FBQTtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtTQUM5QztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3pCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtJQUNYLENBQUM7SUFFRCxnQ0FBSSxHQUFKO1FBQ0MsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRTtZQUNsQixPQUFPLElBQUksQ0FBQTtTQUNYO1FBQ0QsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBRUQsZ0NBQUksR0FBSjtRQUNDLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNwQyxPQUFPLElBQUksQ0FBQTtTQUNYO1FBQ0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDbkMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQ1YsT0FBTyxNQUFNLENBQUE7SUFDZCxDQUFDO0lBQ0Ysd0JBQUM7QUFBRCxDQUFDLEFBM0ZELElBMkZDIn0= \ No newline at end of file
diff --git a/editor/editor.ts b/editor/editor.ts
index daa5cd2..56a3ece 100644
--- a/editor/editor.ts
+++ b/editor/editor.ts
@@ -60,6 +60,10 @@ export class WuiEditor {
}
this.sel = sel
this.range = document.createRange()
+
+ document.onkeyup = (ev: KeyboardEvent) => {
+ this.onKeyupDocument(this, ev)
+ }
}
// GetContent return content of file.
@@ -176,7 +180,7 @@ export class WuiEditor {
return true
}
- OnKeydown(x: number, el_text: HTMLElement, ev: KeyboardEvent) {
+ OnKeydownOnLine(x: number, el_text: HTMLElement, ev: KeyboardEvent) {
let text_before: string
let text_after: string
let off: number
@@ -239,24 +243,19 @@ export class WuiEditor {
this.raw_lines[x] = text_before
this.insertNewline(x + 1, text_after)
- console.log("scroll", x, this.raw_lines.length)
if (x + 3 >= this.raw_lines.length) {
this.el.scrollTop = this.el.scrollHeight
}
break
- case "Escape":
- ev.preventDefault()
- this.clearSelection()
- break
-
case "Tab":
ev.preventDefault()
el_text = this.lines[x].el_text
off = this.sel.focusOffset
text_before = el_text.innerText
- text_after = text_before.slice(0, off) + "\t" + text_before.slice(off, text_before.length)
+ text_after =
+ text_before.slice(0, off) + "\t" + text_before.slice(off, text_before.length)
this.unre.DoUpdate(x, text_before, text_after)
el_text.innerText = text_after
@@ -318,6 +317,24 @@ export class WuiEditor {
}
}
+ //
+ // SetEditOff make the content not editable.
+ //
+ SetEditOff() {
+ for (let x = 0; x < this.lines.length; x++) {
+ this.lines[x].SetEditOff()
+ }
+ }
+
+ //
+ // SetEditOn make the content to be editable.
+ //
+ SetEditOn() {
+ for (let x = 0; x < this.lines.length; x++) {
+ this.lines[x].SetEditOn()
+ }
+ }
+
async OpenFile(path: string): Promise<WuiResponseInterface> {
let res = await this.opts.OpenFile(path)
if (!res) {
@@ -348,7 +365,7 @@ export class WuiEditor {
}
private clearSelection() {
- if (this.range_end == 0) {
+ if (this.range_begin < 0 || this.range_end == 0) {
return
}
for (let x = this.range_begin; x <= this.range_end; x++) {
@@ -459,7 +476,7 @@ export class WuiEditor {
// Reset the line numbers.
for (; x < this.lines.length; x++) {
- this.lines[x].setNumber(x)
+ this.lines[x].SetNumber(x)
}
this.render()
}
@@ -467,7 +484,7 @@ export class WuiEditor {
private insertNewline(x: number, text: string) {
let newline = new WuiEditorLine(x, text, this)
for (let y = x; y < this.lines.length; y++) {
- this.lines[y].setNumber(y + 1)
+ this.lines[y].SetNumber(y + 1)
}
this.lines.splice(x, 0, newline)
@@ -477,6 +494,16 @@ export class WuiEditor {
this.setCaret(newline.el_text, 0)
}
+ private onKeyupDocument(ed: WuiEditor, ev: KeyboardEvent) {
+ switch (ev.key) {
+ case "Escape":
+ ev.preventDefault()
+ ed.clearSelection()
+ break
+ }
+ return true
+ }
+
private render() {
this.el.innerHTML = ""
for (const line of this.lines) {
@@ -528,7 +555,7 @@ class WuiEditorLine {
}
this.el_text.onkeydown = (ev: KeyboardEvent) => {
- return ed.OnKeydown(this.line_num, this.el_text, ev)
+ return ed.OnKeydownOnLine(this.line_num, this.el_text, ev)
}
this.el_text.onkeyup = (ev: KeyboardEvent) => {
return ed.OnKeyup(this.line_num, this.el_text, ev)
@@ -547,10 +574,18 @@ class WuiEditorLine {
this.el.appendChild(this.el_text)
}
- setNumber(x: number) {
+ SetNumber(x: number) {
this.line_num = x
this.el_number.innerText = x + 1 + ""
}
+
+ SetEditOn() {
+ this.el_text.contentEditable = "true"
+ }
+
+ SetEditOff() {
+ this.el_text.contentEditable = "false"
+ }
}
//