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);
|
||||
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--) {
|
||||
var insideCode, node;
|
||||
range = sel.getRangeAt(i);
|
||||
// Trim range to be fully inside post
|
||||
if (range.compareBoundaryPoints(Range.START_TO_START, postRange) < 0) {
|
||||
range.setStartBefore(root);
|
||||
}
|
||||
if (range.compareBoundaryPoints(Range.END_TO_END, postRange) > 0) {
|
||||
range.setEndAfter(root);
|
||||
}
|
||||
try {
|
||||
var insideCode, node;
|
||||
range = sel.getRangeAt(i);
|
||||
// Trim range to be fully inside post
|
||||
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.toString().trim()) { continue; }
|
||||
if (!range.toString().trim()) { continue; }
|
||||
|
||||
var frag = range.cloneContents();
|
||||
var ancestor = range.commonAncestorContainer;
|
||||
// Quoting the insides of a spoiler/code tag.
|
||||
if ($.x('ancestor-or-self::*[self::s or contains(@class,"removed-spoiler")]', ancestor)) {
|
||||
$.prepend(frag, $.tn('[spoiler]'));
|
||||
$.add(frag, $.tn('[/spoiler]'));
|
||||
}
|
||||
if (insideCode = $.x('ancestor-or-self::pre[contains(@class,"prettyprint")]', ancestor)) {
|
||||
$.prepend(frag, $.tn('[code]'));
|
||||
$.add(frag, $.tn('[/code]'));
|
||||
}
|
||||
for (node of $$((insideCode ? 'br' : '.prettyprint br'), frag)) {
|
||||
$.replace(node, $.tn('\n'));
|
||||
}
|
||||
for (node of $$('br', frag)) {
|
||||
if (node !== frag.lastChild) { $.replace(node, $.tn('\n>')); }
|
||||
}
|
||||
g.SITE.insertTags?.(frag);
|
||||
for (node of $$('.linkify[data-original]', frag)) {
|
||||
$.replace(node, $.tn(node.dataset.original));
|
||||
}
|
||||
for (node of $$('.embedder', frag)) {
|
||||
if (node.previousSibling?.nodeValue === ' ') { $.rm(node.previousSibling); }
|
||||
$.rm(node);
|
||||
}
|
||||
text += `>${frag.textContent.trim()}\n`;
|
||||
var frag = range.cloneContents();
|
||||
var ancestor = range.commonAncestorContainer;
|
||||
// Quoting the insides of a spoiler/code tag.
|
||||
if ($.x('ancestor-or-self::*[self::s or contains(@class,"removed-spoiler")]', ancestor)) {
|
||||
$.prepend(frag, $.tn('[spoiler]'));
|
||||
$.add(frag, $.tn('[/spoiler]'));
|
||||
}
|
||||
if (insideCode = $.x('ancestor-or-self::pre[contains(@class,"prettyprint")]', ancestor)) {
|
||||
$.prepend(frag, $.tn('[code]'));
|
||||
$.add(frag, $.tn('[/code]'));
|
||||
}
|
||||
for (node of $$((insideCode ? 'br' : '.prettyprint br'), frag)) {
|
||||
$.replace(node, $.tn('\n'));
|
||||
}
|
||||
for (node of $$('br', frag)) {
|
||||
if (node !== frag.lastChild) { $.replace(node, $.tn('\n>')); }
|
||||
}
|
||||
g.SITE.insertTags?.(frag);
|
||||
for (node of $$('.linkify[data-original]', frag)) {
|
||||
$.replace(node, $.tn(node.dataset.original));
|
||||
}
|
||||
for (node of $$('.embedder', frag)) {
|
||||
if (node.previousSibling?.nodeValue === ' ') { $.rm(node.previousSibling); }
|
||||
$.rm(node);
|
||||
}
|
||||
text += `>${frag.textContent.trim()}\n`;
|
||||
} catch (error) { }
|
||||
}
|
||||
|
||||
QR.openPost();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user