/* Search & Replace Plugin */ (function () { var js1 = 'https://cdnjs.cloudflare.com/ajax/libs/rangy/1.3.0/rangy-core.min.js'; var js2 = 'https://cdnjs.cloudflare.com/ajax/libs/rangy/1.3.0/rangy-textrange.min.js' // _cb.getScript(js1); // _cb.getScript(js2); _cb.getScripts([js1,js2]); //Get js1 first, then after loaded, get js2 var html = '
' + '
' + _cb.out('Search & Replace') + '
' + '
' + '' + '
' + '' + '' + '' + '' + ''; _cb.addHtml(html); var button = ''; _cb.addButton('searchreplace', button, '.searchreplace-button', function () { var modal = document.querySelector(".is-modal.searchreplace"); modal.className = modal.className + ' active'; var btnClose = modal.querySelector('.is-modal-close'); btnClose.addEventListener('click', function(e){ _cb.hideModal(modal); }); var scriptPath = _cb.getScriptPath(); modal.querySelector('iframe').src = scriptPath + 'plugins/searchreplace/searchreplace.html'; // var wraper = _cb.getScope(); // $wraper.focusEnd(); }); })(); // https://stackoverflow.com/questions/32192664/how-to-select-a-given-string-repeatedly-within-the-text-of-a-contenteditable-ele function findOne(target, caseSensitive, within, startNode, startPos) { if (rangy.supported) { var range = rangy.createRange(); var searchScopeRange = rangy.createRange(); searchScopeRange.selectNodeContents(within); if (startNode != null && startPos != null) { searchScopeRange.setStart(startNode, startPos); } var options = { caseSensitive: caseSensitive, wholeWordsOnly: true, withinRange: searchScopeRange }; if (target !== "") { range.findText(target, options); selectRange(range.startContainer, range.endContainer, range.startOffset, range.endOffset); var text = getSelected(parent); if (text != '') { return true; } else { return false; } } } function selectRange(startNode, endNode, startPos, endPos) { var range = document.createRange() range.setStart(startNode, startPos); range.setEnd(endNode, endPos); var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); } function getSelected(window) { if (window.getSelection) { return window.getSelection(); } else if (document.getSelection) { return document.getSelection(); } else { var selection = document.selection && document.selection.createRange(); if (selection.text) { return selection.text; } return false; } return false; } } // https://stackoverflow.com/questions/1181700/set-cursor-position-on-contenteditable-div/3323835 // $.fn.focusEnd = function () { // $(this).focus(); // var tmp = $('').appendTo($(this)), // node = tmp.get(0), // range = null, // sel = null; // if (document.selection) { // range = document.body.createTextRange(); // range.moveToElementText(node); // range.select(); // } else if (window.getSelection) { // range = document.createRange(); // range.selectNode(node); // sel = window.getSelection(); // sel.removeAllRanges(); // sel.addRange(range); // } // tmp.remove(); // return this; // }