s.forEach(ctx._eventsCache, function (events, index) {
var target = ctx._eventTargets[index];
utils.forEach(events, function (listeners, type) {
utils.forEach(listeners, function (listener) {
target.removeEventListener(type, listener, false);
}, true);
}, false);
}, true);
ctx._eventTargets = [];
ctx._eventsCache = [];
return ctx;
}
function checkPlaceholder(ctx) {
ctx.config.editor.classList[ctx.isEmpty() ? 'add' : 'remove'](ctx.config.placeholderClass);
}
function trim(str) {
return (str || '').trim().replace(/\u200b/g, '');
}
// node.contains is not implemented in IE10/IE11
function containsNode(parent, child) {
if (parent === child) return true;
child = child.parentNode;
while (child) {
if (child === parent) return true;
child = child.parentNode;
}
return false;
}
function getNode(ctx, byRoot) {
var node,
root = ctx.config.editor;
ctx._range = ctx._range || ctx.getRange();
node = ctx._range.commonAncestorContainer;
// Fix selection detection for Firefox
if (node.hasChildNodes() && ctx._range.startOffset + 1 === ctx._range.endOffset) {
node = node.childNodes[ctx._range.startOffset];
}
if (!node || node === root) return null;
while (node && (node.nodeType !== 1) && (node.parentNode !== root)) node = node.parentNode;
while (node && byRoot && (node.parentNode !== root)) node = node.parentNode;
return containsNode(root, node) ? node : null;
}
function getEffectNodes(ctx) {
return getNodeParents(ctx).filter(function(node) {
return node.nodeName.match(effectNodeReg);
});
}
function getNodeParents(ctx) {
var nodes = [],
el = getNode(ctx);
while (el && el !== ctx.config.editor) {
if (el.nodeType === Node.ELEMENT_NODE) {
nodes.push(el);
}
el = el.parentNode;
}
return nodes;
}
function handleEmptyContent(ctx) {
var range = ctx._range = ctx.getRange();
ctx.config.editor.innerHTML = '';
var p = doc.createElement('p');
p.innerHTML = '
';
range.insertNode(p);
focusNode(ctx, p.childNodes[0], range);
}
function addEmptyCharAtEnd(ctx) {
var range = ctx.getRange(),
emptyCharNode = doc.createTextNode('\u200b');
range.selectNodeContents(ctx.config.editor);
range.collapse(false);
range.insertNode(emptyCharNode);
focusNode(ctx, emptyCharNode, range);
}
function isCaretAtEnd(ctx) {
var range = ctx.getRange(),
clonedRange = range.cloneRange();
clonedRange.selectNodeContents(ctx.config.editor);
clonedRange.setStart(range.endContainer, range.endOffset);
return clonedRange.toString() === '';
}
function isCaretAtStart(ctx) {
var range = ctx.getRange(),
clonedRange = range.cloneRange();
clonedRange.selectNodeContents(ctx.config.editor);
clonedRange.setEnd(range.startContainer, range.startOffset);
return clonedRange.toString() === '';
}
function focusNode(ctx, node, range) {
range.setStartAfter(node);
range.setEndBefore(node);
range.collapse(false);
ctx.setRange(range);
}
function autoLink(node) {
if (node.nodeType === 1) {
if (autoLinkReg.notLink.test(node.tagName)) return;
utils.forEach(node.childNodes, function (child) {
autoLink(child);
}, true);
} else if (node.nodeType === 3) {
var result = urlToLink(node.nodeValue || '');
if (!result.links) return;
var frag = doc.createDocumentFragment(),
div = doc.createElement('div');
div.inne{"id":215,"date":"2020-08-17T14:42:04","date_gmt":"2020-08-17T14:42:04","guid":{"rendered":"https:\/\/group.netvest.co.za\/wp\/?page_id=215"},"modified":"2020-08-17T14:42:04","modified_gmt":"2020-08-17T14:42:04","slug":"about","status":"publish","type":"page","link":"https:\/\/group.netvest.co.za\/wp\/?page_id=215","title":{"rendered":"About"},"content":{"rendered":"
Our story<\/strong><\/p>\n Lorem ipsum dolor amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt labore dolore.<\/p>\n Story video<\/p>\n \t\t\t\t\t\t\t\t\t\t \t\tLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.\t\t<\/p>\n \t\tLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.\t\t<\/p>\n \t\tLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.\t\t<\/p>\n \t\tLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.\t\t<\/p>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.<\/p>\n \t\t\t Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.<\/p>\n \t\t\t Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.<\/p>\n \t\t\t Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Justo nec ultrices dui sapien eget mi. In vitae turpis massa.<\/p>\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Justo nec ultrices dui sapien eget mi. In vitae turpis massa dolore magna tempor consectetur.<\/p>\nLet\u2019s Change How We Manage Business<\/h2>\n
\t\t\t\t\t\t\t\t\t\t\t<\/p>\nCompany Values<\/h2>\n
Molestie<\/h5>\n
Adipiscing<\/h5>\n
Consectetur<\/h5>\n
Gancididunt<\/h5>\n
UI Design<\/h3>\n
\n\t\t\t\t\t\tLearn More
\n\t\t\t\t\t<\/a><\/p>\nWeb Design<\/h3>\n
\n\t\t\t\t\t\tLearn More
\n\t\t\t\t\t<\/a><\/p>\nGraphic Design<\/h3>\n
\n\t\t\t\t\t\tLearn More
\n\t\t\t\t\t<\/a><\/p>\nJusto Laoreet Sitamet Cursus Elementum Integer<\/h2>\n