"use strict"; (function($) { // Save the cursor position. var ranges = []; var saveSelection = function() { var sel = window.getSelection(); ranges = []; if (sel.getRangeAt && sel.rangeCount) { for (let i = 0; i < sel.rangeCount; i++) { ranges.push(sel.getRangeAt(i)); } } }; // Insert content at cursor position. var insertContent = function(instance, content) { if (content.match(/<(audio|video)\b[^>]+>(<\/p>)?/)) { content = content + '
as paragraph separator. document.execCommand('defaultParagraphSeparator', false, 'p'); // Capture some simple keyboard shortcuts. editor.on('keydown', function(event) { if (!event.ctrlKey) { return; } var char = String.fromCharCode(event.which).toLowerCase(); if (char === 'b') { document.execCommand('bold'); event.preventDefault(); } if (char === 'i') { document.execCommand('italic'); event.preventDefault(); } if (char === 'u') { document.execCommand('underline'); event.preventDefault(); } }); // Save cursor position on moseup & keyup. editor.on('mouseup keyup', function() { saveSelection(); }); // Clean up pasted content. editor.on('paste', function(event) { var clipboard_data = (event.clipboardData || window.clipboardData || event.originalEvent.clipboardData); if (typeof clipboard_data !== 'undefined') { var content = clipboard_data.getData('text/html'); if (content === '') { content = clipboard_data.getData('text'); } } else { return; } content = convertYouTube(simplifyContent(content)); insertContent(editor, content); event.preventDefault(); }); // Load existing content. if (content_input.size()) { editor.html(content_input.val()); } // Copy edited content to the actual input element. editor.on('input blur mouseup keyup', function() { var content = simplifyContent(editor.html()); content_input.val(content); }); }); }); // Simulate CKEditor for file upload integration. window._getCkeInstance = function(editor_sequence) { var instance = $('#simpleeditor_instance_' + editor_sequence); return { getData: function() { return String(instance.html()); }, setData: function(content) { instance.html(content); }, insertHtml: function(content) { insertContent(instance, content); } }; }; })(jQuery);