mirror of
https://github.com/zadam/trilium.git
synced 2025-11-01 10:55:55 +01:00
ckeditor 5.60.0
This commit is contained in:
@@ -32,7 +32,7 @@
|
||||
var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent);
|
||||
var phantom = /PhantomJS/.test(userAgent);
|
||||
|
||||
var ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\/\w+/.test(userAgent);
|
||||
var ios = safari && (/Mobile\/\w+/.test(userAgent) || navigator.maxTouchPoints > 2);
|
||||
var android = /Android/.test(userAgent);
|
||||
// This is woefully incomplete. Suggestions for alternative methods welcome.
|
||||
var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);
|
||||
@@ -1841,7 +1841,7 @@
|
||||
}
|
||||
}
|
||||
builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;
|
||||
if (style || startStyle || endStyle || mustWrap || css) {
|
||||
if (style || startStyle || endStyle || mustWrap || css || attributes) {
|
||||
var fullStyle = style || "";
|
||||
if (startStyle) { fullStyle += startStyle; }
|
||||
if (endStyle) { fullStyle += endStyle; }
|
||||
@@ -3276,26 +3276,31 @@
|
||||
var on = true;
|
||||
display.cursorDiv.style.visibility = "";
|
||||
if (cm.options.cursorBlinkRate > 0)
|
||||
{ display.blinker = setInterval(function () { return display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden"; },
|
||||
cm.options.cursorBlinkRate); }
|
||||
{ display.blinker = setInterval(function () {
|
||||
if (!cm.hasFocus()) { onBlur(cm); }
|
||||
display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden";
|
||||
}, cm.options.cursorBlinkRate); }
|
||||
else if (cm.options.cursorBlinkRate < 0)
|
||||
{ display.cursorDiv.style.visibility = "hidden"; }
|
||||
}
|
||||
|
||||
function ensureFocus(cm) {
|
||||
if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); }
|
||||
if (!cm.hasFocus()) {
|
||||
cm.display.input.focus();
|
||||
if (!cm.state.focused) { onFocus(cm); }
|
||||
}
|
||||
}
|
||||
|
||||
function delayBlurEvent(cm) {
|
||||
cm.state.delayingBlurEvent = true;
|
||||
setTimeout(function () { if (cm.state.delayingBlurEvent) {
|
||||
cm.state.delayingBlurEvent = false;
|
||||
onBlur(cm);
|
||||
if (cm.state.focused) { onBlur(cm); }
|
||||
} }, 100);
|
||||
}
|
||||
|
||||
function onFocus(cm, e) {
|
||||
if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; }
|
||||
if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }
|
||||
|
||||
if (cm.options.readOnly == "nocursor") { return }
|
||||
if (!cm.state.focused) {
|
||||
@@ -3477,14 +3482,15 @@
|
||||
if (newTop != screentop) { result.scrollTop = newTop; }
|
||||
}
|
||||
|
||||
var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft;
|
||||
var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0);
|
||||
var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;
|
||||
var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;
|
||||
var screenw = displayWidth(cm) - display.gutters.offsetWidth;
|
||||
var tooWide = rect.right - rect.left > screenw;
|
||||
if (tooWide) { rect.right = rect.left + screenw; }
|
||||
if (rect.left < 10)
|
||||
{ result.scrollLeft = 0; }
|
||||
else if (rect.left < screenleft)
|
||||
{ result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)); }
|
||||
{ result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }
|
||||
else if (rect.right > screenw + screenleft - 3)
|
||||
{ result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }
|
||||
return result
|
||||
@@ -4792,19 +4798,19 @@
|
||||
});
|
||||
}
|
||||
|
||||
function History(startGen) {
|
||||
function History(prev) {
|
||||
// Arrays of change events and selections. Doing something adds an
|
||||
// event to done and clears undo. Undoing moves events from done
|
||||
// to undone, redoing moves them in the other direction.
|
||||
this.done = []; this.undone = [];
|
||||
this.undoDepth = Infinity;
|
||||
this.undoDepth = prev ? prev.undoDepth : Infinity;
|
||||
// Used to track when changes can be merged into a single undo
|
||||
// event
|
||||
this.lastModTime = this.lastSelTime = 0;
|
||||
this.lastOp = this.lastSelOp = null;
|
||||
this.lastOrigin = this.lastSelOrigin = null;
|
||||
// Used by the isClean() method
|
||||
this.generation = this.maxGeneration = startGen || 1;
|
||||
this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;
|
||||
}
|
||||
|
||||
// Create a history change event from an updateDoc-style change
|
||||
@@ -5109,7 +5115,7 @@
|
||||
(cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);
|
||||
setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));
|
||||
|
||||
if (!(options && options.scroll === false) && doc.cm)
|
||||
if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption("readOnly") != "nocursor")
|
||||
{ ensureCursorVisible(doc.cm); }
|
||||
}
|
||||
|
||||
@@ -5766,7 +5772,7 @@
|
||||
changeLine(doc, handle, "widget", function (line) {
|
||||
var widgets = line.widgets || (line.widgets = []);
|
||||
if (widget.insertAt == null) { widgets.push(widget); }
|
||||
else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); }
|
||||
else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }
|
||||
widget.line = line;
|
||||
if (cm && !lineIsHidden(doc, line)) {
|
||||
var aboveVisible = heightAtLine(line) < doc.scrollTop;
|
||||
@@ -6175,7 +6181,7 @@
|
||||
var out = [];
|
||||
for (var i = 0; i < ranges.length; i++)
|
||||
{ out[i] = new Range(clipPos(this, ranges[i].anchor),
|
||||
clipPos(this, ranges[i].head)); }
|
||||
clipPos(this, ranges[i].head || ranges[i].anchor)); }
|
||||
if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }
|
||||
setSelection(this, normalizeSelection(this.cm, out, primary), options);
|
||||
}),
|
||||
@@ -6238,7 +6244,7 @@
|
||||
clearHistory: function() {
|
||||
var this$1 = this;
|
||||
|
||||
this.history = new History(this.history.maxGeneration);
|
||||
this.history = new History(this.history);
|
||||
linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);
|
||||
},
|
||||
|
||||
@@ -6259,7 +6265,7 @@
|
||||
undone: copyHistoryArray(this.history.undone)}
|
||||
},
|
||||
setHistory: function(histData) {
|
||||
var hist = this.history = new History(this.history.maxGeneration);
|
||||
var hist = this.history = new History(this.history);
|
||||
hist.done = copyHistoryArray(histData.done.slice(0), null, true);
|
||||
hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);
|
||||
},
|
||||
@@ -7002,7 +7008,7 @@
|
||||
goGroupRight: function (cm) { return cm.moveH(1, "group"); },
|
||||
goGroupLeft: function (cm) { return cm.moveH(-1, "group"); },
|
||||
goWordRight: function (cm) { return cm.moveH(1, "word"); },
|
||||
delCharBefore: function (cm) { return cm.deleteH(-1, "char"); },
|
||||
delCharBefore: function (cm) { return cm.deleteH(-1, "codepoint"); },
|
||||
delCharAfter: function (cm) { return cm.deleteH(1, "char"); },
|
||||
delWordBefore: function (cm) { return cm.deleteH(-1, "word"); },
|
||||
delWordAfter: function (cm) { return cm.deleteH(1, "word"); },
|
||||
@@ -7375,6 +7381,10 @@
|
||||
var dragEnd = operation(cm, function (e) {
|
||||
if (webkit) { display.scroller.draggable = false; }
|
||||
cm.state.draggingText = false;
|
||||
if (cm.state.delayingBlurEvent) {
|
||||
if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }
|
||||
else { delayBlurEvent(cm); }
|
||||
}
|
||||
off(display.wrapper.ownerDocument, "mouseup", dragEnd);
|
||||
off(display.wrapper.ownerDocument, "mousemove", mouseMove);
|
||||
off(display.scroller, "dragstart", dragStart);
|
||||
@@ -7398,15 +7408,15 @@
|
||||
if (webkit) { display.scroller.draggable = true; }
|
||||
cm.state.draggingText = dragEnd;
|
||||
dragEnd.copy = !behavior.moveOnDrag;
|
||||
// IE's approach to draggable
|
||||
if (display.scroller.dragDrop) { display.scroller.dragDrop(); }
|
||||
on(display.wrapper.ownerDocument, "mouseup", dragEnd);
|
||||
on(display.wrapper.ownerDocument, "mousemove", mouseMove);
|
||||
on(display.scroller, "dragstart", dragStart);
|
||||
on(display.scroller, "drop", dragEnd);
|
||||
|
||||
delayBlurEvent(cm);
|
||||
cm.state.delayingBlurEvent = true;
|
||||
setTimeout(function () { return display.input.focus(); }, 20);
|
||||
// IE's approach to draggable
|
||||
if (display.scroller.dragDrop) { display.scroller.dragDrop(); }
|
||||
}
|
||||
|
||||
function rangeForUnit(cm, pos, unit) {
|
||||
@@ -7419,6 +7429,7 @@
|
||||
|
||||
// Normal selection, as opposed to text dragging.
|
||||
function leftButtonSelect(cm, event, start, behavior) {
|
||||
if (ie) { delayBlurEvent(cm); }
|
||||
var display = cm.display, doc = cm.doc;
|
||||
e_preventDefault(event);
|
||||
|
||||
@@ -7697,7 +7708,7 @@
|
||||
for (var i = newBreaks.length - 1; i >= 0; i--)
|
||||
{ replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }
|
||||
});
|
||||
option("specialChars", /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200c\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g, function (cm, val, old) {
|
||||
option("specialChars", /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g, function (cm, val, old) {
|
||||
cm.state.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g");
|
||||
if (old != Init) { cm.refresh(); }
|
||||
});
|
||||
@@ -7877,7 +7888,9 @@
|
||||
attachDoc(this, doc);
|
||||
|
||||
if ((options.autofocus && !mobile) || this.hasFocus())
|
||||
{ setTimeout(bind(onFocus, this), 20); }
|
||||
{ setTimeout(function () {
|
||||
if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }
|
||||
}, 20); }
|
||||
else
|
||||
{ onBlur(this); }
|
||||
|
||||
@@ -8640,14 +8653,14 @@
|
||||
}
|
||||
|
||||
// Used for horizontal relative motion. Dir is -1 or 1 (left or
|
||||
// right), unit can be "char", "column" (like char, but doesn't
|
||||
// cross line boundaries), "word" (across next word), or "group" (to
|
||||
// the start of next group of word or non-word-non-whitespace
|
||||
// chars). The visually param controls whether, in right-to-left
|
||||
// text, direction 1 means to move towards the next index in the
|
||||
// string, or towards the character to the right of the current
|
||||
// position. The resulting position will have a hitSide=true
|
||||
// property if it reached the end of the document.
|
||||
// right), unit can be "codepoint", "char", "column" (like char, but
|
||||
// doesn't cross line boundaries), "word" (across next word), or
|
||||
// "group" (to the start of next group of word or
|
||||
// non-word-non-whitespace chars). The visually param controls
|
||||
// whether, in right-to-left text, direction 1 means to move towards
|
||||
// the next index in the string, or towards the character to the right
|
||||
// of the current position. The resulting position will have a
|
||||
// hitSide=true property if it reached the end of the document.
|
||||
function findPosH(doc, pos, dir, unit, visually) {
|
||||
var oldPos = pos;
|
||||
var origDir = dir;
|
||||
@@ -8661,7 +8674,15 @@
|
||||
}
|
||||
function moveOnce(boundToLine) {
|
||||
var next;
|
||||
if (visually) {
|
||||
if (unit == "codepoint") {
|
||||
var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));
|
||||
if (isNaN(ch)) {
|
||||
next = null;
|
||||
} else {
|
||||
var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;
|
||||
next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);
|
||||
}
|
||||
} else if (visually) {
|
||||
next = moveVisually(doc.cm, lineObj, pos, dir);
|
||||
} else {
|
||||
next = moveLogically(lineObj, pos, dir);
|
||||
@@ -8677,7 +8698,7 @@
|
||||
return true
|
||||
}
|
||||
|
||||
if (unit == "char") {
|
||||
if (unit == "char" || unit == "codepoint") {
|
||||
moveOnce();
|
||||
} else if (unit == "column") {
|
||||
moveOnce(true);
|
||||
@@ -8745,6 +8766,7 @@
|
||||
|
||||
var input = this, cm = input.cm;
|
||||
var div = input.div = display.lineDiv;
|
||||
div.contentEditable = true;
|
||||
disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);
|
||||
|
||||
function belongsToInput(e) {
|
||||
@@ -9621,6 +9643,7 @@
|
||||
TextareaInput.prototype.readOnlyChanged = function (val) {
|
||||
if (!val) { this.reset(); }
|
||||
this.textarea.disabled = val == "nocursor";
|
||||
this.textarea.readOnly = !!val;
|
||||
};
|
||||
|
||||
TextareaInput.prototype.setUneditable = function () {};
|
||||
@@ -9771,7 +9794,7 @@
|
||||
|
||||
addLegacyProps(CodeMirror);
|
||||
|
||||
CodeMirror.version = "5.57.0";
|
||||
CodeMirror.version = "5.60.0";
|
||||
|
||||
return CodeMirror;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user