Port: Catch errors due to "Restricted" selection. #2905
from 2a47dfd8ba724b17f5bc5f9214bea8ce8b469398
This commit is contained in:
parent
f547779106
commit
59af4ba8fe
@ -383,44 +383,46 @@ var QR = {
|
|||||||
postRange.selectNode(root);
|
postRange.selectNode(root);
|
||||||
let text = post.board.ID === g.BOARD.ID ? `>>${post}\n` : `>>>/${post.board}/${post}\n`;
|
let text = post.board.ID === g.BOARD.ID ? `>>${post}\n` : `>>>/${post.board}/${post}\n`;
|
||||||
for (let i = 0, end = sel.rangeCount, asc = 0 <= end; asc ? i < end : i > end; asc ? i++ : i--) {
|
for (let i = 0, end = sel.rangeCount, asc = 0 <= end; asc ? i < end : i > end; asc ? i++ : i--) {
|
||||||
var insideCode, node;
|
try {
|
||||||
range = sel.getRangeAt(i);
|
var insideCode, node;
|
||||||
// Trim range to be fully inside post
|
range = sel.getRangeAt(i);
|
||||||
if (range.compareBoundaryPoints(Range.START_TO_START, postRange) < 0) {
|
// Trim range to be fully inside post
|
||||||
range.setStartBefore(root);
|
if (range.compareBoundaryPoints(Range.START_TO_START, postRange) < 0) {
|
||||||
}
|
range.setStartBefore(root);
|
||||||
if (range.compareBoundaryPoints(Range.END_TO_END, postRange) > 0) {
|
}
|
||||||
range.setEndAfter(root);
|
if (range.compareBoundaryPoints(Range.END_TO_END, postRange) > 0) {
|
||||||
}
|
range.setEndAfter(root);
|
||||||
|
}
|
||||||
|
|
||||||
if (!range.toString().trim()) { continue; }
|
if (!range.toString().trim()) { continue; }
|
||||||
|
|
||||||
var frag = range.cloneContents();
|
var frag = range.cloneContents();
|
||||||
var ancestor = range.commonAncestorContainer;
|
var ancestor = range.commonAncestorContainer;
|
||||||
// Quoting the insides of a spoiler/code tag.
|
// Quoting the insides of a spoiler/code tag.
|
||||||
if ($.x('ancestor-or-self::*[self::s or contains(@class,"removed-spoiler")]', ancestor)) {
|
if ($.x('ancestor-or-self::*[self::s or contains(@class,"removed-spoiler")]', ancestor)) {
|
||||||
$.prepend(frag, $.tn('[spoiler]'));
|
$.prepend(frag, $.tn('[spoiler]'));
|
||||||
$.add(frag, $.tn('[/spoiler]'));
|
$.add(frag, $.tn('[/spoiler]'));
|
||||||
}
|
}
|
||||||
if (insideCode = $.x('ancestor-or-self::pre[contains(@class,"prettyprint")]', ancestor)) {
|
if (insideCode = $.x('ancestor-or-self::pre[contains(@class,"prettyprint")]', ancestor)) {
|
||||||
$.prepend(frag, $.tn('[code]'));
|
$.prepend(frag, $.tn('[code]'));
|
||||||
$.add(frag, $.tn('[/code]'));
|
$.add(frag, $.tn('[/code]'));
|
||||||
}
|
}
|
||||||
for (node of $$((insideCode ? 'br' : '.prettyprint br'), frag)) {
|
for (node of $$((insideCode ? 'br' : '.prettyprint br'), frag)) {
|
||||||
$.replace(node, $.tn('\n'));
|
$.replace(node, $.tn('\n'));
|
||||||
}
|
}
|
||||||
for (node of $$('br', frag)) {
|
for (node of $$('br', frag)) {
|
||||||
if (node !== frag.lastChild) { $.replace(node, $.tn('\n>')); }
|
if (node !== frag.lastChild) { $.replace(node, $.tn('\n>')); }
|
||||||
}
|
}
|
||||||
g.SITE.insertTags?.(frag);
|
g.SITE.insertTags?.(frag);
|
||||||
for (node of $$('.linkify[data-original]', frag)) {
|
for (node of $$('.linkify[data-original]', frag)) {
|
||||||
$.replace(node, $.tn(node.dataset.original));
|
$.replace(node, $.tn(node.dataset.original));
|
||||||
}
|
}
|
||||||
for (node of $$('.embedder', frag)) {
|
for (node of $$('.embedder', frag)) {
|
||||||
if (node.previousSibling?.nodeValue === ' ') { $.rm(node.previousSibling); }
|
if (node.previousSibling?.nodeValue === ' ') { $.rm(node.previousSibling); }
|
||||||
$.rm(node);
|
$.rm(node);
|
||||||
}
|
}
|
||||||
text += `>${frag.textContent.trim()}\n`;
|
text += `>${frag.textContent.trim()}\n`;
|
||||||
|
} catch (error) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
QR.openPost();
|
QR.openPost();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user